Claims & Payouts

Supply your cxTokens to the Claims Processor contract to receive the payout in stablecoin tokens.

import { ChainId, governance, claimsProcessor, cxToken, utils } from '@neptunemutual/sdk'
import { info } from '../configs/info.js'
import { getProvider } from '../provider.js'
import { ether } from '../bn.js'

const getCxToken = async (coverKey, productKey, provider) => {
  const policyDuration = 2 // 2 months
  const expiryDate = utils.date.getExpiryDate(policyDuration, new Date())
  const { result } = await cxToken.getCTokenByExpiryDate(ChainId.Mumbai, coverKey, productKey, expiryDate, provider)

  return result
}

const claim = async () => {
  try {
    const { key } = info
    const productKey = utils.keyUtil.toBytes32('')
    const provider = getProvider()
    const amount = ether(20)

    const instance = await getCxToken(key, productKey, provider)

    // Approve the claims processor to spend your cxTokens
    let response = await claimsProcessor.approve(ChainId.Mumbai, instance.address, {}, provider)
    await response.result.wait()

    // Get the incident date and submit a claim
    const incidentDate = (await governance.getIncidentDate(ChainId.Mumbai, key, productKey, provider)).result

    response = await claimsProcessor.claim(ChainId.Mumbai, instance.address, key, productKey, incidentDate, amount, provider)
    await response.result.wait()

    console.info('We\'ve sent you the payout')
  } catch (error) {
    console.error(error)
  }
}

claim()

/*****************************************************************************
[info] We've sent you the payout
*****************************************************************************/

Ensure that you submit a claim only when the resolution occurs or else, you may receive an error message.

/*****************************************************************************
[error] Error: execution reverted: Invalid incident date
    at getResult (/projects/@neptunemutual/sdk-test/node_modules/@ethersproject/providers/lib/json-rpc-provider.js:132:21)
    at processJsonFunc (/projects/@neptunemutual/sdk-test/node_modules/@ethersproject/web/lib/index.js:309:22)
    at /projects/@neptunemutual/sdk-test/node_modules/@ethersproject/web/lib/index.js:241:46
    at step (/projects/@neptunemutual/sdk-test/node_modules/@ethersproject/web/lib/index.js:33:23)
    at Object.next (/projects/@neptunemutual/sdk-test/node_modules/@ethersproject/web/lib/index.js:14:53)
    at fulfilled (/projects/@neptunemutual/sdk-test/node_modules/@ethersproject/web/lib/index.js:5:58)
    at processTicksAndRejections (internal/process/task_queues.js:93:5) {
  code: 3,
  data: '0x08c379a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000000c436c61696d2064656e6965640000000000000000000000000000000000000000'
}
*****************************************************************************/