State
Params
Params
is a module-wide configuration structure that stores system parameters and defines overall functioning of the insurance module.
- Params:
Paramsspace("insurance") -> legacy_amino(params)
type Params struct {
// default_redemption_notice_period_duration defines the default minimum notice period duration that must pass after an underwriter sends
// a redemption request before the underwriter can claim his tokens
DefaultRedemptionNoticePeriodDuration time.Duration
}
Insurance Types
InsuranceFund
defines all the information of the Insurance Funds
by market.
type InsuranceFund struct {
// deposit denomination for the given insurance fund
DepositDenom string
// insurance fund pool token denomination for the given insurance fund
InsurancePoolTokenDenom string
// redemption_notice_period_duration defines the minimum notice period duration that must pass after an underwriter sends
// a redemption request before the underwriter can claim his tokens
RedemptionNoticePeriodDuration time.Duration
// balance of fund
Balance math.Int
// total share tokens minted
TotalShare math.Int
// marketID of the derivative market
MarketId string
// ticker of the derivative market
MarketTicker string
// Oracle base currency of the derivative market
OracleBase string
// Oracle quote currency of the derivative market
OracleQuote string
// Oracle type of the derivative market
OracleType types.OracleType
// Expiration time of the derivative market. Should be -1 for perpetual markets.
Expiry int64
}
RedemptionSchedule
defines redemption schedules from users - redemption is not executed instantly but there's redemption_notice_period_duration
specified per market.
type RedemptionSchedule struct {
// id of redemption schedule
Id uint64
// marketId of redemption schedule
MarketId string
// address of the redeemer
Redeemer string
// the time after which the redemption can be claimed
ClaimableRedemptionTime time.Time
// the insurance_pool_token amount to redeem
RedemptionAmount sdk.Coin
}
Additionally, we introduce next_share_denom_id
and next_redemption_schedule_id
to manage insurance fund share token
denom and redemption schedules from various users.
// GenesisState defines the insurance module's genesis state.
type GenesisState struct {
// params defines all the parameters of related to insurance.
Params Params
InsuranceFunds []InsuranceFund
RedemptionSchedule []RedemptionSchedule
NextShareDenomId uint64
NextRedemptionScheduleId uint64
}
Pending Redemptions
Pending Redemptions Objects are kept to store all the information about redemption requests and to auto-withdraw when the duration pass.