From 1d10c79c379e09566d6209c11199302d4d124044 Mon Sep 17 00:00:00 2001 From: dominikpre Date: Fri, 20 May 2022 14:48:08 +0200 Subject: [PATCH 01/15] refactor(ease) fix linting --- .../ease/ethereum/ease.balance-fetcher.ts | 8 +++---- .../ease/ethereum/ease.rca.token-fetcher.ts | 21 ++++++++++++------- src/apps/ease/ethereum/ease.tvl-fetcher.ts | 4 ++-- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/apps/ease/ethereum/ease.balance-fetcher.ts b/src/apps/ease/ethereum/ease.balance-fetcher.ts index 573123dc6..05d2fd120 100644 --- a/src/apps/ease/ethereum/ease.balance-fetcher.ts +++ b/src/apps/ease/ethereum/ease.balance-fetcher.ts @@ -12,14 +12,14 @@ const network = Network.ETHEREUM_MAINNET; @Register.BalanceFetcher(EASE_DEFINITION.id, network) export class EthereumEaseBalanceFetcher implements BalanceFetcher { - constructor(@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit) { } + constructor(@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit) {} async getRcaTokenBalances(address: string) { return this.appToolkit.helpers.tokenBalanceHelper.getTokenBalances({ address, appId: EASE_DEFINITION.id, groupId: EASE_DEFINITION.groups.rca.id, - network: network + network: network, }); } @@ -29,8 +29,8 @@ export class EthereumEaseBalanceFetcher implements BalanceFetcher { return presentBalanceFetcherResponse([ { label: 'RCAs', - assets: rcaTokenBalances - } + assets: rcaTokenBalances, + }, ]); } } diff --git a/src/apps/ease/ethereum/ease.rca.token-fetcher.ts b/src/apps/ease/ethereum/ease.rca.token-fetcher.ts index 463527e57..0c16920e0 100644 --- a/src/apps/ease/ethereum/ease.rca.token-fetcher.ts +++ b/src/apps/ease/ethereum/ease.rca.token-fetcher.ts @@ -4,10 +4,10 @@ import _ from 'lodash'; import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; import { Register } from '~app-toolkit/decorators'; +import { YEARN_DEFINITION } from '~apps/yearn/yearn.definition'; import { PositionFetcher } from '~position/position-fetcher.interface'; import { AppTokenPosition } from '~position/position.interface'; import { Network } from '~types/network.interface'; -import { YEARN_DEFINITION } from '~apps/yearn/yearn.definition'; import { EaseContractFactory, EaseRcaShield } from '../contracts'; import { EASE_DEFINITION } from '../ease.definition'; @@ -29,7 +29,7 @@ export class EthereumEaseRcaTokenFetcher implements PositionFetcher this.easeContractFactory.easeRcaShield({ address, network }), resolveVaultAddresses: async () => ethData.map(({ address }) => address.toLowerCase()), - resolveUnderlyingTokenAddress: ({ multicall, contract }) => multicall.wrap(contract).uToken().catch(() => ''), - resolveReserve: async ({ underlyingToken, multicall, address }) => multicall - .wrap(this.appToolkit.globalContracts.erc20(underlyingToken)) - .balanceOf(address) - .then(v => Number(v) / 10 ** underlyingToken.decimals), + resolveUnderlyingTokenAddress: ({ multicall, contract }) => + multicall + .wrap(contract) + .uToken() + .catch(() => ''), + resolveReserve: async ({ underlyingToken, multicall, address }) => + multicall + .wrap(this.appToolkit.globalContracts.erc20(underlyingToken)) + .balanceOf(address) + .then(v => Number(v) / 10 ** underlyingToken.decimals), resolvePricePerShare: () => 1, - resolveApy: async ({ vaultAddress }) => await (rcaAddressToDetails[vaultAddress]?.token['apy'] ?? 0) / 100, + resolveApy: async ({ vaultAddress }) => (await (rcaAddressToDetails[vaultAddress]?.token['apy'] ?? 0)) / 100, }); } } diff --git a/src/apps/ease/ethereum/ease.tvl-fetcher.ts b/src/apps/ease/ethereum/ease.tvl-fetcher.ts index 9b4f546c5..85aa58661 100644 --- a/src/apps/ease/ethereum/ease.tvl-fetcher.ts +++ b/src/apps/ease/ethereum/ease.tvl-fetcher.ts @@ -13,13 +13,13 @@ const network = Network.ETHEREUM_MAINNET; @Register.TvlFetcher({ appId, network }) export class EthereumEaseTvlFetcher implements TvlFetcher { - constructor(@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit) { } + constructor(@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit) {} async getTvl() { const tokens = await this.appToolkit.getAppTokenPositions({ appId, groupIds: [EASE_DEFINITION.groups.rca.id], - network + network, }); return sumBy(tokens, v => v.supply * v.price); } From 37be833ecf010b31ee3585827cbb9bf4e0c48f1b Mon Sep 17 00:00:00 2001 From: dominikpre Date: Fri, 20 May 2022 17:30:54 +0200 Subject: [PATCH 02/15] feat(ease) add ease logo --- src/apps/ease/assets/logo.png | Bin 0 -> 39058 bytes .../ease/ethereum/ease.rca.token-fetcher.ts | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 src/apps/ease/assets/logo.png diff --git a/src/apps/ease/assets/logo.png b/src/apps/ease/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..79b6257a9a558cd877b2d2320dd066b32fdb174c GIT binary patch literal 39058 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 -Hd3UU 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 Number(v) / 10 ** underlyingToken.decimals), resolvePricePerShare: () => 1, resolveApy: async ({ vaultAddress }) => (await (rcaAddressToDetails[vaultAddress]?.token['apy'] ?? 0)) / 100, + resolveImages: () => [getAppImg(appId)], }); } } From 16f38f4cdd22fa47296158ba999555233bbfa92a Mon Sep 17 00:00:00 2001 From: dominikpre Date: Fri, 20 May 2022 17:35:05 +0200 Subject: [PATCH 03/15] refactor(ease) rename and new description --- src/apps/ease/ease.definition.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apps/ease/ease.definition.ts b/src/apps/ease/ease.definition.ts index 0fc06ad10..84a03a2a6 100644 --- a/src/apps/ease/ease.definition.ts +++ b/src/apps/ease/ease.definition.ts @@ -5,9 +5,9 @@ import { Network } from '~types/network.interface'; export const EASE_DEFINITION = appDefinition({ id: 'ease', - name: 'Ease DeFi Cover', + name: 'Ease.org DeFi Cover', description: - 'Ease is a decentralized insurance protocol that enables users to insure their yield, lending or LP tokens trustlessly and without a premium', + 'Ease is a decentralized coverage protocol that enables users to protect their DeFi tokens without a premium while earning compounding yield.', url: 'https://ease.org/', groups: { From c0ba1a87d515560a0d66ba7951e9d2a2f985d21b Mon Sep 17 00:00:00 2001 From: dominikpre Date: Fri, 20 May 2022 18:27:04 +0200 Subject: [PATCH 04/15] fix(ease): fix apy in stats about vault --- src/apps/ease/ethereum/ease.rca.token-fetcher.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/ease/ethereum/ease.rca.token-fetcher.ts b/src/apps/ease/ethereum/ease.rca.token-fetcher.ts index 3c9ffdc52..9925e8a62 100644 --- a/src/apps/ease/ethereum/ease.rca.token-fetcher.ts +++ b/src/apps/ease/ethereum/ease.rca.token-fetcher.ts @@ -61,7 +61,7 @@ export class EthereumEaseRcaTokenFetcher implements PositionFetcher Number(v) / 10 ** underlyingToken.decimals), resolvePricePerShare: () => 1, - resolveApy: async ({ vaultAddress }) => (await (rcaAddressToDetails[vaultAddress]?.token['apy'] ?? 0)) / 100, + resolveApy: async ({ vaultAddress }) => (await (rcaAddressToDetails[vaultAddress]?.token['apy'] ?? 0)), resolveImages: () => [getAppImg(appId)], }); } From 81fc3daef3e19c17dbc18860e6c6b533eedb1343 Mon Sep 17 00:00:00 2001 From: dominikpre Date: Fri, 20 May 2022 14:48:08 +0200 Subject: [PATCH 05/15] refactor(ease) fix linting --- .../ease/ethereum/ease.balance-fetcher.ts | 8 +++---- .../ease/ethereum/ease.rca.token-fetcher.ts | 21 ++++++++++++------- src/apps/ease/ethereum/ease.tvl-fetcher.ts | 4 ++-- 3 files changed, 19 insertions(+), 14 deletions(-) diff --git a/src/apps/ease/ethereum/ease.balance-fetcher.ts b/src/apps/ease/ethereum/ease.balance-fetcher.ts index 573123dc6..05d2fd120 100644 --- a/src/apps/ease/ethereum/ease.balance-fetcher.ts +++ b/src/apps/ease/ethereum/ease.balance-fetcher.ts @@ -12,14 +12,14 @@ const network = Network.ETHEREUM_MAINNET; @Register.BalanceFetcher(EASE_DEFINITION.id, network) export class EthereumEaseBalanceFetcher implements BalanceFetcher { - constructor(@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit) { } + constructor(@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit) {} async getRcaTokenBalances(address: string) { return this.appToolkit.helpers.tokenBalanceHelper.getTokenBalances({ address, appId: EASE_DEFINITION.id, groupId: EASE_DEFINITION.groups.rca.id, - network: network + network: network, }); } @@ -29,8 +29,8 @@ export class EthereumEaseBalanceFetcher implements BalanceFetcher { return presentBalanceFetcherResponse([ { label: 'RCAs', - assets: rcaTokenBalances - } + assets: rcaTokenBalances, + }, ]); } } diff --git a/src/apps/ease/ethereum/ease.rca.token-fetcher.ts b/src/apps/ease/ethereum/ease.rca.token-fetcher.ts index 463527e57..0c16920e0 100644 --- a/src/apps/ease/ethereum/ease.rca.token-fetcher.ts +++ b/src/apps/ease/ethereum/ease.rca.token-fetcher.ts @@ -4,10 +4,10 @@ import _ from 'lodash'; import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; import { Register } from '~app-toolkit/decorators'; +import { YEARN_DEFINITION } from '~apps/yearn/yearn.definition'; import { PositionFetcher } from '~position/position-fetcher.interface'; import { AppTokenPosition } from '~position/position.interface'; import { Network } from '~types/network.interface'; -import { YEARN_DEFINITION } from '~apps/yearn/yearn.definition'; import { EaseContractFactory, EaseRcaShield } from '../contracts'; import { EASE_DEFINITION } from '../ease.definition'; @@ -29,7 +29,7 @@ export class EthereumEaseRcaTokenFetcher implements PositionFetcher this.easeContractFactory.easeRcaShield({ address, network }), resolveVaultAddresses: async () => ethData.map(({ address }) => address.toLowerCase()), - resolveUnderlyingTokenAddress: ({ multicall, contract }) => multicall.wrap(contract).uToken().catch(() => ''), - resolveReserve: async ({ underlyingToken, multicall, address }) => multicall - .wrap(this.appToolkit.globalContracts.erc20(underlyingToken)) - .balanceOf(address) - .then(v => Number(v) / 10 ** underlyingToken.decimals), + resolveUnderlyingTokenAddress: ({ multicall, contract }) => + multicall + .wrap(contract) + .uToken() + .catch(() => ''), + resolveReserve: async ({ underlyingToken, multicall, address }) => + multicall + .wrap(this.appToolkit.globalContracts.erc20(underlyingToken)) + .balanceOf(address) + .then(v => Number(v) / 10 ** underlyingToken.decimals), resolvePricePerShare: () => 1, - resolveApy: async ({ vaultAddress }) => await (rcaAddressToDetails[vaultAddress]?.token['apy'] ?? 0) / 100, + resolveApy: async ({ vaultAddress }) => (await (rcaAddressToDetails[vaultAddress]?.token['apy'] ?? 0)) / 100, }); } } diff --git a/src/apps/ease/ethereum/ease.tvl-fetcher.ts b/src/apps/ease/ethereum/ease.tvl-fetcher.ts index 9b4f546c5..85aa58661 100644 --- a/src/apps/ease/ethereum/ease.tvl-fetcher.ts +++ b/src/apps/ease/ethereum/ease.tvl-fetcher.ts @@ -13,13 +13,13 @@ const network = Network.ETHEREUM_MAINNET; @Register.TvlFetcher({ appId, network }) export class EthereumEaseTvlFetcher implements TvlFetcher { - constructor(@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit) { } + constructor(@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit) {} async getTvl() { const tokens = await this.appToolkit.getAppTokenPositions({ appId, groupIds: [EASE_DEFINITION.groups.rca.id], - network + network, }); return sumBy(tokens, v => v.supply * v.price); } From 4761024fd95a5ab475517ead479cf574f2cc7bfc Mon Sep 17 00:00:00 2001 From: Andrew Leonard Date: Fri, 20 May 2022 05:38:15 -0700 Subject: [PATCH 06/15] feat(solace): Integrate solace finance (#457) --- src/apps/solace/assets/logo.svg | 30 + .../contracts/abis/bond-teller-erc-20.json | 652 ++++++ .../contracts/abis/bond-teller-eth.json | 642 ++++++ .../contracts/abis/bond-teller-matic.json | 642 ++++++ src/apps/solace/contracts/abis/erc-20.json | 126 ++ src/apps/solace/contracts/abis/scp.json | 396 ++++ .../abis/solace-cover-product-v-2.json | 734 +++++++ .../contracts/abis/solace-cover-product.json | 662 ++++++ src/apps/solace/contracts/abis/solace.json | 248 +++ .../contracts/abis/staking-rewards.json | 282 +++ .../solace/contracts/abis/x-solacev-1.json | 277 +++ src/apps/solace/contracts/abis/xs-locker.json | 512 +++++ .../contracts/ethers/BondTellerErc20.ts | 1775 ++++++++++++++++ .../solace/contracts/ethers/BondTellerEth.ts | 1740 ++++++++++++++++ .../contracts/ethers/BondTellerMatic.ts | 1740 ++++++++++++++++ src/apps/solace/contracts/ethers/Erc20.ts | 336 +++ src/apps/solace/contracts/ethers/Scp.ts | 1070 ++++++++++ src/apps/solace/contracts/ethers/Solace.ts | 691 ++++++ .../contracts/ethers/SolaceCoverProduct.ts | 1664 +++++++++++++++ .../contracts/ethers/SolaceCoverProductV2.ts | 1847 +++++++++++++++++ .../solace/contracts/ethers/StakingRewards.ts | 750 +++++++ src/apps/solace/contracts/ethers/XSolacev1.ts | 762 +++++++ src/apps/solace/contracts/ethers/XsLocker.ts | 1359 ++++++++++++ src/apps/solace/contracts/ethers/common.ts | 30 + .../factories/BondTellerErc20__factory.ts | 1540 ++++++++++++++ .../factories/BondTellerEth__factory.ts | 1511 ++++++++++++++ .../factories/BondTellerMatic__factory.ts | 1511 ++++++++++++++ .../ethers/factories/Erc20__factory.ts | 306 +++ .../ethers/factories/Scp__factory.ts | 948 +++++++++ .../SolaceCoverProductV2__factory.ts | 1635 +++++++++++++++ .../factories/SolaceCoverProduct__factory.ts | 1474 +++++++++++++ .../ethers/factories/Solace__factory.ts | 582 ++++++ .../factories/StakingRewards__factory.ts | 603 ++++++ .../ethers/factories/XSolacev1__factory.ts | 681 ++++++ .../ethers/factories/XsLocker__factory.ts | 1158 +++++++++++ .../contracts/ethers/factories/index.ts | 14 + src/apps/solace/contracts/ethers/index.ts | 26 + src/apps/solace/contracts/index.ts | 73 + .../solace/ethereum/helpers/getBondBalance.ts | 48 + .../ethereum/helpers/getPolicyBalance.ts | 28 + .../solace/ethereum/helpers/getScpBalance.ts | 12 + .../ethereum/helpers/getXSLockerBalance.ts | 53 + .../ethereum/helpers/getXSolaceV1Balance.ts | 12 + .../solace/ethereum/solace.balance-fetcher.ts | 42 + .../solace.bonds.contract-position-fetcher.ts | 88 + ...lace.policies.contract-position-fetcher.ts | 45 + .../ethereum/solace.scp.token-fetcher.ts | 64 + .../solace/ethereum/solace.tvl-fetcher.ts | 103 + ...lace.xslocker.contract-position-fetcher.ts | 45 + .../solace.xsolacev1.token-fetcher.ts | 67 + .../solace/polygon/helpers/getBondBalance.ts | 48 + .../polygon/helpers/getPolicyBalance.ts | 28 + .../polygon/helpers/getXSLockerBalance.ts | 53 + .../solace/polygon/solace.balance-fetcher.ts | 36 + .../solace.bonds.contract-position-fetcher.ts | 88 + ...lace.policies.contract-position-fetcher.ts | 45 + .../polygon/solace.scp.token-fetcher.ts | 27 + src/apps/solace/polygon/solace.tvl-fetcher.ts | 99 + ...lace.xslocker.contract-position-fetcher.ts | 45 + .../polygon/solace.xsolacev1.token-fetcher.ts | 27 + src/apps/solace/solace.definition.ts | 43 + src/apps/solace/solace.module.ts | 42 + src/apps/solace/utils.ts | 85 + 63 files changed, 32302 insertions(+) create mode 100644 src/apps/solace/assets/logo.svg create mode 100644 src/apps/solace/contracts/abis/bond-teller-erc-20.json create mode 100644 src/apps/solace/contracts/abis/bond-teller-eth.json create mode 100644 src/apps/solace/contracts/abis/bond-teller-matic.json create mode 100644 src/apps/solace/contracts/abis/erc-20.json create mode 100644 src/apps/solace/contracts/abis/scp.json create mode 100644 src/apps/solace/contracts/abis/solace-cover-product-v-2.json create mode 100644 src/apps/solace/contracts/abis/solace-cover-product.json create mode 100644 src/apps/solace/contracts/abis/solace.json create mode 100644 src/apps/solace/contracts/abis/staking-rewards.json create mode 100644 src/apps/solace/contracts/abis/x-solacev-1.json create mode 100644 src/apps/solace/contracts/abis/xs-locker.json create mode 100644 src/apps/solace/contracts/ethers/BondTellerErc20.ts create mode 100644 src/apps/solace/contracts/ethers/BondTellerEth.ts create mode 100644 src/apps/solace/contracts/ethers/BondTellerMatic.ts create mode 100644 src/apps/solace/contracts/ethers/Erc20.ts create mode 100644 src/apps/solace/contracts/ethers/Scp.ts create mode 100644 src/apps/solace/contracts/ethers/Solace.ts create mode 100644 src/apps/solace/contracts/ethers/SolaceCoverProduct.ts create mode 100644 src/apps/solace/contracts/ethers/SolaceCoverProductV2.ts create mode 100644 src/apps/solace/contracts/ethers/StakingRewards.ts create mode 100644 src/apps/solace/contracts/ethers/XSolacev1.ts create mode 100644 src/apps/solace/contracts/ethers/XsLocker.ts create mode 100644 src/apps/solace/contracts/ethers/common.ts create mode 100644 src/apps/solace/contracts/ethers/factories/BondTellerErc20__factory.ts create mode 100644 src/apps/solace/contracts/ethers/factories/BondTellerEth__factory.ts create mode 100644 src/apps/solace/contracts/ethers/factories/BondTellerMatic__factory.ts create mode 100644 src/apps/solace/contracts/ethers/factories/Erc20__factory.ts create mode 100644 src/apps/solace/contracts/ethers/factories/Scp__factory.ts create mode 100644 src/apps/solace/contracts/ethers/factories/SolaceCoverProductV2__factory.ts create mode 100644 src/apps/solace/contracts/ethers/factories/SolaceCoverProduct__factory.ts create mode 100644 src/apps/solace/contracts/ethers/factories/Solace__factory.ts create mode 100644 src/apps/solace/contracts/ethers/factories/StakingRewards__factory.ts create mode 100644 src/apps/solace/contracts/ethers/factories/XSolacev1__factory.ts create mode 100644 src/apps/solace/contracts/ethers/factories/XsLocker__factory.ts create mode 100644 src/apps/solace/contracts/ethers/factories/index.ts create mode 100644 src/apps/solace/contracts/ethers/index.ts create mode 100644 src/apps/solace/contracts/index.ts create mode 100644 src/apps/solace/ethereum/helpers/getBondBalance.ts create mode 100644 src/apps/solace/ethereum/helpers/getPolicyBalance.ts create mode 100644 src/apps/solace/ethereum/helpers/getScpBalance.ts create mode 100644 src/apps/solace/ethereum/helpers/getXSLockerBalance.ts create mode 100644 src/apps/solace/ethereum/helpers/getXSolaceV1Balance.ts create mode 100644 src/apps/solace/ethereum/solace.balance-fetcher.ts create mode 100644 src/apps/solace/ethereum/solace.bonds.contract-position-fetcher.ts create mode 100644 src/apps/solace/ethereum/solace.policies.contract-position-fetcher.ts create mode 100644 src/apps/solace/ethereum/solace.scp.token-fetcher.ts create mode 100644 src/apps/solace/ethereum/solace.tvl-fetcher.ts create mode 100644 src/apps/solace/ethereum/solace.xslocker.contract-position-fetcher.ts create mode 100644 src/apps/solace/ethereum/solace.xsolacev1.token-fetcher.ts create mode 100644 src/apps/solace/polygon/helpers/getBondBalance.ts create mode 100644 src/apps/solace/polygon/helpers/getPolicyBalance.ts create mode 100644 src/apps/solace/polygon/helpers/getXSLockerBalance.ts create mode 100644 src/apps/solace/polygon/solace.balance-fetcher.ts create mode 100644 src/apps/solace/polygon/solace.bonds.contract-position-fetcher.ts create mode 100644 src/apps/solace/polygon/solace.policies.contract-position-fetcher.ts create mode 100644 src/apps/solace/polygon/solace.scp.token-fetcher.ts create mode 100644 src/apps/solace/polygon/solace.tvl-fetcher.ts create mode 100644 src/apps/solace/polygon/solace.xslocker.contract-position-fetcher.ts create mode 100644 src/apps/solace/polygon/solace.xsolacev1.token-fetcher.ts create mode 100644 src/apps/solace/solace.definition.ts create mode 100644 src/apps/solace/solace.module.ts create mode 100644 src/apps/solace/utils.ts diff --git a/src/apps/solace/assets/logo.svg b/src/apps/solace/assets/logo.svg new file mode 100644 index 000000000..2bdb352d8 --- /dev/null +++ b/src/apps/solace/assets/logo.svg @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/apps/solace/contracts/abis/bond-teller-erc-20.json b/src/apps/solace/contracts/abis/bond-teller-erc-20.json new file mode 100644 index 000000000..f8a6bd0af --- /dev/null +++ b/src/apps/solace/contracts/abis/bond-teller-erc-20.json @@ -0,0 +1,652 @@ +[ + { "anonymous": false, "inputs": [], "name": "AddressesSet", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, + { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" }], + "name": "BaseURISet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": true, "internalType": "address", "name": "deployment", "type": "address" }], + "name": "ContractDeployed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "uint256", "name": "lockID", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "principalAmount", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "payoutAmount", "type": "uint256" }, + { "indexed": false, "internalType": "uint40", "name": "vestingStart", "type": "uint40" }, + { "indexed": false, "internalType": "uint40", "name": "vestingTime", "type": "uint40" } + ], + "name": "CreateBond", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "FeesSet", "type": "event" }, + { "anonymous": false, "inputs": [], "name": "GovernanceLocked", "type": "event" }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "pendingGovernance", "type": "address" }], + "name": "GovernancePending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "oldGovernance", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "newGovernance", "type": "address" } + ], + "name": "GovernanceTransferred", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "Paused", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "uint256", "name": "bondID", "type": "uint256" }, + { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "payoutAmount", "type": "uint256" } + ], + "name": "RedeemBond", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "TermsSet", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "Unpaused", "type": "event" }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [{ "internalType": "bytes32", "name": "seperator", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [{ "internalType": "bytes32", "name": "typehash", "type": "bytes32" }], + "stateMutability": "pure", + "type": "function" + }, + { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bondDepo", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bondPrice", + "outputs": [{ "internalType": "uint256", "name": "price_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "name": "bonds", + "outputs": [ + { "internalType": "uint256", "name": "payoutAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "payoutAlreadyClaimed", "type": "uint256" }, + { "internalType": "uint256", "name": "principalPaid", "type": "uint256" }, + { "internalType": "uint40", "name": "vestingStart", "type": "uint40" }, + { "internalType": "uint40", "name": "localVestingTerm", "type": "uint40" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, + { "internalType": "bool", "name": "stake", "type": "bool" } + ], + "name": "calculateAmountIn", + "outputs": [{ "internalType": "uint256", "name": "amountIn", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, + { "internalType": "bool", "name": "stake", "type": "bool" } + ], + "name": "calculateAmountOut", + "outputs": [{ "internalType": "uint256", "name": "amountOut", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes32", "name": "salt", "type": "bytes32" }], + "name": "calculateMinimalProxyDeploymentAddress", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "capacity", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "capacityIsPayout", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "bondID", "type": "uint256" }], + "name": "claimPayout", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "string", "name": "name_", "type": "string" }, + { "internalType": "address", "name": "governance_", "type": "address" }, + { "internalType": "address", "name": "principal_", "type": "address" }, + { "internalType": "bool", "name": "isPermittable_", "type": "bool" }, + { "internalType": "bytes32", "name": "salt_", "type": "bytes32" } + ], + "name": "clone", + "outputs": [{ "internalType": "address", "name": "teller", "type": "address" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dao", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "minAmountOut", "type": "uint256" }, + { "internalType": "address", "name": "depositor", "type": "address" }, + { "internalType": "bool", "name": "stake", "type": "bool" } + ], + "name": "deposit", + "outputs": [ + { "internalType": "uint256", "name": "payout", "type": "uint256" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "minAmountOut", "type": "uint256" }, + { "internalType": "address", "name": "depositor", "type": "address" }, + { "internalType": "bool", "name": "stake", "type": "bool" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "depositSigned", + "outputs": [ + { "internalType": "uint256", "name": "payout", "type": "uint256" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "endTime", + "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenID", "type": "uint256" }], + "name": "exists", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }], + "name": "getApproved", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "globalVestingTerm", + "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governanceIsLocked", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "halfLife", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "string", "name": "name_", "type": "string" }, + { "internalType": "address", "name": "governance_", "type": "address" }, + { "internalType": "address", "name": "solace_", "type": "address" }, + { "internalType": "address", "name": "xsLocker_", "type": "address" }, + { "internalType": "address", "name": "pool_", "type": "address" }, + { "internalType": "address", "name": "dao_", "type": "address" }, + { "internalType": "address", "name": "principal_", "type": "address" }, + { "internalType": "bool", "name": "isPermittable_", "type": "bool" }, + { "internalType": "address", "name": "bondDepo_", "type": "address" } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "operator", "type": "address" } + ], + "name": "isApprovedForAll", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isPermittable", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastPriceUpdate", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "lockGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "maxPayout", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minimumPrice", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextPrice", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenID", "type": "uint256" }], + "name": "nonces", + "outputs": [{ "internalType": "uint256", "name": "nonce", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numBonds", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }], + "name": "ownerOf", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "paused", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingGovernance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "priceAdjDenom", + "outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "priceAdjNum", + "outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "principal", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolFeeBps", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "name": "safeTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "solace_", "type": "address" }, + { "internalType": "address", "name": "xsLocker_", "type": "address" }, + { "internalType": "address", "name": "pool_", "type": "address" }, + { "internalType": "address", "name": "dao_", "type": "address" }, + { "internalType": "address", "name": "principal_", "type": "address" }, + { "internalType": "bool", "name": "isPermittable_", "type": "bool" }, + { "internalType": "address", "name": "bondDepo_", "type": "address" } + ], + "name": "setAddresses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "operator", "type": "address" }, + { "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "protocolFee", "type": "uint256" }], + "name": "setFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "pendingGovernance_", "type": "address" }], + "name": "setPendingGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "startPrice", "type": "uint256" }, + { "internalType": "uint256", "name": "minimumPrice", "type": "uint256" }, + { "internalType": "uint256", "name": "maxPayout", "type": "uint256" }, + { "internalType": "uint128", "name": "priceAdjNum", "type": "uint128" }, + { "internalType": "uint128", "name": "priceAdjDenom", "type": "uint128" }, + { "internalType": "uint256", "name": "capacity", "type": "uint256" }, + { "internalType": "bool", "name": "capacityIsPayout", "type": "bool" }, + { "internalType": "uint40", "name": "startTime", "type": "uint40" }, + { "internalType": "uint40", "name": "endTime", "type": "uint40" }, + { "internalType": "uint40", "name": "globalVestingTerm", "type": "uint40" }, + { "internalType": "uint40", "name": "halfLife", "type": "uint40" } + ], + "internalType": "struct BondTellerErc20.Terms", + "name": "terms", + "type": "tuple" + } + ], + "name": "setTerms", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "solace", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "startTime", + "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "termsSet", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "index", "type": "uint256" }], + "name": "tokenByIndex", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "uint256", "name": "index", "type": "uint256" } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenID", "type": "uint256" }], + "name": "tokenURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "name": "transfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "underwritingPool", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "xsLocker", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + } +] diff --git a/src/apps/solace/contracts/abis/bond-teller-eth.json b/src/apps/solace/contracts/abis/bond-teller-eth.json new file mode 100644 index 000000000..9cafdb299 --- /dev/null +++ b/src/apps/solace/contracts/abis/bond-teller-eth.json @@ -0,0 +1,642 @@ +[ + { "anonymous": false, "inputs": [], "name": "AddressesSet", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, + { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" }], + "name": "BaseURISet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "uint256", "name": "lockID", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "principalAmount", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "payoutAmount", "type": "uint256" }, + { "indexed": false, "internalType": "uint40", "name": "vestingStart", "type": "uint40" }, + { "indexed": false, "internalType": "uint40", "name": "vestingTime", "type": "uint40" } + ], + "name": "CreateBond", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "FeesSet", "type": "event" }, + { "anonymous": false, "inputs": [], "name": "GovernanceLocked", "type": "event" }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "pendingGovernance", "type": "address" }], + "name": "GovernancePending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "oldGovernance", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "newGovernance", "type": "address" } + ], + "name": "GovernanceTransferred", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "Paused", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "uint256", "name": "bondID", "type": "uint256" }, + { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "payoutAmount", "type": "uint256" } + ], + "name": "RedeemBond", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "TermsSet", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "Unpaused", "type": "event" }, + { "stateMutability": "payable", "type": "fallback" }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [{ "internalType": "bytes32", "name": "seperator", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [{ "internalType": "bytes32", "name": "typehash", "type": "bytes32" }], + "stateMutability": "pure", + "type": "function" + }, + { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bondDepo", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bondPrice", + "outputs": [{ "internalType": "uint256", "name": "price_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "name": "bonds", + "outputs": [ + { "internalType": "uint256", "name": "payoutAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "payoutAlreadyClaimed", "type": "uint256" }, + { "internalType": "uint256", "name": "principalPaid", "type": "uint256" }, + { "internalType": "uint40", "name": "vestingStart", "type": "uint40" }, + { "internalType": "uint40", "name": "localVestingTerm", "type": "uint40" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, + { "internalType": "bool", "name": "stake", "type": "bool" } + ], + "name": "calculateAmountIn", + "outputs": [{ "internalType": "uint256", "name": "amountIn", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, + { "internalType": "bool", "name": "stake", "type": "bool" } + ], + "name": "calculateAmountOut", + "outputs": [{ "internalType": "uint256", "name": "amountOut", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "capacity", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "capacityIsPayout", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "bondID", "type": "uint256" }], + "name": "claimPayout", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dao", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "minAmountOut", "type": "uint256" }, + { "internalType": "address", "name": "depositor", "type": "address" }, + { "internalType": "bool", "name": "stake", "type": "bool" } + ], + "name": "depositEth", + "outputs": [ + { "internalType": "uint256", "name": "payout", "type": "uint256" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "minAmountOut", "type": "uint256" }, + { "internalType": "address", "name": "depositor", "type": "address" }, + { "internalType": "bool", "name": "stake", "type": "bool" } + ], + "name": "depositWeth", + "outputs": [ + { "internalType": "uint256", "name": "payout", "type": "uint256" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "minAmountOut", "type": "uint256" }, + { "internalType": "address", "name": "depositor", "type": "address" }, + { "internalType": "bool", "name": "stake", "type": "bool" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "depositWethSigned", + "outputs": [ + { "internalType": "uint256", "name": "payout", "type": "uint256" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "endTime", + "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenID", "type": "uint256" }], + "name": "exists", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }], + "name": "getApproved", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "globalVestingTerm", + "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governanceIsLocked", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "halfLife", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "string", "name": "name_", "type": "string" }, + { "internalType": "address", "name": "governance_", "type": "address" }, + { "internalType": "address", "name": "solace_", "type": "address" }, + { "internalType": "address", "name": "xsLocker_", "type": "address" }, + { "internalType": "address", "name": "pool_", "type": "address" }, + { "internalType": "address", "name": "dao_", "type": "address" }, + { "internalType": "address", "name": "principal_", "type": "address" }, + { "internalType": "bool", "name": "isPermittable_", "type": "bool" }, + { "internalType": "address", "name": "bondDepo_", "type": "address" } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "operator", "type": "address" } + ], + "name": "isApprovedForAll", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isPermittable", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastPriceUpdate", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "lockGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "maxPayout", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minimumPrice", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextPrice", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenID", "type": "uint256" }], + "name": "nonces", + "outputs": [{ "internalType": "uint256", "name": "nonce", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numBonds", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }], + "name": "ownerOf", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "paused", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingGovernance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "priceAdjDenom", + "outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "priceAdjNum", + "outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "principal", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolFeeBps", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "name": "safeTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "solace_", "type": "address" }, + { "internalType": "address", "name": "xsLocker_", "type": "address" }, + { "internalType": "address", "name": "pool_", "type": "address" }, + { "internalType": "address", "name": "dao_", "type": "address" }, + { "internalType": "address", "name": "principal_", "type": "address" }, + { "internalType": "bool", "name": "isPermittable_", "type": "bool" }, + { "internalType": "address", "name": "bondDepo_", "type": "address" } + ], + "name": "setAddresses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "operator", "type": "address" }, + { "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "protocolFee", "type": "uint256" }], + "name": "setFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "pendingGovernance_", "type": "address" }], + "name": "setPendingGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "startPrice", "type": "uint256" }, + { "internalType": "uint256", "name": "minimumPrice", "type": "uint256" }, + { "internalType": "uint256", "name": "maxPayout", "type": "uint256" }, + { "internalType": "uint128", "name": "priceAdjNum", "type": "uint128" }, + { "internalType": "uint128", "name": "priceAdjDenom", "type": "uint128" }, + { "internalType": "uint256", "name": "capacity", "type": "uint256" }, + { "internalType": "bool", "name": "capacityIsPayout", "type": "bool" }, + { "internalType": "uint40", "name": "startTime", "type": "uint40" }, + { "internalType": "uint40", "name": "endTime", "type": "uint40" }, + { "internalType": "uint40", "name": "globalVestingTerm", "type": "uint40" }, + { "internalType": "uint40", "name": "halfLife", "type": "uint40" } + ], + "internalType": "struct BondTellerEth.Terms", + "name": "terms", + "type": "tuple" + } + ], + "name": "setTerms", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "solace", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "startTime", + "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "termsSet", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "index", "type": "uint256" }], + "name": "tokenByIndex", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "uint256", "name": "index", "type": "uint256" } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenID", "type": "uint256" }], + "name": "tokenURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "name": "transfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "underwritingPool", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "xsLocker", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "stateMutability": "payable", "type": "receive" } +] diff --git a/src/apps/solace/contracts/abis/bond-teller-matic.json b/src/apps/solace/contracts/abis/bond-teller-matic.json new file mode 100644 index 000000000..a8cc175f1 --- /dev/null +++ b/src/apps/solace/contracts/abis/bond-teller-matic.json @@ -0,0 +1,642 @@ +[ + { "anonymous": false, "inputs": [], "name": "AddressesSet", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, + { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" }], + "name": "BaseURISet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "uint256", "name": "lockID", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "principalAmount", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "payoutAmount", "type": "uint256" }, + { "indexed": false, "internalType": "uint40", "name": "vestingStart", "type": "uint40" }, + { "indexed": false, "internalType": "uint40", "name": "vestingTime", "type": "uint40" } + ], + "name": "CreateBond", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "FeesSet", "type": "event" }, + { "anonymous": false, "inputs": [], "name": "GovernanceLocked", "type": "event" }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "pendingGovernance", "type": "address" }], + "name": "GovernancePending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "oldGovernance", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "newGovernance", "type": "address" } + ], + "name": "GovernanceTransferred", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "Paused", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "uint256", "name": "bondID", "type": "uint256" }, + { "indexed": false, "internalType": "address", "name": "recipient", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "payoutAmount", "type": "uint256" } + ], + "name": "RedeemBond", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "TermsSet", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "Unpaused", "type": "event" }, + { "stateMutability": "payable", "type": "fallback" }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [{ "internalType": "bytes32", "name": "seperator", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [{ "internalType": "bytes32", "name": "typehash", "type": "bytes32" }], + "stateMutability": "pure", + "type": "function" + }, + { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bondDepo", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "bondPrice", + "outputs": [{ "internalType": "uint256", "name": "price_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "name": "bonds", + "outputs": [ + { "internalType": "uint256", "name": "payoutAmount", "type": "uint256" }, + { "internalType": "uint256", "name": "payoutAlreadyClaimed", "type": "uint256" }, + { "internalType": "uint256", "name": "principalPaid", "type": "uint256" }, + { "internalType": "uint40", "name": "vestingStart", "type": "uint40" }, + { "internalType": "uint40", "name": "localVestingTerm", "type": "uint40" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountOut", "type": "uint256" }, + { "internalType": "bool", "name": "stake", "type": "bool" } + ], + "name": "calculateAmountIn", + "outputs": [{ "internalType": "uint256", "name": "amountIn", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amountIn", "type": "uint256" }, + { "internalType": "bool", "name": "stake", "type": "bool" } + ], + "name": "calculateAmountOut", + "outputs": [{ "internalType": "uint256", "name": "amountOut", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "capacity", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "capacityIsPayout", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "bondID", "type": "uint256" }], + "name": "claimPayout", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "dao", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "minAmountOut", "type": "uint256" }, + { "internalType": "address", "name": "depositor", "type": "address" }, + { "internalType": "bool", "name": "stake", "type": "bool" } + ], + "name": "depositMatic", + "outputs": [ + { "internalType": "uint256", "name": "payout", "type": "uint256" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "minAmountOut", "type": "uint256" }, + { "internalType": "address", "name": "depositor", "type": "address" }, + { "internalType": "bool", "name": "stake", "type": "bool" } + ], + "name": "depositWmatic", + "outputs": [ + { "internalType": "uint256", "name": "payout", "type": "uint256" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "minAmountOut", "type": "uint256" }, + { "internalType": "address", "name": "depositor", "type": "address" }, + { "internalType": "bool", "name": "stake", "type": "bool" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "depositWmaticSigned", + "outputs": [ + { "internalType": "uint256", "name": "payout", "type": "uint256" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "endTime", + "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenID", "type": "uint256" }], + "name": "exists", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }], + "name": "getApproved", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "globalVestingTerm", + "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governanceIsLocked", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "halfLife", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "string", "name": "name_", "type": "string" }, + { "internalType": "address", "name": "governance_", "type": "address" }, + { "internalType": "address", "name": "solace_", "type": "address" }, + { "internalType": "address", "name": "xsLocker_", "type": "address" }, + { "internalType": "address", "name": "pool_", "type": "address" }, + { "internalType": "address", "name": "dao_", "type": "address" }, + { "internalType": "address", "name": "principal_", "type": "address" }, + { "internalType": "bool", "name": "isPermittable_", "type": "bool" }, + { "internalType": "address", "name": "bondDepo_", "type": "address" } + ], + "name": "initialize", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "operator", "type": "address" } + ], + "name": "isApprovedForAll", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isPermittable", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "lastPriceUpdate", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "lockGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "maxPayout", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "minimumPrice", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "nextPrice", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenID", "type": "uint256" }], + "name": "nonces", + "outputs": [{ "internalType": "uint256", "name": "nonce", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numBonds", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }], + "name": "ownerOf", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "paused", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingGovernance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "priceAdjDenom", + "outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "priceAdjNum", + "outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "principal", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "protocolFeeBps", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "name": "safeTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "solace_", "type": "address" }, + { "internalType": "address", "name": "xsLocker_", "type": "address" }, + { "internalType": "address", "name": "pool_", "type": "address" }, + { "internalType": "address", "name": "dao_", "type": "address" }, + { "internalType": "address", "name": "principal_", "type": "address" }, + { "internalType": "bool", "name": "isPermittable_", "type": "bool" }, + { "internalType": "address", "name": "bondDepo_", "type": "address" } + ], + "name": "setAddresses", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "operator", "type": "address" }, + { "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "protocolFee", "type": "uint256" }], + "name": "setFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "pendingGovernance_", "type": "address" }], + "name": "setPendingGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "components": [ + { "internalType": "uint256", "name": "startPrice", "type": "uint256" }, + { "internalType": "uint256", "name": "minimumPrice", "type": "uint256" }, + { "internalType": "uint256", "name": "maxPayout", "type": "uint256" }, + { "internalType": "uint128", "name": "priceAdjNum", "type": "uint128" }, + { "internalType": "uint128", "name": "priceAdjDenom", "type": "uint128" }, + { "internalType": "uint256", "name": "capacity", "type": "uint256" }, + { "internalType": "bool", "name": "capacityIsPayout", "type": "bool" }, + { "internalType": "uint40", "name": "startTime", "type": "uint40" }, + { "internalType": "uint40", "name": "endTime", "type": "uint40" }, + { "internalType": "uint40", "name": "globalVestingTerm", "type": "uint40" }, + { "internalType": "uint40", "name": "halfLife", "type": "uint40" } + ], + "internalType": "struct BondTellerMatic.Terms", + "name": "terms", + "type": "tuple" + } + ], + "name": "setTerms", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "solace", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "startTime", + "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "termsSet", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "index", "type": "uint256" }], + "name": "tokenByIndex", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "uint256", "name": "index", "type": "uint256" } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenID", "type": "uint256" }], + "name": "tokenURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "name": "transfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "underwritingPool", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "xsLocker", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { "stateMutability": "payable", "type": "receive" } +] diff --git a/src/apps/solace/contracts/abis/erc-20.json b/src/apps/solace/contracts/abis/erc-20.json new file mode 100644 index 000000000..b22dc6c2b --- /dev/null +++ b/src/apps/solace/contracts/abis/erc-20.json @@ -0,0 +1,126 @@ +[ + { + "inputs": [ + { "internalType": "string", "name": "name_", "type": "string" }, + { "internalType": "string", "name": "symbol_", "type": "string" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" } + ], + "name": "allowance", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } + ], + "name": "decreaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "addedValue", "type": "uint256" } + ], + "name": "increaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/src/apps/solace/contracts/abis/scp.json b/src/apps/solace/contracts/abis/scp.json new file mode 100644 index 000000000..1b5370562 --- /dev/null +++ b/src/apps/solace/contracts/abis/scp.json @@ -0,0 +1,396 @@ +[ + { + "inputs": [ + { "internalType": "address", "name": "governance_", "type": "address" }, + { "internalType": "address", "name": "registry_", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "user", "type": "address" }], + "name": "CooldownStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "user", "type": "address" }], + "name": "CooldownStopped", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "uint40", "name": "cooldownMin", "type": "uint40" }, + { "indexed": false, "internalType": "uint40", "name": "cooldownMax", "type": "uint40" } + ], + "name": "CooldownWindowSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "depositor", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "indexed": true, "internalType": "uint256", "name": "shares", "type": "uint256" } + ], + "name": "DepositMade", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" }], + "name": "FundsSent", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "GovernanceLocked", "type": "event" }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "pendingGovernance", "type": "address" }], + "name": "GovernancePending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "oldGovernance", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "newGovernance", "type": "address" } + ], + "name": "GovernanceTransferred", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "Paused", "type": "event" }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "requestor", "type": "address" }], + "name": "RequestorAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "requestor", "type": "address" }], + "name": "RequestorRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "Unpaused", "type": "event" }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "withdrawer", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "WithdrawalMade", + "type": "event" + }, + { "stateMutability": "payable", "type": "fallback" }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "address", "name": "requestor", "type": "address" }], + "name": "addRequestor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" } + ], + "name": "allowance", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], + "name": "canTransfer", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], + "name": "canWithdraw", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cooldownMax", + "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "cooldownMin", + "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], + "name": "cooldownStart", + "outputs": [{ "internalType": "uint40", "name": "", "type": "uint40" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } + ], + "name": "decreaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "depositEth", + "outputs": [{ "internalType": "uint256", "name": "shares", "type": "uint256" }], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "name": "depositWeth", + "outputs": [{ "internalType": "uint256", "name": "shares", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governanceIsLocked", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "addedValue", "type": "uint256" } + ], + "name": "increaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "dst", "type": "address" }], + "name": "isRequestor", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "lockGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "address", "name": "user", "type": "address" }], + "name": "maxRedeemableShares", + "outputs": [{ "internalType": "uint256", "name": "shares", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }], + "name": "nonces", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "pause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "paused", + "outputs": [{ "internalType": "bool", "name": "paused_", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingGovernance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "pricePerShare", + "outputs": [{ "internalType": "uint256", "name": "price", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "requestor", "type": "address" }], + "name": "removeRequestor", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "name": "requestEth", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint40", "name": "cooldownMin_", "type": "uint40" }, + { "internalType": "uint40", "name": "cooldownMax_", "type": "uint40" } + ], + "name": "setCooldownWindow", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "pendingGovernance_", "type": "address" }], + "name": "setPendingGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { "inputs": [], "name": "startCooldown", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { "inputs": [], "name": "stopCooldown", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalAssets", + "outputs": [{ "internalType": "uint256", "name": "assets", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { "inputs": [], "name": "unpause", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "uint256", "name": "shares", "type": "uint256" }], + "name": "withdrawEth", + "outputs": [{ "internalType": "uint256", "name": "value", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "shares", "type": "uint256" }], + "name": "withdrawWeth", + "outputs": [{ "internalType": "uint256", "name": "value", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { "stateMutability": "payable", "type": "receive" } +] diff --git a/src/apps/solace/contracts/abis/solace-cover-product-v-2.json b/src/apps/solace/contracts/abis/solace-cover-product-v-2.json new file mode 100644 index 000000000..cc516a22e --- /dev/null +++ b/src/apps/solace/contracts/abis/solace-cover-product-v-2.json @@ -0,0 +1,734 @@ +[ + { + "inputs": [ + { "internalType": "address", "name": "governance_", "type": "address" }, + { "internalType": "address", "name": "registry_", "type": "address" }, + { "internalType": "string", "name": "asset_", "type": "string" }, + { "internalType": "string", "name": "domain_", "type": "string" }, + { "internalType": "string", "name": "version_", "type": "string" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, + { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "string", "name": "asset", "type": "string" }], + "name": "AssetSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" }], + "name": "BaseURISet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "chargeCycle", "type": "uint256" }], + "name": "ChargeCycleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "cooldownPeriod", "type": "uint256" }], + "name": "CooldownPeriodSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "startTime", "type": "uint256" } + ], + "name": "CooldownStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }], + "name": "CooldownStopped", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "DepositMade", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "GovernanceLocked", "type": "event" }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "pendingGovernance", "type": "address" }], + "name": "GovernancePending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "oldGovernance", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "newGovernance", "type": "address" } + ], + "name": "GovernanceTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "bool", "name": "isReferralOn", "type": "bool" }], + "name": "IsReferralOnSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "uint256", "name": "maxRateNum", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "maxRateDenom", "type": "uint256" } + ], + "name": "MaxRateSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "bool", "name": "pause", "type": "bool" }], + "name": "PauseSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "name": "PolicyCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "name": "PolicyDeactivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "activeCoverLimit", "type": "uint256" }], + "name": "PolicyManagerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "name": "PolicyUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "PremiumCharged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "actualPremium", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "chargedPremium", "type": "uint256" } + ], + "name": "PremiumPartiallyCharged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "referralReward", "type": "uint256" }], + "name": "ReferralRewardSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "rewardEarner", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "rewardPointsEarned", "type": "uint256" } + ], + "name": "ReferralRewardsEarned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "referralThreshold", "type": "uint256" }], + "name": "ReferralThresholdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "registry", "type": "address" }], + "name": "RegistrySet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amountGifted", "type": "uint256" } + ], + "name": "RewardPointsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "chainId", "type": "uint256" }], + "name": "SupportedChainRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "chainId", "type": "uint256" }], + "name": "SupportedChainSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "WithdrawMade", + "type": "event" + }, + { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "address", "name": "policyholder", "type": "address" }], + "name": "accountBalanceOf", + "outputs": [{ "internalType": "uint256", "name": "balance", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "policyholder_", "type": "address" }, + { "internalType": "uint256", "name": "coverLimit_", "type": "uint256" }, + { "internalType": "uint256", "name": "amount_", "type": "uint256" }, + { "internalType": "bytes", "name": "referralCode_", "type": "bytes" }, + { "internalType": "uint256[]", "name": "chains_", "type": "uint256[]" } + ], + "name": "activatePolicy", + "outputs": [{ "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "activeCoverLimit", + "outputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256[]", "name": "supportedChains", "type": "uint256[]" }], + "name": "addSupportedChains", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "asset", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "availableCoverCapacity", + "outputs": [{ "internalType": "uint256", "name": "availableCoverCapacity_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "chargeCycle", + "outputs": [{ "internalType": "uint256", "name": "chargeCycle_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address[]", "name": "holders", "type": "address[]" }, + { "internalType": "uint256[]", "name": "premiums", "type": "uint256[]" } + ], + "name": "chargePremiums", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cooldownPeriod", + "outputs": [{ "internalType": "uint256", "name": "cooldownPeriod_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "policyholder_", "type": "address" }], + "name": "cooldownStart", + "outputs": [{ "internalType": "uint256", "name": "cooldownStart_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "policyID_", "type": "uint256" }], + "name": "coverLimitOf", + "outputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "deactivatePolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "address", "name": "policyholder", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }], + "name": "getApproved", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "chainIndex", "type": "uint256" }], + "name": "getChain", + "outputs": [{ "internalType": "uint256", "name": "chainId", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "name": "getPolicyChainInfo", + "outputs": [{ "internalType": "uint256[]", "name": "policyChains", "type": "uint256[]" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes", "name": "referralCode", "type": "bytes" }], + "name": "getReferrerFromReferralCode", + "outputs": [{ "internalType": "address", "name": "referrer", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governanceIsLocked", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "operator", "type": "address" } + ], + "name": "isApprovedForAll", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "policyholder", "type": "address" }], + "name": "isReferralCodeUsed", + "outputs": [{ "internalType": "bool", "name": "isReferralCodeUsed_", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes", "name": "referralCode", "type": "bytes" }], + "name": "isReferralCodeValid", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isReferralOn", + "outputs": [{ "internalType": "bool", "name": "isReferralOn_", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "chainId", "type": "uint256" }], + "name": "isSupportedChain", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "lockGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "maxCover", + "outputs": [{ "internalType": "uint256", "name": "cover", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxRate", + "outputs": [ + { "internalType": "uint256", "name": "maxRateNum_", "type": "uint256" }, + { "internalType": "uint256", "name": "maxRateDenom_", "type": "uint256" } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "coverLimit", "type": "uint256" }], + "name": "minRequiredAccountBalance", + "outputs": [{ "internalType": "uint256", "name": "minRequiredAccountBalance_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "numSupportedChains", + "outputs": [{ "internalType": "uint256", "name": "count", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }], + "name": "ownerOf", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingGovernance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "policyCount", + "outputs": [{ "internalType": "uint256", "name": "count", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "policyholder_", "type": "address" }], + "name": "policyOf", + "outputs": [{ "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "policyID_", "type": "uint256" }], + "name": "policyStatus", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "policyholder_", "type": "address" }], + "name": "premiumsPaidOf", + "outputs": [{ "internalType": "uint256", "name": "premiumsPaid_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "referralReward", + "outputs": [{ "internalType": "uint256", "name": "referralReward_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "referralThreshold", + "outputs": [{ "internalType": "uint256", "name": "referralThreshold_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registry", + "outputs": [{ "internalType": "address", "name": "registry_", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "chainId", "type": "uint256" }], + "name": "removeSupportedChain", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "policyholder_", "type": "address" }], + "name": "rewardPointsOf", + "outputs": [{ "internalType": "uint256", "name": "rewardPoints_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "riskManager", + "outputs": [{ "internalType": "address", "name": "riskManager_", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "operator", "type": "address" }, + { "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "string", "name": "assetName", "type": "string" }], + "name": "setAsset", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "string", "name": "baseURI_", "type": "string" }], + "name": "setBaseURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "chargeCycle_", "type": "uint256" }], + "name": "setChargeCycle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "cooldownPeriod_", "type": "uint256" }], + "name": "setCooldownPeriod", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bool", "name": "isReferralOn_", "type": "bool" }], + "name": "setIsReferralOn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "maxRateNum_", "type": "uint256" }, + { "internalType": "uint256", "name": "maxRateDenom_", "type": "uint256" } + ], + "name": "setMaxRate", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bool", "name": "paused_", "type": "bool" }], + "name": "setPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "pendingGovernance_", "type": "address" }], + "name": "setPendingGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "referralReward_", "type": "uint256" }], + "name": "setReferralReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "referralThreshhold_", "type": "uint256" }], + "name": "setReferralThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "registry_", "type": "address" }], + "name": "setRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "policyholder_", "type": "address" }, + { "internalType": "uint256", "name": "rewardPoints_", "type": "uint256" } + ], + "name": "setRewardPoints", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "name": "tokenURI", + "outputs": [{ "internalType": "string", "name": "tokenURI_", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "newCoverLimit_", "type": "uint256" }, + { "internalType": "bytes", "name": "referralCode_", "type": "bytes" } + ], + "name": "updateCoverLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256[]", "name": "policyChains", "type": "uint256[]" }], + "name": "updatePolicyChainInfo", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } +] diff --git a/src/apps/solace/contracts/abis/solace-cover-product.json b/src/apps/solace/contracts/abis/solace-cover-product.json new file mode 100644 index 000000000..7ab93c648 --- /dev/null +++ b/src/apps/solace/contracts/abis/solace-cover-product.json @@ -0,0 +1,662 @@ +[ + { + "inputs": [ + { "internalType": "address", "name": "governance_", "type": "address" }, + { "internalType": "address", "name": "registry_", "type": "address" }, + { "internalType": "string", "name": "domain_", "type": "string" }, + { "internalType": "string", "name": "version_", "type": "string" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, + { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" }], + "name": "BaseURISet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "chargeCycle", "type": "uint256" }], + "name": "ChargeCycleSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "cooldownPeriod", "type": "uint256" }], + "name": "CooldownPeriodSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "startTime", "type": "uint256" } + ], + "name": "CooldownStarted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }], + "name": "CooldownStopped", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "DepositMade", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "GovernanceLocked", "type": "event" }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "pendingGovernance", "type": "address" }], + "name": "GovernancePending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "oldGovernance", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "newGovernance", "type": "address" } + ], + "name": "GovernanceTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "bool", "name": "isReferralOn", "type": "bool" }], + "name": "IsReferralOnSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "maxRateDenom", "type": "uint256" }], + "name": "MaxRateDenomSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "maxRateNum", "type": "uint256" }], + "name": "MaxRateNumSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "bool", "name": "pause", "type": "bool" }], + "name": "PauseSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "name": "PolicyCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "name": "PolicyDeactivated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "activeCoverLimit", "type": "uint256" }], + "name": "PolicyManagerUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "name": "PolicyUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "PremiumCharged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "actualPremium", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "chargedPremium", "type": "uint256" } + ], + "name": "PremiumPartiallyCharged", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "referralReward", "type": "uint256" }], + "name": "ReferralRewardSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "rewardEarner", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "rewardPointsEarned", "type": "uint256" } + ], + "name": "ReferralRewardsEarned", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "referralThreshold", "type": "uint256" }], + "name": "ReferralThresholdSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "registry", "type": "address" }], + "name": "RegistrySet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amountGifted", "type": "uint256" } + ], + "name": "RewardPointsSet", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "policyholder", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "WithdrawMade", + "type": "event" + }, + { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "address", "name": "policyholder", "type": "address" }], + "name": "accountBalanceOf", + "outputs": [{ "internalType": "uint256", "name": "balance", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "policyholder_", "type": "address" }, + { "internalType": "uint256", "name": "coverLimit_", "type": "uint256" }, + { "internalType": "uint256", "name": "amount_", "type": "uint256" }, + { "internalType": "bytes", "name": "referralCode_", "type": "bytes" } + ], + "name": "activatePolicy", + "outputs": [{ "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "activeCoverLimit", + "outputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "availableCoverCapacity", + "outputs": [{ "internalType": "uint256", "name": "availableCoverCapacity_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "chargeCycle", + "outputs": [{ "internalType": "uint256", "name": "chargeCycle_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address[]", "name": "holders", "type": "address[]" }, + { "internalType": "uint256[]", "name": "premiums", "type": "uint256[]" } + ], + "name": "chargePremiums", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "cooldownPeriod", + "outputs": [{ "internalType": "uint256", "name": "cooldownPeriod_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "policyholder_", "type": "address" }], + "name": "cooldownStart", + "outputs": [{ "internalType": "uint256", "name": "cooldownStart_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "policyID_", "type": "uint256" }], + "name": "coverLimitOf", + "outputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "deactivatePolicy", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "address", "name": "policyholder", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "deposit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }], + "name": "getApproved", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes", "name": "referralCode", "type": "bytes" }], + "name": "getReferrerFromReferralCode", + "outputs": [{ "internalType": "address", "name": "referrer", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governanceIsLocked", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "operator", "type": "address" } + ], + "name": "isApprovedForAll", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "policyholder", "type": "address" }], + "name": "isReferralCodeUsed", + "outputs": [{ "internalType": "bool", "name": "isReferralCodeUsed_", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes", "name": "referralCode", "type": "bytes" }], + "name": "isReferralCodeValid", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isReferralOn", + "outputs": [{ "internalType": "bool", "name": "isReferralOn_", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "lockGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "maxCover", + "outputs": [{ "internalType": "uint256", "name": "cover", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxRateDenom", + "outputs": [{ "internalType": "uint256", "name": "maxRateDenom_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "maxRateNum", + "outputs": [{ "internalType": "uint256", "name": "maxRateNum_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "coverLimit", "type": "uint256" }], + "name": "minRequiredAccountBalance", + "outputs": [{ "internalType": "uint256", "name": "minRequiredAccountBalance_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }], + "name": "ownerOf", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingGovernance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "policyCount", + "outputs": [{ "internalType": "uint256", "name": "count", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "policyholder_", "type": "address" }], + "name": "policyOf", + "outputs": [{ "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "policyID_", "type": "uint256" }], + "name": "policyStatus", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "policyholder_", "type": "address" }], + "name": "premiumsPaidOf", + "outputs": [{ "internalType": "uint256", "name": "premiumsPaid_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "referralReward", + "outputs": [{ "internalType": "uint256", "name": "referralReward_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "referralThreshold", + "outputs": [{ "internalType": "uint256", "name": "referralThreshold_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "registry", + "outputs": [{ "internalType": "address", "name": "registry_", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "policyholder_", "type": "address" }], + "name": "rewardPointsOf", + "outputs": [{ "internalType": "uint256", "name": "rewardPoints_", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "riskManager", + "outputs": [{ "internalType": "address", "name": "riskManager_", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "operator", "type": "address" }, + { "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "string", "name": "baseURI_", "type": "string" }], + "name": "setBaseURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "chargeCycle_", "type": "uint256" }], + "name": "setChargeCycle", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "cooldownPeriod_", "type": "uint256" }], + "name": "setCooldownPeriod", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bool", "name": "isReferralOn_", "type": "bool" }], + "name": "setIsReferralOn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "maxRateDenom_", "type": "uint256" }], + "name": "setMaxRateDenom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "maxRateNum_", "type": "uint256" }], + "name": "setMaxRateNum", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bool", "name": "paused_", "type": "bool" }], + "name": "setPaused", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "pendingGovernance_", "type": "address" }], + "name": "setPendingGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "referralReward_", "type": "uint256" }], + "name": "setReferralReward", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "referralThreshhold_", "type": "uint256" }], + "name": "setReferralThreshold", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "registry_", "type": "address" }], + "name": "setRegistry", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "policyholder_", "type": "address" }, + { "internalType": "uint256", "name": "rewardPoints_", "type": "uint256" } + ], + "name": "setRewardPoints", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "policyID", "type": "uint256" }], + "name": "tokenURI", + "outputs": [{ "internalType": "string", "name": "tokenURI_", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "newCoverLimit_", "type": "uint256" }, + { "internalType": "bytes", "name": "referralCode_", "type": "bytes" } + ], + "name": "updateCoverLimit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { "inputs": [], "name": "withdraw", "outputs": [], "stateMutability": "nonpayable", "type": "function" } +] diff --git a/src/apps/solace/contracts/abis/solace.json b/src/apps/solace/contracts/abis/solace.json new file mode 100644 index 000000000..d2583949e --- /dev/null +++ b/src/apps/solace/contracts/abis/solace.json @@ -0,0 +1,248 @@ +[ + { + "inputs": [{ "internalType": "address", "name": "governance_", "type": "address" }], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "GovernanceLocked", "type": "event" }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "pendingGovernance", "type": "address" }], + "name": "GovernancePending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "oldGovernance", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "newGovernance", "type": "address" } + ], + "name": "GovernanceTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": true, "internalType": "address", "name": "minter", "type": "address" }], + "name": "MinterAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": true, "internalType": "address", "name": "minter", "type": "address" }], + "name": "MinterRemoved", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "address", "name": "minter", "type": "address" }], + "name": "addMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" } + ], + "name": "allowance", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } + ], + "name": "decreaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governanceIsLocked", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "addedValue", "type": "uint256" } + ], + "name": "increaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "isMinter", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "lockGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "address", "name": "account", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "mint", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }], + "name": "nonces", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingGovernance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "minter", "type": "address" }], + "name": "removeMinter", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "pendingGovernance_", "type": "address" }], + "name": "setPendingGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/src/apps/solace/contracts/abis/staking-rewards.json b/src/apps/solace/contracts/abis/staking-rewards.json new file mode 100644 index 000000000..734c28e9e --- /dev/null +++ b/src/apps/solace/contracts/abis/staking-rewards.json @@ -0,0 +1,282 @@ +[ + { + "inputs": [ + { "internalType": "address", "name": "governance_", "type": "address" }, + { "internalType": "address", "name": "solace_", "type": "address" }, + { "internalType": "address", "name": "xsLocker_", "type": "address" }, + { "internalType": "uint256", "name": "rewardPerSecond_", "type": "uint256" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "uint256", "name": "startTime", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "endTime", "type": "uint256" } + ], + "name": "FarmTimesSet", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "GovernanceLocked", "type": "event" }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "pendingGovernance", "type": "address" }], + "name": "GovernancePending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "oldGovernance", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "newGovernance", "type": "address" } + ], + "name": "GovernanceTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": true, "internalType": "uint256", "name": "xsLockID", "type": "uint256" }], + "name": "LockUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "rewardPerSecond", "type": "uint256" }], + "name": "RewardsSet", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "Updated", "type": "event" }, + { + "inputs": [], + "name": "MAX_LOCK_DURATION", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_LOCK_MULTIPLIER_BPS", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "UNLOCKED_MULTIPLIER_BPS", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "accRewardPerShare", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "uint256", "name": "xsLockID", "type": "uint256" }], + "name": "compoundLock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "xsLockIDs", "type": "uint256[]" }, + { "internalType": "uint256", "name": "increasedLockID", "type": "uint256" } + ], + "name": "compoundLocks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "endTime", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "from", "type": "uint256" }, + { "internalType": "uint256", "name": "to", "type": "uint256" } + ], + "name": "getRewardAmountDistributed", + "outputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governanceIsLocked", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "xsLockID", "type": "uint256" }], + "name": "harvestLock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256[]", "name": "xsLockIDs", "type": "uint256[]" }], + "name": "harvestLocks", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "lastRewardTime", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "lockGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "pendingGovernance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "xsLockID", "type": "uint256" }], + "name": "pendingRewardsOfLock", + "outputs": [{ "internalType": "uint256", "name": "reward", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "xsLockID", "type": "uint256" }, + { "internalType": "address", "name": "oldOwner", "type": "address" }, + { "internalType": "address", "name": "newOwner", "type": "address" }, + { + "components": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "end", "type": "uint256" } + ], + "internalType": "struct Lock", + "name": "oldLock", + "type": "tuple" + }, + { + "components": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "end", "type": "uint256" } + ], + "internalType": "struct Lock", + "name": "newLock", + "type": "tuple" + } + ], + "name": "registerLockEvent", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "token", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "address", "name": "receiver", "type": "address" } + ], + "name": "rescueTokens", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "rewardPerSecond", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "pendingGovernance_", "type": "address" }], + "name": "setPendingGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "rewardPerSecond_", "type": "uint256" }], + "name": "setRewards", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "startTime_", "type": "uint256" }, + { "internalType": "uint256", "name": "endTime_", "type": "uint256" } + ], + "name": "setTimes", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "solace", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "xsLockID", "type": "uint256" }], + "name": "stakedLockInfo", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { "internalType": "uint256", "name": "rewardDebt", "type": "uint256" }, + { "internalType": "uint256", "name": "unpaidRewards", "type": "uint256" }, + { "internalType": "address", "name": "owner", "type": "address" } + ], + "internalType": "struct IStakingRewards.StakedLockInfo", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "startTime", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "update", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "valueStaked", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "xsLocker", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + } +] diff --git a/src/apps/solace/contracts/abis/x-solacev-1.json b/src/apps/solace/contracts/abis/x-solacev-1.json new file mode 100644 index 000000000..4c51a8e42 --- /dev/null +++ b/src/apps/solace/contracts/abis/x-solacev-1.json @@ -0,0 +1,277 @@ +[ + { + "inputs": [ + { "internalType": "address", "name": "governance_", "type": "address" }, + { "internalType": "address", "name": "solace_", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "GovernanceLocked", "type": "event" }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "pendingGovernance", "type": "address" }], + "name": "GovernancePending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "oldGovernance", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "newGovernance", "type": "address" } + ], + "name": "GovernanceTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amountSolace", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "amountXSolace", "type": "uint256" } + ], + "name": "Staked", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "user", "type": "address" }, + { "indexed": false, "internalType": "uint256", "name": "amountSolace", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "amountXSolace", "type": "uint256" } + ], + "name": "Unstaked", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [{ "internalType": "bytes32", "name": "", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" } + ], + "name": "allowance", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "approve", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "amount", "type": "uint256" }], + "name": "burn", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "decimals", + "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } + ], + "name": "decreaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governanceIsLocked", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "addedValue", "type": "uint256" } + ], + "name": "increaseAllowance", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { "inputs": [], "name": "lockGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }], + "name": "nonces", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingGovernance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "value", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "pendingGovernance_", "type": "address" }], + "name": "setPendingGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "solace", + "outputs": [{ "internalType": "address", "name": "solace_", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "amountSolace", "type": "uint256" }], + "name": "solaceToXSolace", + "outputs": [{ "internalType": "uint256", "name": "amountXSolace", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "amountSolace", "type": "uint256" }], + "name": "stake", + "outputs": [{ "internalType": "uint256", "name": "amountXSolace", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "depositor", "type": "address" }, + { "internalType": "uint256", "name": "amountSolace", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "stakeSigned", + "outputs": [{ "internalType": "uint256", "name": "amountXSolace", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transfer", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "sender", "type": "address" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "amountXSolace", "type": "uint256" }], + "name": "unstake", + "outputs": [{ "internalType": "uint256", "name": "amountSolace", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "amountXSolace", "type": "uint256" }], + "name": "xSolaceToSolace", + "outputs": [{ "internalType": "uint256", "name": "amountSolace", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + } +] diff --git a/src/apps/solace/contracts/abis/xs-locker.json b/src/apps/solace/contracts/abis/xs-locker.json new file mode 100644 index 000000000..a8599f0a4 --- /dev/null +++ b/src/apps/solace/contracts/abis/xs-locker.json @@ -0,0 +1,512 @@ +[ + { + "inputs": [ + { "internalType": "address", "name": "governance_", "type": "address" }, + { "internalType": "address", "name": "solace_", "type": "address" } + ], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "approved", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "Approval", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "operator", "type": "address" }, + { "indexed": false, "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "ApprovalForAll", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "string", "name": "baseURI", "type": "string" }], + "name": "BaseURISet", + "type": "event" + }, + { "anonymous": false, "inputs": [], "name": "GovernanceLocked", "type": "event" }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "pendingGovernance", "type": "address" }], + "name": "GovernancePending", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "address", "name": "oldGovernance", "type": "address" }, + { "indexed": false, "internalType": "address", "name": "newGovernance", "type": "address" } + ], + "name": "GovernanceTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "uint256", "name": "xsLockID", "type": "uint256" }], + "name": "LockCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "uint256", "name": "xsLockID", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "end", "type": "uint256" } + ], + "name": "LockUpdated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, + { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, + { "indexed": true, "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "Transfer", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { "indexed": false, "internalType": "uint256", "name": "xsLockID", "type": "uint256" }, + { "indexed": false, "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "Withdrawl", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "listener", "type": "address" }], + "name": "xsLockListenerAdded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [{ "indexed": false, "internalType": "address", "name": "listener", "type": "address" }], + "name": "xsLockListenerRemoved", + "type": "event" + }, + { + "inputs": [], + "name": "DOMAIN_SEPARATOR", + "outputs": [{ "internalType": "bytes32", "name": "seperator", "type": "bytes32" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "MAX_LOCK_DURATION", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "PERMIT_TYPEHASH", + "outputs": [{ "internalType": "bytes32", "name": "typehash", "type": "bytes32" }], + "stateMutability": "pure", + "type": "function" + }, + { "inputs": [], "name": "acceptGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "address", "name": "listener", "type": "address" }], + "name": "addXsLockListener", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "approve", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }], + "name": "balanceOf", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "baseURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "end", "type": "uint256" } + ], + "name": "createLock", + "outputs": [{ "internalType": "uint256", "name": "xsLockID", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "end", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "createLockSigned", + "outputs": [{ "internalType": "uint256", "name": "xsLockID", "type": "uint256" }], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenID", "type": "uint256" }], + "name": "exists", + "outputs": [{ "internalType": "bool", "name": "status", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "xsLockID", "type": "uint256" }, + { "internalType": "uint256", "name": "end", "type": "uint256" } + ], + "name": "extendLock", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }], + "name": "getApproved", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getXsLockListeners", + "outputs": [{ "internalType": "address[]", "name": "listeners_", "type": "address[]" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "governanceIsLocked", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "xsLockID", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "increaseAmount", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "xsLockID", "type": "uint256" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "increaseAmountSigned", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "address", "name": "operator", "type": "address" } + ], + "name": "isApprovedForAll", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "xsLockID", "type": "uint256" }], + "name": "isLocked", + "outputs": [{ "internalType": "bool", "name": "locked", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { "inputs": [], "name": "lockGovernance", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, + { + "inputs": [{ "internalType": "uint256", "name": "xsLockID", "type": "uint256" }], + "name": "locks", + "outputs": [ + { + "components": [ + { "internalType": "uint256", "name": "amount", "type": "uint256" }, + { "internalType": "uint256", "name": "end", "type": "uint256" } + ], + "internalType": "struct Lock", + "name": "lock_", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "name", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenID", "type": "uint256" }], + "name": "nonces", + "outputs": [{ "internalType": "uint256", "name": "nonce", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }], + "name": "ownerOf", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "pendingGovernance", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "spender", "type": "address" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" }, + { "internalType": "uint256", "name": "deadline", "type": "uint256" }, + { "internalType": "uint8", "name": "v", "type": "uint8" }, + { "internalType": "bytes32", "name": "r", "type": "bytes32" }, + { "internalType": "bytes32", "name": "s", "type": "bytes32" } + ], + "name": "permit", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "listener", "type": "address" }], + "name": "removeXsLockListener", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "name": "safeTransfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" }, + { "internalType": "bytes", "name": "_data", "type": "bytes" } + ], + "name": "safeTransferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "operator", "type": "address" }, + { "internalType": "bool", "name": "approved", "type": "bool" } + ], + "name": "setApprovalForAll", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "string", "name": "baseURI_", "type": "string" }], + "name": "setBaseURI", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "pendingGovernance_", "type": "address" }], + "name": "setPendingGovernance", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "solace", + "outputs": [{ "internalType": "address", "name": "", "type": "address" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], + "name": "stakedBalance", + "outputs": [{ "internalType": "uint256", "name": "balance", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }], + "name": "supportsInterface", + "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "symbol", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "xsLockID", "type": "uint256" }], + "name": "timeLeft", + "outputs": [{ "internalType": "uint256", "name": "time", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "index", "type": "uint256" }], + "name": "tokenByIndex", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "owner", "type": "address" }, + { "internalType": "uint256", "name": "index", "type": "uint256" } + ], + "name": "tokenOfOwnerByIndex", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [{ "internalType": "uint256", "name": "tokenID", "type": "uint256" }], + "name": "tokenURI", + "outputs": [{ "internalType": "string", "name": "", "type": "string" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalNumLocks", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "totalSupply", + "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenID", "type": "uint256" } + ], + "name": "transfer", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "address", "name": "from", "type": "address" }, + { "internalType": "address", "name": "to", "type": "address" }, + { "internalType": "uint256", "name": "tokenId", "type": "uint256" } + ], + "name": "transferFrom", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "xsLockID", "type": "uint256" }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "name": "withdraw", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256", "name": "xsLockID", "type": "uint256" }, + { "internalType": "address", "name": "recipient", "type": "address" }, + { "internalType": "uint256", "name": "amount", "type": "uint256" } + ], + "name": "withdrawInPart", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { "internalType": "uint256[]", "name": "xsLockIDs", "type": "uint256[]" }, + { "internalType": "address", "name": "recipient", "type": "address" } + ], + "name": "withdrawMany", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + } +] diff --git a/src/apps/solace/contracts/ethers/BondTellerErc20.ts b/src/apps/solace/contracts/ethers/BondTellerErc20.ts new file mode 100644 index 000000000..00b0ac3e6 --- /dev/null +++ b/src/apps/solace/contracts/ethers/BondTellerErc20.ts @@ -0,0 +1,1775 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export declare namespace BondTellerErc20 { + export type TermsStruct = { + startPrice: BigNumberish; + minimumPrice: BigNumberish; + maxPayout: BigNumberish; + priceAdjNum: BigNumberish; + priceAdjDenom: BigNumberish; + capacity: BigNumberish; + capacityIsPayout: boolean; + startTime: BigNumberish; + endTime: BigNumberish; + globalVestingTerm: BigNumberish; + halfLife: BigNumberish; + }; + + export type TermsStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + boolean, + number, + number, + number, + number, + ] & { + startPrice: BigNumber; + minimumPrice: BigNumber; + maxPayout: BigNumber; + priceAdjNum: BigNumber; + priceAdjDenom: BigNumber; + capacity: BigNumber; + capacityIsPayout: boolean; + startTime: number; + endTime: number; + globalVestingTerm: number; + halfLife: number; + }; +} + +export interface BondTellerErc20Interface extends utils.Interface { + functions: { + 'DOMAIN_SEPARATOR()': FunctionFragment; + 'PERMIT_TYPEHASH()': FunctionFragment; + 'acceptGovernance()': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'baseURI()': FunctionFragment; + 'bondDepo()': FunctionFragment; + 'bondPrice()': FunctionFragment; + 'bonds(uint256)': FunctionFragment; + 'calculateAmountIn(uint256,bool)': FunctionFragment; + 'calculateAmountOut(uint256,bool)': FunctionFragment; + 'calculateMinimalProxyDeploymentAddress(bytes32)': FunctionFragment; + 'capacity()': FunctionFragment; + 'capacityIsPayout()': FunctionFragment; + 'claimPayout(uint256)': FunctionFragment; + 'clone(string,address,address,bool,bytes32)': FunctionFragment; + 'dao()': FunctionFragment; + 'deposit(uint256,uint256,address,bool)': FunctionFragment; + 'depositSigned(uint256,uint256,address,bool,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'endTime()': FunctionFragment; + 'exists(uint256)': FunctionFragment; + 'getApproved(uint256)': FunctionFragment; + 'globalVestingTerm()': FunctionFragment; + 'governance()': FunctionFragment; + 'governanceIsLocked()': FunctionFragment; + 'halfLife()': FunctionFragment; + 'initialize(string,address,address,address,address,address,address,bool,address)': FunctionFragment; + 'isApprovedForAll(address,address)': FunctionFragment; + 'isPermittable()': FunctionFragment; + 'lastPriceUpdate()': FunctionFragment; + 'lockGovernance()': FunctionFragment; + 'maxPayout()': FunctionFragment; + 'minimumPrice()': FunctionFragment; + 'name()': FunctionFragment; + 'nextPrice()': FunctionFragment; + 'nonces(uint256)': FunctionFragment; + 'numBonds()': FunctionFragment; + 'ownerOf(uint256)': FunctionFragment; + 'pause()': FunctionFragment; + 'paused()': FunctionFragment; + 'pendingGovernance()': FunctionFragment; + 'permit(address,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'priceAdjDenom()': FunctionFragment; + 'priceAdjNum()': FunctionFragment; + 'principal()': FunctionFragment; + 'protocolFeeBps()': FunctionFragment; + 'safeTransfer(address,uint256)': FunctionFragment; + 'safeTransferFrom(address,address,uint256)': FunctionFragment; + 'safeTransferFrom(address,address,uint256,bytes)': FunctionFragment; + 'setAddresses(address,address,address,address,address,bool,address)': FunctionFragment; + 'setApprovalForAll(address,bool)': FunctionFragment; + 'setFees(uint256)': FunctionFragment; + 'setPendingGovernance(address)': FunctionFragment; + 'setTerms((uint256,uint256,uint256,uint128,uint128,uint256,bool,uint40,uint40,uint40,uint40))': FunctionFragment; + 'solace()': FunctionFragment; + 'startTime()': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + 'symbol()': FunctionFragment; + 'termsSet()': FunctionFragment; + 'tokenByIndex(uint256)': FunctionFragment; + 'tokenOfOwnerByIndex(address,uint256)': FunctionFragment; + 'tokenURI(uint256)': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'transfer(address,uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + 'underwritingPool()': FunctionFragment; + 'unpause()': FunctionFragment; + 'xsLocker()': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'DOMAIN_SEPARATOR' + | 'PERMIT_TYPEHASH' + | 'acceptGovernance' + | 'approve' + | 'balanceOf' + | 'baseURI' + | 'bondDepo' + | 'bondPrice' + | 'bonds' + | 'calculateAmountIn' + | 'calculateAmountOut' + | 'calculateMinimalProxyDeploymentAddress' + | 'capacity' + | 'capacityIsPayout' + | 'claimPayout' + | 'clone' + | 'dao' + | 'deposit' + | 'depositSigned' + | 'endTime' + | 'exists' + | 'getApproved' + | 'globalVestingTerm' + | 'governance' + | 'governanceIsLocked' + | 'halfLife' + | 'initialize' + | 'isApprovedForAll' + | 'isPermittable' + | 'lastPriceUpdate' + | 'lockGovernance' + | 'maxPayout' + | 'minimumPrice' + | 'name' + | 'nextPrice' + | 'nonces' + | 'numBonds' + | 'ownerOf' + | 'pause' + | 'paused' + | 'pendingGovernance' + | 'permit' + | 'priceAdjDenom' + | 'priceAdjNum' + | 'principal' + | 'protocolFeeBps' + | 'safeTransfer' + | 'safeTransferFrom(address,address,uint256)' + | 'safeTransferFrom(address,address,uint256,bytes)' + | 'setAddresses' + | 'setApprovalForAll' + | 'setFees' + | 'setPendingGovernance' + | 'setTerms' + | 'solace' + | 'startTime' + | 'supportsInterface' + | 'symbol' + | 'termsSet' + | 'tokenByIndex' + | 'tokenOfOwnerByIndex' + | 'tokenURI' + | 'totalSupply' + | 'transfer' + | 'transferFrom' + | 'underwritingPool' + | 'unpause' + | 'xsLocker', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'DOMAIN_SEPARATOR', values?: undefined): string; + encodeFunctionData(functionFragment: 'PERMIT_TYPEHASH', values?: undefined): string; + encodeFunctionData(functionFragment: 'acceptGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'baseURI', values?: undefined): string; + encodeFunctionData(functionFragment: 'bondDepo', values?: undefined): string; + encodeFunctionData(functionFragment: 'bondPrice', values?: undefined): string; + encodeFunctionData(functionFragment: 'bonds', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'calculateAmountIn', values: [BigNumberish, boolean]): string; + encodeFunctionData(functionFragment: 'calculateAmountOut', values: [BigNumberish, boolean]): string; + encodeFunctionData(functionFragment: 'calculateMinimalProxyDeploymentAddress', values: [BytesLike]): string; + encodeFunctionData(functionFragment: 'capacity', values?: undefined): string; + encodeFunctionData(functionFragment: 'capacityIsPayout', values?: undefined): string; + encodeFunctionData(functionFragment: 'claimPayout', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'clone', values: [string, string, string, boolean, BytesLike]): string; + encodeFunctionData(functionFragment: 'dao', values?: undefined): string; + encodeFunctionData(functionFragment: 'deposit', values: [BigNumberish, BigNumberish, string, boolean]): string; + encodeFunctionData( + functionFragment: 'depositSigned', + values: [BigNumberish, BigNumberish, string, boolean, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'endTime', values?: undefined): string; + encodeFunctionData(functionFragment: 'exists', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'getApproved', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'globalVestingTerm', values?: undefined): string; + encodeFunctionData(functionFragment: 'governance', values?: undefined): string; + encodeFunctionData(functionFragment: 'governanceIsLocked', values?: undefined): string; + encodeFunctionData(functionFragment: 'halfLife', values?: undefined): string; + encodeFunctionData( + functionFragment: 'initialize', + values: [string, string, string, string, string, string, string, boolean, string], + ): string; + encodeFunctionData(functionFragment: 'isApprovedForAll', values: [string, string]): string; + encodeFunctionData(functionFragment: 'isPermittable', values?: undefined): string; + encodeFunctionData(functionFragment: 'lastPriceUpdate', values?: undefined): string; + encodeFunctionData(functionFragment: 'lockGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'maxPayout', values?: undefined): string; + encodeFunctionData(functionFragment: 'minimumPrice', values?: undefined): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'nextPrice', values?: undefined): string; + encodeFunctionData(functionFragment: 'nonces', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'numBonds', values?: undefined): string; + encodeFunctionData(functionFragment: 'ownerOf', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'pause', values?: undefined): string; + encodeFunctionData(functionFragment: 'paused', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingGovernance', values?: undefined): string; + encodeFunctionData( + functionFragment: 'permit', + values: [string, BigNumberish, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'priceAdjDenom', values?: undefined): string; + encodeFunctionData(functionFragment: 'priceAdjNum', values?: undefined): string; + encodeFunctionData(functionFragment: 'principal', values?: undefined): string; + encodeFunctionData(functionFragment: 'protocolFeeBps', values?: undefined): string; + encodeFunctionData(functionFragment: 'safeTransfer', values: [string, BigNumberish]): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256)', + values: [string, string, BigNumberish], + ): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', + values: [string, string, BigNumberish, BytesLike], + ): string; + encodeFunctionData( + functionFragment: 'setAddresses', + values: [string, string, string, string, string, boolean, string], + ): string; + encodeFunctionData(functionFragment: 'setApprovalForAll', values: [string, boolean]): string; + encodeFunctionData(functionFragment: 'setFees', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setPendingGovernance', values: [string]): string; + encodeFunctionData(functionFragment: 'setTerms', values: [BondTellerErc20.TermsStruct]): string; + encodeFunctionData(functionFragment: 'solace', values?: undefined): string; + encodeFunctionData(functionFragment: 'startTime', values?: undefined): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [BytesLike]): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'termsSet', values?: undefined): string; + encodeFunctionData(functionFragment: 'tokenByIndex', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'tokenOfOwnerByIndex', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'tokenURI', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'transfer', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'underwritingPool', values?: undefined): string; + encodeFunctionData(functionFragment: 'unpause', values?: undefined): string; + encodeFunctionData(functionFragment: 'xsLocker', values?: undefined): string; + + decodeFunctionResult(functionFragment: 'DOMAIN_SEPARATOR', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'PERMIT_TYPEHASH', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'acceptGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'baseURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'bondDepo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'bondPrice', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'bonds', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'calculateAmountIn', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'calculateAmountOut', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'calculateMinimalProxyDeploymentAddress', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'capacity', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'capacityIsPayout', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'claimPayout', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'clone', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'dao', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositSigned', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'endTime', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'exists', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getApproved', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'globalVestingTerm', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governanceIsLocked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'halfLife', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isApprovedForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isPermittable', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lastPriceUpdate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'maxPayout', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'minimumPrice', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'nextPrice', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'nonces', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'numBonds', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'ownerOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pause', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'permit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'priceAdjDenom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'priceAdjNum', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'principal', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'protocolFeeBps', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setAddresses', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setApprovalForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setFees', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setTerms', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'solace', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'startTime', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'termsSet', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenByIndex', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenOfOwnerByIndex', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'underwritingPool', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'unpause', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'xsLocker', data: BytesLike): Result; + + events: { + 'AddressesSet()': EventFragment; + 'Approval(address,address,uint256)': EventFragment; + 'ApprovalForAll(address,address,bool)': EventFragment; + 'BaseURISet(string)': EventFragment; + 'ContractDeployed(address)': EventFragment; + 'CreateBond(uint256,uint256,uint256,uint40,uint40)': EventFragment; + 'FeesSet()': EventFragment; + 'GovernanceLocked()': EventFragment; + 'GovernancePending(address)': EventFragment; + 'GovernanceTransferred(address,address)': EventFragment; + 'Paused()': EventFragment; + 'RedeemBond(uint256,address,uint256)': EventFragment; + 'TermsSet()': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + 'Unpaused()': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'AddressesSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ApprovalForAll'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'BaseURISet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ContractDeployed'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CreateBond'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'FeesSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceLocked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernancePending'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Paused'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RedeemBond'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'TermsSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Unpaused'): EventFragment; +} + +export interface AddressesSetEventObject {} +export type AddressesSetEvent = TypedEvent<[], AddressesSetEventObject>; + +export type AddressesSetEventFilter = TypedEventFilter; + +export interface ApprovalEventObject { + owner: string; + approved: string; + tokenId: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface ApprovalForAllEventObject { + owner: string; + operator: string; + approved: boolean; +} +export type ApprovalForAllEvent = TypedEvent<[string, string, boolean], ApprovalForAllEventObject>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export interface BaseURISetEventObject { + baseURI: string; +} +export type BaseURISetEvent = TypedEvent<[string], BaseURISetEventObject>; + +export type BaseURISetEventFilter = TypedEventFilter; + +export interface ContractDeployedEventObject { + deployment: string; +} +export type ContractDeployedEvent = TypedEvent<[string], ContractDeployedEventObject>; + +export type ContractDeployedEventFilter = TypedEventFilter; + +export interface CreateBondEventObject { + lockID: BigNumber; + principalAmount: BigNumber; + payoutAmount: BigNumber; + vestingStart: number; + vestingTime: number; +} +export type CreateBondEvent = TypedEvent<[BigNumber, BigNumber, BigNumber, number, number], CreateBondEventObject>; + +export type CreateBondEventFilter = TypedEventFilter; + +export interface FeesSetEventObject {} +export type FeesSetEvent = TypedEvent<[], FeesSetEventObject>; + +export type FeesSetEventFilter = TypedEventFilter; + +export interface GovernanceLockedEventObject {} +export type GovernanceLockedEvent = TypedEvent<[], GovernanceLockedEventObject>; + +export type GovernanceLockedEventFilter = TypedEventFilter; + +export interface GovernancePendingEventObject { + pendingGovernance: string; +} +export type GovernancePendingEvent = TypedEvent<[string], GovernancePendingEventObject>; + +export type GovernancePendingEventFilter = TypedEventFilter; + +export interface GovernanceTransferredEventObject { + oldGovernance: string; + newGovernance: string; +} +export type GovernanceTransferredEvent = TypedEvent<[string, string], GovernanceTransferredEventObject>; + +export type GovernanceTransferredEventFilter = TypedEventFilter; + +export interface PausedEventObject {} +export type PausedEvent = TypedEvent<[], PausedEventObject>; + +export type PausedEventFilter = TypedEventFilter; + +export interface RedeemBondEventObject { + bondID: BigNumber; + recipient: string; + payoutAmount: BigNumber; +} +export type RedeemBondEvent = TypedEvent<[BigNumber, string, BigNumber], RedeemBondEventObject>; + +export type RedeemBondEventFilter = TypedEventFilter; + +export interface TermsSetEventObject {} +export type TermsSetEvent = TypedEvent<[], TermsSetEventObject>; + +export type TermsSetEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + tokenId: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface UnpausedEventObject {} +export type UnpausedEvent = TypedEvent<[], UnpausedEventObject>; + +export type UnpausedEventFilter = TypedEventFilter; + +export interface BondTellerErc20 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: BondTellerErc20Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string] & { seperator: string }>; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise<[string] & { typehash: string }>; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + baseURI(overrides?: CallOverrides): Promise<[string]>; + + bondDepo(overrides?: CallOverrides): Promise<[string]>; + + bondPrice(overrides?: CallOverrides): Promise<[BigNumber] & { price_: BigNumber }>; + + bonds( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, number, number] & { + payoutAmount: BigNumber; + payoutAlreadyClaimed: BigNumber; + principalPaid: BigNumber; + vestingStart: number; + localVestingTerm: number; + } + >; + + calculateAmountIn( + amountOut: BigNumberish, + stake: boolean, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { amountIn: BigNumber }>; + + calculateAmountOut( + amountIn: BigNumberish, + stake: boolean, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { amountOut: BigNumber }>; + + calculateMinimalProxyDeploymentAddress(salt: BytesLike, overrides?: CallOverrides): Promise<[string]>; + + capacity(overrides?: CallOverrides): Promise<[BigNumber]>; + + capacityIsPayout(overrides?: CallOverrides): Promise<[boolean]>; + + claimPayout( + bondID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + clone( + name_: string, + governance_: string, + principal_: string, + isPermittable_: boolean, + salt_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dao(overrides?: CallOverrides): Promise<[string]>; + + deposit( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise<[number]>; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + globalVestingTerm(overrides?: CallOverrides): Promise<[number]>; + + governance(overrides?: CallOverrides): Promise<[string]>; + + governanceIsLocked(overrides?: CallOverrides): Promise<[boolean]>; + + halfLife(overrides?: CallOverrides): Promise<[BigNumber]>; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise<[boolean]>; + + isPermittable(overrides?: CallOverrides): Promise<[boolean]>; + + lastPriceUpdate(overrides?: CallOverrides): Promise<[BigNumber]>; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxPayout(overrides?: CallOverrides): Promise<[BigNumber]>; + + minimumPrice(overrides?: CallOverrides): Promise<[BigNumber]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + nextPrice(overrides?: CallOverrides): Promise<[BigNumber]>; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber] & { nonce: BigNumber }>; + + numBonds(overrides?: CallOverrides): Promise<[BigNumber]>; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise<[boolean]>; + + pendingGovernance(overrides?: CallOverrides): Promise<[string]>; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise<[BigNumber]>; + + priceAdjNum(overrides?: CallOverrides): Promise<[BigNumber]>; + + principal(overrides?: CallOverrides): Promise<[string]>; + + protocolFeeBps(overrides?: CallOverrides): Promise<[BigNumber]>; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setFees( + protocolFee: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTerms( + terms: BondTellerErc20.TermsStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise<[string]>; + + startTime(overrides?: CallOverrides): Promise<[number]>; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + termsSet(overrides?: CallOverrides): Promise<[boolean]>; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underwritingPool(overrides?: CallOverrides): Promise<[string]>; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + xsLocker(overrides?: CallOverrides): Promise<[string]>; + }; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + bondDepo(overrides?: CallOverrides): Promise; + + bondPrice(overrides?: CallOverrides): Promise; + + bonds( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, number, number] & { + payoutAmount: BigNumber; + payoutAlreadyClaimed: BigNumber; + principalPaid: BigNumber; + vestingStart: number; + localVestingTerm: number; + } + >; + + calculateAmountIn(amountOut: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + calculateAmountOut(amountIn: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + calculateMinimalProxyDeploymentAddress(salt: BytesLike, overrides?: CallOverrides): Promise; + + capacity(overrides?: CallOverrides): Promise; + + capacityIsPayout(overrides?: CallOverrides): Promise; + + claimPayout( + bondID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + clone( + name_: string, + governance_: string, + principal_: string, + isPermittable_: boolean, + salt_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dao(overrides?: CallOverrides): Promise; + + deposit( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + globalVestingTerm(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + halfLife(overrides?: CallOverrides): Promise; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isPermittable(overrides?: CallOverrides): Promise; + + lastPriceUpdate(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxPayout(overrides?: CallOverrides): Promise; + + minimumPrice(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nextPrice(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + numBonds(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise; + + priceAdjNum(overrides?: CallOverrides): Promise; + + principal(overrides?: CallOverrides): Promise; + + protocolFeeBps(overrides?: CallOverrides): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setFees( + protocolFee: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTerms( + terms: BondTellerErc20.TermsStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + termsSet(overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underwritingPool(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + + callStatic: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: CallOverrides): Promise; + + approve(to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + bondDepo(overrides?: CallOverrides): Promise; + + bondPrice(overrides?: CallOverrides): Promise; + + bonds( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, number, number] & { + payoutAmount: BigNumber; + payoutAlreadyClaimed: BigNumber; + principalPaid: BigNumber; + vestingStart: number; + localVestingTerm: number; + } + >; + + calculateAmountIn(amountOut: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + calculateAmountOut(amountIn: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + calculateMinimalProxyDeploymentAddress(salt: BytesLike, overrides?: CallOverrides): Promise; + + capacity(overrides?: CallOverrides): Promise; + + capacityIsPayout(overrides?: CallOverrides): Promise; + + claimPayout(bondID: BigNumberish, overrides?: CallOverrides): Promise; + + clone( + name_: string, + governance_: string, + principal_: string, + isPermittable_: boolean, + salt_: BytesLike, + overrides?: CallOverrides, + ): Promise; + + dao(overrides?: CallOverrides): Promise; + + deposit( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { payout: BigNumber; tokenID: BigNumber }>; + + depositSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { payout: BigNumber; tokenID: BigNumber }>; + + endTime(overrides?: CallOverrides): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + globalVestingTerm(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + halfLife(overrides?: CallOverrides): Promise; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: CallOverrides, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isPermittable(overrides?: CallOverrides): Promise; + + lastPriceUpdate(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: CallOverrides): Promise; + + maxPayout(overrides?: CallOverrides): Promise; + + minimumPrice(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nextPrice(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + numBonds(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pause(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise; + + priceAdjNum(overrides?: CallOverrides): Promise; + + principal(overrides?: CallOverrides): Promise; + + protocolFeeBps(overrides?: CallOverrides): Promise; + + safeTransfer(to: string, tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: CallOverrides, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: CallOverrides, + ): Promise; + + setApprovalForAll(operator: string, approved: boolean, overrides?: CallOverrides): Promise; + + setFees(protocolFee: BigNumberish, overrides?: CallOverrides): Promise; + + setPendingGovernance(pendingGovernance_: string, overrides?: CallOverrides): Promise; + + setTerms(terms: BondTellerErc20.TermsStruct, overrides?: CallOverrides): Promise; + + solace(overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + termsSet(overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer(to: string, tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom(from: string, to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + underwritingPool(overrides?: CallOverrides): Promise; + + unpause(overrides?: CallOverrides): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + }; + + filters: { + 'AddressesSet()'(): AddressesSetEventFilter; + AddressesSet(): AddressesSetEventFilter; + + 'Approval(address,address,uint256)'( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null, + ): ApprovalEventFilter; + Approval(owner?: string | null, approved?: string | null, tokenId?: BigNumberish | null): ApprovalEventFilter; + + 'ApprovalForAll(address,address,bool)'( + owner?: string | null, + operator?: string | null, + approved?: null, + ): ApprovalForAllEventFilter; + ApprovalForAll(owner?: string | null, operator?: string | null, approved?: null): ApprovalForAllEventFilter; + + 'BaseURISet(string)'(baseURI?: null): BaseURISetEventFilter; + BaseURISet(baseURI?: null): BaseURISetEventFilter; + + 'ContractDeployed(address)'(deployment?: string | null): ContractDeployedEventFilter; + ContractDeployed(deployment?: string | null): ContractDeployedEventFilter; + + 'CreateBond(uint256,uint256,uint256,uint40,uint40)'( + lockID?: BigNumberish | null, + principalAmount?: null, + payoutAmount?: null, + vestingStart?: null, + vestingTime?: null, + ): CreateBondEventFilter; + CreateBond( + lockID?: BigNumberish | null, + principalAmount?: null, + payoutAmount?: null, + vestingStart?: null, + vestingTime?: null, + ): CreateBondEventFilter; + + 'FeesSet()'(): FeesSetEventFilter; + FeesSet(): FeesSetEventFilter; + + 'GovernanceLocked()'(): GovernanceLockedEventFilter; + GovernanceLocked(): GovernanceLockedEventFilter; + + 'GovernancePending(address)'(pendingGovernance?: null): GovernancePendingEventFilter; + GovernancePending(pendingGovernance?: null): GovernancePendingEventFilter; + + 'GovernanceTransferred(address,address)'( + oldGovernance?: null, + newGovernance?: null, + ): GovernanceTransferredEventFilter; + GovernanceTransferred(oldGovernance?: null, newGovernance?: null): GovernanceTransferredEventFilter; + + 'Paused()'(): PausedEventFilter; + Paused(): PausedEventFilter; + + 'RedeemBond(uint256,address,uint256)'( + bondID?: BigNumberish | null, + recipient?: null, + payoutAmount?: null, + ): RedeemBondEventFilter; + RedeemBond(bondID?: BigNumberish | null, recipient?: null, payoutAmount?: null): RedeemBondEventFilter; + + 'TermsSet()'(): TermsSetEventFilter; + TermsSet(): TermsSetEventFilter; + + 'Transfer(address,address,uint256)'( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null, + ): TransferEventFilter; + Transfer(from?: string | null, to?: string | null, tokenId?: BigNumberish | null): TransferEventFilter; + + 'Unpaused()'(): UnpausedEventFilter; + Unpaused(): UnpausedEventFilter; + }; + + estimateGas: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + bondDepo(overrides?: CallOverrides): Promise; + + bondPrice(overrides?: CallOverrides): Promise; + + bonds(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + calculateAmountIn(amountOut: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + calculateAmountOut(amountIn: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + calculateMinimalProxyDeploymentAddress(salt: BytesLike, overrides?: CallOverrides): Promise; + + capacity(overrides?: CallOverrides): Promise; + + capacityIsPayout(overrides?: CallOverrides): Promise; + + claimPayout(bondID: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + clone( + name_: string, + governance_: string, + principal_: string, + isPermittable_: boolean, + salt_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dao(overrides?: CallOverrides): Promise; + + deposit( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + globalVestingTerm(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + halfLife(overrides?: CallOverrides): Promise; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isPermittable(overrides?: CallOverrides): Promise; + + lastPriceUpdate(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxPayout(overrides?: CallOverrides): Promise; + + minimumPrice(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nextPrice(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + numBonds(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise; + + priceAdjNum(overrides?: CallOverrides): Promise; + + principal(overrides?: CallOverrides): Promise; + + protocolFeeBps(overrides?: CallOverrides): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setFees(protocolFee: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTerms( + terms: BondTellerErc20.TermsStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + termsSet(overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underwritingPool(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + bondDepo(overrides?: CallOverrides): Promise; + + bondPrice(overrides?: CallOverrides): Promise; + + bonds(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + calculateAmountIn( + amountOut: BigNumberish, + stake: boolean, + overrides?: CallOverrides, + ): Promise; + + calculateAmountOut( + amountIn: BigNumberish, + stake: boolean, + overrides?: CallOverrides, + ): Promise; + + calculateMinimalProxyDeploymentAddress(salt: BytesLike, overrides?: CallOverrides): Promise; + + capacity(overrides?: CallOverrides): Promise; + + capacityIsPayout(overrides?: CallOverrides): Promise; + + claimPayout( + bondID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + clone( + name_: string, + governance_: string, + principal_: string, + isPermittable_: boolean, + salt_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dao(overrides?: CallOverrides): Promise; + + deposit( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + globalVestingTerm(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + halfLife(overrides?: CallOverrides): Promise; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isPermittable(overrides?: CallOverrides): Promise; + + lastPriceUpdate(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxPayout(overrides?: CallOverrides): Promise; + + minimumPrice(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nextPrice(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + numBonds(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise; + + priceAdjNum(overrides?: CallOverrides): Promise; + + principal(overrides?: CallOverrides): Promise; + + protocolFeeBps(overrides?: CallOverrides): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setFees( + protocolFee: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTerms( + terms: BondTellerErc20.TermsStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + termsSet(overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underwritingPool(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/solace/contracts/ethers/BondTellerEth.ts b/src/apps/solace/contracts/ethers/BondTellerEth.ts new file mode 100644 index 000000000..616244a7b --- /dev/null +++ b/src/apps/solace/contracts/ethers/BondTellerEth.ts @@ -0,0 +1,1740 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export declare namespace BondTellerEth { + export type TermsStruct = { + startPrice: BigNumberish; + minimumPrice: BigNumberish; + maxPayout: BigNumberish; + priceAdjNum: BigNumberish; + priceAdjDenom: BigNumberish; + capacity: BigNumberish; + capacityIsPayout: boolean; + startTime: BigNumberish; + endTime: BigNumberish; + globalVestingTerm: BigNumberish; + halfLife: BigNumberish; + }; + + export type TermsStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + boolean, + number, + number, + number, + number, + ] & { + startPrice: BigNumber; + minimumPrice: BigNumber; + maxPayout: BigNumber; + priceAdjNum: BigNumber; + priceAdjDenom: BigNumber; + capacity: BigNumber; + capacityIsPayout: boolean; + startTime: number; + endTime: number; + globalVestingTerm: number; + halfLife: number; + }; +} + +export interface BondTellerEthInterface extends utils.Interface { + functions: { + 'DOMAIN_SEPARATOR()': FunctionFragment; + 'PERMIT_TYPEHASH()': FunctionFragment; + 'acceptGovernance()': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'baseURI()': FunctionFragment; + 'bondDepo()': FunctionFragment; + 'bondPrice()': FunctionFragment; + 'bonds(uint256)': FunctionFragment; + 'calculateAmountIn(uint256,bool)': FunctionFragment; + 'calculateAmountOut(uint256,bool)': FunctionFragment; + 'capacity()': FunctionFragment; + 'capacityIsPayout()': FunctionFragment; + 'claimPayout(uint256)': FunctionFragment; + 'dao()': FunctionFragment; + 'depositEth(uint256,address,bool)': FunctionFragment; + 'depositWeth(uint256,uint256,address,bool)': FunctionFragment; + 'depositWethSigned(uint256,uint256,address,bool,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'endTime()': FunctionFragment; + 'exists(uint256)': FunctionFragment; + 'getApproved(uint256)': FunctionFragment; + 'globalVestingTerm()': FunctionFragment; + 'governance()': FunctionFragment; + 'governanceIsLocked()': FunctionFragment; + 'halfLife()': FunctionFragment; + 'initialize(string,address,address,address,address,address,address,bool,address)': FunctionFragment; + 'isApprovedForAll(address,address)': FunctionFragment; + 'isPermittable()': FunctionFragment; + 'lastPriceUpdate()': FunctionFragment; + 'lockGovernance()': FunctionFragment; + 'maxPayout()': FunctionFragment; + 'minimumPrice()': FunctionFragment; + 'name()': FunctionFragment; + 'nextPrice()': FunctionFragment; + 'nonces(uint256)': FunctionFragment; + 'numBonds()': FunctionFragment; + 'ownerOf(uint256)': FunctionFragment; + 'pause()': FunctionFragment; + 'paused()': FunctionFragment; + 'pendingGovernance()': FunctionFragment; + 'permit(address,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'priceAdjDenom()': FunctionFragment; + 'priceAdjNum()': FunctionFragment; + 'principal()': FunctionFragment; + 'protocolFeeBps()': FunctionFragment; + 'safeTransfer(address,uint256)': FunctionFragment; + 'safeTransferFrom(address,address,uint256)': FunctionFragment; + 'safeTransferFrom(address,address,uint256,bytes)': FunctionFragment; + 'setAddresses(address,address,address,address,address,bool,address)': FunctionFragment; + 'setApprovalForAll(address,bool)': FunctionFragment; + 'setFees(uint256)': FunctionFragment; + 'setPendingGovernance(address)': FunctionFragment; + 'setTerms((uint256,uint256,uint256,uint128,uint128,uint256,bool,uint40,uint40,uint40,uint40))': FunctionFragment; + 'solace()': FunctionFragment; + 'startTime()': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + 'symbol()': FunctionFragment; + 'termsSet()': FunctionFragment; + 'tokenByIndex(uint256)': FunctionFragment; + 'tokenOfOwnerByIndex(address,uint256)': FunctionFragment; + 'tokenURI(uint256)': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'transfer(address,uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + 'underwritingPool()': FunctionFragment; + 'unpause()': FunctionFragment; + 'xsLocker()': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'DOMAIN_SEPARATOR' + | 'PERMIT_TYPEHASH' + | 'acceptGovernance' + | 'approve' + | 'balanceOf' + | 'baseURI' + | 'bondDepo' + | 'bondPrice' + | 'bonds' + | 'calculateAmountIn' + | 'calculateAmountOut' + | 'capacity' + | 'capacityIsPayout' + | 'claimPayout' + | 'dao' + | 'depositEth' + | 'depositWeth' + | 'depositWethSigned' + | 'endTime' + | 'exists' + | 'getApproved' + | 'globalVestingTerm' + | 'governance' + | 'governanceIsLocked' + | 'halfLife' + | 'initialize' + | 'isApprovedForAll' + | 'isPermittable' + | 'lastPriceUpdate' + | 'lockGovernance' + | 'maxPayout' + | 'minimumPrice' + | 'name' + | 'nextPrice' + | 'nonces' + | 'numBonds' + | 'ownerOf' + | 'pause' + | 'paused' + | 'pendingGovernance' + | 'permit' + | 'priceAdjDenom' + | 'priceAdjNum' + | 'principal' + | 'protocolFeeBps' + | 'safeTransfer' + | 'safeTransferFrom(address,address,uint256)' + | 'safeTransferFrom(address,address,uint256,bytes)' + | 'setAddresses' + | 'setApprovalForAll' + | 'setFees' + | 'setPendingGovernance' + | 'setTerms' + | 'solace' + | 'startTime' + | 'supportsInterface' + | 'symbol' + | 'termsSet' + | 'tokenByIndex' + | 'tokenOfOwnerByIndex' + | 'tokenURI' + | 'totalSupply' + | 'transfer' + | 'transferFrom' + | 'underwritingPool' + | 'unpause' + | 'xsLocker', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'DOMAIN_SEPARATOR', values?: undefined): string; + encodeFunctionData(functionFragment: 'PERMIT_TYPEHASH', values?: undefined): string; + encodeFunctionData(functionFragment: 'acceptGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'baseURI', values?: undefined): string; + encodeFunctionData(functionFragment: 'bondDepo', values?: undefined): string; + encodeFunctionData(functionFragment: 'bondPrice', values?: undefined): string; + encodeFunctionData(functionFragment: 'bonds', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'calculateAmountIn', values: [BigNumberish, boolean]): string; + encodeFunctionData(functionFragment: 'calculateAmountOut', values: [BigNumberish, boolean]): string; + encodeFunctionData(functionFragment: 'capacity', values?: undefined): string; + encodeFunctionData(functionFragment: 'capacityIsPayout', values?: undefined): string; + encodeFunctionData(functionFragment: 'claimPayout', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'dao', values?: undefined): string; + encodeFunctionData(functionFragment: 'depositEth', values: [BigNumberish, string, boolean]): string; + encodeFunctionData(functionFragment: 'depositWeth', values: [BigNumberish, BigNumberish, string, boolean]): string; + encodeFunctionData( + functionFragment: 'depositWethSigned', + values: [BigNumberish, BigNumberish, string, boolean, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'endTime', values?: undefined): string; + encodeFunctionData(functionFragment: 'exists', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'getApproved', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'globalVestingTerm', values?: undefined): string; + encodeFunctionData(functionFragment: 'governance', values?: undefined): string; + encodeFunctionData(functionFragment: 'governanceIsLocked', values?: undefined): string; + encodeFunctionData(functionFragment: 'halfLife', values?: undefined): string; + encodeFunctionData( + functionFragment: 'initialize', + values: [string, string, string, string, string, string, string, boolean, string], + ): string; + encodeFunctionData(functionFragment: 'isApprovedForAll', values: [string, string]): string; + encodeFunctionData(functionFragment: 'isPermittable', values?: undefined): string; + encodeFunctionData(functionFragment: 'lastPriceUpdate', values?: undefined): string; + encodeFunctionData(functionFragment: 'lockGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'maxPayout', values?: undefined): string; + encodeFunctionData(functionFragment: 'minimumPrice', values?: undefined): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'nextPrice', values?: undefined): string; + encodeFunctionData(functionFragment: 'nonces', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'numBonds', values?: undefined): string; + encodeFunctionData(functionFragment: 'ownerOf', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'pause', values?: undefined): string; + encodeFunctionData(functionFragment: 'paused', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingGovernance', values?: undefined): string; + encodeFunctionData( + functionFragment: 'permit', + values: [string, BigNumberish, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'priceAdjDenom', values?: undefined): string; + encodeFunctionData(functionFragment: 'priceAdjNum', values?: undefined): string; + encodeFunctionData(functionFragment: 'principal', values?: undefined): string; + encodeFunctionData(functionFragment: 'protocolFeeBps', values?: undefined): string; + encodeFunctionData(functionFragment: 'safeTransfer', values: [string, BigNumberish]): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256)', + values: [string, string, BigNumberish], + ): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', + values: [string, string, BigNumberish, BytesLike], + ): string; + encodeFunctionData( + functionFragment: 'setAddresses', + values: [string, string, string, string, string, boolean, string], + ): string; + encodeFunctionData(functionFragment: 'setApprovalForAll', values: [string, boolean]): string; + encodeFunctionData(functionFragment: 'setFees', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setPendingGovernance', values: [string]): string; + encodeFunctionData(functionFragment: 'setTerms', values: [BondTellerEth.TermsStruct]): string; + encodeFunctionData(functionFragment: 'solace', values?: undefined): string; + encodeFunctionData(functionFragment: 'startTime', values?: undefined): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [BytesLike]): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'termsSet', values?: undefined): string; + encodeFunctionData(functionFragment: 'tokenByIndex', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'tokenOfOwnerByIndex', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'tokenURI', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'transfer', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'underwritingPool', values?: undefined): string; + encodeFunctionData(functionFragment: 'unpause', values?: undefined): string; + encodeFunctionData(functionFragment: 'xsLocker', values?: undefined): string; + + decodeFunctionResult(functionFragment: 'DOMAIN_SEPARATOR', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'PERMIT_TYPEHASH', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'acceptGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'baseURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'bondDepo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'bondPrice', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'bonds', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'calculateAmountIn', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'calculateAmountOut', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'capacity', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'capacityIsPayout', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'claimPayout', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'dao', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositEth', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositWeth', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositWethSigned', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'endTime', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'exists', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getApproved', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'globalVestingTerm', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governanceIsLocked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'halfLife', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isApprovedForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isPermittable', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lastPriceUpdate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'maxPayout', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'minimumPrice', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'nextPrice', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'nonces', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'numBonds', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'ownerOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pause', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'permit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'priceAdjDenom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'priceAdjNum', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'principal', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'protocolFeeBps', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setAddresses', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setApprovalForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setFees', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setTerms', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'solace', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'startTime', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'termsSet', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenByIndex', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenOfOwnerByIndex', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'underwritingPool', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'unpause', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'xsLocker', data: BytesLike): Result; + + events: { + 'AddressesSet()': EventFragment; + 'Approval(address,address,uint256)': EventFragment; + 'ApprovalForAll(address,address,bool)': EventFragment; + 'BaseURISet(string)': EventFragment; + 'CreateBond(uint256,uint256,uint256,uint40,uint40)': EventFragment; + 'FeesSet()': EventFragment; + 'GovernanceLocked()': EventFragment; + 'GovernancePending(address)': EventFragment; + 'GovernanceTransferred(address,address)': EventFragment; + 'Paused()': EventFragment; + 'RedeemBond(uint256,address,uint256)': EventFragment; + 'TermsSet()': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + 'Unpaused()': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'AddressesSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ApprovalForAll'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'BaseURISet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CreateBond'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'FeesSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceLocked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernancePending'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Paused'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RedeemBond'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'TermsSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Unpaused'): EventFragment; +} + +export interface AddressesSetEventObject {} +export type AddressesSetEvent = TypedEvent<[], AddressesSetEventObject>; + +export type AddressesSetEventFilter = TypedEventFilter; + +export interface ApprovalEventObject { + owner: string; + approved: string; + tokenId: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface ApprovalForAllEventObject { + owner: string; + operator: string; + approved: boolean; +} +export type ApprovalForAllEvent = TypedEvent<[string, string, boolean], ApprovalForAllEventObject>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export interface BaseURISetEventObject { + baseURI: string; +} +export type BaseURISetEvent = TypedEvent<[string], BaseURISetEventObject>; + +export type BaseURISetEventFilter = TypedEventFilter; + +export interface CreateBondEventObject { + lockID: BigNumber; + principalAmount: BigNumber; + payoutAmount: BigNumber; + vestingStart: number; + vestingTime: number; +} +export type CreateBondEvent = TypedEvent<[BigNumber, BigNumber, BigNumber, number, number], CreateBondEventObject>; + +export type CreateBondEventFilter = TypedEventFilter; + +export interface FeesSetEventObject {} +export type FeesSetEvent = TypedEvent<[], FeesSetEventObject>; + +export type FeesSetEventFilter = TypedEventFilter; + +export interface GovernanceLockedEventObject {} +export type GovernanceLockedEvent = TypedEvent<[], GovernanceLockedEventObject>; + +export type GovernanceLockedEventFilter = TypedEventFilter; + +export interface GovernancePendingEventObject { + pendingGovernance: string; +} +export type GovernancePendingEvent = TypedEvent<[string], GovernancePendingEventObject>; + +export type GovernancePendingEventFilter = TypedEventFilter; + +export interface GovernanceTransferredEventObject { + oldGovernance: string; + newGovernance: string; +} +export type GovernanceTransferredEvent = TypedEvent<[string, string], GovernanceTransferredEventObject>; + +export type GovernanceTransferredEventFilter = TypedEventFilter; + +export interface PausedEventObject {} +export type PausedEvent = TypedEvent<[], PausedEventObject>; + +export type PausedEventFilter = TypedEventFilter; + +export interface RedeemBondEventObject { + bondID: BigNumber; + recipient: string; + payoutAmount: BigNumber; +} +export type RedeemBondEvent = TypedEvent<[BigNumber, string, BigNumber], RedeemBondEventObject>; + +export type RedeemBondEventFilter = TypedEventFilter; + +export interface TermsSetEventObject {} +export type TermsSetEvent = TypedEvent<[], TermsSetEventObject>; + +export type TermsSetEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + tokenId: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface UnpausedEventObject {} +export type UnpausedEvent = TypedEvent<[], UnpausedEventObject>; + +export type UnpausedEventFilter = TypedEventFilter; + +export interface BondTellerEth extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: BondTellerEthInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string] & { seperator: string }>; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise<[string] & { typehash: string }>; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + baseURI(overrides?: CallOverrides): Promise<[string]>; + + bondDepo(overrides?: CallOverrides): Promise<[string]>; + + bondPrice(overrides?: CallOverrides): Promise<[BigNumber] & { price_: BigNumber }>; + + bonds( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, number, number] & { + payoutAmount: BigNumber; + payoutAlreadyClaimed: BigNumber; + principalPaid: BigNumber; + vestingStart: number; + localVestingTerm: number; + } + >; + + calculateAmountIn( + amountOut: BigNumberish, + stake: boolean, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { amountIn: BigNumber }>; + + calculateAmountOut( + amountIn: BigNumberish, + stake: boolean, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { amountOut: BigNumber }>; + + capacity(overrides?: CallOverrides): Promise<[BigNumber]>; + + capacityIsPayout(overrides?: CallOverrides): Promise<[boolean]>; + + claimPayout( + bondID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dao(overrides?: CallOverrides): Promise<[string]>; + + depositEth( + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + depositWeth( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositWethSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise<[number]>; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + globalVestingTerm(overrides?: CallOverrides): Promise<[number]>; + + governance(overrides?: CallOverrides): Promise<[string]>; + + governanceIsLocked(overrides?: CallOverrides): Promise<[boolean]>; + + halfLife(overrides?: CallOverrides): Promise<[BigNumber]>; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise<[boolean]>; + + isPermittable(overrides?: CallOverrides): Promise<[boolean]>; + + lastPriceUpdate(overrides?: CallOverrides): Promise<[BigNumber]>; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxPayout(overrides?: CallOverrides): Promise<[BigNumber]>; + + minimumPrice(overrides?: CallOverrides): Promise<[BigNumber]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + nextPrice(overrides?: CallOverrides): Promise<[BigNumber]>; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber] & { nonce: BigNumber }>; + + numBonds(overrides?: CallOverrides): Promise<[BigNumber]>; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise<[boolean]>; + + pendingGovernance(overrides?: CallOverrides): Promise<[string]>; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise<[BigNumber]>; + + priceAdjNum(overrides?: CallOverrides): Promise<[BigNumber]>; + + principal(overrides?: CallOverrides): Promise<[string]>; + + protocolFeeBps(overrides?: CallOverrides): Promise<[BigNumber]>; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setFees( + protocolFee: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTerms( + terms: BondTellerEth.TermsStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise<[string]>; + + startTime(overrides?: CallOverrides): Promise<[number]>; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + termsSet(overrides?: CallOverrides): Promise<[boolean]>; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underwritingPool(overrides?: CallOverrides): Promise<[string]>; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + xsLocker(overrides?: CallOverrides): Promise<[string]>; + }; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + bondDepo(overrides?: CallOverrides): Promise; + + bondPrice(overrides?: CallOverrides): Promise; + + bonds( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, number, number] & { + payoutAmount: BigNumber; + payoutAlreadyClaimed: BigNumber; + principalPaid: BigNumber; + vestingStart: number; + localVestingTerm: number; + } + >; + + calculateAmountIn(amountOut: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + calculateAmountOut(amountIn: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + capacity(overrides?: CallOverrides): Promise; + + capacityIsPayout(overrides?: CallOverrides): Promise; + + claimPayout( + bondID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dao(overrides?: CallOverrides): Promise; + + depositEth( + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + depositWeth( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositWethSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + globalVestingTerm(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + halfLife(overrides?: CallOverrides): Promise; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isPermittable(overrides?: CallOverrides): Promise; + + lastPriceUpdate(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxPayout(overrides?: CallOverrides): Promise; + + minimumPrice(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nextPrice(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + numBonds(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise; + + priceAdjNum(overrides?: CallOverrides): Promise; + + principal(overrides?: CallOverrides): Promise; + + protocolFeeBps(overrides?: CallOverrides): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setFees( + protocolFee: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTerms( + terms: BondTellerEth.TermsStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + termsSet(overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underwritingPool(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + + callStatic: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: CallOverrides): Promise; + + approve(to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + bondDepo(overrides?: CallOverrides): Promise; + + bondPrice(overrides?: CallOverrides): Promise; + + bonds( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, number, number] & { + payoutAmount: BigNumber; + payoutAlreadyClaimed: BigNumber; + principalPaid: BigNumber; + vestingStart: number; + localVestingTerm: number; + } + >; + + calculateAmountIn(amountOut: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + calculateAmountOut(amountIn: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + capacity(overrides?: CallOverrides): Promise; + + capacityIsPayout(overrides?: CallOverrides): Promise; + + claimPayout(bondID: BigNumberish, overrides?: CallOverrides): Promise; + + dao(overrides?: CallOverrides): Promise; + + depositEth( + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { payout: BigNumber; tokenID: BigNumber }>; + + depositWeth( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { payout: BigNumber; tokenID: BigNumber }>; + + depositWethSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { payout: BigNumber; tokenID: BigNumber }>; + + endTime(overrides?: CallOverrides): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + globalVestingTerm(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + halfLife(overrides?: CallOverrides): Promise; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: CallOverrides, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isPermittable(overrides?: CallOverrides): Promise; + + lastPriceUpdate(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: CallOverrides): Promise; + + maxPayout(overrides?: CallOverrides): Promise; + + minimumPrice(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nextPrice(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + numBonds(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pause(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise; + + priceAdjNum(overrides?: CallOverrides): Promise; + + principal(overrides?: CallOverrides): Promise; + + protocolFeeBps(overrides?: CallOverrides): Promise; + + safeTransfer(to: string, tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: CallOverrides, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: CallOverrides, + ): Promise; + + setApprovalForAll(operator: string, approved: boolean, overrides?: CallOverrides): Promise; + + setFees(protocolFee: BigNumberish, overrides?: CallOverrides): Promise; + + setPendingGovernance(pendingGovernance_: string, overrides?: CallOverrides): Promise; + + setTerms(terms: BondTellerEth.TermsStruct, overrides?: CallOverrides): Promise; + + solace(overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + termsSet(overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer(to: string, tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom(from: string, to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + underwritingPool(overrides?: CallOverrides): Promise; + + unpause(overrides?: CallOverrides): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + }; + + filters: { + 'AddressesSet()'(): AddressesSetEventFilter; + AddressesSet(): AddressesSetEventFilter; + + 'Approval(address,address,uint256)'( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null, + ): ApprovalEventFilter; + Approval(owner?: string | null, approved?: string | null, tokenId?: BigNumberish | null): ApprovalEventFilter; + + 'ApprovalForAll(address,address,bool)'( + owner?: string | null, + operator?: string | null, + approved?: null, + ): ApprovalForAllEventFilter; + ApprovalForAll(owner?: string | null, operator?: string | null, approved?: null): ApprovalForAllEventFilter; + + 'BaseURISet(string)'(baseURI?: null): BaseURISetEventFilter; + BaseURISet(baseURI?: null): BaseURISetEventFilter; + + 'CreateBond(uint256,uint256,uint256,uint40,uint40)'( + lockID?: BigNumberish | null, + principalAmount?: null, + payoutAmount?: null, + vestingStart?: null, + vestingTime?: null, + ): CreateBondEventFilter; + CreateBond( + lockID?: BigNumberish | null, + principalAmount?: null, + payoutAmount?: null, + vestingStart?: null, + vestingTime?: null, + ): CreateBondEventFilter; + + 'FeesSet()'(): FeesSetEventFilter; + FeesSet(): FeesSetEventFilter; + + 'GovernanceLocked()'(): GovernanceLockedEventFilter; + GovernanceLocked(): GovernanceLockedEventFilter; + + 'GovernancePending(address)'(pendingGovernance?: null): GovernancePendingEventFilter; + GovernancePending(pendingGovernance?: null): GovernancePendingEventFilter; + + 'GovernanceTransferred(address,address)'( + oldGovernance?: null, + newGovernance?: null, + ): GovernanceTransferredEventFilter; + GovernanceTransferred(oldGovernance?: null, newGovernance?: null): GovernanceTransferredEventFilter; + + 'Paused()'(): PausedEventFilter; + Paused(): PausedEventFilter; + + 'RedeemBond(uint256,address,uint256)'( + bondID?: BigNumberish | null, + recipient?: null, + payoutAmount?: null, + ): RedeemBondEventFilter; + RedeemBond(bondID?: BigNumberish | null, recipient?: null, payoutAmount?: null): RedeemBondEventFilter; + + 'TermsSet()'(): TermsSetEventFilter; + TermsSet(): TermsSetEventFilter; + + 'Transfer(address,address,uint256)'( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null, + ): TransferEventFilter; + Transfer(from?: string | null, to?: string | null, tokenId?: BigNumberish | null): TransferEventFilter; + + 'Unpaused()'(): UnpausedEventFilter; + Unpaused(): UnpausedEventFilter; + }; + + estimateGas: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + bondDepo(overrides?: CallOverrides): Promise; + + bondPrice(overrides?: CallOverrides): Promise; + + bonds(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + calculateAmountIn(amountOut: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + calculateAmountOut(amountIn: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + capacity(overrides?: CallOverrides): Promise; + + capacityIsPayout(overrides?: CallOverrides): Promise; + + claimPayout(bondID: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + dao(overrides?: CallOverrides): Promise; + + depositEth( + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + depositWeth( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositWethSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + globalVestingTerm(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + halfLife(overrides?: CallOverrides): Promise; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isPermittable(overrides?: CallOverrides): Promise; + + lastPriceUpdate(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxPayout(overrides?: CallOverrides): Promise; + + minimumPrice(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nextPrice(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + numBonds(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise; + + priceAdjNum(overrides?: CallOverrides): Promise; + + principal(overrides?: CallOverrides): Promise; + + protocolFeeBps(overrides?: CallOverrides): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setFees(protocolFee: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTerms( + terms: BondTellerEth.TermsStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + termsSet(overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underwritingPool(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + bondDepo(overrides?: CallOverrides): Promise; + + bondPrice(overrides?: CallOverrides): Promise; + + bonds(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + calculateAmountIn( + amountOut: BigNumberish, + stake: boolean, + overrides?: CallOverrides, + ): Promise; + + calculateAmountOut( + amountIn: BigNumberish, + stake: boolean, + overrides?: CallOverrides, + ): Promise; + + capacity(overrides?: CallOverrides): Promise; + + capacityIsPayout(overrides?: CallOverrides): Promise; + + claimPayout( + bondID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dao(overrides?: CallOverrides): Promise; + + depositEth( + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + depositWeth( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositWethSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + globalVestingTerm(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + halfLife(overrides?: CallOverrides): Promise; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isPermittable(overrides?: CallOverrides): Promise; + + lastPriceUpdate(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxPayout(overrides?: CallOverrides): Promise; + + minimumPrice(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nextPrice(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + numBonds(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise; + + priceAdjNum(overrides?: CallOverrides): Promise; + + principal(overrides?: CallOverrides): Promise; + + protocolFeeBps(overrides?: CallOverrides): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setFees( + protocolFee: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTerms( + terms: BondTellerEth.TermsStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + termsSet(overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underwritingPool(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/solace/contracts/ethers/BondTellerMatic.ts b/src/apps/solace/contracts/ethers/BondTellerMatic.ts new file mode 100644 index 000000000..9e5d46857 --- /dev/null +++ b/src/apps/solace/contracts/ethers/BondTellerMatic.ts @@ -0,0 +1,1740 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export declare namespace BondTellerMatic { + export type TermsStruct = { + startPrice: BigNumberish; + minimumPrice: BigNumberish; + maxPayout: BigNumberish; + priceAdjNum: BigNumberish; + priceAdjDenom: BigNumberish; + capacity: BigNumberish; + capacityIsPayout: boolean; + startTime: BigNumberish; + endTime: BigNumberish; + globalVestingTerm: BigNumberish; + halfLife: BigNumberish; + }; + + export type TermsStructOutput = [ + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + BigNumber, + boolean, + number, + number, + number, + number, + ] & { + startPrice: BigNumber; + minimumPrice: BigNumber; + maxPayout: BigNumber; + priceAdjNum: BigNumber; + priceAdjDenom: BigNumber; + capacity: BigNumber; + capacityIsPayout: boolean; + startTime: number; + endTime: number; + globalVestingTerm: number; + halfLife: number; + }; +} + +export interface BondTellerMaticInterface extends utils.Interface { + functions: { + 'DOMAIN_SEPARATOR()': FunctionFragment; + 'PERMIT_TYPEHASH()': FunctionFragment; + 'acceptGovernance()': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'baseURI()': FunctionFragment; + 'bondDepo()': FunctionFragment; + 'bondPrice()': FunctionFragment; + 'bonds(uint256)': FunctionFragment; + 'calculateAmountIn(uint256,bool)': FunctionFragment; + 'calculateAmountOut(uint256,bool)': FunctionFragment; + 'capacity()': FunctionFragment; + 'capacityIsPayout()': FunctionFragment; + 'claimPayout(uint256)': FunctionFragment; + 'dao()': FunctionFragment; + 'depositMatic(uint256,address,bool)': FunctionFragment; + 'depositWmatic(uint256,uint256,address,bool)': FunctionFragment; + 'depositWmaticSigned(uint256,uint256,address,bool,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'endTime()': FunctionFragment; + 'exists(uint256)': FunctionFragment; + 'getApproved(uint256)': FunctionFragment; + 'globalVestingTerm()': FunctionFragment; + 'governance()': FunctionFragment; + 'governanceIsLocked()': FunctionFragment; + 'halfLife()': FunctionFragment; + 'initialize(string,address,address,address,address,address,address,bool,address)': FunctionFragment; + 'isApprovedForAll(address,address)': FunctionFragment; + 'isPermittable()': FunctionFragment; + 'lastPriceUpdate()': FunctionFragment; + 'lockGovernance()': FunctionFragment; + 'maxPayout()': FunctionFragment; + 'minimumPrice()': FunctionFragment; + 'name()': FunctionFragment; + 'nextPrice()': FunctionFragment; + 'nonces(uint256)': FunctionFragment; + 'numBonds()': FunctionFragment; + 'ownerOf(uint256)': FunctionFragment; + 'pause()': FunctionFragment; + 'paused()': FunctionFragment; + 'pendingGovernance()': FunctionFragment; + 'permit(address,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'priceAdjDenom()': FunctionFragment; + 'priceAdjNum()': FunctionFragment; + 'principal()': FunctionFragment; + 'protocolFeeBps()': FunctionFragment; + 'safeTransfer(address,uint256)': FunctionFragment; + 'safeTransferFrom(address,address,uint256)': FunctionFragment; + 'safeTransferFrom(address,address,uint256,bytes)': FunctionFragment; + 'setAddresses(address,address,address,address,address,bool,address)': FunctionFragment; + 'setApprovalForAll(address,bool)': FunctionFragment; + 'setFees(uint256)': FunctionFragment; + 'setPendingGovernance(address)': FunctionFragment; + 'setTerms((uint256,uint256,uint256,uint128,uint128,uint256,bool,uint40,uint40,uint40,uint40))': FunctionFragment; + 'solace()': FunctionFragment; + 'startTime()': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + 'symbol()': FunctionFragment; + 'termsSet()': FunctionFragment; + 'tokenByIndex(uint256)': FunctionFragment; + 'tokenOfOwnerByIndex(address,uint256)': FunctionFragment; + 'tokenURI(uint256)': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'transfer(address,uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + 'underwritingPool()': FunctionFragment; + 'unpause()': FunctionFragment; + 'xsLocker()': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'DOMAIN_SEPARATOR' + | 'PERMIT_TYPEHASH' + | 'acceptGovernance' + | 'approve' + | 'balanceOf' + | 'baseURI' + | 'bondDepo' + | 'bondPrice' + | 'bonds' + | 'calculateAmountIn' + | 'calculateAmountOut' + | 'capacity' + | 'capacityIsPayout' + | 'claimPayout' + | 'dao' + | 'depositMatic' + | 'depositWmatic' + | 'depositWmaticSigned' + | 'endTime' + | 'exists' + | 'getApproved' + | 'globalVestingTerm' + | 'governance' + | 'governanceIsLocked' + | 'halfLife' + | 'initialize' + | 'isApprovedForAll' + | 'isPermittable' + | 'lastPriceUpdate' + | 'lockGovernance' + | 'maxPayout' + | 'minimumPrice' + | 'name' + | 'nextPrice' + | 'nonces' + | 'numBonds' + | 'ownerOf' + | 'pause' + | 'paused' + | 'pendingGovernance' + | 'permit' + | 'priceAdjDenom' + | 'priceAdjNum' + | 'principal' + | 'protocolFeeBps' + | 'safeTransfer' + | 'safeTransferFrom(address,address,uint256)' + | 'safeTransferFrom(address,address,uint256,bytes)' + | 'setAddresses' + | 'setApprovalForAll' + | 'setFees' + | 'setPendingGovernance' + | 'setTerms' + | 'solace' + | 'startTime' + | 'supportsInterface' + | 'symbol' + | 'termsSet' + | 'tokenByIndex' + | 'tokenOfOwnerByIndex' + | 'tokenURI' + | 'totalSupply' + | 'transfer' + | 'transferFrom' + | 'underwritingPool' + | 'unpause' + | 'xsLocker', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'DOMAIN_SEPARATOR', values?: undefined): string; + encodeFunctionData(functionFragment: 'PERMIT_TYPEHASH', values?: undefined): string; + encodeFunctionData(functionFragment: 'acceptGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'baseURI', values?: undefined): string; + encodeFunctionData(functionFragment: 'bondDepo', values?: undefined): string; + encodeFunctionData(functionFragment: 'bondPrice', values?: undefined): string; + encodeFunctionData(functionFragment: 'bonds', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'calculateAmountIn', values: [BigNumberish, boolean]): string; + encodeFunctionData(functionFragment: 'calculateAmountOut', values: [BigNumberish, boolean]): string; + encodeFunctionData(functionFragment: 'capacity', values?: undefined): string; + encodeFunctionData(functionFragment: 'capacityIsPayout', values?: undefined): string; + encodeFunctionData(functionFragment: 'claimPayout', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'dao', values?: undefined): string; + encodeFunctionData(functionFragment: 'depositMatic', values: [BigNumberish, string, boolean]): string; + encodeFunctionData(functionFragment: 'depositWmatic', values: [BigNumberish, BigNumberish, string, boolean]): string; + encodeFunctionData( + functionFragment: 'depositWmaticSigned', + values: [BigNumberish, BigNumberish, string, boolean, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'endTime', values?: undefined): string; + encodeFunctionData(functionFragment: 'exists', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'getApproved', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'globalVestingTerm', values?: undefined): string; + encodeFunctionData(functionFragment: 'governance', values?: undefined): string; + encodeFunctionData(functionFragment: 'governanceIsLocked', values?: undefined): string; + encodeFunctionData(functionFragment: 'halfLife', values?: undefined): string; + encodeFunctionData( + functionFragment: 'initialize', + values: [string, string, string, string, string, string, string, boolean, string], + ): string; + encodeFunctionData(functionFragment: 'isApprovedForAll', values: [string, string]): string; + encodeFunctionData(functionFragment: 'isPermittable', values?: undefined): string; + encodeFunctionData(functionFragment: 'lastPriceUpdate', values?: undefined): string; + encodeFunctionData(functionFragment: 'lockGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'maxPayout', values?: undefined): string; + encodeFunctionData(functionFragment: 'minimumPrice', values?: undefined): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'nextPrice', values?: undefined): string; + encodeFunctionData(functionFragment: 'nonces', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'numBonds', values?: undefined): string; + encodeFunctionData(functionFragment: 'ownerOf', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'pause', values?: undefined): string; + encodeFunctionData(functionFragment: 'paused', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingGovernance', values?: undefined): string; + encodeFunctionData( + functionFragment: 'permit', + values: [string, BigNumberish, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'priceAdjDenom', values?: undefined): string; + encodeFunctionData(functionFragment: 'priceAdjNum', values?: undefined): string; + encodeFunctionData(functionFragment: 'principal', values?: undefined): string; + encodeFunctionData(functionFragment: 'protocolFeeBps', values?: undefined): string; + encodeFunctionData(functionFragment: 'safeTransfer', values: [string, BigNumberish]): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256)', + values: [string, string, BigNumberish], + ): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', + values: [string, string, BigNumberish, BytesLike], + ): string; + encodeFunctionData( + functionFragment: 'setAddresses', + values: [string, string, string, string, string, boolean, string], + ): string; + encodeFunctionData(functionFragment: 'setApprovalForAll', values: [string, boolean]): string; + encodeFunctionData(functionFragment: 'setFees', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setPendingGovernance', values: [string]): string; + encodeFunctionData(functionFragment: 'setTerms', values: [BondTellerMatic.TermsStruct]): string; + encodeFunctionData(functionFragment: 'solace', values?: undefined): string; + encodeFunctionData(functionFragment: 'startTime', values?: undefined): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [BytesLike]): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'termsSet', values?: undefined): string; + encodeFunctionData(functionFragment: 'tokenByIndex', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'tokenOfOwnerByIndex', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'tokenURI', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'transfer', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'underwritingPool', values?: undefined): string; + encodeFunctionData(functionFragment: 'unpause', values?: undefined): string; + encodeFunctionData(functionFragment: 'xsLocker', values?: undefined): string; + + decodeFunctionResult(functionFragment: 'DOMAIN_SEPARATOR', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'PERMIT_TYPEHASH', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'acceptGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'baseURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'bondDepo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'bondPrice', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'bonds', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'calculateAmountIn', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'calculateAmountOut', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'capacity', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'capacityIsPayout', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'claimPayout', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'dao', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositMatic', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositWmatic', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositWmaticSigned', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'endTime', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'exists', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getApproved', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'globalVestingTerm', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governanceIsLocked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'halfLife', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'initialize', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isApprovedForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isPermittable', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lastPriceUpdate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'maxPayout', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'minimumPrice', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'nextPrice', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'nonces', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'numBonds', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'ownerOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pause', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'permit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'priceAdjDenom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'priceAdjNum', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'principal', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'protocolFeeBps', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setAddresses', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setApprovalForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setFees', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setTerms', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'solace', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'startTime', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'termsSet', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenByIndex', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenOfOwnerByIndex', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'underwritingPool', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'unpause', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'xsLocker', data: BytesLike): Result; + + events: { + 'AddressesSet()': EventFragment; + 'Approval(address,address,uint256)': EventFragment; + 'ApprovalForAll(address,address,bool)': EventFragment; + 'BaseURISet(string)': EventFragment; + 'CreateBond(uint256,uint256,uint256,uint40,uint40)': EventFragment; + 'FeesSet()': EventFragment; + 'GovernanceLocked()': EventFragment; + 'GovernancePending(address)': EventFragment; + 'GovernanceTransferred(address,address)': EventFragment; + 'Paused()': EventFragment; + 'RedeemBond(uint256,address,uint256)': EventFragment; + 'TermsSet()': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + 'Unpaused()': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'AddressesSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ApprovalForAll'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'BaseURISet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CreateBond'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'FeesSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceLocked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernancePending'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Paused'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RedeemBond'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'TermsSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Unpaused'): EventFragment; +} + +export interface AddressesSetEventObject {} +export type AddressesSetEvent = TypedEvent<[], AddressesSetEventObject>; + +export type AddressesSetEventFilter = TypedEventFilter; + +export interface ApprovalEventObject { + owner: string; + approved: string; + tokenId: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface ApprovalForAllEventObject { + owner: string; + operator: string; + approved: boolean; +} +export type ApprovalForAllEvent = TypedEvent<[string, string, boolean], ApprovalForAllEventObject>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export interface BaseURISetEventObject { + baseURI: string; +} +export type BaseURISetEvent = TypedEvent<[string], BaseURISetEventObject>; + +export type BaseURISetEventFilter = TypedEventFilter; + +export interface CreateBondEventObject { + lockID: BigNumber; + principalAmount: BigNumber; + payoutAmount: BigNumber; + vestingStart: number; + vestingTime: number; +} +export type CreateBondEvent = TypedEvent<[BigNumber, BigNumber, BigNumber, number, number], CreateBondEventObject>; + +export type CreateBondEventFilter = TypedEventFilter; + +export interface FeesSetEventObject {} +export type FeesSetEvent = TypedEvent<[], FeesSetEventObject>; + +export type FeesSetEventFilter = TypedEventFilter; + +export interface GovernanceLockedEventObject {} +export type GovernanceLockedEvent = TypedEvent<[], GovernanceLockedEventObject>; + +export type GovernanceLockedEventFilter = TypedEventFilter; + +export interface GovernancePendingEventObject { + pendingGovernance: string; +} +export type GovernancePendingEvent = TypedEvent<[string], GovernancePendingEventObject>; + +export type GovernancePendingEventFilter = TypedEventFilter; + +export interface GovernanceTransferredEventObject { + oldGovernance: string; + newGovernance: string; +} +export type GovernanceTransferredEvent = TypedEvent<[string, string], GovernanceTransferredEventObject>; + +export type GovernanceTransferredEventFilter = TypedEventFilter; + +export interface PausedEventObject {} +export type PausedEvent = TypedEvent<[], PausedEventObject>; + +export type PausedEventFilter = TypedEventFilter; + +export interface RedeemBondEventObject { + bondID: BigNumber; + recipient: string; + payoutAmount: BigNumber; +} +export type RedeemBondEvent = TypedEvent<[BigNumber, string, BigNumber], RedeemBondEventObject>; + +export type RedeemBondEventFilter = TypedEventFilter; + +export interface TermsSetEventObject {} +export type TermsSetEvent = TypedEvent<[], TermsSetEventObject>; + +export type TermsSetEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + tokenId: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface UnpausedEventObject {} +export type UnpausedEvent = TypedEvent<[], UnpausedEventObject>; + +export type UnpausedEventFilter = TypedEventFilter; + +export interface BondTellerMatic extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: BondTellerMaticInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string] & { seperator: string }>; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise<[string] & { typehash: string }>; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + baseURI(overrides?: CallOverrides): Promise<[string]>; + + bondDepo(overrides?: CallOverrides): Promise<[string]>; + + bondPrice(overrides?: CallOverrides): Promise<[BigNumber] & { price_: BigNumber }>; + + bonds( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, number, number] & { + payoutAmount: BigNumber; + payoutAlreadyClaimed: BigNumber; + principalPaid: BigNumber; + vestingStart: number; + localVestingTerm: number; + } + >; + + calculateAmountIn( + amountOut: BigNumberish, + stake: boolean, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { amountIn: BigNumber }>; + + calculateAmountOut( + amountIn: BigNumberish, + stake: boolean, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { amountOut: BigNumber }>; + + capacity(overrides?: CallOverrides): Promise<[BigNumber]>; + + capacityIsPayout(overrides?: CallOverrides): Promise<[boolean]>; + + claimPayout( + bondID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dao(overrides?: CallOverrides): Promise<[string]>; + + depositMatic( + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + depositWmatic( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositWmaticSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise<[number]>; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + globalVestingTerm(overrides?: CallOverrides): Promise<[number]>; + + governance(overrides?: CallOverrides): Promise<[string]>; + + governanceIsLocked(overrides?: CallOverrides): Promise<[boolean]>; + + halfLife(overrides?: CallOverrides): Promise<[BigNumber]>; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise<[boolean]>; + + isPermittable(overrides?: CallOverrides): Promise<[boolean]>; + + lastPriceUpdate(overrides?: CallOverrides): Promise<[BigNumber]>; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxPayout(overrides?: CallOverrides): Promise<[BigNumber]>; + + minimumPrice(overrides?: CallOverrides): Promise<[BigNumber]>; + + name(overrides?: CallOverrides): Promise<[string]>; + + nextPrice(overrides?: CallOverrides): Promise<[BigNumber]>; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber] & { nonce: BigNumber }>; + + numBonds(overrides?: CallOverrides): Promise<[BigNumber]>; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise<[boolean]>; + + pendingGovernance(overrides?: CallOverrides): Promise<[string]>; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise<[BigNumber]>; + + priceAdjNum(overrides?: CallOverrides): Promise<[BigNumber]>; + + principal(overrides?: CallOverrides): Promise<[string]>; + + protocolFeeBps(overrides?: CallOverrides): Promise<[BigNumber]>; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setFees( + protocolFee: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTerms( + terms: BondTellerMatic.TermsStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise<[string]>; + + startTime(overrides?: CallOverrides): Promise<[number]>; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + termsSet(overrides?: CallOverrides): Promise<[boolean]>; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underwritingPool(overrides?: CallOverrides): Promise<[string]>; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + xsLocker(overrides?: CallOverrides): Promise<[string]>; + }; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + bondDepo(overrides?: CallOverrides): Promise; + + bondPrice(overrides?: CallOverrides): Promise; + + bonds( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, number, number] & { + payoutAmount: BigNumber; + payoutAlreadyClaimed: BigNumber; + principalPaid: BigNumber; + vestingStart: number; + localVestingTerm: number; + } + >; + + calculateAmountIn(amountOut: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + calculateAmountOut(amountIn: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + capacity(overrides?: CallOverrides): Promise; + + capacityIsPayout(overrides?: CallOverrides): Promise; + + claimPayout( + bondID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dao(overrides?: CallOverrides): Promise; + + depositMatic( + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + depositWmatic( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositWmaticSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + globalVestingTerm(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + halfLife(overrides?: CallOverrides): Promise; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isPermittable(overrides?: CallOverrides): Promise; + + lastPriceUpdate(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxPayout(overrides?: CallOverrides): Promise; + + minimumPrice(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nextPrice(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + numBonds(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise; + + priceAdjNum(overrides?: CallOverrides): Promise; + + principal(overrides?: CallOverrides): Promise; + + protocolFeeBps(overrides?: CallOverrides): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setFees( + protocolFee: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTerms( + terms: BondTellerMatic.TermsStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + termsSet(overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underwritingPool(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + + callStatic: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: CallOverrides): Promise; + + approve(to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + bondDepo(overrides?: CallOverrides): Promise; + + bondPrice(overrides?: CallOverrides): Promise; + + bonds( + arg0: BigNumberish, + overrides?: CallOverrides, + ): Promise< + [BigNumber, BigNumber, BigNumber, number, number] & { + payoutAmount: BigNumber; + payoutAlreadyClaimed: BigNumber; + principalPaid: BigNumber; + vestingStart: number; + localVestingTerm: number; + } + >; + + calculateAmountIn(amountOut: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + calculateAmountOut(amountIn: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + capacity(overrides?: CallOverrides): Promise; + + capacityIsPayout(overrides?: CallOverrides): Promise; + + claimPayout(bondID: BigNumberish, overrides?: CallOverrides): Promise; + + dao(overrides?: CallOverrides): Promise; + + depositMatic( + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { payout: BigNumber; tokenID: BigNumber }>; + + depositWmatic( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { payout: BigNumber; tokenID: BigNumber }>; + + depositWmaticSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise<[BigNumber, BigNumber] & { payout: BigNumber; tokenID: BigNumber }>; + + endTime(overrides?: CallOverrides): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + globalVestingTerm(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + halfLife(overrides?: CallOverrides): Promise; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: CallOverrides, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isPermittable(overrides?: CallOverrides): Promise; + + lastPriceUpdate(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: CallOverrides): Promise; + + maxPayout(overrides?: CallOverrides): Promise; + + minimumPrice(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nextPrice(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + numBonds(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pause(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise; + + priceAdjNum(overrides?: CallOverrides): Promise; + + principal(overrides?: CallOverrides): Promise; + + protocolFeeBps(overrides?: CallOverrides): Promise; + + safeTransfer(to: string, tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: CallOverrides, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: CallOverrides, + ): Promise; + + setApprovalForAll(operator: string, approved: boolean, overrides?: CallOverrides): Promise; + + setFees(protocolFee: BigNumberish, overrides?: CallOverrides): Promise; + + setPendingGovernance(pendingGovernance_: string, overrides?: CallOverrides): Promise; + + setTerms(terms: BondTellerMatic.TermsStruct, overrides?: CallOverrides): Promise; + + solace(overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + termsSet(overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer(to: string, tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom(from: string, to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + underwritingPool(overrides?: CallOverrides): Promise; + + unpause(overrides?: CallOverrides): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + }; + + filters: { + 'AddressesSet()'(): AddressesSetEventFilter; + AddressesSet(): AddressesSetEventFilter; + + 'Approval(address,address,uint256)'( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null, + ): ApprovalEventFilter; + Approval(owner?: string | null, approved?: string | null, tokenId?: BigNumberish | null): ApprovalEventFilter; + + 'ApprovalForAll(address,address,bool)'( + owner?: string | null, + operator?: string | null, + approved?: null, + ): ApprovalForAllEventFilter; + ApprovalForAll(owner?: string | null, operator?: string | null, approved?: null): ApprovalForAllEventFilter; + + 'BaseURISet(string)'(baseURI?: null): BaseURISetEventFilter; + BaseURISet(baseURI?: null): BaseURISetEventFilter; + + 'CreateBond(uint256,uint256,uint256,uint40,uint40)'( + lockID?: BigNumberish | null, + principalAmount?: null, + payoutAmount?: null, + vestingStart?: null, + vestingTime?: null, + ): CreateBondEventFilter; + CreateBond( + lockID?: BigNumberish | null, + principalAmount?: null, + payoutAmount?: null, + vestingStart?: null, + vestingTime?: null, + ): CreateBondEventFilter; + + 'FeesSet()'(): FeesSetEventFilter; + FeesSet(): FeesSetEventFilter; + + 'GovernanceLocked()'(): GovernanceLockedEventFilter; + GovernanceLocked(): GovernanceLockedEventFilter; + + 'GovernancePending(address)'(pendingGovernance?: null): GovernancePendingEventFilter; + GovernancePending(pendingGovernance?: null): GovernancePendingEventFilter; + + 'GovernanceTransferred(address,address)'( + oldGovernance?: null, + newGovernance?: null, + ): GovernanceTransferredEventFilter; + GovernanceTransferred(oldGovernance?: null, newGovernance?: null): GovernanceTransferredEventFilter; + + 'Paused()'(): PausedEventFilter; + Paused(): PausedEventFilter; + + 'RedeemBond(uint256,address,uint256)'( + bondID?: BigNumberish | null, + recipient?: null, + payoutAmount?: null, + ): RedeemBondEventFilter; + RedeemBond(bondID?: BigNumberish | null, recipient?: null, payoutAmount?: null): RedeemBondEventFilter; + + 'TermsSet()'(): TermsSetEventFilter; + TermsSet(): TermsSetEventFilter; + + 'Transfer(address,address,uint256)'( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null, + ): TransferEventFilter; + Transfer(from?: string | null, to?: string | null, tokenId?: BigNumberish | null): TransferEventFilter; + + 'Unpaused()'(): UnpausedEventFilter; + Unpaused(): UnpausedEventFilter; + }; + + estimateGas: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + bondDepo(overrides?: CallOverrides): Promise; + + bondPrice(overrides?: CallOverrides): Promise; + + bonds(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + calculateAmountIn(amountOut: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + calculateAmountOut(amountIn: BigNumberish, stake: boolean, overrides?: CallOverrides): Promise; + + capacity(overrides?: CallOverrides): Promise; + + capacityIsPayout(overrides?: CallOverrides): Promise; + + claimPayout(bondID: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + dao(overrides?: CallOverrides): Promise; + + depositMatic( + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + depositWmatic( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositWmaticSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + globalVestingTerm(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + halfLife(overrides?: CallOverrides): Promise; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isPermittable(overrides?: CallOverrides): Promise; + + lastPriceUpdate(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxPayout(overrides?: CallOverrides): Promise; + + minimumPrice(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nextPrice(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + numBonds(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise; + + priceAdjNum(overrides?: CallOverrides): Promise; + + principal(overrides?: CallOverrides): Promise; + + protocolFeeBps(overrides?: CallOverrides): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setFees(protocolFee: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTerms( + terms: BondTellerMatic.TermsStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + termsSet(overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underwritingPool(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + bondDepo(overrides?: CallOverrides): Promise; + + bondPrice(overrides?: CallOverrides): Promise; + + bonds(arg0: BigNumberish, overrides?: CallOverrides): Promise; + + calculateAmountIn( + amountOut: BigNumberish, + stake: boolean, + overrides?: CallOverrides, + ): Promise; + + calculateAmountOut( + amountIn: BigNumberish, + stake: boolean, + overrides?: CallOverrides, + ): Promise; + + capacity(overrides?: CallOverrides): Promise; + + capacityIsPayout(overrides?: CallOverrides): Promise; + + claimPayout( + bondID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + dao(overrides?: CallOverrides): Promise; + + depositMatic( + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: PayableOverrides & { from?: string | Promise }, + ): Promise; + + depositWmatic( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositWmaticSigned( + amount: BigNumberish, + minAmountOut: BigNumberish, + depositor: string, + stake: boolean, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + globalVestingTerm(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + halfLife(overrides?: CallOverrides): Promise; + + initialize( + name_: string, + governance_: string, + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isPermittable(overrides?: CallOverrides): Promise; + + lastPriceUpdate(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxPayout(overrides?: CallOverrides): Promise; + + minimumPrice(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nextPrice(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + numBonds(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + priceAdjDenom(overrides?: CallOverrides): Promise; + + priceAdjNum(overrides?: CallOverrides): Promise; + + principal(overrides?: CallOverrides): Promise; + + protocolFeeBps(overrides?: CallOverrides): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAddresses( + solace_: string, + xsLocker_: string, + pool_: string, + dao_: string, + principal_: string, + isPermittable_: boolean, + bondDepo_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setFees( + protocolFee: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTerms( + terms: BondTellerMatic.TermsStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + termsSet(overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + underwritingPool(overrides?: CallOverrides): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/solace/contracts/ethers/Erc20.ts b/src/apps/solace/contracts/ethers/Erc20.ts new file mode 100644 index 000000000..f11232998 --- /dev/null +++ b/src/apps/solace/contracts/ethers/Erc20.ts @@ -0,0 +1,336 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export interface Erc20Interface extends utils.Interface { + functions: { + 'allowance(address,address)': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'decimals()': FunctionFragment; + 'decreaseAllowance(address,uint256)': FunctionFragment; + 'increaseAllowance(address,uint256)': FunctionFragment; + 'name()': FunctionFragment; + 'symbol()': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'transfer(address,uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'allowance' + | 'approve' + | 'balanceOf' + | 'decimals' + | 'decreaseAllowance' + | 'increaseAllowance' + | 'name' + | 'symbol' + | 'totalSupply' + | 'transfer' + | 'transferFrom', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'allowance', values: [string, string]): string; + encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'decimals', values?: undefined): string; + encodeFunctionData(functionFragment: 'decreaseAllowance', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'increaseAllowance', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'transfer', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; + + decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + + events: { + 'Approval(address,address,uint256)': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface Erc20 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: Erc20Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise<[string]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + callStatic: { + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve(spender: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance(spender: string, subtractedValue: BigNumberish, overrides?: CallOverrides): Promise; + + increaseAllowance(spender: string, addedValue: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer(recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom(sender: string, recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + }; + + filters: { + 'Approval(address,address,uint256)'( + owner?: string | null, + spender?: string | null, + value?: null, + ): ApprovalEventFilter; + Approval(owner?: string | null, spender?: string | null, value?: null): ApprovalEventFilter; + + 'Transfer(address,address,uint256)'(from?: string | null, to?: string | null, value?: null): TransferEventFilter; + Transfer(from?: string | null, to?: string | null, value?: null): TransferEventFilter; + }; + + estimateGas: { + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + populateTransaction: { + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; +} diff --git a/src/apps/solace/contracts/ethers/Scp.ts b/src/apps/solace/contracts/ethers/Scp.ts new file mode 100644 index 000000000..c2cec7025 --- /dev/null +++ b/src/apps/solace/contracts/ethers/Scp.ts @@ -0,0 +1,1070 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PayableOverrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export interface ScpInterface extends utils.Interface { + functions: { + 'DOMAIN_SEPARATOR()': FunctionFragment; + 'acceptGovernance()': FunctionFragment; + 'addRequestor(address)': FunctionFragment; + 'allowance(address,address)': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'canTransfer(address)': FunctionFragment; + 'canWithdraw(address)': FunctionFragment; + 'cooldownMax()': FunctionFragment; + 'cooldownMin()': FunctionFragment; + 'cooldownStart(address)': FunctionFragment; + 'decimals()': FunctionFragment; + 'decreaseAllowance(address,uint256)': FunctionFragment; + 'depositEth()': FunctionFragment; + 'depositWeth(uint256)': FunctionFragment; + 'governance()': FunctionFragment; + 'governanceIsLocked()': FunctionFragment; + 'increaseAllowance(address,uint256)': FunctionFragment; + 'isRequestor(address)': FunctionFragment; + 'lockGovernance()': FunctionFragment; + 'maxRedeemableShares(address)': FunctionFragment; + 'name()': FunctionFragment; + 'nonces(address)': FunctionFragment; + 'pause()': FunctionFragment; + 'paused()': FunctionFragment; + 'pendingGovernance()': FunctionFragment; + 'permit(address,address,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'pricePerShare()': FunctionFragment; + 'removeRequestor(address)': FunctionFragment; + 'requestEth(uint256)': FunctionFragment; + 'setCooldownWindow(uint40,uint40)': FunctionFragment; + 'setPendingGovernance(address)': FunctionFragment; + 'startCooldown()': FunctionFragment; + 'stopCooldown()': FunctionFragment; + 'symbol()': FunctionFragment; + 'totalAssets()': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'transfer(address,uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + 'unpause()': FunctionFragment; + 'withdrawEth(uint256)': FunctionFragment; + 'withdrawWeth(uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'DOMAIN_SEPARATOR' + | 'acceptGovernance' + | 'addRequestor' + | 'allowance' + | 'approve' + | 'balanceOf' + | 'canTransfer' + | 'canWithdraw' + | 'cooldownMax' + | 'cooldownMin' + | 'cooldownStart' + | 'decimals' + | 'decreaseAllowance' + | 'depositEth' + | 'depositWeth' + | 'governance' + | 'governanceIsLocked' + | 'increaseAllowance' + | 'isRequestor' + | 'lockGovernance' + | 'maxRedeemableShares' + | 'name' + | 'nonces' + | 'pause' + | 'paused' + | 'pendingGovernance' + | 'permit' + | 'pricePerShare' + | 'removeRequestor' + | 'requestEth' + | 'setCooldownWindow' + | 'setPendingGovernance' + | 'startCooldown' + | 'stopCooldown' + | 'symbol' + | 'totalAssets' + | 'totalSupply' + | 'transfer' + | 'transferFrom' + | 'unpause' + | 'withdrawEth' + | 'withdrawWeth', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'DOMAIN_SEPARATOR', values?: undefined): string; + encodeFunctionData(functionFragment: 'acceptGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'addRequestor', values: [string]): string; + encodeFunctionData(functionFragment: 'allowance', values: [string, string]): string; + encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'canTransfer', values: [string]): string; + encodeFunctionData(functionFragment: 'canWithdraw', values: [string]): string; + encodeFunctionData(functionFragment: 'cooldownMax', values?: undefined): string; + encodeFunctionData(functionFragment: 'cooldownMin', values?: undefined): string; + encodeFunctionData(functionFragment: 'cooldownStart', values: [string]): string; + encodeFunctionData(functionFragment: 'decimals', values?: undefined): string; + encodeFunctionData(functionFragment: 'decreaseAllowance', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'depositEth', values?: undefined): string; + encodeFunctionData(functionFragment: 'depositWeth', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'governance', values?: undefined): string; + encodeFunctionData(functionFragment: 'governanceIsLocked', values?: undefined): string; + encodeFunctionData(functionFragment: 'increaseAllowance', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'isRequestor', values: [string]): string; + encodeFunctionData(functionFragment: 'lockGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'maxRedeemableShares', values: [string]): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'nonces', values: [string]): string; + encodeFunctionData(functionFragment: 'pause', values?: undefined): string; + encodeFunctionData(functionFragment: 'paused', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingGovernance', values?: undefined): string; + encodeFunctionData( + functionFragment: 'permit', + values: [string, string, BigNumberish, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'pricePerShare', values?: undefined): string; + encodeFunctionData(functionFragment: 'removeRequestor', values: [string]): string; + encodeFunctionData(functionFragment: 'requestEth', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setCooldownWindow', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'setPendingGovernance', values: [string]): string; + encodeFunctionData(functionFragment: 'startCooldown', values?: undefined): string; + encodeFunctionData(functionFragment: 'stopCooldown', values?: undefined): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalAssets', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'transfer', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'unpause', values?: undefined): string; + encodeFunctionData(functionFragment: 'withdrawEth', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'withdrawWeth', values: [BigNumberish]): string; + + decodeFunctionResult(functionFragment: 'DOMAIN_SEPARATOR', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'acceptGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'addRequestor', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'canTransfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'canWithdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'cooldownMax', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'cooldownMin', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'cooldownStart', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositEth', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'depositWeth', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governanceIsLocked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isRequestor', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'maxRedeemableShares', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'nonces', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pause', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'permit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pricePerShare', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'removeRequestor', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'requestEth', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setCooldownWindow', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'startCooldown', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'stopCooldown', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalAssets', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'unpause', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdrawEth', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdrawWeth', data: BytesLike): Result; + + events: { + 'Approval(address,address,uint256)': EventFragment; + 'CooldownStarted(address)': EventFragment; + 'CooldownStopped(address)': EventFragment; + 'CooldownWindowSet(uint40,uint40)': EventFragment; + 'DepositMade(address,uint256,uint256)': EventFragment; + 'FundsSent(uint256)': EventFragment; + 'GovernanceLocked()': EventFragment; + 'GovernancePending(address)': EventFragment; + 'GovernanceTransferred(address,address)': EventFragment; + 'Paused()': EventFragment; + 'RequestorAdded(address)': EventFragment; + 'RequestorRemoved(address)': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + 'Unpaused()': EventFragment; + 'WithdrawalMade(address,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CooldownStarted'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CooldownStopped'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CooldownWindowSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'DepositMade'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'FundsSent'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceLocked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernancePending'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Paused'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RequestorAdded'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RequestorRemoved'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Unpaused'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'WithdrawalMade'): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface CooldownStartedEventObject { + user: string; +} +export type CooldownStartedEvent = TypedEvent<[string], CooldownStartedEventObject>; + +export type CooldownStartedEventFilter = TypedEventFilter; + +export interface CooldownStoppedEventObject { + user: string; +} +export type CooldownStoppedEvent = TypedEvent<[string], CooldownStoppedEventObject>; + +export type CooldownStoppedEventFilter = TypedEventFilter; + +export interface CooldownWindowSetEventObject { + cooldownMin: number; + cooldownMax: number; +} +export type CooldownWindowSetEvent = TypedEvent<[number, number], CooldownWindowSetEventObject>; + +export type CooldownWindowSetEventFilter = TypedEventFilter; + +export interface DepositMadeEventObject { + depositor: string; + amount: BigNumber; + shares: BigNumber; +} +export type DepositMadeEvent = TypedEvent<[string, BigNumber, BigNumber], DepositMadeEventObject>; + +export type DepositMadeEventFilter = TypedEventFilter; + +export interface FundsSentEventObject { + value: BigNumber; +} +export type FundsSentEvent = TypedEvent<[BigNumber], FundsSentEventObject>; + +export type FundsSentEventFilter = TypedEventFilter; + +export interface GovernanceLockedEventObject {} +export type GovernanceLockedEvent = TypedEvent<[], GovernanceLockedEventObject>; + +export type GovernanceLockedEventFilter = TypedEventFilter; + +export interface GovernancePendingEventObject { + pendingGovernance: string; +} +export type GovernancePendingEvent = TypedEvent<[string], GovernancePendingEventObject>; + +export type GovernancePendingEventFilter = TypedEventFilter; + +export interface GovernanceTransferredEventObject { + oldGovernance: string; + newGovernance: string; +} +export type GovernanceTransferredEvent = TypedEvent<[string, string], GovernanceTransferredEventObject>; + +export type GovernanceTransferredEventFilter = TypedEventFilter; + +export interface PausedEventObject {} +export type PausedEvent = TypedEvent<[], PausedEventObject>; + +export type PausedEventFilter = TypedEventFilter; + +export interface RequestorAddedEventObject { + requestor: string; +} +export type RequestorAddedEvent = TypedEvent<[string], RequestorAddedEventObject>; + +export type RequestorAddedEventFilter = TypedEventFilter; + +export interface RequestorRemovedEventObject { + requestor: string; +} +export type RequestorRemovedEvent = TypedEvent<[string], RequestorRemovedEventObject>; + +export type RequestorRemovedEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface UnpausedEventObject {} +export type UnpausedEvent = TypedEvent<[], UnpausedEventObject>; + +export type UnpausedEventFilter = TypedEventFilter; + +export interface WithdrawalMadeEventObject { + withdrawer: string; + value: BigNumber; +} +export type WithdrawalMadeEvent = TypedEvent<[string, BigNumber], WithdrawalMadeEventObject>; + +export type WithdrawalMadeEventFilter = TypedEventFilter; + +export interface Scp extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: ScpInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + addRequestor( + requestor: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + canTransfer(user: string, overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + canWithdraw(user: string, overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + cooldownMax(overrides?: CallOverrides): Promise<[number]>; + + cooldownMin(overrides?: CallOverrides): Promise<[number]>; + + cooldownStart(user: string, overrides?: CallOverrides): Promise<[number]>; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositEth(overrides?: PayableOverrides & { from?: string | Promise }): Promise; + + depositWeth( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + governance(overrides?: CallOverrides): Promise<[string]>; + + governanceIsLocked(overrides?: CallOverrides): Promise<[boolean]>; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isRequestor(dst: string, overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxRedeemableShares(user: string, overrides?: CallOverrides): Promise<[BigNumber] & { shares: BigNumber }>; + + name(overrides?: CallOverrides): Promise<[string]>; + + nonces(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise<[boolean] & { paused_: boolean }>; + + pendingGovernance(overrides?: CallOverrides): Promise<[string]>; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + pricePerShare(overrides?: CallOverrides): Promise<[BigNumber] & { price: BigNumber }>; + + removeRequestor( + requestor: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + requestEth( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setCooldownWindow( + cooldownMin_: BigNumberish, + cooldownMax_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + startCooldown(overrides?: Overrides & { from?: string | Promise }): Promise; + + stopCooldown(overrides?: Overrides & { from?: string | Promise }): Promise; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + totalAssets(overrides?: CallOverrides): Promise<[BigNumber] & { assets: BigNumber }>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + withdrawEth( + shares: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawWeth( + shares: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + addRequestor( + requestor: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + canTransfer(user: string, overrides?: CallOverrides): Promise; + + canWithdraw(user: string, overrides?: CallOverrides): Promise; + + cooldownMax(overrides?: CallOverrides): Promise; + + cooldownMin(overrides?: CallOverrides): Promise; + + cooldownStart(user: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositEth(overrides?: PayableOverrides & { from?: string | Promise }): Promise; + + depositWeth( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isRequestor(dst: string, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxRedeemableShares(user: string, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + pricePerShare(overrides?: CallOverrides): Promise; + + removeRequestor( + requestor: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + requestEth( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setCooldownWindow( + cooldownMin_: BigNumberish, + cooldownMax_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + startCooldown(overrides?: Overrides & { from?: string | Promise }): Promise; + + stopCooldown(overrides?: Overrides & { from?: string | Promise }): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalAssets(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + withdrawEth( + shares: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawWeth( + shares: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + callStatic: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: CallOverrides): Promise; + + addRequestor(requestor: string, overrides?: CallOverrides): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve(spender: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + canTransfer(user: string, overrides?: CallOverrides): Promise; + + canWithdraw(user: string, overrides?: CallOverrides): Promise; + + cooldownMax(overrides?: CallOverrides): Promise; + + cooldownMin(overrides?: CallOverrides): Promise; + + cooldownStart(user: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance(spender: string, subtractedValue: BigNumberish, overrides?: CallOverrides): Promise; + + depositEth(overrides?: CallOverrides): Promise; + + depositWeth(amount: BigNumberish, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAllowance(spender: string, addedValue: BigNumberish, overrides?: CallOverrides): Promise; + + isRequestor(dst: string, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: CallOverrides): Promise; + + maxRedeemableShares(user: string, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + pause(overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise; + + pricePerShare(overrides?: CallOverrides): Promise; + + removeRequestor(requestor: string, overrides?: CallOverrides): Promise; + + requestEth(amount: BigNumberish, overrides?: CallOverrides): Promise; + + setCooldownWindow(cooldownMin_: BigNumberish, cooldownMax_: BigNumberish, overrides?: CallOverrides): Promise; + + setPendingGovernance(pendingGovernance_: string, overrides?: CallOverrides): Promise; + + startCooldown(overrides?: CallOverrides): Promise; + + stopCooldown(overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalAssets(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer(recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom(sender: string, recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + unpause(overrides?: CallOverrides): Promise; + + withdrawEth(shares: BigNumberish, overrides?: CallOverrides): Promise; + + withdrawWeth(shares: BigNumberish, overrides?: CallOverrides): Promise; + }; + + filters: { + 'Approval(address,address,uint256)'( + owner?: string | null, + spender?: string | null, + value?: null, + ): ApprovalEventFilter; + Approval(owner?: string | null, spender?: string | null, value?: null): ApprovalEventFilter; + + 'CooldownStarted(address)'(user?: null): CooldownStartedEventFilter; + CooldownStarted(user?: null): CooldownStartedEventFilter; + + 'CooldownStopped(address)'(user?: null): CooldownStoppedEventFilter; + CooldownStopped(user?: null): CooldownStoppedEventFilter; + + 'CooldownWindowSet(uint40,uint40)'(cooldownMin?: null, cooldownMax?: null): CooldownWindowSetEventFilter; + CooldownWindowSet(cooldownMin?: null, cooldownMax?: null): CooldownWindowSetEventFilter; + + 'DepositMade(address,uint256,uint256)'( + depositor?: string | null, + amount?: BigNumberish | null, + shares?: BigNumberish | null, + ): DepositMadeEventFilter; + DepositMade( + depositor?: string | null, + amount?: BigNumberish | null, + shares?: BigNumberish | null, + ): DepositMadeEventFilter; + + 'FundsSent(uint256)'(value?: null): FundsSentEventFilter; + FundsSent(value?: null): FundsSentEventFilter; + + 'GovernanceLocked()'(): GovernanceLockedEventFilter; + GovernanceLocked(): GovernanceLockedEventFilter; + + 'GovernancePending(address)'(pendingGovernance?: null): GovernancePendingEventFilter; + GovernancePending(pendingGovernance?: null): GovernancePendingEventFilter; + + 'GovernanceTransferred(address,address)'( + oldGovernance?: null, + newGovernance?: null, + ): GovernanceTransferredEventFilter; + GovernanceTransferred(oldGovernance?: null, newGovernance?: null): GovernanceTransferredEventFilter; + + 'Paused()'(): PausedEventFilter; + Paused(): PausedEventFilter; + + 'RequestorAdded(address)'(requestor?: null): RequestorAddedEventFilter; + RequestorAdded(requestor?: null): RequestorAddedEventFilter; + + 'RequestorRemoved(address)'(requestor?: null): RequestorRemovedEventFilter; + RequestorRemoved(requestor?: null): RequestorRemovedEventFilter; + + 'Transfer(address,address,uint256)'(from?: string | null, to?: string | null, value?: null): TransferEventFilter; + Transfer(from?: string | null, to?: string | null, value?: null): TransferEventFilter; + + 'Unpaused()'(): UnpausedEventFilter; + Unpaused(): UnpausedEventFilter; + + 'WithdrawalMade(address,uint256)'( + withdrawer?: string | null, + value?: BigNumberish | null, + ): WithdrawalMadeEventFilter; + WithdrawalMade(withdrawer?: string | null, value?: BigNumberish | null): WithdrawalMadeEventFilter; + }; + + estimateGas: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + addRequestor(requestor: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + canTransfer(user: string, overrides?: CallOverrides): Promise; + + canWithdraw(user: string, overrides?: CallOverrides): Promise; + + cooldownMax(overrides?: CallOverrides): Promise; + + cooldownMin(overrides?: CallOverrides): Promise; + + cooldownStart(user: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositEth(overrides?: PayableOverrides & { from?: string | Promise }): Promise; + + depositWeth(amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isRequestor(dst: string, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxRedeemableShares(user: string, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + pricePerShare(overrides?: CallOverrides): Promise; + + removeRequestor(requestor: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + requestEth(amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + setCooldownWindow( + cooldownMin_: BigNumberish, + cooldownMax_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + startCooldown(overrides?: Overrides & { from?: string | Promise }): Promise; + + stopCooldown(overrides?: Overrides & { from?: string | Promise }): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalAssets(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + withdrawEth(shares: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + withdrawWeth(shares: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + }; + + populateTransaction: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + addRequestor( + requestor: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + canTransfer(user: string, overrides?: CallOverrides): Promise; + + canWithdraw(user: string, overrides?: CallOverrides): Promise; + + cooldownMax(overrides?: CallOverrides): Promise; + + cooldownMin(overrides?: CallOverrides): Promise; + + cooldownStart(user: string, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + depositEth(overrides?: PayableOverrides & { from?: string | Promise }): Promise; + + depositWeth( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isRequestor(dst: string, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxRedeemableShares(user: string, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + pause(overrides?: Overrides & { from?: string | Promise }): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + pricePerShare(overrides?: CallOverrides): Promise; + + removeRequestor( + requestor: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + requestEth( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setCooldownWindow( + cooldownMin_: BigNumberish, + cooldownMax_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + startCooldown(overrides?: Overrides & { from?: string | Promise }): Promise; + + stopCooldown(overrides?: Overrides & { from?: string | Promise }): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalAssets(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + unpause(overrides?: Overrides & { from?: string | Promise }): Promise; + + withdrawEth( + shares: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawWeth( + shares: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; +} diff --git a/src/apps/solace/contracts/ethers/Solace.ts b/src/apps/solace/contracts/ethers/Solace.ts new file mode 100644 index 000000000..71255c72d --- /dev/null +++ b/src/apps/solace/contracts/ethers/Solace.ts @@ -0,0 +1,691 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export interface SolaceInterface extends utils.Interface { + functions: { + 'DOMAIN_SEPARATOR()': FunctionFragment; + 'acceptGovernance()': FunctionFragment; + 'addMinter(address)': FunctionFragment; + 'allowance(address,address)': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'burn(uint256)': FunctionFragment; + 'decimals()': FunctionFragment; + 'decreaseAllowance(address,uint256)': FunctionFragment; + 'governance()': FunctionFragment; + 'governanceIsLocked()': FunctionFragment; + 'increaseAllowance(address,uint256)': FunctionFragment; + 'isMinter(address)': FunctionFragment; + 'lockGovernance()': FunctionFragment; + 'mint(address,uint256)': FunctionFragment; + 'name()': FunctionFragment; + 'nonces(address)': FunctionFragment; + 'pendingGovernance()': FunctionFragment; + 'permit(address,address,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'removeMinter(address)': FunctionFragment; + 'setPendingGovernance(address)': FunctionFragment; + 'symbol()': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'transfer(address,uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'DOMAIN_SEPARATOR' + | 'acceptGovernance' + | 'addMinter' + | 'allowance' + | 'approve' + | 'balanceOf' + | 'burn' + | 'decimals' + | 'decreaseAllowance' + | 'governance' + | 'governanceIsLocked' + | 'increaseAllowance' + | 'isMinter' + | 'lockGovernance' + | 'mint' + | 'name' + | 'nonces' + | 'pendingGovernance' + | 'permit' + | 'removeMinter' + | 'setPendingGovernance' + | 'symbol' + | 'totalSupply' + | 'transfer' + | 'transferFrom', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'DOMAIN_SEPARATOR', values?: undefined): string; + encodeFunctionData(functionFragment: 'acceptGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'addMinter', values: [string]): string; + encodeFunctionData(functionFragment: 'allowance', values: [string, string]): string; + encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'burn', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'decimals', values?: undefined): string; + encodeFunctionData(functionFragment: 'decreaseAllowance', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'governance', values?: undefined): string; + encodeFunctionData(functionFragment: 'governanceIsLocked', values?: undefined): string; + encodeFunctionData(functionFragment: 'increaseAllowance', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'isMinter', values: [string]): string; + encodeFunctionData(functionFragment: 'lockGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'mint', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'nonces', values: [string]): string; + encodeFunctionData(functionFragment: 'pendingGovernance', values?: undefined): string; + encodeFunctionData( + functionFragment: 'permit', + values: [string, string, BigNumberish, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'removeMinter', values: [string]): string; + encodeFunctionData(functionFragment: 'setPendingGovernance', values: [string]): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'transfer', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; + + decodeFunctionResult(functionFragment: 'DOMAIN_SEPARATOR', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'acceptGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'addMinter', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'burn', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governanceIsLocked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isMinter', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'mint', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'nonces', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'permit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'removeMinter', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + + events: { + 'Approval(address,address,uint256)': EventFragment; + 'GovernanceLocked()': EventFragment; + 'GovernancePending(address)': EventFragment; + 'GovernanceTransferred(address,address)': EventFragment; + 'MinterAdded(address)': EventFragment; + 'MinterRemoved(address)': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceLocked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernancePending'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'MinterAdded'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'MinterRemoved'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface GovernanceLockedEventObject {} +export type GovernanceLockedEvent = TypedEvent<[], GovernanceLockedEventObject>; + +export type GovernanceLockedEventFilter = TypedEventFilter; + +export interface GovernancePendingEventObject { + pendingGovernance: string; +} +export type GovernancePendingEvent = TypedEvent<[string], GovernancePendingEventObject>; + +export type GovernancePendingEventFilter = TypedEventFilter; + +export interface GovernanceTransferredEventObject { + oldGovernance: string; + newGovernance: string; +} +export type GovernanceTransferredEvent = TypedEvent<[string, string], GovernanceTransferredEventObject>; + +export type GovernanceTransferredEventFilter = TypedEventFilter; + +export interface MinterAddedEventObject { + minter: string; +} +export type MinterAddedEvent = TypedEvent<[string], MinterAddedEventObject>; + +export type MinterAddedEventFilter = TypedEventFilter; + +export interface MinterRemovedEventObject { + minter: string; +} +export type MinterRemovedEvent = TypedEvent<[string], MinterRemovedEventObject>; + +export type MinterRemovedEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface Solace extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SolaceInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + addMinter( + minter: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + burn( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + governance(overrides?: CallOverrides): Promise<[string]>; + + governanceIsLocked(overrides?: CallOverrides): Promise<[boolean]>; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isMinter(account: string, overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + mint( + account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise<[string]>; + + nonces(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + pendingGovernance(overrides?: CallOverrides): Promise<[string]>; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + removeMinter( + minter: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + addMinter(minter: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + burn(amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isMinter(account: string, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + mint( + account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + removeMinter( + minter: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + callStatic: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: CallOverrides): Promise; + + addMinter(minter: string, overrides?: CallOverrides): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve(spender: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + burn(amount: BigNumberish, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance(spender: string, subtractedValue: BigNumberish, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAllowance(spender: string, addedValue: BigNumberish, overrides?: CallOverrides): Promise; + + isMinter(account: string, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: CallOverrides): Promise; + + mint(account: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise; + + removeMinter(minter: string, overrides?: CallOverrides): Promise; + + setPendingGovernance(pendingGovernance_: string, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer(recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom(sender: string, recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + }; + + filters: { + 'Approval(address,address,uint256)'( + owner?: string | null, + spender?: string | null, + value?: null, + ): ApprovalEventFilter; + Approval(owner?: string | null, spender?: string | null, value?: null): ApprovalEventFilter; + + 'GovernanceLocked()'(): GovernanceLockedEventFilter; + GovernanceLocked(): GovernanceLockedEventFilter; + + 'GovernancePending(address)'(pendingGovernance?: null): GovernancePendingEventFilter; + GovernancePending(pendingGovernance?: null): GovernancePendingEventFilter; + + 'GovernanceTransferred(address,address)'( + oldGovernance?: null, + newGovernance?: null, + ): GovernanceTransferredEventFilter; + GovernanceTransferred(oldGovernance?: null, newGovernance?: null): GovernanceTransferredEventFilter; + + 'MinterAdded(address)'(minter?: string | null): MinterAddedEventFilter; + MinterAdded(minter?: string | null): MinterAddedEventFilter; + + 'MinterRemoved(address)'(minter?: string | null): MinterRemovedEventFilter; + MinterRemoved(minter?: string | null): MinterRemovedEventFilter; + + 'Transfer(address,address,uint256)'(from?: string | null, to?: string | null, value?: null): TransferEventFilter; + Transfer(from?: string | null, to?: string | null, value?: null): TransferEventFilter; + }; + + estimateGas: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + addMinter(minter: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + burn(amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isMinter(account: string, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + mint( + account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + removeMinter(minter: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + populateTransaction: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + addMinter( + minter: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + burn( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isMinter(account: string, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + mint( + account: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + removeMinter( + minter: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; +} diff --git a/src/apps/solace/contracts/ethers/SolaceCoverProduct.ts b/src/apps/solace/contracts/ethers/SolaceCoverProduct.ts new file mode 100644 index 000000000..744018c90 --- /dev/null +++ b/src/apps/solace/contracts/ethers/SolaceCoverProduct.ts @@ -0,0 +1,1664 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export interface SolaceCoverProductInterface extends utils.Interface { + functions: { + 'acceptGovernance()': FunctionFragment; + 'accountBalanceOf(address)': FunctionFragment; + 'activatePolicy(address,uint256,uint256,bytes)': FunctionFragment; + 'activeCoverLimit()': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'availableCoverCapacity()': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'baseURI()': FunctionFragment; + 'chargeCycle()': FunctionFragment; + 'chargePremiums(address[],uint256[])': FunctionFragment; + 'cooldownPeriod()': FunctionFragment; + 'cooldownStart(address)': FunctionFragment; + 'coverLimitOf(uint256)': FunctionFragment; + 'deactivatePolicy()': FunctionFragment; + 'deposit(address,uint256)': FunctionFragment; + 'getApproved(uint256)': FunctionFragment; + 'getReferrerFromReferralCode(bytes)': FunctionFragment; + 'governance()': FunctionFragment; + 'governanceIsLocked()': FunctionFragment; + 'isApprovedForAll(address,address)': FunctionFragment; + 'isReferralCodeUsed(address)': FunctionFragment; + 'isReferralCodeValid(bytes)': FunctionFragment; + 'isReferralOn()': FunctionFragment; + 'lockGovernance()': FunctionFragment; + 'maxCover()': FunctionFragment; + 'maxRateDenom()': FunctionFragment; + 'maxRateNum()': FunctionFragment; + 'minRequiredAccountBalance(uint256)': FunctionFragment; + 'name()': FunctionFragment; + 'ownerOf(uint256)': FunctionFragment; + 'paused()': FunctionFragment; + 'pendingGovernance()': FunctionFragment; + 'policyCount()': FunctionFragment; + 'policyOf(address)': FunctionFragment; + 'policyStatus(uint256)': FunctionFragment; + 'premiumsPaidOf(address)': FunctionFragment; + 'referralReward()': FunctionFragment; + 'referralThreshold()': FunctionFragment; + 'registry()': FunctionFragment; + 'rewardPointsOf(address)': FunctionFragment; + 'riskManager()': FunctionFragment; + 'safeTransferFrom(address,address,uint256)': FunctionFragment; + 'safeTransferFrom(address,address,uint256,bytes)': FunctionFragment; + 'setApprovalForAll(address,bool)': FunctionFragment; + 'setBaseURI(string)': FunctionFragment; + 'setChargeCycle(uint256)': FunctionFragment; + 'setCooldownPeriod(uint256)': FunctionFragment; + 'setIsReferralOn(bool)': FunctionFragment; + 'setMaxRateDenom(uint256)': FunctionFragment; + 'setMaxRateNum(uint256)': FunctionFragment; + 'setPaused(bool)': FunctionFragment; + 'setPendingGovernance(address)': FunctionFragment; + 'setReferralReward(uint256)': FunctionFragment; + 'setReferralThreshold(uint256)': FunctionFragment; + 'setRegistry(address)': FunctionFragment; + 'setRewardPoints(address,uint256)': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + 'symbol()': FunctionFragment; + 'tokenURI(uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + 'updateCoverLimit(uint256,bytes)': FunctionFragment; + 'withdraw()': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'acceptGovernance' + | 'accountBalanceOf' + | 'activatePolicy' + | 'activeCoverLimit' + | 'approve' + | 'availableCoverCapacity' + | 'balanceOf' + | 'baseURI' + | 'chargeCycle' + | 'chargePremiums' + | 'cooldownPeriod' + | 'cooldownStart' + | 'coverLimitOf' + | 'deactivatePolicy' + | 'deposit' + | 'getApproved' + | 'getReferrerFromReferralCode' + | 'governance' + | 'governanceIsLocked' + | 'isApprovedForAll' + | 'isReferralCodeUsed' + | 'isReferralCodeValid' + | 'isReferralOn' + | 'lockGovernance' + | 'maxCover' + | 'maxRateDenom' + | 'maxRateNum' + | 'minRequiredAccountBalance' + | 'name' + | 'ownerOf' + | 'paused' + | 'pendingGovernance' + | 'policyCount' + | 'policyOf' + | 'policyStatus' + | 'premiumsPaidOf' + | 'referralReward' + | 'referralThreshold' + | 'registry' + | 'rewardPointsOf' + | 'riskManager' + | 'safeTransferFrom(address,address,uint256)' + | 'safeTransferFrom(address,address,uint256,bytes)' + | 'setApprovalForAll' + | 'setBaseURI' + | 'setChargeCycle' + | 'setCooldownPeriod' + | 'setIsReferralOn' + | 'setMaxRateDenom' + | 'setMaxRateNum' + | 'setPaused' + | 'setPendingGovernance' + | 'setReferralReward' + | 'setReferralThreshold' + | 'setRegistry' + | 'setRewardPoints' + | 'supportsInterface' + | 'symbol' + | 'tokenURI' + | 'transferFrom' + | 'updateCoverLimit' + | 'withdraw', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'acceptGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'accountBalanceOf', values: [string]): string; + encodeFunctionData( + functionFragment: 'activatePolicy', + values: [string, BigNumberish, BigNumberish, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'activeCoverLimit', values?: undefined): string; + encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'availableCoverCapacity', values?: undefined): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'baseURI', values?: undefined): string; + encodeFunctionData(functionFragment: 'chargeCycle', values?: undefined): string; + encodeFunctionData(functionFragment: 'chargePremiums', values: [string[], BigNumberish[]]): string; + encodeFunctionData(functionFragment: 'cooldownPeriod', values?: undefined): string; + encodeFunctionData(functionFragment: 'cooldownStart', values: [string]): string; + encodeFunctionData(functionFragment: 'coverLimitOf', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'deactivatePolicy', values?: undefined): string; + encodeFunctionData(functionFragment: 'deposit', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'getApproved', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'getReferrerFromReferralCode', values: [BytesLike]): string; + encodeFunctionData(functionFragment: 'governance', values?: undefined): string; + encodeFunctionData(functionFragment: 'governanceIsLocked', values?: undefined): string; + encodeFunctionData(functionFragment: 'isApprovedForAll', values: [string, string]): string; + encodeFunctionData(functionFragment: 'isReferralCodeUsed', values: [string]): string; + encodeFunctionData(functionFragment: 'isReferralCodeValid', values: [BytesLike]): string; + encodeFunctionData(functionFragment: 'isReferralOn', values?: undefined): string; + encodeFunctionData(functionFragment: 'lockGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'maxCover', values?: undefined): string; + encodeFunctionData(functionFragment: 'maxRateDenom', values?: undefined): string; + encodeFunctionData(functionFragment: 'maxRateNum', values?: undefined): string; + encodeFunctionData(functionFragment: 'minRequiredAccountBalance', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'ownerOf', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'paused', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'policyCount', values?: undefined): string; + encodeFunctionData(functionFragment: 'policyOf', values: [string]): string; + encodeFunctionData(functionFragment: 'policyStatus', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'premiumsPaidOf', values: [string]): string; + encodeFunctionData(functionFragment: 'referralReward', values?: undefined): string; + encodeFunctionData(functionFragment: 'referralThreshold', values?: undefined): string; + encodeFunctionData(functionFragment: 'registry', values?: undefined): string; + encodeFunctionData(functionFragment: 'rewardPointsOf', values: [string]): string; + encodeFunctionData(functionFragment: 'riskManager', values?: undefined): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256)', + values: [string, string, BigNumberish], + ): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', + values: [string, string, BigNumberish, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'setApprovalForAll', values: [string, boolean]): string; + encodeFunctionData(functionFragment: 'setBaseURI', values: [string]): string; + encodeFunctionData(functionFragment: 'setChargeCycle', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setCooldownPeriod', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setIsReferralOn', values: [boolean]): string; + encodeFunctionData(functionFragment: 'setMaxRateDenom', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setMaxRateNum', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setPaused', values: [boolean]): string; + encodeFunctionData(functionFragment: 'setPendingGovernance', values: [string]): string; + encodeFunctionData(functionFragment: 'setReferralReward', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setReferralThreshold', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setRegistry', values: [string]): string; + encodeFunctionData(functionFragment: 'setRewardPoints', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [BytesLike]): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'tokenURI', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'updateCoverLimit', values: [BigNumberish, BytesLike]): string; + encodeFunctionData(functionFragment: 'withdraw', values?: undefined): string; + + decodeFunctionResult(functionFragment: 'acceptGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'accountBalanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'activatePolicy', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'activeCoverLimit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'availableCoverCapacity', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'baseURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'chargeCycle', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'chargePremiums', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'cooldownPeriod', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'cooldownStart', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'coverLimitOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deactivatePolicy', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getApproved', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getReferrerFromReferralCode', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governanceIsLocked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isApprovedForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isReferralCodeUsed', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isReferralCodeValid', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isReferralOn', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'maxCover', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'maxRateDenom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'maxRateNum', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'minRequiredAccountBalance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'ownerOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'policyCount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'policyOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'policyStatus', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'premiumsPaidOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'referralReward', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'referralThreshold', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'registry', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardPointsOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'riskManager', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setApprovalForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setBaseURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setChargeCycle', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setCooldownPeriod', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setIsReferralOn', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setMaxRateDenom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setMaxRateNum', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPaused', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setReferralReward', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setReferralThreshold', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setRegistry', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setRewardPoints', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updateCoverLimit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + + events: { + 'Approval(address,address,uint256)': EventFragment; + 'ApprovalForAll(address,address,bool)': EventFragment; + 'BaseURISet(string)': EventFragment; + 'ChargeCycleSet(uint256)': EventFragment; + 'CooldownPeriodSet(uint256)': EventFragment; + 'CooldownStarted(address,uint256)': EventFragment; + 'CooldownStopped(address)': EventFragment; + 'DepositMade(address,address,uint256)': EventFragment; + 'GovernanceLocked()': EventFragment; + 'GovernancePending(address)': EventFragment; + 'GovernanceTransferred(address,address)': EventFragment; + 'IsReferralOnSet(bool)': EventFragment; + 'MaxRateDenomSet(uint256)': EventFragment; + 'MaxRateNumSet(uint256)': EventFragment; + 'PauseSet(bool)': EventFragment; + 'PolicyCreated(uint256)': EventFragment; + 'PolicyDeactivated(uint256)': EventFragment; + 'PolicyManagerUpdated(uint256)': EventFragment; + 'PolicyUpdated(uint256)': EventFragment; + 'PremiumCharged(address,uint256)': EventFragment; + 'PremiumPartiallyCharged(address,uint256,uint256)': EventFragment; + 'ReferralRewardSet(uint256)': EventFragment; + 'ReferralRewardsEarned(address,uint256)': EventFragment; + 'ReferralThresholdSet(uint256)': EventFragment; + 'RegistrySet(address)': EventFragment; + 'RewardPointsSet(address,uint256)': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + 'WithdrawMade(address,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ApprovalForAll'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'BaseURISet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ChargeCycleSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CooldownPeriodSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CooldownStarted'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CooldownStopped'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'DepositMade'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceLocked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernancePending'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'IsReferralOnSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'MaxRateDenomSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'MaxRateNumSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PauseSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PolicyCreated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PolicyDeactivated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PolicyManagerUpdated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PolicyUpdated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PremiumCharged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PremiumPartiallyCharged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ReferralRewardSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ReferralRewardsEarned'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ReferralThresholdSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RegistrySet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RewardPointsSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'WithdrawMade'): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + approved: string; + tokenId: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface ApprovalForAllEventObject { + owner: string; + operator: string; + approved: boolean; +} +export type ApprovalForAllEvent = TypedEvent<[string, string, boolean], ApprovalForAllEventObject>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export interface BaseURISetEventObject { + baseURI: string; +} +export type BaseURISetEvent = TypedEvent<[string], BaseURISetEventObject>; + +export type BaseURISetEventFilter = TypedEventFilter; + +export interface ChargeCycleSetEventObject { + chargeCycle: BigNumber; +} +export type ChargeCycleSetEvent = TypedEvent<[BigNumber], ChargeCycleSetEventObject>; + +export type ChargeCycleSetEventFilter = TypedEventFilter; + +export interface CooldownPeriodSetEventObject { + cooldownPeriod: BigNumber; +} +export type CooldownPeriodSetEvent = TypedEvent<[BigNumber], CooldownPeriodSetEventObject>; + +export type CooldownPeriodSetEventFilter = TypedEventFilter; + +export interface CooldownStartedEventObject { + policyholder: string; + startTime: BigNumber; +} +export type CooldownStartedEvent = TypedEvent<[string, BigNumber], CooldownStartedEventObject>; + +export type CooldownStartedEventFilter = TypedEventFilter; + +export interface CooldownStoppedEventObject { + policyholder: string; +} +export type CooldownStoppedEvent = TypedEvent<[string], CooldownStoppedEventObject>; + +export type CooldownStoppedEventFilter = TypedEventFilter; + +export interface DepositMadeEventObject { + from: string; + policyholder: string; + amount: BigNumber; +} +export type DepositMadeEvent = TypedEvent<[string, string, BigNumber], DepositMadeEventObject>; + +export type DepositMadeEventFilter = TypedEventFilter; + +export interface GovernanceLockedEventObject {} +export type GovernanceLockedEvent = TypedEvent<[], GovernanceLockedEventObject>; + +export type GovernanceLockedEventFilter = TypedEventFilter; + +export interface GovernancePendingEventObject { + pendingGovernance: string; +} +export type GovernancePendingEvent = TypedEvent<[string], GovernancePendingEventObject>; + +export type GovernancePendingEventFilter = TypedEventFilter; + +export interface GovernanceTransferredEventObject { + oldGovernance: string; + newGovernance: string; +} +export type GovernanceTransferredEvent = TypedEvent<[string, string], GovernanceTransferredEventObject>; + +export type GovernanceTransferredEventFilter = TypedEventFilter; + +export interface IsReferralOnSetEventObject { + isReferralOn: boolean; +} +export type IsReferralOnSetEvent = TypedEvent<[boolean], IsReferralOnSetEventObject>; + +export type IsReferralOnSetEventFilter = TypedEventFilter; + +export interface MaxRateDenomSetEventObject { + maxRateDenom: BigNumber; +} +export type MaxRateDenomSetEvent = TypedEvent<[BigNumber], MaxRateDenomSetEventObject>; + +export type MaxRateDenomSetEventFilter = TypedEventFilter; + +export interface MaxRateNumSetEventObject { + maxRateNum: BigNumber; +} +export type MaxRateNumSetEvent = TypedEvent<[BigNumber], MaxRateNumSetEventObject>; + +export type MaxRateNumSetEventFilter = TypedEventFilter; + +export interface PauseSetEventObject { + pause: boolean; +} +export type PauseSetEvent = TypedEvent<[boolean], PauseSetEventObject>; + +export type PauseSetEventFilter = TypedEventFilter; + +export interface PolicyCreatedEventObject { + policyID: BigNumber; +} +export type PolicyCreatedEvent = TypedEvent<[BigNumber], PolicyCreatedEventObject>; + +export type PolicyCreatedEventFilter = TypedEventFilter; + +export interface PolicyDeactivatedEventObject { + policyID: BigNumber; +} +export type PolicyDeactivatedEvent = TypedEvent<[BigNumber], PolicyDeactivatedEventObject>; + +export type PolicyDeactivatedEventFilter = TypedEventFilter; + +export interface PolicyManagerUpdatedEventObject { + activeCoverLimit: BigNumber; +} +export type PolicyManagerUpdatedEvent = TypedEvent<[BigNumber], PolicyManagerUpdatedEventObject>; + +export type PolicyManagerUpdatedEventFilter = TypedEventFilter; + +export interface PolicyUpdatedEventObject { + policyID: BigNumber; +} +export type PolicyUpdatedEvent = TypedEvent<[BigNumber], PolicyUpdatedEventObject>; + +export type PolicyUpdatedEventFilter = TypedEventFilter; + +export interface PremiumChargedEventObject { + policyholder: string; + amount: BigNumber; +} +export type PremiumChargedEvent = TypedEvent<[string, BigNumber], PremiumChargedEventObject>; + +export type PremiumChargedEventFilter = TypedEventFilter; + +export interface PremiumPartiallyChargedEventObject { + policyholder: string; + actualPremium: BigNumber; + chargedPremium: BigNumber; +} +export type PremiumPartiallyChargedEvent = TypedEvent< + [string, BigNumber, BigNumber], + PremiumPartiallyChargedEventObject +>; + +export type PremiumPartiallyChargedEventFilter = TypedEventFilter; + +export interface ReferralRewardSetEventObject { + referralReward: BigNumber; +} +export type ReferralRewardSetEvent = TypedEvent<[BigNumber], ReferralRewardSetEventObject>; + +export type ReferralRewardSetEventFilter = TypedEventFilter; + +export interface ReferralRewardsEarnedEventObject { + rewardEarner: string; + rewardPointsEarned: BigNumber; +} +export type ReferralRewardsEarnedEvent = TypedEvent<[string, BigNumber], ReferralRewardsEarnedEventObject>; + +export type ReferralRewardsEarnedEventFilter = TypedEventFilter; + +export interface ReferralThresholdSetEventObject { + referralThreshold: BigNumber; +} +export type ReferralThresholdSetEvent = TypedEvent<[BigNumber], ReferralThresholdSetEventObject>; + +export type ReferralThresholdSetEventFilter = TypedEventFilter; + +export interface RegistrySetEventObject { + registry: string; +} +export type RegistrySetEvent = TypedEvent<[string], RegistrySetEventObject>; + +export type RegistrySetEventFilter = TypedEventFilter; + +export interface RewardPointsSetEventObject { + policyholder: string; + amountGifted: BigNumber; +} +export type RewardPointsSetEvent = TypedEvent<[string, BigNumber], RewardPointsSetEventObject>; + +export type RewardPointsSetEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + tokenId: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface WithdrawMadeEventObject { + policyholder: string; + amount: BigNumber; +} +export type WithdrawMadeEvent = TypedEvent<[string, BigNumber], WithdrawMadeEventObject>; + +export type WithdrawMadeEventFilter = TypedEventFilter; + +export interface SolaceCoverProduct extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SolaceCoverProductInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + accountBalanceOf(policyholder: string, overrides?: CallOverrides): Promise<[BigNumber] & { balance: BigNumber }>; + + activatePolicy( + policyholder_: string, + coverLimit_: BigNumberish, + amount_: BigNumberish, + referralCode_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + activeCoverLimit(overrides?: CallOverrides): Promise<[BigNumber] & { amount: BigNumber }>; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + availableCoverCapacity(overrides?: CallOverrides): Promise<[BigNumber] & { availableCoverCapacity_: BigNumber }>; + + balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + baseURI(overrides?: CallOverrides): Promise<[string]>; + + chargeCycle(overrides?: CallOverrides): Promise<[BigNumber] & { chargeCycle_: BigNumber }>; + + chargePremiums( + holders: string[], + premiums: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + cooldownPeriod(overrides?: CallOverrides): Promise<[BigNumber] & { cooldownPeriod_: BigNumber }>; + + cooldownStart( + policyholder_: string, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { cooldownStart_: BigNumber }>; + + coverLimitOf(policyID_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber] & { amount: BigNumber }>; + + deactivatePolicy(overrides?: Overrides & { from?: string | Promise }): Promise; + + deposit( + policyholder: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + getReferrerFromReferralCode( + referralCode: BytesLike, + overrides?: CallOverrides, + ): Promise<[string] & { referrer: string }>; + + governance(overrides?: CallOverrides): Promise<[string]>; + + governanceIsLocked(overrides?: CallOverrides): Promise<[boolean]>; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise<[boolean]>; + + isReferralCodeUsed( + policyholder: string, + overrides?: CallOverrides, + ): Promise<[boolean] & { isReferralCodeUsed_: boolean }>; + + isReferralCodeValid(referralCode: BytesLike, overrides?: CallOverrides): Promise<[boolean]>; + + isReferralOn(overrides?: CallOverrides): Promise<[boolean] & { isReferralOn_: boolean }>; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxCover(overrides?: CallOverrides): Promise<[BigNumber] & { cover: BigNumber }>; + + maxRateDenom(overrides?: CallOverrides): Promise<[BigNumber] & { maxRateDenom_: BigNumber }>; + + maxRateNum(overrides?: CallOverrides): Promise<[BigNumber] & { maxRateNum_: BigNumber }>; + + minRequiredAccountBalance( + coverLimit: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { minRequiredAccountBalance_: BigNumber }>; + + name(overrides?: CallOverrides): Promise<[string]>; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + paused(overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + pendingGovernance(overrides?: CallOverrides): Promise<[string]>; + + policyCount(overrides?: CallOverrides): Promise<[BigNumber] & { count: BigNumber }>; + + policyOf(policyholder_: string, overrides?: CallOverrides): Promise<[BigNumber] & { policyID: BigNumber }>; + + policyStatus(policyID_: BigNumberish, overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + premiumsPaidOf( + policyholder_: string, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { premiumsPaid_: BigNumber }>; + + referralReward(overrides?: CallOverrides): Promise<[BigNumber] & { referralReward_: BigNumber }>; + + referralThreshold(overrides?: CallOverrides): Promise<[BigNumber] & { referralThreshold_: BigNumber }>; + + registry(overrides?: CallOverrides): Promise<[string] & { registry_: string }>; + + rewardPointsOf( + policyholder_: string, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { rewardPoints_: BigNumber }>; + + riskManager(overrides?: CallOverrides): Promise<[string] & { riskManager_: string }>; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setBaseURI( + baseURI_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setChargeCycle( + chargeCycle_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setCooldownPeriod( + cooldownPeriod_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setIsReferralOn( + isReferralOn_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setMaxRateDenom( + maxRateDenom_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setMaxRateNum( + maxRateNum_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPaused( + paused_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralReward( + referralReward_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralThreshold( + referralThreshhold_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRegistry( + registry_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRewardPoints( + policyholder_: string, + rewardPoints_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + tokenURI(policyID: BigNumberish, overrides?: CallOverrides): Promise<[string] & { tokenURI_: string }>; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateCoverLimit( + newCoverLimit_: BigNumberish, + referralCode_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + }; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + accountBalanceOf(policyholder: string, overrides?: CallOverrides): Promise; + + activatePolicy( + policyholder_: string, + coverLimit_: BigNumberish, + amount_: BigNumberish, + referralCode_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + activeCoverLimit(overrides?: CallOverrides): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + availableCoverCapacity(overrides?: CallOverrides): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + chargeCycle(overrides?: CallOverrides): Promise; + + chargePremiums( + holders: string[], + premiums: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + cooldownPeriod(overrides?: CallOverrides): Promise; + + cooldownStart(policyholder_: string, overrides?: CallOverrides): Promise; + + coverLimitOf(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + deactivatePolicy(overrides?: Overrides & { from?: string | Promise }): Promise; + + deposit( + policyholder: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + getReferrerFromReferralCode(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isReferralCodeUsed(policyholder: string, overrides?: CallOverrides): Promise; + + isReferralCodeValid(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + isReferralOn(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxCover(overrides?: CallOverrides): Promise; + + maxRateDenom(overrides?: CallOverrides): Promise; + + maxRateNum(overrides?: CallOverrides): Promise; + + minRequiredAccountBalance(coverLimit: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + policyCount(overrides?: CallOverrides): Promise; + + policyOf(policyholder_: string, overrides?: CallOverrides): Promise; + + policyStatus(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + premiumsPaidOf(policyholder_: string, overrides?: CallOverrides): Promise; + + referralReward(overrides?: CallOverrides): Promise; + + referralThreshold(overrides?: CallOverrides): Promise; + + registry(overrides?: CallOverrides): Promise; + + rewardPointsOf(policyholder_: string, overrides?: CallOverrides): Promise; + + riskManager(overrides?: CallOverrides): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setBaseURI( + baseURI_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setChargeCycle( + chargeCycle_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setCooldownPeriod( + cooldownPeriod_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setIsReferralOn( + isReferralOn_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setMaxRateDenom( + maxRateDenom_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setMaxRateNum( + maxRateNum_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPaused( + paused_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralReward( + referralReward_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralThreshold( + referralThreshhold_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRegistry( + registry_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRewardPoints( + policyholder_: string, + rewardPoints_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(policyID: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateCoverLimit( + newCoverLimit_: BigNumberish, + referralCode_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + callStatic: { + acceptGovernance(overrides?: CallOverrides): Promise; + + accountBalanceOf(policyholder: string, overrides?: CallOverrides): Promise; + + activatePolicy( + policyholder_: string, + coverLimit_: BigNumberish, + amount_: BigNumberish, + referralCode_: BytesLike, + overrides?: CallOverrides, + ): Promise; + + activeCoverLimit(overrides?: CallOverrides): Promise; + + approve(to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + availableCoverCapacity(overrides?: CallOverrides): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + chargeCycle(overrides?: CallOverrides): Promise; + + chargePremiums(holders: string[], premiums: BigNumberish[], overrides?: CallOverrides): Promise; + + cooldownPeriod(overrides?: CallOverrides): Promise; + + cooldownStart(policyholder_: string, overrides?: CallOverrides): Promise; + + coverLimitOf(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + deactivatePolicy(overrides?: CallOverrides): Promise; + + deposit(policyholder: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + getReferrerFromReferralCode(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isReferralCodeUsed(policyholder: string, overrides?: CallOverrides): Promise; + + isReferralCodeValid(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + isReferralOn(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: CallOverrides): Promise; + + maxCover(overrides?: CallOverrides): Promise; + + maxRateDenom(overrides?: CallOverrides): Promise; + + maxRateNum(overrides?: CallOverrides): Promise; + + minRequiredAccountBalance(coverLimit: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + policyCount(overrides?: CallOverrides): Promise; + + policyOf(policyholder_: string, overrides?: CallOverrides): Promise; + + policyStatus(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + premiumsPaidOf(policyholder_: string, overrides?: CallOverrides): Promise; + + referralReward(overrides?: CallOverrides): Promise; + + referralThreshold(overrides?: CallOverrides): Promise; + + registry(overrides?: CallOverrides): Promise; + + rewardPointsOf(policyholder_: string, overrides?: CallOverrides): Promise; + + riskManager(overrides?: CallOverrides): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: CallOverrides, + ): Promise; + + setApprovalForAll(operator: string, approved: boolean, overrides?: CallOverrides): Promise; + + setBaseURI(baseURI_: string, overrides?: CallOverrides): Promise; + + setChargeCycle(chargeCycle_: BigNumberish, overrides?: CallOverrides): Promise; + + setCooldownPeriod(cooldownPeriod_: BigNumberish, overrides?: CallOverrides): Promise; + + setIsReferralOn(isReferralOn_: boolean, overrides?: CallOverrides): Promise; + + setMaxRateDenom(maxRateDenom_: BigNumberish, overrides?: CallOverrides): Promise; + + setMaxRateNum(maxRateNum_: BigNumberish, overrides?: CallOverrides): Promise; + + setPaused(paused_: boolean, overrides?: CallOverrides): Promise; + + setPendingGovernance(pendingGovernance_: string, overrides?: CallOverrides): Promise; + + setReferralReward(referralReward_: BigNumberish, overrides?: CallOverrides): Promise; + + setReferralThreshold(referralThreshhold_: BigNumberish, overrides?: CallOverrides): Promise; + + setRegistry(registry_: string, overrides?: CallOverrides): Promise; + + setRewardPoints(policyholder_: string, rewardPoints_: BigNumberish, overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(policyID: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom(from: string, to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + updateCoverLimit(newCoverLimit_: BigNumberish, referralCode_: BytesLike, overrides?: CallOverrides): Promise; + + withdraw(overrides?: CallOverrides): Promise; + }; + + filters: { + 'Approval(address,address,uint256)'( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null, + ): ApprovalEventFilter; + Approval(owner?: string | null, approved?: string | null, tokenId?: BigNumberish | null): ApprovalEventFilter; + + 'ApprovalForAll(address,address,bool)'( + owner?: string | null, + operator?: string | null, + approved?: null, + ): ApprovalForAllEventFilter; + ApprovalForAll(owner?: string | null, operator?: string | null, approved?: null): ApprovalForAllEventFilter; + + 'BaseURISet(string)'(baseURI?: null): BaseURISetEventFilter; + BaseURISet(baseURI?: null): BaseURISetEventFilter; + + 'ChargeCycleSet(uint256)'(chargeCycle?: null): ChargeCycleSetEventFilter; + ChargeCycleSet(chargeCycle?: null): ChargeCycleSetEventFilter; + + 'CooldownPeriodSet(uint256)'(cooldownPeriod?: null): CooldownPeriodSetEventFilter; + CooldownPeriodSet(cooldownPeriod?: null): CooldownPeriodSetEventFilter; + + 'CooldownStarted(address,uint256)'(policyholder?: null, startTime?: null): CooldownStartedEventFilter; + CooldownStarted(policyholder?: null, startTime?: null): CooldownStartedEventFilter; + + 'CooldownStopped(address)'(policyholder?: null): CooldownStoppedEventFilter; + CooldownStopped(policyholder?: null): CooldownStoppedEventFilter; + + 'DepositMade(address,address,uint256)'(from?: null, policyholder?: null, amount?: null): DepositMadeEventFilter; + DepositMade(from?: null, policyholder?: null, amount?: null): DepositMadeEventFilter; + + 'GovernanceLocked()'(): GovernanceLockedEventFilter; + GovernanceLocked(): GovernanceLockedEventFilter; + + 'GovernancePending(address)'(pendingGovernance?: null): GovernancePendingEventFilter; + GovernancePending(pendingGovernance?: null): GovernancePendingEventFilter; + + 'GovernanceTransferred(address,address)'( + oldGovernance?: null, + newGovernance?: null, + ): GovernanceTransferredEventFilter; + GovernanceTransferred(oldGovernance?: null, newGovernance?: null): GovernanceTransferredEventFilter; + + 'IsReferralOnSet(bool)'(isReferralOn?: null): IsReferralOnSetEventFilter; + IsReferralOnSet(isReferralOn?: null): IsReferralOnSetEventFilter; + + 'MaxRateDenomSet(uint256)'(maxRateDenom?: null): MaxRateDenomSetEventFilter; + MaxRateDenomSet(maxRateDenom?: null): MaxRateDenomSetEventFilter; + + 'MaxRateNumSet(uint256)'(maxRateNum?: null): MaxRateNumSetEventFilter; + MaxRateNumSet(maxRateNum?: null): MaxRateNumSetEventFilter; + + 'PauseSet(bool)'(pause?: null): PauseSetEventFilter; + PauseSet(pause?: null): PauseSetEventFilter; + + 'PolicyCreated(uint256)'(policyID?: null): PolicyCreatedEventFilter; + PolicyCreated(policyID?: null): PolicyCreatedEventFilter; + + 'PolicyDeactivated(uint256)'(policyID?: null): PolicyDeactivatedEventFilter; + PolicyDeactivated(policyID?: null): PolicyDeactivatedEventFilter; + + 'PolicyManagerUpdated(uint256)'(activeCoverLimit?: null): PolicyManagerUpdatedEventFilter; + PolicyManagerUpdated(activeCoverLimit?: null): PolicyManagerUpdatedEventFilter; + + 'PolicyUpdated(uint256)'(policyID?: null): PolicyUpdatedEventFilter; + PolicyUpdated(policyID?: null): PolicyUpdatedEventFilter; + + 'PremiumCharged(address,uint256)'(policyholder?: null, amount?: null): PremiumChargedEventFilter; + PremiumCharged(policyholder?: null, amount?: null): PremiumChargedEventFilter; + + 'PremiumPartiallyCharged(address,uint256,uint256)'( + policyholder?: null, + actualPremium?: null, + chargedPremium?: null, + ): PremiumPartiallyChargedEventFilter; + PremiumPartiallyCharged( + policyholder?: null, + actualPremium?: null, + chargedPremium?: null, + ): PremiumPartiallyChargedEventFilter; + + 'ReferralRewardSet(uint256)'(referralReward?: null): ReferralRewardSetEventFilter; + ReferralRewardSet(referralReward?: null): ReferralRewardSetEventFilter; + + 'ReferralRewardsEarned(address,uint256)'( + rewardEarner?: null, + rewardPointsEarned?: null, + ): ReferralRewardsEarnedEventFilter; + ReferralRewardsEarned(rewardEarner?: null, rewardPointsEarned?: null): ReferralRewardsEarnedEventFilter; + + 'ReferralThresholdSet(uint256)'(referralThreshold?: null): ReferralThresholdSetEventFilter; + ReferralThresholdSet(referralThreshold?: null): ReferralThresholdSetEventFilter; + + 'RegistrySet(address)'(registry?: null): RegistrySetEventFilter; + RegistrySet(registry?: null): RegistrySetEventFilter; + + 'RewardPointsSet(address,uint256)'(policyholder?: null, amountGifted?: null): RewardPointsSetEventFilter; + RewardPointsSet(policyholder?: null, amountGifted?: null): RewardPointsSetEventFilter; + + 'Transfer(address,address,uint256)'( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null, + ): TransferEventFilter; + Transfer(from?: string | null, to?: string | null, tokenId?: BigNumberish | null): TransferEventFilter; + + 'WithdrawMade(address,uint256)'(policyholder?: null, amount?: null): WithdrawMadeEventFilter; + WithdrawMade(policyholder?: null, amount?: null): WithdrawMadeEventFilter; + }; + + estimateGas: { + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + accountBalanceOf(policyholder: string, overrides?: CallOverrides): Promise; + + activatePolicy( + policyholder_: string, + coverLimit_: BigNumberish, + amount_: BigNumberish, + referralCode_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + activeCoverLimit(overrides?: CallOverrides): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + availableCoverCapacity(overrides?: CallOverrides): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + chargeCycle(overrides?: CallOverrides): Promise; + + chargePremiums( + holders: string[], + premiums: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + cooldownPeriod(overrides?: CallOverrides): Promise; + + cooldownStart(policyholder_: string, overrides?: CallOverrides): Promise; + + coverLimitOf(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + deactivatePolicy(overrides?: Overrides & { from?: string | Promise }): Promise; + + deposit( + policyholder: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + getReferrerFromReferralCode(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isReferralCodeUsed(policyholder: string, overrides?: CallOverrides): Promise; + + isReferralCodeValid(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + isReferralOn(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxCover(overrides?: CallOverrides): Promise; + + maxRateDenom(overrides?: CallOverrides): Promise; + + maxRateNum(overrides?: CallOverrides): Promise; + + minRequiredAccountBalance(coverLimit: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + policyCount(overrides?: CallOverrides): Promise; + + policyOf(policyholder_: string, overrides?: CallOverrides): Promise; + + policyStatus(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + premiumsPaidOf(policyholder_: string, overrides?: CallOverrides): Promise; + + referralReward(overrides?: CallOverrides): Promise; + + referralThreshold(overrides?: CallOverrides): Promise; + + registry(overrides?: CallOverrides): Promise; + + rewardPointsOf(policyholder_: string, overrides?: CallOverrides): Promise; + + riskManager(overrides?: CallOverrides): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setBaseURI(baseURI_: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + setChargeCycle( + chargeCycle_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setCooldownPeriod( + cooldownPeriod_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setIsReferralOn( + isReferralOn_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setMaxRateDenom( + maxRateDenom_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setMaxRateNum( + maxRateNum_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPaused(paused_: boolean, overrides?: Overrides & { from?: string | Promise }): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralReward( + referralReward_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralThreshold( + referralThreshhold_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRegistry(registry_: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + setRewardPoints( + policyholder_: string, + rewardPoints_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(policyID: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateCoverLimit( + newCoverLimit_: BigNumberish, + referralCode_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + }; + + populateTransaction: { + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + accountBalanceOf(policyholder: string, overrides?: CallOverrides): Promise; + + activatePolicy( + policyholder_: string, + coverLimit_: BigNumberish, + amount_: BigNumberish, + referralCode_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + activeCoverLimit(overrides?: CallOverrides): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + availableCoverCapacity(overrides?: CallOverrides): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + chargeCycle(overrides?: CallOverrides): Promise; + + chargePremiums( + holders: string[], + premiums: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + cooldownPeriod(overrides?: CallOverrides): Promise; + + cooldownStart(policyholder_: string, overrides?: CallOverrides): Promise; + + coverLimitOf(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + deactivatePolicy(overrides?: Overrides & { from?: string | Promise }): Promise; + + deposit( + policyholder: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + getReferrerFromReferralCode(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isReferralCodeUsed(policyholder: string, overrides?: CallOverrides): Promise; + + isReferralCodeValid(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + isReferralOn(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxCover(overrides?: CallOverrides): Promise; + + maxRateDenom(overrides?: CallOverrides): Promise; + + maxRateNum(overrides?: CallOverrides): Promise; + + minRequiredAccountBalance(coverLimit: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + policyCount(overrides?: CallOverrides): Promise; + + policyOf(policyholder_: string, overrides?: CallOverrides): Promise; + + policyStatus(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + premiumsPaidOf(policyholder_: string, overrides?: CallOverrides): Promise; + + referralReward(overrides?: CallOverrides): Promise; + + referralThreshold(overrides?: CallOverrides): Promise; + + registry(overrides?: CallOverrides): Promise; + + rewardPointsOf(policyholder_: string, overrides?: CallOverrides): Promise; + + riskManager(overrides?: CallOverrides): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setBaseURI( + baseURI_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setChargeCycle( + chargeCycle_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setCooldownPeriod( + cooldownPeriod_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setIsReferralOn( + isReferralOn_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setMaxRateDenom( + maxRateDenom_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setMaxRateNum( + maxRateNum_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPaused( + paused_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralReward( + referralReward_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralThreshold( + referralThreshhold_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRegistry( + registry_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRewardPoints( + policyholder_: string, + rewardPoints_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(policyID: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateCoverLimit( + newCoverLimit_: BigNumberish, + referralCode_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + }; +} diff --git a/src/apps/solace/contracts/ethers/SolaceCoverProductV2.ts b/src/apps/solace/contracts/ethers/SolaceCoverProductV2.ts new file mode 100644 index 000000000..692c05550 --- /dev/null +++ b/src/apps/solace/contracts/ethers/SolaceCoverProductV2.ts @@ -0,0 +1,1847 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export interface SolaceCoverProductV2Interface extends utils.Interface { + functions: { + 'acceptGovernance()': FunctionFragment; + 'accountBalanceOf(address)': FunctionFragment; + 'activatePolicy(address,uint256,uint256,bytes,uint256[])': FunctionFragment; + 'activeCoverLimit()': FunctionFragment; + 'addSupportedChains(uint256[])': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'asset()': FunctionFragment; + 'availableCoverCapacity()': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'baseURI()': FunctionFragment; + 'chargeCycle()': FunctionFragment; + 'chargePremiums(address[],uint256[])': FunctionFragment; + 'cooldownPeriod()': FunctionFragment; + 'cooldownStart(address)': FunctionFragment; + 'coverLimitOf(uint256)': FunctionFragment; + 'deactivatePolicy()': FunctionFragment; + 'deposit(address,uint256)': FunctionFragment; + 'getApproved(uint256)': FunctionFragment; + 'getChain(uint256)': FunctionFragment; + 'getPolicyChainInfo(uint256)': FunctionFragment; + 'getReferrerFromReferralCode(bytes)': FunctionFragment; + 'governance()': FunctionFragment; + 'governanceIsLocked()': FunctionFragment; + 'isApprovedForAll(address,address)': FunctionFragment; + 'isReferralCodeUsed(address)': FunctionFragment; + 'isReferralCodeValid(bytes)': FunctionFragment; + 'isReferralOn()': FunctionFragment; + 'isSupportedChain(uint256)': FunctionFragment; + 'lockGovernance()': FunctionFragment; + 'maxCover()': FunctionFragment; + 'maxRate()': FunctionFragment; + 'minRequiredAccountBalance(uint256)': FunctionFragment; + 'name()': FunctionFragment; + 'numSupportedChains()': FunctionFragment; + 'ownerOf(uint256)': FunctionFragment; + 'paused()': FunctionFragment; + 'pendingGovernance()': FunctionFragment; + 'policyCount()': FunctionFragment; + 'policyOf(address)': FunctionFragment; + 'policyStatus(uint256)': FunctionFragment; + 'premiumsPaidOf(address)': FunctionFragment; + 'referralReward()': FunctionFragment; + 'referralThreshold()': FunctionFragment; + 'registry()': FunctionFragment; + 'removeSupportedChain(uint256)': FunctionFragment; + 'rewardPointsOf(address)': FunctionFragment; + 'riskManager()': FunctionFragment; + 'safeTransferFrom(address,address,uint256)': FunctionFragment; + 'safeTransferFrom(address,address,uint256,bytes)': FunctionFragment; + 'setApprovalForAll(address,bool)': FunctionFragment; + 'setAsset(string)': FunctionFragment; + 'setBaseURI(string)': FunctionFragment; + 'setChargeCycle(uint256)': FunctionFragment; + 'setCooldownPeriod(uint256)': FunctionFragment; + 'setIsReferralOn(bool)': FunctionFragment; + 'setMaxRate(uint256,uint256)': FunctionFragment; + 'setPaused(bool)': FunctionFragment; + 'setPendingGovernance(address)': FunctionFragment; + 'setReferralReward(uint256)': FunctionFragment; + 'setReferralThreshold(uint256)': FunctionFragment; + 'setRegistry(address)': FunctionFragment; + 'setRewardPoints(address,uint256)': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + 'symbol()': FunctionFragment; + 'tokenURI(uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + 'updateCoverLimit(uint256,bytes)': FunctionFragment; + 'updatePolicyChainInfo(uint256[])': FunctionFragment; + 'withdraw()': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'acceptGovernance' + | 'accountBalanceOf' + | 'activatePolicy' + | 'activeCoverLimit' + | 'addSupportedChains' + | 'approve' + | 'asset' + | 'availableCoverCapacity' + | 'balanceOf' + | 'baseURI' + | 'chargeCycle' + | 'chargePremiums' + | 'cooldownPeriod' + | 'cooldownStart' + | 'coverLimitOf' + | 'deactivatePolicy' + | 'deposit' + | 'getApproved' + | 'getChain' + | 'getPolicyChainInfo' + | 'getReferrerFromReferralCode' + | 'governance' + | 'governanceIsLocked' + | 'isApprovedForAll' + | 'isReferralCodeUsed' + | 'isReferralCodeValid' + | 'isReferralOn' + | 'isSupportedChain' + | 'lockGovernance' + | 'maxCover' + | 'maxRate' + | 'minRequiredAccountBalance' + | 'name' + | 'numSupportedChains' + | 'ownerOf' + | 'paused' + | 'pendingGovernance' + | 'policyCount' + | 'policyOf' + | 'policyStatus' + | 'premiumsPaidOf' + | 'referralReward' + | 'referralThreshold' + | 'registry' + | 'removeSupportedChain' + | 'rewardPointsOf' + | 'riskManager' + | 'safeTransferFrom(address,address,uint256)' + | 'safeTransferFrom(address,address,uint256,bytes)' + | 'setApprovalForAll' + | 'setAsset' + | 'setBaseURI' + | 'setChargeCycle' + | 'setCooldownPeriod' + | 'setIsReferralOn' + | 'setMaxRate' + | 'setPaused' + | 'setPendingGovernance' + | 'setReferralReward' + | 'setReferralThreshold' + | 'setRegistry' + | 'setRewardPoints' + | 'supportsInterface' + | 'symbol' + | 'tokenURI' + | 'transferFrom' + | 'updateCoverLimit' + | 'updatePolicyChainInfo' + | 'withdraw', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'acceptGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'accountBalanceOf', values: [string]): string; + encodeFunctionData( + functionFragment: 'activatePolicy', + values: [string, BigNumberish, BigNumberish, BytesLike, BigNumberish[]], + ): string; + encodeFunctionData(functionFragment: 'activeCoverLimit', values?: undefined): string; + encodeFunctionData(functionFragment: 'addSupportedChains', values: [BigNumberish[]]): string; + encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'asset', values?: undefined): string; + encodeFunctionData(functionFragment: 'availableCoverCapacity', values?: undefined): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'baseURI', values?: undefined): string; + encodeFunctionData(functionFragment: 'chargeCycle', values?: undefined): string; + encodeFunctionData(functionFragment: 'chargePremiums', values: [string[], BigNumberish[]]): string; + encodeFunctionData(functionFragment: 'cooldownPeriod', values?: undefined): string; + encodeFunctionData(functionFragment: 'cooldownStart', values: [string]): string; + encodeFunctionData(functionFragment: 'coverLimitOf', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'deactivatePolicy', values?: undefined): string; + encodeFunctionData(functionFragment: 'deposit', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'getApproved', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'getChain', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'getPolicyChainInfo', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'getReferrerFromReferralCode', values: [BytesLike]): string; + encodeFunctionData(functionFragment: 'governance', values?: undefined): string; + encodeFunctionData(functionFragment: 'governanceIsLocked', values?: undefined): string; + encodeFunctionData(functionFragment: 'isApprovedForAll', values: [string, string]): string; + encodeFunctionData(functionFragment: 'isReferralCodeUsed', values: [string]): string; + encodeFunctionData(functionFragment: 'isReferralCodeValid', values: [BytesLike]): string; + encodeFunctionData(functionFragment: 'isReferralOn', values?: undefined): string; + encodeFunctionData(functionFragment: 'isSupportedChain', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'lockGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'maxCover', values?: undefined): string; + encodeFunctionData(functionFragment: 'maxRate', values?: undefined): string; + encodeFunctionData(functionFragment: 'minRequiredAccountBalance', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'numSupportedChains', values?: undefined): string; + encodeFunctionData(functionFragment: 'ownerOf', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'paused', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'policyCount', values?: undefined): string; + encodeFunctionData(functionFragment: 'policyOf', values: [string]): string; + encodeFunctionData(functionFragment: 'policyStatus', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'premiumsPaidOf', values: [string]): string; + encodeFunctionData(functionFragment: 'referralReward', values?: undefined): string; + encodeFunctionData(functionFragment: 'referralThreshold', values?: undefined): string; + encodeFunctionData(functionFragment: 'registry', values?: undefined): string; + encodeFunctionData(functionFragment: 'removeSupportedChain', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'rewardPointsOf', values: [string]): string; + encodeFunctionData(functionFragment: 'riskManager', values?: undefined): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256)', + values: [string, string, BigNumberish], + ): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', + values: [string, string, BigNumberish, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'setApprovalForAll', values: [string, boolean]): string; + encodeFunctionData(functionFragment: 'setAsset', values: [string]): string; + encodeFunctionData(functionFragment: 'setBaseURI', values: [string]): string; + encodeFunctionData(functionFragment: 'setChargeCycle', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setCooldownPeriod', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setIsReferralOn', values: [boolean]): string; + encodeFunctionData(functionFragment: 'setMaxRate', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'setPaused', values: [boolean]): string; + encodeFunctionData(functionFragment: 'setPendingGovernance', values: [string]): string; + encodeFunctionData(functionFragment: 'setReferralReward', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setReferralThreshold', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setRegistry', values: [string]): string; + encodeFunctionData(functionFragment: 'setRewardPoints', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [BytesLike]): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'tokenURI', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'updateCoverLimit', values: [BigNumberish, BytesLike]): string; + encodeFunctionData(functionFragment: 'updatePolicyChainInfo', values: [BigNumberish[]]): string; + encodeFunctionData(functionFragment: 'withdraw', values?: undefined): string; + + decodeFunctionResult(functionFragment: 'acceptGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'accountBalanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'activatePolicy', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'activeCoverLimit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'addSupportedChains', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'asset', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'availableCoverCapacity', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'baseURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'chargeCycle', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'chargePremiums', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'cooldownPeriod', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'cooldownStart', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'coverLimitOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deactivatePolicy', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getApproved', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getChain', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getPolicyChainInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getReferrerFromReferralCode', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governanceIsLocked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isApprovedForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isReferralCodeUsed', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isReferralCodeValid', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isReferralOn', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isSupportedChain', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'maxCover', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'maxRate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'minRequiredAccountBalance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'numSupportedChains', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'ownerOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'policyCount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'policyOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'policyStatus', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'premiumsPaidOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'referralReward', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'referralThreshold', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'registry', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'removeSupportedChain', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardPointsOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'riskManager', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setApprovalForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setAsset', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setBaseURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setChargeCycle', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setCooldownPeriod', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setIsReferralOn', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setMaxRate', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPaused', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setReferralReward', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setReferralThreshold', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setRegistry', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setRewardPoints', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updateCoverLimit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'updatePolicyChainInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + + events: { + 'Approval(address,address,uint256)': EventFragment; + 'ApprovalForAll(address,address,bool)': EventFragment; + 'AssetSet(string)': EventFragment; + 'BaseURISet(string)': EventFragment; + 'ChargeCycleSet(uint256)': EventFragment; + 'CooldownPeriodSet(uint256)': EventFragment; + 'CooldownStarted(address,uint256)': EventFragment; + 'CooldownStopped(address)': EventFragment; + 'DepositMade(address,address,uint256)': EventFragment; + 'GovernanceLocked()': EventFragment; + 'GovernancePending(address)': EventFragment; + 'GovernanceTransferred(address,address)': EventFragment; + 'IsReferralOnSet(bool)': EventFragment; + 'MaxRateSet(uint256,uint256)': EventFragment; + 'PauseSet(bool)': EventFragment; + 'PolicyCreated(uint256)': EventFragment; + 'PolicyDeactivated(uint256)': EventFragment; + 'PolicyManagerUpdated(uint256)': EventFragment; + 'PolicyUpdated(uint256)': EventFragment; + 'PremiumCharged(address,uint256)': EventFragment; + 'PremiumPartiallyCharged(address,uint256,uint256)': EventFragment; + 'ReferralRewardSet(uint256)': EventFragment; + 'ReferralRewardsEarned(address,uint256)': EventFragment; + 'ReferralThresholdSet(uint256)': EventFragment; + 'RegistrySet(address)': EventFragment; + 'RewardPointsSet(address,uint256)': EventFragment; + 'SupportedChainRemoved(uint256)': EventFragment; + 'SupportedChainSet(uint256)': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + 'WithdrawMade(address,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ApprovalForAll'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'AssetSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'BaseURISet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ChargeCycleSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CooldownPeriodSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CooldownStarted'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'CooldownStopped'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'DepositMade'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceLocked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernancePending'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'IsReferralOnSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'MaxRateSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PauseSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PolicyCreated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PolicyDeactivated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PolicyManagerUpdated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PolicyUpdated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PremiumCharged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'PremiumPartiallyCharged'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ReferralRewardSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ReferralRewardsEarned'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ReferralThresholdSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RegistrySet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RewardPointsSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'SupportedChainRemoved'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'SupportedChainSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'WithdrawMade'): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + approved: string; + tokenId: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface ApprovalForAllEventObject { + owner: string; + operator: string; + approved: boolean; +} +export type ApprovalForAllEvent = TypedEvent<[string, string, boolean], ApprovalForAllEventObject>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export interface AssetSetEventObject { + asset: string; +} +export type AssetSetEvent = TypedEvent<[string], AssetSetEventObject>; + +export type AssetSetEventFilter = TypedEventFilter; + +export interface BaseURISetEventObject { + baseURI: string; +} +export type BaseURISetEvent = TypedEvent<[string], BaseURISetEventObject>; + +export type BaseURISetEventFilter = TypedEventFilter; + +export interface ChargeCycleSetEventObject { + chargeCycle: BigNumber; +} +export type ChargeCycleSetEvent = TypedEvent<[BigNumber], ChargeCycleSetEventObject>; + +export type ChargeCycleSetEventFilter = TypedEventFilter; + +export interface CooldownPeriodSetEventObject { + cooldownPeriod: BigNumber; +} +export type CooldownPeriodSetEvent = TypedEvent<[BigNumber], CooldownPeriodSetEventObject>; + +export type CooldownPeriodSetEventFilter = TypedEventFilter; + +export interface CooldownStartedEventObject { + policyholder: string; + startTime: BigNumber; +} +export type CooldownStartedEvent = TypedEvent<[string, BigNumber], CooldownStartedEventObject>; + +export type CooldownStartedEventFilter = TypedEventFilter; + +export interface CooldownStoppedEventObject { + policyholder: string; +} +export type CooldownStoppedEvent = TypedEvent<[string], CooldownStoppedEventObject>; + +export type CooldownStoppedEventFilter = TypedEventFilter; + +export interface DepositMadeEventObject { + from: string; + policyholder: string; + amount: BigNumber; +} +export type DepositMadeEvent = TypedEvent<[string, string, BigNumber], DepositMadeEventObject>; + +export type DepositMadeEventFilter = TypedEventFilter; + +export interface GovernanceLockedEventObject {} +export type GovernanceLockedEvent = TypedEvent<[], GovernanceLockedEventObject>; + +export type GovernanceLockedEventFilter = TypedEventFilter; + +export interface GovernancePendingEventObject { + pendingGovernance: string; +} +export type GovernancePendingEvent = TypedEvent<[string], GovernancePendingEventObject>; + +export type GovernancePendingEventFilter = TypedEventFilter; + +export interface GovernanceTransferredEventObject { + oldGovernance: string; + newGovernance: string; +} +export type GovernanceTransferredEvent = TypedEvent<[string, string], GovernanceTransferredEventObject>; + +export type GovernanceTransferredEventFilter = TypedEventFilter; + +export interface IsReferralOnSetEventObject { + isReferralOn: boolean; +} +export type IsReferralOnSetEvent = TypedEvent<[boolean], IsReferralOnSetEventObject>; + +export type IsReferralOnSetEventFilter = TypedEventFilter; + +export interface MaxRateSetEventObject { + maxRateNum: BigNumber; + maxRateDenom: BigNumber; +} +export type MaxRateSetEvent = TypedEvent<[BigNumber, BigNumber], MaxRateSetEventObject>; + +export type MaxRateSetEventFilter = TypedEventFilter; + +export interface PauseSetEventObject { + pause: boolean; +} +export type PauseSetEvent = TypedEvent<[boolean], PauseSetEventObject>; + +export type PauseSetEventFilter = TypedEventFilter; + +export interface PolicyCreatedEventObject { + policyID: BigNumber; +} +export type PolicyCreatedEvent = TypedEvent<[BigNumber], PolicyCreatedEventObject>; + +export type PolicyCreatedEventFilter = TypedEventFilter; + +export interface PolicyDeactivatedEventObject { + policyID: BigNumber; +} +export type PolicyDeactivatedEvent = TypedEvent<[BigNumber], PolicyDeactivatedEventObject>; + +export type PolicyDeactivatedEventFilter = TypedEventFilter; + +export interface PolicyManagerUpdatedEventObject { + activeCoverLimit: BigNumber; +} +export type PolicyManagerUpdatedEvent = TypedEvent<[BigNumber], PolicyManagerUpdatedEventObject>; + +export type PolicyManagerUpdatedEventFilter = TypedEventFilter; + +export interface PolicyUpdatedEventObject { + policyID: BigNumber; +} +export type PolicyUpdatedEvent = TypedEvent<[BigNumber], PolicyUpdatedEventObject>; + +export type PolicyUpdatedEventFilter = TypedEventFilter; + +export interface PremiumChargedEventObject { + policyholder: string; + amount: BigNumber; +} +export type PremiumChargedEvent = TypedEvent<[string, BigNumber], PremiumChargedEventObject>; + +export type PremiumChargedEventFilter = TypedEventFilter; + +export interface PremiumPartiallyChargedEventObject { + policyholder: string; + actualPremium: BigNumber; + chargedPremium: BigNumber; +} +export type PremiumPartiallyChargedEvent = TypedEvent< + [string, BigNumber, BigNumber], + PremiumPartiallyChargedEventObject +>; + +export type PremiumPartiallyChargedEventFilter = TypedEventFilter; + +export interface ReferralRewardSetEventObject { + referralReward: BigNumber; +} +export type ReferralRewardSetEvent = TypedEvent<[BigNumber], ReferralRewardSetEventObject>; + +export type ReferralRewardSetEventFilter = TypedEventFilter; + +export interface ReferralRewardsEarnedEventObject { + rewardEarner: string; + rewardPointsEarned: BigNumber; +} +export type ReferralRewardsEarnedEvent = TypedEvent<[string, BigNumber], ReferralRewardsEarnedEventObject>; + +export type ReferralRewardsEarnedEventFilter = TypedEventFilter; + +export interface ReferralThresholdSetEventObject { + referralThreshold: BigNumber; +} +export type ReferralThresholdSetEvent = TypedEvent<[BigNumber], ReferralThresholdSetEventObject>; + +export type ReferralThresholdSetEventFilter = TypedEventFilter; + +export interface RegistrySetEventObject { + registry: string; +} +export type RegistrySetEvent = TypedEvent<[string], RegistrySetEventObject>; + +export type RegistrySetEventFilter = TypedEventFilter; + +export interface RewardPointsSetEventObject { + policyholder: string; + amountGifted: BigNumber; +} +export type RewardPointsSetEvent = TypedEvent<[string, BigNumber], RewardPointsSetEventObject>; + +export type RewardPointsSetEventFilter = TypedEventFilter; + +export interface SupportedChainRemovedEventObject { + chainId: BigNumber; +} +export type SupportedChainRemovedEvent = TypedEvent<[BigNumber], SupportedChainRemovedEventObject>; + +export type SupportedChainRemovedEventFilter = TypedEventFilter; + +export interface SupportedChainSetEventObject { + chainId: BigNumber; +} +export type SupportedChainSetEvent = TypedEvent<[BigNumber], SupportedChainSetEventObject>; + +export type SupportedChainSetEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + tokenId: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface WithdrawMadeEventObject { + policyholder: string; + amount: BigNumber; +} +export type WithdrawMadeEvent = TypedEvent<[string, BigNumber], WithdrawMadeEventObject>; + +export type WithdrawMadeEventFilter = TypedEventFilter; + +export interface SolaceCoverProductV2 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: SolaceCoverProductV2Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + accountBalanceOf(policyholder: string, overrides?: CallOverrides): Promise<[BigNumber] & { balance: BigNumber }>; + + activatePolicy( + policyholder_: string, + coverLimit_: BigNumberish, + amount_: BigNumberish, + referralCode_: BytesLike, + chains_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + activeCoverLimit(overrides?: CallOverrides): Promise<[BigNumber] & { amount: BigNumber }>; + + addSupportedChains( + supportedChains: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + asset(overrides?: CallOverrides): Promise<[string]>; + + availableCoverCapacity(overrides?: CallOverrides): Promise<[BigNumber] & { availableCoverCapacity_: BigNumber }>; + + balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + baseURI(overrides?: CallOverrides): Promise<[string]>; + + chargeCycle(overrides?: CallOverrides): Promise<[BigNumber] & { chargeCycle_: BigNumber }>; + + chargePremiums( + holders: string[], + premiums: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + cooldownPeriod(overrides?: CallOverrides): Promise<[BigNumber] & { cooldownPeriod_: BigNumber }>; + + cooldownStart( + policyholder_: string, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { cooldownStart_: BigNumber }>; + + coverLimitOf(policyID_: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber] & { amount: BigNumber }>; + + deactivatePolicy(overrides?: Overrides & { from?: string | Promise }): Promise; + + deposit( + policyholder: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + getChain(chainIndex: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber] & { chainId: BigNumber }>; + + getPolicyChainInfo( + policyID: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber[]] & { policyChains: BigNumber[] }>; + + getReferrerFromReferralCode( + referralCode: BytesLike, + overrides?: CallOverrides, + ): Promise<[string] & { referrer: string }>; + + governance(overrides?: CallOverrides): Promise<[string]>; + + governanceIsLocked(overrides?: CallOverrides): Promise<[boolean]>; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise<[boolean]>; + + isReferralCodeUsed( + policyholder: string, + overrides?: CallOverrides, + ): Promise<[boolean] & { isReferralCodeUsed_: boolean }>; + + isReferralCodeValid(referralCode: BytesLike, overrides?: CallOverrides): Promise<[boolean]>; + + isReferralOn(overrides?: CallOverrides): Promise<[boolean] & { isReferralOn_: boolean }>; + + isSupportedChain(chainId: BigNumberish, overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxCover(overrides?: CallOverrides): Promise<[BigNumber] & { cover: BigNumber }>; + + maxRate(overrides?: CallOverrides): Promise< + [BigNumber, BigNumber] & { + maxRateNum_: BigNumber; + maxRateDenom_: BigNumber; + } + >; + + minRequiredAccountBalance( + coverLimit: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { minRequiredAccountBalance_: BigNumber }>; + + name(overrides?: CallOverrides): Promise<[string]>; + + numSupportedChains(overrides?: CallOverrides): Promise<[BigNumber] & { count: BigNumber }>; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + paused(overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + pendingGovernance(overrides?: CallOverrides): Promise<[string]>; + + policyCount(overrides?: CallOverrides): Promise<[BigNumber] & { count: BigNumber }>; + + policyOf(policyholder_: string, overrides?: CallOverrides): Promise<[BigNumber] & { policyID: BigNumber }>; + + policyStatus(policyID_: BigNumberish, overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + premiumsPaidOf( + policyholder_: string, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { premiumsPaid_: BigNumber }>; + + referralReward(overrides?: CallOverrides): Promise<[BigNumber] & { referralReward_: BigNumber }>; + + referralThreshold(overrides?: CallOverrides): Promise<[BigNumber] & { referralThreshold_: BigNumber }>; + + registry(overrides?: CallOverrides): Promise<[string] & { registry_: string }>; + + removeSupportedChain( + chainId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + rewardPointsOf( + policyholder_: string, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { rewardPoints_: BigNumber }>; + + riskManager(overrides?: CallOverrides): Promise<[string] & { riskManager_: string }>; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAsset( + assetName: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setBaseURI( + baseURI_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setChargeCycle( + chargeCycle_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setCooldownPeriod( + cooldownPeriod_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setIsReferralOn( + isReferralOn_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setMaxRate( + maxRateNum_: BigNumberish, + maxRateDenom_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPaused( + paused_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralReward( + referralReward_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralThreshold( + referralThreshhold_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRegistry( + registry_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRewardPoints( + policyholder_: string, + rewardPoints_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + tokenURI(policyID: BigNumberish, overrides?: CallOverrides): Promise<[string] & { tokenURI_: string }>; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateCoverLimit( + newCoverLimit_: BigNumberish, + referralCode_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePolicyChainInfo( + policyChains: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + }; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + accountBalanceOf(policyholder: string, overrides?: CallOverrides): Promise; + + activatePolicy( + policyholder_: string, + coverLimit_: BigNumberish, + amount_: BigNumberish, + referralCode_: BytesLike, + chains_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + activeCoverLimit(overrides?: CallOverrides): Promise; + + addSupportedChains( + supportedChains: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + asset(overrides?: CallOverrides): Promise; + + availableCoverCapacity(overrides?: CallOverrides): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + chargeCycle(overrides?: CallOverrides): Promise; + + chargePremiums( + holders: string[], + premiums: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + cooldownPeriod(overrides?: CallOverrides): Promise; + + cooldownStart(policyholder_: string, overrides?: CallOverrides): Promise; + + coverLimitOf(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + deactivatePolicy(overrides?: Overrides & { from?: string | Promise }): Promise; + + deposit( + policyholder: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + getChain(chainIndex: BigNumberish, overrides?: CallOverrides): Promise; + + getPolicyChainInfo(policyID: BigNumberish, overrides?: CallOverrides): Promise; + + getReferrerFromReferralCode(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isReferralCodeUsed(policyholder: string, overrides?: CallOverrides): Promise; + + isReferralCodeValid(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + isReferralOn(overrides?: CallOverrides): Promise; + + isSupportedChain(chainId: BigNumberish, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxCover(overrides?: CallOverrides): Promise; + + maxRate(overrides?: CallOverrides): Promise< + [BigNumber, BigNumber] & { + maxRateNum_: BigNumber; + maxRateDenom_: BigNumber; + } + >; + + minRequiredAccountBalance(coverLimit: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + numSupportedChains(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + policyCount(overrides?: CallOverrides): Promise; + + policyOf(policyholder_: string, overrides?: CallOverrides): Promise; + + policyStatus(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + premiumsPaidOf(policyholder_: string, overrides?: CallOverrides): Promise; + + referralReward(overrides?: CallOverrides): Promise; + + referralThreshold(overrides?: CallOverrides): Promise; + + registry(overrides?: CallOverrides): Promise; + + removeSupportedChain( + chainId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + rewardPointsOf(policyholder_: string, overrides?: CallOverrides): Promise; + + riskManager(overrides?: CallOverrides): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAsset( + assetName: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setBaseURI( + baseURI_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setChargeCycle( + chargeCycle_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setCooldownPeriod( + cooldownPeriod_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setIsReferralOn( + isReferralOn_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setMaxRate( + maxRateNum_: BigNumberish, + maxRateDenom_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPaused( + paused_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralReward( + referralReward_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralThreshold( + referralThreshhold_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRegistry( + registry_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRewardPoints( + policyholder_: string, + rewardPoints_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(policyID: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateCoverLimit( + newCoverLimit_: BigNumberish, + referralCode_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePolicyChainInfo( + policyChains: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + + callStatic: { + acceptGovernance(overrides?: CallOverrides): Promise; + + accountBalanceOf(policyholder: string, overrides?: CallOverrides): Promise; + + activatePolicy( + policyholder_: string, + coverLimit_: BigNumberish, + amount_: BigNumberish, + referralCode_: BytesLike, + chains_: BigNumberish[], + overrides?: CallOverrides, + ): Promise; + + activeCoverLimit(overrides?: CallOverrides): Promise; + + addSupportedChains(supportedChains: BigNumberish[], overrides?: CallOverrides): Promise; + + approve(to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + asset(overrides?: CallOverrides): Promise; + + availableCoverCapacity(overrides?: CallOverrides): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + chargeCycle(overrides?: CallOverrides): Promise; + + chargePremiums(holders: string[], premiums: BigNumberish[], overrides?: CallOverrides): Promise; + + cooldownPeriod(overrides?: CallOverrides): Promise; + + cooldownStart(policyholder_: string, overrides?: CallOverrides): Promise; + + coverLimitOf(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + deactivatePolicy(overrides?: CallOverrides): Promise; + + deposit(policyholder: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + getChain(chainIndex: BigNumberish, overrides?: CallOverrides): Promise; + + getPolicyChainInfo(policyID: BigNumberish, overrides?: CallOverrides): Promise; + + getReferrerFromReferralCode(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isReferralCodeUsed(policyholder: string, overrides?: CallOverrides): Promise; + + isReferralCodeValid(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + isReferralOn(overrides?: CallOverrides): Promise; + + isSupportedChain(chainId: BigNumberish, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: CallOverrides): Promise; + + maxCover(overrides?: CallOverrides): Promise; + + maxRate(overrides?: CallOverrides): Promise< + [BigNumber, BigNumber] & { + maxRateNum_: BigNumber; + maxRateDenom_: BigNumber; + } + >; + + minRequiredAccountBalance(coverLimit: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + numSupportedChains(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + policyCount(overrides?: CallOverrides): Promise; + + policyOf(policyholder_: string, overrides?: CallOverrides): Promise; + + policyStatus(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + premiumsPaidOf(policyholder_: string, overrides?: CallOverrides): Promise; + + referralReward(overrides?: CallOverrides): Promise; + + referralThreshold(overrides?: CallOverrides): Promise; + + registry(overrides?: CallOverrides): Promise; + + removeSupportedChain(chainId: BigNumberish, overrides?: CallOverrides): Promise; + + rewardPointsOf(policyholder_: string, overrides?: CallOverrides): Promise; + + riskManager(overrides?: CallOverrides): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: CallOverrides, + ): Promise; + + setApprovalForAll(operator: string, approved: boolean, overrides?: CallOverrides): Promise; + + setAsset(assetName: string, overrides?: CallOverrides): Promise; + + setBaseURI(baseURI_: string, overrides?: CallOverrides): Promise; + + setChargeCycle(chargeCycle_: BigNumberish, overrides?: CallOverrides): Promise; + + setCooldownPeriod(cooldownPeriod_: BigNumberish, overrides?: CallOverrides): Promise; + + setIsReferralOn(isReferralOn_: boolean, overrides?: CallOverrides): Promise; + + setMaxRate(maxRateNum_: BigNumberish, maxRateDenom_: BigNumberish, overrides?: CallOverrides): Promise; + + setPaused(paused_: boolean, overrides?: CallOverrides): Promise; + + setPendingGovernance(pendingGovernance_: string, overrides?: CallOverrides): Promise; + + setReferralReward(referralReward_: BigNumberish, overrides?: CallOverrides): Promise; + + setReferralThreshold(referralThreshhold_: BigNumberish, overrides?: CallOverrides): Promise; + + setRegistry(registry_: string, overrides?: CallOverrides): Promise; + + setRewardPoints(policyholder_: string, rewardPoints_: BigNumberish, overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(policyID: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom(from: string, to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + updateCoverLimit(newCoverLimit_: BigNumberish, referralCode_: BytesLike, overrides?: CallOverrides): Promise; + + updatePolicyChainInfo(policyChains: BigNumberish[], overrides?: CallOverrides): Promise; + + withdraw(overrides?: CallOverrides): Promise; + }; + + filters: { + 'Approval(address,address,uint256)'( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null, + ): ApprovalEventFilter; + Approval(owner?: string | null, approved?: string | null, tokenId?: BigNumberish | null): ApprovalEventFilter; + + 'ApprovalForAll(address,address,bool)'( + owner?: string | null, + operator?: string | null, + approved?: null, + ): ApprovalForAllEventFilter; + ApprovalForAll(owner?: string | null, operator?: string | null, approved?: null): ApprovalForAllEventFilter; + + 'AssetSet(string)'(asset?: null): AssetSetEventFilter; + AssetSet(asset?: null): AssetSetEventFilter; + + 'BaseURISet(string)'(baseURI?: null): BaseURISetEventFilter; + BaseURISet(baseURI?: null): BaseURISetEventFilter; + + 'ChargeCycleSet(uint256)'(chargeCycle?: null): ChargeCycleSetEventFilter; + ChargeCycleSet(chargeCycle?: null): ChargeCycleSetEventFilter; + + 'CooldownPeriodSet(uint256)'(cooldownPeriod?: null): CooldownPeriodSetEventFilter; + CooldownPeriodSet(cooldownPeriod?: null): CooldownPeriodSetEventFilter; + + 'CooldownStarted(address,uint256)'(policyholder?: null, startTime?: null): CooldownStartedEventFilter; + CooldownStarted(policyholder?: null, startTime?: null): CooldownStartedEventFilter; + + 'CooldownStopped(address)'(policyholder?: null): CooldownStoppedEventFilter; + CooldownStopped(policyholder?: null): CooldownStoppedEventFilter; + + 'DepositMade(address,address,uint256)'(from?: null, policyholder?: null, amount?: null): DepositMadeEventFilter; + DepositMade(from?: null, policyholder?: null, amount?: null): DepositMadeEventFilter; + + 'GovernanceLocked()'(): GovernanceLockedEventFilter; + GovernanceLocked(): GovernanceLockedEventFilter; + + 'GovernancePending(address)'(pendingGovernance?: null): GovernancePendingEventFilter; + GovernancePending(pendingGovernance?: null): GovernancePendingEventFilter; + + 'GovernanceTransferred(address,address)'( + oldGovernance?: null, + newGovernance?: null, + ): GovernanceTransferredEventFilter; + GovernanceTransferred(oldGovernance?: null, newGovernance?: null): GovernanceTransferredEventFilter; + + 'IsReferralOnSet(bool)'(isReferralOn?: null): IsReferralOnSetEventFilter; + IsReferralOnSet(isReferralOn?: null): IsReferralOnSetEventFilter; + + 'MaxRateSet(uint256,uint256)'(maxRateNum?: null, maxRateDenom?: null): MaxRateSetEventFilter; + MaxRateSet(maxRateNum?: null, maxRateDenom?: null): MaxRateSetEventFilter; + + 'PauseSet(bool)'(pause?: null): PauseSetEventFilter; + PauseSet(pause?: null): PauseSetEventFilter; + + 'PolicyCreated(uint256)'(policyID?: null): PolicyCreatedEventFilter; + PolicyCreated(policyID?: null): PolicyCreatedEventFilter; + + 'PolicyDeactivated(uint256)'(policyID?: null): PolicyDeactivatedEventFilter; + PolicyDeactivated(policyID?: null): PolicyDeactivatedEventFilter; + + 'PolicyManagerUpdated(uint256)'(activeCoverLimit?: null): PolicyManagerUpdatedEventFilter; + PolicyManagerUpdated(activeCoverLimit?: null): PolicyManagerUpdatedEventFilter; + + 'PolicyUpdated(uint256)'(policyID?: null): PolicyUpdatedEventFilter; + PolicyUpdated(policyID?: null): PolicyUpdatedEventFilter; + + 'PremiumCharged(address,uint256)'(policyholder?: null, amount?: null): PremiumChargedEventFilter; + PremiumCharged(policyholder?: null, amount?: null): PremiumChargedEventFilter; + + 'PremiumPartiallyCharged(address,uint256,uint256)'( + policyholder?: null, + actualPremium?: null, + chargedPremium?: null, + ): PremiumPartiallyChargedEventFilter; + PremiumPartiallyCharged( + policyholder?: null, + actualPremium?: null, + chargedPremium?: null, + ): PremiumPartiallyChargedEventFilter; + + 'ReferralRewardSet(uint256)'(referralReward?: null): ReferralRewardSetEventFilter; + ReferralRewardSet(referralReward?: null): ReferralRewardSetEventFilter; + + 'ReferralRewardsEarned(address,uint256)'( + rewardEarner?: null, + rewardPointsEarned?: null, + ): ReferralRewardsEarnedEventFilter; + ReferralRewardsEarned(rewardEarner?: null, rewardPointsEarned?: null): ReferralRewardsEarnedEventFilter; + + 'ReferralThresholdSet(uint256)'(referralThreshold?: null): ReferralThresholdSetEventFilter; + ReferralThresholdSet(referralThreshold?: null): ReferralThresholdSetEventFilter; + + 'RegistrySet(address)'(registry?: null): RegistrySetEventFilter; + RegistrySet(registry?: null): RegistrySetEventFilter; + + 'RewardPointsSet(address,uint256)'(policyholder?: null, amountGifted?: null): RewardPointsSetEventFilter; + RewardPointsSet(policyholder?: null, amountGifted?: null): RewardPointsSetEventFilter; + + 'SupportedChainRemoved(uint256)'(chainId?: null): SupportedChainRemovedEventFilter; + SupportedChainRemoved(chainId?: null): SupportedChainRemovedEventFilter; + + 'SupportedChainSet(uint256)'(chainId?: null): SupportedChainSetEventFilter; + SupportedChainSet(chainId?: null): SupportedChainSetEventFilter; + + 'Transfer(address,address,uint256)'( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null, + ): TransferEventFilter; + Transfer(from?: string | null, to?: string | null, tokenId?: BigNumberish | null): TransferEventFilter; + + 'WithdrawMade(address,uint256)'(policyholder?: null, amount?: null): WithdrawMadeEventFilter; + WithdrawMade(policyholder?: null, amount?: null): WithdrawMadeEventFilter; + }; + + estimateGas: { + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + accountBalanceOf(policyholder: string, overrides?: CallOverrides): Promise; + + activatePolicy( + policyholder_: string, + coverLimit_: BigNumberish, + amount_: BigNumberish, + referralCode_: BytesLike, + chains_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + activeCoverLimit(overrides?: CallOverrides): Promise; + + addSupportedChains( + supportedChains: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + asset(overrides?: CallOverrides): Promise; + + availableCoverCapacity(overrides?: CallOverrides): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + chargeCycle(overrides?: CallOverrides): Promise; + + chargePremiums( + holders: string[], + premiums: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + cooldownPeriod(overrides?: CallOverrides): Promise; + + cooldownStart(policyholder_: string, overrides?: CallOverrides): Promise; + + coverLimitOf(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + deactivatePolicy(overrides?: Overrides & { from?: string | Promise }): Promise; + + deposit( + policyholder: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + getChain(chainIndex: BigNumberish, overrides?: CallOverrides): Promise; + + getPolicyChainInfo(policyID: BigNumberish, overrides?: CallOverrides): Promise; + + getReferrerFromReferralCode(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isReferralCodeUsed(policyholder: string, overrides?: CallOverrides): Promise; + + isReferralCodeValid(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + isReferralOn(overrides?: CallOverrides): Promise; + + isSupportedChain(chainId: BigNumberish, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxCover(overrides?: CallOverrides): Promise; + + maxRate(overrides?: CallOverrides): Promise; + + minRequiredAccountBalance(coverLimit: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + numSupportedChains(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + policyCount(overrides?: CallOverrides): Promise; + + policyOf(policyholder_: string, overrides?: CallOverrides): Promise; + + policyStatus(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + premiumsPaidOf(policyholder_: string, overrides?: CallOverrides): Promise; + + referralReward(overrides?: CallOverrides): Promise; + + referralThreshold(overrides?: CallOverrides): Promise; + + registry(overrides?: CallOverrides): Promise; + + removeSupportedChain( + chainId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + rewardPointsOf(policyholder_: string, overrides?: CallOverrides): Promise; + + riskManager(overrides?: CallOverrides): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAsset(assetName: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + setBaseURI(baseURI_: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + setChargeCycle( + chargeCycle_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setCooldownPeriod( + cooldownPeriod_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setIsReferralOn( + isReferralOn_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setMaxRate( + maxRateNum_: BigNumberish, + maxRateDenom_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPaused(paused_: boolean, overrides?: Overrides & { from?: string | Promise }): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralReward( + referralReward_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralThreshold( + referralThreshhold_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRegistry(registry_: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + setRewardPoints( + policyholder_: string, + rewardPoints_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(policyID: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateCoverLimit( + newCoverLimit_: BigNumberish, + referralCode_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePolicyChainInfo( + policyChains: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + }; + + populateTransaction: { + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + accountBalanceOf(policyholder: string, overrides?: CallOverrides): Promise; + + activatePolicy( + policyholder_: string, + coverLimit_: BigNumberish, + amount_: BigNumberish, + referralCode_: BytesLike, + chains_: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + activeCoverLimit(overrides?: CallOverrides): Promise; + + addSupportedChains( + supportedChains: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + asset(overrides?: CallOverrides): Promise; + + availableCoverCapacity(overrides?: CallOverrides): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + chargeCycle(overrides?: CallOverrides): Promise; + + chargePremiums( + holders: string[], + premiums: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + cooldownPeriod(overrides?: CallOverrides): Promise; + + cooldownStart(policyholder_: string, overrides?: CallOverrides): Promise; + + coverLimitOf(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + deactivatePolicy(overrides?: Overrides & { from?: string | Promise }): Promise; + + deposit( + policyholder: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + getChain(chainIndex: BigNumberish, overrides?: CallOverrides): Promise; + + getPolicyChainInfo(policyID: BigNumberish, overrides?: CallOverrides): Promise; + + getReferrerFromReferralCode(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isReferralCodeUsed(policyholder: string, overrides?: CallOverrides): Promise; + + isReferralCodeValid(referralCode: BytesLike, overrides?: CallOverrides): Promise; + + isReferralOn(overrides?: CallOverrides): Promise; + + isSupportedChain(chainId: BigNumberish, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + maxCover(overrides?: CallOverrides): Promise; + + maxRate(overrides?: CallOverrides): Promise; + + minRequiredAccountBalance(coverLimit: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + numSupportedChains(overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + paused(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + policyCount(overrides?: CallOverrides): Promise; + + policyOf(policyholder_: string, overrides?: CallOverrides): Promise; + + policyStatus(policyID_: BigNumberish, overrides?: CallOverrides): Promise; + + premiumsPaidOf(policyholder_: string, overrides?: CallOverrides): Promise; + + referralReward(overrides?: CallOverrides): Promise; + + referralThreshold(overrides?: CallOverrides): Promise; + + registry(overrides?: CallOverrides): Promise; + + removeSupportedChain( + chainId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + rewardPointsOf(policyholder_: string, overrides?: CallOverrides): Promise; + + riskManager(overrides?: CallOverrides): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setAsset( + assetName: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setBaseURI( + baseURI_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setChargeCycle( + chargeCycle_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setCooldownPeriod( + cooldownPeriod_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setIsReferralOn( + isReferralOn_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setMaxRate( + maxRateNum_: BigNumberish, + maxRateDenom_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPaused( + paused_: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralReward( + referralReward_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setReferralThreshold( + referralThreshhold_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRegistry( + registry_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRewardPoints( + policyholder_: string, + rewardPoints_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + tokenURI(policyID: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updateCoverLimit( + newCoverLimit_: BigNumberish, + referralCode_: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + updatePolicyChainInfo( + policyChains: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw(overrides?: Overrides & { from?: string | Promise }): Promise; + }; +} diff --git a/src/apps/solace/contracts/ethers/StakingRewards.ts b/src/apps/solace/contracts/ethers/StakingRewards.ts new file mode 100644 index 000000000..8cd8dfaf6 --- /dev/null +++ b/src/apps/solace/contracts/ethers/StakingRewards.ts @@ -0,0 +1,750 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export type LockStruct = { amount: BigNumberish; end: BigNumberish }; + +export type LockStructOutput = [BigNumber, BigNumber] & { + amount: BigNumber; + end: BigNumber; +}; + +export declare namespace IStakingRewards { + export type StakedLockInfoStruct = { + value: BigNumberish; + rewardDebt: BigNumberish; + unpaidRewards: BigNumberish; + owner: string; + }; + + export type StakedLockInfoStructOutput = [BigNumber, BigNumber, BigNumber, string] & { + value: BigNumber; + rewardDebt: BigNumber; + unpaidRewards: BigNumber; + owner: string; + }; +} + +export interface StakingRewardsInterface extends utils.Interface { + functions: { + 'MAX_LOCK_DURATION()': FunctionFragment; + 'MAX_LOCK_MULTIPLIER_BPS()': FunctionFragment; + 'UNLOCKED_MULTIPLIER_BPS()': FunctionFragment; + 'accRewardPerShare()': FunctionFragment; + 'acceptGovernance()': FunctionFragment; + 'compoundLock(uint256)': FunctionFragment; + 'compoundLocks(uint256[],uint256)': FunctionFragment; + 'endTime()': FunctionFragment; + 'getRewardAmountDistributed(uint256,uint256)': FunctionFragment; + 'governance()': FunctionFragment; + 'governanceIsLocked()': FunctionFragment; + 'harvestLock(uint256)': FunctionFragment; + 'harvestLocks(uint256[])': FunctionFragment; + 'lastRewardTime()': FunctionFragment; + 'lockGovernance()': FunctionFragment; + 'pendingGovernance()': FunctionFragment; + 'pendingRewardsOfLock(uint256)': FunctionFragment; + 'registerLockEvent(uint256,address,address,(uint256,uint256),(uint256,uint256))': FunctionFragment; + 'rescueTokens(address,uint256,address)': FunctionFragment; + 'rewardPerSecond()': FunctionFragment; + 'setPendingGovernance(address)': FunctionFragment; + 'setRewards(uint256)': FunctionFragment; + 'setTimes(uint256,uint256)': FunctionFragment; + 'solace()': FunctionFragment; + 'stakedLockInfo(uint256)': FunctionFragment; + 'startTime()': FunctionFragment; + 'update()': FunctionFragment; + 'valueStaked()': FunctionFragment; + 'xsLocker()': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'MAX_LOCK_DURATION' + | 'MAX_LOCK_MULTIPLIER_BPS' + | 'UNLOCKED_MULTIPLIER_BPS' + | 'accRewardPerShare' + | 'acceptGovernance' + | 'compoundLock' + | 'compoundLocks' + | 'endTime' + | 'getRewardAmountDistributed' + | 'governance' + | 'governanceIsLocked' + | 'harvestLock' + | 'harvestLocks' + | 'lastRewardTime' + | 'lockGovernance' + | 'pendingGovernance' + | 'pendingRewardsOfLock' + | 'registerLockEvent' + | 'rescueTokens' + | 'rewardPerSecond' + | 'setPendingGovernance' + | 'setRewards' + | 'setTimes' + | 'solace' + | 'stakedLockInfo' + | 'startTime' + | 'update' + | 'valueStaked' + | 'xsLocker', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'MAX_LOCK_DURATION', values?: undefined): string; + encodeFunctionData(functionFragment: 'MAX_LOCK_MULTIPLIER_BPS', values?: undefined): string; + encodeFunctionData(functionFragment: 'UNLOCKED_MULTIPLIER_BPS', values?: undefined): string; + encodeFunctionData(functionFragment: 'accRewardPerShare', values?: undefined): string; + encodeFunctionData(functionFragment: 'acceptGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'compoundLock', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'compoundLocks', values: [BigNumberish[], BigNumberish]): string; + encodeFunctionData(functionFragment: 'endTime', values?: undefined): string; + encodeFunctionData(functionFragment: 'getRewardAmountDistributed', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'governance', values?: undefined): string; + encodeFunctionData(functionFragment: 'governanceIsLocked', values?: undefined): string; + encodeFunctionData(functionFragment: 'harvestLock', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'harvestLocks', values: [BigNumberish[]]): string; + encodeFunctionData(functionFragment: 'lastRewardTime', values?: undefined): string; + encodeFunctionData(functionFragment: 'lockGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'pendingRewardsOfLock', values: [BigNumberish]): string; + encodeFunctionData( + functionFragment: 'registerLockEvent', + values: [BigNumberish, string, string, LockStruct, LockStruct], + ): string; + encodeFunctionData(functionFragment: 'rescueTokens', values: [string, BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'rewardPerSecond', values?: undefined): string; + encodeFunctionData(functionFragment: 'setPendingGovernance', values: [string]): string; + encodeFunctionData(functionFragment: 'setRewards', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'setTimes', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'solace', values?: undefined): string; + encodeFunctionData(functionFragment: 'stakedLockInfo', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'startTime', values?: undefined): string; + encodeFunctionData(functionFragment: 'update', values?: undefined): string; + encodeFunctionData(functionFragment: 'valueStaked', values?: undefined): string; + encodeFunctionData(functionFragment: 'xsLocker', values?: undefined): string; + + decodeFunctionResult(functionFragment: 'MAX_LOCK_DURATION', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'MAX_LOCK_MULTIPLIER_BPS', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'UNLOCKED_MULTIPLIER_BPS', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'accRewardPerShare', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'acceptGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'compoundLock', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'compoundLocks', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'endTime', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getRewardAmountDistributed', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governanceIsLocked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'harvestLock', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'harvestLocks', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lastRewardTime', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingRewardsOfLock', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'registerLockEvent', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rescueTokens', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'rewardPerSecond', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setRewards', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setTimes', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'solace', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'stakedLockInfo', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'startTime', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'update', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'valueStaked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'xsLocker', data: BytesLike): Result; + + events: { + 'FarmTimesSet(uint256,uint256)': EventFragment; + 'GovernanceLocked()': EventFragment; + 'GovernancePending(address)': EventFragment; + 'GovernanceTransferred(address,address)': EventFragment; + 'LockUpdated(uint256)': EventFragment; + 'RewardsSet(uint256)': EventFragment; + 'Updated()': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'FarmTimesSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceLocked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernancePending'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LockUpdated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'RewardsSet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Updated'): EventFragment; +} + +export interface FarmTimesSetEventObject { + startTime: BigNumber; + endTime: BigNumber; +} +export type FarmTimesSetEvent = TypedEvent<[BigNumber, BigNumber], FarmTimesSetEventObject>; + +export type FarmTimesSetEventFilter = TypedEventFilter; + +export interface GovernanceLockedEventObject {} +export type GovernanceLockedEvent = TypedEvent<[], GovernanceLockedEventObject>; + +export type GovernanceLockedEventFilter = TypedEventFilter; + +export interface GovernancePendingEventObject { + pendingGovernance: string; +} +export type GovernancePendingEvent = TypedEvent<[string], GovernancePendingEventObject>; + +export type GovernancePendingEventFilter = TypedEventFilter; + +export interface GovernanceTransferredEventObject { + oldGovernance: string; + newGovernance: string; +} +export type GovernanceTransferredEvent = TypedEvent<[string, string], GovernanceTransferredEventObject>; + +export type GovernanceTransferredEventFilter = TypedEventFilter; + +export interface LockUpdatedEventObject { + xsLockID: BigNumber; +} +export type LockUpdatedEvent = TypedEvent<[BigNumber], LockUpdatedEventObject>; + +export type LockUpdatedEventFilter = TypedEventFilter; + +export interface RewardsSetEventObject { + rewardPerSecond: BigNumber; +} +export type RewardsSetEvent = TypedEvent<[BigNumber], RewardsSetEventObject>; + +export type RewardsSetEventFilter = TypedEventFilter; + +export interface UpdatedEventObject {} +export type UpdatedEvent = TypedEvent<[], UpdatedEventObject>; + +export type UpdatedEventFilter = TypedEventFilter; + +export interface StakingRewards extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: StakingRewardsInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + MAX_LOCK_DURATION(overrides?: CallOverrides): Promise<[BigNumber]>; + + MAX_LOCK_MULTIPLIER_BPS(overrides?: CallOverrides): Promise<[BigNumber]>; + + UNLOCKED_MULTIPLIER_BPS(overrides?: CallOverrides): Promise<[BigNumber]>; + + accRewardPerShare(overrides?: CallOverrides): Promise<[BigNumber]>; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + compoundLock( + xsLockID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + compoundLocks( + xsLockIDs: BigNumberish[], + increasedLockID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise<[BigNumber]>; + + getRewardAmountDistributed( + from: BigNumberish, + to: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { amount: BigNumber }>; + + governance(overrides?: CallOverrides): Promise<[string]>; + + governanceIsLocked(overrides?: CallOverrides): Promise<[boolean]>; + + harvestLock( + xsLockID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + harvestLocks( + xsLockIDs: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + lastRewardTime(overrides?: CallOverrides): Promise<[BigNumber]>; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise<[string]>; + + pendingRewardsOfLock( + xsLockID: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { reward: BigNumber }>; + + registerLockEvent( + xsLockID: BigNumberish, + oldOwner: string, + newOwner: string, + oldLock: LockStruct, + newLock: LockStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + rescueTokens( + token: string, + amount: BigNumberish, + receiver: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + rewardPerSecond(overrides?: CallOverrides): Promise<[BigNumber]>; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRewards( + rewardPerSecond_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTimes( + startTime_: BigNumberish, + endTime_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise<[string]>; + + stakedLockInfo( + xsLockID: BigNumberish, + overrides?: CallOverrides, + ): Promise<[IStakingRewards.StakedLockInfoStructOutput]>; + + startTime(overrides?: CallOverrides): Promise<[BigNumber]>; + + update(overrides?: Overrides & { from?: string | Promise }): Promise; + + valueStaked(overrides?: CallOverrides): Promise<[BigNumber]>; + + xsLocker(overrides?: CallOverrides): Promise<[string]>; + }; + + MAX_LOCK_DURATION(overrides?: CallOverrides): Promise; + + MAX_LOCK_MULTIPLIER_BPS(overrides?: CallOverrides): Promise; + + UNLOCKED_MULTIPLIER_BPS(overrides?: CallOverrides): Promise; + + accRewardPerShare(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + compoundLock( + xsLockID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + compoundLocks( + xsLockIDs: BigNumberish[], + increasedLockID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise; + + getRewardAmountDistributed(from: BigNumberish, to: BigNumberish, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + harvestLock( + xsLockID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + harvestLocks( + xsLockIDs: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + lastRewardTime(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + pendingRewardsOfLock(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + registerLockEvent( + xsLockID: BigNumberish, + oldOwner: string, + newOwner: string, + oldLock: LockStruct, + newLock: LockStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + rescueTokens( + token: string, + amount: BigNumberish, + receiver: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + rewardPerSecond(overrides?: CallOverrides): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRewards( + rewardPerSecond_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTimes( + startTime_: BigNumberish, + endTime_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + stakedLockInfo( + xsLockID: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + startTime(overrides?: CallOverrides): Promise; + + update(overrides?: Overrides & { from?: string | Promise }): Promise; + + valueStaked(overrides?: CallOverrides): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + + callStatic: { + MAX_LOCK_DURATION(overrides?: CallOverrides): Promise; + + MAX_LOCK_MULTIPLIER_BPS(overrides?: CallOverrides): Promise; + + UNLOCKED_MULTIPLIER_BPS(overrides?: CallOverrides): Promise; + + accRewardPerShare(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: CallOverrides): Promise; + + compoundLock(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + compoundLocks(xsLockIDs: BigNumberish[], increasedLockID: BigNumberish, overrides?: CallOverrides): Promise; + + endTime(overrides?: CallOverrides): Promise; + + getRewardAmountDistributed(from: BigNumberish, to: BigNumberish, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + harvestLock(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + harvestLocks(xsLockIDs: BigNumberish[], overrides?: CallOverrides): Promise; + + lastRewardTime(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + pendingRewardsOfLock(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + registerLockEvent( + xsLockID: BigNumberish, + oldOwner: string, + newOwner: string, + oldLock: LockStruct, + newLock: LockStruct, + overrides?: CallOverrides, + ): Promise; + + rescueTokens(token: string, amount: BigNumberish, receiver: string, overrides?: CallOverrides): Promise; + + rewardPerSecond(overrides?: CallOverrides): Promise; + + setPendingGovernance(pendingGovernance_: string, overrides?: CallOverrides): Promise; + + setRewards(rewardPerSecond_: BigNumberish, overrides?: CallOverrides): Promise; + + setTimes(startTime_: BigNumberish, endTime_: BigNumberish, overrides?: CallOverrides): Promise; + + solace(overrides?: CallOverrides): Promise; + + stakedLockInfo( + xsLockID: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + startTime(overrides?: CallOverrides): Promise; + + update(overrides?: CallOverrides): Promise; + + valueStaked(overrides?: CallOverrides): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + }; + + filters: { + 'FarmTimesSet(uint256,uint256)'(startTime?: null, endTime?: null): FarmTimesSetEventFilter; + FarmTimesSet(startTime?: null, endTime?: null): FarmTimesSetEventFilter; + + 'GovernanceLocked()'(): GovernanceLockedEventFilter; + GovernanceLocked(): GovernanceLockedEventFilter; + + 'GovernancePending(address)'(pendingGovernance?: null): GovernancePendingEventFilter; + GovernancePending(pendingGovernance?: null): GovernancePendingEventFilter; + + 'GovernanceTransferred(address,address)'( + oldGovernance?: null, + newGovernance?: null, + ): GovernanceTransferredEventFilter; + GovernanceTransferred(oldGovernance?: null, newGovernance?: null): GovernanceTransferredEventFilter; + + 'LockUpdated(uint256)'(xsLockID?: BigNumberish | null): LockUpdatedEventFilter; + LockUpdated(xsLockID?: BigNumberish | null): LockUpdatedEventFilter; + + 'RewardsSet(uint256)'(rewardPerSecond?: null): RewardsSetEventFilter; + RewardsSet(rewardPerSecond?: null): RewardsSetEventFilter; + + 'Updated()'(): UpdatedEventFilter; + Updated(): UpdatedEventFilter; + }; + + estimateGas: { + MAX_LOCK_DURATION(overrides?: CallOverrides): Promise; + + MAX_LOCK_MULTIPLIER_BPS(overrides?: CallOverrides): Promise; + + UNLOCKED_MULTIPLIER_BPS(overrides?: CallOverrides): Promise; + + accRewardPerShare(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + compoundLock( + xsLockID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + compoundLocks( + xsLockIDs: BigNumberish[], + increasedLockID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise; + + getRewardAmountDistributed(from: BigNumberish, to: BigNumberish, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + harvestLock( + xsLockID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + harvestLocks( + xsLockIDs: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + lastRewardTime(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + pendingRewardsOfLock(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + registerLockEvent( + xsLockID: BigNumberish, + oldOwner: string, + newOwner: string, + oldLock: LockStruct, + newLock: LockStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + rescueTokens( + token: string, + amount: BigNumberish, + receiver: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + rewardPerSecond(overrides?: CallOverrides): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRewards( + rewardPerSecond_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTimes( + startTime_: BigNumberish, + endTime_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + stakedLockInfo(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + update(overrides?: Overrides & { from?: string | Promise }): Promise; + + valueStaked(overrides?: CallOverrides): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + MAX_LOCK_DURATION(overrides?: CallOverrides): Promise; + + MAX_LOCK_MULTIPLIER_BPS(overrides?: CallOverrides): Promise; + + UNLOCKED_MULTIPLIER_BPS(overrides?: CallOverrides): Promise; + + accRewardPerShare(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + compoundLock( + xsLockID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + compoundLocks( + xsLockIDs: BigNumberish[], + increasedLockID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + endTime(overrides?: CallOverrides): Promise; + + getRewardAmountDistributed( + from: BigNumberish, + to: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + harvestLock( + xsLockID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + harvestLocks( + xsLockIDs: BigNumberish[], + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + lastRewardTime(overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + pendingRewardsOfLock(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + registerLockEvent( + xsLockID: BigNumberish, + oldOwner: string, + newOwner: string, + oldLock: LockStruct, + newLock: LockStruct, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + rescueTokens( + token: string, + amount: BigNumberish, + receiver: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + rewardPerSecond(overrides?: CallOverrides): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setRewards( + rewardPerSecond_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setTimes( + startTime_: BigNumberish, + endTime_: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + stakedLockInfo(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + startTime(overrides?: CallOverrides): Promise; + + update(overrides?: Overrides & { from?: string | Promise }): Promise; + + valueStaked(overrides?: CallOverrides): Promise; + + xsLocker(overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/solace/contracts/ethers/XSolacev1.ts b/src/apps/solace/contracts/ethers/XSolacev1.ts new file mode 100644 index 000000000..f40bd03e4 --- /dev/null +++ b/src/apps/solace/contracts/ethers/XSolacev1.ts @@ -0,0 +1,762 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export interface XSolacev1Interface extends utils.Interface { + functions: { + 'DOMAIN_SEPARATOR()': FunctionFragment; + 'acceptGovernance()': FunctionFragment; + 'allowance(address,address)': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'burn(uint256)': FunctionFragment; + 'decimals()': FunctionFragment; + 'decreaseAllowance(address,uint256)': FunctionFragment; + 'governance()': FunctionFragment; + 'governanceIsLocked()': FunctionFragment; + 'increaseAllowance(address,uint256)': FunctionFragment; + 'lockGovernance()': FunctionFragment; + 'name()': FunctionFragment; + 'nonces(address)': FunctionFragment; + 'pendingGovernance()': FunctionFragment; + 'permit(address,address,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'setPendingGovernance(address)': FunctionFragment; + 'solace()': FunctionFragment; + 'solaceToXSolace(uint256)': FunctionFragment; + 'stake(uint256)': FunctionFragment; + 'stakeSigned(address,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'symbol()': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'transfer(address,uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + 'unstake(uint256)': FunctionFragment; + 'xSolaceToSolace(uint256)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'DOMAIN_SEPARATOR' + | 'acceptGovernance' + | 'allowance' + | 'approve' + | 'balanceOf' + | 'burn' + | 'decimals' + | 'decreaseAllowance' + | 'governance' + | 'governanceIsLocked' + | 'increaseAllowance' + | 'lockGovernance' + | 'name' + | 'nonces' + | 'pendingGovernance' + | 'permit' + | 'setPendingGovernance' + | 'solace' + | 'solaceToXSolace' + | 'stake' + | 'stakeSigned' + | 'symbol' + | 'totalSupply' + | 'transfer' + | 'transferFrom' + | 'unstake' + | 'xSolaceToSolace', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'DOMAIN_SEPARATOR', values?: undefined): string; + encodeFunctionData(functionFragment: 'acceptGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'allowance', values: [string, string]): string; + encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'burn', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'decimals', values?: undefined): string; + encodeFunctionData(functionFragment: 'decreaseAllowance', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'governance', values?: undefined): string; + encodeFunctionData(functionFragment: 'governanceIsLocked', values?: undefined): string; + encodeFunctionData(functionFragment: 'increaseAllowance', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'lockGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'nonces', values: [string]): string; + encodeFunctionData(functionFragment: 'pendingGovernance', values?: undefined): string; + encodeFunctionData( + functionFragment: 'permit', + values: [string, string, BigNumberish, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'setPendingGovernance', values: [string]): string; + encodeFunctionData(functionFragment: 'solace', values?: undefined): string; + encodeFunctionData(functionFragment: 'solaceToXSolace', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'stake', values: [BigNumberish]): string; + encodeFunctionData( + functionFragment: 'stakeSigned', + values: [string, BigNumberish, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'transfer', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'unstake', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'xSolaceToSolace', values: [BigNumberish]): string; + + decodeFunctionResult(functionFragment: 'DOMAIN_SEPARATOR', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'acceptGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'burn', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governanceIsLocked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'nonces', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'permit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'solace', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'solaceToXSolace', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'stake', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'stakeSigned', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'unstake', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'xSolaceToSolace', data: BytesLike): Result; + + events: { + 'Approval(address,address,uint256)': EventFragment; + 'GovernanceLocked()': EventFragment; + 'GovernancePending(address)': EventFragment; + 'GovernanceTransferred(address,address)': EventFragment; + 'Staked(address,uint256,uint256)': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + 'Unstaked(address,uint256,uint256)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceLocked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernancePending'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Staked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Unstaked'): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + spender: string; + value: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface GovernanceLockedEventObject {} +export type GovernanceLockedEvent = TypedEvent<[], GovernanceLockedEventObject>; + +export type GovernanceLockedEventFilter = TypedEventFilter; + +export interface GovernancePendingEventObject { + pendingGovernance: string; +} +export type GovernancePendingEvent = TypedEvent<[string], GovernancePendingEventObject>; + +export type GovernancePendingEventFilter = TypedEventFilter; + +export interface GovernanceTransferredEventObject { + oldGovernance: string; + newGovernance: string; +} +export type GovernanceTransferredEvent = TypedEvent<[string, string], GovernanceTransferredEventObject>; + +export type GovernanceTransferredEventFilter = TypedEventFilter; + +export interface StakedEventObject { + user: string; + amountSolace: BigNumber; + amountXSolace: BigNumber; +} +export type StakedEvent = TypedEvent<[string, BigNumber, BigNumber], StakedEventObject>; + +export type StakedEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + value: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface UnstakedEventObject { + user: string; + amountSolace: BigNumber; + amountXSolace: BigNumber; +} +export type UnstakedEvent = TypedEvent<[string, BigNumber, BigNumber], UnstakedEventObject>; + +export type UnstakedEventFilter = TypedEventFilter; + +export interface XSolacev1 extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: XSolacev1Interface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + burn( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + decimals(overrides?: CallOverrides): Promise<[number]>; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + governance(overrides?: CallOverrides): Promise<[string]>; + + governanceIsLocked(overrides?: CallOverrides): Promise<[boolean]>; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + name(overrides?: CallOverrides): Promise<[string]>; + + nonces(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + pendingGovernance(overrides?: CallOverrides): Promise<[string]>; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise<[string] & { solace_: string }>; + + solaceToXSolace( + amountSolace: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { amountXSolace: BigNumber }>; + + stake( + amountSolace: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + stakeSigned( + depositor: string, + amountSolace: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + unstake( + amountXSolace: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + xSolaceToSolace( + amountXSolace: BigNumberish, + overrides?: CallOverrides, + ): Promise<[BigNumber] & { amountSolace: BigNumber }>; + }; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + burn(amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + solaceToXSolace(amountSolace: BigNumberish, overrides?: CallOverrides): Promise; + + stake( + amountSolace: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + stakeSigned( + depositor: string, + amountSolace: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + unstake( + amountXSolace: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + xSolaceToSolace(amountXSolace: BigNumberish, overrides?: CallOverrides): Promise; + + callStatic: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: CallOverrides): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve(spender: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + burn(amount: BigNumberish, overrides?: CallOverrides): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance(spender: string, subtractedValue: BigNumberish, overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAllowance(spender: string, addedValue: BigNumberish, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise; + + setPendingGovernance(pendingGovernance_: string, overrides?: CallOverrides): Promise; + + solace(overrides?: CallOverrides): Promise; + + solaceToXSolace(amountSolace: BigNumberish, overrides?: CallOverrides): Promise; + + stake(amountSolace: BigNumberish, overrides?: CallOverrides): Promise; + + stakeSigned( + depositor: string, + amountSolace: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer(recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom(sender: string, recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; + + unstake(amountXSolace: BigNumberish, overrides?: CallOverrides): Promise; + + xSolaceToSolace(amountXSolace: BigNumberish, overrides?: CallOverrides): Promise; + }; + + filters: { + 'Approval(address,address,uint256)'( + owner?: string | null, + spender?: string | null, + value?: null, + ): ApprovalEventFilter; + Approval(owner?: string | null, spender?: string | null, value?: null): ApprovalEventFilter; + + 'GovernanceLocked()'(): GovernanceLockedEventFilter; + GovernanceLocked(): GovernanceLockedEventFilter; + + 'GovernancePending(address)'(pendingGovernance?: null): GovernancePendingEventFilter; + GovernancePending(pendingGovernance?: null): GovernancePendingEventFilter; + + 'GovernanceTransferred(address,address)'( + oldGovernance?: null, + newGovernance?: null, + ): GovernanceTransferredEventFilter; + GovernanceTransferred(oldGovernance?: null, newGovernance?: null): GovernanceTransferredEventFilter; + + 'Staked(address,uint256,uint256)'(user?: null, amountSolace?: null, amountXSolace?: null): StakedEventFilter; + Staked(user?: null, amountSolace?: null, amountXSolace?: null): StakedEventFilter; + + 'Transfer(address,address,uint256)'(from?: string | null, to?: string | null, value?: null): TransferEventFilter; + Transfer(from?: string | null, to?: string | null, value?: null): TransferEventFilter; + + 'Unstaked(address,uint256,uint256)'(user?: null, amountSolace?: null, amountXSolace?: null): UnstakedEventFilter; + Unstaked(user?: null, amountSolace?: null, amountXSolace?: null): UnstakedEventFilter; + }; + + estimateGas: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + burn(amount: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + solaceToXSolace(amountSolace: BigNumberish, overrides?: CallOverrides): Promise; + + stake(amountSolace: BigNumberish, overrides?: Overrides & { from?: string | Promise }): Promise; + + stakeSigned( + depositor: string, + amountSolace: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + unstake( + amountXSolace: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + xSolaceToSolace(amountXSolace: BigNumberish, overrides?: CallOverrides): Promise; + }; + + populateTransaction: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; + + approve( + spender: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(account: string, overrides?: CallOverrides): Promise; + + burn( + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + decimals(overrides?: CallOverrides): Promise; + + decreaseAllowance( + spender: string, + subtractedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAllowance( + spender: string, + addedValue: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(owner: string, overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + owner: string, + spender: string, + value: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + solaceToXSolace(amountSolace: BigNumberish, overrides?: CallOverrides): Promise; + + stake( + amountSolace: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + stakeSigned( + depositor: string, + amountSolace: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + symbol(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + sender: string, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + unstake( + amountXSolace: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + xSolaceToSolace(amountXSolace: BigNumberish, overrides?: CallOverrides): Promise; + }; +} diff --git a/src/apps/solace/contracts/ethers/XsLocker.ts b/src/apps/solace/contracts/ethers/XsLocker.ts new file mode 100644 index 000000000..136e05c6f --- /dev/null +++ b/src/apps/solace/contracts/ethers/XsLocker.ts @@ -0,0 +1,1359 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { + BaseContract, + BigNumber, + BigNumberish, + BytesLike, + CallOverrides, + ContractTransaction, + Overrides, + PopulatedTransaction, + Signer, + utils, +} from 'ethers'; +import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; +import type { Listener, Provider } from '@ethersproject/providers'; +import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; + +export type LockStruct = { amount: BigNumberish; end: BigNumberish }; + +export type LockStructOutput = [BigNumber, BigNumber] & { + amount: BigNumber; + end: BigNumber; +}; + +export interface XsLockerInterface extends utils.Interface { + functions: { + 'DOMAIN_SEPARATOR()': FunctionFragment; + 'MAX_LOCK_DURATION()': FunctionFragment; + 'PERMIT_TYPEHASH()': FunctionFragment; + 'acceptGovernance()': FunctionFragment; + 'addXsLockListener(address)': FunctionFragment; + 'approve(address,uint256)': FunctionFragment; + 'balanceOf(address)': FunctionFragment; + 'baseURI()': FunctionFragment; + 'createLock(address,uint256,uint256)': FunctionFragment; + 'createLockSigned(uint256,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'exists(uint256)': FunctionFragment; + 'extendLock(uint256,uint256)': FunctionFragment; + 'getApproved(uint256)': FunctionFragment; + 'getXsLockListeners()': FunctionFragment; + 'governance()': FunctionFragment; + 'governanceIsLocked()': FunctionFragment; + 'increaseAmount(uint256,uint256)': FunctionFragment; + 'increaseAmountSigned(uint256,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'isApprovedForAll(address,address)': FunctionFragment; + 'isLocked(uint256)': FunctionFragment; + 'lockGovernance()': FunctionFragment; + 'locks(uint256)': FunctionFragment; + 'name()': FunctionFragment; + 'nonces(uint256)': FunctionFragment; + 'ownerOf(uint256)': FunctionFragment; + 'pendingGovernance()': FunctionFragment; + 'permit(address,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment; + 'removeXsLockListener(address)': FunctionFragment; + 'safeTransfer(address,uint256)': FunctionFragment; + 'safeTransferFrom(address,address,uint256)': FunctionFragment; + 'safeTransferFrom(address,address,uint256,bytes)': FunctionFragment; + 'setApprovalForAll(address,bool)': FunctionFragment; + 'setBaseURI(string)': FunctionFragment; + 'setPendingGovernance(address)': FunctionFragment; + 'solace()': FunctionFragment; + 'stakedBalance(address)': FunctionFragment; + 'supportsInterface(bytes4)': FunctionFragment; + 'symbol()': FunctionFragment; + 'timeLeft(uint256)': FunctionFragment; + 'tokenByIndex(uint256)': FunctionFragment; + 'tokenOfOwnerByIndex(address,uint256)': FunctionFragment; + 'tokenURI(uint256)': FunctionFragment; + 'totalNumLocks()': FunctionFragment; + 'totalSupply()': FunctionFragment; + 'transfer(address,uint256)': FunctionFragment; + 'transferFrom(address,address,uint256)': FunctionFragment; + 'withdraw(uint256,address)': FunctionFragment; + 'withdrawInPart(uint256,address,uint256)': FunctionFragment; + 'withdrawMany(uint256[],address)': FunctionFragment; + }; + + getFunction( + nameOrSignatureOrTopic: + | 'DOMAIN_SEPARATOR' + | 'MAX_LOCK_DURATION' + | 'PERMIT_TYPEHASH' + | 'acceptGovernance' + | 'addXsLockListener' + | 'approve' + | 'balanceOf' + | 'baseURI' + | 'createLock' + | 'createLockSigned' + | 'exists' + | 'extendLock' + | 'getApproved' + | 'getXsLockListeners' + | 'governance' + | 'governanceIsLocked' + | 'increaseAmount' + | 'increaseAmountSigned' + | 'isApprovedForAll' + | 'isLocked' + | 'lockGovernance' + | 'locks' + | 'name' + | 'nonces' + | 'ownerOf' + | 'pendingGovernance' + | 'permit' + | 'removeXsLockListener' + | 'safeTransfer' + | 'safeTransferFrom(address,address,uint256)' + | 'safeTransferFrom(address,address,uint256,bytes)' + | 'setApprovalForAll' + | 'setBaseURI' + | 'setPendingGovernance' + | 'solace' + | 'stakedBalance' + | 'supportsInterface' + | 'symbol' + | 'timeLeft' + | 'tokenByIndex' + | 'tokenOfOwnerByIndex' + | 'tokenURI' + | 'totalNumLocks' + | 'totalSupply' + | 'transfer' + | 'transferFrom' + | 'withdraw' + | 'withdrawInPart' + | 'withdrawMany', + ): FunctionFragment; + + encodeFunctionData(functionFragment: 'DOMAIN_SEPARATOR', values?: undefined): string; + encodeFunctionData(functionFragment: 'MAX_LOCK_DURATION', values?: undefined): string; + encodeFunctionData(functionFragment: 'PERMIT_TYPEHASH', values?: undefined): string; + encodeFunctionData(functionFragment: 'acceptGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'addXsLockListener', values: [string]): string; + encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; + encodeFunctionData(functionFragment: 'baseURI', values?: undefined): string; + encodeFunctionData(functionFragment: 'createLock', values: [string, BigNumberish, BigNumberish]): string; + encodeFunctionData( + functionFragment: 'createLockSigned', + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'exists', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'extendLock', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData(functionFragment: 'getApproved', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'getXsLockListeners', values?: undefined): string; + encodeFunctionData(functionFragment: 'governance', values?: undefined): string; + encodeFunctionData(functionFragment: 'governanceIsLocked', values?: undefined): string; + encodeFunctionData(functionFragment: 'increaseAmount', values: [BigNumberish, BigNumberish]): string; + encodeFunctionData( + functionFragment: 'increaseAmountSigned', + values: [BigNumberish, BigNumberish, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'isApprovedForAll', values: [string, string]): string; + encodeFunctionData(functionFragment: 'isLocked', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'lockGovernance', values?: undefined): string; + encodeFunctionData(functionFragment: 'locks', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'name', values?: undefined): string; + encodeFunctionData(functionFragment: 'nonces', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'ownerOf', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'pendingGovernance', values?: undefined): string; + encodeFunctionData( + functionFragment: 'permit', + values: [string, BigNumberish, BigNumberish, BigNumberish, BytesLike, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'removeXsLockListener', values: [string]): string; + encodeFunctionData(functionFragment: 'safeTransfer', values: [string, BigNumberish]): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256)', + values: [string, string, BigNumberish], + ): string; + encodeFunctionData( + functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', + values: [string, string, BigNumberish, BytesLike], + ): string; + encodeFunctionData(functionFragment: 'setApprovalForAll', values: [string, boolean]): string; + encodeFunctionData(functionFragment: 'setBaseURI', values: [string]): string; + encodeFunctionData(functionFragment: 'setPendingGovernance', values: [string]): string; + encodeFunctionData(functionFragment: 'solace', values?: undefined): string; + encodeFunctionData(functionFragment: 'stakedBalance', values: [string]): string; + encodeFunctionData(functionFragment: 'supportsInterface', values: [BytesLike]): string; + encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; + encodeFunctionData(functionFragment: 'timeLeft', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'tokenByIndex', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'tokenOfOwnerByIndex', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'tokenURI', values: [BigNumberish]): string; + encodeFunctionData(functionFragment: 'totalNumLocks', values?: undefined): string; + encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; + encodeFunctionData(functionFragment: 'transfer', values: [string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'withdraw', values: [BigNumberish, string]): string; + encodeFunctionData(functionFragment: 'withdrawInPart', values: [BigNumberish, string, BigNumberish]): string; + encodeFunctionData(functionFragment: 'withdrawMany', values: [BigNumberish[], string]): string; + + decodeFunctionResult(functionFragment: 'DOMAIN_SEPARATOR', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'MAX_LOCK_DURATION', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'PERMIT_TYPEHASH', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'acceptGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'addXsLockListener', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'baseURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'createLock', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'createLockSigned', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'exists', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'extendLock', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getApproved', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'getXsLockListeners', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'governanceIsLocked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'increaseAmount', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'increaseAmountSigned', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isApprovedForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'isLocked', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'lockGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'locks', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'nonces', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'ownerOf', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'pendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'permit', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'removeXsLockListener', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setApprovalForAll', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setBaseURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'setPendingGovernance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'solace', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'stakedBalance', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'timeLeft', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenByIndex', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenOfOwnerByIndex', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'tokenURI', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalNumLocks', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdrawInPart', data: BytesLike): Result; + decodeFunctionResult(functionFragment: 'withdrawMany', data: BytesLike): Result; + + events: { + 'Approval(address,address,uint256)': EventFragment; + 'ApprovalForAll(address,address,bool)': EventFragment; + 'BaseURISet(string)': EventFragment; + 'GovernanceLocked()': EventFragment; + 'GovernancePending(address)': EventFragment; + 'GovernanceTransferred(address,address)': EventFragment; + 'LockCreated(uint256)': EventFragment; + 'LockUpdated(uint256,uint256,uint256)': EventFragment; + 'Transfer(address,address,uint256)': EventFragment; + 'Withdrawl(uint256,uint256)': EventFragment; + 'xsLockListenerAdded(address)': EventFragment; + 'xsLockListenerRemoved(address)': EventFragment; + }; + + getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'ApprovalForAll'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'BaseURISet'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceLocked'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernancePending'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'GovernanceTransferred'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LockCreated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'LockUpdated'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'Withdrawl'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'xsLockListenerAdded'): EventFragment; + getEvent(nameOrSignatureOrTopic: 'xsLockListenerRemoved'): EventFragment; +} + +export interface ApprovalEventObject { + owner: string; + approved: string; + tokenId: BigNumber; +} +export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; + +export type ApprovalEventFilter = TypedEventFilter; + +export interface ApprovalForAllEventObject { + owner: string; + operator: string; + approved: boolean; +} +export type ApprovalForAllEvent = TypedEvent<[string, string, boolean], ApprovalForAllEventObject>; + +export type ApprovalForAllEventFilter = TypedEventFilter; + +export interface BaseURISetEventObject { + baseURI: string; +} +export type BaseURISetEvent = TypedEvent<[string], BaseURISetEventObject>; + +export type BaseURISetEventFilter = TypedEventFilter; + +export interface GovernanceLockedEventObject {} +export type GovernanceLockedEvent = TypedEvent<[], GovernanceLockedEventObject>; + +export type GovernanceLockedEventFilter = TypedEventFilter; + +export interface GovernancePendingEventObject { + pendingGovernance: string; +} +export type GovernancePendingEvent = TypedEvent<[string], GovernancePendingEventObject>; + +export type GovernancePendingEventFilter = TypedEventFilter; + +export interface GovernanceTransferredEventObject { + oldGovernance: string; + newGovernance: string; +} +export type GovernanceTransferredEvent = TypedEvent<[string, string], GovernanceTransferredEventObject>; + +export type GovernanceTransferredEventFilter = TypedEventFilter; + +export interface LockCreatedEventObject { + xsLockID: BigNumber; +} +export type LockCreatedEvent = TypedEvent<[BigNumber], LockCreatedEventObject>; + +export type LockCreatedEventFilter = TypedEventFilter; + +export interface LockUpdatedEventObject { + xsLockID: BigNumber; + amount: BigNumber; + end: BigNumber; +} +export type LockUpdatedEvent = TypedEvent<[BigNumber, BigNumber, BigNumber], LockUpdatedEventObject>; + +export type LockUpdatedEventFilter = TypedEventFilter; + +export interface TransferEventObject { + from: string; + to: string; + tokenId: BigNumber; +} +export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; + +export type TransferEventFilter = TypedEventFilter; + +export interface WithdrawlEventObject { + xsLockID: BigNumber; + amount: BigNumber; +} +export type WithdrawlEvent = TypedEvent<[BigNumber, BigNumber], WithdrawlEventObject>; + +export type WithdrawlEventFilter = TypedEventFilter; + +export interface xsLockListenerAddedEventObject { + listener: string; +} +export type xsLockListenerAddedEvent = TypedEvent<[string], xsLockListenerAddedEventObject>; + +export type xsLockListenerAddedEventFilter = TypedEventFilter; + +export interface xsLockListenerRemovedEventObject { + listener: string; +} +export type xsLockListenerRemovedEvent = TypedEvent<[string], xsLockListenerRemovedEventObject>; + +export type xsLockListenerRemovedEventFilter = TypedEventFilter; + +export interface XsLocker extends BaseContract { + connect(signerOrProvider: Signer | Provider | string): this; + attach(addressOrName: string): this; + deployed(): Promise; + + interface: XsLockerInterface; + + queryFilter( + event: TypedEventFilter, + fromBlockOrBlockhash?: string | number | undefined, + toBlock?: string | number | undefined, + ): Promise>; + + listeners(eventFilter?: TypedEventFilter): Array>; + listeners(eventName?: string): Array; + removeAllListeners(eventFilter: TypedEventFilter): this; + removeAllListeners(eventName?: string): this; + off: OnEvent; + on: OnEvent; + once: OnEvent; + removeListener: OnEvent; + + functions: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string] & { seperator: string }>; + + MAX_LOCK_DURATION(overrides?: CallOverrides): Promise<[BigNumber]>; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise<[string] & { typehash: string }>; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + addXsLockListener( + listener: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise<[BigNumber]>; + + baseURI(overrides?: CallOverrides): Promise<[string]>; + + createLock( + recipient: string, + amount: BigNumberish, + end: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + createLockSigned( + amount: BigNumberish, + end: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise<[boolean] & { status: boolean }>; + + extendLock( + xsLockID: BigNumberish, + end: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + getXsLockListeners(overrides?: CallOverrides): Promise<[string[]] & { listeners_: string[] }>; + + governance(overrides?: CallOverrides): Promise<[string]>; + + governanceIsLocked(overrides?: CallOverrides): Promise<[boolean]>; + + increaseAmount( + xsLockID: BigNumberish, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + increaseAmountSigned( + xsLockID: BigNumberish, + amount: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise<[boolean]>; + + isLocked(xsLockID: BigNumberish, overrides?: CallOverrides): Promise<[boolean] & { locked: boolean }>; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + locks(xsLockID: BigNumberish, overrides?: CallOverrides): Promise<[LockStructOutput] & { lock_: LockStructOutput }>; + + name(overrides?: CallOverrides): Promise<[string]>; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber] & { nonce: BigNumber }>; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + pendingGovernance(overrides?: CallOverrides): Promise<[string]>; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + removeXsLockListener( + listener: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setBaseURI( + baseURI_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise<[string]>; + + stakedBalance(account: string, overrides?: CallOverrides): Promise<[BigNumber] & { balance: BigNumber }>; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise<[boolean]>; + + symbol(overrides?: CallOverrides): Promise<[string]>; + + timeLeft(xsLockID: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber] & { time: BigNumber }>; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise<[BigNumber]>; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise<[string]>; + + totalNumLocks(overrides?: CallOverrides): Promise<[BigNumber]>; + + totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw( + xsLockID: BigNumberish, + recipient: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawInPart( + xsLockID: BigNumberish, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawMany( + xsLockIDs: BigNumberish[], + recipient: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + MAX_LOCK_DURATION(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + addXsLockListener( + listener: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + createLock( + recipient: string, + amount: BigNumberish, + end: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + createLockSigned( + amount: BigNumberish, + end: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + extendLock( + xsLockID: BigNumberish, + end: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + getXsLockListeners(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAmount( + xsLockID: BigNumberish, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + increaseAmountSigned( + xsLockID: BigNumberish, + amount: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isLocked(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + locks(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + removeXsLockListener( + listener: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setBaseURI( + baseURI_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + stakedBalance(account: string, overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + timeLeft(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalNumLocks(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw( + xsLockID: BigNumberish, + recipient: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawInPart( + xsLockID: BigNumberish, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawMany( + xsLockIDs: BigNumberish[], + recipient: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + callStatic: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + MAX_LOCK_DURATION(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: CallOverrides): Promise; + + addXsLockListener(listener: string, overrides?: CallOverrides): Promise; + + approve(to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + createLock( + recipient: string, + amount: BigNumberish, + end: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + createLockSigned( + amount: BigNumberish, + end: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + extendLock(xsLockID: BigNumberish, end: BigNumberish, overrides?: CallOverrides): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + getXsLockListeners(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAmount(xsLockID: BigNumberish, amount: BigNumberish, overrides?: CallOverrides): Promise; + + increaseAmountSigned( + xsLockID: BigNumberish, + amount: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isLocked(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: CallOverrides): Promise; + + locks(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: CallOverrides, + ): Promise; + + removeXsLockListener(listener: string, overrides?: CallOverrides): Promise; + + safeTransfer(to: string, tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: CallOverrides, + ): Promise; + + setApprovalForAll(operator: string, approved: boolean, overrides?: CallOverrides): Promise; + + setBaseURI(baseURI_: string, overrides?: CallOverrides): Promise; + + setPendingGovernance(pendingGovernance_: string, overrides?: CallOverrides): Promise; + + solace(overrides?: CallOverrides): Promise; + + stakedBalance(account: string, overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + timeLeft(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalNumLocks(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer(to: string, tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + transferFrom(from: string, to: string, tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + withdraw(xsLockID: BigNumberish, recipient: string, overrides?: CallOverrides): Promise; + + withdrawInPart( + xsLockID: BigNumberish, + recipient: string, + amount: BigNumberish, + overrides?: CallOverrides, + ): Promise; + + withdrawMany(xsLockIDs: BigNumberish[], recipient: string, overrides?: CallOverrides): Promise; + }; + + filters: { + 'Approval(address,address,uint256)'( + owner?: string | null, + approved?: string | null, + tokenId?: BigNumberish | null, + ): ApprovalEventFilter; + Approval(owner?: string | null, approved?: string | null, tokenId?: BigNumberish | null): ApprovalEventFilter; + + 'ApprovalForAll(address,address,bool)'( + owner?: string | null, + operator?: string | null, + approved?: null, + ): ApprovalForAllEventFilter; + ApprovalForAll(owner?: string | null, operator?: string | null, approved?: null): ApprovalForAllEventFilter; + + 'BaseURISet(string)'(baseURI?: null): BaseURISetEventFilter; + BaseURISet(baseURI?: null): BaseURISetEventFilter; + + 'GovernanceLocked()'(): GovernanceLockedEventFilter; + GovernanceLocked(): GovernanceLockedEventFilter; + + 'GovernancePending(address)'(pendingGovernance?: null): GovernancePendingEventFilter; + GovernancePending(pendingGovernance?: null): GovernancePendingEventFilter; + + 'GovernanceTransferred(address,address)'( + oldGovernance?: null, + newGovernance?: null, + ): GovernanceTransferredEventFilter; + GovernanceTransferred(oldGovernance?: null, newGovernance?: null): GovernanceTransferredEventFilter; + + 'LockCreated(uint256)'(xsLockID?: null): LockCreatedEventFilter; + LockCreated(xsLockID?: null): LockCreatedEventFilter; + + 'LockUpdated(uint256,uint256,uint256)'(xsLockID?: null, amount?: null, end?: null): LockUpdatedEventFilter; + LockUpdated(xsLockID?: null, amount?: null, end?: null): LockUpdatedEventFilter; + + 'Transfer(address,address,uint256)'( + from?: string | null, + to?: string | null, + tokenId?: BigNumberish | null, + ): TransferEventFilter; + Transfer(from?: string | null, to?: string | null, tokenId?: BigNumberish | null): TransferEventFilter; + + 'Withdrawl(uint256,uint256)'(xsLockID?: null, amount?: null): WithdrawlEventFilter; + Withdrawl(xsLockID?: null, amount?: null): WithdrawlEventFilter; + + 'xsLockListenerAdded(address)'(listener?: null): xsLockListenerAddedEventFilter; + xsLockListenerAdded(listener?: null): xsLockListenerAddedEventFilter; + + 'xsLockListenerRemoved(address)'(listener?: null): xsLockListenerRemovedEventFilter; + xsLockListenerRemoved(listener?: null): xsLockListenerRemovedEventFilter; + }; + + estimateGas: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + MAX_LOCK_DURATION(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + addXsLockListener( + listener: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + createLock( + recipient: string, + amount: BigNumberish, + end: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + createLockSigned( + amount: BigNumberish, + end: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + extendLock( + xsLockID: BigNumberish, + end: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + getXsLockListeners(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAmount( + xsLockID: BigNumberish, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + increaseAmountSigned( + xsLockID: BigNumberish, + amount: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isLocked(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + locks(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + removeXsLockListener( + listener: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setBaseURI(baseURI_: string, overrides?: Overrides & { from?: string | Promise }): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + stakedBalance(account: string, overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + timeLeft(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalNumLocks(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw( + xsLockID: BigNumberish, + recipient: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawInPart( + xsLockID: BigNumberish, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawMany( + xsLockIDs: BigNumberish[], + recipient: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; + + populateTransaction: { + DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise; + + MAX_LOCK_DURATION(overrides?: CallOverrides): Promise; + + PERMIT_TYPEHASH(overrides?: CallOverrides): Promise; + + acceptGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + addXsLockListener( + listener: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + approve( + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + balanceOf(owner: string, overrides?: CallOverrides): Promise; + + baseURI(overrides?: CallOverrides): Promise; + + createLock( + recipient: string, + amount: BigNumberish, + end: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + createLockSigned( + amount: BigNumberish, + end: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + exists(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + extendLock( + xsLockID: BigNumberish, + end: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + getApproved(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + getXsLockListeners(overrides?: CallOverrides): Promise; + + governance(overrides?: CallOverrides): Promise; + + governanceIsLocked(overrides?: CallOverrides): Promise; + + increaseAmount( + xsLockID: BigNumberish, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + increaseAmountSigned( + xsLockID: BigNumberish, + amount: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + isApprovedForAll(owner: string, operator: string, overrides?: CallOverrides): Promise; + + isLocked(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + lockGovernance(overrides?: Overrides & { from?: string | Promise }): Promise; + + locks(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + name(overrides?: CallOverrides): Promise; + + nonces(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + ownerOf(tokenId: BigNumberish, overrides?: CallOverrides): Promise; + + pendingGovernance(overrides?: CallOverrides): Promise; + + permit( + spender: string, + tokenID: BigNumberish, + deadline: BigNumberish, + v: BigNumberish, + r: BytesLike, + s: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + removeXsLockListener( + listener: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + safeTransfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256)'( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + 'safeTransferFrom(address,address,uint256,bytes)'( + from: string, + to: string, + tokenId: BigNumberish, + _data: BytesLike, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setApprovalForAll( + operator: string, + approved: boolean, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setBaseURI( + baseURI_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + setPendingGovernance( + pendingGovernance_: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + solace(overrides?: CallOverrides): Promise; + + stakedBalance(account: string, overrides?: CallOverrides): Promise; + + supportsInterface(interfaceId: BytesLike, overrides?: CallOverrides): Promise; + + symbol(overrides?: CallOverrides): Promise; + + timeLeft(xsLockID: BigNumberish, overrides?: CallOverrides): Promise; + + tokenByIndex(index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenOfOwnerByIndex(owner: string, index: BigNumberish, overrides?: CallOverrides): Promise; + + tokenURI(tokenID: BigNumberish, overrides?: CallOverrides): Promise; + + totalNumLocks(overrides?: CallOverrides): Promise; + + totalSupply(overrides?: CallOverrides): Promise; + + transfer( + to: string, + tokenID: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + transferFrom( + from: string, + to: string, + tokenId: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdraw( + xsLockID: BigNumberish, + recipient: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawInPart( + xsLockID: BigNumberish, + recipient: string, + amount: BigNumberish, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + + withdrawMany( + xsLockIDs: BigNumberish[], + recipient: string, + overrides?: Overrides & { from?: string | Promise }, + ): Promise; + }; +} diff --git a/src/apps/solace/contracts/ethers/common.ts b/src/apps/solace/contracts/ethers/common.ts new file mode 100644 index 000000000..6cfb10425 --- /dev/null +++ b/src/apps/solace/contracts/ethers/common.ts @@ -0,0 +1,30 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +import type { Listener } from '@ethersproject/providers'; +import type { Event, EventFilter } from 'ethers'; + +export interface TypedEvent = any, TArgsObject = any> extends Event { + args: TArgsArray & TArgsObject; +} + +export interface TypedEventFilter<_TEvent extends TypedEvent> extends EventFilter {} + +export interface TypedListener { + (...listenerArg: [...__TypechainArgsArray, TEvent]): void; +} + +type __TypechainArgsArray = T extends TypedEvent ? U : never; + +export interface OnEvent { + (eventFilter: TypedEventFilter, listener: TypedListener): TRes; + (eventName: string, listener: Listener): TRes; +} + +export type MinEthersFactory = { + deploy(...a: ARGS[]): Promise; +}; + +export type GetContractTypeFromFactory = F extends MinEthersFactory ? C : never; + +export type GetARGsTypeFromFactory = F extends MinEthersFactory ? Parameters : never; diff --git a/src/apps/solace/contracts/ethers/factories/BondTellerErc20__factory.ts b/src/apps/solace/contracts/ethers/factories/BondTellerErc20__factory.ts new file mode 100644 index 000000000..4e6654275 --- /dev/null +++ b/src/apps/solace/contracts/ethers/factories/BondTellerErc20__factory.ts @@ -0,0 +1,1540 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { BondTellerErc20, BondTellerErc20Interface } from '../BondTellerErc20'; + +const _abi = [ + { + anonymous: false, + inputs: [], + name: 'AddressesSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'approved', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + indexed: false, + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'ApprovalForAll', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'string', + name: 'baseURI', + type: 'string', + }, + ], + name: 'BaseURISet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'deployment', + type: 'address', + }, + ], + name: 'ContractDeployed', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'uint256', + name: 'lockID', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'principalAmount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'payoutAmount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint40', + name: 'vestingStart', + type: 'uint40', + }, + { + indexed: false, + internalType: 'uint40', + name: 'vestingTime', + type: 'uint40', + }, + ], + name: 'CreateBond', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'FeesSet', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'GovernanceLocked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'pendingGovernance', + type: 'address', + }, + ], + name: 'GovernancePending', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'oldGovernance', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'newGovernance', + type: 'address', + }, + ], + name: 'GovernanceTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'Paused', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'uint256', + name: 'bondID', + type: 'uint256', + }, + { + indexed: false, + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'payoutAmount', + type: 'uint256', + }, + ], + name: 'RedeemBond', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'TermsSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'Unpaused', + type: 'event', + }, + { + inputs: [], + name: 'DOMAIN_SEPARATOR', + outputs: [ + { + internalType: 'bytes32', + name: 'seperator', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'PERMIT_TYPEHASH', + outputs: [ + { + internalType: 'bytes32', + name: 'typehash', + type: 'bytes32', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'acceptGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'baseURI', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'bondDepo', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'bondPrice', + outputs: [ + { + internalType: 'uint256', + name: 'price_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'bonds', + outputs: [ + { + internalType: 'uint256', + name: 'payoutAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'payoutAlreadyClaimed', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'principalPaid', + type: 'uint256', + }, + { + internalType: 'uint40', + name: 'vestingStart', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'localVestingTerm', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amountOut', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + ], + name: 'calculateAmountIn', + outputs: [ + { + internalType: 'uint256', + name: 'amountIn', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amountIn', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + ], + name: 'calculateAmountOut', + outputs: [ + { + internalType: 'uint256', + name: 'amountOut', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes32', + name: 'salt', + type: 'bytes32', + }, + ], + name: 'calculateMinimalProxyDeploymentAddress', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'capacity', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'capacityIsPayout', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'bondID', + type: 'uint256', + }, + ], + name: 'claimPayout', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'string', + name: 'name_', + type: 'string', + }, + { + internalType: 'address', + name: 'governance_', + type: 'address', + }, + { + internalType: 'address', + name: 'principal_', + type: 'address', + }, + { + internalType: 'bool', + name: 'isPermittable_', + type: 'bool', + }, + { + internalType: 'bytes32', + name: 'salt_', + type: 'bytes32', + }, + ], + name: 'clone', + outputs: [ + { + internalType: 'address', + name: 'teller', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'dao', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'minAmountOut', + type: 'uint256', + }, + { + internalType: 'address', + name: 'depositor', + type: 'address', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + ], + name: 'deposit', + outputs: [ + { + internalType: 'uint256', + name: 'payout', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'minAmountOut', + type: 'uint256', + }, + { + internalType: 'address', + name: 'depositor', + type: 'address', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'depositSigned', + outputs: [ + { + internalType: 'uint256', + name: 'payout', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'endTime', + outputs: [ + { + internalType: 'uint40', + name: '', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'exists', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'getApproved', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'globalVestingTerm', + outputs: [ + { + internalType: 'uint40', + name: '', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governanceIsLocked', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'halfLife', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'string', + name: 'name_', + type: 'string', + }, + { + internalType: 'address', + name: 'governance_', + type: 'address', + }, + { + internalType: 'address', + name: 'solace_', + type: 'address', + }, + { + internalType: 'address', + name: 'xsLocker_', + type: 'address', + }, + { + internalType: 'address', + name: 'pool_', + type: 'address', + }, + { + internalType: 'address', + name: 'dao_', + type: 'address', + }, + { + internalType: 'address', + name: 'principal_', + type: 'address', + }, + { + internalType: 'bool', + name: 'isPermittable_', + type: 'bool', + }, + { + internalType: 'address', + name: 'bondDepo_', + type: 'address', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'operator', + type: 'address', + }, + ], + name: 'isApprovedForAll', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'isPermittable', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lastPriceUpdate', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lockGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'maxPayout', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'minimumPrice', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'nextPrice', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'nonces', + outputs: [ + { + internalType: 'uint256', + name: 'nonce', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'numBonds', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'ownerOf', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pause', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'paused', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pendingGovernance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'permit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'priceAdjDenom', + outputs: [ + { + internalType: 'uint128', + name: '', + type: 'uint128', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'priceAdjNum', + outputs: [ + { + internalType: 'uint128', + name: '', + type: 'uint128', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'principal', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'protocolFeeBps', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'safeTransfer', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + { + internalType: 'bytes', + name: '_data', + type: 'bytes', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'solace_', + type: 'address', + }, + { + internalType: 'address', + name: 'xsLocker_', + type: 'address', + }, + { + internalType: 'address', + name: 'pool_', + type: 'address', + }, + { + internalType: 'address', + name: 'dao_', + type: 'address', + }, + { + internalType: 'address', + name: 'principal_', + type: 'address', + }, + { + internalType: 'bool', + name: 'isPermittable_', + type: 'bool', + }, + { + internalType: 'address', + name: 'bondDepo_', + type: 'address', + }, + ], + name: 'setAddresses', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'setApprovalForAll', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'protocolFee', + type: 'uint256', + }, + ], + name: 'setFees', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'pendingGovernance_', + type: 'address', + }, + ], + name: 'setPendingGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'startPrice', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'minimumPrice', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'maxPayout', + type: 'uint256', + }, + { + internalType: 'uint128', + name: 'priceAdjNum', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'priceAdjDenom', + type: 'uint128', + }, + { + internalType: 'uint256', + name: 'capacity', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'capacityIsPayout', + type: 'bool', + }, + { + internalType: 'uint40', + name: 'startTime', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'endTime', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'globalVestingTerm', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'halfLife', + type: 'uint40', + }, + ], + internalType: 'struct BondTellerErc20.Terms', + name: 'terms', + type: 'tuple', + }, + ], + name: 'setTerms', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'solace', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'startTime', + outputs: [ + { + internalType: 'uint40', + name: '', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'termsSet', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'tokenByIndex', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'tokenOfOwnerByIndex', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'tokenURI', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'transfer', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'underwritingPool', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'unpause', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'xsLocker', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, +]; + +export class BondTellerErc20__factory { + static readonly abi = _abi; + static createInterface(): BondTellerErc20Interface { + return new utils.Interface(_abi) as BondTellerErc20Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): BondTellerErc20 { + return new Contract(address, _abi, signerOrProvider) as BondTellerErc20; + } +} diff --git a/src/apps/solace/contracts/ethers/factories/BondTellerEth__factory.ts b/src/apps/solace/contracts/ethers/factories/BondTellerEth__factory.ts new file mode 100644 index 000000000..e7075f9c3 --- /dev/null +++ b/src/apps/solace/contracts/ethers/factories/BondTellerEth__factory.ts @@ -0,0 +1,1511 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { BondTellerEth, BondTellerEthInterface } from '../BondTellerEth'; + +const _abi = [ + { + anonymous: false, + inputs: [], + name: 'AddressesSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'approved', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + indexed: false, + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'ApprovalForAll', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'string', + name: 'baseURI', + type: 'string', + }, + ], + name: 'BaseURISet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'uint256', + name: 'lockID', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'principalAmount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'payoutAmount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint40', + name: 'vestingStart', + type: 'uint40', + }, + { + indexed: false, + internalType: 'uint40', + name: 'vestingTime', + type: 'uint40', + }, + ], + name: 'CreateBond', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'FeesSet', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'GovernanceLocked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'pendingGovernance', + type: 'address', + }, + ], + name: 'GovernancePending', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'oldGovernance', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'newGovernance', + type: 'address', + }, + ], + name: 'GovernanceTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'Paused', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'uint256', + name: 'bondID', + type: 'uint256', + }, + { + indexed: false, + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'payoutAmount', + type: 'uint256', + }, + ], + name: 'RedeemBond', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'TermsSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'Unpaused', + type: 'event', + }, + { + stateMutability: 'payable', + type: 'fallback', + }, + { + inputs: [], + name: 'DOMAIN_SEPARATOR', + outputs: [ + { + internalType: 'bytes32', + name: 'seperator', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'PERMIT_TYPEHASH', + outputs: [ + { + internalType: 'bytes32', + name: 'typehash', + type: 'bytes32', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'acceptGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'baseURI', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'bondDepo', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'bondPrice', + outputs: [ + { + internalType: 'uint256', + name: 'price_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'bonds', + outputs: [ + { + internalType: 'uint256', + name: 'payoutAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'payoutAlreadyClaimed', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'principalPaid', + type: 'uint256', + }, + { + internalType: 'uint40', + name: 'vestingStart', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'localVestingTerm', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amountOut', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + ], + name: 'calculateAmountIn', + outputs: [ + { + internalType: 'uint256', + name: 'amountIn', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amountIn', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + ], + name: 'calculateAmountOut', + outputs: [ + { + internalType: 'uint256', + name: 'amountOut', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'capacity', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'capacityIsPayout', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'bondID', + type: 'uint256', + }, + ], + name: 'claimPayout', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'dao', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'minAmountOut', + type: 'uint256', + }, + { + internalType: 'address', + name: 'depositor', + type: 'address', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + ], + name: 'depositEth', + outputs: [ + { + internalType: 'uint256', + name: 'payout', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'minAmountOut', + type: 'uint256', + }, + { + internalType: 'address', + name: 'depositor', + type: 'address', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + ], + name: 'depositWeth', + outputs: [ + { + internalType: 'uint256', + name: 'payout', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'minAmountOut', + type: 'uint256', + }, + { + internalType: 'address', + name: 'depositor', + type: 'address', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'depositWethSigned', + outputs: [ + { + internalType: 'uint256', + name: 'payout', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'endTime', + outputs: [ + { + internalType: 'uint40', + name: '', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'exists', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'getApproved', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'globalVestingTerm', + outputs: [ + { + internalType: 'uint40', + name: '', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governanceIsLocked', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'halfLife', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'string', + name: 'name_', + type: 'string', + }, + { + internalType: 'address', + name: 'governance_', + type: 'address', + }, + { + internalType: 'address', + name: 'solace_', + type: 'address', + }, + { + internalType: 'address', + name: 'xsLocker_', + type: 'address', + }, + { + internalType: 'address', + name: 'pool_', + type: 'address', + }, + { + internalType: 'address', + name: 'dao_', + type: 'address', + }, + { + internalType: 'address', + name: 'principal_', + type: 'address', + }, + { + internalType: 'bool', + name: 'isPermittable_', + type: 'bool', + }, + { + internalType: 'address', + name: 'bondDepo_', + type: 'address', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'operator', + type: 'address', + }, + ], + name: 'isApprovedForAll', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'isPermittable', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lastPriceUpdate', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lockGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'maxPayout', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'minimumPrice', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'nextPrice', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'nonces', + outputs: [ + { + internalType: 'uint256', + name: 'nonce', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'numBonds', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'ownerOf', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pause', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'paused', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pendingGovernance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'permit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'priceAdjDenom', + outputs: [ + { + internalType: 'uint128', + name: '', + type: 'uint128', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'priceAdjNum', + outputs: [ + { + internalType: 'uint128', + name: '', + type: 'uint128', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'principal', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'protocolFeeBps', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'safeTransfer', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + { + internalType: 'bytes', + name: '_data', + type: 'bytes', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'solace_', + type: 'address', + }, + { + internalType: 'address', + name: 'xsLocker_', + type: 'address', + }, + { + internalType: 'address', + name: 'pool_', + type: 'address', + }, + { + internalType: 'address', + name: 'dao_', + type: 'address', + }, + { + internalType: 'address', + name: 'principal_', + type: 'address', + }, + { + internalType: 'bool', + name: 'isPermittable_', + type: 'bool', + }, + { + internalType: 'address', + name: 'bondDepo_', + type: 'address', + }, + ], + name: 'setAddresses', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'setApprovalForAll', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'protocolFee', + type: 'uint256', + }, + ], + name: 'setFees', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'pendingGovernance_', + type: 'address', + }, + ], + name: 'setPendingGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'startPrice', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'minimumPrice', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'maxPayout', + type: 'uint256', + }, + { + internalType: 'uint128', + name: 'priceAdjNum', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'priceAdjDenom', + type: 'uint128', + }, + { + internalType: 'uint256', + name: 'capacity', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'capacityIsPayout', + type: 'bool', + }, + { + internalType: 'uint40', + name: 'startTime', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'endTime', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'globalVestingTerm', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'halfLife', + type: 'uint40', + }, + ], + internalType: 'struct BondTellerEth.Terms', + name: 'terms', + type: 'tuple', + }, + ], + name: 'setTerms', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'solace', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'startTime', + outputs: [ + { + internalType: 'uint40', + name: '', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'termsSet', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'tokenByIndex', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'tokenOfOwnerByIndex', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'tokenURI', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'transfer', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'underwritingPool', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'unpause', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'xsLocker', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + stateMutability: 'payable', + type: 'receive', + }, +]; + +export class BondTellerEth__factory { + static readonly abi = _abi; + static createInterface(): BondTellerEthInterface { + return new utils.Interface(_abi) as BondTellerEthInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): BondTellerEth { + return new Contract(address, _abi, signerOrProvider) as BondTellerEth; + } +} diff --git a/src/apps/solace/contracts/ethers/factories/BondTellerMatic__factory.ts b/src/apps/solace/contracts/ethers/factories/BondTellerMatic__factory.ts new file mode 100644 index 000000000..3efd313e7 --- /dev/null +++ b/src/apps/solace/contracts/ethers/factories/BondTellerMatic__factory.ts @@ -0,0 +1,1511 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { BondTellerMatic, BondTellerMaticInterface } from '../BondTellerMatic'; + +const _abi = [ + { + anonymous: false, + inputs: [], + name: 'AddressesSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'approved', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + indexed: false, + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'ApprovalForAll', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'string', + name: 'baseURI', + type: 'string', + }, + ], + name: 'BaseURISet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'uint256', + name: 'lockID', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'principalAmount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'payoutAmount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint40', + name: 'vestingStart', + type: 'uint40', + }, + { + indexed: false, + internalType: 'uint40', + name: 'vestingTime', + type: 'uint40', + }, + ], + name: 'CreateBond', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'FeesSet', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'GovernanceLocked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'pendingGovernance', + type: 'address', + }, + ], + name: 'GovernancePending', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'oldGovernance', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'newGovernance', + type: 'address', + }, + ], + name: 'GovernanceTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'Paused', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'uint256', + name: 'bondID', + type: 'uint256', + }, + { + indexed: false, + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'payoutAmount', + type: 'uint256', + }, + ], + name: 'RedeemBond', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'TermsSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'Unpaused', + type: 'event', + }, + { + stateMutability: 'payable', + type: 'fallback', + }, + { + inputs: [], + name: 'DOMAIN_SEPARATOR', + outputs: [ + { + internalType: 'bytes32', + name: 'seperator', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'PERMIT_TYPEHASH', + outputs: [ + { + internalType: 'bytes32', + name: 'typehash', + type: 'bytes32', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'acceptGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'baseURI', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'bondDepo', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'bondPrice', + outputs: [ + { + internalType: 'uint256', + name: 'price_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + name: 'bonds', + outputs: [ + { + internalType: 'uint256', + name: 'payoutAmount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'payoutAlreadyClaimed', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'principalPaid', + type: 'uint256', + }, + { + internalType: 'uint40', + name: 'vestingStart', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'localVestingTerm', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amountOut', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + ], + name: 'calculateAmountIn', + outputs: [ + { + internalType: 'uint256', + name: 'amountIn', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amountIn', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + ], + name: 'calculateAmountOut', + outputs: [ + { + internalType: 'uint256', + name: 'amountOut', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'capacity', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'capacityIsPayout', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'bondID', + type: 'uint256', + }, + ], + name: 'claimPayout', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'dao', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'minAmountOut', + type: 'uint256', + }, + { + internalType: 'address', + name: 'depositor', + type: 'address', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + ], + name: 'depositMatic', + outputs: [ + { + internalType: 'uint256', + name: 'payout', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'minAmountOut', + type: 'uint256', + }, + { + internalType: 'address', + name: 'depositor', + type: 'address', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + ], + name: 'depositWmatic', + outputs: [ + { + internalType: 'uint256', + name: 'payout', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'minAmountOut', + type: 'uint256', + }, + { + internalType: 'address', + name: 'depositor', + type: 'address', + }, + { + internalType: 'bool', + name: 'stake', + type: 'bool', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'depositWmaticSigned', + outputs: [ + { + internalType: 'uint256', + name: 'payout', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'endTime', + outputs: [ + { + internalType: 'uint40', + name: '', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'exists', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'getApproved', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'globalVestingTerm', + outputs: [ + { + internalType: 'uint40', + name: '', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governanceIsLocked', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'halfLife', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'string', + name: 'name_', + type: 'string', + }, + { + internalType: 'address', + name: 'governance_', + type: 'address', + }, + { + internalType: 'address', + name: 'solace_', + type: 'address', + }, + { + internalType: 'address', + name: 'xsLocker_', + type: 'address', + }, + { + internalType: 'address', + name: 'pool_', + type: 'address', + }, + { + internalType: 'address', + name: 'dao_', + type: 'address', + }, + { + internalType: 'address', + name: 'principal_', + type: 'address', + }, + { + internalType: 'bool', + name: 'isPermittable_', + type: 'bool', + }, + { + internalType: 'address', + name: 'bondDepo_', + type: 'address', + }, + ], + name: 'initialize', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'operator', + type: 'address', + }, + ], + name: 'isApprovedForAll', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'isPermittable', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lastPriceUpdate', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lockGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'maxPayout', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'minimumPrice', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'nextPrice', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'nonces', + outputs: [ + { + internalType: 'uint256', + name: 'nonce', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'numBonds', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'ownerOf', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pause', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'paused', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pendingGovernance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'permit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'priceAdjDenom', + outputs: [ + { + internalType: 'uint128', + name: '', + type: 'uint128', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'priceAdjNum', + outputs: [ + { + internalType: 'uint128', + name: '', + type: 'uint128', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'principal', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'protocolFeeBps', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'safeTransfer', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + { + internalType: 'bytes', + name: '_data', + type: 'bytes', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'solace_', + type: 'address', + }, + { + internalType: 'address', + name: 'xsLocker_', + type: 'address', + }, + { + internalType: 'address', + name: 'pool_', + type: 'address', + }, + { + internalType: 'address', + name: 'dao_', + type: 'address', + }, + { + internalType: 'address', + name: 'principal_', + type: 'address', + }, + { + internalType: 'bool', + name: 'isPermittable_', + type: 'bool', + }, + { + internalType: 'address', + name: 'bondDepo_', + type: 'address', + }, + ], + name: 'setAddresses', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'setApprovalForAll', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'protocolFee', + type: 'uint256', + }, + ], + name: 'setFees', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'pendingGovernance_', + type: 'address', + }, + ], + name: 'setPendingGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'startPrice', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'minimumPrice', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'maxPayout', + type: 'uint256', + }, + { + internalType: 'uint128', + name: 'priceAdjNum', + type: 'uint128', + }, + { + internalType: 'uint128', + name: 'priceAdjDenom', + type: 'uint128', + }, + { + internalType: 'uint256', + name: 'capacity', + type: 'uint256', + }, + { + internalType: 'bool', + name: 'capacityIsPayout', + type: 'bool', + }, + { + internalType: 'uint40', + name: 'startTime', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'endTime', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'globalVestingTerm', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'halfLife', + type: 'uint40', + }, + ], + internalType: 'struct BondTellerMatic.Terms', + name: 'terms', + type: 'tuple', + }, + ], + name: 'setTerms', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'solace', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'startTime', + outputs: [ + { + internalType: 'uint40', + name: '', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'termsSet', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'tokenByIndex', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'tokenOfOwnerByIndex', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'tokenURI', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'transfer', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'underwritingPool', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'unpause', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'xsLocker', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + stateMutability: 'payable', + type: 'receive', + }, +]; + +export class BondTellerMatic__factory { + static readonly abi = _abi; + static createInterface(): BondTellerMaticInterface { + return new utils.Interface(_abi) as BondTellerMaticInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): BondTellerMatic { + return new Contract(address, _abi, signerOrProvider) as BondTellerMatic; + } +} diff --git a/src/apps/solace/contracts/ethers/factories/Erc20__factory.ts b/src/apps/solace/contracts/ethers/factories/Erc20__factory.ts new file mode 100644 index 000000000..f35463906 --- /dev/null +++ b/src/apps/solace/contracts/ethers/factories/Erc20__factory.ts @@ -0,0 +1,306 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { Erc20, Erc20Interface } from '../Erc20'; + +const _abi = [ + { + inputs: [ + { + internalType: 'string', + name: 'name_', + type: 'string', + }, + { + internalType: 'string', + name: 'symbol_', + type: 'string', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + ], + name: 'allowance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'decimals', + outputs: [ + { + internalType: 'uint8', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'subtractedValue', + type: 'uint256', + }, + ], + name: 'decreaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'addedValue', + type: 'uint256', + }, + ], + name: 'increaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transfer', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'sender', + type: 'address', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class Erc20__factory { + static readonly abi = _abi; + static createInterface(): Erc20Interface { + return new utils.Interface(_abi) as Erc20Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): Erc20 { + return new Contract(address, _abi, signerOrProvider) as Erc20; + } +} diff --git a/src/apps/solace/contracts/ethers/factories/Scp__factory.ts b/src/apps/solace/contracts/ethers/factories/Scp__factory.ts new file mode 100644 index 000000000..72b5972de --- /dev/null +++ b/src/apps/solace/contracts/ethers/factories/Scp__factory.ts @@ -0,0 +1,948 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { Scp, ScpInterface } from '../Scp'; + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: 'governance_', + type: 'address', + }, + { + internalType: 'address', + name: 'registry_', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'user', + type: 'address', + }, + ], + name: 'CooldownStarted', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'user', + type: 'address', + }, + ], + name: 'CooldownStopped', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint40', + name: 'cooldownMin', + type: 'uint40', + }, + { + indexed: false, + internalType: 'uint40', + name: 'cooldownMax', + type: 'uint40', + }, + ], + name: 'CooldownWindowSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'depositor', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + indexed: true, + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + ], + name: 'DepositMade', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'FundsSent', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'GovernanceLocked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'pendingGovernance', + type: 'address', + }, + ], + name: 'GovernancePending', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'oldGovernance', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'newGovernance', + type: 'address', + }, + ], + name: 'GovernanceTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'Paused', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'requestor', + type: 'address', + }, + ], + name: 'RequestorAdded', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'requestor', + type: 'address', + }, + ], + name: 'RequestorRemoved', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'Unpaused', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'withdrawer', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'WithdrawalMade', + type: 'event', + }, + { + stateMutability: 'payable', + type: 'fallback', + }, + { + inputs: [], + name: 'DOMAIN_SEPARATOR', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'acceptGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'requestor', + type: 'address', + }, + ], + name: 'addRequestor', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + ], + name: 'allowance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'user', + type: 'address', + }, + ], + name: 'canTransfer', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'user', + type: 'address', + }, + ], + name: 'canWithdraw', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'cooldownMax', + outputs: [ + { + internalType: 'uint40', + name: '', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'cooldownMin', + outputs: [ + { + internalType: 'uint40', + name: '', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'user', + type: 'address', + }, + ], + name: 'cooldownStart', + outputs: [ + { + internalType: 'uint40', + name: '', + type: 'uint40', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'decimals', + outputs: [ + { + internalType: 'uint8', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'subtractedValue', + type: 'uint256', + }, + ], + name: 'decreaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'depositEth', + outputs: [ + { + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + ], + stateMutability: 'payable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'depositWeth', + outputs: [ + { + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governanceIsLocked', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'addedValue', + type: 'uint256', + }, + ], + name: 'increaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'dst', + type: 'address', + }, + ], + name: 'isRequestor', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lockGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'user', + type: 'address', + }, + ], + name: 'maxRedeemableShares', + outputs: [ + { + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + ], + name: 'nonces', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pause', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'paused', + outputs: [ + { + internalType: 'bool', + name: 'paused_', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pendingGovernance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'permit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'pricePerShare', + outputs: [ + { + internalType: 'uint256', + name: 'price', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'requestor', + type: 'address', + }, + ], + name: 'removeRequestor', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'requestEth', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint40', + name: 'cooldownMin_', + type: 'uint40', + }, + { + internalType: 'uint40', + name: 'cooldownMax_', + type: 'uint40', + }, + ], + name: 'setCooldownWindow', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'pendingGovernance_', + type: 'address', + }, + ], + name: 'setPendingGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'startCooldown', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'stopCooldown', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalAssets', + outputs: [ + { + internalType: 'uint256', + name: 'assets', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transfer', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'sender', + type: 'address', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'unpause', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + ], + name: 'withdrawEth', + outputs: [ + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'shares', + type: 'uint256', + }, + ], + name: 'withdrawWeth', + outputs: [ + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + stateMutability: 'payable', + type: 'receive', + }, +]; + +export class Scp__factory { + static readonly abi = _abi; + static createInterface(): ScpInterface { + return new utils.Interface(_abi) as ScpInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): Scp { + return new Contract(address, _abi, signerOrProvider) as Scp; + } +} diff --git a/src/apps/solace/contracts/ethers/factories/SolaceCoverProductV2__factory.ts b/src/apps/solace/contracts/ethers/factories/SolaceCoverProductV2__factory.ts new file mode 100644 index 000000000..d6f437d5e --- /dev/null +++ b/src/apps/solace/contracts/ethers/factories/SolaceCoverProductV2__factory.ts @@ -0,0 +1,1635 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { SolaceCoverProductV2, SolaceCoverProductV2Interface } from '../SolaceCoverProductV2'; + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: 'governance_', + type: 'address', + }, + { + internalType: 'address', + name: 'registry_', + type: 'address', + }, + { + internalType: 'string', + name: 'asset_', + type: 'string', + }, + { + internalType: 'string', + name: 'domain_', + type: 'string', + }, + { + internalType: 'string', + name: 'version_', + type: 'string', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'approved', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + indexed: false, + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'ApprovalForAll', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'string', + name: 'asset', + type: 'string', + }, + ], + name: 'AssetSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'string', + name: 'baseURI', + type: 'string', + }, + ], + name: 'BaseURISet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'chargeCycle', + type: 'uint256', + }, + ], + name: 'ChargeCycleSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'cooldownPeriod', + type: 'uint256', + }, + ], + name: 'CooldownPeriodSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'startTime', + type: 'uint256', + }, + ], + name: 'CooldownStarted', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + ], + name: 'CooldownStopped', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'DepositMade', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'GovernanceLocked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'pendingGovernance', + type: 'address', + }, + ], + name: 'GovernancePending', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'oldGovernance', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'newGovernance', + type: 'address', + }, + ], + name: 'GovernanceTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'bool', + name: 'isReferralOn', + type: 'bool', + }, + ], + name: 'IsReferralOnSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'maxRateNum', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'maxRateDenom', + type: 'uint256', + }, + ], + name: 'MaxRateSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'bool', + name: 'pause', + type: 'bool', + }, + ], + name: 'PauseSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + name: 'PolicyCreated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + name: 'PolicyDeactivated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'activeCoverLimit', + type: 'uint256', + }, + ], + name: 'PolicyManagerUpdated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + name: 'PolicyUpdated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'PremiumCharged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'actualPremium', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'chargedPremium', + type: 'uint256', + }, + ], + name: 'PremiumPartiallyCharged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'referralReward', + type: 'uint256', + }, + ], + name: 'ReferralRewardSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'rewardEarner', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'rewardPointsEarned', + type: 'uint256', + }, + ], + name: 'ReferralRewardsEarned', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'referralThreshold', + type: 'uint256', + }, + ], + name: 'ReferralThresholdSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'registry', + type: 'address', + }, + ], + name: 'RegistrySet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountGifted', + type: 'uint256', + }, + ], + name: 'RewardPointsSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'chainId', + type: 'uint256', + }, + ], + name: 'SupportedChainRemoved', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'chainId', + type: 'uint256', + }, + ], + name: 'SupportedChainSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'WithdrawMade', + type: 'event', + }, + { + inputs: [], + name: 'acceptGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + ], + name: 'accountBalanceOf', + outputs: [ + { + internalType: 'uint256', + name: 'balance', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder_', + type: 'address', + }, + { + internalType: 'uint256', + name: 'coverLimit_', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'amount_', + type: 'uint256', + }, + { + internalType: 'bytes', + name: 'referralCode_', + type: 'bytes', + }, + { + internalType: 'uint256[]', + name: 'chains_', + type: 'uint256[]', + }, + ], + name: 'activatePolicy', + outputs: [ + { + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'activeCoverLimit', + outputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256[]', + name: 'supportedChains', + type: 'uint256[]', + }, + ], + name: 'addSupportedChains', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'asset', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'availableCoverCapacity', + outputs: [ + { + internalType: 'uint256', + name: 'availableCoverCapacity_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'baseURI', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'chargeCycle', + outputs: [ + { + internalType: 'uint256', + name: 'chargeCycle_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address[]', + name: 'holders', + type: 'address[]', + }, + { + internalType: 'uint256[]', + name: 'premiums', + type: 'uint256[]', + }, + ], + name: 'chargePremiums', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'cooldownPeriod', + outputs: [ + { + internalType: 'uint256', + name: 'cooldownPeriod_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder_', + type: 'address', + }, + ], + name: 'cooldownStart', + outputs: [ + { + internalType: 'uint256', + name: 'cooldownStart_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'policyID_', + type: 'uint256', + }, + ], + name: 'coverLimitOf', + outputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'deactivatePolicy', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'deposit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'getApproved', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'chainIndex', + type: 'uint256', + }, + ], + name: 'getChain', + outputs: [ + { + internalType: 'uint256', + name: 'chainId', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + name: 'getPolicyChainInfo', + outputs: [ + { + internalType: 'uint256[]', + name: 'policyChains', + type: 'uint256[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'referralCode', + type: 'bytes', + }, + ], + name: 'getReferrerFromReferralCode', + outputs: [ + { + internalType: 'address', + name: 'referrer', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governanceIsLocked', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'operator', + type: 'address', + }, + ], + name: 'isApprovedForAll', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + ], + name: 'isReferralCodeUsed', + outputs: [ + { + internalType: 'bool', + name: 'isReferralCodeUsed_', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'referralCode', + type: 'bytes', + }, + ], + name: 'isReferralCodeValid', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'isReferralOn', + outputs: [ + { + internalType: 'bool', + name: 'isReferralOn_', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'chainId', + type: 'uint256', + }, + ], + name: 'isSupportedChain', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lockGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'maxCover', + outputs: [ + { + internalType: 'uint256', + name: 'cover', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'maxRate', + outputs: [ + { + internalType: 'uint256', + name: 'maxRateNum_', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'maxRateDenom_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'coverLimit', + type: 'uint256', + }, + ], + name: 'minRequiredAccountBalance', + outputs: [ + { + internalType: 'uint256', + name: 'minRequiredAccountBalance_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'numSupportedChains', + outputs: [ + { + internalType: 'uint256', + name: 'count', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'ownerOf', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'paused', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pendingGovernance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'policyCount', + outputs: [ + { + internalType: 'uint256', + name: 'count', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder_', + type: 'address', + }, + ], + name: 'policyOf', + outputs: [ + { + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'policyID_', + type: 'uint256', + }, + ], + name: 'policyStatus', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder_', + type: 'address', + }, + ], + name: 'premiumsPaidOf', + outputs: [ + { + internalType: 'uint256', + name: 'premiumsPaid_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'referralReward', + outputs: [ + { + internalType: 'uint256', + name: 'referralReward_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'referralThreshold', + outputs: [ + { + internalType: 'uint256', + name: 'referralThreshold_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'registry', + outputs: [ + { + internalType: 'address', + name: 'registry_', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'chainId', + type: 'uint256', + }, + ], + name: 'removeSupportedChain', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder_', + type: 'address', + }, + ], + name: 'rewardPointsOf', + outputs: [ + { + internalType: 'uint256', + name: 'rewardPoints_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'riskManager', + outputs: [ + { + internalType: 'address', + name: 'riskManager_', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + { + internalType: 'bytes', + name: '_data', + type: 'bytes', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'setApprovalForAll', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'string', + name: 'assetName', + type: 'string', + }, + ], + name: 'setAsset', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'string', + name: 'baseURI_', + type: 'string', + }, + ], + name: 'setBaseURI', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'chargeCycle_', + type: 'uint256', + }, + ], + name: 'setChargeCycle', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'cooldownPeriod_', + type: 'uint256', + }, + ], + name: 'setCooldownPeriod', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bool', + name: 'isReferralOn_', + type: 'bool', + }, + ], + name: 'setIsReferralOn', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'maxRateNum_', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'maxRateDenom_', + type: 'uint256', + }, + ], + name: 'setMaxRate', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bool', + name: 'paused_', + type: 'bool', + }, + ], + name: 'setPaused', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'pendingGovernance_', + type: 'address', + }, + ], + name: 'setPendingGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'referralReward_', + type: 'uint256', + }, + ], + name: 'setReferralReward', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'referralThreshhold_', + type: 'uint256', + }, + ], + name: 'setReferralThreshold', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'registry_', + type: 'address', + }, + ], + name: 'setRegistry', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder_', + type: 'address', + }, + { + internalType: 'uint256', + name: 'rewardPoints_', + type: 'uint256', + }, + ], + name: 'setRewardPoints', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + name: 'tokenURI', + outputs: [ + { + internalType: 'string', + name: 'tokenURI_', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'newCoverLimit_', + type: 'uint256', + }, + { + internalType: 'bytes', + name: 'referralCode_', + type: 'bytes', + }, + ], + name: 'updateCoverLimit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256[]', + name: 'policyChains', + type: 'uint256[]', + }, + ], + name: 'updatePolicyChainInfo', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class SolaceCoverProductV2__factory { + static readonly abi = _abi; + static createInterface(): SolaceCoverProductV2Interface { + return new utils.Interface(_abi) as SolaceCoverProductV2Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): SolaceCoverProductV2 { + return new Contract(address, _abi, signerOrProvider) as SolaceCoverProductV2; + } +} diff --git a/src/apps/solace/contracts/ethers/factories/SolaceCoverProduct__factory.ts b/src/apps/solace/contracts/ethers/factories/SolaceCoverProduct__factory.ts new file mode 100644 index 000000000..7f6547048 --- /dev/null +++ b/src/apps/solace/contracts/ethers/factories/SolaceCoverProduct__factory.ts @@ -0,0 +1,1474 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { SolaceCoverProduct, SolaceCoverProductInterface } from '../SolaceCoverProduct'; + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: 'governance_', + type: 'address', + }, + { + internalType: 'address', + name: 'registry_', + type: 'address', + }, + { + internalType: 'string', + name: 'domain_', + type: 'string', + }, + { + internalType: 'string', + name: 'version_', + type: 'string', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'approved', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + indexed: false, + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'ApprovalForAll', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'string', + name: 'baseURI', + type: 'string', + }, + ], + name: 'BaseURISet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'chargeCycle', + type: 'uint256', + }, + ], + name: 'ChargeCycleSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'cooldownPeriod', + type: 'uint256', + }, + ], + name: 'CooldownPeriodSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'startTime', + type: 'uint256', + }, + ], + name: 'CooldownStarted', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + ], + name: 'CooldownStopped', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'DepositMade', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'GovernanceLocked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'pendingGovernance', + type: 'address', + }, + ], + name: 'GovernancePending', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'oldGovernance', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'newGovernance', + type: 'address', + }, + ], + name: 'GovernanceTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'bool', + name: 'isReferralOn', + type: 'bool', + }, + ], + name: 'IsReferralOnSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'maxRateDenom', + type: 'uint256', + }, + ], + name: 'MaxRateDenomSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'maxRateNum', + type: 'uint256', + }, + ], + name: 'MaxRateNumSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'bool', + name: 'pause', + type: 'bool', + }, + ], + name: 'PauseSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + name: 'PolicyCreated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + name: 'PolicyDeactivated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'activeCoverLimit', + type: 'uint256', + }, + ], + name: 'PolicyManagerUpdated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + name: 'PolicyUpdated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'PremiumCharged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'actualPremium', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'chargedPremium', + type: 'uint256', + }, + ], + name: 'PremiumPartiallyCharged', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'referralReward', + type: 'uint256', + }, + ], + name: 'ReferralRewardSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'rewardEarner', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'rewardPointsEarned', + type: 'uint256', + }, + ], + name: 'ReferralRewardsEarned', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'referralThreshold', + type: 'uint256', + }, + ], + name: 'ReferralThresholdSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'registry', + type: 'address', + }, + ], + name: 'RegistrySet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountGifted', + type: 'uint256', + }, + ], + name: 'RewardPointsSet', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'WithdrawMade', + type: 'event', + }, + { + inputs: [], + name: 'acceptGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + ], + name: 'accountBalanceOf', + outputs: [ + { + internalType: 'uint256', + name: 'balance', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder_', + type: 'address', + }, + { + internalType: 'uint256', + name: 'coverLimit_', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'amount_', + type: 'uint256', + }, + { + internalType: 'bytes', + name: 'referralCode_', + type: 'bytes', + }, + ], + name: 'activatePolicy', + outputs: [ + { + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'activeCoverLimit', + outputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'availableCoverCapacity', + outputs: [ + { + internalType: 'uint256', + name: 'availableCoverCapacity_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'baseURI', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'chargeCycle', + outputs: [ + { + internalType: 'uint256', + name: 'chargeCycle_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address[]', + name: 'holders', + type: 'address[]', + }, + { + internalType: 'uint256[]', + name: 'premiums', + type: 'uint256[]', + }, + ], + name: 'chargePremiums', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'cooldownPeriod', + outputs: [ + { + internalType: 'uint256', + name: 'cooldownPeriod_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder_', + type: 'address', + }, + ], + name: 'cooldownStart', + outputs: [ + { + internalType: 'uint256', + name: 'cooldownStart_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'policyID_', + type: 'uint256', + }, + ], + name: 'coverLimitOf', + outputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'deactivatePolicy', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'deposit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'getApproved', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'referralCode', + type: 'bytes', + }, + ], + name: 'getReferrerFromReferralCode', + outputs: [ + { + internalType: 'address', + name: 'referrer', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governanceIsLocked', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'operator', + type: 'address', + }, + ], + name: 'isApprovedForAll', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder', + type: 'address', + }, + ], + name: 'isReferralCodeUsed', + outputs: [ + { + internalType: 'bool', + name: 'isReferralCodeUsed_', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes', + name: 'referralCode', + type: 'bytes', + }, + ], + name: 'isReferralCodeValid', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'isReferralOn', + outputs: [ + { + internalType: 'bool', + name: 'isReferralOn_', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lockGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'maxCover', + outputs: [ + { + internalType: 'uint256', + name: 'cover', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'maxRateDenom', + outputs: [ + { + internalType: 'uint256', + name: 'maxRateDenom_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'maxRateNum', + outputs: [ + { + internalType: 'uint256', + name: 'maxRateNum_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'coverLimit', + type: 'uint256', + }, + ], + name: 'minRequiredAccountBalance', + outputs: [ + { + internalType: 'uint256', + name: 'minRequiredAccountBalance_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'ownerOf', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'paused', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pendingGovernance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'policyCount', + outputs: [ + { + internalType: 'uint256', + name: 'count', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder_', + type: 'address', + }, + ], + name: 'policyOf', + outputs: [ + { + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'policyID_', + type: 'uint256', + }, + ], + name: 'policyStatus', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder_', + type: 'address', + }, + ], + name: 'premiumsPaidOf', + outputs: [ + { + internalType: 'uint256', + name: 'premiumsPaid_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'referralReward', + outputs: [ + { + internalType: 'uint256', + name: 'referralReward_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'referralThreshold', + outputs: [ + { + internalType: 'uint256', + name: 'referralThreshold_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'registry', + outputs: [ + { + internalType: 'address', + name: 'registry_', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder_', + type: 'address', + }, + ], + name: 'rewardPointsOf', + outputs: [ + { + internalType: 'uint256', + name: 'rewardPoints_', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'riskManager', + outputs: [ + { + internalType: 'address', + name: 'riskManager_', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + { + internalType: 'bytes', + name: '_data', + type: 'bytes', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'setApprovalForAll', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'string', + name: 'baseURI_', + type: 'string', + }, + ], + name: 'setBaseURI', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'chargeCycle_', + type: 'uint256', + }, + ], + name: 'setChargeCycle', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'cooldownPeriod_', + type: 'uint256', + }, + ], + name: 'setCooldownPeriod', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bool', + name: 'isReferralOn_', + type: 'bool', + }, + ], + name: 'setIsReferralOn', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'maxRateDenom_', + type: 'uint256', + }, + ], + name: 'setMaxRateDenom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'maxRateNum_', + type: 'uint256', + }, + ], + name: 'setMaxRateNum', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bool', + name: 'paused_', + type: 'bool', + }, + ], + name: 'setPaused', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'pendingGovernance_', + type: 'address', + }, + ], + name: 'setPendingGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'referralReward_', + type: 'uint256', + }, + ], + name: 'setReferralReward', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'referralThreshhold_', + type: 'uint256', + }, + ], + name: 'setReferralThreshold', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'registry_', + type: 'address', + }, + ], + name: 'setRegistry', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'policyholder_', + type: 'address', + }, + { + internalType: 'uint256', + name: 'rewardPoints_', + type: 'uint256', + }, + ], + name: 'setRewardPoints', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'policyID', + type: 'uint256', + }, + ], + name: 'tokenURI', + outputs: [ + { + internalType: 'string', + name: 'tokenURI_', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'newCoverLimit_', + type: 'uint256', + }, + { + internalType: 'bytes', + name: 'referralCode_', + type: 'bytes', + }, + ], + name: 'updateCoverLimit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class SolaceCoverProduct__factory { + static readonly abi = _abi; + static createInterface(): SolaceCoverProductInterface { + return new utils.Interface(_abi) as SolaceCoverProductInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): SolaceCoverProduct { + return new Contract(address, _abi, signerOrProvider) as SolaceCoverProduct; + } +} diff --git a/src/apps/solace/contracts/ethers/factories/Solace__factory.ts b/src/apps/solace/contracts/ethers/factories/Solace__factory.ts new file mode 100644 index 000000000..5823458b1 --- /dev/null +++ b/src/apps/solace/contracts/ethers/factories/Solace__factory.ts @@ -0,0 +1,582 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { Solace, SolaceInterface } from '../Solace'; + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: 'governance_', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'GovernanceLocked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'pendingGovernance', + type: 'address', + }, + ], + name: 'GovernancePending', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'oldGovernance', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'newGovernance', + type: 'address', + }, + ], + name: 'GovernanceTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'minter', + type: 'address', + }, + ], + name: 'MinterAdded', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'minter', + type: 'address', + }, + ], + name: 'MinterRemoved', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + inputs: [], + name: 'DOMAIN_SEPARATOR', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'acceptGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'minter', + type: 'address', + }, + ], + name: 'addMinter', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + ], + name: 'allowance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'burn', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'decimals', + outputs: [ + { + internalType: 'uint8', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'subtractedValue', + type: 'uint256', + }, + ], + name: 'decreaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governanceIsLocked', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'addedValue', + type: 'uint256', + }, + ], + name: 'increaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'isMinter', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lockGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'mint', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + ], + name: 'nonces', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pendingGovernance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'permit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'minter', + type: 'address', + }, + ], + name: 'removeMinter', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'pendingGovernance_', + type: 'address', + }, + ], + name: 'setPendingGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transfer', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'sender', + type: 'address', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class Solace__factory { + static readonly abi = _abi; + static createInterface(): SolaceInterface { + return new utils.Interface(_abi) as SolaceInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): Solace { + return new Contract(address, _abi, signerOrProvider) as Solace; + } +} diff --git a/src/apps/solace/contracts/ethers/factories/StakingRewards__factory.ts b/src/apps/solace/contracts/ethers/factories/StakingRewards__factory.ts new file mode 100644 index 000000000..940656635 --- /dev/null +++ b/src/apps/solace/contracts/ethers/factories/StakingRewards__factory.ts @@ -0,0 +1,603 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { StakingRewards, StakingRewardsInterface } from '../StakingRewards'; + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: 'governance_', + type: 'address', + }, + { + internalType: 'address', + name: 'solace_', + type: 'address', + }, + { + internalType: 'address', + name: 'xsLocker_', + type: 'address', + }, + { + internalType: 'uint256', + name: 'rewardPerSecond_', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'startTime', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'endTime', + type: 'uint256', + }, + ], + name: 'FarmTimesSet', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'GovernanceLocked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'pendingGovernance', + type: 'address', + }, + ], + name: 'GovernancePending', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'oldGovernance', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'newGovernance', + type: 'address', + }, + ], + name: 'GovernanceTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + ], + name: 'LockUpdated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'rewardPerSecond', + type: 'uint256', + }, + ], + name: 'RewardsSet', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'Updated', + type: 'event', + }, + { + inputs: [], + name: 'MAX_LOCK_DURATION', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'MAX_LOCK_MULTIPLIER_BPS', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'UNLOCKED_MULTIPLIER_BPS', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'accRewardPerShare', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'acceptGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + ], + name: 'compoundLock', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256[]', + name: 'xsLockIDs', + type: 'uint256[]', + }, + { + internalType: 'uint256', + name: 'increasedLockID', + type: 'uint256', + }, + ], + name: 'compoundLocks', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'endTime', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'from', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'to', + type: 'uint256', + }, + ], + name: 'getRewardAmountDistributed', + outputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governanceIsLocked', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + ], + name: 'harvestLock', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256[]', + name: 'xsLockIDs', + type: 'uint256[]', + }, + ], + name: 'harvestLocks', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'lastRewardTime', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lockGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'pendingGovernance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + ], + name: 'pendingRewardsOfLock', + outputs: [ + { + internalType: 'uint256', + name: 'reward', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + { + internalType: 'address', + name: 'oldOwner', + type: 'address', + }, + { + internalType: 'address', + name: 'newOwner', + type: 'address', + }, + { + components: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'end', + type: 'uint256', + }, + ], + internalType: 'struct Lock', + name: 'oldLock', + type: 'tuple', + }, + { + components: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'end', + type: 'uint256', + }, + ], + internalType: 'struct Lock', + name: 'newLock', + type: 'tuple', + }, + ], + name: 'registerLockEvent', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'token', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'address', + name: 'receiver', + type: 'address', + }, + ], + name: 'rescueTokens', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'rewardPerSecond', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'pendingGovernance_', + type: 'address', + }, + ], + name: 'setPendingGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'rewardPerSecond_', + type: 'uint256', + }, + ], + name: 'setRewards', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'startTime_', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'endTime_', + type: 'uint256', + }, + ], + name: 'setTimes', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'solace', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + ], + name: 'stakedLockInfo', + outputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'rewardDebt', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'unpaidRewards', + type: 'uint256', + }, + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + ], + internalType: 'struct IStakingRewards.StakedLockInfo', + name: '', + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'startTime', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'update', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'valueStaked', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'xsLocker', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, +]; + +export class StakingRewards__factory { + static readonly abi = _abi; + static createInterface(): StakingRewardsInterface { + return new utils.Interface(_abi) as StakingRewardsInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): StakingRewards { + return new Contract(address, _abi, signerOrProvider) as StakingRewards; + } +} diff --git a/src/apps/solace/contracts/ethers/factories/XSolacev1__factory.ts b/src/apps/solace/contracts/ethers/factories/XSolacev1__factory.ts new file mode 100644 index 000000000..8e42ada49 --- /dev/null +++ b/src/apps/solace/contracts/ethers/factories/XSolacev1__factory.ts @@ -0,0 +1,681 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { XSolacev1, XSolacev1Interface } from '../XSolacev1'; + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: 'governance_', + type: 'address', + }, + { + internalType: 'address', + name: 'solace_', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'GovernanceLocked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'pendingGovernance', + type: 'address', + }, + ], + name: 'GovernancePending', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'oldGovernance', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'newGovernance', + type: 'address', + }, + ], + name: 'GovernanceTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountSolace', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountXSolace', + type: 'uint256', + }, + ], + name: 'Staked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'user', + type: 'address', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountSolace', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amountXSolace', + type: 'uint256', + }, + ], + name: 'Unstaked', + type: 'event', + }, + { + inputs: [], + name: 'DOMAIN_SEPARATOR', + outputs: [ + { + internalType: 'bytes32', + name: '', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'acceptGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + ], + name: 'allowance', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'burn', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'decimals', + outputs: [ + { + internalType: 'uint8', + name: '', + type: 'uint8', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'subtractedValue', + type: 'uint256', + }, + ], + name: 'decreaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governanceIsLocked', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'addedValue', + type: 'uint256', + }, + ], + name: 'increaseAllowance', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'lockGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + ], + name: 'nonces', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pendingGovernance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'value', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'permit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'pendingGovernance_', + type: 'address', + }, + ], + name: 'setPendingGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'solace', + outputs: [ + { + internalType: 'address', + name: 'solace_', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amountSolace', + type: 'uint256', + }, + ], + name: 'solaceToXSolace', + outputs: [ + { + internalType: 'uint256', + name: 'amountXSolace', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amountSolace', + type: 'uint256', + }, + ], + name: 'stake', + outputs: [ + { + internalType: 'uint256', + name: 'amountXSolace', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'depositor', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amountSolace', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'stakeSigned', + outputs: [ + { + internalType: 'uint256', + name: 'amountXSolace', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transfer', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'sender', + type: 'address', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amountXSolace', + type: 'uint256', + }, + ], + name: 'unstake', + outputs: [ + { + internalType: 'uint256', + name: 'amountSolace', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amountXSolace', + type: 'uint256', + }, + ], + name: 'xSolaceToSolace', + outputs: [ + { + internalType: 'uint256', + name: 'amountSolace', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, +]; + +export class XSolacev1__factory { + static readonly abi = _abi; + static createInterface(): XSolacev1Interface { + return new utils.Interface(_abi) as XSolacev1Interface; + } + static connect(address: string, signerOrProvider: Signer | Provider): XSolacev1 { + return new Contract(address, _abi, signerOrProvider) as XSolacev1; + } +} diff --git a/src/apps/solace/contracts/ethers/factories/XsLocker__factory.ts b/src/apps/solace/contracts/ethers/factories/XsLocker__factory.ts new file mode 100644 index 000000000..6ae1b9d9e --- /dev/null +++ b/src/apps/solace/contracts/ethers/factories/XsLocker__factory.ts @@ -0,0 +1,1158 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ + +import { Contract, Signer, utils } from 'ethers'; +import type { Provider } from '@ethersproject/providers'; +import type { XsLocker, XsLockerInterface } from '../XsLocker'; + +const _abi = [ + { + inputs: [ + { + internalType: 'address', + name: 'governance_', + type: 'address', + }, + { + internalType: 'address', + name: 'solace_', + type: 'address', + }, + ], + stateMutability: 'nonpayable', + type: 'constructor', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'approved', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Approval', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + indexed: false, + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'ApprovalForAll', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'string', + name: 'baseURI', + type: 'string', + }, + ], + name: 'BaseURISet', + type: 'event', + }, + { + anonymous: false, + inputs: [], + name: 'GovernanceLocked', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'pendingGovernance', + type: 'address', + }, + ], + name: 'GovernancePending', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'oldGovernance', + type: 'address', + }, + { + indexed: false, + internalType: 'address', + name: 'newGovernance', + type: 'address', + }, + ], + name: 'GovernanceTransferred', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + ], + name: 'LockCreated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'end', + type: 'uint256', + }, + ], + name: 'LockUpdated', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: true, + internalType: 'address', + name: 'from', + type: 'address', + }, + { + indexed: true, + internalType: 'address', + name: 'to', + type: 'address', + }, + { + indexed: true, + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'Transfer', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + { + indexed: false, + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'Withdrawl', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'listener', + type: 'address', + }, + ], + name: 'xsLockListenerAdded', + type: 'event', + }, + { + anonymous: false, + inputs: [ + { + indexed: false, + internalType: 'address', + name: 'listener', + type: 'address', + }, + ], + name: 'xsLockListenerRemoved', + type: 'event', + }, + { + inputs: [], + name: 'DOMAIN_SEPARATOR', + outputs: [ + { + internalType: 'bytes32', + name: 'seperator', + type: 'bytes32', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'MAX_LOCK_DURATION', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'PERMIT_TYPEHASH', + outputs: [ + { + internalType: 'bytes32', + name: 'typehash', + type: 'bytes32', + }, + ], + stateMutability: 'pure', + type: 'function', + }, + { + inputs: [], + name: 'acceptGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'listener', + type: 'address', + }, + ], + name: 'addXsLockListener', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'approve', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + ], + name: 'balanceOf', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'baseURI', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'end', + type: 'uint256', + }, + ], + name: 'createLock', + outputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'end', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'createLockSigned', + outputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + ], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'exists', + outputs: [ + { + internalType: 'bool', + name: 'status', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'end', + type: 'uint256', + }, + ], + name: 'extendLock', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'getApproved', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'getXsLockListeners', + outputs: [ + { + internalType: 'address[]', + name: 'listeners_', + type: 'address[]', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'governanceIsLocked', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'increaseAmount', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'increaseAmountSigned', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'address', + name: 'operator', + type: 'address', + }, + ], + name: 'isApprovedForAll', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + ], + name: 'isLocked', + outputs: [ + { + internalType: 'bool', + name: 'locked', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'lockGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + ], + name: 'locks', + outputs: [ + { + components: [ + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'end', + type: 'uint256', + }, + ], + internalType: 'struct Lock', + name: 'lock_', + type: 'tuple', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'name', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'nonces', + outputs: [ + { + internalType: 'uint256', + name: 'nonce', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'ownerOf', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'pendingGovernance', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'spender', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + { + internalType: 'uint256', + name: 'deadline', + type: 'uint256', + }, + { + internalType: 'uint8', + name: 'v', + type: 'uint8', + }, + { + internalType: 'bytes32', + name: 'r', + type: 'bytes32', + }, + { + internalType: 'bytes32', + name: 's', + type: 'bytes32', + }, + ], + name: 'permit', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'listener', + type: 'address', + }, + ], + name: 'removeXsLockListener', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'safeTransfer', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + { + internalType: 'bytes', + name: '_data', + type: 'bytes', + }, + ], + name: 'safeTransferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'operator', + type: 'address', + }, + { + internalType: 'bool', + name: 'approved', + type: 'bool', + }, + ], + name: 'setApprovalForAll', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'string', + name: 'baseURI_', + type: 'string', + }, + ], + name: 'setBaseURI', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'pendingGovernance_', + type: 'address', + }, + ], + name: 'setPendingGovernance', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [], + name: 'solace', + outputs: [ + { + internalType: 'address', + name: '', + type: 'address', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'account', + type: 'address', + }, + ], + name: 'stakedBalance', + outputs: [ + { + internalType: 'uint256', + name: 'balance', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'bytes4', + name: 'interfaceId', + type: 'bytes4', + }, + ], + name: 'supportsInterface', + outputs: [ + { + internalType: 'bool', + name: '', + type: 'bool', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'symbol', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + ], + name: 'timeLeft', + outputs: [ + { + internalType: 'uint256', + name: 'time', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'tokenByIndex', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'owner', + type: 'address', + }, + { + internalType: 'uint256', + name: 'index', + type: 'uint256', + }, + ], + name: 'tokenOfOwnerByIndex', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'tokenURI', + outputs: [ + { + internalType: 'string', + name: '', + type: 'string', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalNumLocks', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [], + name: 'totalSupply', + outputs: [ + { + internalType: 'uint256', + name: '', + type: 'uint256', + }, + ], + stateMutability: 'view', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenID', + type: 'uint256', + }, + ], + name: 'transfer', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'address', + name: 'from', + type: 'address', + }, + { + internalType: 'address', + name: 'to', + type: 'address', + }, + { + internalType: 'uint256', + name: 'tokenId', + type: 'uint256', + }, + ], + name: 'transferFrom', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + ], + name: 'withdraw', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256', + name: 'xsLockID', + type: 'uint256', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + { + internalType: 'uint256', + name: 'amount', + type: 'uint256', + }, + ], + name: 'withdrawInPart', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, + { + inputs: [ + { + internalType: 'uint256[]', + name: 'xsLockIDs', + type: 'uint256[]', + }, + { + internalType: 'address', + name: 'recipient', + type: 'address', + }, + ], + name: 'withdrawMany', + outputs: [], + stateMutability: 'nonpayable', + type: 'function', + }, +]; + +export class XsLocker__factory { + static readonly abi = _abi; + static createInterface(): XsLockerInterface { + return new utils.Interface(_abi) as XsLockerInterface; + } + static connect(address: string, signerOrProvider: Signer | Provider): XsLocker { + return new Contract(address, _abi, signerOrProvider) as XsLocker; + } +} diff --git a/src/apps/solace/contracts/ethers/factories/index.ts b/src/apps/solace/contracts/ethers/factories/index.ts new file mode 100644 index 000000000..e947aac9a --- /dev/null +++ b/src/apps/solace/contracts/ethers/factories/index.ts @@ -0,0 +1,14 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export { BondTellerErc20__factory } from './BondTellerErc20__factory'; +export { BondTellerEth__factory } from './BondTellerEth__factory'; +export { BondTellerMatic__factory } from './BondTellerMatic__factory'; +export { Erc20__factory } from './Erc20__factory'; +export { Scp__factory } from './Scp__factory'; +export { Solace__factory } from './Solace__factory'; +export { SolaceCoverProduct__factory } from './SolaceCoverProduct__factory'; +export { SolaceCoverProductV2__factory } from './SolaceCoverProductV2__factory'; +export { StakingRewards__factory } from './StakingRewards__factory'; +export { XSolacev1__factory } from './XSolacev1__factory'; +export { XsLocker__factory } from './XsLocker__factory'; diff --git a/src/apps/solace/contracts/ethers/index.ts b/src/apps/solace/contracts/ethers/index.ts new file mode 100644 index 000000000..aff5791ac --- /dev/null +++ b/src/apps/solace/contracts/ethers/index.ts @@ -0,0 +1,26 @@ +/* Autogenerated file. Do not edit manually. */ +/* tslint:disable */ +/* eslint-disable */ +export type { BondTellerErc20 } from './BondTellerErc20'; +export type { BondTellerEth } from './BondTellerEth'; +export type { BondTellerMatic } from './BondTellerMatic'; +export type { Erc20 } from './Erc20'; +export type { Scp } from './Scp'; +export type { Solace } from './Solace'; +export type { SolaceCoverProduct } from './SolaceCoverProduct'; +export type { SolaceCoverProductV2 } from './SolaceCoverProductV2'; +export type { StakingRewards } from './StakingRewards'; +export type { XSolacev1 } from './XSolacev1'; +export type { XsLocker } from './XsLocker'; +export * as factories from './factories'; +export { BondTellerErc20__factory } from './factories/BondTellerErc20__factory'; +export { BondTellerEth__factory } from './factories/BondTellerEth__factory'; +export { BondTellerMatic__factory } from './factories/BondTellerMatic__factory'; +export { Erc20__factory } from './factories/Erc20__factory'; +export { Scp__factory } from './factories/Scp__factory'; +export { SolaceCoverProductV2__factory } from './factories/SolaceCoverProductV2__factory'; +export { SolaceCoverProduct__factory } from './factories/SolaceCoverProduct__factory'; +export { Solace__factory } from './factories/Solace__factory'; +export { StakingRewards__factory } from './factories/StakingRewards__factory'; +export { XSolacev1__factory } from './factories/XSolacev1__factory'; +export { XsLocker__factory } from './factories/XsLocker__factory'; diff --git a/src/apps/solace/contracts/index.ts b/src/apps/solace/contracts/index.ts new file mode 100644 index 000000000..d2c74d7bb --- /dev/null +++ b/src/apps/solace/contracts/index.ts @@ -0,0 +1,73 @@ +import { Injectable, Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { ContractFactory } from '~contract/contracts'; +import { Network } from '~types/network.interface'; + +import { BondTellerErc20__factory } from './ethers'; +import { BondTellerEth__factory } from './ethers'; +import { BondTellerMatic__factory } from './ethers'; +import { Erc20__factory } from './ethers'; +import { Scp__factory } from './ethers'; +import { Solace__factory } from './ethers'; +import { SolaceCoverProduct__factory } from './ethers'; +import { SolaceCoverProductV2__factory } from './ethers'; +import { StakingRewards__factory } from './ethers'; +import { XSolacev1__factory } from './ethers'; +import { XsLocker__factory } from './ethers'; + +// eslint-disable-next-line +type ContractOpts = { address: string; network: Network }; + +@Injectable() +export class SolaceContractFactory extends ContractFactory { + constructor(@Inject(APP_TOOLKIT) protected readonly appToolkit: IAppToolkit) { + super((network: Network) => appToolkit.getNetworkProvider(network)); + } + + bondTellerErc20({ address, network }: ContractOpts) { + return BondTellerErc20__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + bondTellerEth({ address, network }: ContractOpts) { + return BondTellerEth__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + bondTellerMatic({ address, network }: ContractOpts) { + return BondTellerMatic__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + erc20({ address, network }: ContractOpts) { + return Erc20__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + scp({ address, network }: ContractOpts) { + return Scp__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + solace({ address, network }: ContractOpts) { + return Solace__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + solaceCoverProduct({ address, network }: ContractOpts) { + return SolaceCoverProduct__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + solaceCoverProductV2({ address, network }: ContractOpts) { + return SolaceCoverProductV2__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + stakingRewards({ address, network }: ContractOpts) { + return StakingRewards__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + xSolacev1({ address, network }: ContractOpts) { + return XSolacev1__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } + xsLocker({ address, network }: ContractOpts) { + return XsLocker__factory.connect(address, this.appToolkit.getNetworkProvider(network)); + } +} + +export type { BondTellerErc20 } from './ethers'; +export type { BondTellerEth } from './ethers'; +export type { BondTellerMatic } from './ethers'; +export type { Erc20 } from './ethers'; +export type { Scp } from './ethers'; +export type { Solace } from './ethers'; +export type { SolaceCoverProduct } from './ethers'; +export type { SolaceCoverProductV2 } from './ethers'; +export type { StakingRewards } from './ethers'; +export type { XSolacev1 } from './ethers'; +export type { XsLocker } from './ethers'; diff --git a/src/apps/solace/ethereum/helpers/getBondBalance.ts b/src/apps/solace/ethereum/helpers/getBondBalance.ts new file mode 100644 index 000000000..edeb4f4b9 --- /dev/null +++ b/src/apps/solace/ethereum/helpers/getBondBalance.ts @@ -0,0 +1,48 @@ +import { SolaceContractFactory } from '../../contracts'; +import { Network } from '~types/network.interface'; +import { SOLACE_DEFINITION } from '../../solace.definition'; +import { drillBalance } from '~app-toolkit'; +import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { ethers } from 'ethers'; +const BN = ethers.BigNumber; +import { range } from '~apps/solace/utils'; + +export default async function getBondBalance(address: string, appToolkit: IAppToolkit, solaceContractFactory: SolaceContractFactory) { + const network = Network.ETHEREUM_MAINNET; + return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.bonds.id, + network, + resolveBalances: async ({ address, contractPosition, multicall }) => { + + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'supplied')!; + const rewardToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'claimable')!; + + const teller = solaceContractFactory.bondTellerErc20({ address: contractPosition.address, network }); + + const mct = multicall.wrap(teller); + + const balance = await mct.balanceOf(address); + const indices = range(0, balance.toNumber()); + const tokenIDs = await Promise.all(indices.map((i:number) => mct.tokenOfOwnerByIndex(address, i))); + const bonds = await Promise.all(tokenIDs.map(id => mct.bonds(id))); + + let supplySum = BN.from(0); + let rewardSum = BN.from(0); + indices.forEach((i:number) => { + supplySum = supplySum.add(bonds[i].principalPaid); + rewardSum = rewardSum.add(bonds[i].payoutAmount.sub(bonds[i].payoutAlreadyClaimed)); + }); + + return [ + drillBalance(stakedToken, supplySum.toString()), + drillBalance(rewardToken, rewardSum.toString()), + ]; + }, + }); +} diff --git a/src/apps/solace/ethereum/helpers/getPolicyBalance.ts b/src/apps/solace/ethereum/helpers/getPolicyBalance.ts new file mode 100644 index 000000000..752e6889e --- /dev/null +++ b/src/apps/solace/ethereum/helpers/getPolicyBalance.ts @@ -0,0 +1,28 @@ +import { SolaceContractFactory } from '../../contracts'; +import { Network } from '~types/network.interface'; +import { SOLACE_DEFINITION } from '../../solace.definition'; +import { drillBalance } from '~app-toolkit'; +import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +export default async function getPolicyBalance(address: string, appToolkit: IAppToolkit, solaceContractFactory: SolaceContractFactory) { + const network = Network.ETHEREUM_MAINNET; + return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.policies.id, + network, + resolveBalances: async ({ address, contractPosition, multicall }) => { + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'supplied')!; + + const product = solaceContractFactory.solaceCoverProduct({ address: contractPosition.address, network }); + const bal = await product.accountBalanceOf(address); + + return [ + drillBalance(stakedToken, bal.toString()), + ]; + }, + }); +} diff --git a/src/apps/solace/ethereum/helpers/getScpBalance.ts b/src/apps/solace/ethereum/helpers/getScpBalance.ts new file mode 100644 index 000000000..89e68636f --- /dev/null +++ b/src/apps/solace/ethereum/helpers/getScpBalance.ts @@ -0,0 +1,12 @@ +import { Network } from '~types/network.interface'; +import { SOLACE_DEFINITION } from '../../solace.definition'; +import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; + +export default async function getScpBalance(address: string, appToolkit: IAppToolkit) { + return appToolkit.helpers.tokenBalanceHelper.getTokenBalances({ + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.scp.id, + network: Network.ETHEREUM_MAINNET, + }); +} diff --git a/src/apps/solace/ethereum/helpers/getXSLockerBalance.ts b/src/apps/solace/ethereum/helpers/getXSLockerBalance.ts new file mode 100644 index 000000000..74af9fd62 --- /dev/null +++ b/src/apps/solace/ethereum/helpers/getXSLockerBalance.ts @@ -0,0 +1,53 @@ +import { SolaceContractFactory } from '../../contracts'; +import { Network } from '~types/network.interface'; +import { SOLACE_DEFINITION } from '../../solace.definition'; +import { drillBalance } from '~app-toolkit'; +import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { ethers } from 'ethers'; +const BN = ethers.BigNumber; +import { range } from '~apps/solace/utils'; + +const XSLOCKER_ADDRESS = "0x501ace47c5b0c2099c4464f681c3fa2ecd3146c1"; +const STAKING_REWARDS_ADDRESS = "0x501ace3d42f9c8723b108d4fbe29989060a91411"; + +export default async function getXSLockerBalance(address: string, appToolkit: IAppToolkit, solaceContractFactory: SolaceContractFactory) { + const network = Network.ETHEREUM_MAINNET; + return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.xslocker.id, + network, + resolveBalances: async ({ address, contractPosition, multicall }) => { + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'supplied')!; + const rewardToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'claimable')!; + + const xslocker = solaceContractFactory.xsLocker({ address: XSLOCKER_ADDRESS, network }); + const stakingRewards = solaceContractFactory.stakingRewards({ address: STAKING_REWARDS_ADDRESS, network }); + + const mcxsl = multicall.wrap(xslocker); + const mcsr = multicall.wrap(stakingRewards); + + const balance = await xslocker.balanceOf(address); + const indices = range(0, balance.toNumber()); + const tokenIDs = await Promise.all(indices.map((i:number) => mcxsl.tokenOfOwnerByIndex(address, i))); + const locks = await Promise.all(tokenIDs.map(id => mcxsl.locks(id))); + const rewards = await Promise.all(tokenIDs.map(id => mcsr.pendingRewardsOfLock(id))); + + let supplySum = BN.from(0); + let rewardSum = BN.from(0); + indices.forEach((i:number) => { + supplySum = supplySum.add(locks[i].amount); + rewardSum = rewardSum.add(rewards[i]); + }); + + return [ + drillBalance(stakedToken, supplySum.toString()), + drillBalance(rewardToken, rewardSum.toString()), + ]; + }, + }); +} diff --git a/src/apps/solace/ethereum/helpers/getXSolaceV1Balance.ts b/src/apps/solace/ethereum/helpers/getXSolaceV1Balance.ts new file mode 100644 index 000000000..b48aaedec --- /dev/null +++ b/src/apps/solace/ethereum/helpers/getXSolaceV1Balance.ts @@ -0,0 +1,12 @@ +import { Network } from '~types/network.interface'; +import { SOLACE_DEFINITION } from '../../solace.definition'; +import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; + +export default async function getXSolaceV1Balance(address: string, appToolkit: IAppToolkit) { + return appToolkit.helpers.tokenBalanceHelper.getTokenBalances({ + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.xsolacev1.id, + network: Network.ETHEREUM_MAINNET, + }); +} diff --git a/src/apps/solace/ethereum/solace.balance-fetcher.ts b/src/apps/solace/ethereum/solace.balance-fetcher.ts new file mode 100644 index 000000000..0ae7eb34a --- /dev/null +++ b/src/apps/solace/ethereum/solace.balance-fetcher.ts @@ -0,0 +1,42 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation/balance-fetcher-response.present'; +import { BalanceFetcher } from '~balance/balance-fetcher.interface'; +import { Network } from '~types/network.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; +import getScpBalance from './helpers/getScpBalance'; +import getXSolaceV1Balance from './helpers/getXSolaceV1Balance'; +import getXSLockerBalance from './helpers/getXSLockerBalance'; +import getBondBalance from './helpers/getBondBalance'; +import getPolicyBalance from './helpers/getPolicyBalance'; + +const network = Network.ETHEREUM_MAINNET; + +@Register.BalanceFetcher(SOLACE_DEFINITION.id, network) +export class EthereumSolaceBalanceFetcher implements BalanceFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory + ) {} + + async getBalances(address: string) { + const [scpBal, xsolaceBal, xslockerBal, bondBal, policyBal] = await Promise.all([ + getScpBalance(address, this.appToolkit), + getXSolaceV1Balance(address, this.appToolkit), + getXSLockerBalance(address, this.appToolkit, this.solaceContractFactory), + getBondBalance(address, this.appToolkit, this.solaceContractFactory), + getPolicyBalance(address, this.appToolkit, this.solaceContractFactory), + ]); + return presentBalanceFetcherResponse([ + { label: 'SCP', assets: scpBal }, + { label: 'xSOLACEv1', assets: xsolaceBal }, + { label: 'xsLocker', assets: xslockerBal }, + { label: 'Bonds', assets: bondBal }, + { label: 'Policies', assets: policyBal }, + ]); + } +} diff --git a/src/apps/solace/ethereum/solace.bonds.contract-position-fetcher.ts b/src/apps/solace/ethereum/solace.bonds.contract-position-fetcher.ts new file mode 100644 index 000000000..c7340e9fd --- /dev/null +++ b/src/apps/solace/ethereum/solace.bonds.contract-position-fetcher.ts @@ -0,0 +1,88 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { ContractType } from '~position/contract.interface'; +import { claimable, supplied } from '~position/position.utils'; +import { Network } from '~types/network.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; + +import { findToken } from '../utils'; + +const appId = SOLACE_DEFINITION.id; +const groupId = SOLACE_DEFINITION.groups.bonds.id; +const network = Network.ETHEREUM_MAINNET; + +const SOLACE_ADDRESS = "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40"; + +const BOND_TELLERS = [ + { + "name": "Solace DAI Bond", + "address": "0x501ace677634fd09a876e88126076933b686967a", + "deposit": "0x6b175474e89094c44da98b954eedeac495271d0f" + }, + { + "name": "Solace ETH Bond", + "address": "0x501ace95141f3eb59970dd64af0405f6056fb5d8", + "deposit": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + }, + { + "name": "Solace USDC Bond", + "address": "0x501ace7e977e06a3cb55f9c28d5654c9d74d5ca9", + "deposit": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + }, + { + "name": "Solace WBTC Bond", + "address": "0x501acef0d0c73bd103337e6e9fd49d58c426dc27", + "deposit": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599" + }, + { + "name": "Solace USDT Bond", + "address": "0x501ace5ceec693df03198755ee80d4ce0b5c55fe", + "deposit": "0xdac17f958d2ee523a2206206994597c13d831ec7" + }, + { + "name": "Solace SCP Bond", + "address": "0x501ace00fd8e5db7c3be5e6d254ba4995e1b45b7", + "deposit": "0x501acee83a6f269b77c167c6701843d454e2efa0" + }, + { + "name": "Solace FRAX Bond", + "address": "0x501acef4f8397413c33b13cb39670ad2f17bfe62", + "deposit": "0x853d955acef822db058eb8505911ed77f175b99e" + } +]; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class EthereumSolaceBondsContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, + ) {} + + async getPositions() { + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const solace = baseTokens.find((t:WithMetaType) => t.address === SOLACE_ADDRESS); + const positions = await Promise.all(BOND_TELLERS.map(async teller => { + const tokens:WithMetaType[] = []; + const depositToken = await findToken(baseTokens, teller.deposit, this.solaceContractFactory, network); + if(!!depositToken) tokens.push(supplied(depositToken)); + if(!!solace) tokens.push(claimable(solace)); + return { + type: ContractType.POSITION, + appId, + groupId, + address: teller.address, + network, + tokens + }; + })); + return positions; + } +} diff --git a/src/apps/solace/ethereum/solace.policies.contract-position-fetcher.ts b/src/apps/solace/ethereum/solace.policies.contract-position-fetcher.ts new file mode 100644 index 000000000..0d73978cd --- /dev/null +++ b/src/apps/solace/ethereum/solace.policies.contract-position-fetcher.ts @@ -0,0 +1,45 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { ContractType } from '~position/contract.interface'; +import { supplied } from '~position/position.utils'; +import { Network } from '~types/network.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; + +const appId = SOLACE_DEFINITION.id; +const groupId = SOLACE_DEFINITION.groups.policies.id; +const network = Network.ETHEREUM_MAINNET; + +const DAI_ADDRESS = "0x6b175474e89094c44da98b954eedeac495271d0f"; +const SOLACE_COVER_PRODUCT_ADDRESS = "0x501acebe29eabc346779bcb5fd62eaf6bfb5320e"; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class EthereumSolacePoliciesContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, + ) {} + + async getPositions() { + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const dai = baseTokens.find((t:WithMetaType) => t.address === DAI_ADDRESS); + const tokens = ((!!dai) + ? [supplied(dai)] + : []); + return [{ + type: ContractType.POSITION, + appId, + groupId, + address: SOLACE_COVER_PRODUCT_ADDRESS, + network, + tokens + }]; + } +} diff --git a/src/apps/solace/ethereum/solace.scp.token-fetcher.ts b/src/apps/solace/ethereum/solace.scp.token-fetcher.ts new file mode 100644 index 000000000..ea9f7b012 --- /dev/null +++ b/src/apps/solace/ethereum/solace.scp.token-fetcher.ts @@ -0,0 +1,64 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { AppTokenPosition } from '~position/position.interface'; +import { ContractType } from '~position/contract.interface'; +import { Network } from '~types/network.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; + +import { bnToFloat } from '../utils'; + +const appId = SOLACE_DEFINITION.id; +const groupId = SOLACE_DEFINITION.groups.scp.id; +const network = Network.ETHEREUM_MAINNET; + +const SCP_ADDRESS = "0x501acee83a6f269b77c167c6701843d454e2efa0"; +const symbol = "SCP"; +const decimals = 18; +const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; + +@Register.TokenPositionFetcher({ appId, groupId, network }) +export class EthereumSolaceScpTokenFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, + ) {} + + async getPositions() { + const multicall = this.appToolkit.getMulticall(network); + const scp = this.solaceContractFactory.scp({ address: SCP_ADDRESS, network }); + const mcscp = multicall.wrap(scp); + const [supplyRaw, pps, ethPrice] = await Promise.all([ + mcscp.totalSupply(), + mcscp.pricePerShare(), + this.getEthPrice() + ]); + const supply = bnToFloat(decimals)(supplyRaw); + const scpPrice = ethPrice * bnToFloat(decimals)(pps); + + return [{ + type: ContractType.APP_TOKEN, + appId, + groupId, + address: SCP_ADDRESS, + network, + symbol, + decimals, + supply, + price: scpPrice + }]; + } + + async getEthPrice() { + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const eth = baseTokens.find((t:WithMetaType) => t.address === ZERO_ADDRESS); + if(!eth || !eth.price) return 0.0; + return eth.price; + } +} diff --git a/src/apps/solace/ethereum/solace.tvl-fetcher.ts b/src/apps/solace/ethereum/solace.tvl-fetcher.ts new file mode 100644 index 000000000..f945f493c --- /dev/null +++ b/src/apps/solace/ethereum/solace.tvl-fetcher.ts @@ -0,0 +1,103 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { TvlFetcher } from '~stats/tvl/tvl-fetcher.interface'; +import { Network } from '~types/network.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; + +import { bnToFloat, findToken, range } from '~apps/solace/utils'; + +const appId = SOLACE_DEFINITION.id; +const network = Network.ETHEREUM_MAINNET; + +// TODO: there is more to TVL than amount in the UWP +// since its the bulk we call it sufficient for now +const UWP_ADDRESS = "0x5efC0d9ee3223229Ce3b53e441016efC5BA83435"; +const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; +const TOKENS = [ + { + "symbol": "SOLACE", + "address": "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40", + "decimals": 18 + }, + { + "symbol": "FRAX", + "address": "0x853d955acef822db058eb8505911ed77f175b99e", + "decimals": 18 + }, + { + "symbol": "USDC", + "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", + "decimals": 6 + }, + { + "symbol": "USDT", + "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", + "decimals": 6 + }, + { + "symbol": "DAI", + "address": "0x6b175474e89094c44da98b954eedeac495271d0f", + "decimals": 18 + }, + { + "symbol": "WETH", + "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", + "decimals": 18 + }, + { + "symbol": "WBTC", + "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", + "decimals": 8 + }, + { + "symbol": "ETH", + "address": "0x0000000000000000000000000000000000000000", + "decimals": 18 + }, + { + "symbol": "SCP", + "address": "0x501acee83a6f269b77c167c6701843d454e2efa0", + "decimals": 18 + }, + { + "symbol": "SLP", + "address": "0x9c051f8a6648a51ef324d30c235da74d060153ac", + "decimals": 18 + }, +]; + +@Register.TvlFetcher({ appId, network }) +export class EthereumSolaceTvlFetcher implements TvlFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory + ) {} + + async getTvl() { + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const multicall = this.appToolkit.getMulticall(network); + const indices = range(0, TOKENS.length); + let provider: any = undefined; + const balances = await Promise.all(TOKENS.map(token => { + if(token.address === ZERO_ADDRESS) { + return provider.getBalance(UWP_ADDRESS).then(bnToFloat(token.decimals)); + } else { + const tokenContract = this.solaceContractFactory.erc20({ address: token.address, network }); + if(!provider) provider = tokenContract.provider; + const mct = multicall.wrap(tokenContract); + return mct.balanceOf(UWP_ADDRESS).then(bnToFloat(token.decimals)); + } + })); + let usd = 0; + await Promise.all(indices.map(async (i:number) => { + const zapperToken = await findToken(baseTokens, TOKENS[i].address, this.solaceContractFactory, network); + if(!zapperToken) return; + usd += balances[i] * zapperToken.price; + })); + return usd; + } +} diff --git a/src/apps/solace/ethereum/solace.xslocker.contract-position-fetcher.ts b/src/apps/solace/ethereum/solace.xslocker.contract-position-fetcher.ts new file mode 100644 index 000000000..3ea9db4b9 --- /dev/null +++ b/src/apps/solace/ethereum/solace.xslocker.contract-position-fetcher.ts @@ -0,0 +1,45 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { ContractType } from '~position/contract.interface'; +import { claimable, supplied } from '~position/position.utils'; +import { Network } from '~types/network.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; + +const appId = SOLACE_DEFINITION.id; +const groupId = SOLACE_DEFINITION.groups.xslocker.id; +const network = Network.ETHEREUM_MAINNET; + +const SOLACE_ADDRESS = "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40"; +const XSLOCKER_ADDRESS = "0x501ace47c5b0c2099c4464f681c3fa2ecd3146c1"; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class EthereumSolaceXslockerContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, + ) {} + + async getPositions() { + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const solace = baseTokens.find((t:WithMetaType) => t.address === SOLACE_ADDRESS); + const tokens = ((!!solace) + ? [supplied(solace), claimable(solace)] + : []); + return [{ + type: ContractType.POSITION, + appId, + groupId, + address: XSLOCKER_ADDRESS, + network, + tokens + }]; + } +} diff --git a/src/apps/solace/ethereum/solace.xsolacev1.token-fetcher.ts b/src/apps/solace/ethereum/solace.xsolacev1.token-fetcher.ts new file mode 100644 index 000000000..e8b6a7a92 --- /dev/null +++ b/src/apps/solace/ethereum/solace.xsolacev1.token-fetcher.ts @@ -0,0 +1,67 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { AppTokenPosition } from '~position/position.interface'; +import { ContractType } from '~position/contract.interface'; +import { Network } from '~types/network.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; + +import { bnToFloat } from '../utils'; + +const appId = SOLACE_DEFINITION.id; +const groupId = SOLACE_DEFINITION.groups.xsolacev1.id; +const network = Network.ETHEREUM_MAINNET; + +const SOLACE_ADDRESS = "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40"; +const XSOLACE_V1_ADDRESS = "0x501ace5ac3af20f49d53242b6d208f3b91cfc411"; +const symbol = "xSOLACEv1"; +const decimals = 18; +const ONE_ETHER = "1000000000000000000"; + +@Register.TokenPositionFetcher({ appId, groupId, network }) +export class EthereumSolaceXsolacev1TokenFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, + ) {} + + async getPositions() { + return new Promise(async (resolve) => { + const multicall = this.appToolkit.getMulticall(network); + const xsolacev1 = this.solaceContractFactory.xSolacev1({ address: XSOLACE_V1_ADDRESS, network }); + const mcxs = multicall.wrap(xsolacev1); + const [supplyRaw, pps, solacePrice] = await Promise.all([ + mcxs.totalSupply(), + mcxs.xSolaceToSolace(ONE_ETHER), + this.getSolacePrice() + ]); + const supply = bnToFloat(decimals)(supplyRaw); + const xsolacePrice = solacePrice * bnToFloat(decimals)(pps); + + resolve([{ + type: ContractType.APP_TOKEN, + appId, + groupId, + address: XSOLACE_V1_ADDRESS, + network, + symbol, + decimals, + supply, + price: xsolacePrice + }]); + }); + } + + async getSolacePrice() { + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const solace = baseTokens.find((t:WithMetaType) => t.address === SOLACE_ADDRESS); + if(!solace || !solace.price) return 0.0; + return solace.price; + } +} diff --git a/src/apps/solace/polygon/helpers/getBondBalance.ts b/src/apps/solace/polygon/helpers/getBondBalance.ts new file mode 100644 index 000000000..8b327c391 --- /dev/null +++ b/src/apps/solace/polygon/helpers/getBondBalance.ts @@ -0,0 +1,48 @@ +import { SolaceContractFactory } from '../../contracts'; +import { Network } from '~types/network.interface'; +import { SOLACE_DEFINITION } from '../../solace.definition'; +import { drillBalance } from '~app-toolkit'; +import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { ethers } from 'ethers'; +const BN = ethers.BigNumber; +import { range } from '~apps/solace/utils'; + +export default async function getBondBalance(address: string, appToolkit: IAppToolkit, solaceContractFactory: SolaceContractFactory) { + const network = Network.POLYGON_MAINNET; + return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.bonds.id, + network, + resolveBalances: async ({ address, contractPosition, multicall }) => { + + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'supplied')!; + const rewardToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'claimable')!; + + const teller = solaceContractFactory.bondTellerErc20({ address: contractPosition.address, network }); + + const mct = multicall.wrap(teller); + + const balance = await mct.balanceOf(address); + const indices = range(0, balance.toNumber()); + const tokenIDs = await Promise.all(indices.map((i:number) => mct.tokenOfOwnerByIndex(address, i))); + const bonds = await Promise.all(tokenIDs.map(id => mct.bonds(id))); + + let supplySum = BN.from(0); + let rewardSum = BN.from(0); + indices.forEach((i:number) => { + supplySum = supplySum.add(bonds[i].principalPaid); + rewardSum = rewardSum.add(bonds[i].payoutAmount.sub(bonds[i].payoutAlreadyClaimed)); + }); + + return [ + drillBalance(stakedToken, supplySum.toString()), + drillBalance(rewardToken, rewardSum.toString()), + ]; + }, + }); +} diff --git a/src/apps/solace/polygon/helpers/getPolicyBalance.ts b/src/apps/solace/polygon/helpers/getPolicyBalance.ts new file mode 100644 index 000000000..ccb1e641c --- /dev/null +++ b/src/apps/solace/polygon/helpers/getPolicyBalance.ts @@ -0,0 +1,28 @@ +import { SolaceContractFactory } from '../../contracts'; +import { Network } from '~types/network.interface'; +import { SOLACE_DEFINITION } from '../../solace.definition'; +import { drillBalance } from '~app-toolkit'; +import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +export default async function getPolicyBalance(address: string, appToolkit: IAppToolkit, solaceContractFactory: SolaceContractFactory) { + const network = Network.POLYGON_MAINNET; + return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.policies.id, + network, + resolveBalances: async ({ address, contractPosition, multicall }) => { + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'supplied')!; + + const product = solaceContractFactory.solaceCoverProduct({ address: contractPosition.address, network }); + const bal = await product.accountBalanceOf(address); + + return [ + drillBalance(stakedToken, bal.toString()), + ]; + }, + }); +} diff --git a/src/apps/solace/polygon/helpers/getXSLockerBalance.ts b/src/apps/solace/polygon/helpers/getXSLockerBalance.ts new file mode 100644 index 000000000..a38103064 --- /dev/null +++ b/src/apps/solace/polygon/helpers/getXSLockerBalance.ts @@ -0,0 +1,53 @@ +import { SolaceContractFactory } from '../../contracts'; +import { Network } from '~types/network.interface'; +import { SOLACE_DEFINITION } from '../../solace.definition'; +import { drillBalance } from '~app-toolkit'; +import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { ethers } from 'ethers'; +const BN = ethers.BigNumber; +import { range } from '~apps/solace/utils'; + +const XSLOCKER_ADDRESS = "0x501ace47c5b0c2099c4464f681c3fa2ecd3146c1"; +const STAKING_REWARDS_ADDRESS = "0x501ace3d42f9c8723b108d4fbe29989060a91411"; + +export default async function getXSLockerBalance(address: string, appToolkit: IAppToolkit, solaceContractFactory: SolaceContractFactory) { + const network = Network.POLYGON_MAINNET; + return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.xslocker.id, + network, + resolveBalances: async ({ address, contractPosition, multicall }) => { + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'supplied')!; + const rewardToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'claimable')!; + + const xslocker = solaceContractFactory.xsLocker({ address: XSLOCKER_ADDRESS, network }); + const stakingRewards = solaceContractFactory.stakingRewards({ address: STAKING_REWARDS_ADDRESS, network }); + + const mcxsl = multicall.wrap(xslocker); + const mcsr = multicall.wrap(stakingRewards); + + const balance = await xslocker.balanceOf(address); + const indices = range(0, balance.toNumber()); + const tokenIDs = await Promise.all(indices.map((i:number) => mcxsl.tokenOfOwnerByIndex(address, i))); + const locks = await Promise.all(tokenIDs.map(id => mcxsl.locks(id))); + const rewards = await Promise.all(tokenIDs.map(id => mcsr.pendingRewardsOfLock(id))); + + let supplySum = BN.from(0); + let rewardSum = BN.from(0); + indices.forEach((i:number) => { + supplySum = supplySum.add(locks[i].amount); + rewardSum = rewardSum.add(rewards[i]); + }); + + return [ + drillBalance(stakedToken, supplySum.toString()), + drillBalance(rewardToken, rewardSum.toString()), + ]; + }, + }); +} diff --git a/src/apps/solace/polygon/solace.balance-fetcher.ts b/src/apps/solace/polygon/solace.balance-fetcher.ts new file mode 100644 index 000000000..743b70a75 --- /dev/null +++ b/src/apps/solace/polygon/solace.balance-fetcher.ts @@ -0,0 +1,36 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { presentBalanceFetcherResponse } from '~app-toolkit/helpers/presentation/balance-fetcher-response.present'; +import { BalanceFetcher } from '~balance/balance-fetcher.interface'; +import { Network } from '~types/network.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; +import getXSLockerBalance from './helpers/getXSLockerBalance'; +import getBondBalance from './helpers/getBondBalance'; +import getPolicyBalance from './helpers/getPolicyBalance'; + +const network = Network.POLYGON_MAINNET; + +@Register.BalanceFetcher(SOLACE_DEFINITION.id, network) +export class PolygonSolaceBalanceFetcher implements BalanceFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory + ) {} + + async getBalances(address: string) { + const [xslockerBal, bondBal, policyBal] = await Promise.all([ + getXSLockerBalance(address, this.appToolkit, this.solaceContractFactory), + getBondBalance(address, this.appToolkit, this.solaceContractFactory), + getPolicyBalance(address, this.appToolkit, this.solaceContractFactory), + ]); + return presentBalanceFetcherResponse([ + { label: 'xsLocker', assets: xslockerBal }, + { label: 'Bonds', assets: bondBal }, + { label: 'Policies', assets: policyBal }, + ]); + } +} diff --git a/src/apps/solace/polygon/solace.bonds.contract-position-fetcher.ts b/src/apps/solace/polygon/solace.bonds.contract-position-fetcher.ts new file mode 100644 index 000000000..355d7cdf7 --- /dev/null +++ b/src/apps/solace/polygon/solace.bonds.contract-position-fetcher.ts @@ -0,0 +1,88 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { ContractType } from '~position/contract.interface'; +import { claimable, supplied } from '~position/position.utils'; +import { Network } from '~types/network.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; + +import { findToken } from '../utils'; + +const appId = SOLACE_DEFINITION.id; +const groupId = SOLACE_DEFINITION.groups.bonds.id; +const network = Network.POLYGON_MAINNET; + +const SOLACE_ADDRESS = "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40"; + +const BOND_TELLERS = [ + { + "name": "Solace DAI Bond", + "address": "0x501ace677634fd09a876e88126076933b686967a", + "deposit": "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063" + }, + { + "name": "Solace ETH Bond", + "address": "0x501ace367f1865dea154236d5a8016b80a49e8a9", + "deposit": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619" + }, + { + "name": "Solace USDC Bond", + "address": "0x501ace7e977e06a3cb55f9c28d5654c9d74d5ca9", + "deposit": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174" + }, + { + "name": "Solace WBTC Bond", + "address": "0x501acef0d0c73bd103337e6e9fd49d58c426dc27", + "deposit": "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6" + }, + { + "name": "Solace USDT Bond", + "address": "0x501ace5ceec693df03198755ee80d4ce0b5c55fe", + "deposit": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f" + }, + { + "name": "Solace FRAX Bond", + "address": "0x501acef4f8397413c33b13cb39670ad2f17bfe62", + "deposit": "0x45c32fa6df82ead1e2ef74d17b76547eddfaff89" + }, + { + "name": "Solace MATIC Bond", + "address": "0x501ace133452d4df83ca68c684454fcba608b9dd", + "deposit": "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270" + } +]; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class PolygonSolaceBondsContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, + ) {} + + async getPositions() { + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const solace = baseTokens.find((t:WithMetaType) => t.address === SOLACE_ADDRESS); + const positions = await Promise.all(BOND_TELLERS.map(async teller => { + const tokens:WithMetaType[] = []; + const depositToken = await findToken(baseTokens, teller.deposit, this.solaceContractFactory, network); + if(!!depositToken) tokens.push(supplied(depositToken)); + if(!!solace) tokens.push(claimable(solace)); + return { + type: ContractType.POSITION, + appId, + groupId, + address: teller.address, + network, + tokens + }; + })); + return positions; + } +} diff --git a/src/apps/solace/polygon/solace.policies.contract-position-fetcher.ts b/src/apps/solace/polygon/solace.policies.contract-position-fetcher.ts new file mode 100644 index 000000000..38145842f --- /dev/null +++ b/src/apps/solace/polygon/solace.policies.contract-position-fetcher.ts @@ -0,0 +1,45 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { ContractType } from '~position/contract.interface'; +import { supplied } from '~position/position.utils'; +import { Network } from '~types/network.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; + +const appId = SOLACE_DEFINITION.id; +const groupId = SOLACE_DEFINITION.groups.policies.id; +const network = Network.POLYGON_MAINNET; + +const FRAX_ADDRESS = "0x45c32fa6df82ead1e2ef74d17b76547eddfaff89"; +const SOLACE_COVER_PRODUCT_ADDRESS = "0x501acec83d440c00644ca5c48d059e1840852a64"; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class PolygonSolacePoliciesContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, + ) {} + + async getPositions() { + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const frax = baseTokens.find((t:WithMetaType) => t.address === FRAX_ADDRESS); + const tokens = ((!!frax) + ? [supplied(frax)] + : []); + return [{ + type: ContractType.POSITION, + appId, + groupId, + address: SOLACE_COVER_PRODUCT_ADDRESS, + network, + tokens + }]; + } +} diff --git a/src/apps/solace/polygon/solace.scp.token-fetcher.ts b/src/apps/solace/polygon/solace.scp.token-fetcher.ts new file mode 100644 index 000000000..f160b85af --- /dev/null +++ b/src/apps/solace/polygon/solace.scp.token-fetcher.ts @@ -0,0 +1,27 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { AppTokenPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; + +const appId = SOLACE_DEFINITION.id; +const groupId = SOLACE_DEFINITION.groups.scp.id; +const network = Network.POLYGON_MAINNET; + +@Register.TokenPositionFetcher({ appId, groupId, network }) +export class PolygonSolaceScpTokenFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, + ) {} + + async getPositions() { + // not deployed on polygon + return []; + } +} diff --git a/src/apps/solace/polygon/solace.tvl-fetcher.ts b/src/apps/solace/polygon/solace.tvl-fetcher.ts new file mode 100644 index 000000000..4e9c8068d --- /dev/null +++ b/src/apps/solace/polygon/solace.tvl-fetcher.ts @@ -0,0 +1,99 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { TvlFetcher } from '~stats/tvl/tvl-fetcher.interface'; +import { Network } from '~types/network.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; + +import { bnToFloat, findToken, range } from '~apps/solace/utils'; + +const appId = SOLACE_DEFINITION.id; +const network = Network.POLYGON_MAINNET; + +// TODO: there is more to TVL than amount in the UWP +// since its the bulk we call it sufficient for now +const UWP_ADDRESS = "0xd1108a800363c262774b990e9df75a4287d5c075"; +const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; +const TOKENS = [ + { + "symbol": "SOLACE", + "address": "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40", + "decimals": 18 + }, + { + "symbol": "FRAX", + "address": "0x45c32fa6df82ead1e2ef74d17b76547eddfaff89", + "decimals": 18 + }, + { + "symbol": "USDC", + "address": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", + "decimals": 6 + }, + { + "symbol": "USDT", + "address": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", + "decimals": 6 + }, + { + "symbol": "DAI", + "address": "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", + "decimals": 18 + }, + { + "symbol": "WETH", + "address": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", + "decimals": 18 + }, + { + "symbol": "WBTC", + "address": "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", + "decimals": 8 + }, + { + "symbol": "MATIC", + "address": "0x0000000000000000000000000000000000000000", + "decimals": 18 + }, + { + "symbol": "WMATIC", + "address": "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", + "decimals": 18 + } + // TODO: LP +]; + +@Register.TvlFetcher({ appId, network }) +export class PolygonSolaceTvlFetcher implements TvlFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory + ) {} + + async getTvl() { + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const multicall = this.appToolkit.getMulticall(network); + const indices = range(0, TOKENS.length); + let provider: any = undefined; + const balances = await Promise.all(TOKENS.map(token => { + if(token.address === ZERO_ADDRESS) { + return provider.getBalance(UWP_ADDRESS).then(bnToFloat(token.decimals)); + } else { + const tokenContract = this.solaceContractFactory.erc20({ address: token.address, network }); + if(!provider) provider = tokenContract.provider; + const mct = multicall.wrap(tokenContract); + return mct.balanceOf(UWP_ADDRESS).then(bnToFloat(token.decimals)); + } + })); + let usd = 0; + await Promise.all(indices.map(async (i:number) => { + const zapperToken = await findToken(baseTokens, TOKENS[i].address, this.solaceContractFactory, network); + if(!zapperToken) return; + usd += balances[i] * zapperToken.price; + })); + return usd; + } +} diff --git a/src/apps/solace/polygon/solace.xslocker.contract-position-fetcher.ts b/src/apps/solace/polygon/solace.xslocker.contract-position-fetcher.ts new file mode 100644 index 000000000..007819a7f --- /dev/null +++ b/src/apps/solace/polygon/solace.xslocker.contract-position-fetcher.ts @@ -0,0 +1,45 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { ContractPosition } from '~position/position.interface'; +import { ContractType } from '~position/contract.interface'; +import { claimable, supplied } from '~position/position.utils'; +import { Network } from '~types/network.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; + +const appId = SOLACE_DEFINITION.id; +const groupId = SOLACE_DEFINITION.groups.xslocker.id; +const network = Network.POLYGON_MAINNET; + +const SOLACE_ADDRESS = "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40"; +const XSLOCKER_ADDRESS = "0x501ace47c5b0c2099c4464f681c3fa2ecd3146c1"; + +@Register.ContractPositionFetcher({ appId, groupId, network }) +export class PolygonSolaceXslockerContractPositionFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, + ) {} + + async getPositions() { + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const solace = baseTokens.find((t:WithMetaType) => t.address === SOLACE_ADDRESS); + const tokens = ((!!solace) + ? [supplied(solace), claimable(solace)] + : []); + return [{ + type: ContractType.POSITION, + appId, + groupId, + address: XSLOCKER_ADDRESS, + network, + tokens + }]; + } +} diff --git a/src/apps/solace/polygon/solace.xsolacev1.token-fetcher.ts b/src/apps/solace/polygon/solace.xsolacev1.token-fetcher.ts new file mode 100644 index 000000000..4d6dbe913 --- /dev/null +++ b/src/apps/solace/polygon/solace.xsolacev1.token-fetcher.ts @@ -0,0 +1,27 @@ +import { Inject } from '@nestjs/common'; + +import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; +import { Register } from '~app-toolkit/decorators'; +import { PositionFetcher } from '~position/position-fetcher.interface'; +import { AppTokenPosition } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { SolaceContractFactory } from '../contracts'; +import { SOLACE_DEFINITION } from '../solace.definition'; + +const appId = SOLACE_DEFINITION.id; +const groupId = SOLACE_DEFINITION.groups.xsolacev1.id; +const network = Network.POLYGON_MAINNET; + +@Register.TokenPositionFetcher({ appId, groupId, network }) +export class PolygonSolaceXsolacev1TokenFetcher implements PositionFetcher { + constructor( + @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, + ) {} + + async getPositions() { + // not deployed on polygon + return []; + } +} diff --git a/src/apps/solace/solace.definition.ts b/src/apps/solace/solace.definition.ts new file mode 100644 index 000000000..9340ea8f1 --- /dev/null +++ b/src/apps/solace/solace.definition.ts @@ -0,0 +1,43 @@ +import { Register } from '~app-toolkit/decorators'; +import { appDefinition, AppDefinition } from '~app/app.definition'; +import { AppAction, AppTag, GroupType } from '~app/app.interface'; +import { Network } from '~types/network.interface'; + +export const SOLACE_DEFINITION = appDefinition({ + id: 'solace', + name: 'solace', + description: + 'Solace is an insurance protocol that is aiming to invent the future of DeFi Insurance. The protocol helps you to protect your funds against smart-contracts exploits across 180+ protocols with an intelligent single policy that automatically adjusts coverage to changes in your positions.', + url: 'https://solace.fi', + groups: { + scp: { id: 'scp', type: GroupType.TOKEN, label: 'SCP'}, + xsolacev1: { id: 'xsolacev1', type: GroupType.TOKEN, label: 'xSOLACEv1'}, + bonds: { id: 'bonds', type: GroupType.POSITION, label: 'Bonds'}, + xslocker: { id: 'xslocker', type: GroupType.POSITION, label: 'xsLocker'}, + policies: { id: 'policies', type: GroupType.POSITION, label: 'Policies'}, + }, + tags: [AppTag.INSURANCE], + keywords: [], + links: { + learn: '', + github: 'https://github.com/solace-fi', + twitter: 'https://twitter.com/SolaceFi/', + telegram: '', + discord: 'https://discord.com/invite/7v8qsyepfu/', + medium: 'https://medium.com/solace-fi/', + }, + supportedNetworks: { + [Network.ETHEREUM_MAINNET]: [AppAction.VIEW], + [Network.POLYGON_MAINNET]: [AppAction.VIEW], + }, + primaryColor: '#fff', +}); + +@Register.AppDefinition(SOLACE_DEFINITION.id) +export class SolaceAppDefinition extends AppDefinition { + constructor() { + super(SOLACE_DEFINITION); + } +} + +export default SOLACE_DEFINITION; diff --git a/src/apps/solace/solace.module.ts b/src/apps/solace/solace.module.ts new file mode 100644 index 000000000..386ae0132 --- /dev/null +++ b/src/apps/solace/solace.module.ts @@ -0,0 +1,42 @@ +import { Register } from '~app-toolkit/decorators'; +import { AbstractApp } from '~app/app.dynamic-module'; + +import { SolaceContractFactory } from './contracts'; +import { EthereumSolaceBalanceFetcher } from './ethereum/solace.balance-fetcher'; +import { EthereumSolaceBondsContractPositionFetcher } from './ethereum/solace.bonds.contract-position-fetcher'; +import { EthereumSolacePoliciesContractPositionFetcher } from './ethereum/solace.policies.contract-position-fetcher'; +import { EthereumSolaceScpTokenFetcher } from './ethereum/solace.scp.token-fetcher'; +import { EthereumSolaceTvlFetcher } from './ethereum/solace.tvl-fetcher'; +import { EthereumSolaceXslockerContractPositionFetcher } from './ethereum/solace.xslocker.contract-position-fetcher'; +import { EthereumSolaceXsolacev1TokenFetcher } from './ethereum/solace.xsolacev1.token-fetcher'; +import { PolygonSolaceBalanceFetcher } from './polygon/solace.balance-fetcher'; +import { PolygonSolaceBondsContractPositionFetcher } from './polygon/solace.bonds.contract-position-fetcher'; +import { PolygonSolacePoliciesContractPositionFetcher } from './polygon/solace.policies.contract-position-fetcher'; +import { PolygonSolaceScpTokenFetcher } from './polygon/solace.scp.token-fetcher'; +import { PolygonSolaceTvlFetcher } from './polygon/solace.tvl-fetcher'; +import { PolygonSolaceXslockerContractPositionFetcher } from './polygon/solace.xslocker.contract-position-fetcher'; +import { PolygonSolaceXsolacev1TokenFetcher } from './polygon/solace.xsolacev1.token-fetcher'; +import { SolaceAppDefinition } from './solace.definition'; + +@Register.AppModule({ + appId: 'solace', + providers: [ + EthereumSolaceBalanceFetcher, + EthereumSolaceBondsContractPositionFetcher, + EthereumSolacePoliciesContractPositionFetcher, + EthereumSolaceScpTokenFetcher, + EthereumSolaceTvlFetcher, + EthereumSolaceXslockerContractPositionFetcher, + EthereumSolaceXsolacev1TokenFetcher, + PolygonSolaceBalanceFetcher, + PolygonSolaceBondsContractPositionFetcher, + PolygonSolacePoliciesContractPositionFetcher, + PolygonSolaceScpTokenFetcher, + PolygonSolaceTvlFetcher, + PolygonSolaceXslockerContractPositionFetcher, + PolygonSolaceXsolacev1TokenFetcher, + SolaceAppDefinition, + SolaceContractFactory, + ], +}) +export class SolaceAppModule extends AbstractApp() {} diff --git a/src/apps/solace/utils.ts b/src/apps/solace/utils.ts new file mode 100644 index 000000000..3b02ec5a4 --- /dev/null +++ b/src/apps/solace/utils.ts @@ -0,0 +1,85 @@ +import { Network } from '~types/network.interface'; +import { Token } from '~position/position.interface'; +import { WithMetaType } from '~position/display.interface'; + +import { SolaceContractFactory } from './contracts'; + +import { BigNumberish, ethers } from 'ethers'; +const formatUnits = ethers.utils.formatUnits; + +const SOLACE_ADDRESS = "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40"; +const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; +// note: these are only on ethereum +const SCP_ADDRESS = "0x501acee83a6f269b77c167c6701843d454e2efa0"; +const SLP_ADDRESS = "0x9c051f8a6648a51ef324d30c235da74d060153ac"; +const USDC_ADDRESS = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; + +// similar to python's built in range() +// returns an array of numbers starting at start and stopping before stop +export function range(start: number, stop: number) { + const arr: number[] = []; + for(let i = start; i < stop; i++) arr.push(i); + return arr; +} + +// given a BigNumber and an amount of decimals +// returns the number as a float +// note: uses currying +export function bnToFloat(decimals: number = 0) { + function f(num: BigNumberish) { + return parseFloat(formatUnits(num, decimals)); + } + return f; +} + +// given a list of tokens, finds the desired token +// also useful for finding app specific tokens not in the base list +export async function findToken(baseTokens:WithMetaType[], tokenAddress:string, solaceContractFactory:SolaceContractFactory, network:Network) : Promise{ + // default case: token is in the list + const token = baseTokens.find((t:WithMetaType) => t.address === tokenAddress); + if(!!token) return token; + // app specific token 1: SCP + if(tokenAddress === SCP_ADDRESS) { + const scp = solaceContractFactory.scp({ address: SCP_ADDRESS, network }); + const pps = await scp.pricePerShare(); + const eth = baseTokens.find((t:WithMetaType) => t.address === ZERO_ADDRESS); + const ethPrice = eth?.price ?? 0.0; + const scpPrice = ethPrice * bnToFloat(18)(pps); + return { + "metaType": "supplied", + "type": "app-token", + "network": "ethereum", + "address": SCP_ADDRESS, + "decimals": 18, + "symbol": "SCP", + "price": scpPrice + } as any as Token; + } + // app specific token 2: SLP + else if(tokenAddress === SLP_ADDRESS) { + const solace = baseTokens.find((t:WithMetaType) => t.address === SOLACE_ADDRESS); + const usdc = baseTokens.find((t:WithMetaType) => t.address === USDC_ADDRESS); + const solacePrice = solace?.price ?? 0.0; + const usdcPrice = usdc?.price ?? 0.0; + const solaceContract = solaceContractFactory.erc20({ address: SOLACE_ADDRESS, network }); + const usdcContract = solaceContractFactory.erc20({ address: USDC_ADDRESS, network }); + const slpContract = solaceContractFactory.erc20({ address: SLP_ADDRESS, network }); + const [s, u, ts] = await Promise.all([ + solaceContract.balanceOf(SLP_ADDRESS).then(bnToFloat(18)), + usdcContract.balanceOf(SLP_ADDRESS).then(bnToFloat(6)), + slpContract.totalSupply().then(bnToFloat(18)), + ]) + const slpPrice = (s*solacePrice + u*usdcPrice) / ts; + return { + "metaType": "supplied", + "type": "app-token", + "network": "ethereum", + "address": SLP_ADDRESS, + "decimals": 18, + "symbol": "SLP", + "price": slpPrice + } + } + // fall through case: unknown + return undefined; +} From c31e3cf0d109e930cacc66a8290aaa172e4cbfb3 Mon Sep 17 00:00:00 2001 From: immasandwich Date: Fri, 20 May 2022 09:34:16 -0400 Subject: [PATCH 07/15] fix(solace): Adjust Solace implementation (#472) --- .github/PULL_REQUEST_TEMPLATE.md | 1 + src/apps/solace/assets/logo.png | Bin 0 -> 42134 bytes src/apps/solace/assets/logo.svg | 30 ----- .../solace/ethereum/helpers/getBondBalance.ts | 79 ++++++------ .../ethereum/helpers/getPolicyBalance.ts | 42 +++---- .../solace/ethereum/helpers/getScpBalance.ts | 3 +- .../ethereum/helpers/getXSLockerBalance.ts | 90 +++++++------- .../ethereum/helpers/getXSolaceV1Balance.ts | 3 +- .../solace/ethereum/solace.balance-fetcher.ts | 9 +- .../solace.bonds.contract-position-fetcher.ts | 111 +++++++++-------- ...lace.policies.contract-position-fetcher.ts | 30 +++-- .../ethereum/solace.scp.token-fetcher.ts | 52 ++++---- .../solace/ethereum/solace.tvl-fetcher.ts | 113 ++++++++++-------- ...lace.xslocker.contract-position-fetcher.ts | 31 +++-- .../solace.xsolacev1.token-fetcher.ts | 77 ++++++------ .../solace/polygon/helpers/getBondBalance.ts | 81 ++++++------- .../polygon/helpers/getPolicyBalance.ts | 42 +++---- .../polygon/helpers/getXSLockerBalance.ts | 90 +++++++------- .../solace/polygon/solace.balance-fetcher.ts | 6 +- .../solace.bonds.contract-position-fetcher.ts | 97 ++++++++------- ...lace.policies.contract-position-fetcher.ts | 30 +++-- .../polygon/solace.scp.token-fetcher.ts | 27 ----- src/apps/solace/polygon/solace.tvl-fetcher.ts | 103 ++++++++-------- ...lace.xslocker.contract-position-fetcher.ts | 37 +++--- .../polygon/solace.xsolacev1.token-fetcher.ts | 27 ----- src/apps/solace/solace.definition.ts | 39 +++++- src/apps/solace/solace.module.ts | 10 +- src/apps/solace/utils.ts | 85 ------------- 28 files changed, 637 insertions(+), 708 deletions(-) create mode 100644 src/apps/solace/assets/logo.png delete mode 100644 src/apps/solace/assets/logo.svg delete mode 100644 src/apps/solace/polygon/solace.scp.token-fetcher.ts delete mode 100644 src/apps/solace/polygon/solace.xsolacev1.token-fetcher.ts delete mode 100644 src/apps/solace/utils.ts diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index e6014424b..5ac28e09f 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -6,6 +6,7 @@ - [ ] I have followed the [Contributing Guidelines](../CONTRIBUTING.md) - [ ] (optional) As a contributor, my Ethereum address/ENS is: +- [ ] (optional) As a contributor, my Twitter handle is: ## How to test? diff --git a/src/apps/solace/assets/logo.png b/src/apps/solace/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a2aa20c7203bbc1dfbcd0adb111aae580f8cf1f2 GIT binary patch literal 42134 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 dUq*x%23 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/src/apps/solace/ethereum/helpers/getBondBalance.ts b/src/apps/solace/ethereum/helpers/getBondBalance.ts index edeb4f4b9..f0086ace2 100644 --- a/src/apps/solace/ethereum/helpers/getBondBalance.ts +++ b/src/apps/solace/ethereum/helpers/getBondBalance.ts @@ -1,48 +1,47 @@ -import { SolaceContractFactory } from '../../contracts'; -import { Network } from '~types/network.interface'; -import { SOLACE_DEFINITION } from '../../solace.definition'; +import { ethers } from 'ethers'; +import { range } from 'lodash'; + import { drillBalance } from '~app-toolkit'; import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; +import { MetaType } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { SolaceContractFactory } from '../../contracts'; +import { SOLACE_DEFINITION } from '../../solace.definition'; -import { ethers } from 'ethers'; const BN = ethers.BigNumber; -import { range } from '~apps/solace/utils'; -export default async function getBondBalance(address: string, appToolkit: IAppToolkit, solaceContractFactory: SolaceContractFactory) { +export default async function getBondBalance( + address: string, + appToolkit: IAppToolkit, + solaceContractFactory: SolaceContractFactory, +) { const network = Network.ETHEREUM_MAINNET; return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ - address, - appId: SOLACE_DEFINITION.id, - groupId: SOLACE_DEFINITION.groups.bonds.id, - network, - resolveBalances: async ({ address, contractPosition, multicall }) => { - - // Resolve the staked token and reward token from the contract position object - const stakedToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'supplied')!; - const rewardToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'claimable')!; - - const teller = solaceContractFactory.bondTellerErc20({ address: contractPosition.address, network }); - - const mct = multicall.wrap(teller); - - const balance = await mct.balanceOf(address); - const indices = range(0, balance.toNumber()); - const tokenIDs = await Promise.all(indices.map((i:number) => mct.tokenOfOwnerByIndex(address, i))); - const bonds = await Promise.all(tokenIDs.map(id => mct.bonds(id))); - - let supplySum = BN.from(0); - let rewardSum = BN.from(0); - indices.forEach((i:number) => { - supplySum = supplySum.add(bonds[i].principalPaid); - rewardSum = rewardSum.add(bonds[i].payoutAmount.sub(bonds[i].payoutAlreadyClaimed)); - }); - - return [ - drillBalance(stakedToken, supplySum.toString()), - drillBalance(rewardToken, rewardSum.toString()), - ]; - }, - }); + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.bonds.id, + network, + resolveBalances: async ({ address, contractPosition, multicall }) => { + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find(t => t.metaType === MetaType.SUPPLIED)!; + const rewardToken = contractPosition.tokens.find(t => t.metaType === MetaType.CLAIMABLE)!; + const teller = solaceContractFactory.bondTellerErc20({ address: contractPosition.address, network }); + + const mct = multicall.wrap(teller); + const balance = await mct.balanceOf(address); + const indices = range(0, balance.toNumber()); + const tokenIDs = await Promise.all(indices.map((i: number) => mct.tokenOfOwnerByIndex(address, i))); + const bonds = await Promise.all(tokenIDs.map(id => mct.bonds(id))); + + let supplySum = BN.from(0); + let rewardSum = BN.from(0); + indices.forEach((i: number) => { + supplySum = supplySum.add(bonds[i].principalPaid); + rewardSum = rewardSum.add(bonds[i].payoutAmount.sub(bonds[i].payoutAlreadyClaimed)); + }); + + return [drillBalance(stakedToken, supplySum.toString()), drillBalance(rewardToken, rewardSum.toString())]; + }, + }); } diff --git a/src/apps/solace/ethereum/helpers/getPolicyBalance.ts b/src/apps/solace/ethereum/helpers/getPolicyBalance.ts index 752e6889e..fd507de5b 100644 --- a/src/apps/solace/ethereum/helpers/getPolicyBalance.ts +++ b/src/apps/solace/ethereum/helpers/getPolicyBalance.ts @@ -1,28 +1,30 @@ -import { SolaceContractFactory } from '../../contracts'; -import { Network } from '~types/network.interface'; -import { SOLACE_DEFINITION } from '../../solace.definition'; import { drillBalance } from '~app-toolkit'; import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; +import { MetaType } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { SolaceContractFactory } from '../../contracts'; +import { SOLACE_DEFINITION } from '../../solace.definition'; -export default async function getPolicyBalance(address: string, appToolkit: IAppToolkit, solaceContractFactory: SolaceContractFactory) { +export default async function getPolicyBalance( + address: string, + appToolkit: IAppToolkit, + solaceContractFactory: SolaceContractFactory, +) { const network = Network.ETHEREUM_MAINNET; return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ - address, - appId: SOLACE_DEFINITION.id, - groupId: SOLACE_DEFINITION.groups.policies.id, - network, - resolveBalances: async ({ address, contractPosition, multicall }) => { - // Resolve the staked token and reward token from the contract position object - const stakedToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'supplied')!; + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.policies.id, + network, + resolveBalances: async ({ address, contractPosition }) => { + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find(t => t.metaType === MetaType.SUPPLIED)!; - const product = solaceContractFactory.solaceCoverProduct({ address: contractPosition.address, network }); - const bal = await product.accountBalanceOf(address); + const product = solaceContractFactory.solaceCoverProduct({ address: contractPosition.address, network }); + const bal = await product.accountBalanceOf(address); - return [ - drillBalance(stakedToken, bal.toString()), - ]; - }, - }); + return [drillBalance(stakedToken, bal.toString())]; + }, + }); } diff --git a/src/apps/solace/ethereum/helpers/getScpBalance.ts b/src/apps/solace/ethereum/helpers/getScpBalance.ts index 89e68636f..a41d69adf 100644 --- a/src/apps/solace/ethereum/helpers/getScpBalance.ts +++ b/src/apps/solace/ethereum/helpers/getScpBalance.ts @@ -1,6 +1,7 @@ +import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; import { Network } from '~types/network.interface'; + import { SOLACE_DEFINITION } from '../../solace.definition'; -import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; export default async function getScpBalance(address: string, appToolkit: IAppToolkit) { return appToolkit.helpers.tokenBalanceHelper.getTokenBalances({ diff --git a/src/apps/solace/ethereum/helpers/getXSLockerBalance.ts b/src/apps/solace/ethereum/helpers/getXSLockerBalance.ts index 74af9fd62..8d8ce65bc 100644 --- a/src/apps/solace/ethereum/helpers/getXSLockerBalance.ts +++ b/src/apps/solace/ethereum/helpers/getXSLockerBalance.ts @@ -1,53 +1,55 @@ -import { SolaceContractFactory } from '../../contracts'; -import { Network } from '~types/network.interface'; -import { SOLACE_DEFINITION } from '../../solace.definition'; +import { ethers } from 'ethers'; +import { range } from 'lodash'; + import { drillBalance } from '~app-toolkit'; import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; +import { MetaType } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { SolaceContractFactory } from '../../contracts'; +import { SOLACE_DEFINITION } from '../../solace.definition'; -import { ethers } from 'ethers'; const BN = ethers.BigNumber; -import { range } from '~apps/solace/utils'; -const XSLOCKER_ADDRESS = "0x501ace47c5b0c2099c4464f681c3fa2ecd3146c1"; -const STAKING_REWARDS_ADDRESS = "0x501ace3d42f9c8723b108d4fbe29989060a91411"; +const XSLOCKER_ADDRESS = '0x501ace47c5b0c2099c4464f681c3fa2ecd3146c1'; +const STAKING_REWARDS_ADDRESS = '0x501ace3d42f9c8723b108d4fbe29989060a91411'; -export default async function getXSLockerBalance(address: string, appToolkit: IAppToolkit, solaceContractFactory: SolaceContractFactory) { +export default async function getXSLockerBalance( + address: string, + appToolkit: IAppToolkit, + solaceContractFactory: SolaceContractFactory, +) { const network = Network.ETHEREUM_MAINNET; return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ - address, - appId: SOLACE_DEFINITION.id, - groupId: SOLACE_DEFINITION.groups.xslocker.id, - network, - resolveBalances: async ({ address, contractPosition, multicall }) => { - // Resolve the staked token and reward token from the contract position object - const stakedToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'supplied')!; - const rewardToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'claimable')!; - - const xslocker = solaceContractFactory.xsLocker({ address: XSLOCKER_ADDRESS, network }); - const stakingRewards = solaceContractFactory.stakingRewards({ address: STAKING_REWARDS_ADDRESS, network }); - - const mcxsl = multicall.wrap(xslocker); - const mcsr = multicall.wrap(stakingRewards); - - const balance = await xslocker.balanceOf(address); - const indices = range(0, balance.toNumber()); - const tokenIDs = await Promise.all(indices.map((i:number) => mcxsl.tokenOfOwnerByIndex(address, i))); - const locks = await Promise.all(tokenIDs.map(id => mcxsl.locks(id))); - const rewards = await Promise.all(tokenIDs.map(id => mcsr.pendingRewardsOfLock(id))); - - let supplySum = BN.from(0); - let rewardSum = BN.from(0); - indices.forEach((i:number) => { - supplySum = supplySum.add(locks[i].amount); - rewardSum = rewardSum.add(rewards[i]); - }); - - return [ - drillBalance(stakedToken, supplySum.toString()), - drillBalance(rewardToken, rewardSum.toString()), - ]; - }, - }); + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.xslocker.id, + network, + resolveBalances: async ({ address, contractPosition, multicall }) => { + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find(t => t.metaType === MetaType.SUPPLIED)!; + const rewardToken = contractPosition.tokens.find(t => t.metaType === MetaType.CLAIMABLE)!; + + const xslocker = solaceContractFactory.xsLocker({ address: XSLOCKER_ADDRESS, network }); + const stakingRewards = solaceContractFactory.stakingRewards({ address: STAKING_REWARDS_ADDRESS, network }); + + const mcxsl = multicall.wrap(xslocker); + const mcsr = multicall.wrap(stakingRewards); + + const balance = await xslocker.balanceOf(address); + const indices = range(0, balance.toNumber()); + const tokenIDs = await Promise.all(indices.map((i: number) => mcxsl.tokenOfOwnerByIndex(address, i))); + const locks = await Promise.all(tokenIDs.map(id => mcxsl.locks(id))); + const rewards = await Promise.all(tokenIDs.map(id => mcsr.pendingRewardsOfLock(id))); + + let supplySum = BN.from(0); + let rewardSum = BN.from(0); + indices.forEach((i: number) => { + supplySum = supplySum.add(locks[i].amount); + rewardSum = rewardSum.add(rewards[i]); + }); + + return [drillBalance(stakedToken, supplySum.toString()), drillBalance(rewardToken, rewardSum.toString())]; + }, + }); } diff --git a/src/apps/solace/ethereum/helpers/getXSolaceV1Balance.ts b/src/apps/solace/ethereum/helpers/getXSolaceV1Balance.ts index b48aaedec..b620cdc0d 100644 --- a/src/apps/solace/ethereum/helpers/getXSolaceV1Balance.ts +++ b/src/apps/solace/ethereum/helpers/getXSolaceV1Balance.ts @@ -1,6 +1,7 @@ +import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; import { Network } from '~types/network.interface'; + import { SOLACE_DEFINITION } from '../../solace.definition'; -import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; export default async function getXSolaceV1Balance(address: string, appToolkit: IAppToolkit) { return appToolkit.helpers.tokenBalanceHelper.getTokenBalances({ diff --git a/src/apps/solace/ethereum/solace.balance-fetcher.ts b/src/apps/solace/ethereum/solace.balance-fetcher.ts index 0ae7eb34a..5fe3fe4f7 100644 --- a/src/apps/solace/ethereum/solace.balance-fetcher.ts +++ b/src/apps/solace/ethereum/solace.balance-fetcher.ts @@ -8,11 +8,12 @@ import { Network } from '~types/network.interface'; import { SolaceContractFactory } from '../contracts'; import { SOLACE_DEFINITION } from '../solace.definition'; -import getScpBalance from './helpers/getScpBalance'; -import getXSolaceV1Balance from './helpers/getXSolaceV1Balance'; -import getXSLockerBalance from './helpers/getXSLockerBalance'; + import getBondBalance from './helpers/getBondBalance'; import getPolicyBalance from './helpers/getPolicyBalance'; +import getScpBalance from './helpers/getScpBalance'; +import getXSLockerBalance from './helpers/getXSLockerBalance'; +import getXSolaceV1Balance from './helpers/getXSolaceV1Balance'; const network = Network.ETHEREUM_MAINNET; @@ -20,7 +21,7 @@ const network = Network.ETHEREUM_MAINNET; export class EthereumSolaceBalanceFetcher implements BalanceFetcher { constructor( @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, - @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, ) {} async getBalances(address: string) { diff --git a/src/apps/solace/ethereum/solace.bonds.contract-position-fetcher.ts b/src/apps/solace/ethereum/solace.bonds.contract-position-fetcher.ts index c7340e9fd..5a7c0a084 100644 --- a/src/apps/solace/ethereum/solace.bonds.contract-position-fetcher.ts +++ b/src/apps/solace/ethereum/solace.bonds.contract-position-fetcher.ts @@ -1,88 +1,99 @@ import { Inject } from '@nestjs/common'; +import { compact } from 'lodash'; import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; import { Register } from '~app-toolkit/decorators'; +import { getImagesFromToken, getLabelFromToken } from '~app-toolkit/helpers/presentation/image.present'; +import { ContractType } from '~position/contract.interface'; import { PositionFetcher } from '~position/position-fetcher.interface'; import { ContractPosition } from '~position/position.interface'; -import { ContractType } from '~position/contract.interface'; -import { claimable, supplied } from '~position/position.utils'; import { Network } from '~types/network.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; -import { SolaceContractFactory } from '../contracts'; import { SOLACE_DEFINITION } from '../solace.definition'; -import { findToken } from '../utils'; - const appId = SOLACE_DEFINITION.id; const groupId = SOLACE_DEFINITION.groups.bonds.id; const network = Network.ETHEREUM_MAINNET; -const SOLACE_ADDRESS = "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40"; +const SOLACE_ADDRESS = '0x501ace9c35e60f03a2af4d484f49f9b1efde9f40'; const BOND_TELLERS = [ { - "name": "Solace DAI Bond", - "address": "0x501ace677634fd09a876e88126076933b686967a", - "deposit": "0x6b175474e89094c44da98b954eedeac495271d0f" + name: 'Solace DAI Bond', + address: '0x501ace677634fd09a876e88126076933b686967a', + deposit: '0x6b175474e89094c44da98b954eedeac495271d0f', }, { - "name": "Solace ETH Bond", - "address": "0x501ace95141f3eb59970dd64af0405f6056fb5d8", - "deposit": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2" + name: 'Solace ETH Bond', + address: '0x501ace95141f3eb59970dd64af0405f6056fb5d8', + deposit: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', }, { - "name": "Solace USDC Bond", - "address": "0x501ace7e977e06a3cb55f9c28d5654c9d74d5ca9", - "deposit": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48" + name: 'Solace USDC Bond', + address: '0x501ace7e977e06a3cb55f9c28d5654c9d74d5ca9', + deposit: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', }, { - "name": "Solace WBTC Bond", - "address": "0x501acef0d0c73bd103337e6e9fd49d58c426dc27", - "deposit": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599" + name: 'Solace WBTC Bond', + address: '0x501acef0d0c73bd103337e6e9fd49d58c426dc27', + deposit: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', }, { - "name": "Solace USDT Bond", - "address": "0x501ace5ceec693df03198755ee80d4ce0b5c55fe", - "deposit": "0xdac17f958d2ee523a2206206994597c13d831ec7" + name: 'Solace USDT Bond', + address: '0x501ace5ceec693df03198755ee80d4ce0b5c55fe', + deposit: '0xdac17f958d2ee523a2206206994597c13d831ec7', }, { - "name": "Solace SCP Bond", - "address": "0x501ace00fd8e5db7c3be5e6d254ba4995e1b45b7", - "deposit": "0x501acee83a6f269b77c167c6701843d454e2efa0" + name: 'Solace SCP Bond', + address: '0x501ace00fd8e5db7c3be5e6d254ba4995e1b45b7', + deposit: '0x501acee83a6f269b77c167c6701843d454e2efa0', }, { - "name": "Solace FRAX Bond", - "address": "0x501acef4f8397413c33b13cb39670ad2f17bfe62", - "deposit": "0x853d955acef822db058eb8505911ed77f175b99e" - } + name: 'Solace FRAX Bond', + address: '0x501acef4f8397413c33b13cb39670ad2f17bfe62', + deposit: '0x853d955acef822db058eb8505911ed77f175b99e', + }, ]; @Register.ContractPositionFetcher({ appId, groupId, network }) export class EthereumSolaceBondsContractPositionFetcher implements PositionFetcher { - constructor( - @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, - @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, - ) {} + constructor(@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit) {} async getPositions() { const baseTokens = await this.appToolkit.getBaseTokenPrices(network); - const solace = baseTokens.find((t:WithMetaType) => t.address === SOLACE_ADDRESS); - const positions = await Promise.all(BOND_TELLERS.map(async teller => { - const tokens:WithMetaType[] = []; - const depositToken = await findToken(baseTokens, teller.deposit, this.solaceContractFactory, network); - if(!!depositToken) tokens.push(supplied(depositToken)); - if(!!solace) tokens.push(claimable(solace)); - return { - type: ContractType.POSITION, - appId, - groupId, - address: teller.address, - network, - tokens - }; - })); - return positions; + const appTokens = await this.appToolkit.getAppTokenPositions({ + appId, + groupIds: [SOLACE_DEFINITION.groups.scp.id], + network, + }); + + const allTokens = [...appTokens, ...baseTokens]; + const solaceToken = baseTokens.find(t => t.address === SOLACE_ADDRESS)!; + + const positions = await Promise.all( + BOND_TELLERS.map(async teller => { + const depositToken = allTokens.find(v => v.address === teller.deposit); + if (!depositToken || !solaceToken) return null; + const tokens = [depositToken, solaceToken]; + + const position: ContractPosition = { + type: ContractType.POSITION, + appId, + groupId, + address: teller.address, + network, + tokens, + dataProps: {}, + displayProps: { + label: `${getLabelFromToken(depositToken)} Bond`, + images: getImagesFromToken(depositToken), + }, + }; + + return position; + }), + ); + + return compact(positions); } } diff --git a/src/apps/solace/ethereum/solace.policies.contract-position-fetcher.ts b/src/apps/solace/ethereum/solace.policies.contract-position-fetcher.ts index 0d73978cd..7f461d84c 100644 --- a/src/apps/solace/ethereum/solace.policies.contract-position-fetcher.ts +++ b/src/apps/solace/ethereum/solace.policies.contract-position-fetcher.ts @@ -2,13 +2,12 @@ import { Inject } from '@nestjs/common'; import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; import { Register } from '~app-toolkit/decorators'; +import { getTokenImg } from '~app-toolkit/helpers/presentation/image.present'; +import { ContractType } from '~position/contract.interface'; import { PositionFetcher } from '~position/position-fetcher.interface'; import { ContractPosition } from '~position/position.interface'; -import { ContractType } from '~position/contract.interface'; import { supplied } from '~position/position.utils'; import { Network } from '~types/network.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; import { SolaceContractFactory } from '../contracts'; import { SOLACE_DEFINITION } from '../solace.definition'; @@ -17,8 +16,9 @@ const appId = SOLACE_DEFINITION.id; const groupId = SOLACE_DEFINITION.groups.policies.id; const network = Network.ETHEREUM_MAINNET; -const DAI_ADDRESS = "0x6b175474e89094c44da98b954eedeac495271d0f"; -const SOLACE_COVER_PRODUCT_ADDRESS = "0x501acebe29eabc346779bcb5fd62eaf6bfb5320e"; +const DAI_ADDRESS = '0x6b175474e89094c44da98b954eedeac495271d0f'; +const SOLACE_COVER_PRODUCT_ADDRESS = '0x501acebe29eabc346779bcb5fd62eaf6bfb5320e'; +const SOLACE_ADDRESS = '0x501ace9c35e60f03a2af4d484f49f9b1efde9f40'; @Register.ContractPositionFetcher({ appId, groupId, network }) export class EthereumSolacePoliciesContractPositionFetcher implements PositionFetcher { @@ -29,17 +29,23 @@ export class EthereumSolacePoliciesContractPositionFetcher implements PositionFe async getPositions() { const baseTokens = await this.appToolkit.getBaseTokenPrices(network); - const dai = baseTokens.find((t:WithMetaType) => t.address === DAI_ADDRESS); - const tokens = ((!!dai) - ? [supplied(dai)] - : []); - return [{ + const dai = baseTokens.find(t => t.address === DAI_ADDRESS)!; + const tokens = [supplied(dai)]; + + const position: ContractPosition = { type: ContractType.POSITION, appId, groupId, address: SOLACE_COVER_PRODUCT_ADDRESS, network, - tokens - }]; + tokens, + dataProps: {}, + displayProps: { + label: `Solace Cover Policy`, // @TODO Might be nice to include cover amount! + images: [getTokenImg(SOLACE_ADDRESS, Network.ETHEREUM_MAINNET)], + }, + }; + + return [position]; } } diff --git a/src/apps/solace/ethereum/solace.scp.token-fetcher.ts b/src/apps/solace/ethereum/solace.scp.token-fetcher.ts index ea9f7b012..6c68dee00 100644 --- a/src/apps/solace/ethereum/solace.scp.token-fetcher.ts +++ b/src/apps/solace/ethereum/solace.scp.token-fetcher.ts @@ -2,26 +2,25 @@ import { Inject } from '@nestjs/common'; import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; import { Register } from '~app-toolkit/decorators'; +import { buildDollarDisplayItem } from '~app-toolkit/helpers/presentation/display-item.present'; +import { getTokenImg } from '~app-toolkit/helpers/presentation/image.present'; +import { ContractType } from '~position/contract.interface'; import { PositionFetcher } from '~position/position-fetcher.interface'; import { AppTokenPosition } from '~position/position.interface'; -import { ContractType } from '~position/contract.interface'; import { Network } from '~types/network.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; import { SolaceContractFactory } from '../contracts'; import { SOLACE_DEFINITION } from '../solace.definition'; -import { bnToFloat } from '../utils'; - const appId = SOLACE_DEFINITION.id; const groupId = SOLACE_DEFINITION.groups.scp.id; const network = Network.ETHEREUM_MAINNET; -const SCP_ADDRESS = "0x501acee83a6f269b77c167c6701843d454e2efa0"; -const symbol = "SCP"; +const SCP_ADDRESS = '0x501acee83a6f269b77c167c6701843d454e2efa0'; +const symbol = 'SCP'; const decimals = 18; -const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; +const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; +const SOLACE_ADDRESS = '0x501ace9c35e60f03a2af4d484f49f9b1efde9f40'; @Register.TokenPositionFetcher({ appId, groupId, network }) export class EthereumSolaceScpTokenFetcher implements PositionFetcher { @@ -32,17 +31,19 @@ export class EthereumSolaceScpTokenFetcher implements PositionFetcher t.address === ZERO_ADDRESS)!; const scp = this.solaceContractFactory.scp({ address: SCP_ADDRESS, network }); const mcscp = multicall.wrap(scp); - const [supplyRaw, pps, ethPrice] = await Promise.all([ - mcscp.totalSupply(), - mcscp.pricePerShare(), - this.getEthPrice() - ]); - const supply = bnToFloat(decimals)(supplyRaw); - const scpPrice = ethPrice * bnToFloat(decimals)(pps); + const [supplyRaw, pricePerShareRaw] = await Promise.all([mcscp.totalSupply(), mcscp.pricePerShare()]); + + const supply = Number(supplyRaw) / 10 ** decimals; + const pricePerShare = Number(pricePerShareRaw) / 10 ** decimals; + const price = eth.price * pricePerShare; + const tokens = [eth]; - return [{ + const token: AppTokenPosition = { type: ContractType.APP_TOKEN, appId, groupId, @@ -51,14 +52,17 @@ export class EthereumSolaceScpTokenFetcher implements PositionFetcher) => t.address === ZERO_ADDRESS); - if(!eth || !eth.price) return 0.0; - return eth.price; + return [token]; } } diff --git a/src/apps/solace/ethereum/solace.tvl-fetcher.ts b/src/apps/solace/ethereum/solace.tvl-fetcher.ts index f945f493c..bbb46ea26 100644 --- a/src/apps/solace/ethereum/solace.tvl-fetcher.ts +++ b/src/apps/solace/ethereum/solace.tvl-fetcher.ts @@ -1,4 +1,5 @@ import { Inject } from '@nestjs/common'; +import { range } from 'lodash'; import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; import { Register } from '~app-toolkit/decorators'; @@ -8,65 +9,63 @@ import { Network } from '~types/network.interface'; import { SolaceContractFactory } from '../contracts'; import { SOLACE_DEFINITION } from '../solace.definition'; -import { bnToFloat, findToken, range } from '~apps/solace/utils'; - const appId = SOLACE_DEFINITION.id; const network = Network.ETHEREUM_MAINNET; // TODO: there is more to TVL than amount in the UWP // since its the bulk we call it sufficient for now -const UWP_ADDRESS = "0x5efC0d9ee3223229Ce3b53e441016efC5BA83435"; -const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; +const UWP_ADDRESS = '0x5efC0d9ee3223229Ce3b53e441016efC5BA83435'; +const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; const TOKENS = [ { - "symbol": "SOLACE", - "address": "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40", - "decimals": 18 + symbol: 'SOLACE', + address: '0x501ace9c35e60f03a2af4d484f49f9b1efde9f40', + decimals: 18, }, { - "symbol": "FRAX", - "address": "0x853d955acef822db058eb8505911ed77f175b99e", - "decimals": 18 + symbol: 'FRAX', + address: '0x853d955acef822db058eb8505911ed77f175b99e', + decimals: 18, }, { - "symbol": "USDC", - "address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48", - "decimals": 6 + symbol: 'USDC', + address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', + decimals: 6, }, { - "symbol": "USDT", - "address": "0xdac17f958d2ee523a2206206994597c13d831ec7", - "decimals": 6 + symbol: 'USDT', + address: '0xdac17f958d2ee523a2206206994597c13d831ec7', + decimals: 6, }, { - "symbol": "DAI", - "address": "0x6b175474e89094c44da98b954eedeac495271d0f", - "decimals": 18 + symbol: 'DAI', + address: '0x6b175474e89094c44da98b954eedeac495271d0f', + decimals: 18, }, { - "symbol": "WETH", - "address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2", - "decimals": 18 + symbol: 'WETH', + address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', + decimals: 18, }, { - "symbol": "WBTC", - "address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599", - "decimals": 8 + symbol: 'WBTC', + address: '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', + decimals: 8, }, { - "symbol": "ETH", - "address": "0x0000000000000000000000000000000000000000", - "decimals": 18 + symbol: 'ETH', + address: '0x0000000000000000000000000000000000000000', + decimals: 18, }, { - "symbol": "SCP", - "address": "0x501acee83a6f269b77c167c6701843d454e2efa0", - "decimals": 18 + symbol: 'SCP', + address: '0x501acee83a6f269b77c167c6701843d454e2efa0', + decimals: 18, }, { - "symbol": "SLP", - "address": "0x9c051f8a6648a51ef324d30c235da74d060153ac", - "decimals": 18 + symbol: 'SLP', + address: '0x9c051f8a6648a51ef324d30c235da74d060153ac', + decimals: 18, }, ]; @@ -74,30 +73,42 @@ const TOKENS = [ export class EthereumSolaceTvlFetcher implements TvlFetcher { constructor( @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, - @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, ) {} async getTvl() { const baseTokens = await this.appToolkit.getBaseTokenPrices(network); + const appTokens = await this.appToolkit.getAppTokenPositions( + { appId, groupIds: [SOLACE_DEFINITION.groups.scp.id], network }, + { appId: 'sushiswap', groupIds: ['pool'], network }, + ); + + const allTokens = [...appTokens, ...baseTokens]; const multicall = this.appToolkit.getMulticall(network); const indices = range(0, TOKENS.length); - let provider: any = undefined; - const balances = await Promise.all(TOKENS.map(token => { - if(token.address === ZERO_ADDRESS) { - return provider.getBalance(UWP_ADDRESS).then(bnToFloat(token.decimals)); - } else { - const tokenContract = this.solaceContractFactory.erc20({ address: token.address, network }); - if(!provider) provider = tokenContract.provider; - const mct = multicall.wrap(tokenContract); - return mct.balanceOf(UWP_ADDRESS).then(bnToFloat(token.decimals)); - } - })); + + const balances = await Promise.all( + TOKENS.map(async token => { + if (token.address === ZERO_ADDRESS) { + const mcmc = multicall.wrap(multicall.contract); + return mcmc.getEthBalance(UWP_ADDRESS).then(v => Number(v) / 10 ** token.decimals); + } else { + const tokenContract = this.solaceContractFactory.erc20({ address: token.address, network }); + const mct = multicall.wrap(tokenContract); + return mct.balanceOf(UWP_ADDRESS).then(v => Number(v) / 10 ** token.decimals); + } + }), + ); + let usd = 0; - await Promise.all(indices.map(async (i:number) => { - const zapperToken = await findToken(baseTokens, TOKENS[i].address, this.solaceContractFactory, network); - if(!zapperToken) return; - usd += balances[i] * zapperToken.price; - })); + await Promise.all( + indices.map(async (i: number) => { + const token = allTokens.find(v => v.address === TOKENS[i].address)!; + if (!token) return; + usd += balances[i] * token.price; + }), + ); + return usd; } } diff --git a/src/apps/solace/ethereum/solace.xslocker.contract-position-fetcher.ts b/src/apps/solace/ethereum/solace.xslocker.contract-position-fetcher.ts index 3ea9db4b9..1ca56bc96 100644 --- a/src/apps/solace/ethereum/solace.xslocker.contract-position-fetcher.ts +++ b/src/apps/solace/ethereum/solace.xslocker.contract-position-fetcher.ts @@ -2,13 +2,12 @@ import { Inject } from '@nestjs/common'; import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; import { Register } from '~app-toolkit/decorators'; +import { getImagesFromToken } from '~app-toolkit/helpers/presentation/image.present'; +import { ContractType } from '~position/contract.interface'; import { PositionFetcher } from '~position/position-fetcher.interface'; import { ContractPosition } from '~position/position.interface'; -import { ContractType } from '~position/contract.interface'; import { claimable, supplied } from '~position/position.utils'; import { Network } from '~types/network.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; import { SolaceContractFactory } from '../contracts'; import { SOLACE_DEFINITION } from '../solace.definition'; @@ -17,8 +16,8 @@ const appId = SOLACE_DEFINITION.id; const groupId = SOLACE_DEFINITION.groups.xslocker.id; const network = Network.ETHEREUM_MAINNET; -const SOLACE_ADDRESS = "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40"; -const XSLOCKER_ADDRESS = "0x501ace47c5b0c2099c4464f681c3fa2ecd3146c1"; +const SOLACE_ADDRESS = '0x501ace9c35e60f03a2af4d484f49f9b1efde9f40'; +const XSLOCKER_ADDRESS = '0x501ace47c5b0c2099c4464f681c3fa2ecd3146c1'; @Register.ContractPositionFetcher({ appId, groupId, network }) export class EthereumSolaceXslockerContractPositionFetcher implements PositionFetcher { @@ -29,17 +28,23 @@ export class EthereumSolaceXslockerContractPositionFetcher implements PositionFe async getPositions() { const baseTokens = await this.appToolkit.getBaseTokenPrices(network); - const solace = baseTokens.find((t:WithMetaType) => t.address === SOLACE_ADDRESS); - const tokens = ((!!solace) - ? [supplied(solace), claimable(solace)] - : []); - return [{ + const solace = baseTokens.find(t => t.address === SOLACE_ADDRESS)!; + if (!solace) return []; + + const position: ContractPosition = { type: ContractType.POSITION, + address: XSLOCKER_ADDRESS, appId, groupId, - address: XSLOCKER_ADDRESS, network, - tokens - }]; + tokens: [supplied(solace), claimable(solace)], + dataProps: {}, + displayProps: { + label: `xsLOCK`, + images: getImagesFromToken(solace), + }, + }; + + return [position]; } } diff --git a/src/apps/solace/ethereum/solace.xsolacev1.token-fetcher.ts b/src/apps/solace/ethereum/solace.xsolacev1.token-fetcher.ts index e8b6a7a92..609c8c600 100644 --- a/src/apps/solace/ethereum/solace.xsolacev1.token-fetcher.ts +++ b/src/apps/solace/ethereum/solace.xsolacev1.token-fetcher.ts @@ -2,27 +2,26 @@ import { Inject } from '@nestjs/common'; import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; import { Register } from '~app-toolkit/decorators'; +import { getImagesFromToken } from '~app-toolkit/helpers/presentation/image.present'; +import { ContractType } from '~position/contract.interface'; +import { WithMetaType } from '~position/display.interface'; import { PositionFetcher } from '~position/position-fetcher.interface'; import { AppTokenPosition } from '~position/position.interface'; -import { ContractType } from '~position/contract.interface'; -import { Network } from '~types/network.interface'; import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; +import { Network } from '~types/network.interface'; import { SolaceContractFactory } from '../contracts'; import { SOLACE_DEFINITION } from '../solace.definition'; -import { bnToFloat } from '../utils'; - const appId = SOLACE_DEFINITION.id; const groupId = SOLACE_DEFINITION.groups.xsolacev1.id; const network = Network.ETHEREUM_MAINNET; -const SOLACE_ADDRESS = "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40"; -const XSOLACE_V1_ADDRESS = "0x501ace5ac3af20f49d53242b6d208f3b91cfc411"; -const symbol = "xSOLACEv1"; +const SOLACE_ADDRESS = '0x501ace9c35e60f03a2af4d484f49f9b1efde9f40'; +const XSOLACE_V1_ADDRESS = '0x501ace5ac3af20f49d53242b6d208f3b91cfc411'; +const symbol = 'xSOLACEv1'; const decimals = 18; -const ONE_ETHER = "1000000000000000000"; +const ONE_ETHER = '1000000000000000000'; @Register.TokenPositionFetcher({ appId, groupId, network }) export class EthereumSolaceXsolacev1TokenFetcher implements PositionFetcher { @@ -32,36 +31,38 @@ export class EthereumSolaceXsolacev1TokenFetcher implements PositionFetcher { - const multicall = this.appToolkit.getMulticall(network); - const xsolacev1 = this.solaceContractFactory.xSolacev1({ address: XSOLACE_V1_ADDRESS, network }); - const mcxs = multicall.wrap(xsolacev1); - const [supplyRaw, pps, solacePrice] = await Promise.all([ - mcxs.totalSupply(), - mcxs.xSolaceToSolace(ONE_ETHER), - this.getSolacePrice() - ]); - const supply = bnToFloat(decimals)(supplyRaw); - const xsolacePrice = solacePrice * bnToFloat(decimals)(pps); + const multicall = this.appToolkit.getMulticall(network); + const baseTokens = await this.appToolkit.getBaseTokenPrices(network); - resolve([{ - type: ContractType.APP_TOKEN, - appId, - groupId, - address: XSOLACE_V1_ADDRESS, - network, - symbol, - decimals, - supply, - price: xsolacePrice - }]); - }); - } + const solace = baseTokens.find((t: WithMetaType) => t.address === SOLACE_ADDRESS)!; + const xsolacev1 = this.solaceContractFactory.xSolacev1({ address: XSOLACE_V1_ADDRESS, network }); + const mcxs = multicall.wrap(xsolacev1); + const [supplyRaw, pricePerShareRaw] = await Promise.all([mcxs.totalSupply(), mcxs.xSolaceToSolace(ONE_ETHER)]); - async getSolacePrice() { - const baseTokens = await this.appToolkit.getBaseTokenPrices(network); - const solace = baseTokens.find((t:WithMetaType) => t.address === SOLACE_ADDRESS); - if(!solace || !solace.price) return 0.0; - return solace.price; + const supply = Number(supplyRaw) / 10 ** decimals; + const pricePerShare = Number(pricePerShareRaw) / 10 ** decimals; + const price = solace.price * pricePerShare; + const tokens = [solace]; + + const token: AppTokenPosition = { + type: ContractType.APP_TOKEN, + appId, + groupId, + address: XSOLACE_V1_ADDRESS, + network, + symbol, + decimals, + supply, + price, + pricePerShare, + tokens, + dataProps: {}, + displayProps: { + label: symbol, + images: getImagesFromToken(solace), + }, + }; + + return [token]; } } diff --git a/src/apps/solace/polygon/helpers/getBondBalance.ts b/src/apps/solace/polygon/helpers/getBondBalance.ts index 8b327c391..538816372 100644 --- a/src/apps/solace/polygon/helpers/getBondBalance.ts +++ b/src/apps/solace/polygon/helpers/getBondBalance.ts @@ -1,48 +1,49 @@ -import { SolaceContractFactory } from '../../contracts'; -import { Network } from '~types/network.interface'; -import { SOLACE_DEFINITION } from '../../solace.definition'; +import { ethers } from 'ethers'; +import { range } from 'lodash'; + import { drillBalance } from '~app-toolkit'; import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; +import { MetaType } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { SolaceContractFactory } from '../../contracts'; +import { SOLACE_DEFINITION } from '../../solace.definition'; -import { ethers } from 'ethers'; const BN = ethers.BigNumber; -import { range } from '~apps/solace/utils'; -export default async function getBondBalance(address: string, appToolkit: IAppToolkit, solaceContractFactory: SolaceContractFactory) { +export default async function getBondBalance( + address: string, + appToolkit: IAppToolkit, + solaceContractFactory: SolaceContractFactory, +) { const network = Network.POLYGON_MAINNET; return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ - address, - appId: SOLACE_DEFINITION.id, - groupId: SOLACE_DEFINITION.groups.bonds.id, - network, - resolveBalances: async ({ address, contractPosition, multicall }) => { - - // Resolve the staked token and reward token from the contract position object - const stakedToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'supplied')!; - const rewardToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'claimable')!; - - const teller = solaceContractFactory.bondTellerErc20({ address: contractPosition.address, network }); - - const mct = multicall.wrap(teller); - - const balance = await mct.balanceOf(address); - const indices = range(0, balance.toNumber()); - const tokenIDs = await Promise.all(indices.map((i:number) => mct.tokenOfOwnerByIndex(address, i))); - const bonds = await Promise.all(tokenIDs.map(id => mct.bonds(id))); - - let supplySum = BN.from(0); - let rewardSum = BN.from(0); - indices.forEach((i:number) => { - supplySum = supplySum.add(bonds[i].principalPaid); - rewardSum = rewardSum.add(bonds[i].payoutAmount.sub(bonds[i].payoutAlreadyClaimed)); - }); - - return [ - drillBalance(stakedToken, supplySum.toString()), - drillBalance(rewardToken, rewardSum.toString()), - ]; - }, - }); + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.bonds.id, + network, + resolveBalances: async ({ address, contractPosition, multicall }) => { + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find(t => t.metaType === MetaType.SUPPLIED)!; + const rewardToken = contractPosition.tokens.find(t => t.metaType === MetaType.CLAIMABLE)!; + + const teller = solaceContractFactory.bondTellerErc20({ address: contractPosition.address, network }); + + const mct = multicall.wrap(teller); + + const balance = await mct.balanceOf(address); + const indices = range(0, balance.toNumber()); + const tokenIDs = await Promise.all(indices.map((i: number) => mct.tokenOfOwnerByIndex(address, i))); + const bonds = await Promise.all(tokenIDs.map(id => mct.bonds(id))); + + let supplySum = BN.from(0); + let rewardSum = BN.from(0); + indices.forEach((i: number) => { + supplySum = supplySum.add(bonds[i].principalPaid); + rewardSum = rewardSum.add(bonds[i].payoutAmount.sub(bonds[i].payoutAlreadyClaimed)); + }); + + return [drillBalance(stakedToken, supplySum.toString()), drillBalance(rewardToken, rewardSum.toString())]; + }, + }); } diff --git a/src/apps/solace/polygon/helpers/getPolicyBalance.ts b/src/apps/solace/polygon/helpers/getPolicyBalance.ts index ccb1e641c..e742b2bf6 100644 --- a/src/apps/solace/polygon/helpers/getPolicyBalance.ts +++ b/src/apps/solace/polygon/helpers/getPolicyBalance.ts @@ -1,28 +1,30 @@ -import { SolaceContractFactory } from '../../contracts'; -import { Network } from '~types/network.interface'; -import { SOLACE_DEFINITION } from '../../solace.definition'; import { drillBalance } from '~app-toolkit'; import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; +import { MetaType } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { SolaceContractFactory } from '../../contracts'; +import { SOLACE_DEFINITION } from '../../solace.definition'; -export default async function getPolicyBalance(address: string, appToolkit: IAppToolkit, solaceContractFactory: SolaceContractFactory) { +export default async function getPolicyBalance( + address: string, + appToolkit: IAppToolkit, + solaceContractFactory: SolaceContractFactory, +) { const network = Network.POLYGON_MAINNET; return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ - address, - appId: SOLACE_DEFINITION.id, - groupId: SOLACE_DEFINITION.groups.policies.id, - network, - resolveBalances: async ({ address, contractPosition, multicall }) => { - // Resolve the staked token and reward token from the contract position object - const stakedToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'supplied')!; + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.policies.id, + network, + resolveBalances: async ({ address, contractPosition }) => { + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find(t => t.metaType === MetaType.SUPPLIED)!; - const product = solaceContractFactory.solaceCoverProduct({ address: contractPosition.address, network }); - const bal = await product.accountBalanceOf(address); + const product = solaceContractFactory.solaceCoverProduct({ address: contractPosition.address, network }); + const bal = await product.accountBalanceOf(address); - return [ - drillBalance(stakedToken, bal.toString()), - ]; - }, - }); + return [drillBalance(stakedToken, bal.toString())]; + }, + }); } diff --git a/src/apps/solace/polygon/helpers/getXSLockerBalance.ts b/src/apps/solace/polygon/helpers/getXSLockerBalance.ts index a38103064..35333d366 100644 --- a/src/apps/solace/polygon/helpers/getXSLockerBalance.ts +++ b/src/apps/solace/polygon/helpers/getXSLockerBalance.ts @@ -1,53 +1,55 @@ -import { SolaceContractFactory } from '../../contracts'; -import { Network } from '~types/network.interface'; -import { SOLACE_DEFINITION } from '../../solace.definition'; +import { ethers } from 'ethers'; +import { range } from 'lodash'; + import { drillBalance } from '~app-toolkit'; import { IAppToolkit } from '~app-toolkit/app-toolkit.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; +import { MetaType } from '~position/position.interface'; +import { Network } from '~types/network.interface'; + +import { SolaceContractFactory } from '../../contracts'; +import { SOLACE_DEFINITION } from '../../solace.definition'; -import { ethers } from 'ethers'; const BN = ethers.BigNumber; -import { range } from '~apps/solace/utils'; -const XSLOCKER_ADDRESS = "0x501ace47c5b0c2099c4464f681c3fa2ecd3146c1"; -const STAKING_REWARDS_ADDRESS = "0x501ace3d42f9c8723b108d4fbe29989060a91411"; +const XSLOCKER_ADDRESS = '0x501ace47c5b0c2099c4464f681c3fa2ecd3146c1'; +const STAKING_REWARDS_ADDRESS = '0x501ace3d42f9c8723b108d4fbe29989060a91411'; -export default async function getXSLockerBalance(address: string, appToolkit: IAppToolkit, solaceContractFactory: SolaceContractFactory) { +export default async function getXSLockerBalance( + address: string, + appToolkit: IAppToolkit, + solaceContractFactory: SolaceContractFactory, +) { const network = Network.POLYGON_MAINNET; return appToolkit.helpers.contractPositionBalanceHelper.getContractPositionBalances({ - address, - appId: SOLACE_DEFINITION.id, - groupId: SOLACE_DEFINITION.groups.xslocker.id, - network, - resolveBalances: async ({ address, contractPosition, multicall }) => { - // Resolve the staked token and reward token from the contract position object - const stakedToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'supplied')!; - const rewardToken = contractPosition.tokens.find((t:WithMetaType) => t.metaType === 'claimable')!; - - const xslocker = solaceContractFactory.xsLocker({ address: XSLOCKER_ADDRESS, network }); - const stakingRewards = solaceContractFactory.stakingRewards({ address: STAKING_REWARDS_ADDRESS, network }); - - const mcxsl = multicall.wrap(xslocker); - const mcsr = multicall.wrap(stakingRewards); - - const balance = await xslocker.balanceOf(address); - const indices = range(0, balance.toNumber()); - const tokenIDs = await Promise.all(indices.map((i:number) => mcxsl.tokenOfOwnerByIndex(address, i))); - const locks = await Promise.all(tokenIDs.map(id => mcxsl.locks(id))); - const rewards = await Promise.all(tokenIDs.map(id => mcsr.pendingRewardsOfLock(id))); - - let supplySum = BN.from(0); - let rewardSum = BN.from(0); - indices.forEach((i:number) => { - supplySum = supplySum.add(locks[i].amount); - rewardSum = rewardSum.add(rewards[i]); - }); - - return [ - drillBalance(stakedToken, supplySum.toString()), - drillBalance(rewardToken, rewardSum.toString()), - ]; - }, - }); + address, + appId: SOLACE_DEFINITION.id, + groupId: SOLACE_DEFINITION.groups.xslocker.id, + network, + resolveBalances: async ({ address, contractPosition, multicall }) => { + // Resolve the staked token and reward token from the contract position object + const stakedToken = contractPosition.tokens.find(t => t.metaType === MetaType.SUPPLIED)!; + const rewardToken = contractPosition.tokens.find(t => t.metaType === MetaType.CLAIMABLE)!; + + const xslocker = solaceContractFactory.xsLocker({ address: XSLOCKER_ADDRESS, network }); + const stakingRewards = solaceContractFactory.stakingRewards({ address: STAKING_REWARDS_ADDRESS, network }); + + const mcxsl = multicall.wrap(xslocker); + const mcsr = multicall.wrap(stakingRewards); + + const balance = await xslocker.balanceOf(address); + const indices = range(0, balance.toNumber()); + const tokenIDs = await Promise.all(indices.map((i: number) => mcxsl.tokenOfOwnerByIndex(address, i))); + const locks = await Promise.all(tokenIDs.map(id => mcxsl.locks(id))); + const rewards = await Promise.all(tokenIDs.map(id => mcsr.pendingRewardsOfLock(id))); + + let supplySum = BN.from(0); + let rewardSum = BN.from(0); + indices.forEach((i: number) => { + supplySum = supplySum.add(locks[i].amount); + rewardSum = rewardSum.add(rewards[i]); + }); + + return [drillBalance(stakedToken, supplySum.toString()), drillBalance(rewardToken, rewardSum.toString())]; + }, + }); } diff --git a/src/apps/solace/polygon/solace.balance-fetcher.ts b/src/apps/solace/polygon/solace.balance-fetcher.ts index 743b70a75..0ea05fbf8 100644 --- a/src/apps/solace/polygon/solace.balance-fetcher.ts +++ b/src/apps/solace/polygon/solace.balance-fetcher.ts @@ -8,9 +8,10 @@ import { Network } from '~types/network.interface'; import { SolaceContractFactory } from '../contracts'; import { SOLACE_DEFINITION } from '../solace.definition'; -import getXSLockerBalance from './helpers/getXSLockerBalance'; + import getBondBalance from './helpers/getBondBalance'; import getPolicyBalance from './helpers/getPolicyBalance'; +import getXSLockerBalance from './helpers/getXSLockerBalance'; const network = Network.POLYGON_MAINNET; @@ -18,7 +19,7 @@ const network = Network.POLYGON_MAINNET; export class PolygonSolaceBalanceFetcher implements BalanceFetcher { constructor( @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, - @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, ) {} async getBalances(address: string) { @@ -27,6 +28,7 @@ export class PolygonSolaceBalanceFetcher implements BalanceFetcher { getBondBalance(address, this.appToolkit, this.solaceContractFactory), getPolicyBalance(address, this.appToolkit, this.solaceContractFactory), ]); + return presentBalanceFetcherResponse([ { label: 'xsLocker', assets: xslockerBal }, { label: 'Bonds', assets: bondBal }, diff --git a/src/apps/solace/polygon/solace.bonds.contract-position-fetcher.ts b/src/apps/solace/polygon/solace.bonds.contract-position-fetcher.ts index 355d7cdf7..373e1fe44 100644 --- a/src/apps/solace/polygon/solace.bonds.contract-position-fetcher.ts +++ b/src/apps/solace/polygon/solace.bonds.contract-position-fetcher.ts @@ -1,62 +1,60 @@ import { Inject } from '@nestjs/common'; +import { compact } from 'lodash'; import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; import { Register } from '~app-toolkit/decorators'; +import { getImagesFromToken, getLabelFromToken } from '~app-toolkit/helpers/presentation/image.present'; +import { ContractType } from '~position/contract.interface'; import { PositionFetcher } from '~position/position-fetcher.interface'; import { ContractPosition } from '~position/position.interface'; -import { ContractType } from '~position/contract.interface'; import { claimable, supplied } from '~position/position.utils'; import { Network } from '~types/network.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; import { SolaceContractFactory } from '../contracts'; import { SOLACE_DEFINITION } from '../solace.definition'; -import { findToken } from '../utils'; - const appId = SOLACE_DEFINITION.id; const groupId = SOLACE_DEFINITION.groups.bonds.id; const network = Network.POLYGON_MAINNET; -const SOLACE_ADDRESS = "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40"; +export const SOLACE_ADDRESS = '0x501ace9c35e60f03a2af4d484f49f9b1efde9f40'; const BOND_TELLERS = [ { - "name": "Solace DAI Bond", - "address": "0x501ace677634fd09a876e88126076933b686967a", - "deposit": "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063" + name: 'Solace DAI Bond', + address: '0x501ace677634fd09a876e88126076933b686967a', + deposit: '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063', }, { - "name": "Solace ETH Bond", - "address": "0x501ace367f1865dea154236d5a8016b80a49e8a9", - "deposit": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619" + name: 'Solace ETH Bond', + address: '0x501ace367f1865dea154236d5a8016b80a49e8a9', + deposit: '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', }, { - "name": "Solace USDC Bond", - "address": "0x501ace7e977e06a3cb55f9c28d5654c9d74d5ca9", - "deposit": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174" + name: 'Solace USDC Bond', + address: '0x501ace7e977e06a3cb55f9c28d5654c9d74d5ca9', + deposit: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', }, { - "name": "Solace WBTC Bond", - "address": "0x501acef0d0c73bd103337e6e9fd49d58c426dc27", - "deposit": "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6" + name: 'Solace WBTC Bond', + address: '0x501acef0d0c73bd103337e6e9fd49d58c426dc27', + deposit: '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6', }, { - "name": "Solace USDT Bond", - "address": "0x501ace5ceec693df03198755ee80d4ce0b5c55fe", - "deposit": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f" + name: 'Solace USDT Bond', + address: '0x501ace5ceec693df03198755ee80d4ce0b5c55fe', + deposit: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f', }, { - "name": "Solace FRAX Bond", - "address": "0x501acef4f8397413c33b13cb39670ad2f17bfe62", - "deposit": "0x45c32fa6df82ead1e2ef74d17b76547eddfaff89" + name: 'Solace FRAX Bond', + address: '0x501acef4f8397413c33b13cb39670ad2f17bfe62', + deposit: '0x45c32fa6df82ead1e2ef74d17b76547eddfaff89', }, { - "name": "Solace MATIC Bond", - "address": "0x501ace133452d4df83ca68c684454fcba608b9dd", - "deposit": "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270" - } + name: 'Solace MATIC Bond', + address: '0x501ace133452d4df83ca68c684454fcba608b9dd', + deposit: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', + }, ]; @Register.ContractPositionFetcher({ appId, groupId, network }) @@ -68,21 +66,32 @@ export class PolygonSolaceBondsContractPositionFetcher implements PositionFetche async getPositions() { const baseTokens = await this.appToolkit.getBaseTokenPrices(network); - const solace = baseTokens.find((t:WithMetaType) => t.address === SOLACE_ADDRESS); - const positions = await Promise.all(BOND_TELLERS.map(async teller => { - const tokens:WithMetaType[] = []; - const depositToken = await findToken(baseTokens, teller.deposit, this.solaceContractFactory, network); - if(!!depositToken) tokens.push(supplied(depositToken)); - if(!!solace) tokens.push(claimable(solace)); - return { - type: ContractType.POSITION, - appId, - groupId, - address: teller.address, - network, - tokens - }; - })); - return positions; + const solace = baseTokens.find(t => t.address === SOLACE_ADDRESS)!; + + const positions = await Promise.all( + BOND_TELLERS.map(async teller => { + const depositToken = baseTokens.find(v => v.address === teller.deposit)!; + if (!depositToken || !solace) return null; + const tokens = [supplied(depositToken), claimable(solace)]; + + const position: ContractPosition = { + type: ContractType.POSITION, + appId, + groupId, + address: teller.address, + network, + tokens, + dataProps: {}, + displayProps: { + label: `${getLabelFromToken(depositToken)} Bond`, + images: getImagesFromToken(depositToken), + }, + }; + + return position; + }), + ); + + return compact(positions); } } diff --git a/src/apps/solace/polygon/solace.policies.contract-position-fetcher.ts b/src/apps/solace/polygon/solace.policies.contract-position-fetcher.ts index 38145842f..b5ebbfdfe 100644 --- a/src/apps/solace/polygon/solace.policies.contract-position-fetcher.ts +++ b/src/apps/solace/polygon/solace.policies.contract-position-fetcher.ts @@ -2,13 +2,12 @@ import { Inject } from '@nestjs/common'; import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; import { Register } from '~app-toolkit/decorators'; +import { getTokenImg } from '~app-toolkit/helpers/presentation/image.present'; +import { ContractType } from '~position/contract.interface'; import { PositionFetcher } from '~position/position-fetcher.interface'; import { ContractPosition } from '~position/position.interface'; -import { ContractType } from '~position/contract.interface'; import { supplied } from '~position/position.utils'; import { Network } from '~types/network.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; import { SolaceContractFactory } from '../contracts'; import { SOLACE_DEFINITION } from '../solace.definition'; @@ -17,8 +16,9 @@ const appId = SOLACE_DEFINITION.id; const groupId = SOLACE_DEFINITION.groups.policies.id; const network = Network.POLYGON_MAINNET; -const FRAX_ADDRESS = "0x45c32fa6df82ead1e2ef74d17b76547eddfaff89"; -const SOLACE_COVER_PRODUCT_ADDRESS = "0x501acec83d440c00644ca5c48d059e1840852a64"; +const FRAX_ADDRESS = '0x45c32fa6df82ead1e2ef74d17b76547eddfaff89'; +const SOLACE_COVER_PRODUCT_ADDRESS = '0x501acec83d440c00644ca5c48d059e1840852a64'; +const SOLACE_ADDRESS = '0x501ace9c35e60f03a2af4d484f49f9b1efde9f40'; @Register.ContractPositionFetcher({ appId, groupId, network }) export class PolygonSolacePoliciesContractPositionFetcher implements PositionFetcher { @@ -29,17 +29,23 @@ export class PolygonSolacePoliciesContractPositionFetcher implements PositionFet async getPositions() { const baseTokens = await this.appToolkit.getBaseTokenPrices(network); - const frax = baseTokens.find((t:WithMetaType) => t.address === FRAX_ADDRESS); - const tokens = ((!!frax) - ? [supplied(frax)] - : []); - return [{ + const frax = baseTokens.find(t => t.address === FRAX_ADDRESS)!; + const tokens = [supplied(frax)]; + + const position: ContractPosition = { type: ContractType.POSITION, appId, groupId, address: SOLACE_COVER_PRODUCT_ADDRESS, network, - tokens - }]; + tokens, + dataProps: {}, + displayProps: { + label: `Solace Cover Policy`, // @TODO Might be nice to include cover amount! + images: [getTokenImg(SOLACE_ADDRESS, Network.POLYGON_MAINNET)], + }, + }; + + return [position]; } } diff --git a/src/apps/solace/polygon/solace.scp.token-fetcher.ts b/src/apps/solace/polygon/solace.scp.token-fetcher.ts deleted file mode 100644 index f160b85af..000000000 --- a/src/apps/solace/polygon/solace.scp.token-fetcher.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Inject } from '@nestjs/common'; - -import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; -import { Register } from '~app-toolkit/decorators'; -import { PositionFetcher } from '~position/position-fetcher.interface'; -import { AppTokenPosition } from '~position/position.interface'; -import { Network } from '~types/network.interface'; - -import { SolaceContractFactory } from '../contracts'; -import { SOLACE_DEFINITION } from '../solace.definition'; - -const appId = SOLACE_DEFINITION.id; -const groupId = SOLACE_DEFINITION.groups.scp.id; -const network = Network.POLYGON_MAINNET; - -@Register.TokenPositionFetcher({ appId, groupId, network }) -export class PolygonSolaceScpTokenFetcher implements PositionFetcher { - constructor( - @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, - @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, - ) {} - - async getPositions() { - // not deployed on polygon - return []; - } -} diff --git a/src/apps/solace/polygon/solace.tvl-fetcher.ts b/src/apps/solace/polygon/solace.tvl-fetcher.ts index 4e9c8068d..7b8201908 100644 --- a/src/apps/solace/polygon/solace.tvl-fetcher.ts +++ b/src/apps/solace/polygon/solace.tvl-fetcher.ts @@ -1,4 +1,5 @@ import { Inject } from '@nestjs/common'; +import { range } from 'lodash'; import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; import { Register } from '~app-toolkit/decorators'; @@ -8,61 +9,59 @@ import { Network } from '~types/network.interface'; import { SolaceContractFactory } from '../contracts'; import { SOLACE_DEFINITION } from '../solace.definition'; -import { bnToFloat, findToken, range } from '~apps/solace/utils'; - const appId = SOLACE_DEFINITION.id; const network = Network.POLYGON_MAINNET; // TODO: there is more to TVL than amount in the UWP // since its the bulk we call it sufficient for now -const UWP_ADDRESS = "0xd1108a800363c262774b990e9df75a4287d5c075"; -const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; +const UWP_ADDRESS = '0xd1108a800363c262774b990e9df75a4287d5c075'; +const ZERO_ADDRESS = '0x0000000000000000000000000000000000000000'; const TOKENS = [ { - "symbol": "SOLACE", - "address": "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40", - "decimals": 18 + symbol: 'SOLACE', + address: '0x501ace9c35e60f03a2af4d484f49f9b1efde9f40', + decimals: 18, }, { - "symbol": "FRAX", - "address": "0x45c32fa6df82ead1e2ef74d17b76547eddfaff89", - "decimals": 18 + symbol: 'FRAX', + address: '0x45c32fa6df82ead1e2ef74d17b76547eddfaff89', + decimals: 18, }, { - "symbol": "USDC", - "address": "0x2791bca1f2de4661ed88a30c99a7a9449aa84174", - "decimals": 6 + symbol: 'USDC', + address: '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', + decimals: 6, }, { - "symbol": "USDT", - "address": "0xc2132d05d31c914a87c6611c10748aeb04b58e8f", - "decimals": 6 + symbol: 'USDT', + address: '0xc2132d05d31c914a87c6611c10748aeb04b58e8f', + decimals: 6, }, { - "symbol": "DAI", - "address": "0x8f3cf7ad23cd3cadbd9735aff958023239c6a063", - "decimals": 18 + symbol: 'DAI', + address: '0x8f3cf7ad23cd3cadbd9735aff958023239c6a063', + decimals: 18, }, { - "symbol": "WETH", - "address": "0x7ceb23fd6bc0add59e62ac25578270cff1b9f619", - "decimals": 18 + symbol: 'WETH', + address: '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', + decimals: 18, }, { - "symbol": "WBTC", - "address": "0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6", - "decimals": 8 + symbol: 'WBTC', + address: '0x1bfd67037b42cf73acf2047067bd4f2c47d9bfd6', + decimals: 8, }, { - "symbol": "MATIC", - "address": "0x0000000000000000000000000000000000000000", - "decimals": 18 + symbol: 'MATIC', + address: '0x0000000000000000000000000000000000000000', + decimals: 18, }, { - "symbol": "WMATIC", - "address": "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270", - "decimals": 18 - } + symbol: 'WMATIC', + address: '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270', + decimals: 18, + }, // TODO: LP ]; @@ -70,30 +69,36 @@ const TOKENS = [ export class PolygonSolaceTvlFetcher implements TvlFetcher { constructor( @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, - @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory + @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, ) {} async getTvl() { const baseTokens = await this.appToolkit.getBaseTokenPrices(network); const multicall = this.appToolkit.getMulticall(network); const indices = range(0, TOKENS.length); - let provider: any = undefined; - const balances = await Promise.all(TOKENS.map(token => { - if(token.address === ZERO_ADDRESS) { - return provider.getBalance(UWP_ADDRESS).then(bnToFloat(token.decimals)); - } else { - const tokenContract = this.solaceContractFactory.erc20({ address: token.address, network }); - if(!provider) provider = tokenContract.provider; - const mct = multicall.wrap(tokenContract); - return mct.balanceOf(UWP_ADDRESS).then(bnToFloat(token.decimals)); - } - })); + + const balances = await Promise.all( + TOKENS.map(async token => { + if (token.address === ZERO_ADDRESS) { + const mcmc = multicall.wrap(multicall.contract); + return mcmc.getEthBalance(UWP_ADDRESS).then(v => Number(v) / 10 ** token.decimals); + } else { + const tokenContract = this.solaceContractFactory.erc20({ address: token.address, network }); + const mct = multicall.wrap(tokenContract); + return mct.balanceOf(UWP_ADDRESS).then(v => Number(v) / 10 ** token.decimals); + } + }), + ); + let usd = 0; - await Promise.all(indices.map(async (i:number) => { - const zapperToken = await findToken(baseTokens, TOKENS[i].address, this.solaceContractFactory, network); - if(!zapperToken) return; - usd += balances[i] * zapperToken.price; - })); + await Promise.all( + indices.map(async (i: number) => { + const token = baseTokens.find(v => v.address === TOKENS[i].address)!; + if (!token) return; + usd += balances[i] * token.price; + }), + ); + return usd; } } diff --git a/src/apps/solace/polygon/solace.xslocker.contract-position-fetcher.ts b/src/apps/solace/polygon/solace.xslocker.contract-position-fetcher.ts index 007819a7f..39c1dfc9f 100644 --- a/src/apps/solace/polygon/solace.xslocker.contract-position-fetcher.ts +++ b/src/apps/solace/polygon/solace.xslocker.contract-position-fetcher.ts @@ -2,44 +2,45 @@ import { Inject } from '@nestjs/common'; import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; import { Register } from '~app-toolkit/decorators'; +import { getImagesFromToken } from '~app-toolkit/helpers/presentation/image.present'; +import { ContractType } from '~position/contract.interface'; import { PositionFetcher } from '~position/position-fetcher.interface'; import { ContractPosition } from '~position/position.interface'; -import { ContractType } from '~position/contract.interface'; import { claimable, supplied } from '~position/position.utils'; import { Network } from '~types/network.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; -import { SolaceContractFactory } from '../contracts'; import { SOLACE_DEFINITION } from '../solace.definition'; const appId = SOLACE_DEFINITION.id; const groupId = SOLACE_DEFINITION.groups.xslocker.id; const network = Network.POLYGON_MAINNET; -const SOLACE_ADDRESS = "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40"; -const XSLOCKER_ADDRESS = "0x501ace47c5b0c2099c4464f681c3fa2ecd3146c1"; +const SOLACE_ADDRESS = '0x501ace9c35e60f03a2af4d484f49f9b1efde9f40'; +const XSLOCKER_ADDRESS = '0x501ace47c5b0c2099c4464f681c3fa2ecd3146c1'; @Register.ContractPositionFetcher({ appId, groupId, network }) export class PolygonSolaceXslockerContractPositionFetcher implements PositionFetcher { - constructor( - @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, - @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, - ) {} + constructor(@Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit) {} async getPositions() { const baseTokens = await this.appToolkit.getBaseTokenPrices(network); - const solace = baseTokens.find((t:WithMetaType) => t.address === SOLACE_ADDRESS); - const tokens = ((!!solace) - ? [supplied(solace), claimable(solace)] - : []); - return [{ + const solace = baseTokens.find(t => t.address === SOLACE_ADDRESS)!; + if (!solace) return []; + + const position: ContractPosition = { type: ContractType.POSITION, + address: XSLOCKER_ADDRESS, appId, groupId, - address: XSLOCKER_ADDRESS, network, - tokens - }]; + tokens: [supplied(solace), claimable(solace)], + dataProps: {}, + displayProps: { + label: `xsLOCK`, + images: getImagesFromToken(solace), + }, + }; + + return [position]; } } diff --git a/src/apps/solace/polygon/solace.xsolacev1.token-fetcher.ts b/src/apps/solace/polygon/solace.xsolacev1.token-fetcher.ts deleted file mode 100644 index 4d6dbe913..000000000 --- a/src/apps/solace/polygon/solace.xsolacev1.token-fetcher.ts +++ /dev/null @@ -1,27 +0,0 @@ -import { Inject } from '@nestjs/common'; - -import { IAppToolkit, APP_TOOLKIT } from '~app-toolkit/app-toolkit.interface'; -import { Register } from '~app-toolkit/decorators'; -import { PositionFetcher } from '~position/position-fetcher.interface'; -import { AppTokenPosition } from '~position/position.interface'; -import { Network } from '~types/network.interface'; - -import { SolaceContractFactory } from '../contracts'; -import { SOLACE_DEFINITION } from '../solace.definition'; - -const appId = SOLACE_DEFINITION.id; -const groupId = SOLACE_DEFINITION.groups.xsolacev1.id; -const network = Network.POLYGON_MAINNET; - -@Register.TokenPositionFetcher({ appId, groupId, network }) -export class PolygonSolaceXsolacev1TokenFetcher implements PositionFetcher { - constructor( - @Inject(APP_TOOLKIT) private readonly appToolkit: IAppToolkit, - @Inject(SolaceContractFactory) private readonly solaceContractFactory: SolaceContractFactory, - ) {} - - async getPositions() { - // not deployed on polygon - return []; - } -} diff --git a/src/apps/solace/solace.definition.ts b/src/apps/solace/solace.definition.ts index 9340ea8f1..0a39dfa91 100644 --- a/src/apps/solace/solace.definition.ts +++ b/src/apps/solace/solace.definition.ts @@ -9,15 +9,42 @@ export const SOLACE_DEFINITION = appDefinition({ description: 'Solace is an insurance protocol that is aiming to invent the future of DeFi Insurance. The protocol helps you to protect your funds against smart-contracts exploits across 180+ protocols with an intelligent single policy that automatically adjusts coverage to changes in your positions.', url: 'https://solace.fi', + groups: { - scp: { id: 'scp', type: GroupType.TOKEN, label: 'SCP'}, - xsolacev1: { id: 'xsolacev1', type: GroupType.TOKEN, label: 'xSOLACEv1'}, - bonds: { id: 'bonds', type: GroupType.POSITION, label: 'Bonds'}, - xslocker: { id: 'xslocker', type: GroupType.POSITION, label: 'xsLocker'}, - policies: { id: 'policies', type: GroupType.POSITION, label: 'Policies'}, + scp: { + id: 'scp', + type: GroupType.TOKEN, + label: 'SCP', + }, + + xsolacev1: { + id: 'xsolacev1', + type: GroupType.TOKEN, + label: 'xSOLACEv1', + }, + + bonds: { + id: 'bonds', + type: GroupType.POSITION, + label: 'Bonds', + }, + + xslocker: { + id: 'xslocker', + type: GroupType.POSITION, + label: 'xsLocker', + }, + + policies: { + id: 'policies', + type: GroupType.POSITION, + label: 'Policies', + }, }, + tags: [AppTag.INSURANCE], keywords: [], + links: { learn: '', github: 'https://github.com/solace-fi', @@ -26,10 +53,12 @@ export const SOLACE_DEFINITION = appDefinition({ discord: 'https://discord.com/invite/7v8qsyepfu/', medium: 'https://medium.com/solace-fi/', }, + supportedNetworks: { [Network.ETHEREUM_MAINNET]: [AppAction.VIEW], [Network.POLYGON_MAINNET]: [AppAction.VIEW], }, + primaryColor: '#fff', }); diff --git a/src/apps/solace/solace.module.ts b/src/apps/solace/solace.module.ts index 386ae0132..1268c4fc6 100644 --- a/src/apps/solace/solace.module.ts +++ b/src/apps/solace/solace.module.ts @@ -12,14 +12,12 @@ import { EthereumSolaceXsolacev1TokenFetcher } from './ethereum/solace.xsolacev1 import { PolygonSolaceBalanceFetcher } from './polygon/solace.balance-fetcher'; import { PolygonSolaceBondsContractPositionFetcher } from './polygon/solace.bonds.contract-position-fetcher'; import { PolygonSolacePoliciesContractPositionFetcher } from './polygon/solace.policies.contract-position-fetcher'; -import { PolygonSolaceScpTokenFetcher } from './polygon/solace.scp.token-fetcher'; import { PolygonSolaceTvlFetcher } from './polygon/solace.tvl-fetcher'; import { PolygonSolaceXslockerContractPositionFetcher } from './polygon/solace.xslocker.contract-position-fetcher'; -import { PolygonSolaceXsolacev1TokenFetcher } from './polygon/solace.xsolacev1.token-fetcher'; -import { SolaceAppDefinition } from './solace.definition'; +import SOLACE_DEFINITION, { SolaceAppDefinition } from './solace.definition'; @Register.AppModule({ - appId: 'solace', + appId: SOLACE_DEFINITION.id, providers: [ EthereumSolaceBalanceFetcher, EthereumSolaceBondsContractPositionFetcher, @@ -31,12 +29,10 @@ import { SolaceAppDefinition } from './solace.definition'; PolygonSolaceBalanceFetcher, PolygonSolaceBondsContractPositionFetcher, PolygonSolacePoliciesContractPositionFetcher, - PolygonSolaceScpTokenFetcher, PolygonSolaceTvlFetcher, PolygonSolaceXslockerContractPositionFetcher, - PolygonSolaceXsolacev1TokenFetcher, SolaceAppDefinition, SolaceContractFactory, ], }) -export class SolaceAppModule extends AbstractApp() {} +export class SolaceAppModule extends AbstractApp() {} diff --git a/src/apps/solace/utils.ts b/src/apps/solace/utils.ts deleted file mode 100644 index 3b02ec5a4..000000000 --- a/src/apps/solace/utils.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { Network } from '~types/network.interface'; -import { Token } from '~position/position.interface'; -import { WithMetaType } from '~position/display.interface'; - -import { SolaceContractFactory } from './contracts'; - -import { BigNumberish, ethers } from 'ethers'; -const formatUnits = ethers.utils.formatUnits; - -const SOLACE_ADDRESS = "0x501ace9c35e60f03a2af4d484f49f9b1efde9f40"; -const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000"; -// note: these are only on ethereum -const SCP_ADDRESS = "0x501acee83a6f269b77c167c6701843d454e2efa0"; -const SLP_ADDRESS = "0x9c051f8a6648a51ef324d30c235da74d060153ac"; -const USDC_ADDRESS = "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"; - -// similar to python's built in range() -// returns an array of numbers starting at start and stopping before stop -export function range(start: number, stop: number) { - const arr: number[] = []; - for(let i = start; i < stop; i++) arr.push(i); - return arr; -} - -// given a BigNumber and an amount of decimals -// returns the number as a float -// note: uses currying -export function bnToFloat(decimals: number = 0) { - function f(num: BigNumberish) { - return parseFloat(formatUnits(num, decimals)); - } - return f; -} - -// given a list of tokens, finds the desired token -// also useful for finding app specific tokens not in the base list -export async function findToken(baseTokens:WithMetaType[], tokenAddress:string, solaceContractFactory:SolaceContractFactory, network:Network) : Promise{ - // default case: token is in the list - const token = baseTokens.find((t:WithMetaType) => t.address === tokenAddress); - if(!!token) return token; - // app specific token 1: SCP - if(tokenAddress === SCP_ADDRESS) { - const scp = solaceContractFactory.scp({ address: SCP_ADDRESS, network }); - const pps = await scp.pricePerShare(); - const eth = baseTokens.find((t:WithMetaType) => t.address === ZERO_ADDRESS); - const ethPrice = eth?.price ?? 0.0; - const scpPrice = ethPrice * bnToFloat(18)(pps); - return { - "metaType": "supplied", - "type": "app-token", - "network": "ethereum", - "address": SCP_ADDRESS, - "decimals": 18, - "symbol": "SCP", - "price": scpPrice - } as any as Token; - } - // app specific token 2: SLP - else if(tokenAddress === SLP_ADDRESS) { - const solace = baseTokens.find((t:WithMetaType) => t.address === SOLACE_ADDRESS); - const usdc = baseTokens.find((t:WithMetaType) => t.address === USDC_ADDRESS); - const solacePrice = solace?.price ?? 0.0; - const usdcPrice = usdc?.price ?? 0.0; - const solaceContract = solaceContractFactory.erc20({ address: SOLACE_ADDRESS, network }); - const usdcContract = solaceContractFactory.erc20({ address: USDC_ADDRESS, network }); - const slpContract = solaceContractFactory.erc20({ address: SLP_ADDRESS, network }); - const [s, u, ts] = await Promise.all([ - solaceContract.balanceOf(SLP_ADDRESS).then(bnToFloat(18)), - usdcContract.balanceOf(SLP_ADDRESS).then(bnToFloat(6)), - slpContract.totalSupply().then(bnToFloat(18)), - ]) - const slpPrice = (s*solacePrice + u*usdcPrice) / ts; - return { - "metaType": "supplied", - "type": "app-token", - "network": "ethereum", - "address": SLP_ADDRESS, - "decimals": 18, - "symbol": "SLP", - "price": slpPrice - } - } - // fall through case: unknown - return undefined; -} From 0e289bf2093f86795881f5b65e921e820a6ad815 Mon Sep 17 00:00:00 2001 From: Karan Shahani Date: Fri, 20 May 2022 09:42:35 -0400 Subject: [PATCH 08/15] fix(solace): Remove dupe ERC20 --- src/apps/solace/contracts/abis/erc-20.json | 126 ------- src/apps/solace/contracts/ethers/Erc20.ts | 336 ------------------ .../ethers/factories/Erc20__factory.ts | 306 ---------------- .../contracts/ethers/factories/index.ts | 1 - src/apps/solace/contracts/ethers/index.ts | 2 - src/apps/solace/contracts/index.ts | 5 - 6 files changed, 776 deletions(-) delete mode 100644 src/apps/solace/contracts/abis/erc-20.json delete mode 100644 src/apps/solace/contracts/ethers/Erc20.ts delete mode 100644 src/apps/solace/contracts/ethers/factories/Erc20__factory.ts diff --git a/src/apps/solace/contracts/abis/erc-20.json b/src/apps/solace/contracts/abis/erc-20.json deleted file mode 100644 index b22dc6c2b..000000000 --- a/src/apps/solace/contracts/abis/erc-20.json +++ /dev/null @@ -1,126 +0,0 @@ -[ - { - "inputs": [ - { "internalType": "string", "name": "name_", "type": "string" }, - { "internalType": "string", "name": "symbol_", "type": "string" } - ], - "stateMutability": "nonpayable", - "type": "constructor" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "address", "name": "owner", "type": "address" }, - { "indexed": true, "internalType": "address", "name": "spender", "type": "address" }, - { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } - ], - "name": "Approval", - "type": "event" - }, - { - "anonymous": false, - "inputs": [ - { "indexed": true, "internalType": "address", "name": "from", "type": "address" }, - { "indexed": true, "internalType": "address", "name": "to", "type": "address" }, - { "indexed": false, "internalType": "uint256", "name": "value", "type": "uint256" } - ], - "name": "Transfer", - "type": "event" - }, - { - "inputs": [ - { "internalType": "address", "name": "owner", "type": "address" }, - { "internalType": "address", "name": "spender", "type": "address" } - ], - "name": "allowance", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "approve", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [{ "internalType": "address", "name": "account", "type": "address" }], - "name": "balanceOf", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "decimals", - "outputs": [{ "internalType": "uint8", "name": "", "type": "uint8" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "subtractedValue", "type": "uint256" } - ], - "name": "decreaseAllowance", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "spender", "type": "address" }, - { "internalType": "uint256", "name": "addedValue", "type": "uint256" } - ], - "name": "increaseAllowance", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [], - "name": "name", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "symbol", - "outputs": [{ "internalType": "string", "name": "", "type": "string" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [], - "name": "totalSupply", - "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }], - "stateMutability": "view", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "recipient", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "transfer", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - }, - { - "inputs": [ - { "internalType": "address", "name": "sender", "type": "address" }, - { "internalType": "address", "name": "recipient", "type": "address" }, - { "internalType": "uint256", "name": "amount", "type": "uint256" } - ], - "name": "transferFrom", - "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }], - "stateMutability": "nonpayable", - "type": "function" - } -] diff --git a/src/apps/solace/contracts/ethers/Erc20.ts b/src/apps/solace/contracts/ethers/Erc20.ts deleted file mode 100644 index f11232998..000000000 --- a/src/apps/solace/contracts/ethers/Erc20.ts +++ /dev/null @@ -1,336 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ -import type { - BaseContract, - BigNumber, - BigNumberish, - BytesLike, - CallOverrides, - ContractTransaction, - Overrides, - PopulatedTransaction, - Signer, - utils, -} from 'ethers'; -import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi'; -import type { Listener, Provider } from '@ethersproject/providers'; -import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent } from './common'; - -export interface Erc20Interface extends utils.Interface { - functions: { - 'allowance(address,address)': FunctionFragment; - 'approve(address,uint256)': FunctionFragment; - 'balanceOf(address)': FunctionFragment; - 'decimals()': FunctionFragment; - 'decreaseAllowance(address,uint256)': FunctionFragment; - 'increaseAllowance(address,uint256)': FunctionFragment; - 'name()': FunctionFragment; - 'symbol()': FunctionFragment; - 'totalSupply()': FunctionFragment; - 'transfer(address,uint256)': FunctionFragment; - 'transferFrom(address,address,uint256)': FunctionFragment; - }; - - getFunction( - nameOrSignatureOrTopic: - | 'allowance' - | 'approve' - | 'balanceOf' - | 'decimals' - | 'decreaseAllowance' - | 'increaseAllowance' - | 'name' - | 'symbol' - | 'totalSupply' - | 'transfer' - | 'transferFrom', - ): FunctionFragment; - - encodeFunctionData(functionFragment: 'allowance', values: [string, string]): string; - encodeFunctionData(functionFragment: 'approve', values: [string, BigNumberish]): string; - encodeFunctionData(functionFragment: 'balanceOf', values: [string]): string; - encodeFunctionData(functionFragment: 'decimals', values?: undefined): string; - encodeFunctionData(functionFragment: 'decreaseAllowance', values: [string, BigNumberish]): string; - encodeFunctionData(functionFragment: 'increaseAllowance', values: [string, BigNumberish]): string; - encodeFunctionData(functionFragment: 'name', values?: undefined): string; - encodeFunctionData(functionFragment: 'symbol', values?: undefined): string; - encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string; - encodeFunctionData(functionFragment: 'transfer', values: [string, BigNumberish]): string; - encodeFunctionData(functionFragment: 'transferFrom', values: [string, string, BigNumberish]): string; - - decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result; - decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result; - decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result; - decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result; - decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result; - decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result; - decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result; - decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result; - decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result; - decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result; - decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result; - - events: { - 'Approval(address,address,uint256)': EventFragment; - 'Transfer(address,address,uint256)': EventFragment; - }; - - getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment; - getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment; -} - -export interface ApprovalEventObject { - owner: string; - spender: string; - value: BigNumber; -} -export type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>; - -export type ApprovalEventFilter = TypedEventFilter; - -export interface TransferEventObject { - from: string; - to: string; - value: BigNumber; -} -export type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>; - -export type TransferEventFilter = TypedEventFilter; - -export interface Erc20 extends BaseContract { - connect(signerOrProvider: Signer | Provider | string): this; - attach(addressOrName: string): this; - deployed(): Promise; - - interface: Erc20Interface; - - queryFilter( - event: TypedEventFilter, - fromBlockOrBlockhash?: string | number | undefined, - toBlock?: string | number | undefined, - ): Promise>; - - listeners(eventFilter?: TypedEventFilter): Array>; - listeners(eventName?: string): Array; - removeAllListeners(eventFilter: TypedEventFilter): this; - removeAllListeners(eventName?: string): this; - off: OnEvent; - on: OnEvent; - once: OnEvent; - removeListener: OnEvent; - - functions: { - allowance(owner: string, spender: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - approve( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - balanceOf(account: string, overrides?: CallOverrides): Promise<[BigNumber]>; - - decimals(overrides?: CallOverrides): Promise<[number]>; - - decreaseAllowance( - spender: string, - subtractedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - increaseAllowance( - spender: string, - addedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - name(overrides?: CallOverrides): Promise<[string]>; - - symbol(overrides?: CallOverrides): Promise<[string]>; - - totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>; - - transfer( - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - transferFrom( - sender: string, - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - }; - - allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; - - approve( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - balanceOf(account: string, overrides?: CallOverrides): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: string, - subtractedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - increaseAllowance( - spender: string, - addedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - transferFrom( - sender: string, - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - callStatic: { - allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; - - approve(spender: string, amount: BigNumberish, overrides?: CallOverrides): Promise; - - balanceOf(account: string, overrides?: CallOverrides): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance(spender: string, subtractedValue: BigNumberish, overrides?: CallOverrides): Promise; - - increaseAllowance(spender: string, addedValue: BigNumberish, overrides?: CallOverrides): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer(recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; - - transferFrom(sender: string, recipient: string, amount: BigNumberish, overrides?: CallOverrides): Promise; - }; - - filters: { - 'Approval(address,address,uint256)'( - owner?: string | null, - spender?: string | null, - value?: null, - ): ApprovalEventFilter; - Approval(owner?: string | null, spender?: string | null, value?: null): ApprovalEventFilter; - - 'Transfer(address,address,uint256)'(from?: string | null, to?: string | null, value?: null): TransferEventFilter; - Transfer(from?: string | null, to?: string | null, value?: null): TransferEventFilter; - }; - - estimateGas: { - allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; - - approve( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - balanceOf(account: string, overrides?: CallOverrides): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: string, - subtractedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - increaseAllowance( - spender: string, - addedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - transferFrom( - sender: string, - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - }; - - populateTransaction: { - allowance(owner: string, spender: string, overrides?: CallOverrides): Promise; - - approve( - spender: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - balanceOf(account: string, overrides?: CallOverrides): Promise; - - decimals(overrides?: CallOverrides): Promise; - - decreaseAllowance( - spender: string, - subtractedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - increaseAllowance( - spender: string, - addedValue: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - name(overrides?: CallOverrides): Promise; - - symbol(overrides?: CallOverrides): Promise; - - totalSupply(overrides?: CallOverrides): Promise; - - transfer( - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - - transferFrom( - sender: string, - recipient: string, - amount: BigNumberish, - overrides?: Overrides & { from?: string | Promise }, - ): Promise; - }; -} diff --git a/src/apps/solace/contracts/ethers/factories/Erc20__factory.ts b/src/apps/solace/contracts/ethers/factories/Erc20__factory.ts deleted file mode 100644 index f35463906..000000000 --- a/src/apps/solace/contracts/ethers/factories/Erc20__factory.ts +++ /dev/null @@ -1,306 +0,0 @@ -/* Autogenerated file. Do not edit manually. */ -/* tslint:disable */ -/* eslint-disable */ - -import { Contract, Signer, utils } from 'ethers'; -import type { Provider } from '@ethersproject/providers'; -import type { Erc20, Erc20Interface } from '../Erc20'; - -const _abi = [ - { - inputs: [ - { - internalType: 'string', - name: 'name_', - type: 'string', - }, - { - internalType: 'string', - name: 'symbol_', - type: 'string', - }, - ], - stateMutability: 'nonpayable', - type: 'constructor', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'spender', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'value', - type: 'uint256', - }, - ], - name: 'Approval', - type: 'event', - }, - { - anonymous: false, - inputs: [ - { - indexed: true, - internalType: 'address', - name: 'from', - type: 'address', - }, - { - indexed: true, - internalType: 'address', - name: 'to', - type: 'address', - }, - { - indexed: false, - internalType: 'uint256', - name: 'value', - type: 'uint256', - }, - ], - name: 'Transfer', - type: 'event', - }, - { - inputs: [ - { - internalType: 'address', - name: 'owner', - type: 'address', - }, - { - internalType: 'address', - name: 'spender', - type: 'address', - }, - ], - name: 'allowance', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'address', - name: 'spender', - type: 'address', - }, - { - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - ], - name: 'approve', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { - internalType: 'address', - name: 'account', - type: 'address', - }, - ], - name: 'balanceOf', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'decimals', - outputs: [ - { - internalType: 'uint8', - name: '', - type: 'uint8', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'address', - name: 'spender', - type: 'address', - }, - { - internalType: 'uint256', - name: 'subtractedValue', - type: 'uint256', - }, - ], - name: 'decreaseAllowance', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { - internalType: 'address', - name: 'spender', - type: 'address', - }, - { - internalType: 'uint256', - name: 'addedValue', - type: 'uint256', - }, - ], - name: 'increaseAllowance', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [], - name: 'name', - outputs: [ - { - internalType: 'string', - name: '', - type: 'string', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'symbol', - outputs: [ - { - internalType: 'string', - name: '', - type: 'string', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [], - name: 'totalSupply', - outputs: [ - { - internalType: 'uint256', - name: '', - type: 'uint256', - }, - ], - stateMutability: 'view', - type: 'function', - }, - { - inputs: [ - { - internalType: 'address', - name: 'recipient', - type: 'address', - }, - { - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - ], - name: 'transfer', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, - { - inputs: [ - { - internalType: 'address', - name: 'sender', - type: 'address', - }, - { - internalType: 'address', - name: 'recipient', - type: 'address', - }, - { - internalType: 'uint256', - name: 'amount', - type: 'uint256', - }, - ], - name: 'transferFrom', - outputs: [ - { - internalType: 'bool', - name: '', - type: 'bool', - }, - ], - stateMutability: 'nonpayable', - type: 'function', - }, -]; - -export class Erc20__factory { - static readonly abi = _abi; - static createInterface(): Erc20Interface { - return new utils.Interface(_abi) as Erc20Interface; - } - static connect(address: string, signerOrProvider: Signer | Provider): Erc20 { - return new Contract(address, _abi, signerOrProvider) as Erc20; - } -} diff --git a/src/apps/solace/contracts/ethers/factories/index.ts b/src/apps/solace/contracts/ethers/factories/index.ts index e947aac9a..33291ff47 100644 --- a/src/apps/solace/contracts/ethers/factories/index.ts +++ b/src/apps/solace/contracts/ethers/factories/index.ts @@ -4,7 +4,6 @@ export { BondTellerErc20__factory } from './BondTellerErc20__factory'; export { BondTellerEth__factory } from './BondTellerEth__factory'; export { BondTellerMatic__factory } from './BondTellerMatic__factory'; -export { Erc20__factory } from './Erc20__factory'; export { Scp__factory } from './Scp__factory'; export { Solace__factory } from './Solace__factory'; export { SolaceCoverProduct__factory } from './SolaceCoverProduct__factory'; diff --git a/src/apps/solace/contracts/ethers/index.ts b/src/apps/solace/contracts/ethers/index.ts index aff5791ac..81022add5 100644 --- a/src/apps/solace/contracts/ethers/index.ts +++ b/src/apps/solace/contracts/ethers/index.ts @@ -4,7 +4,6 @@ export type { BondTellerErc20 } from './BondTellerErc20'; export type { BondTellerEth } from './BondTellerEth'; export type { BondTellerMatic } from './BondTellerMatic'; -export type { Erc20 } from './Erc20'; export type { Scp } from './Scp'; export type { Solace } from './Solace'; export type { SolaceCoverProduct } from './SolaceCoverProduct'; @@ -16,7 +15,6 @@ export * as factories from './factories'; export { BondTellerErc20__factory } from './factories/BondTellerErc20__factory'; export { BondTellerEth__factory } from './factories/BondTellerEth__factory'; export { BondTellerMatic__factory } from './factories/BondTellerMatic__factory'; -export { Erc20__factory } from './factories/Erc20__factory'; export { Scp__factory } from './factories/Scp__factory'; export { SolaceCoverProductV2__factory } from './factories/SolaceCoverProductV2__factory'; export { SolaceCoverProduct__factory } from './factories/SolaceCoverProduct__factory'; diff --git a/src/apps/solace/contracts/index.ts b/src/apps/solace/contracts/index.ts index d2c74d7bb..5f0f38e14 100644 --- a/src/apps/solace/contracts/index.ts +++ b/src/apps/solace/contracts/index.ts @@ -7,7 +7,6 @@ import { Network } from '~types/network.interface'; import { BondTellerErc20__factory } from './ethers'; import { BondTellerEth__factory } from './ethers'; import { BondTellerMatic__factory } from './ethers'; -import { Erc20__factory } from './ethers'; import { Scp__factory } from './ethers'; import { Solace__factory } from './ethers'; import { SolaceCoverProduct__factory } from './ethers'; @@ -34,9 +33,6 @@ export class SolaceContractFactory extends ContractFactory { bondTellerMatic({ address, network }: ContractOpts) { return BondTellerMatic__factory.connect(address, this.appToolkit.getNetworkProvider(network)); } - erc20({ address, network }: ContractOpts) { - return Erc20__factory.connect(address, this.appToolkit.getNetworkProvider(network)); - } scp({ address, network }: ContractOpts) { return Scp__factory.connect(address, this.appToolkit.getNetworkProvider(network)); } @@ -63,7 +59,6 @@ export class SolaceContractFactory extends ContractFactory { export type { BondTellerErc20 } from './ethers'; export type { BondTellerEth } from './ethers'; export type { BondTellerMatic } from './ethers'; -export type { Erc20 } from './ethers'; export type { Scp } from './ethers'; export type { Solace } from './ethers'; export type { SolaceCoverProduct } from './ethers'; From 251bfb4c84e8d219d364c03be892f42c316a5473 Mon Sep 17 00:00:00 2001 From: zapper-bot <92882759+zapper-bot@users.noreply.github.com> Date: Fri, 20 May 2022 15:45:44 +0200 Subject: [PATCH 09/15] chore(main): release 0.33.0 (#465) --- CHANGELOG.md | 22 ++++++++++++++++++++++ package.json | 2 +- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 609683d1b..ce42a3564 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,28 @@ [1]: https://www.npmjs.com/package/@zapper-fi/studio?activeTab=versions +## [0.33.0](https://github.com/Zapper-fi/studio/compare/v0.32.0...v0.33.0) (2022-05-20) + + +### Features + +* **across:** Add across protocol on Ethereum mainnet ([#395](https://github.com/Zapper-fi/studio/issues/395)) ([1b55ec8](https://github.com/Zapper-fi/studio/commit/1b55ec8e15e5737bb83a7742e1a3a676fe5ef11d)) +* **ease:** Add support for Ease's RCAs on mainnet ([#469](https://github.com/Zapper-fi/studio/issues/469)) ([9f4325f](https://github.com/Zapper-fi/studio/commit/9f4325fc97651dab4468d151a3cb8ce8c54639a0)) +* porting b-protocol and compound to studio ([#449](https://github.com/Zapper-fi/studio/issues/449)) ([6d9d157](https://github.com/Zapper-fi/studio/commit/6d9d1578174b8ee15559399354a3902d7cc3e7d3)) +* **solace:** Integrate solace finance ([#457](https://github.com/Zapper-fi/studio/issues/457)) ([860de45](https://github.com/Zapper-fi/studio/commit/860de457bb4f75e87c1fb546251902df0f26f69c)) +* **uniswap-v2:** Derive unknown tokens prices ([#466](https://github.com/Zapper-fi/studio/issues/466)) ([272090d](https://github.com/Zapper-fi/studio/commit/272090df4895a0134f7a09e50551cd1ad0bf3d7f)) + + +### Bug Fixes + +* **across:** Fix Across balance fetcher and token fetcher ([#470](https://github.com/Zapper-fi/studio/issues/470)) ([6d2cd19](https://github.com/Zapper-fi/studio/commit/6d2cd191d5e7467769447f2d61082cab7cc7cea6)) +* **across:** Satisfy lint ([470e39f](https://github.com/Zapper-fi/studio/commit/470e39f67d2ee759729c13ff50a3b4f5a03bf0cd)) +* **global:** Revert unexpected change ([6defafe](https://github.com/Zapper-fi/studio/commit/6defafec827c2c26df587c8ea79fdb502e9dffd5)) +* **qi-dao:** Remove duplicate Yield ([#467](https://github.com/Zapper-fi/studio/issues/467)) ([84ccf18](https://github.com/Zapper-fi/studio/commit/84ccf183548390d6557810b7e5d908048728a2cb)) +* **solace:** Adjust Solace implementation ([#472](https://github.com/Zapper-fi/studio/issues/472)) ([cdd243d](https://github.com/Zapper-fi/studio/commit/cdd243d621d872b3bf3b17245d66b31e2a130270)) +* **solace:** Remove dupe ERC20 ([4308d60](https://github.com/Zapper-fi/studio/commit/4308d600453d4962597042d7dd06fb5fe10ee165)) +* **uniswap-v2:** Lint error ([13bd641](https://github.com/Zapper-fi/studio/commit/13bd641ce57695b1e3f76f503c7268db245da6b3)) + ## [0.32.0](https://github.com/Zapper-fi/studio/compare/v0.31.0...v0.32.0) (2022-05-19) diff --git a/package.json b/package.json index 4f002296c..6ac2b74ca 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@zapper-fi/studio", - "version": "0.32.0", + "version": "0.33.0", "description": "Community build apps for Zapper.fi", "license": "MIT", "main": "./index.js", From 12f76fc17eea4f4b139038db0e7f295e9f6abb49 Mon Sep 17 00:00:00 2001 From: dominikpre Date: Fri, 20 May 2022 17:30:54 +0200 Subject: [PATCH 10/15] feat(ease) add ease logo --- src/apps/ease/assets/logo.png | Bin 0 -> 39058 bytes .../ease/ethereum/ease.rca.token-fetcher.ts | 2 ++ 2 files changed, 2 insertions(+) create mode 100644 src/apps/ease/assets/logo.png diff --git a/src/apps/ease/assets/logo.png b/src/apps/ease/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..79b6257a9a558cd877b2d2320dd066b32fdb174c GIT binary patch literal 39058 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 -Hd3UU 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 Number(v) / 10 ** underlyingToken.decimals), resolvePricePerShare: () => 1, resolveApy: async ({ vaultAddress }) => (await (rcaAddressToDetails[vaultAddress]?.token['apy'] ?? 0)) / 100, + resolveImages: () => [getAppImg(appId)], }); } } From 1229f1640d6a85516f62f607ea6e2a0f4f2cf84d Mon Sep 17 00:00:00 2001 From: dominikpre Date: Fri, 20 May 2022 17:35:05 +0200 Subject: [PATCH 11/15] refactor(ease) rename and new description --- src/apps/ease/ease.definition.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/apps/ease/ease.definition.ts b/src/apps/ease/ease.definition.ts index 0fc06ad10..84a03a2a6 100644 --- a/src/apps/ease/ease.definition.ts +++ b/src/apps/ease/ease.definition.ts @@ -5,9 +5,9 @@ import { Network } from '~types/network.interface'; export const EASE_DEFINITION = appDefinition({ id: 'ease', - name: 'Ease DeFi Cover', + name: 'Ease.org DeFi Cover', description: - 'Ease is a decentralized insurance protocol that enables users to insure their yield, lending or LP tokens trustlessly and without a premium', + 'Ease is a decentralized coverage protocol that enables users to protect their DeFi tokens without a premium while earning compounding yield.', url: 'https://ease.org/', groups: { From 7819715ad5391e955cddf21d49d1acd745cbeb46 Mon Sep 17 00:00:00 2001 From: Karan Shahani Date: Fri, 20 May 2022 11:26:40 -0400 Subject: [PATCH 12/15] fix(solace): Add metatype to bond tokens --- .../solace/ethereum/solace.bonds.contract-position-fetcher.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/apps/solace/ethereum/solace.bonds.contract-position-fetcher.ts b/src/apps/solace/ethereum/solace.bonds.contract-position-fetcher.ts index 5a7c0a084..e4bc3d356 100644 --- a/src/apps/solace/ethereum/solace.bonds.contract-position-fetcher.ts +++ b/src/apps/solace/ethereum/solace.bonds.contract-position-fetcher.ts @@ -7,6 +7,7 @@ import { getImagesFromToken, getLabelFromToken } from '~app-toolkit/helpers/pres import { ContractType } from '~position/contract.interface'; import { PositionFetcher } from '~position/position-fetcher.interface'; import { ContractPosition } from '~position/position.interface'; +import { claimable, supplied } from '~position/position.utils'; import { Network } from '~types/network.interface'; import { SOLACE_DEFINITION } from '../solace.definition'; @@ -74,7 +75,7 @@ export class EthereumSolaceBondsContractPositionFetcher implements PositionFetch BOND_TELLERS.map(async teller => { const depositToken = allTokens.find(v => v.address === teller.deposit); if (!depositToken || !solaceToken) return null; - const tokens = [depositToken, solaceToken]; + const tokens = [supplied(depositToken), claimable(solaceToken)]; const position: ContractPosition = { type: ContractType.POSITION, From 51eda0ba4ce63c89e7324e6f30065c010e33b429 Mon Sep 17 00:00:00 2001 From: zapper-bot <92882759+zapper-bot@users.noreply.github.com> Date: Fri, 20 May 2022 17:27:32 +0200 Subject: [PATCH 13/15] chore(main): release 0.33.1 (#474) --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce42a3564..d04edb05f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@zapper-fi/studio?activeTab=versions +### [0.33.1](https://github.com/Zapper-fi/studio/compare/v0.33.0...v0.33.1) (2022-05-20) + + +### Bug Fixes + +* **solace:** Add metatype to bond tokens ([df2ef9b](https://github.com/Zapper-fi/studio/commit/df2ef9b2cb9f38aa186897bacfe4337520432b7c)) + ## [0.33.0](https://github.com/Zapper-fi/studio/compare/v0.32.0...v0.33.0) (2022-05-20) diff --git a/package.json b/package.json index 6ac2b74ca..836ec7e8f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@zapper-fi/studio", - "version": "0.33.0", + "version": "0.33.1", "description": "Community build apps for Zapper.fi", "license": "MIT", "main": "./index.js", From 58f11b017df832a209fee0fc4bc2043f1ecb0d48 Mon Sep 17 00:00:00 2001 From: dominikpre Date: Fri, 20 May 2022 18:27:04 +0200 Subject: [PATCH 14/15] fix(ease): fix apy in stats about vault --- src/apps/ease/ethereum/ease.rca.token-fetcher.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/apps/ease/ethereum/ease.rca.token-fetcher.ts b/src/apps/ease/ethereum/ease.rca.token-fetcher.ts index 3c9ffdc52..9925e8a62 100644 --- a/src/apps/ease/ethereum/ease.rca.token-fetcher.ts +++ b/src/apps/ease/ethereum/ease.rca.token-fetcher.ts @@ -61,7 +61,7 @@ export class EthereumEaseRcaTokenFetcher implements PositionFetcher Number(v) / 10 ** underlyingToken.decimals), resolvePricePerShare: () => 1, - resolveApy: async ({ vaultAddress }) => (await (rcaAddressToDetails[vaultAddress]?.token['apy'] ?? 0)) / 100, + resolveApy: async ({ vaultAddress }) => (await (rcaAddressToDetails[vaultAddress]?.token['apy'] ?? 0)), resolveImages: () => [getAppImg(appId)], }); } From 56cec5bd79729cbb8ca2fe140e4518eb5a1e29e7 Mon Sep 17 00:00:00 2001 From: dominikpre Date: Fri, 20 May 2022 18:49:23 +0200 Subject: [PATCH 15/15] refactor(ease): update changelog and version number --- CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d04edb05f..4bec69f0b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,13 @@ [1]: https://www.npmjs.com/package/@zapper-fi/studio?activeTab=versions +## [0.34.0](https://github.com/Zapper-fi/studio/compare/v0.33.1...v0.34.0) (2022-05-20) + + +### Features + +* **ease:** Added ease image and change definition+name ([#476](https://github.com/Zapper-fi/studio/issues/476)) ([12b500f](https://github.com/Zapper-fi/studio/commit/12b500f11796c9d02b82bbb8a5f9231b0cf570c4)) + ### [0.33.1](https://github.com/Zapper-fi/studio/compare/v0.33.0...v0.33.1) (2022-05-20) diff --git a/package.json b/package.json index 836ec7e8f..cc0a62e59 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@zapper-fi/studio", - "version": "0.33.1", + "version": "0.34.0", "description": "Community build apps for Zapper.fi", "license": "MIT", "main": "./index.js",