Skip to content

feat(insurance): add parametric insurance products (#249) - #409

Merged
LaGodxy merged 2 commits into
MettaChain:mainfrom
Nuel-ship-it:feature/249-parametric-insurance
Apr 29, 2026
Merged

feat(insurance): add parametric insurance products (#249)#409
LaGodxy merged 2 commits into
MettaChain:mainfrom
Nuel-ship-it:feature/249-parametric-insurance

Conversation

@Nuel-ship-it

Copy link
Copy Markdown
Contributor

Summary

Implements parametric insurance policies that pay out automatically when oracle data crosses a defined threshold — no manual claims assessment required.

What changed

contracts/insurance/src/types.rs

  • TriggerComparison enum: GreaterThanOrEqual / LessThanOrEqual
  • ParametricPolicyStatus enum: Active / Triggered / Expired / Cancelled
  • ParametricPolicy struct: holds policyholder, property, metric, threshold, coverage amount, pool, and status
  • OracleDataPoint struct: records each oracle submission

contracts/insurance/src/errors.rs

  • ParametricPolicyNotFound
  • ParametricPolicyAlreadyTriggered
  • ParametricPolicyInactive

contracts/insurance/src/lib.rs

New storage fields, events, and #[ink(message)] methods:

Method Description
create_parametric_policy Policyholder pays premium upfront; defines metric + threshold
submit_oracle_data Authorized oracle submits a reading; auto-triggers matching policies
cancel_parametric_policy Policyholder or admin cancels an active policy
get_parametric_policy Query by ID
get_property_parametric_policies All parametric policy IDs for a property
get_holder_parametric_policies All parametric policy IDs for a holder
get_oracle_data Query a submitted data point
get_parametric_policy_count Total count

New events: ParametricPolicyCreated, ParametricPolicyTriggered, OracleDataSubmitted

contracts/insurance/src/tests.rs

14 new unit tests covering:

  • Policy creation (happy path, zero premium, nonexistent pool)
  • Oracle trigger: GTE threshold met, below threshold, LTE threshold, wrong metric
  • Unauthorized oracle submission
  • Authorized oracle submission
  • Policy cancellation (happy path, non-owner, already-triggered)
  • Multiple policies on same property with different thresholds

How it works

  1. A policyholder calls create_parametric_policy with a metric name (e.g. flood_depth_cm), a threshold (e.g. 200), a comparison operator, and a coverage amount. Premium is paid upfront.
  2. When an authorized oracle calls submit_oracle_data for that property + metric, the contract evaluates all active parametric policies. Any whose trigger condition is satisfied receive an automatic payout from the backing risk pool — no assessor needed.

Closes #249

Implement oracle-triggered parametric insurance policies that pay out
automatically when oracle data crosses a defined threshold — no manual
claims assessment required.

Changes:
- types.rs: add TriggerComparison, ParametricPolicyStatus,
  ParametricPolicy, OracleDataPoint
- errors.rs: add ParametricPolicyNotFound, ParametricPolicyAlreadyTriggered,
  ParametricPolicyInactive
- lib.rs: add storage fields, events (ParametricPolicyCreated,
  ParametricPolicyTriggered, OracleDataSubmitted), and messages:
  create_parametric_policy, submit_oracle_data, cancel_parametric_policy,
  get_parametric_policy, get_property_parametric_policies,
  get_holder_parametric_policies, get_oracle_data,
  get_parametric_policy_count
- tests.rs: 14 unit tests covering creation, oracle triggers (GTE/LTE),
  threshold boundary, wrong metric, unauthorized access, cancellation,
  and multi-policy scenarios

Closes MettaChain#249
@drips-wave

drips-wave Bot commented Apr 29, 2026

Copy link
Copy Markdown

@Nuel-ship-it Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@LaGodxy
LaGodxy merged commit 3faf081 into MettaChain:main Apr 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Insurance: Add parametric insurance products

2 participants