Cover Reassurance
When launching a new cover, you can include a reassurance fund. Liquidity from the reassurance fund lowers cover fees and offsets liquidity providers' losses during cover incidents, enhancing the confidence of the liquidity providers. When a cover incident is finalized, the reassurance tokens are reimbursed as support to the liquidity providers.
Based on available liquidity, the reassurance contract will capitalize up to 25% of the suffered loss to the liquidity pool.
Add Reassurance#
import { ChainId, reassurance, registry } from '@neptunemutual/sdk'
import { info } from './info.js'
import { getProvider } from './provider.js'
import { parseUnits, unitsAsToken } from '../../bn.js'
const increase = async () => {
const { key, coverName, reassuranceToken } = info
const { symbol } = reassuranceToken
const provider = getProvider()
// getting token address from registry Stablecoin
const tokenAddress = await (await registry.Stablecoin.getInstance(ChainId.Mumbai, provider)).address
// getting token from IERC20 instance
const token = await registry.IERC20.getInstance(tokenAddress, provider)
// getting symbol from the token
const symbol = await token.symbol()
// getting token decimals
const decimals = await token.decimals()
const amount = parseUnits(100, decimals)
let response = await reassurance.get(ChainId.Mumbai, key, provider)
console.info('[%s Reassurance] Before: %s', coverName, unitsAsToken(response.result, decimals, symbol))
response = await reassurance.approve(ChainId.Mumbai, { amount }, provider)
// Wait for the transaction to get included in a block
await response.result.wait()
response = await reassurance.add(ChainId.Mumbai, key, amount, provider)
// Wait for the transaction to get included in a block
await response.result.wait()
console.info(response)
// Wait for the transaction to get included in a block
await response.result.wait()
response = await reassurance.get(ChainId.Mumbai, key, provider)
console.info('[%s Reassurance] After: %s', coverName, unitsAsToken(response.result, decimals, symbol))
}
increase()
/*****************************************************************************
[info] [Compound Finance Cover Reassurance] Before: 50,000.00 COMP
[info] {
status: 'Success',
result: {
nonce: 1,
gasPrice: BigNumber { _hex: '0x06fc23ac00', _isBigNumber: true },
gasLimit: BigNumber { _hex: '0x01fe55', _isBigNumber: true },
to: '0xC551E926F7B251cc6579BE111C65079f25e50e53',
value: BigNumber { _hex: '0x00', _isBigNumber: true },
data: '0x9295182570726f746f3a636f6e7472616374733a636f7665723a6366633a303100000002000000000000000000000000076f91c0a411197e6fce476f37c6385cceacd26d00000000000000000000000000000000000000000000152d02c7e14af6800000',
chainId: 80001,
v: 160037,
r: '0xb648e7979b067ae87af2789e64bcc16bfd3d13c9d2bd6fb4bae9d6c1f75b7f17',
s: '0x15956535e8d34fb17cfa36cdcfd5d58a5d3f57956d57de2dc519bc8abc7c52aa',
from: '0x076F91C0A411197e6Fce476F37c6385CCeacd26D',
hash: '0xc2d7e8ff50b2463f2a2b044baadff3cedfd7caa1369eacd31ec864fbe5651d41',
type: null,
wait: [Function (anonymous)]
}
}
[info] [Compound Finance Cover Reassurance] After: 150,000.00 COMP
*****************************************************************************/
Get Reassurance#
import { ChainId, reassurance } from '@neptunemutual/sdk'
import { info } from './info.js'
import { getProvider } from '../../provider.js'
import { unitsAsToken } from '../../bn.js'
const get = async () => {
const { key, coverName, reassuranceToken } = info
const provider = getProvider()
// getting token address from registry Stablecoin
const tokenAddress = await (await registry.Stablecoin.getInstance(ChainId.Mumbai, provider)).address
// getting token from IERC20 instance
const token = await registry.IERC20.getInstance(tokenAddress, provider)
// getting symbol from the token
const symbol = await token.symbol()
// getting token decimals
const decimals = await token.decimals()
const response = await reassurance.get(ChainId.Mumbai, key, provider)
console.info('[%s Reassurance] %s', coverName, unitsAsToken(response.result, decimals, symbol))
}
get()
/*****************************************************************************
[info] [Compound Finance Cover Reassurance] 150,000.00 NPM
*****************************************************************************/