Subscribe a farm to a parametric insurance policy for a specific season
fn subscribe(
env: soroban_sdk::Env,
farmer: soroban_sdk::Address,
farm_id: soroban_sdk::Symbol,
region: soroban_sdk::Symbol,
season: soroban_sdk::Symbol,
premium: i128,
) -> Result<(), soroban_sdk::Error>
Initialize the contract with admin, token address, oracle parameters, and mainnet/testnet flag
fn initialize(
env: soroban_sdk::Env,
admin_keys: soroban_sdk::Vec>,
admin_threshold: u32,
xlm_token: soroban_sdk::Address,
quorum: u32,
is_mainnet_mode: bool,
single_oracle: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
Set the active status of a weather oracle (Testnet consensus)
fn set_oracle(
env: soroban_sdk::Env,
payload: soroban_sdk::Bytes,
signatures: soroban_sdk::Vec<(soroban_sdk::BytesN<32>, soroban_sdk::BytesN<64>)>,
oracle: soroban_sdk::Address,
is_active: bool,
) -> Result<(), soroban_sdk::Error>
Claim payout based on dynamic network-configured parametric curves for a specific farm and season
fn claim_payout(
env: soroban_sdk::Env,
farmer: soroban_sdk::Address,
farm_id: soroban_sdk::Symbol,
season: soroban_sdk::Symbol,
typhoon_id: soroban_sdk::Symbol,
) -> Result
Get details of LP shares
fn get_lp_shares(env: soroban_sdk::Env, lp: soroban_sdk::Address) -> i128
Official KYC/RSBSA Verification of farmers
fn verify_farmer(
env: soroban_sdk::Env,
payload: soroban_sdk::Bytes,
signatures: soroban_sdk::Vec<(soroban_sdk::BytesN<32>, soroban_sdk::BytesN<64>)>,
farmer: soroban_sdk::Address,
is_verified: bool,
) -> Result<(), soroban_sdk::Error>
Check if contract is initialized
fn is_initialized(env: soroban_sdk::Env) -> bool
Donors can deposit XLM into the public premium subsidy pool
fn deposit_subsidy(
env: soroban_sdk::Env,
donor: soroban_sdk::Address,
amount: i128,
) -> Result<(), soroban_sdk::Error>
Check if running in mainnet mode
fn is_mainnet_mode(env: soroban_sdk::Env) -> bool
Repay a microloan
fn repay_microloan(
env: soroban_sdk::Env,
farmer: soroban_sdk::Address,
loan_id: soroban_sdk::Symbol,
amount: i128,
) -> Result<(), soroban_sdk::Error>
Set the DAO Address (Admin transition)
fn set_dao_address(
env: soroban_sdk::Env,
payload: soroban_sdk::Bytes,
signatures: soroban_sdk::Vec<(soroban_sdk::BytesN<32>, soroban_sdk::BytesN<64>)>,
dao: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
Transfer reinsurance bond shares to another address (Tokenized Bond Trading)
fn transfer_shares(
env: soroban_sdk::Env,
from: soroban_sdk::Address,
to: soroban_sdk::Address,
amount: i128,
) -> Result<(), soroban_sdk::Error>
Set the single authorized oracle (Mainnet mode)
fn set_single_oracle(
env: soroban_sdk::Env,
payload: soroban_sdk::Bytes,
signatures: soroban_sdk::Vec<(soroban_sdk::BytesN<32>, soroban_sdk::BytesN<64>)>,
single_oracle: soroban_sdk::Address,
) -> Result<(), soroban_sdk::Error>
Reinsurance pool deposits (Yield Seekers back the pool to gain interest from premiums)
fn deposit_reinsurance(
env: soroban_sdk::Env,
lp: soroban_sdk::Address,
amount: i128,
) -> Result
Get total subsidy pool balance
fn get_subsidy_balance(env: soroban_sdk::Env) -> i128
Originate an uncollateralized rebuilding micro-loan
fn originate_microloan(
env: soroban_sdk::Env,
farmer: soroban_sdk::Address,
loan_id: soroban_sdk::Symbol,
amount: i128,
yield_prediction: u32,
) -> Result<(), soroban_sdk::Error>
DAO ONLY: Update premium rate multiplier for a geospatial risk zone
fn update_premium_rate(
env: soroban_sdk::Env,
region: soroban_sdk::Symbol,
multiplier: u32,
) -> Result<(), soroban_sdk::Error>
Set the consensus quorum threshold
fn set_quorum_threshold(
env: soroban_sdk::Env,
payload: soroban_sdk::Bytes,
signatures: soroban_sdk::Vec<(soroban_sdk::BytesN<32>, soroban_sdk::BytesN<64>)>,
threshold: u32,
) -> Result<(), soroban_sdk::Error>
fn verify_and_liquidate(
env: soroban_sdk::Env,
proof: soroban_sdk::Bytes,
public_inputs: soroban_sdk::Vec,
recipient: soroban_sdk::Address,
amount: u128,
) -> Result
Reinsurance pool withdrawals (burning LP shares for XLM)
fn withdraw_reinsurance(
env: soroban_sdk::Env,
lp: soroban_sdk::Address,
shares: i128,
) -> Result
Oracles submit damage estimation reports (Combined Oracle + AI) for a typhoon in a region, along with raw wind speed
fn submit_weather_report(
env: soroban_sdk::Env,
oracle: soroban_sdk::Address,
typhoon_id: soroban_sdk::Symbol,
region: soroban_sdk::Symbol,
damage_percentage: u32,
wind_speed: u32,
) -> Result<(), soroban_sdk::Error>
Admin Multi-sig: Update parametric payout bands for a region
fn update_parametric_bands(
env: soroban_sdk::Env,
payload: soroban_sdk::Bytes,
signatures: soroban_sdk::Vec<(soroban_sdk::BytesN<32>, soroban_sdk::BytesN<64>)>,
region: soroban_sdk::Symbol,
bands: soroban_sdk::Vec,
) -> Result<(), soroban_sdk::Error>
Get total reinsurance shares
fn get_total_reinsurance_shares(env: soroban_sdk::Env) -> i128
Get total reinsurance deposited
fn get_total_reinsurance_deposited(env: soroban_sdk::Env) -> i128