diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml new file mode 100644 index 00000000..680fba0c --- /dev/null +++ b/.github/actions/setup/action.yml @@ -0,0 +1,19 @@ +name: Setup + +runs: + using: composite + steps: + - uses: actions/setup-node@v3 + with: + node-version: 14.x + - uses: actions/cache@v3 + id: cache + with: + path: '**/node_modules' + key: npm-v3-${{ hashFiles('**/package-lock.json') }} + - name: Install dependencies + run: npm ci + shell: bash + if: steps.cache.outputs.cache-hit != 'true' + env: + SKIP_COMPILE: true diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml new file mode 100644 index 00000000..4b54ea6e --- /dev/null +++ b/.github/workflows/docs.yml @@ -0,0 +1,19 @@ +name: Build Docs + +on: + push: + branches: [release-v*] + +permissions: + contents: write + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Set up environment + uses: ./.github/actions/setup + - run: bash scripts/git-user-config.sh + - run: node scripts/update-docs-branch.js + - run: git push --all origin diff --git a/.gitignore b/.gitignore index 354cbe22..727804ad 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,7 @@ tmp/ .vscode/launch.json etherisc*.tgz + +#hardhat +/cache +/artifacts diff --git a/contracts/flows/README.adoc b/contracts/flows/README.adoc new file mode 100644 index 00000000..20c8056f --- /dev/null +++ b/contracts/flows/README.adoc @@ -0,0 +1,8 @@ += Flows + +[.readme-notice] +NOTE: This document is better viewed at https://docs.etherisc.com/contracts/api/flows + +== Contracts + +{{PolicyDefaultFlow}} \ No newline at end of file diff --git a/contracts/modules/README.adoc b/contracts/modules/README.adoc new file mode 100644 index 00000000..5bc9cc2a --- /dev/null +++ b/contracts/modules/README.adoc @@ -0,0 +1,25 @@ += Modules + +[.readme-notice] +NOTE: This document is better viewed at https://docs.etherisc.com/contracts/api/modules + +== Contracts + +{{AccessController}} + +{{BundleController}} + +{{ComponentController}} + +{{LicenseController}} + +{{PolicyController}} + +{{PoolController}} + +{{QueryModule}} + +{{RegistryController}} + +{{TreasuryModule}} + diff --git a/contracts/services/README.adoc b/contracts/services/README.adoc new file mode 100644 index 00000000..3cbee757 --- /dev/null +++ b/contracts/services/README.adoc @@ -0,0 +1,18 @@ += Services + +[.readme-notice] +NOTE: This document is better viewed at https://docs.etherisc.com/contracts/api/services + +== Contracts + +{{ComponentOwnerService}} + +{{InstanceOperatorService}} + +{{InstanceService}} + +{{OracleService}} + +{{ProductService}} + +{{RiskpoolService}} diff --git a/contracts/shared/README.adoc b/contracts/shared/README.adoc new file mode 100644 index 00000000..edbed26c --- /dev/null +++ b/contracts/shared/README.adoc @@ -0,0 +1,14 @@ += Shared + +[.readme-notice] +NOTE: This document is better viewed at https://docs.etherisc.com/contracts/api/shared + +== Contracts + +{{CoreController}} + +{{CoreProxy}} + +{{TransferHelper}} + +{{WithRegistry}} diff --git a/contracts/test/README.adoc b/contracts/test/README.adoc new file mode 100644 index 00000000..d48cc873 --- /dev/null +++ b/contracts/test/README.adoc @@ -0,0 +1,24 @@ += Test + +[.readme-notice] +NOTE: This document is better viewed at https://docs.etherisc.com/contracts/api/test + +== Contracts + +{{TestCoin}} + +{{TestCoinAlternativeImplementation}} + +{{TestCompromisedProduct}} + +{{TestOracle}} + +{{TestProduct}} + +{{TestRegistryCompromisedController}} + +{{TestRegistryControllerUpdated}} + +{{TestRiskpool}} + +{{TestTransferFrom}} \ No newline at end of file diff --git a/contracts/tokens/README.adoc b/contracts/tokens/README.adoc new file mode 100644 index 00000000..16591ee8 --- /dev/null +++ b/contracts/tokens/README.adoc @@ -0,0 +1,10 @@ += Tokens + +[.readme-notice] +NOTE: This document is better viewed at https://docs.etherisc.com/contracts/api/tokens + +== Contracts + +{{BundleToken}} + +{{RiskpoolToken}} \ No newline at end of file diff --git a/docs/antora.yml b/docs/antora.yml new file mode 100644 index 00000000..3c6dbe13 --- /dev/null +++ b/docs/antora.yml @@ -0,0 +1,6 @@ +name: contracts +title: Contracts +version: 2.x +nav: + - modules/ROOT/nav.adoc + - modules/api/nav.adoc diff --git a/docs/config.js b/docs/config.js new file mode 100644 index 00000000..fbea3e2d --- /dev/null +++ b/docs/config.js @@ -0,0 +1,22 @@ +const path = require('path'); +const fs = require('fs'); + +/** @type import('solidity-docgen/dist/config').UserConfig */ +module.exports = { + outputDir: 'docs/modules/api/pages', + templates: 'docs/templates', + exclude: ['mocks'], + pageExtension: '.adoc', + pages: (_, file, config) => { + // For each contract file, find the closest README.adoc and return its location as the output page path. + const sourcesDir = path.resolve(config.root, config.sourcesDir); + let dir = path.resolve(config.root, file.absolutePath); + while (dir.startsWith(sourcesDir)) { + dir = path.dirname(dir); + if (fs.existsSync(path.join(dir, 'README.adoc'))) { + const result = path.relative(sourcesDir, dir) + config.pageExtension; + return result; + } + } + }, +}; diff --git a/docs/modules/ROOT/nav.adoc b/docs/modules/ROOT/nav.adoc new file mode 100644 index 00000000..6e115007 --- /dev/null +++ b/docs/modules/ROOT/nav.adoc @@ -0,0 +1,21 @@ +* xref:index.adoc[Overview] +//// +* xref:extending-contracts.adoc[Extending Contracts] +* xref:upgradeable.adoc[Using with Upgrades] + +* xref:releases-stability.adoc[Releases & Stability] + +* xref:access-control.adoc[Access Control] + +* xref:tokens.adoc[Tokens] +** xref:erc20.adoc[ERC20] +*** xref:erc20-supply.adoc[Creating Supply] +** xref:erc721.adoc[ERC721] +** xref:erc777.adoc[ERC777] +** xref:erc1155.adoc[ERC1155] + +* xref:gsn.adoc[Gas Station Network] +** xref:gsn-strategies.adoc[Strategies] + +* xref:utilities.adoc[Utilities] +//// \ No newline at end of file diff --git a/docs/modules/ROOT/pages/index.adoc b/docs/modules/ROOT/pages/index.adoc new file mode 100644 index 00000000..3106b163 --- /dev/null +++ b/docs/modules/ROOT/pages/index.adoc @@ -0,0 +1,73 @@ += GIF Contracts + +*Secure and audited smart contracts to develop decentralized insurance applications.* + + * GIF Contracts is a library of smart contracts for decentralized insurance applications. + + + +== Overview + +[[install]] +=== Installation + +```console +$ npm install @etherisc/gif-contracts +``` + +Etherisc GIF Contracts features a xref:releases-stability.adoc#api-stability[stable API], which means your contracts won't break unexpectedly when upgrading to a newer minor version. + +[[usage]] +=== Usage + +Once installed, you can use the contracts in the library by importing them: + +[source,solidity] +---- +// contracts/MyProduct.sol +// SPDX-License-Identifier: MIT +pragma solidity ^0.8.2; + +import "@etherisc/gif-interface/contracts/components/Product.sol"; + +contract MyProduct is Product { + + bytes32 public constant POLICY_FLOW = "PolicyDefaultFlow"; + + constructor( + bytes32 productName, + address token, + address registry, + uint256 riskpoolId, + ) + Product(productName, token, POLICY_FLOW, riskpoolId, registry) + { + } +} +---- + +TIP: If you're new to smart contract development, head to ... +// TODO: Add resource here +to learn about creating a new project and compiling your contracts. + +To keep your system secure, you should **always** use the installed code as-is, and neither copy-paste it from online sources, nor modify it yourself. The library is designed so that only the contracts and functions you use are deployed, so you don't need to worry about it needlessly increasing gas costs. + +[[next-steps]] +== Learn More + +The guides in the sidebar will teach about different concepts, and how to use the related contracts that GIF Contracts provides: + +//// +* xref:access-control.adoc[Access Control]: decide who can perform each of the actions on your system. +* xref:tokens.adoc[Tokens]: create tradable assets or collectibles, like the well known xref:erc20.adoc[ERC20] and xref:erc721.adoc[ERC721] standards. +* xref:gsn.adoc[Gas Station Network]: let your users interact with your contracts without having to pay for gas themselves. +* xref:utilities.adoc[Utilities]: generic useful tools, including non-overflowing math, signature verification, and trustless paying systems. + +The xref:api:token/ERC20.adoc[full API] is also thoroughly documented, and serves as a great reference when developing your smart contract application. You can also ask for help or follow Contracts' development in the https://forum.openzeppelin.com[community forum]. + +Finally, you may want to take a look at the https://blog.openzeppelin.com/guides/[guides on our blog], which cover several common use cases and good practices.. The following articles provide great background reading, though please note, some of the referenced tools have changed as the tooling in the ecosystem continues to rapidly evolve. + +* https://blog.openzeppelin.com/the-hitchhikers-guide-to-smart-contracts-in-ethereum-848f08001f05[The Hitchhiker’s Guide to Smart Contracts in Ethereum] will help you get an overview of the various tools available for smart contract development, and help you set up your environment. +* https://blog.openzeppelin.com/a-gentle-introduction-to-ethereum-programming-part-1-783cc7796094[A Gentle Introduction to Ethereum Programming, Part 1] provides very useful information on an introductory level, including many basic concepts from the Ethereum platform. +* For a more in-depth dive, you may read the guide https://blog.openzeppelin.com/designing-the-architecture-for-your-ethereum-application-9cec086f8317[Designing the architecture for your Ethereum application], which discusses how to better structure your application and its relationship to the real world. +//// diff --git a/docs/modules/api/nav.adoc b/docs/modules/api/nav.adoc new file mode 100644 index 00000000..1191f469 --- /dev/null +++ b/docs/modules/api/nav.adoc @@ -0,0 +1,7 @@ +.API +* xref:flows.adoc[Flows] +* xref:modules.adoc[Modules] +* xref:services.adoc[Services] +* xref:shared.adoc[Shared] +* xref:test.adoc[Test] +* xref:tokens.adoc[Tokens] diff --git a/docs/modules/api/pages/flows.adoc b/docs/modules/api/pages/flows.adoc new file mode 100644 index 00000000..ee910b2c --- /dev/null +++ b/docs/modules/api/pages/flows.adoc @@ -0,0 +1,249 @@ +:github-icon: pass:[] +:xref-PolicyDefaultFlow-onlyActivePolicy-bytes32-: xref:flows.adoc#PolicyDefaultFlow-onlyActivePolicy-bytes32- +:xref-PolicyDefaultFlow-onlyExpiredPolicy-bytes32-: xref:flows.adoc#PolicyDefaultFlow-onlyExpiredPolicy-bytes32- +:xref-PolicyDefaultFlow-notClosedPolicy-bytes32-: xref:flows.adoc#PolicyDefaultFlow-notClosedPolicy-bytes32- +:xref-PolicyDefaultFlow-onlyResponsibleProduct-bytes32-: xref:flows.adoc#PolicyDefaultFlow-onlyResponsibleProduct-bytes32- +:xref-PolicyDefaultFlow-onlyMatchingProduct-uint256-: xref:flows.adoc#PolicyDefaultFlow-onlyMatchingProduct-uint256- +:xref-PolicyDefaultFlow-constructor-address-: xref:flows.adoc#PolicyDefaultFlow-constructor-address- +:xref-PolicyDefaultFlow-newApplication-address-uint256-uint256-bytes-bytes-: xref:flows.adoc#PolicyDefaultFlow-newApplication-address-uint256-uint256-bytes-bytes- +:xref-PolicyDefaultFlow-revoke-bytes32-: xref:flows.adoc#PolicyDefaultFlow-revoke-bytes32- +:xref-PolicyDefaultFlow-underwrite-bytes32-: xref:flows.adoc#PolicyDefaultFlow-underwrite-bytes32- +:xref-PolicyDefaultFlow-collectPremium-bytes32-uint256-: xref:flows.adoc#PolicyDefaultFlow-collectPremium-bytes32-uint256- +:xref-PolicyDefaultFlow-adjustPremiumSumInsured-bytes32-uint256-uint256-: xref:flows.adoc#PolicyDefaultFlow-adjustPremiumSumInsured-bytes32-uint256-uint256- +:xref-PolicyDefaultFlow-decline-bytes32-: xref:flows.adoc#PolicyDefaultFlow-decline-bytes32- +:xref-PolicyDefaultFlow-expire-bytes32-: xref:flows.adoc#PolicyDefaultFlow-expire-bytes32- +:xref-PolicyDefaultFlow-close-bytes32-: xref:flows.adoc#PolicyDefaultFlow-close-bytes32- +:xref-PolicyDefaultFlow-newClaim-bytes32-uint256-bytes-: xref:flows.adoc#PolicyDefaultFlow-newClaim-bytes32-uint256-bytes- +:xref-PolicyDefaultFlow-confirmClaim-bytes32-uint256-uint256-: xref:flows.adoc#PolicyDefaultFlow-confirmClaim-bytes32-uint256-uint256- +:xref-PolicyDefaultFlow-declineClaim-bytes32-uint256-: xref:flows.adoc#PolicyDefaultFlow-declineClaim-bytes32-uint256- +:xref-PolicyDefaultFlow-closeClaim-bytes32-uint256-: xref:flows.adoc#PolicyDefaultFlow-closeClaim-bytes32-uint256- +:xref-PolicyDefaultFlow-newPayout-bytes32-uint256-uint256-bytes-: xref:flows.adoc#PolicyDefaultFlow-newPayout-bytes32-uint256-uint256-bytes- +:xref-PolicyDefaultFlow-processPayout-bytes32-uint256-: xref:flows.adoc#PolicyDefaultFlow-processPayout-bytes32-uint256- +:xref-PolicyDefaultFlow-request-bytes32-bytes-string-address-uint256-: xref:flows.adoc#PolicyDefaultFlow-request-bytes32-bytes-string-address-uint256- +:xref-PolicyDefaultFlow-cancelRequest-uint256-: xref:flows.adoc#PolicyDefaultFlow-cancelRequest-uint256- +:xref-PolicyDefaultFlow-getApplicationData-bytes32-: xref:flows.adoc#PolicyDefaultFlow-getApplicationData-bytes32- +:xref-PolicyDefaultFlow-getClaimData-bytes32-uint256-: xref:flows.adoc#PolicyDefaultFlow-getClaimData-bytes32-uint256- +:xref-PolicyDefaultFlow-getPayoutData-bytes32-uint256-: xref:flows.adoc#PolicyDefaultFlow-getPayoutData-bytes32-uint256- +:xref-PolicyDefaultFlow-getComponentContract--: xref:flows.adoc#PolicyDefaultFlow-getComponentContract-- +:xref-PolicyDefaultFlow-getPoolContract--: xref:flows.adoc#PolicyDefaultFlow-getPoolContract-- +:xref-PolicyDefaultFlow-getPolicyContract--: xref:flows.adoc#PolicyDefaultFlow-getPolicyContract-- +:xref-PolicyDefaultFlow-getQueryContract--: xref:flows.adoc#PolicyDefaultFlow-getQueryContract-- +:xref-PolicyDefaultFlow-getTreasuryContract--: xref:flows.adoc#PolicyDefaultFlow-getTreasuryContract-- +:xref-WithRegistry-getContractFromRegistry-bytes32-: xref:shared.adoc#WithRegistry-getContractFromRegistry-bytes32- +:xref-WithRegistry-getContractInReleaseFromRegistry-bytes32-bytes32-: xref:shared.adoc#WithRegistry-getContractInReleaseFromRegistry-bytes32-bytes32- +:xref-WithRegistry-getReleaseFromRegistry--: xref:shared.adoc#WithRegistry-getReleaseFromRegistry-- += Flows + +[.readme-notice] +NOTE: This document is better viewed at https://docs.etherisc.com/contracts/api/flows + +== Contracts + +:NAME: pass:normal[xref:#PolicyDefaultFlow-NAME-bytes32[`++NAME++`]] +:onlyActivePolicy: pass:normal[xref:#PolicyDefaultFlow-onlyActivePolicy-bytes32-[`++onlyActivePolicy++`]] +:onlyExpiredPolicy: pass:normal[xref:#PolicyDefaultFlow-onlyExpiredPolicy-bytes32-[`++onlyExpiredPolicy++`]] +:notClosedPolicy: pass:normal[xref:#PolicyDefaultFlow-notClosedPolicy-bytes32-[`++notClosedPolicy++`]] +:onlyResponsibleProduct: pass:normal[xref:#PolicyDefaultFlow-onlyResponsibleProduct-bytes32-[`++onlyResponsibleProduct++`]] +:onlyMatchingProduct: pass:normal[xref:#PolicyDefaultFlow-onlyMatchingProduct-uint256-[`++onlyMatchingProduct++`]] +:constructor: pass:normal[xref:#PolicyDefaultFlow-constructor-address-[`++constructor++`]] +:newApplication: pass:normal[xref:#PolicyDefaultFlow-newApplication-address-uint256-uint256-bytes-bytes-[`++newApplication++`]] +:revoke: pass:normal[xref:#PolicyDefaultFlow-revoke-bytes32-[`++revoke++`]] +:underwrite: pass:normal[xref:#PolicyDefaultFlow-underwrite-bytes32-[`++underwrite++`]] +:collectPremium: pass:normal[xref:#PolicyDefaultFlow-collectPremium-bytes32-uint256-[`++collectPremium++`]] +:adjustPremiumSumInsured: pass:normal[xref:#PolicyDefaultFlow-adjustPremiumSumInsured-bytes32-uint256-uint256-[`++adjustPremiumSumInsured++`]] +:decline: pass:normal[xref:#PolicyDefaultFlow-decline-bytes32-[`++decline++`]] +:expire: pass:normal[xref:#PolicyDefaultFlow-expire-bytes32-[`++expire++`]] +:close: pass:normal[xref:#PolicyDefaultFlow-close-bytes32-[`++close++`]] +:newClaim: pass:normal[xref:#PolicyDefaultFlow-newClaim-bytes32-uint256-bytes-[`++newClaim++`]] +:confirmClaim: pass:normal[xref:#PolicyDefaultFlow-confirmClaim-bytes32-uint256-uint256-[`++confirmClaim++`]] +:declineClaim: pass:normal[xref:#PolicyDefaultFlow-declineClaim-bytes32-uint256-[`++declineClaim++`]] +:closeClaim: pass:normal[xref:#PolicyDefaultFlow-closeClaim-bytes32-uint256-[`++closeClaim++`]] +:newPayout: pass:normal[xref:#PolicyDefaultFlow-newPayout-bytes32-uint256-uint256-bytes-[`++newPayout++`]] +:processPayout: pass:normal[xref:#PolicyDefaultFlow-processPayout-bytes32-uint256-[`++processPayout++`]] +:request: pass:normal[xref:#PolicyDefaultFlow-request-bytes32-bytes-string-address-uint256-[`++request++`]] +:cancelRequest: pass:normal[xref:#PolicyDefaultFlow-cancelRequest-uint256-[`++cancelRequest++`]] +:getApplicationData: pass:normal[xref:#PolicyDefaultFlow-getApplicationData-bytes32-[`++getApplicationData++`]] +:getClaimData: pass:normal[xref:#PolicyDefaultFlow-getClaimData-bytes32-uint256-[`++getClaimData++`]] +:getPayoutData: pass:normal[xref:#PolicyDefaultFlow-getPayoutData-bytes32-uint256-[`++getPayoutData++`]] +:getComponentContract: pass:normal[xref:#PolicyDefaultFlow-getComponentContract--[`++getComponentContract++`]] +:getPoolContract: pass:normal[xref:#PolicyDefaultFlow-getPoolContract--[`++getPoolContract++`]] +:getPolicyContract: pass:normal[xref:#PolicyDefaultFlow-getPolicyContract--[`++getPolicyContract++`]] +:getQueryContract: pass:normal[xref:#PolicyDefaultFlow-getQueryContract--[`++getQueryContract++`]] +:getTreasuryContract: pass:normal[xref:#PolicyDefaultFlow-getTreasuryContract--[`++getTreasuryContract++`]] + +[.contract] +[[PolicyDefaultFlow]] +=== `++PolicyDefaultFlow++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/flows/PolicyDefaultFlow.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/flows/PolicyDefaultFlow.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-PolicyDefaultFlow-onlyActivePolicy-bytes32-}[`++onlyActivePolicy(processId)++`] +* {xref-PolicyDefaultFlow-onlyExpiredPolicy-bytes32-}[`++onlyExpiredPolicy(processId)++`] +* {xref-PolicyDefaultFlow-notClosedPolicy-bytes32-}[`++notClosedPolicy(processId)++`] +* {xref-PolicyDefaultFlow-onlyResponsibleProduct-bytes32-}[`++onlyResponsibleProduct(processId)++`] +* {xref-PolicyDefaultFlow-onlyMatchingProduct-uint256-}[`++onlyMatchingProduct(requestId)++`] +-- + +[.contract-index] +.Functions +-- +* {xref-PolicyDefaultFlow-constructor-address-}[`++constructor(_registry)++`] +* {xref-PolicyDefaultFlow-newApplication-address-uint256-uint256-bytes-bytes-}[`++newApplication(owner, premiumAmount, sumInsuredAmount, metaData, applicationData)++`] +* {xref-PolicyDefaultFlow-revoke-bytes32-}[`++revoke(processId)++`] +* {xref-PolicyDefaultFlow-underwrite-bytes32-}[`++underwrite(processId)++`] +* {xref-PolicyDefaultFlow-collectPremium-bytes32-uint256-}[`++collectPremium(processId, amount)++`] +* {xref-PolicyDefaultFlow-adjustPremiumSumInsured-bytes32-uint256-uint256-}[`++adjustPremiumSumInsured(processId, expectedPremiumAmount, sumInsuredAmount)++`] +* {xref-PolicyDefaultFlow-decline-bytes32-}[`++decline(processId)++`] +* {xref-PolicyDefaultFlow-expire-bytes32-}[`++expire(processId)++`] +* {xref-PolicyDefaultFlow-close-bytes32-}[`++close(processId)++`] +* {xref-PolicyDefaultFlow-newClaim-bytes32-uint256-bytes-}[`++newClaim(processId, claimAmount, data)++`] +* {xref-PolicyDefaultFlow-confirmClaim-bytes32-uint256-uint256-}[`++confirmClaim(processId, claimId, confirmedAmount)++`] +* {xref-PolicyDefaultFlow-declineClaim-bytes32-uint256-}[`++declineClaim(processId, claimId)++`] +* {xref-PolicyDefaultFlow-closeClaim-bytes32-uint256-}[`++closeClaim(processId, claimId)++`] +* {xref-PolicyDefaultFlow-newPayout-bytes32-uint256-uint256-bytes-}[`++newPayout(processId, claimId, amount, data)++`] +* {xref-PolicyDefaultFlow-processPayout-bytes32-uint256-}[`++processPayout(processId, payoutId)++`] +* {xref-PolicyDefaultFlow-request-bytes32-bytes-string-address-uint256-}[`++request(processId, _input, _callbackMethodName, _callbackContractAddress, _responsibleOracleId)++`] +* {xref-PolicyDefaultFlow-cancelRequest-uint256-}[`++cancelRequest(requestId)++`] +* {xref-PolicyDefaultFlow-getApplicationData-bytes32-}[`++getApplicationData(processId)++`] +* {xref-PolicyDefaultFlow-getClaimData-bytes32-uint256-}[`++getClaimData(processId, claimId)++`] +* {xref-PolicyDefaultFlow-getPayoutData-bytes32-uint256-}[`++getPayoutData(processId, payoutId)++`] +* {xref-PolicyDefaultFlow-getComponentContract--}[`++getComponentContract()++`] +* {xref-PolicyDefaultFlow-getPoolContract--}[`++getPoolContract()++`] +* {xref-PolicyDefaultFlow-getPolicyContract--}[`++getPolicyContract()++`] +* {xref-PolicyDefaultFlow-getQueryContract--}[`++getQueryContract()++`] +* {xref-PolicyDefaultFlow-getTreasuryContract--}[`++getTreasuryContract()++`] + +[.contract-subindex-inherited] +.WithRegistry +* {xref-WithRegistry-getContractFromRegistry-bytes32-}[`++getContractFromRegistry(_contractName)++`] +* {xref-WithRegistry-getContractInReleaseFromRegistry-bytes32-bytes32-}[`++getContractInReleaseFromRegistry(_release, _contractName)++`] +* {xref-WithRegistry-getReleaseFromRegistry--}[`++getReleaseFromRegistry()++`] + +-- + +[.contract-item] +[[PolicyDefaultFlow-onlyActivePolicy-bytes32-]] +==== `[.contract-item-name]#++onlyActivePolicy++#++(bytes32 processId)++` [.item-kind]#modifier# + +[.contract-item] +[[PolicyDefaultFlow-onlyExpiredPolicy-bytes32-]] +==== `[.contract-item-name]#++onlyExpiredPolicy++#++(bytes32 processId)++` [.item-kind]#modifier# + +[.contract-item] +[[PolicyDefaultFlow-notClosedPolicy-bytes32-]] +==== `[.contract-item-name]#++notClosedPolicy++#++(bytes32 processId)++` [.item-kind]#modifier# + +[.contract-item] +[[PolicyDefaultFlow-onlyResponsibleProduct-bytes32-]] +==== `[.contract-item-name]#++onlyResponsibleProduct++#++(bytes32 processId)++` [.item-kind]#modifier# + +[.contract-item] +[[PolicyDefaultFlow-onlyMatchingProduct-uint256-]] +==== `[.contract-item-name]#++onlyMatchingProduct++#++(uint256 requestId)++` [.item-kind]#modifier# + +[.contract-item] +[[PolicyDefaultFlow-constructor-address-]] +==== `[.contract-item-name]#++constructor++#++(address _registry)++` [.item-kind]#public# + +[.contract-item] +[[PolicyDefaultFlow-newApplication-address-uint256-uint256-bytes-bytes-]] +==== `[.contract-item-name]#++newApplication++#++(address owner, uint256 premiumAmount, uint256 sumInsuredAmount, bytes metaData, bytes applicationData) → bytes32 processId++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-revoke-bytes32-]] +==== `[.contract-item-name]#++revoke++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-underwrite-bytes32-]] +==== `[.contract-item-name]#++underwrite++#++(bytes32 processId) → bool success++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-collectPremium-bytes32-uint256-]] +==== `[.contract-item-name]#++collectPremium++#++(bytes32 processId, uint256 amount) → bool success, uint256 feeAmount, uint256 netPremiumAmount++` [.item-kind]#public# + +[.contract-item] +[[PolicyDefaultFlow-adjustPremiumSumInsured-bytes32-uint256-uint256-]] +==== `[.contract-item-name]#++adjustPremiumSumInsured++#++(bytes32 processId, uint256 expectedPremiumAmount, uint256 sumInsuredAmount)++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-decline-bytes32-]] +==== `[.contract-item-name]#++decline++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-expire-bytes32-]] +==== `[.contract-item-name]#++expire++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-close-bytes32-]] +==== `[.contract-item-name]#++close++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-newClaim-bytes32-uint256-bytes-]] +==== `[.contract-item-name]#++newClaim++#++(bytes32 processId, uint256 claimAmount, bytes data) → uint256 claimId++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-confirmClaim-bytes32-uint256-uint256-]] +==== `[.contract-item-name]#++confirmClaim++#++(bytes32 processId, uint256 claimId, uint256 confirmedAmount)++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-declineClaim-bytes32-uint256-]] +==== `[.contract-item-name]#++declineClaim++#++(bytes32 processId, uint256 claimId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-closeClaim-bytes32-uint256-]] +==== `[.contract-item-name]#++closeClaim++#++(bytes32 processId, uint256 claimId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-newPayout-bytes32-uint256-uint256-bytes-]] +==== `[.contract-item-name]#++newPayout++#++(bytes32 processId, uint256 claimId, uint256 amount, bytes data) → uint256 payoutId++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-processPayout-bytes32-uint256-]] +==== `[.contract-item-name]#++processPayout++#++(bytes32 processId, uint256 payoutId) → bool success, uint256 feeAmount, uint256 netPayoutAmount++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-request-bytes32-bytes-string-address-uint256-]] +==== `[.contract-item-name]#++request++#++(bytes32 processId, bytes _input, string _callbackMethodName, address _callbackContractAddress, uint256 _responsibleOracleId) → uint256 _requestId++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-cancelRequest-uint256-]] +==== `[.contract-item-name]#++cancelRequest++#++(uint256 requestId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-getApplicationData-bytes32-]] +==== `[.contract-item-name]#++getApplicationData++#++(bytes32 processId) → bytes++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-getClaimData-bytes32-uint256-]] +==== `[.contract-item-name]#++getClaimData++#++(bytes32 processId, uint256 claimId) → bytes++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-getPayoutData-bytes32-uint256-]] +==== `[.contract-item-name]#++getPayoutData++#++(bytes32 processId, uint256 payoutId) → bytes++` [.item-kind]#external# + +[.contract-item] +[[PolicyDefaultFlow-getComponentContract--]] +==== `[.contract-item-name]#++getComponentContract++#++() → contract ComponentController++` [.item-kind]#internal# + +[.contract-item] +[[PolicyDefaultFlow-getPoolContract--]] +==== `[.contract-item-name]#++getPoolContract++#++() → contract PoolController++` [.item-kind]#internal# + +[.contract-item] +[[PolicyDefaultFlow-getPolicyContract--]] +==== `[.contract-item-name]#++getPolicyContract++#++() → contract PolicyController++` [.item-kind]#internal# + +[.contract-item] +[[PolicyDefaultFlow-getQueryContract--]] +==== `[.contract-item-name]#++getQueryContract++#++() → contract QueryModule++` [.item-kind]#internal# + +[.contract-item] +[[PolicyDefaultFlow-getTreasuryContract--]] +==== `[.contract-item-name]#++getTreasuryContract++#++() → contract TreasuryModule++` [.item-kind]#internal# + diff --git a/docs/modules/api/pages/modules.adoc b/docs/modules/api/pages/modules.adoc new file mode 100644 index 00000000..e4de26c1 --- /dev/null +++ b/docs/modules/api/pages/modules.adoc @@ -0,0 +1,1909 @@ +:github-icon: pass:[] +:xref-AccessController-_afterInitialize--: xref:modules.adoc#AccessController-_afterInitialize-- +:xref-AccessController-_getName--: xref:modules.adoc#AccessController-_getName-- +:xref-AccessController-setDefaultAdminRole-address-: xref:modules.adoc#AccessController-setDefaultAdminRole-address- +:xref-AccessController-grantRole-bytes32-address-: xref:modules.adoc#AccessController-grantRole-bytes32-address- +:xref-AccessController-revokeRole-bytes32-address-: xref:modules.adoc#AccessController-revokeRole-bytes32-address- +:xref-AccessController-renounceRole-bytes32-address-: xref:modules.adoc#AccessController-renounceRole-bytes32-address- +:xref-AccessController-addRole-bytes32-: xref:modules.adoc#AccessController-addRole-bytes32- +:xref-AccessController-invalidateRole-bytes32-: xref:modules.adoc#AccessController-invalidateRole-bytes32- +:xref-AccessController-hasRole-bytes32-address-: xref:modules.adoc#AccessController-hasRole-bytes32-address- +:xref-AccessController-getDefaultAdminRole--: xref:modules.adoc#AccessController-getDefaultAdminRole-- +:xref-AccessController-getProductOwnerRole--: xref:modules.adoc#AccessController-getProductOwnerRole-- +:xref-AccessController-getOracleProviderRole--: xref:modules.adoc#AccessController-getOracleProviderRole-- +:xref-AccessController-getRiskpoolKeeperRole--: xref:modules.adoc#AccessController-getRiskpoolKeeperRole-- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-BundleController-onlyRiskpoolService--: xref:modules.adoc#BundleController-onlyRiskpoolService-- +:xref-BundleController-onlyFundableBundle-uint256-: xref:modules.adoc#BundleController-onlyFundableBundle-uint256- +:xref-BundleController-_afterInitialize--: xref:modules.adoc#BundleController-_afterInitialize-- +:xref-BundleController-create-address-uint256-bytes-uint256-: xref:modules.adoc#BundleController-create-address-uint256-bytes-uint256- +:xref-BundleController-fund-uint256-uint256-: xref:modules.adoc#BundleController-fund-uint256-uint256- +:xref-BundleController-defund-uint256-uint256-: xref:modules.adoc#BundleController-defund-uint256-uint256- +:xref-BundleController-lock-uint256-: xref:modules.adoc#BundleController-lock-uint256- +:xref-BundleController-unlock-uint256-: xref:modules.adoc#BundleController-unlock-uint256- +:xref-BundleController-close-uint256-: xref:modules.adoc#BundleController-close-uint256- +:xref-BundleController-burn-uint256-: xref:modules.adoc#BundleController-burn-uint256- +:xref-BundleController-collateralizePolicy-uint256-bytes32-uint256-: xref:modules.adoc#BundleController-collateralizePolicy-uint256-bytes32-uint256- +:xref-BundleController-processPremium-uint256-bytes32-uint256-: xref:modules.adoc#BundleController-processPremium-uint256-bytes32-uint256- +:xref-BundleController-processPayout-uint256-bytes32-uint256-: xref:modules.adoc#BundleController-processPayout-uint256-bytes32-uint256- +:xref-BundleController-releasePolicy-uint256-bytes32-: xref:modules.adoc#BundleController-releasePolicy-uint256-bytes32- +:xref-BundleController-getOwner-uint256-: xref:modules.adoc#BundleController-getOwner-uint256- +:xref-BundleController-getState-uint256-: xref:modules.adoc#BundleController-getState-uint256- +:xref-BundleController-getFilter-uint256-: xref:modules.adoc#BundleController-getFilter-uint256- +:xref-BundleController-getCapacity-uint256-: xref:modules.adoc#BundleController-getCapacity-uint256- +:xref-BundleController-getTotalValueLocked-uint256-: xref:modules.adoc#BundleController-getTotalValueLocked-uint256- +:xref-BundleController-getBalance-uint256-: xref:modules.adoc#BundleController-getBalance-uint256- +:xref-BundleController-getToken--: xref:modules.adoc#BundleController-getToken-- +:xref-BundleController-getBundle-uint256-: xref:modules.adoc#BundleController-getBundle-uint256- +:xref-BundleController-bundles--: xref:modules.adoc#BundleController-bundles-- +:xref-BundleController-unburntBundles-uint256-: xref:modules.adoc#BundleController-unburntBundles-uint256- +:xref-BundleController-_getPoolController--: xref:modules.adoc#BundleController-_getPoolController-- +:xref-BundleController-_changeState-uint256-enum-IBundle-BundleState-: xref:modules.adoc#BundleController-_changeState-uint256-enum-IBundle-BundleState- +:xref-BundleController-_setState-uint256-enum-IBundle-BundleState-: xref:modules.adoc#BundleController-_setState-uint256-enum-IBundle-BundleState- +:xref-BundleController-_checkStateTransition-enum-IBundle-BundleState-enum-IBundle-BundleState-: xref:modules.adoc#BundleController-_checkStateTransition-enum-IBundle-BundleState-enum-IBundle-BundleState- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-ComponentController-onlyComponentOwnerService--: xref:modules.adoc#ComponentController-onlyComponentOwnerService-- +:xref-ComponentController-onlyInstanceOperatorService--: xref:modules.adoc#ComponentController-onlyInstanceOperatorService-- +:xref-ComponentController-propose-contract-IComponent-: xref:modules.adoc#ComponentController-propose-contract-IComponent- +:xref-ComponentController-_persistComponent-contract-IComponent-: xref:modules.adoc#ComponentController-_persistComponent-contract-IComponent- +:xref-ComponentController-exists-uint256-: xref:modules.adoc#ComponentController-exists-uint256- +:xref-ComponentController-approve-uint256-: xref:modules.adoc#ComponentController-approve-uint256- +:xref-ComponentController-decline-uint256-: xref:modules.adoc#ComponentController-decline-uint256- +:xref-ComponentController-suspend-uint256-: xref:modules.adoc#ComponentController-suspend-uint256- +:xref-ComponentController-resume-uint256-: xref:modules.adoc#ComponentController-resume-uint256- +:xref-ComponentController-pause-uint256-: xref:modules.adoc#ComponentController-pause-uint256- +:xref-ComponentController-unpause-uint256-: xref:modules.adoc#ComponentController-unpause-uint256- +:xref-ComponentController-archiveFromComponentOwner-uint256-: xref:modules.adoc#ComponentController-archiveFromComponentOwner-uint256- +:xref-ComponentController-archiveFromInstanceOperator-uint256-: xref:modules.adoc#ComponentController-archiveFromInstanceOperator-uint256- +:xref-ComponentController-getComponent-uint256-: xref:modules.adoc#ComponentController-getComponent-uint256- +:xref-ComponentController-getComponentId-address-: xref:modules.adoc#ComponentController-getComponentId-address- +:xref-ComponentController-getComponentType-uint256-: xref:modules.adoc#ComponentController-getComponentType-uint256- +:xref-ComponentController-getComponentState-uint256-: xref:modules.adoc#ComponentController-getComponentState-uint256- +:xref-ComponentController-getOracleId-uint256-: xref:modules.adoc#ComponentController-getOracleId-uint256- +:xref-ComponentController-getRiskpoolId-uint256-: xref:modules.adoc#ComponentController-getRiskpoolId-uint256- +:xref-ComponentController-getProductId-uint256-: xref:modules.adoc#ComponentController-getProductId-uint256- +:xref-ComponentController-getRequiredRole-enum-IComponent-ComponentType-: xref:modules.adoc#ComponentController-getRequiredRole-enum-IComponent-ComponentType- +:xref-ComponentController-components--: xref:modules.adoc#ComponentController-components-- +:xref-ComponentController-products--: xref:modules.adoc#ComponentController-products-- +:xref-ComponentController-oracles--: xref:modules.adoc#ComponentController-oracles-- +:xref-ComponentController-riskpools--: xref:modules.adoc#ComponentController-riskpools-- +:xref-ComponentController-isProduct-uint256-: xref:modules.adoc#ComponentController-isProduct-uint256- +:xref-ComponentController-isOracle-uint256-: xref:modules.adoc#ComponentController-isOracle-uint256- +:xref-ComponentController-isRiskpool-uint256-: xref:modules.adoc#ComponentController-isRiskpool-uint256- +:xref-ComponentController-getPolicyFlow-uint256-: xref:modules.adoc#ComponentController-getPolicyFlow-uint256- +:xref-ComponentController-_changeState-uint256-enum-IComponent-ComponentState-: xref:modules.adoc#ComponentController-_changeState-uint256-enum-IComponent-ComponentState- +:xref-ComponentController-_checkStateTransition-enum-IComponent-ComponentState-enum-IComponent-ComponentState-: xref:modules.adoc#ComponentController-_checkStateTransition-enum-IComponent-ComponentState-enum-IComponent-ComponentState- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_afterInitialize--: xref:shared.adoc#CoreController-_afterInitialize-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-LicenseController-_afterInitialize--: xref:modules.adoc#LicenseController-_afterInitialize-- +:xref-LicenseController-getAuthorizationStatus-address-: xref:modules.adoc#LicenseController-getAuthorizationStatus-address- +:xref-LicenseController-_isValidCall-uint256-: xref:modules.adoc#LicenseController-_isValidCall-uint256- +:xref-LicenseController-_getProduct-uint256-: xref:modules.adoc#LicenseController-_getProduct-uint256- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-PolicyController-_afterInitialize--: xref:modules.adoc#PolicyController-_afterInitialize-- +:xref-PolicyController-createPolicyFlow-address-uint256-bytes-: xref:modules.adoc#PolicyController-createPolicyFlow-address-uint256-bytes- +:xref-PolicyController-createApplication-bytes32-uint256-uint256-bytes-: xref:modules.adoc#PolicyController-createApplication-bytes32-uint256-uint256-bytes- +:xref-PolicyController-collectPremium-bytes32-uint256-: xref:modules.adoc#PolicyController-collectPremium-bytes32-uint256- +:xref-PolicyController-revokeApplication-bytes32-: xref:modules.adoc#PolicyController-revokeApplication-bytes32- +:xref-PolicyController-underwriteApplication-bytes32-: xref:modules.adoc#PolicyController-underwriteApplication-bytes32- +:xref-PolicyController-declineApplication-bytes32-: xref:modules.adoc#PolicyController-declineApplication-bytes32- +:xref-PolicyController-createPolicy-bytes32-: xref:modules.adoc#PolicyController-createPolicy-bytes32- +:xref-PolicyController-adjustPremiumSumInsured-bytes32-uint256-uint256-: xref:modules.adoc#PolicyController-adjustPremiumSumInsured-bytes32-uint256-uint256- +:xref-PolicyController-expirePolicy-bytes32-: xref:modules.adoc#PolicyController-expirePolicy-bytes32- +:xref-PolicyController-closePolicy-bytes32-: xref:modules.adoc#PolicyController-closePolicy-bytes32- +:xref-PolicyController-createClaim-bytes32-uint256-bytes-: xref:modules.adoc#PolicyController-createClaim-bytes32-uint256-bytes- +:xref-PolicyController-confirmClaim-bytes32-uint256-uint256-: xref:modules.adoc#PolicyController-confirmClaim-bytes32-uint256-uint256- +:xref-PolicyController-declineClaim-bytes32-uint256-: xref:modules.adoc#PolicyController-declineClaim-bytes32-uint256- +:xref-PolicyController-closeClaim-bytes32-uint256-: xref:modules.adoc#PolicyController-closeClaim-bytes32-uint256- +:xref-PolicyController-createPayout-bytes32-uint256-uint256-bytes-: xref:modules.adoc#PolicyController-createPayout-bytes32-uint256-uint256-bytes- +:xref-PolicyController-processPayout-bytes32-uint256-: xref:modules.adoc#PolicyController-processPayout-bytes32-uint256- +:xref-PolicyController-getMetadata-bytes32-: xref:modules.adoc#PolicyController-getMetadata-bytes32- +:xref-PolicyController-getApplication-bytes32-: xref:modules.adoc#PolicyController-getApplication-bytes32- +:xref-PolicyController-getNumberOfClaims-bytes32-: xref:modules.adoc#PolicyController-getNumberOfClaims-bytes32- +:xref-PolicyController-getNumberOfPayouts-bytes32-: xref:modules.adoc#PolicyController-getNumberOfPayouts-bytes32- +:xref-PolicyController-getPolicy-bytes32-: xref:modules.adoc#PolicyController-getPolicy-bytes32- +:xref-PolicyController-getClaim-bytes32-uint256-: xref:modules.adoc#PolicyController-getClaim-bytes32-uint256- +:xref-PolicyController-getPayout-bytes32-uint256-: xref:modules.adoc#PolicyController-getPayout-bytes32-uint256- +:xref-PolicyController-processIds--: xref:modules.adoc#PolicyController-processIds-- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-PoolController-onlyInstanceOperatorService--: xref:modules.adoc#PoolController-onlyInstanceOperatorService-- +:xref-PoolController-onlyRiskpoolService--: xref:modules.adoc#PoolController-onlyRiskpoolService-- +:xref-PoolController-onlyActivePool-uint256-: xref:modules.adoc#PoolController-onlyActivePool-uint256- +:xref-PoolController-onlyActivePoolForProcess-bytes32-: xref:modules.adoc#PoolController-onlyActivePoolForProcess-bytes32- +:xref-PoolController-_afterInitialize--: xref:modules.adoc#PoolController-_afterInitialize-- +:xref-PoolController-registerRiskpool-uint256-address-address-uint256-uint256-: xref:modules.adoc#PoolController-registerRiskpool-uint256-address-address-uint256-uint256- +:xref-PoolController-setRiskpoolForProduct-uint256-uint256-: xref:modules.adoc#PoolController-setRiskpoolForProduct-uint256-uint256- +:xref-PoolController-fund-uint256-uint256-: xref:modules.adoc#PoolController-fund-uint256-uint256- +:xref-PoolController-defund-uint256-uint256-: xref:modules.adoc#PoolController-defund-uint256-uint256- +:xref-PoolController-underwrite-bytes32-: xref:modules.adoc#PoolController-underwrite-bytes32- +:xref-PoolController-calculateCollateral-uint256-uint256-: xref:modules.adoc#PoolController-calculateCollateral-uint256-uint256- +:xref-PoolController-processPremium-bytes32-uint256-: xref:modules.adoc#PoolController-processPremium-bytes32-uint256- +:xref-PoolController-processPayout-bytes32-uint256-: xref:modules.adoc#PoolController-processPayout-bytes32-uint256- +:xref-PoolController-release-bytes32-: xref:modules.adoc#PoolController-release-bytes32- +:xref-PoolController-setMaximumNumberOfActiveBundles-uint256-uint256-: xref:modules.adoc#PoolController-setMaximumNumberOfActiveBundles-uint256-uint256- +:xref-PoolController-getMaximumNumberOfActiveBundles-uint256-: xref:modules.adoc#PoolController-getMaximumNumberOfActiveBundles-uint256- +:xref-PoolController-riskpools--: xref:modules.adoc#PoolController-riskpools-- +:xref-PoolController-getRiskpool-uint256-: xref:modules.adoc#PoolController-getRiskpool-uint256- +:xref-PoolController-getRiskPoolForProduct-uint256-: xref:modules.adoc#PoolController-getRiskPoolForProduct-uint256- +:xref-PoolController-activeBundles-uint256-: xref:modules.adoc#PoolController-activeBundles-uint256- +:xref-PoolController-getActiveBundleId-uint256-uint256-: xref:modules.adoc#PoolController-getActiveBundleId-uint256-uint256- +:xref-PoolController-addBundleIdToActiveSet-uint256-uint256-: xref:modules.adoc#PoolController-addBundleIdToActiveSet-uint256-uint256- +:xref-PoolController-removeBundleIdFromActiveSet-uint256-uint256-: xref:modules.adoc#PoolController-removeBundleIdFromActiveSet-uint256-uint256- +:xref-PoolController-getFullCollateralizationLevel--: xref:modules.adoc#PoolController-getFullCollateralizationLevel-- +:xref-PoolController-_getRiskpoolComponent-struct-IPolicy-Metadata-: xref:modules.adoc#PoolController-_getRiskpoolComponent-struct-IPolicy-Metadata- +:xref-PoolController-_getRiskpoolForId-uint256-: xref:modules.adoc#PoolController-_getRiskpoolForId-uint256- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-QueryModule-onlyOracleService--: xref:modules.adoc#QueryModule-onlyOracleService-- +:xref-QueryModule-onlyResponsibleOracle-uint256-address-: xref:modules.adoc#QueryModule-onlyResponsibleOracle-uint256-address- +:xref-QueryModule-_afterInitialize--: xref:modules.adoc#QueryModule-_afterInitialize-- +:xref-QueryModule-request-bytes32-bytes-string-address-uint256-: xref:modules.adoc#QueryModule-request-bytes32-bytes-string-address-uint256- +:xref-QueryModule-respond-uint256-address-bytes-: xref:modules.adoc#QueryModule-respond-uint256-address-bytes- +:xref-QueryModule-cancel-uint256-: xref:modules.adoc#QueryModule-cancel-uint256- +:xref-QueryModule-getProcessId-uint256-: xref:modules.adoc#QueryModule-getProcessId-uint256- +:xref-QueryModule-getOracleRequestCount--: xref:modules.adoc#QueryModule-getOracleRequestCount-- +:xref-QueryModule-_getOracle-uint256-: xref:modules.adoc#QueryModule-_getOracle-uint256- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-RegistryController-initializeRegistry-bytes32-: xref:modules.adoc#RegistryController-initializeRegistry-bytes32- +:xref-RegistryController-ensureSender-address-bytes32-: xref:modules.adoc#RegistryController-ensureSender-address-bytes32- +:xref-RegistryController-getRelease--: xref:modules.adoc#RegistryController-getRelease-- +:xref-RegistryController-getContract-bytes32-: xref:modules.adoc#RegistryController-getContract-bytes32- +:xref-RegistryController-register-bytes32-address-: xref:modules.adoc#RegistryController-register-bytes32-address- +:xref-RegistryController-deregister-bytes32-: xref:modules.adoc#RegistryController-deregister-bytes32- +:xref-RegistryController-getContractInRelease-bytes32-bytes32-: xref:modules.adoc#RegistryController-getContractInRelease-bytes32-bytes32- +:xref-RegistryController-registerInRelease-bytes32-bytes32-address-: xref:modules.adoc#RegistryController-registerInRelease-bytes32-bytes32-address- +:xref-RegistryController-deregisterInRelease-bytes32-bytes32-: xref:modules.adoc#RegistryController-deregisterInRelease-bytes32-bytes32- +:xref-RegistryController-prepareRelease-bytes32-: xref:modules.adoc#RegistryController-prepareRelease-bytes32- +:xref-RegistryController-contracts--: xref:modules.adoc#RegistryController-contracts-- +:xref-RegistryController-contractName-uint256-: xref:modules.adoc#RegistryController-contractName-uint256- +:xref-RegistryController-_getContractInRelease-bytes32-bytes32-: xref:modules.adoc#RegistryController-_getContractInRelease-bytes32-bytes32- +:xref-RegistryController-_registerInRelease-bytes32-bool-bytes32-address-: xref:modules.adoc#RegistryController-_registerInRelease-bytes32-bool-bytes32-address- +:xref-RegistryController-_deregisterInRelease-bytes32-bytes32-: xref:modules.adoc#RegistryController-_deregisterInRelease-bytes32-bytes32- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_afterInitialize--: xref:shared.adoc#CoreController-_afterInitialize-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-TreasuryModule-instanceWalletDefined--: xref:modules.adoc#TreasuryModule-instanceWalletDefined-- +:xref-TreasuryModule-riskpoolWalletDefinedForProcess-bytes32-: xref:modules.adoc#TreasuryModule-riskpoolWalletDefinedForProcess-bytes32- +:xref-TreasuryModule-riskpoolWalletDefinedForBundle-uint256-: xref:modules.adoc#TreasuryModule-riskpoolWalletDefinedForBundle-uint256- +:xref-TreasuryModule-whenNotSuspended--: xref:modules.adoc#TreasuryModule-whenNotSuspended-- +:xref-TreasuryModule-onlyRiskpoolService--: xref:modules.adoc#TreasuryModule-onlyRiskpoolService-- +:xref-TreasuryModule-_afterInitialize--: xref:modules.adoc#TreasuryModule-_afterInitialize-- +:xref-TreasuryModule-suspend--: xref:modules.adoc#TreasuryModule-suspend-- +:xref-TreasuryModule-resume--: xref:modules.adoc#TreasuryModule-resume-- +:xref-TreasuryModule-setProductToken-uint256-address-: xref:modules.adoc#TreasuryModule-setProductToken-uint256-address- +:xref-TreasuryModule-setInstanceWallet-address-: xref:modules.adoc#TreasuryModule-setInstanceWallet-address- +:xref-TreasuryModule-setRiskpoolWallet-uint256-address-: xref:modules.adoc#TreasuryModule-setRiskpoolWallet-uint256-address- +:xref-TreasuryModule-createFeeSpecification-uint256-uint256-uint256-bytes-: xref:modules.adoc#TreasuryModule-createFeeSpecification-uint256-uint256-uint256-bytes- +:xref-TreasuryModule-setPremiumFees-struct-ITreasury-FeeSpecification-: xref:modules.adoc#TreasuryModule-setPremiumFees-struct-ITreasury-FeeSpecification- +:xref-TreasuryModule-setCapitalFees-struct-ITreasury-FeeSpecification-: xref:modules.adoc#TreasuryModule-setCapitalFees-struct-ITreasury-FeeSpecification- +:xref-TreasuryModule-calculateFee-uint256-uint256-: xref:modules.adoc#TreasuryModule-calculateFee-uint256-uint256- +:xref-TreasuryModule-processPremium-bytes32-: xref:modules.adoc#TreasuryModule-processPremium-bytes32- +:xref-TreasuryModule-processPremium-bytes32-uint256-: xref:modules.adoc#TreasuryModule-processPremium-bytes32-uint256- +:xref-TreasuryModule-processPayout-bytes32-uint256-: xref:modules.adoc#TreasuryModule-processPayout-bytes32-uint256- +:xref-TreasuryModule-processCapital-uint256-uint256-: xref:modules.adoc#TreasuryModule-processCapital-uint256-uint256- +:xref-TreasuryModule-processWithdrawal-uint256-uint256-: xref:modules.adoc#TreasuryModule-processWithdrawal-uint256-uint256- +:xref-TreasuryModule-getComponentToken-uint256-: xref:modules.adoc#TreasuryModule-getComponentToken-uint256- +:xref-TreasuryModule-getFeeSpecification-uint256-: xref:modules.adoc#TreasuryModule-getFeeSpecification-uint256- +:xref-TreasuryModule-getFractionFullUnit--: xref:modules.adoc#TreasuryModule-getFractionFullUnit-- +:xref-TreasuryModule-getInstanceWallet--: xref:modules.adoc#TreasuryModule-getInstanceWallet-- +:xref-TreasuryModule-getRiskpoolWallet-uint256-: xref:modules.adoc#TreasuryModule-getRiskpoolWallet-uint256- +:xref-TreasuryModule-_calculatePremiumFee-struct-ITreasury-FeeSpecification-bytes32-: xref:modules.adoc#TreasuryModule-_calculatePremiumFee-struct-ITreasury-FeeSpecification-bytes32- +:xref-TreasuryModule-_calculateFee-struct-ITreasury-FeeSpecification-uint256-: xref:modules.adoc#TreasuryModule-_calculateFee-struct-ITreasury-FeeSpecification-uint256- +:xref-TreasuryModule-_getRiskpoolWallet-bytes32-: xref:modules.adoc#TreasuryModule-_getRiskpoolWallet-bytes32- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-TreasuryModule-LogTransferHelperInputValidation1Failed-bool-address-address-: xref:modules.adoc#TreasuryModule-LogTransferHelperInputValidation1Failed-bool-address-address- +:xref-TreasuryModule-LogTransferHelperInputValidation2Failed-uint256-uint256-: xref:modules.adoc#TreasuryModule-LogTransferHelperInputValidation2Failed-uint256-uint256- +:xref-TreasuryModule-LogTransferHelperCallFailed-bool-uint256-bytes-: xref:modules.adoc#TreasuryModule-LogTransferHelperCallFailed-bool-uint256-bytes- += Modules + +[.readme-notice] +NOTE: This document is better viewed at https://docs.etherisc.com/contracts/api/modules + +== Contracts + +:PRODUCT_OWNER_ROLE: pass:normal[xref:#AccessController-PRODUCT_OWNER_ROLE-bytes32[`++PRODUCT_OWNER_ROLE++`]] +:ORACLE_PROVIDER_ROLE: pass:normal[xref:#AccessController-ORACLE_PROVIDER_ROLE-bytes32[`++ORACLE_PROVIDER_ROLE++`]] +:RISKPOOL_KEEPER_ROLE: pass:normal[xref:#AccessController-RISKPOOL_KEEPER_ROLE-bytes32[`++RISKPOOL_KEEPER_ROLE++`]] +:validRole: pass:normal[xref:#AccessController-validRole-mapping-bytes32----bool-[`++validRole++`]] +:_afterInitialize: pass:normal[xref:#AccessController-_afterInitialize--[`++_afterInitialize++`]] +:_getName: pass:normal[xref:#AccessController-_getName--[`++_getName++`]] +:setDefaultAdminRole: pass:normal[xref:#AccessController-setDefaultAdminRole-address-[`++setDefaultAdminRole++`]] +:grantRole: pass:normal[xref:#AccessController-grantRole-bytes32-address-[`++grantRole++`]] +:revokeRole: pass:normal[xref:#AccessController-revokeRole-bytes32-address-[`++revokeRole++`]] +:renounceRole: pass:normal[xref:#AccessController-renounceRole-bytes32-address-[`++renounceRole++`]] +:addRole: pass:normal[xref:#AccessController-addRole-bytes32-[`++addRole++`]] +:invalidateRole: pass:normal[xref:#AccessController-invalidateRole-bytes32-[`++invalidateRole++`]] +:hasRole: pass:normal[xref:#AccessController-hasRole-bytes32-address-[`++hasRole++`]] +:getDefaultAdminRole: pass:normal[xref:#AccessController-getDefaultAdminRole--[`++getDefaultAdminRole++`]] +:getProductOwnerRole: pass:normal[xref:#AccessController-getProductOwnerRole--[`++getProductOwnerRole++`]] +:getOracleProviderRole: pass:normal[xref:#AccessController-getOracleProviderRole--[`++getOracleProviderRole++`]] +:getRiskpoolKeeperRole: pass:normal[xref:#AccessController-getRiskpoolKeeperRole--[`++getRiskpoolKeeperRole++`]] + +[.contract] +[[AccessController]] +=== `++AccessController++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/modules/AccessController.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/modules/AccessController.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-AccessController-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-AccessController-_getName--}[`++_getName()++`] +* {xref-AccessController-setDefaultAdminRole-address-}[`++setDefaultAdminRole(defaultAdmin)++`] +* {xref-AccessController-grantRole-bytes32-address-}[`++grantRole(role, principal)++`] +* {xref-AccessController-revokeRole-bytes32-address-}[`++revokeRole(role, principal)++`] +* {xref-AccessController-renounceRole-bytes32-address-}[`++renounceRole(role, principal)++`] +* {xref-AccessController-addRole-bytes32-}[`++addRole(role)++`] +* {xref-AccessController-invalidateRole-bytes32-}[`++invalidateRole(role)++`] +* {xref-AccessController-hasRole-bytes32-address-}[`++hasRole(role, principal)++`] +* {xref-AccessController-getDefaultAdminRole--}[`++getDefaultAdminRole()++`] +* {xref-AccessController-getProductOwnerRole--}[`++getProductOwnerRole()++`] +* {xref-AccessController-getOracleProviderRole--}[`++getOracleProviderRole()++`] +* {xref-AccessController-getRiskpoolKeeperRole--}[`++getRiskpoolKeeperRole()++`] + +[.contract-subindex-inherited] +.AccessControlEnumerable +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControlEnumerable-supportsInterface-bytes4-[`++supportsInterface(interfaceId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControlEnumerable-getRoleMember-bytes32-uint256-[`++getRoleMember(role, index)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControlEnumerable-getRoleMemberCount-bytes32-[`++getRoleMemberCount(role)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControlEnumerable-_grantRole-bytes32-address-[`++_grantRole(role, account)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControlEnumerable-_revokeRole-bytes32-address-[`++_revokeRole(role, account)++`] + +[.contract-subindex-inherited] +.AccessControl +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl-hasRole-bytes32-address-[`++hasRole(role, account)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl-_checkRole-bytes32-[`++_checkRole(role)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl-_checkRole-bytes32-address-[`++_checkRole(role, account)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl-getRoleAdmin-bytes32-[`++getRoleAdmin(role)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl-grantRole-bytes32-address-[`++grantRole(role, account)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl-revokeRole-bytes32-address-[`++revokeRole(role, account)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl-renounceRole-bytes32-address-[`++renounceRole(role, account)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl-_setupRole-bytes32-address-[`++_setupRole(role, account)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#AccessControl-_setRoleAdmin-bytes32-bytes32-[`++_setRoleAdmin(role, adminRole)++`] + +[.contract-subindex-inherited] +.ERC165 + +[.contract-subindex-inherited] +.IERC165 + +[.contract-subindex-inherited] +.IAccessControlEnumerable + +[.contract-subindex-inherited] +.IAccessControl + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IAccess + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.AccessControlEnumerable + +[.contract-subindex-inherited] +.AccessControl + +[.contract-subindex-inherited] +.ERC165 + +[.contract-subindex-inherited] +.IERC165 + +[.contract-subindex-inherited] +.IAccessControlEnumerable + +[.contract-subindex-inherited] +.IAccessControl +* https://docs.openzeppelin.com/contracts/3.x/api/access#IAccessControl-RoleAdminChanged-bytes32-bytes32-bytes32-[`++RoleAdminChanged(role, previousAdminRole, newAdminRole)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#IAccessControl-RoleGranted-bytes32-address-address-[`++RoleGranted(role, account, sender)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#IAccessControl-RoleRevoked-bytes32-address-address-[`++RoleRevoked(role, account, sender)++`] + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IAccess + +-- + +[.contract-item] +[[AccessController-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[AccessController-_getName--]] +==== `[.contract-item-name]#++_getName++#++() → bytes32++` [.item-kind]#internal# + +[.contract-item] +[[AccessController-setDefaultAdminRole-address-]] +==== `[.contract-item-name]#++setDefaultAdminRole++#++(address defaultAdmin)++` [.item-kind]#external# + +[.contract-item] +[[AccessController-grantRole-bytes32-address-]] +==== `[.contract-item-name]#++grantRole++#++(bytes32 role, address principal)++` [.item-kind]#public# + +[.contract-item] +[[AccessController-revokeRole-bytes32-address-]] +==== `[.contract-item-name]#++revokeRole++#++(bytes32 role, address principal)++` [.item-kind]#public# + +[.contract-item] +[[AccessController-renounceRole-bytes32-address-]] +==== `[.contract-item-name]#++renounceRole++#++(bytes32 role, address principal)++` [.item-kind]#public# + +[.contract-item] +[[AccessController-addRole-bytes32-]] +==== `[.contract-item-name]#++addRole++#++(bytes32 role)++` [.item-kind]#public# + +[.contract-item] +[[AccessController-invalidateRole-bytes32-]] +==== `[.contract-item-name]#++invalidateRole++#++(bytes32 role)++` [.item-kind]#public# + +[.contract-item] +[[AccessController-hasRole-bytes32-address-]] +==== `[.contract-item-name]#++hasRole++#++(bytes32 role, address principal) → bool++` [.item-kind]#public# + +[.contract-item] +[[AccessController-getDefaultAdminRole--]] +==== `[.contract-item-name]#++getDefaultAdminRole++#++() → bytes32++` [.item-kind]#public# + +[.contract-item] +[[AccessController-getProductOwnerRole--]] +==== `[.contract-item-name]#++getProductOwnerRole++#++() → bytes32++` [.item-kind]#public# + +[.contract-item] +[[AccessController-getOracleProviderRole--]] +==== `[.contract-item-name]#++getOracleProviderRole++#++() → bytes32++` [.item-kind]#public# + +[.contract-item] +[[AccessController-getRiskpoolKeeperRole--]] +==== `[.contract-item-name]#++getRiskpoolKeeperRole++#++() → bytes32++` [.item-kind]#public# + +:onlyRiskpoolService: pass:normal[xref:#BundleController-onlyRiskpoolService--[`++onlyRiskpoolService++`]] +:onlyFundableBundle: pass:normal[xref:#BundleController-onlyFundableBundle-uint256-[`++onlyFundableBundle++`]] +:_afterInitialize: pass:normal[xref:#BundleController-_afterInitialize--[`++_afterInitialize++`]] +:create: pass:normal[xref:#BundleController-create-address-uint256-bytes-uint256-[`++create++`]] +:fund: pass:normal[xref:#BundleController-fund-uint256-uint256-[`++fund++`]] +:defund: pass:normal[xref:#BundleController-defund-uint256-uint256-[`++defund++`]] +:lock: pass:normal[xref:#BundleController-lock-uint256-[`++lock++`]] +:unlock: pass:normal[xref:#BundleController-unlock-uint256-[`++unlock++`]] +:close: pass:normal[xref:#BundleController-close-uint256-[`++close++`]] +:burn: pass:normal[xref:#BundleController-burn-uint256-[`++burn++`]] +:collateralizePolicy: pass:normal[xref:#BundleController-collateralizePolicy-uint256-bytes32-uint256-[`++collateralizePolicy++`]] +:processPremium: pass:normal[xref:#BundleController-processPremium-uint256-bytes32-uint256-[`++processPremium++`]] +:processPayout: pass:normal[xref:#BundleController-processPayout-uint256-bytes32-uint256-[`++processPayout++`]] +:releasePolicy: pass:normal[xref:#BundleController-releasePolicy-uint256-bytes32-[`++releasePolicy++`]] +:getOwner: pass:normal[xref:#BundleController-getOwner-uint256-[`++getOwner++`]] +:getState: pass:normal[xref:#BundleController-getState-uint256-[`++getState++`]] +:getFilter: pass:normal[xref:#BundleController-getFilter-uint256-[`++getFilter++`]] +:getCapacity: pass:normal[xref:#BundleController-getCapacity-uint256-[`++getCapacity++`]] +:getTotalValueLocked: pass:normal[xref:#BundleController-getTotalValueLocked-uint256-[`++getTotalValueLocked++`]] +:getBalance: pass:normal[xref:#BundleController-getBalance-uint256-[`++getBalance++`]] +:getToken: pass:normal[xref:#BundleController-getToken--[`++getToken++`]] +:getBundle: pass:normal[xref:#BundleController-getBundle-uint256-[`++getBundle++`]] +:bundles: pass:normal[xref:#BundleController-bundles--[`++bundles++`]] +:unburntBundles: pass:normal[xref:#BundleController-unburntBundles-uint256-[`++unburntBundles++`]] +:_getPoolController: pass:normal[xref:#BundleController-_getPoolController--[`++_getPoolController++`]] +:_changeState: pass:normal[xref:#BundleController-_changeState-uint256-enum-IBundle-BundleState-[`++_changeState++`]] +:_setState: pass:normal[xref:#BundleController-_setState-uint256-enum-IBundle-BundleState-[`++_setState++`]] +:_checkStateTransition: pass:normal[xref:#BundleController-_checkStateTransition-enum-IBundle-BundleState-enum-IBundle-BundleState-[`++_checkStateTransition++`]] + +[.contract] +[[BundleController]] +=== `++BundleController++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/modules/BundleController.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/modules/BundleController.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-BundleController-onlyRiskpoolService--}[`++onlyRiskpoolService()++`] +* {xref-BundleController-onlyFundableBundle-uint256-}[`++onlyFundableBundle(bundleId)++`] +-- + +[.contract-index] +.Functions +-- +* {xref-BundleController-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-BundleController-create-address-uint256-bytes-uint256-}[`++create(owner_, riskpoolId_, filter_, amount_)++`] +* {xref-BundleController-fund-uint256-uint256-}[`++fund(bundleId, amount)++`] +* {xref-BundleController-defund-uint256-uint256-}[`++defund(bundleId, amount)++`] +* {xref-BundleController-lock-uint256-}[`++lock(bundleId)++`] +* {xref-BundleController-unlock-uint256-}[`++unlock(bundleId)++`] +* {xref-BundleController-close-uint256-}[`++close(bundleId)++`] +* {xref-BundleController-burn-uint256-}[`++burn(bundleId)++`] +* {xref-BundleController-collateralizePolicy-uint256-bytes32-uint256-}[`++collateralizePolicy(bundleId, processId, amount)++`] +* {xref-BundleController-processPremium-uint256-bytes32-uint256-}[`++processPremium(bundleId, processId, amount)++`] +* {xref-BundleController-processPayout-uint256-bytes32-uint256-}[`++processPayout(bundleId, processId, amount)++`] +* {xref-BundleController-releasePolicy-uint256-bytes32-}[`++releasePolicy(bundleId, processId)++`] +* {xref-BundleController-getOwner-uint256-}[`++getOwner(bundleId)++`] +* {xref-BundleController-getState-uint256-}[`++getState(bundleId)++`] +* {xref-BundleController-getFilter-uint256-}[`++getFilter(bundleId)++`] +* {xref-BundleController-getCapacity-uint256-}[`++getCapacity(bundleId)++`] +* {xref-BundleController-getTotalValueLocked-uint256-}[`++getTotalValueLocked(bundleId)++`] +* {xref-BundleController-getBalance-uint256-}[`++getBalance(bundleId)++`] +* {xref-BundleController-getToken--}[`++getToken()++`] +* {xref-BundleController-getBundle-uint256-}[`++getBundle(bundleId)++`] +* {xref-BundleController-bundles--}[`++bundles()++`] +* {xref-BundleController-unburntBundles-uint256-}[`++unburntBundles(riskpoolId)++`] +* {xref-BundleController-_getPoolController--}[`++_getPoolController()++`] +* {xref-BundleController-_changeState-uint256-enum-IBundle-BundleState-}[`++_changeState(bundleId, newState)++`] +* {xref-BundleController-_setState-uint256-enum-IBundle-BundleState-}[`++_setState(bundleId, newState)++`] +* {xref-BundleController-_checkStateTransition-enum-IBundle-BundleState-enum-IBundle-BundleState-}[`++_checkStateTransition(oldState, newState)++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IBundle + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IBundle +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IBundle.sol[`++LogBundleCreated(bundleId, riskpoolId, owner, state, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IBundle.sol[`++LogBundleStateChanged(bundleId, oldState, newState)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IBundle.sol[`++LogBundleCapitalProvided(bundleId, sender, amount, capacity)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IBundle.sol[`++LogBundleCapitalWithdrawn(bundleId, recipient, amount, capacity)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IBundle.sol[`++LogBundlePolicyCollateralized(bundleId, processId, amount, capacity)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IBundle.sol[`++LogBundlePayoutProcessed(bundleId, processId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IBundle.sol[`++LogBundlePolicyReleased(bundleId, processId, amount, capacity)++`] + +-- + +[.contract-item] +[[BundleController-onlyRiskpoolService--]] +==== `[.contract-item-name]#++onlyRiskpoolService++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[BundleController-onlyFundableBundle-uint256-]] +==== `[.contract-item-name]#++onlyFundableBundle++#++(uint256 bundleId)++` [.item-kind]#modifier# + +[.contract-item] +[[BundleController-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[BundleController-create-address-uint256-bytes-uint256-]] +==== `[.contract-item-name]#++create++#++(address owner_, uint256 riskpoolId_, bytes filter_, uint256 amount_) → uint256 bundleId++` [.item-kind]#external# + +[.contract-item] +[[BundleController-fund-uint256-uint256-]] +==== `[.contract-item-name]#++fund++#++(uint256 bundleId, uint256 amount)++` [.item-kind]#external# + +[.contract-item] +[[BundleController-defund-uint256-uint256-]] +==== `[.contract-item-name]#++defund++#++(uint256 bundleId, uint256 amount)++` [.item-kind]#external# + +[.contract-item] +[[BundleController-lock-uint256-]] +==== `[.contract-item-name]#++lock++#++(uint256 bundleId)++` [.item-kind]#external# + +[.contract-item] +[[BundleController-unlock-uint256-]] +==== `[.contract-item-name]#++unlock++#++(uint256 bundleId)++` [.item-kind]#external# + +[.contract-item] +[[BundleController-close-uint256-]] +==== `[.contract-item-name]#++close++#++(uint256 bundleId)++` [.item-kind]#external# + +[.contract-item] +[[BundleController-burn-uint256-]] +==== `[.contract-item-name]#++burn++#++(uint256 bundleId)++` [.item-kind]#external# + +[.contract-item] +[[BundleController-collateralizePolicy-uint256-bytes32-uint256-]] +==== `[.contract-item-name]#++collateralizePolicy++#++(uint256 bundleId, bytes32 processId, uint256 amount)++` [.item-kind]#external# + +[.contract-item] +[[BundleController-processPremium-uint256-bytes32-uint256-]] +==== `[.contract-item-name]#++processPremium++#++(uint256 bundleId, bytes32 processId, uint256 amount)++` [.item-kind]#external# + +[.contract-item] +[[BundleController-processPayout-uint256-bytes32-uint256-]] +==== `[.contract-item-name]#++processPayout++#++(uint256 bundleId, bytes32 processId, uint256 amount)++` [.item-kind]#external# + +[.contract-item] +[[BundleController-releasePolicy-uint256-bytes32-]] +==== `[.contract-item-name]#++releasePolicy++#++(uint256 bundleId, bytes32 processId) → uint256 remainingCollateralAmount++` [.item-kind]#external# + +[.contract-item] +[[BundleController-getOwner-uint256-]] +==== `[.contract-item-name]#++getOwner++#++(uint256 bundleId) → address++` [.item-kind]#public# + +[.contract-item] +[[BundleController-getState-uint256-]] +==== `[.contract-item-name]#++getState++#++(uint256 bundleId) → enum IBundle.BundleState++` [.item-kind]#public# + +[.contract-item] +[[BundleController-getFilter-uint256-]] +==== `[.contract-item-name]#++getFilter++#++(uint256 bundleId) → bytes++` [.item-kind]#public# + +[.contract-item] +[[BundleController-getCapacity-uint256-]] +==== `[.contract-item-name]#++getCapacity++#++(uint256 bundleId) → uint256++` [.item-kind]#public# + +[.contract-item] +[[BundleController-getTotalValueLocked-uint256-]] +==== `[.contract-item-name]#++getTotalValueLocked++#++(uint256 bundleId) → uint256++` [.item-kind]#public# + +[.contract-item] +[[BundleController-getBalance-uint256-]] +==== `[.contract-item-name]#++getBalance++#++(uint256 bundleId) → uint256++` [.item-kind]#public# + +[.contract-item] +[[BundleController-getToken--]] +==== `[.contract-item-name]#++getToken++#++() → contract BundleToken++` [.item-kind]#external# + +[.contract-item] +[[BundleController-getBundle-uint256-]] +==== `[.contract-item-name]#++getBundle++#++(uint256 bundleId) → struct IBundle.Bundle++` [.item-kind]#public# + +[.contract-item] +[[BundleController-bundles--]] +==== `[.contract-item-name]#++bundles++#++() → uint256++` [.item-kind]#public# + +[.contract-item] +[[BundleController-unburntBundles-uint256-]] +==== `[.contract-item-name]#++unburntBundles++#++(uint256 riskpoolId) → uint256++` [.item-kind]#external# + +[.contract-item] +[[BundleController-_getPoolController--]] +==== `[.contract-item-name]#++_getPoolController++#++() → contract PoolController _poolController++` [.item-kind]#internal# + +[.contract-item] +[[BundleController-_changeState-uint256-enum-IBundle-BundleState-]] +==== `[.contract-item-name]#++_changeState++#++(uint256 bundleId, enum IBundle.BundleState newState)++` [.item-kind]#internal# + +[.contract-item] +[[BundleController-_setState-uint256-enum-IBundle-BundleState-]] +==== `[.contract-item-name]#++_setState++#++(uint256 bundleId, enum IBundle.BundleState newState)++` [.item-kind]#internal# + +[.contract-item] +[[BundleController-_checkStateTransition-enum-IBundle-BundleState-enum-IBundle-BundleState-]] +==== `[.contract-item-name]#++_checkStateTransition++#++(enum IBundle.BundleState oldState, enum IBundle.BundleState newState)++` [.item-kind]#internal# + +:onlyComponentOwnerService: pass:normal[xref:#ComponentController-onlyComponentOwnerService--[`++onlyComponentOwnerService++`]] +:onlyInstanceOperatorService: pass:normal[xref:#ComponentController-onlyInstanceOperatorService--[`++onlyInstanceOperatorService++`]] +:propose: pass:normal[xref:#ComponentController-propose-contract-IComponent-[`++propose++`]] +:_persistComponent: pass:normal[xref:#ComponentController-_persistComponent-contract-IComponent-[`++_persistComponent++`]] +:exists: pass:normal[xref:#ComponentController-exists-uint256-[`++exists++`]] +:approve: pass:normal[xref:#ComponentController-approve-uint256-[`++approve++`]] +:decline: pass:normal[xref:#ComponentController-decline-uint256-[`++decline++`]] +:suspend: pass:normal[xref:#ComponentController-suspend-uint256-[`++suspend++`]] +:resume: pass:normal[xref:#ComponentController-resume-uint256-[`++resume++`]] +:pause: pass:normal[xref:#ComponentController-pause-uint256-[`++pause++`]] +:unpause: pass:normal[xref:#ComponentController-unpause-uint256-[`++unpause++`]] +:archiveFromComponentOwner: pass:normal[xref:#ComponentController-archiveFromComponentOwner-uint256-[`++archiveFromComponentOwner++`]] +:archiveFromInstanceOperator: pass:normal[xref:#ComponentController-archiveFromInstanceOperator-uint256-[`++archiveFromInstanceOperator++`]] +:getComponent: pass:normal[xref:#ComponentController-getComponent-uint256-[`++getComponent++`]] +:getComponentId: pass:normal[xref:#ComponentController-getComponentId-address-[`++getComponentId++`]] +:getComponentType: pass:normal[xref:#ComponentController-getComponentType-uint256-[`++getComponentType++`]] +:getComponentState: pass:normal[xref:#ComponentController-getComponentState-uint256-[`++getComponentState++`]] +:getOracleId: pass:normal[xref:#ComponentController-getOracleId-uint256-[`++getOracleId++`]] +:getRiskpoolId: pass:normal[xref:#ComponentController-getRiskpoolId-uint256-[`++getRiskpoolId++`]] +:getProductId: pass:normal[xref:#ComponentController-getProductId-uint256-[`++getProductId++`]] +:getRequiredRole: pass:normal[xref:#ComponentController-getRequiredRole-enum-IComponent-ComponentType-[`++getRequiredRole++`]] +:components: pass:normal[xref:#ComponentController-components--[`++components++`]] +:products: pass:normal[xref:#ComponentController-products--[`++products++`]] +:oracles: pass:normal[xref:#ComponentController-oracles--[`++oracles++`]] +:riskpools: pass:normal[xref:#ComponentController-riskpools--[`++riskpools++`]] +:isProduct: pass:normal[xref:#ComponentController-isProduct-uint256-[`++isProduct++`]] +:isOracle: pass:normal[xref:#ComponentController-isOracle-uint256-[`++isOracle++`]] +:isRiskpool: pass:normal[xref:#ComponentController-isRiskpool-uint256-[`++isRiskpool++`]] +:getPolicyFlow: pass:normal[xref:#ComponentController-getPolicyFlow-uint256-[`++getPolicyFlow++`]] +:_changeState: pass:normal[xref:#ComponentController-_changeState-uint256-enum-IComponent-ComponentState-[`++_changeState++`]] +:_checkStateTransition: pass:normal[xref:#ComponentController-_checkStateTransition-enum-IComponent-ComponentState-enum-IComponent-ComponentState-[`++_checkStateTransition++`]] + +[.contract] +[[ComponentController]] +=== `++ComponentController++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/modules/ComponentController.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/modules/ComponentController.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-ComponentController-onlyComponentOwnerService--}[`++onlyComponentOwnerService()++`] +* {xref-ComponentController-onlyInstanceOperatorService--}[`++onlyInstanceOperatorService()++`] +-- + +[.contract-index] +.Functions +-- +* {xref-ComponentController-propose-contract-IComponent-}[`++propose(component)++`] +* {xref-ComponentController-_persistComponent-contract-IComponent-}[`++_persistComponent(component)++`] +* {xref-ComponentController-exists-uint256-}[`++exists(id)++`] +* {xref-ComponentController-approve-uint256-}[`++approve(id)++`] +* {xref-ComponentController-decline-uint256-}[`++decline(id)++`] +* {xref-ComponentController-suspend-uint256-}[`++suspend(id)++`] +* {xref-ComponentController-resume-uint256-}[`++resume(id)++`] +* {xref-ComponentController-pause-uint256-}[`++pause(id)++`] +* {xref-ComponentController-unpause-uint256-}[`++unpause(id)++`] +* {xref-ComponentController-archiveFromComponentOwner-uint256-}[`++archiveFromComponentOwner(id)++`] +* {xref-ComponentController-archiveFromInstanceOperator-uint256-}[`++archiveFromInstanceOperator(id)++`] +* {xref-ComponentController-getComponent-uint256-}[`++getComponent(id)++`] +* {xref-ComponentController-getComponentId-address-}[`++getComponentId(componentAddress)++`] +* {xref-ComponentController-getComponentType-uint256-}[`++getComponentType(id)++`] +* {xref-ComponentController-getComponentState-uint256-}[`++getComponentState(id)++`] +* {xref-ComponentController-getOracleId-uint256-}[`++getOracleId(idx)++`] +* {xref-ComponentController-getRiskpoolId-uint256-}[`++getRiskpoolId(idx)++`] +* {xref-ComponentController-getProductId-uint256-}[`++getProductId(idx)++`] +* {xref-ComponentController-getRequiredRole-enum-IComponent-ComponentType-}[`++getRequiredRole(componentType)++`] +* {xref-ComponentController-components--}[`++components()++`] +* {xref-ComponentController-products--}[`++products()++`] +* {xref-ComponentController-oracles--}[`++oracles()++`] +* {xref-ComponentController-riskpools--}[`++riskpools()++`] +* {xref-ComponentController-isProduct-uint256-}[`++isProduct(id)++`] +* {xref-ComponentController-isOracle-uint256-}[`++isOracle(id)++`] +* {xref-ComponentController-isRiskpool-uint256-}[`++isRiskpool(id)++`] +* {xref-ComponentController-getPolicyFlow-uint256-}[`++getPolicyFlow(productId)++`] +* {xref-ComponentController-_changeState-uint256-enum-IComponent-ComponentState-}[`++_changeState(componentId, newState)++`] +* {xref-ComponentController-_checkStateTransition-enum-IComponent-ComponentState-enum-IComponent-ComponentState-}[`++_checkStateTransition(oldState, newState)++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IComponentEvents + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IComponentEvents +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentProposed(componentName, componentType, componentAddress, id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentApproved(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentDeclined(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentSuspended(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentResumed(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentPaused(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentUnpaused(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentArchived(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentStateChanged(id, stateOld, stateNew)++`] + +-- + +[.contract-item] +[[ComponentController-onlyComponentOwnerService--]] +==== `[.contract-item-name]#++onlyComponentOwnerService++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[ComponentController-onlyInstanceOperatorService--]] +==== `[.contract-item-name]#++onlyInstanceOperatorService++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[ComponentController-propose-contract-IComponent-]] +==== `[.contract-item-name]#++propose++#++(contract IComponent component)++` [.item-kind]#external# + +[.contract-item] +[[ComponentController-_persistComponent-contract-IComponent-]] +==== `[.contract-item-name]#++_persistComponent++#++(contract IComponent component) → uint256 id++` [.item-kind]#internal# + +[.contract-item] +[[ComponentController-exists-uint256-]] +==== `[.contract-item-name]#++exists++#++(uint256 id) → bool++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-approve-uint256-]] +==== `[.contract-item-name]#++approve++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[ComponentController-decline-uint256-]] +==== `[.contract-item-name]#++decline++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[ComponentController-suspend-uint256-]] +==== `[.contract-item-name]#++suspend++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[ComponentController-resume-uint256-]] +==== `[.contract-item-name]#++resume++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[ComponentController-pause-uint256-]] +==== `[.contract-item-name]#++pause++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[ComponentController-unpause-uint256-]] +==== `[.contract-item-name]#++unpause++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[ComponentController-archiveFromComponentOwner-uint256-]] +==== `[.contract-item-name]#++archiveFromComponentOwner++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[ComponentController-archiveFromInstanceOperator-uint256-]] +==== `[.contract-item-name]#++archiveFromInstanceOperator++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[ComponentController-getComponent-uint256-]] +==== `[.contract-item-name]#++getComponent++#++(uint256 id) → contract IComponent component++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-getComponentId-address-]] +==== `[.contract-item-name]#++getComponentId++#++(address componentAddress) → uint256 id++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-getComponentType-uint256-]] +==== `[.contract-item-name]#++getComponentType++#++(uint256 id) → enum IComponent.ComponentType componentType++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-getComponentState-uint256-]] +==== `[.contract-item-name]#++getComponentState++#++(uint256 id) → enum IComponent.ComponentState componentState++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-getOracleId-uint256-]] +==== `[.contract-item-name]#++getOracleId++#++(uint256 idx) → uint256 oracleId++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-getRiskpoolId-uint256-]] +==== `[.contract-item-name]#++getRiskpoolId++#++(uint256 idx) → uint256 riskpoolId++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-getProductId-uint256-]] +==== `[.contract-item-name]#++getProductId++#++(uint256 idx) → uint256 productId++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-getRequiredRole-enum-IComponent-ComponentType-]] +==== `[.contract-item-name]#++getRequiredRole++#++(enum IComponent.ComponentType componentType) → bytes32++` [.item-kind]#external# + +[.contract-item] +[[ComponentController-components--]] +==== `[.contract-item-name]#++components++#++() → uint256 count++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-products--]] +==== `[.contract-item-name]#++products++#++() → uint256 count++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-oracles--]] +==== `[.contract-item-name]#++oracles++#++() → uint256 count++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-riskpools--]] +==== `[.contract-item-name]#++riskpools++#++() → uint256 count++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-isProduct-uint256-]] +==== `[.contract-item-name]#++isProduct++#++(uint256 id) → bool++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-isOracle-uint256-]] +==== `[.contract-item-name]#++isOracle++#++(uint256 id) → bool++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-isRiskpool-uint256-]] +==== `[.contract-item-name]#++isRiskpool++#++(uint256 id) → bool++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-getPolicyFlow-uint256-]] +==== `[.contract-item-name]#++getPolicyFlow++#++(uint256 productId) → address _policyFlow++` [.item-kind]#public# + +[.contract-item] +[[ComponentController-_changeState-uint256-enum-IComponent-ComponentState-]] +==== `[.contract-item-name]#++_changeState++#++(uint256 componentId, enum IComponent.ComponentState newState)++` [.item-kind]#internal# + +[.contract-item] +[[ComponentController-_checkStateTransition-enum-IComponent-ComponentState-enum-IComponent-ComponentState-]] +==== `[.contract-item-name]#++_checkStateTransition++#++(enum IComponent.ComponentState oldState, enum IComponent.ComponentState newState)++` [.item-kind]#internal# + +:_afterInitialize: pass:normal[xref:#LicenseController-_afterInitialize--[`++_afterInitialize++`]] +:getAuthorizationStatus: pass:normal[xref:#LicenseController-getAuthorizationStatus-address-[`++getAuthorizationStatus++`]] +:_isValidCall: pass:normal[xref:#LicenseController-_isValidCall-uint256-[`++_isValidCall++`]] +:_getProduct: pass:normal[xref:#LicenseController-_getProduct-uint256-[`++_getProduct++`]] + +[.contract] +[[LicenseController]] +=== `++LicenseController++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/modules/LicenseController.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/modules/LicenseController.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-LicenseController-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-LicenseController-getAuthorizationStatus-address-}[`++getAuthorizationStatus(productAddress)++`] +* {xref-LicenseController-_isValidCall-uint256-}[`++_isValidCall(productId)++`] +* {xref-LicenseController-_getProduct-uint256-}[`++_getProduct(id)++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.ILicense + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.ILicense + +-- + +[.contract-item] +[[LicenseController-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[LicenseController-getAuthorizationStatus-address-]] +==== `[.contract-item-name]#++getAuthorizationStatus++#++(address productAddress) → uint256 productId, bool isAuthorized, address policyFlow++` [.item-kind]#public# + +[.contract-item] +[[LicenseController-_isValidCall-uint256-]] +==== `[.contract-item-name]#++_isValidCall++#++(uint256 productId) → bool++` [.item-kind]#internal# + +[.contract-item] +[[LicenseController-_getProduct-uint256-]] +==== `[.contract-item-name]#++_getProduct++#++(uint256 id) → contract IProduct product++` [.item-kind]#internal# + +:metadata: pass:normal[xref:#PolicyController-metadata-mapping-bytes32----struct-IPolicy-Metadata-[`++metadata++`]] +:applications: pass:normal[xref:#PolicyController-applications-mapping-bytes32----struct-IPolicy-Application-[`++applications++`]] +:policies: pass:normal[xref:#PolicyController-policies-mapping-bytes32----struct-IPolicy-Policy-[`++policies++`]] +:claims: pass:normal[xref:#PolicyController-claims-mapping-bytes32----mapping-uint256----struct-IPolicy-Claim--[`++claims++`]] +:payouts: pass:normal[xref:#PolicyController-payouts-mapping-bytes32----mapping-uint256----struct-IPolicy-Payout--[`++payouts++`]] +:payoutCount: pass:normal[xref:#PolicyController-payoutCount-mapping-bytes32----uint256-[`++payoutCount++`]] +:_afterInitialize: pass:normal[xref:#PolicyController-_afterInitialize--[`++_afterInitialize++`]] +:createPolicyFlow: pass:normal[xref:#PolicyController-createPolicyFlow-address-uint256-bytes-[`++createPolicyFlow++`]] +:createApplication: pass:normal[xref:#PolicyController-createApplication-bytes32-uint256-uint256-bytes-[`++createApplication++`]] +:collectPremium: pass:normal[xref:#PolicyController-collectPremium-bytes32-uint256-[`++collectPremium++`]] +:revokeApplication: pass:normal[xref:#PolicyController-revokeApplication-bytes32-[`++revokeApplication++`]] +:underwriteApplication: pass:normal[xref:#PolicyController-underwriteApplication-bytes32-[`++underwriteApplication++`]] +:declineApplication: pass:normal[xref:#PolicyController-declineApplication-bytes32-[`++declineApplication++`]] +:createPolicy: pass:normal[xref:#PolicyController-createPolicy-bytes32-[`++createPolicy++`]] +:adjustPremiumSumInsured: pass:normal[xref:#PolicyController-adjustPremiumSumInsured-bytes32-uint256-uint256-[`++adjustPremiumSumInsured++`]] +:expirePolicy: pass:normal[xref:#PolicyController-expirePolicy-bytes32-[`++expirePolicy++`]] +:closePolicy: pass:normal[xref:#PolicyController-closePolicy-bytes32-[`++closePolicy++`]] +:createClaim: pass:normal[xref:#PolicyController-createClaim-bytes32-uint256-bytes-[`++createClaim++`]] +:confirmClaim: pass:normal[xref:#PolicyController-confirmClaim-bytes32-uint256-uint256-[`++confirmClaim++`]] +:declineClaim: pass:normal[xref:#PolicyController-declineClaim-bytes32-uint256-[`++declineClaim++`]] +:closeClaim: pass:normal[xref:#PolicyController-closeClaim-bytes32-uint256-[`++closeClaim++`]] +:createPayout: pass:normal[xref:#PolicyController-createPayout-bytes32-uint256-uint256-bytes-[`++createPayout++`]] +:processPayout: pass:normal[xref:#PolicyController-processPayout-bytes32-uint256-[`++processPayout++`]] +:getMetadata: pass:normal[xref:#PolicyController-getMetadata-bytes32-[`++getMetadata++`]] +:getApplication: pass:normal[xref:#PolicyController-getApplication-bytes32-[`++getApplication++`]] +:getNumberOfClaims: pass:normal[xref:#PolicyController-getNumberOfClaims-bytes32-[`++getNumberOfClaims++`]] +:getNumberOfPayouts: pass:normal[xref:#PolicyController-getNumberOfPayouts-bytes32-[`++getNumberOfPayouts++`]] +:getPolicy: pass:normal[xref:#PolicyController-getPolicy-bytes32-[`++getPolicy++`]] +:getClaim: pass:normal[xref:#PolicyController-getClaim-bytes32-uint256-[`++getClaim++`]] +:getPayout: pass:normal[xref:#PolicyController-getPayout-bytes32-uint256-[`++getPayout++`]] +:processIds: pass:normal[xref:#PolicyController-processIds--[`++processIds++`]] + +[.contract] +[[PolicyController]] +=== `++PolicyController++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/modules/PolicyController.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/modules/PolicyController.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-PolicyController-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-PolicyController-createPolicyFlow-address-uint256-bytes-}[`++createPolicyFlow(owner, productId, data)++`] +* {xref-PolicyController-createApplication-bytes32-uint256-uint256-bytes-}[`++createApplication(processId, premiumAmount, sumInsuredAmount, data)++`] +* {xref-PolicyController-collectPremium-bytes32-uint256-}[`++collectPremium(processId, amount)++`] +* {xref-PolicyController-revokeApplication-bytes32-}[`++revokeApplication(processId)++`] +* {xref-PolicyController-underwriteApplication-bytes32-}[`++underwriteApplication(processId)++`] +* {xref-PolicyController-declineApplication-bytes32-}[`++declineApplication(processId)++`] +* {xref-PolicyController-createPolicy-bytes32-}[`++createPolicy(processId)++`] +* {xref-PolicyController-adjustPremiumSumInsured-bytes32-uint256-uint256-}[`++adjustPremiumSumInsured(processId, expectedPremiumAmount, sumInsuredAmount)++`] +* {xref-PolicyController-expirePolicy-bytes32-}[`++expirePolicy(processId)++`] +* {xref-PolicyController-closePolicy-bytes32-}[`++closePolicy(processId)++`] +* {xref-PolicyController-createClaim-bytes32-uint256-bytes-}[`++createClaim(processId, claimAmount, data)++`] +* {xref-PolicyController-confirmClaim-bytes32-uint256-uint256-}[`++confirmClaim(processId, claimId, confirmedAmount)++`] +* {xref-PolicyController-declineClaim-bytes32-uint256-}[`++declineClaim(processId, claimId)++`] +* {xref-PolicyController-closeClaim-bytes32-uint256-}[`++closeClaim(processId, claimId)++`] +* {xref-PolicyController-createPayout-bytes32-uint256-uint256-bytes-}[`++createPayout(processId, claimId, payoutAmount, data)++`] +* {xref-PolicyController-processPayout-bytes32-uint256-}[`++processPayout(processId, payoutId)++`] +* {xref-PolicyController-getMetadata-bytes32-}[`++getMetadata(processId)++`] +* {xref-PolicyController-getApplication-bytes32-}[`++getApplication(processId)++`] +* {xref-PolicyController-getNumberOfClaims-bytes32-}[`++getNumberOfClaims(processId)++`] +* {xref-PolicyController-getNumberOfPayouts-bytes32-}[`++getNumberOfPayouts(processId)++`] +* {xref-PolicyController-getPolicy-bytes32-}[`++getPolicy(processId)++`] +* {xref-PolicyController-getClaim-bytes32-uint256-}[`++getClaim(processId, claimId)++`] +* {xref-PolicyController-getPayout-bytes32-uint256-}[`++getPayout(processId, payoutId)++`] +* {xref-PolicyController-processIds--}[`++processIds()++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IPolicy + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IPolicy +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogMetadataCreated(owner, processId, productId, state)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogMetadataStateChanged(processId, state)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogApplicationCreated(processId, premiumAmount, sumInsuredAmount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogApplicationRevoked(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogApplicationUnderwritten(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogApplicationDeclined(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogPolicyCreated(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogPolicyExpired(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogPolicyClosed(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogPremiumCollected(processId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogApplicationSumInsuredAdjusted(processId, sumInsuredAmountOld, sumInsuredAmount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogApplicationPremiumAdjusted(processId, premiumAmountOld, premiumAmount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogPolicyPremiumAdjusted(processId, premiumExpectedAmountOld, premiumExpectedAmount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogClaimCreated(processId, claimId, claimAmount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogClaimConfirmed(processId, claimId, confirmedAmount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogClaimDeclined(processId, claimId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogClaimClosed(processId, claimId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogPayoutCreated(processId, claimId, payoutId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPolicy.sol[`++LogPayoutProcessed(processId, payoutId)++`] + +-- + +[.contract-item] +[[PolicyController-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[PolicyController-createPolicyFlow-address-uint256-bytes-]] +==== `[.contract-item-name]#++createPolicyFlow++#++(address owner, uint256 productId, bytes data) → bytes32 processId++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-createApplication-bytes32-uint256-uint256-bytes-]] +==== `[.contract-item-name]#++createApplication++#++(bytes32 processId, uint256 premiumAmount, uint256 sumInsuredAmount, bytes data)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-collectPremium-bytes32-uint256-]] +==== `[.contract-item-name]#++collectPremium++#++(bytes32 processId, uint256 amount)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-revokeApplication-bytes32-]] +==== `[.contract-item-name]#++revokeApplication++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-underwriteApplication-bytes32-]] +==== `[.contract-item-name]#++underwriteApplication++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-declineApplication-bytes32-]] +==== `[.contract-item-name]#++declineApplication++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-createPolicy-bytes32-]] +==== `[.contract-item-name]#++createPolicy++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-adjustPremiumSumInsured-bytes32-uint256-uint256-]] +==== `[.contract-item-name]#++adjustPremiumSumInsured++#++(bytes32 processId, uint256 expectedPremiumAmount, uint256 sumInsuredAmount)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-expirePolicy-bytes32-]] +==== `[.contract-item-name]#++expirePolicy++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-closePolicy-bytes32-]] +==== `[.contract-item-name]#++closePolicy++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-createClaim-bytes32-uint256-bytes-]] +==== `[.contract-item-name]#++createClaim++#++(bytes32 processId, uint256 claimAmount, bytes data) → uint256 claimId++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-confirmClaim-bytes32-uint256-uint256-]] +==== `[.contract-item-name]#++confirmClaim++#++(bytes32 processId, uint256 claimId, uint256 confirmedAmount)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-declineClaim-bytes32-uint256-]] +==== `[.contract-item-name]#++declineClaim++#++(bytes32 processId, uint256 claimId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-closeClaim-bytes32-uint256-]] +==== `[.contract-item-name]#++closeClaim++#++(bytes32 processId, uint256 claimId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-createPayout-bytes32-uint256-uint256-bytes-]] +==== `[.contract-item-name]#++createPayout++#++(bytes32 processId, uint256 claimId, uint256 payoutAmount, bytes data) → uint256 payoutId++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-processPayout-bytes32-uint256-]] +==== `[.contract-item-name]#++processPayout++#++(bytes32 processId, uint256 payoutId)++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-getMetadata-bytes32-]] +==== `[.contract-item-name]#++getMetadata++#++(bytes32 processId) → struct IPolicy.Metadata _metadata++` [.item-kind]#public# + +[.contract-item] +[[PolicyController-getApplication-bytes32-]] +==== `[.contract-item-name]#++getApplication++#++(bytes32 processId) → struct IPolicy.Application application++` [.item-kind]#public# + +[.contract-item] +[[PolicyController-getNumberOfClaims-bytes32-]] +==== `[.contract-item-name]#++getNumberOfClaims++#++(bytes32 processId) → uint256 numberOfClaims++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-getNumberOfPayouts-bytes32-]] +==== `[.contract-item-name]#++getNumberOfPayouts++#++(bytes32 processId) → uint256 numberOfPayouts++` [.item-kind]#external# + +[.contract-item] +[[PolicyController-getPolicy-bytes32-]] +==== `[.contract-item-name]#++getPolicy++#++(bytes32 processId) → struct IPolicy.Policy policy++` [.item-kind]#public# + +[.contract-item] +[[PolicyController-getClaim-bytes32-uint256-]] +==== `[.contract-item-name]#++getClaim++#++(bytes32 processId, uint256 claimId) → struct IPolicy.Claim claim++` [.item-kind]#public# + +[.contract-item] +[[PolicyController-getPayout-bytes32-uint256-]] +==== `[.contract-item-name]#++getPayout++#++(bytes32 processId, uint256 payoutId) → struct IPolicy.Payout payout++` [.item-kind]#public# + +[.contract-item] +[[PolicyController-processIds--]] +==== `[.contract-item-name]#++processIds++#++() → uint256++` [.item-kind]#external# + +:FULL_COLLATERALIZATION_LEVEL: pass:normal[xref:#PoolController-FULL_COLLATERALIZATION_LEVEL-uint256[`++FULL_COLLATERALIZATION_LEVEL++`]] +:COLLATERALIZATION_LEVEL_CAP: pass:normal[xref:#PoolController-COLLATERALIZATION_LEVEL_CAP-uint256[`++COLLATERALIZATION_LEVEL_CAP++`]] +:DEFAULT_MAX_NUMBER_OF_ACTIVE_BUNDLES: pass:normal[xref:#PoolController-DEFAULT_MAX_NUMBER_OF_ACTIVE_BUNDLES-uint256[`++DEFAULT_MAX_NUMBER_OF_ACTIVE_BUNDLES++`]] +:onlyInstanceOperatorService: pass:normal[xref:#PoolController-onlyInstanceOperatorService--[`++onlyInstanceOperatorService++`]] +:onlyRiskpoolService: pass:normal[xref:#PoolController-onlyRiskpoolService--[`++onlyRiskpoolService++`]] +:onlyActivePool: pass:normal[xref:#PoolController-onlyActivePool-uint256-[`++onlyActivePool++`]] +:onlyActivePoolForProcess: pass:normal[xref:#PoolController-onlyActivePoolForProcess-bytes32-[`++onlyActivePoolForProcess++`]] +:_afterInitialize: pass:normal[xref:#PoolController-_afterInitialize--[`++_afterInitialize++`]] +:registerRiskpool: pass:normal[xref:#PoolController-registerRiskpool-uint256-address-address-uint256-uint256-[`++registerRiskpool++`]] +:setRiskpoolForProduct: pass:normal[xref:#PoolController-setRiskpoolForProduct-uint256-uint256-[`++setRiskpoolForProduct++`]] +:fund: pass:normal[xref:#PoolController-fund-uint256-uint256-[`++fund++`]] +:defund: pass:normal[xref:#PoolController-defund-uint256-uint256-[`++defund++`]] +:underwrite: pass:normal[xref:#PoolController-underwrite-bytes32-[`++underwrite++`]] +:calculateCollateral: pass:normal[xref:#PoolController-calculateCollateral-uint256-uint256-[`++calculateCollateral++`]] +:processPremium: pass:normal[xref:#PoolController-processPremium-bytes32-uint256-[`++processPremium++`]] +:processPayout: pass:normal[xref:#PoolController-processPayout-bytes32-uint256-[`++processPayout++`]] +:release: pass:normal[xref:#PoolController-release-bytes32-[`++release++`]] +:setMaximumNumberOfActiveBundles: pass:normal[xref:#PoolController-setMaximumNumberOfActiveBundles-uint256-uint256-[`++setMaximumNumberOfActiveBundles++`]] +:getMaximumNumberOfActiveBundles: pass:normal[xref:#PoolController-getMaximumNumberOfActiveBundles-uint256-[`++getMaximumNumberOfActiveBundles++`]] +:riskpools: pass:normal[xref:#PoolController-riskpools--[`++riskpools++`]] +:getRiskpool: pass:normal[xref:#PoolController-getRiskpool-uint256-[`++getRiskpool++`]] +:getRiskPoolForProduct: pass:normal[xref:#PoolController-getRiskPoolForProduct-uint256-[`++getRiskPoolForProduct++`]] +:activeBundles: pass:normal[xref:#PoolController-activeBundles-uint256-[`++activeBundles++`]] +:getActiveBundleId: pass:normal[xref:#PoolController-getActiveBundleId-uint256-uint256-[`++getActiveBundleId++`]] +:addBundleIdToActiveSet: pass:normal[xref:#PoolController-addBundleIdToActiveSet-uint256-uint256-[`++addBundleIdToActiveSet++`]] +:removeBundleIdFromActiveSet: pass:normal[xref:#PoolController-removeBundleIdFromActiveSet-uint256-uint256-[`++removeBundleIdFromActiveSet++`]] +:getFullCollateralizationLevel: pass:normal[xref:#PoolController-getFullCollateralizationLevel--[`++getFullCollateralizationLevel++`]] +:_getRiskpoolComponent: pass:normal[xref:#PoolController-_getRiskpoolComponent-struct-IPolicy-Metadata-[`++_getRiskpoolComponent++`]] +:_getRiskpoolForId: pass:normal[xref:#PoolController-_getRiskpoolForId-uint256-[`++_getRiskpoolForId++`]] + +[.contract] +[[PoolController]] +=== `++PoolController++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/modules/PoolController.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/modules/PoolController.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-PoolController-onlyInstanceOperatorService--}[`++onlyInstanceOperatorService()++`] +* {xref-PoolController-onlyRiskpoolService--}[`++onlyRiskpoolService()++`] +* {xref-PoolController-onlyActivePool-uint256-}[`++onlyActivePool(riskpoolId)++`] +* {xref-PoolController-onlyActivePoolForProcess-bytes32-}[`++onlyActivePoolForProcess(processId)++`] +-- + +[.contract-index] +.Functions +-- +* {xref-PoolController-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-PoolController-registerRiskpool-uint256-address-address-uint256-uint256-}[`++registerRiskpool(riskpoolId, wallet, erc20Token, collateralizationLevel, sumOfSumInsuredCap)++`] +* {xref-PoolController-setRiskpoolForProduct-uint256-uint256-}[`++setRiskpoolForProduct(productId, riskpoolId)++`] +* {xref-PoolController-fund-uint256-uint256-}[`++fund(riskpoolId, amount)++`] +* {xref-PoolController-defund-uint256-uint256-}[`++defund(riskpoolId, amount)++`] +* {xref-PoolController-underwrite-bytes32-}[`++underwrite(processId)++`] +* {xref-PoolController-calculateCollateral-uint256-uint256-}[`++calculateCollateral(riskpoolId, sumInsuredAmount)++`] +* {xref-PoolController-processPremium-bytes32-uint256-}[`++processPremium(processId, amount)++`] +* {xref-PoolController-processPayout-bytes32-uint256-}[`++processPayout(processId, amount)++`] +* {xref-PoolController-release-bytes32-}[`++release(processId)++`] +* {xref-PoolController-setMaximumNumberOfActiveBundles-uint256-uint256-}[`++setMaximumNumberOfActiveBundles(riskpoolId, maxNumberOfActiveBundles)++`] +* {xref-PoolController-getMaximumNumberOfActiveBundles-uint256-}[`++getMaximumNumberOfActiveBundles(riskpoolId)++`] +* {xref-PoolController-riskpools--}[`++riskpools()++`] +* {xref-PoolController-getRiskpool-uint256-}[`++getRiskpool(riskpoolId)++`] +* {xref-PoolController-getRiskPoolForProduct-uint256-}[`++getRiskPoolForProduct(productId)++`] +* {xref-PoolController-activeBundles-uint256-}[`++activeBundles(riskpoolId)++`] +* {xref-PoolController-getActiveBundleId-uint256-uint256-}[`++getActiveBundleId(riskpoolId, bundleIdx)++`] +* {xref-PoolController-addBundleIdToActiveSet-uint256-uint256-}[`++addBundleIdToActiveSet(riskpoolId, bundleId)++`] +* {xref-PoolController-removeBundleIdFromActiveSet-uint256-uint256-}[`++removeBundleIdFromActiveSet(riskpoolId, bundleId)++`] +* {xref-PoolController-getFullCollateralizationLevel--}[`++getFullCollateralizationLevel()++`] +* {xref-PoolController-_getRiskpoolComponent-struct-IPolicy-Metadata-}[`++_getRiskpoolComponent(metadata)++`] +* {xref-PoolController-_getRiskpoolForId-uint256-}[`++_getRiskpoolForId(riskpoolId)++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IPool + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IPool +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPool.sol[`++LogRiskpoolRegistered(riskpoolId, wallet, erc20Token, collateralizationLevel, sumOfSumInsuredCap)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPool.sol[`++LogRiskpoolRequiredCollateral(processId, sumInsured, collateral)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPool.sol[`++LogRiskpoolCollateralizationFailed(riskpoolId, processId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPool.sol[`++LogRiskpoolCollateralizationSucceeded(riskpoolId, processId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IPool.sol[`++LogRiskpoolCollateralReleased(riskpoolId, processId, amount)++`] + +-- + +[.contract-item] +[[PoolController-onlyInstanceOperatorService--]] +==== `[.contract-item-name]#++onlyInstanceOperatorService++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[PoolController-onlyRiskpoolService--]] +==== `[.contract-item-name]#++onlyRiskpoolService++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[PoolController-onlyActivePool-uint256-]] +==== `[.contract-item-name]#++onlyActivePool++#++(uint256 riskpoolId)++` [.item-kind]#modifier# + +[.contract-item] +[[PoolController-onlyActivePoolForProcess-bytes32-]] +==== `[.contract-item-name]#++onlyActivePoolForProcess++#++(bytes32 processId)++` [.item-kind]#modifier# + +[.contract-item] +[[PoolController-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[PoolController-registerRiskpool-uint256-address-address-uint256-uint256-]] +==== `[.contract-item-name]#++registerRiskpool++#++(uint256 riskpoolId, address wallet, address erc20Token, uint256 collateralizationLevel, uint256 sumOfSumInsuredCap)++` [.item-kind]#external# + +[.contract-item] +[[PoolController-setRiskpoolForProduct-uint256-uint256-]] +==== `[.contract-item-name]#++setRiskpoolForProduct++#++(uint256 productId, uint256 riskpoolId)++` [.item-kind]#external# + +[.contract-item] +[[PoolController-fund-uint256-uint256-]] +==== `[.contract-item-name]#++fund++#++(uint256 riskpoolId, uint256 amount)++` [.item-kind]#external# + +[.contract-item] +[[PoolController-defund-uint256-uint256-]] +==== `[.contract-item-name]#++defund++#++(uint256 riskpoolId, uint256 amount)++` [.item-kind]#external# + +[.contract-item] +[[PoolController-underwrite-bytes32-]] +==== `[.contract-item-name]#++underwrite++#++(bytes32 processId) → bool success++` [.item-kind]#external# + +[.contract-item] +[[PoolController-calculateCollateral-uint256-uint256-]] +==== `[.contract-item-name]#++calculateCollateral++#++(uint256 riskpoolId, uint256 sumInsuredAmount) → uint256 collateralAmount++` [.item-kind]#public# + +[.contract-item] +[[PoolController-processPremium-bytes32-uint256-]] +==== `[.contract-item-name]#++processPremium++#++(bytes32 processId, uint256 amount)++` [.item-kind]#external# + +[.contract-item] +[[PoolController-processPayout-bytes32-uint256-]] +==== `[.contract-item-name]#++processPayout++#++(bytes32 processId, uint256 amount)++` [.item-kind]#external# + +[.contract-item] +[[PoolController-release-bytes32-]] +==== `[.contract-item-name]#++release++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[PoolController-setMaximumNumberOfActiveBundles-uint256-uint256-]] +==== `[.contract-item-name]#++setMaximumNumberOfActiveBundles++#++(uint256 riskpoolId, uint256 maxNumberOfActiveBundles)++` [.item-kind]#external# + +[.contract-item] +[[PoolController-getMaximumNumberOfActiveBundles-uint256-]] +==== `[.contract-item-name]#++getMaximumNumberOfActiveBundles++#++(uint256 riskpoolId) → uint256 maximumNumberOfActiveBundles++` [.item-kind]#public# + +[.contract-item] +[[PoolController-riskpools--]] +==== `[.contract-item-name]#++riskpools++#++() → uint256 idx++` [.item-kind]#external# + +[.contract-item] +[[PoolController-getRiskpool-uint256-]] +==== `[.contract-item-name]#++getRiskpool++#++(uint256 riskpoolId) → struct IPool.Pool riskPool++` [.item-kind]#public# + +[.contract-item] +[[PoolController-getRiskPoolForProduct-uint256-]] +==== `[.contract-item-name]#++getRiskPoolForProduct++#++(uint256 productId) → uint256 riskpoolId++` [.item-kind]#external# + +[.contract-item] +[[PoolController-activeBundles-uint256-]] +==== `[.contract-item-name]#++activeBundles++#++(uint256 riskpoolId) → uint256 numberOfActiveBundles++` [.item-kind]#external# + +[.contract-item] +[[PoolController-getActiveBundleId-uint256-uint256-]] +==== `[.contract-item-name]#++getActiveBundleId++#++(uint256 riskpoolId, uint256 bundleIdx) → uint256 bundleId++` [.item-kind]#external# + +[.contract-item] +[[PoolController-addBundleIdToActiveSet-uint256-uint256-]] +==== `[.contract-item-name]#++addBundleIdToActiveSet++#++(uint256 riskpoolId, uint256 bundleId)++` [.item-kind]#external# + +[.contract-item] +[[PoolController-removeBundleIdFromActiveSet-uint256-uint256-]] +==== `[.contract-item-name]#++removeBundleIdFromActiveSet++#++(uint256 riskpoolId, uint256 bundleId)++` [.item-kind]#external# + +[.contract-item] +[[PoolController-getFullCollateralizationLevel--]] +==== `[.contract-item-name]#++getFullCollateralizationLevel++#++() → uint256++` [.item-kind]#external# + +[.contract-item] +[[PoolController-_getRiskpoolComponent-struct-IPolicy-Metadata-]] +==== `[.contract-item-name]#++_getRiskpoolComponent++#++(struct IPolicy.Metadata metadata) → contract IRiskpool riskpool++` [.item-kind]#internal# + +[.contract-item] +[[PoolController-_getRiskpoolForId-uint256-]] +==== `[.contract-item-name]#++_getRiskpoolForId++#++(uint256 riskpoolId) → contract IRiskpool riskpool++` [.item-kind]#internal# + +:onlyOracleService: pass:normal[xref:#QueryModule-onlyOracleService--[`++onlyOracleService++`]] +:onlyResponsibleOracle: pass:normal[xref:#QueryModule-onlyResponsibleOracle-uint256-address-[`++onlyResponsibleOracle++`]] +:_afterInitialize: pass:normal[xref:#QueryModule-_afterInitialize--[`++_afterInitialize++`]] +:request: pass:normal[xref:#QueryModule-request-bytes32-bytes-string-address-uint256-[`++request++`]] +:respond: pass:normal[xref:#QueryModule-respond-uint256-address-bytes-[`++respond++`]] +:cancel: pass:normal[xref:#QueryModule-cancel-uint256-[`++cancel++`]] +:getProcessId: pass:normal[xref:#QueryModule-getProcessId-uint256-[`++getProcessId++`]] +:getOracleRequestCount: pass:normal[xref:#QueryModule-getOracleRequestCount--[`++getOracleRequestCount++`]] +:_getOracle: pass:normal[xref:#QueryModule-_getOracle-uint256-[`++_getOracle++`]] + +[.contract] +[[QueryModule]] +=== `++QueryModule++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/modules/QueryModule.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/modules/QueryModule.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-QueryModule-onlyOracleService--}[`++onlyOracleService()++`] +* {xref-QueryModule-onlyResponsibleOracle-uint256-address-}[`++onlyResponsibleOracle(requestId, responder)++`] +-- + +[.contract-index] +.Functions +-- +* {xref-QueryModule-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-QueryModule-request-bytes32-bytes-string-address-uint256-}[`++request(processId, input, callbackMethodName, callbackContractAddress, responsibleOracleId)++`] +* {xref-QueryModule-respond-uint256-address-bytes-}[`++respond(requestId, responder, data)++`] +* {xref-QueryModule-cancel-uint256-}[`++cancel(requestId)++`] +* {xref-QueryModule-getProcessId-uint256-}[`++getProcessId(requestId)++`] +* {xref-QueryModule-getOracleRequestCount--}[`++getOracleRequestCount()++`] +* {xref-QueryModule-_getOracle-uint256-}[`++_getOracle(id)++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IQuery + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IQuery +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IQuery.sol[`++LogOracleRequested(processId, requestId, responsibleOracleId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IQuery.sol[`++LogOracleResponded(processId, requestId, responder, success)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IQuery.sol[`++LogOracleCanceled(requestId)++`] + +-- + +[.contract-item] +[[QueryModule-onlyOracleService--]] +==== `[.contract-item-name]#++onlyOracleService++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[QueryModule-onlyResponsibleOracle-uint256-address-]] +==== `[.contract-item-name]#++onlyResponsibleOracle++#++(uint256 requestId, address responder)++` [.item-kind]#modifier# + +[.contract-item] +[[QueryModule-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[QueryModule-request-bytes32-bytes-string-address-uint256-]] +==== `[.contract-item-name]#++request++#++(bytes32 processId, bytes input, string callbackMethodName, address callbackContractAddress, uint256 responsibleOracleId) → uint256 requestId++` [.item-kind]#external# + +[.contract-item] +[[QueryModule-respond-uint256-address-bytes-]] +==== `[.contract-item-name]#++respond++#++(uint256 requestId, address responder, bytes data)++` [.item-kind]#external# + +[.contract-item] +[[QueryModule-cancel-uint256-]] +==== `[.contract-item-name]#++cancel++#++(uint256 requestId)++` [.item-kind]#external# + +[.contract-item] +[[QueryModule-getProcessId-uint256-]] +==== `[.contract-item-name]#++getProcessId++#++(uint256 requestId) → bytes32 processId++` [.item-kind]#external# + +[.contract-item] +[[QueryModule-getOracleRequestCount--]] +==== `[.contract-item-name]#++getOracleRequestCount++#++() → uint256 _count++` [.item-kind]#public# + +[.contract-item] +[[QueryModule-_getOracle-uint256-]] +==== `[.contract-item-name]#++_getOracle++#++(uint256 id) → contract IOracle oracle++` [.item-kind]#internal# + +:MAX_CONTRACTS: pass:normal[xref:#RegistryController-MAX_CONTRACTS-uint256[`++MAX_CONTRACTS++`]] +:release: pass:normal[xref:#RegistryController-release-bytes32[`++release++`]] +:startBlock: pass:normal[xref:#RegistryController-startBlock-uint256[`++startBlock++`]] +:_contracts: pass:normal[xref:#RegistryController-_contracts-mapping-bytes32----mapping-bytes32----address--[`++_contracts++`]] +:_contractsInRelease: pass:normal[xref:#RegistryController-_contractsInRelease-mapping-bytes32----uint256-[`++_contractsInRelease++`]] +:initializeRegistry: pass:normal[xref:#RegistryController-initializeRegistry-bytes32-[`++initializeRegistry++`]] +:ensureSender: pass:normal[xref:#RegistryController-ensureSender-address-bytes32-[`++ensureSender++`]] +:getRelease: pass:normal[xref:#RegistryController-getRelease--[`++getRelease++`]] +:getContract: pass:normal[xref:#RegistryController-getContract-bytes32-[`++getContract++`]] +:register: pass:normal[xref:#RegistryController-register-bytes32-address-[`++register++`]] +:deregister: pass:normal[xref:#RegistryController-deregister-bytes32-[`++deregister++`]] +:getContractInRelease: pass:normal[xref:#RegistryController-getContractInRelease-bytes32-bytes32-[`++getContractInRelease++`]] +:registerInRelease: pass:normal[xref:#RegistryController-registerInRelease-bytes32-bytes32-address-[`++registerInRelease++`]] +:deregisterInRelease: pass:normal[xref:#RegistryController-deregisterInRelease-bytes32-bytes32-[`++deregisterInRelease++`]] +:prepareRelease: pass:normal[xref:#RegistryController-prepareRelease-bytes32-[`++prepareRelease++`]] +:contracts: pass:normal[xref:#RegistryController-contracts--[`++contracts++`]] +:contractName: pass:normal[xref:#RegistryController-contractName-uint256-[`++contractName++`]] +:_getContractInRelease: pass:normal[xref:#RegistryController-_getContractInRelease-bytes32-bytes32-[`++_getContractInRelease++`]] +:_registerInRelease: pass:normal[xref:#RegistryController-_registerInRelease-bytes32-bool-bytes32-address-[`++_registerInRelease++`]] +:_deregisterInRelease: pass:normal[xref:#RegistryController-_deregisterInRelease-bytes32-bytes32-[`++_deregisterInRelease++`]] + +[.contract] +[[RegistryController]] +=== `++RegistryController++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/modules/RegistryController.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/modules/RegistryController.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-RegistryController-initializeRegistry-bytes32-}[`++initializeRegistry(_initialRelease)++`] +* {xref-RegistryController-ensureSender-address-bytes32-}[`++ensureSender(sender, _contractName)++`] +* {xref-RegistryController-getRelease--}[`++getRelease()++`] +* {xref-RegistryController-getContract-bytes32-}[`++getContract(_contractName)++`] +* {xref-RegistryController-register-bytes32-address-}[`++register(_contractName, _contractAddress)++`] +* {xref-RegistryController-deregister-bytes32-}[`++deregister(_contractName)++`] +* {xref-RegistryController-getContractInRelease-bytes32-bytes32-}[`++getContractInRelease(_release, _contractName)++`] +* {xref-RegistryController-registerInRelease-bytes32-bytes32-address-}[`++registerInRelease(_release, _contractName, _contractAddress)++`] +* {xref-RegistryController-deregisterInRelease-bytes32-bytes32-}[`++deregisterInRelease(_release, _contractName)++`] +* {xref-RegistryController-prepareRelease-bytes32-}[`++prepareRelease(_newRelease)++`] +* {xref-RegistryController-contracts--}[`++contracts()++`] +* {xref-RegistryController-contractName-uint256-}[`++contractName(idx)++`] +* {xref-RegistryController-_getContractInRelease-bytes32-bytes32-}[`++_getContractInRelease(_release, _contractName)++`] +* {xref-RegistryController-_registerInRelease-bytes32-bool-bytes32-address-}[`++_registerInRelease(_release, isNewRelease, _contractName, _contractAddress)++`] +* {xref-RegistryController-_deregisterInRelease-bytes32-bytes32-}[`++_deregisterInRelease(_release, _contractName)++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IRegistry + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IRegistry +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IRegistry.sol[`++LogContractRegistered(release, contractName, contractAddress, isNew)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IRegistry.sol[`++LogContractDeregistered(release, contractName)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IRegistry.sol[`++LogReleasePrepared(release)++`] + +-- + +[.contract-item] +[[RegistryController-initializeRegistry-bytes32-]] +==== `[.contract-item-name]#++initializeRegistry++#++(bytes32 _initialRelease)++` [.item-kind]#public# + +[.contract-item] +[[RegistryController-ensureSender-address-bytes32-]] +==== `[.contract-item-name]#++ensureSender++#++(address sender, bytes32 _contractName) → bool _senderMatches++` [.item-kind]#external# + +[.contract-item] +[[RegistryController-getRelease--]] +==== `[.contract-item-name]#++getRelease++#++() → bytes32 _release++` [.item-kind]#external# + +get current release + +[.contract-item] +[[RegistryController-getContract-bytes32-]] +==== `[.contract-item-name]#++getContract++#++(bytes32 _contractName) → address _addr++` [.item-kind]#public# + +Get contract's address in the current release + +[.contract-item] +[[RegistryController-register-bytes32-address-]] +==== `[.contract-item-name]#++register++#++(bytes32 _contractName, address _contractAddress)++` [.item-kind]#external# + +Register contract in the current release + +[.contract-item] +[[RegistryController-deregister-bytes32-]] +==== `[.contract-item-name]#++deregister++#++(bytes32 _contractName)++` [.item-kind]#external# + +Deregister contract in the current release + +[.contract-item] +[[RegistryController-getContractInRelease-bytes32-bytes32-]] +==== `[.contract-item-name]#++getContractInRelease++#++(bytes32 _release, bytes32 _contractName) → address _addr++` [.item-kind]#external# + +Get contract's address in certain release + +[.contract-item] +[[RegistryController-registerInRelease-bytes32-bytes32-address-]] +==== `[.contract-item-name]#++registerInRelease++#++(bytes32 _release, bytes32 _contractName, address _contractAddress)++` [.item-kind]#external# + +Register contract in certain release + +[.contract-item] +[[RegistryController-deregisterInRelease-bytes32-bytes32-]] +==== `[.contract-item-name]#++deregisterInRelease++#++(bytes32 _release, bytes32 _contractName)++` [.item-kind]#external# + +[.contract-item] +[[RegistryController-prepareRelease-bytes32-]] +==== `[.contract-item-name]#++prepareRelease++#++(bytes32 _newRelease)++` [.item-kind]#external# + +Create new release, copy contracts from previous release + +[.contract-item] +[[RegistryController-contracts--]] +==== `[.contract-item-name]#++contracts++#++() → uint256 _numberOfContracts++` [.item-kind]#external# + +[.contract-item] +[[RegistryController-contractName-uint256-]] +==== `[.contract-item-name]#++contractName++#++(uint256 idx) → bytes32 _contractName++` [.item-kind]#external# + +[.contract-item] +[[RegistryController-_getContractInRelease-bytes32-bytes32-]] +==== `[.contract-item-name]#++_getContractInRelease++#++(bytes32 _release, bytes32 _contractName) → address _addr++` [.item-kind]#internal# + +Get contract's address in certain release + +[.contract-item] +[[RegistryController-_registerInRelease-bytes32-bool-bytes32-address-]] +==== `[.contract-item-name]#++_registerInRelease++#++(bytes32 _release, bool isNewRelease, bytes32 _contractName, address _contractAddress)++` [.item-kind]#internal# + +Register contract in certain release + +[.contract-item] +[[RegistryController-_deregisterInRelease-bytes32-bytes32-]] +==== `[.contract-item-name]#++_deregisterInRelease++#++(bytes32 _release, bytes32 _contractName)++` [.item-kind]#internal# + +Deregister contract in certain release + +:FRACTION_FULL_UNIT: pass:normal[xref:#TreasuryModule-FRACTION_FULL_UNIT-uint256[`++FRACTION_FULL_UNIT++`]] +:FRACTIONAL_FEE_MAX: pass:normal[xref:#TreasuryModule-FRACTIONAL_FEE_MAX-uint256[`++FRACTIONAL_FEE_MAX++`]] +:LogTransferHelperInputValidation1Failed: pass:normal[xref:#TreasuryModule-LogTransferHelperInputValidation1Failed-bool-address-address-[`++LogTransferHelperInputValidation1Failed++`]] +:LogTransferHelperInputValidation2Failed: pass:normal[xref:#TreasuryModule-LogTransferHelperInputValidation2Failed-uint256-uint256-[`++LogTransferHelperInputValidation2Failed++`]] +:LogTransferHelperCallFailed: pass:normal[xref:#TreasuryModule-LogTransferHelperCallFailed-bool-uint256-bytes-[`++LogTransferHelperCallFailed++`]] +:instanceWalletDefined: pass:normal[xref:#TreasuryModule-instanceWalletDefined--[`++instanceWalletDefined++`]] +:riskpoolWalletDefinedForProcess: pass:normal[xref:#TreasuryModule-riskpoolWalletDefinedForProcess-bytes32-[`++riskpoolWalletDefinedForProcess++`]] +:riskpoolWalletDefinedForBundle: pass:normal[xref:#TreasuryModule-riskpoolWalletDefinedForBundle-uint256-[`++riskpoolWalletDefinedForBundle++`]] +:whenNotSuspended: pass:normal[xref:#TreasuryModule-whenNotSuspended--[`++whenNotSuspended++`]] +:onlyRiskpoolService: pass:normal[xref:#TreasuryModule-onlyRiskpoolService--[`++onlyRiskpoolService++`]] +:_afterInitialize: pass:normal[xref:#TreasuryModule-_afterInitialize--[`++_afterInitialize++`]] +:suspend: pass:normal[xref:#TreasuryModule-suspend--[`++suspend++`]] +:resume: pass:normal[xref:#TreasuryModule-resume--[`++resume++`]] +:setProductToken: pass:normal[xref:#TreasuryModule-setProductToken-uint256-address-[`++setProductToken++`]] +:setInstanceWallet: pass:normal[xref:#TreasuryModule-setInstanceWallet-address-[`++setInstanceWallet++`]] +:setRiskpoolWallet: pass:normal[xref:#TreasuryModule-setRiskpoolWallet-uint256-address-[`++setRiskpoolWallet++`]] +:createFeeSpecification: pass:normal[xref:#TreasuryModule-createFeeSpecification-uint256-uint256-uint256-bytes-[`++createFeeSpecification++`]] +:setPremiumFees: pass:normal[xref:#TreasuryModule-setPremiumFees-struct-ITreasury-FeeSpecification-[`++setPremiumFees++`]] +:setCapitalFees: pass:normal[xref:#TreasuryModule-setCapitalFees-struct-ITreasury-FeeSpecification-[`++setCapitalFees++`]] +:calculateFee: pass:normal[xref:#TreasuryModule-calculateFee-uint256-uint256-[`++calculateFee++`]] +:processPremium: pass:normal[xref:#TreasuryModule-processPremium-bytes32-[`++processPremium++`]] +:processPremium: pass:normal[xref:#TreasuryModule-processPremium-bytes32-uint256-[`++processPremium++`]] +:processPayout: pass:normal[xref:#TreasuryModule-processPayout-bytes32-uint256-[`++processPayout++`]] +:processCapital: pass:normal[xref:#TreasuryModule-processCapital-uint256-uint256-[`++processCapital++`]] +:processWithdrawal: pass:normal[xref:#TreasuryModule-processWithdrawal-uint256-uint256-[`++processWithdrawal++`]] +:getComponentToken: pass:normal[xref:#TreasuryModule-getComponentToken-uint256-[`++getComponentToken++`]] +:getFeeSpecification: pass:normal[xref:#TreasuryModule-getFeeSpecification-uint256-[`++getFeeSpecification++`]] +:getFractionFullUnit: pass:normal[xref:#TreasuryModule-getFractionFullUnit--[`++getFractionFullUnit++`]] +:getInstanceWallet: pass:normal[xref:#TreasuryModule-getInstanceWallet--[`++getInstanceWallet++`]] +:getRiskpoolWallet: pass:normal[xref:#TreasuryModule-getRiskpoolWallet-uint256-[`++getRiskpoolWallet++`]] +:_calculatePremiumFee: pass:normal[xref:#TreasuryModule-_calculatePremiumFee-struct-ITreasury-FeeSpecification-bytes32-[`++_calculatePremiumFee++`]] +:_calculateFee: pass:normal[xref:#TreasuryModule-_calculateFee-struct-ITreasury-FeeSpecification-uint256-[`++_calculateFee++`]] +:_getRiskpoolWallet: pass:normal[xref:#TreasuryModule-_getRiskpoolWallet-bytes32-[`++_getRiskpoolWallet++`]] + +[.contract] +[[TreasuryModule]] +=== `++TreasuryModule++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/modules/TreasuryModule.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/modules/TreasuryModule.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-TreasuryModule-instanceWalletDefined--}[`++instanceWalletDefined()++`] +* {xref-TreasuryModule-riskpoolWalletDefinedForProcess-bytes32-}[`++riskpoolWalletDefinedForProcess(processId)++`] +* {xref-TreasuryModule-riskpoolWalletDefinedForBundle-uint256-}[`++riskpoolWalletDefinedForBundle(bundleId)++`] +* {xref-TreasuryModule-whenNotSuspended--}[`++whenNotSuspended()++`] +* {xref-TreasuryModule-onlyRiskpoolService--}[`++onlyRiskpoolService()++`] +-- + +[.contract-index] +.Functions +-- +* {xref-TreasuryModule-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-TreasuryModule-suspend--}[`++suspend()++`] +* {xref-TreasuryModule-resume--}[`++resume()++`] +* {xref-TreasuryModule-setProductToken-uint256-address-}[`++setProductToken(productId, erc20Address)++`] +* {xref-TreasuryModule-setInstanceWallet-address-}[`++setInstanceWallet(instanceWalletAddress)++`] +* {xref-TreasuryModule-setRiskpoolWallet-uint256-address-}[`++setRiskpoolWallet(riskpoolId, riskpoolWalletAddress)++`] +* {xref-TreasuryModule-createFeeSpecification-uint256-uint256-uint256-bytes-}[`++createFeeSpecification(componentId, fixedFee, fractionalFee, feeCalculationData)++`] +* {xref-TreasuryModule-setPremiumFees-struct-ITreasury-FeeSpecification-}[`++setPremiumFees(feeSpec)++`] +* {xref-TreasuryModule-setCapitalFees-struct-ITreasury-FeeSpecification-}[`++setCapitalFees(feeSpec)++`] +* {xref-TreasuryModule-calculateFee-uint256-uint256-}[`++calculateFee(componentId, amount)++`] +* {xref-TreasuryModule-processPremium-bytes32-}[`++processPremium(processId)++`] +* {xref-TreasuryModule-processPremium-bytes32-uint256-}[`++processPremium(processId, amount)++`] +* {xref-TreasuryModule-processPayout-bytes32-uint256-}[`++processPayout(processId, payoutId)++`] +* {xref-TreasuryModule-processCapital-uint256-uint256-}[`++processCapital(bundleId, capitalAmount)++`] +* {xref-TreasuryModule-processWithdrawal-uint256-uint256-}[`++processWithdrawal(bundleId, amount)++`] +* {xref-TreasuryModule-getComponentToken-uint256-}[`++getComponentToken(componentId)++`] +* {xref-TreasuryModule-getFeeSpecification-uint256-}[`++getFeeSpecification(componentId)++`] +* {xref-TreasuryModule-getFractionFullUnit--}[`++getFractionFullUnit()++`] +* {xref-TreasuryModule-getInstanceWallet--}[`++getInstanceWallet()++`] +* {xref-TreasuryModule-getRiskpoolWallet-uint256-}[`++getRiskpoolWallet(riskpoolId)++`] +* {xref-TreasuryModule-_calculatePremiumFee-struct-ITreasury-FeeSpecification-bytes32-}[`++_calculatePremiumFee(feeSpec, processId)++`] +* {xref-TreasuryModule-_calculateFee-struct-ITreasury-FeeSpecification-uint256-}[`++_calculateFee(feeSpec, amount)++`] +* {xref-TreasuryModule-_getRiskpoolWallet-bytes32-}[`++_getRiskpoolWallet(processId)++`] + +[.contract-subindex-inherited] +.Pausable +* https://docs.openzeppelin.com/contracts/3.x/api/security#Pausable-paused--[`++paused()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/security#Pausable-_requireNotPaused--[`++_requireNotPaused()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/security#Pausable-_requirePaused--[`++_requirePaused()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/security#Pausable-_pause--[`++_pause()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/security#Pausable-_unpause--[`++_unpause()++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.ITreasury + +-- + +[.contract-index] +.Events +-- +* {xref-TreasuryModule-LogTransferHelperInputValidation1Failed-bool-address-address-}[`++LogTransferHelperInputValidation1Failed(tokenIsContract, from, to)++`] +* {xref-TreasuryModule-LogTransferHelperInputValidation2Failed-uint256-uint256-}[`++LogTransferHelperInputValidation2Failed(balance, allowance)++`] +* {xref-TreasuryModule-LogTransferHelperCallFailed-bool-uint256-bytes-}[`++LogTransferHelperCallFailed(callSuccess, returnDataLength, returnData)++`] + +[.contract-subindex-inherited] +.Pausable +* https://docs.openzeppelin.com/contracts/3.x/api/security#Pausable-Paused-address-[`++Paused(account)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/security#Pausable-Unpaused-address-[`++Unpaused(account)++`] + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.ITreasury +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasurySuspended()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryResumed()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryProductTokenSet(productId, riskpoolId, erc20Address)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryInstanceWalletSet(walletAddress)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryRiskpoolWalletSet(riskpoolId, walletAddress)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryPremiumFeesSet(productId, fixedFee, fractionalFee)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryCapitalFeesSet(riskpoolId, fixedFee, fractionalFee)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryPremiumTransferred(from, riskpoolWalletAddress, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryPayoutTransferred(riskpoolWalletAddress, to, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryCapitalTransferred(from, riskpoolWalletAddress, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryFeesTransferred(from, instanceWalletAddress, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryWithdrawalTransferred(riskpoolWalletAddress, to, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryPremiumProcessed(processId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryPayoutProcessed(riskpoolId, to, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryCapitalProcessed(riskpoolId, bundleId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/ITreasury.sol[`++LogTreasuryWithdrawalProcessed(riskpoolId, bundleId, amount)++`] + +-- + +[.contract-item] +[[TreasuryModule-instanceWalletDefined--]] +==== `[.contract-item-name]#++instanceWalletDefined++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[TreasuryModule-riskpoolWalletDefinedForProcess-bytes32-]] +==== `[.contract-item-name]#++riskpoolWalletDefinedForProcess++#++(bytes32 processId)++` [.item-kind]#modifier# + +[.contract-item] +[[TreasuryModule-riskpoolWalletDefinedForBundle-uint256-]] +==== `[.contract-item-name]#++riskpoolWalletDefinedForBundle++#++(uint256 bundleId)++` [.item-kind]#modifier# + +[.contract-item] +[[TreasuryModule-whenNotSuspended--]] +==== `[.contract-item-name]#++whenNotSuspended++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[TreasuryModule-onlyRiskpoolService--]] +==== `[.contract-item-name]#++onlyRiskpoolService++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[TreasuryModule-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[TreasuryModule-suspend--]] +==== `[.contract-item-name]#++suspend++#++()++` [.item-kind]#external# + +[.contract-item] +[[TreasuryModule-resume--]] +==== `[.contract-item-name]#++resume++#++()++` [.item-kind]#external# + +[.contract-item] +[[TreasuryModule-setProductToken-uint256-address-]] +==== `[.contract-item-name]#++setProductToken++#++(uint256 productId, address erc20Address)++` [.item-kind]#external# + +[.contract-item] +[[TreasuryModule-setInstanceWallet-address-]] +==== `[.contract-item-name]#++setInstanceWallet++#++(address instanceWalletAddress)++` [.item-kind]#external# + +[.contract-item] +[[TreasuryModule-setRiskpoolWallet-uint256-address-]] +==== `[.contract-item-name]#++setRiskpoolWallet++#++(uint256 riskpoolId, address riskpoolWalletAddress)++` [.item-kind]#external# + +[.contract-item] +[[TreasuryModule-createFeeSpecification-uint256-uint256-uint256-bytes-]] +==== `[.contract-item-name]#++createFeeSpecification++#++(uint256 componentId, uint256 fixedFee, uint256 fractionalFee, bytes feeCalculationData) → struct ITreasury.FeeSpecification++` [.item-kind]#external# + +[.contract-item] +[[TreasuryModule-setPremiumFees-struct-ITreasury-FeeSpecification-]] +==== `[.contract-item-name]#++setPremiumFees++#++(struct ITreasury.FeeSpecification feeSpec)++` [.item-kind]#external# + +[.contract-item] +[[TreasuryModule-setCapitalFees-struct-ITreasury-FeeSpecification-]] +==== `[.contract-item-name]#++setCapitalFees++#++(struct ITreasury.FeeSpecification feeSpec)++` [.item-kind]#external# + +[.contract-item] +[[TreasuryModule-calculateFee-uint256-uint256-]] +==== `[.contract-item-name]#++calculateFee++#++(uint256 componentId, uint256 amount) → uint256 feeAmount, uint256 netAmount++` [.item-kind]#public# + +[.contract-item] +[[TreasuryModule-processPremium-bytes32-]] +==== `[.contract-item-name]#++processPremium++#++(bytes32 processId) → bool success, uint256 feeAmount, uint256 netPremiumAmount++` [.item-kind]#external# + +[.contract-item] +[[TreasuryModule-processPremium-bytes32-uint256-]] +==== `[.contract-item-name]#++processPremium++#++(bytes32 processId, uint256 amount) → bool success, uint256 feeAmount, uint256 netAmount++` [.item-kind]#public# + +[.contract-item] +[[TreasuryModule-processPayout-bytes32-uint256-]] +==== `[.contract-item-name]#++processPayout++#++(bytes32 processId, uint256 payoutId) → uint256 feeAmount, uint256 netPayoutAmount++` [.item-kind]#external# + +[.contract-item] +[[TreasuryModule-processCapital-uint256-uint256-]] +==== `[.contract-item-name]#++processCapital++#++(uint256 bundleId, uint256 capitalAmount) → uint256 feeAmount, uint256 netCapitalAmount++` [.item-kind]#external# + +[.contract-item] +[[TreasuryModule-processWithdrawal-uint256-uint256-]] +==== `[.contract-item-name]#++processWithdrawal++#++(uint256 bundleId, uint256 amount) → uint256 feeAmount, uint256 netAmount++` [.item-kind]#external# + +[.contract-item] +[[TreasuryModule-getComponentToken-uint256-]] +==== `[.contract-item-name]#++getComponentToken++#++(uint256 componentId) → contract IERC20 token++` [.item-kind]#public# + +[.contract-item] +[[TreasuryModule-getFeeSpecification-uint256-]] +==== `[.contract-item-name]#++getFeeSpecification++#++(uint256 componentId) → struct ITreasury.FeeSpecification++` [.item-kind]#public# + +[.contract-item] +[[TreasuryModule-getFractionFullUnit--]] +==== `[.contract-item-name]#++getFractionFullUnit++#++() → uint256++` [.item-kind]#public# + +[.contract-item] +[[TreasuryModule-getInstanceWallet--]] +==== `[.contract-item-name]#++getInstanceWallet++#++() → address++` [.item-kind]#public# + +[.contract-item] +[[TreasuryModule-getRiskpoolWallet-uint256-]] +==== `[.contract-item-name]#++getRiskpoolWallet++#++(uint256 riskpoolId) → address++` [.item-kind]#public# + +[.contract-item] +[[TreasuryModule-_calculatePremiumFee-struct-ITreasury-FeeSpecification-bytes32-]] +==== `[.contract-item-name]#++_calculatePremiumFee++#++(struct ITreasury.FeeSpecification feeSpec, bytes32 processId) → struct IPolicy.Application application, uint256 feeAmount++` [.item-kind]#internal# + +[.contract-item] +[[TreasuryModule-_calculateFee-struct-ITreasury-FeeSpecification-uint256-]] +==== `[.contract-item-name]#++_calculateFee++#++(struct ITreasury.FeeSpecification feeSpec, uint256 amount) → uint256 feeAmount++` [.item-kind]#internal# + +[.contract-item] +[[TreasuryModule-_getRiskpoolWallet-bytes32-]] +==== `[.contract-item-name]#++_getRiskpoolWallet++#++(bytes32 processId) → uint256 riskpoolId, address riskpoolWalletAddress++` [.item-kind]#internal# + +[.contract-item] +[[TreasuryModule-LogTransferHelperInputValidation1Failed-bool-address-address-]] +==== `[.contract-item-name]#++LogTransferHelperInputValidation1Failed++#++(bool tokenIsContract, address from, address to)++` [.item-kind]#event# + +[.contract-item] +[[TreasuryModule-LogTransferHelperInputValidation2Failed-uint256-uint256-]] +==== `[.contract-item-name]#++LogTransferHelperInputValidation2Failed++#++(uint256 balance, uint256 allowance)++` [.item-kind]#event# + +[.contract-item] +[[TreasuryModule-LogTransferHelperCallFailed-bool-uint256-bytes-]] +==== `[.contract-item-name]#++LogTransferHelperCallFailed++#++(bool callSuccess, uint256 returnDataLength, bytes returnData)++` [.item-kind]#event# + diff --git a/docs/modules/api/pages/services.adoc b/docs/modules/api/pages/services.adoc new file mode 100644 index 00000000..056b0f8b --- /dev/null +++ b/docs/modules/api/pages/services.adoc @@ -0,0 +1,1134 @@ +:github-icon: pass:[] +:xref-ComponentOwnerService-onlyOwnerWithRoleFromComponent-contract-IComponent-: xref:services.adoc#ComponentOwnerService-onlyOwnerWithRoleFromComponent-contract-IComponent- +:xref-ComponentOwnerService-onlyOwnerWithRole-uint256-: xref:services.adoc#ComponentOwnerService-onlyOwnerWithRole-uint256- +:xref-ComponentOwnerService-_afterInitialize--: xref:services.adoc#ComponentOwnerService-_afterInitialize-- +:xref-ComponentOwnerService-propose-contract-IComponent-: xref:services.adoc#ComponentOwnerService-propose-contract-IComponent- +:xref-ComponentOwnerService-stake-uint256-: xref:services.adoc#ComponentOwnerService-stake-uint256- +:xref-ComponentOwnerService-withdraw-uint256-: xref:services.adoc#ComponentOwnerService-withdraw-uint256- +:xref-ComponentOwnerService-pause-uint256-: xref:services.adoc#ComponentOwnerService-pause-uint256- +:xref-ComponentOwnerService-unpause-uint256-: xref:services.adoc#ComponentOwnerService-unpause-uint256- +:xref-ComponentOwnerService-archive-uint256-: xref:services.adoc#ComponentOwnerService-archive-uint256- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-InstanceOperatorService-onlyInstanceOperatorAddress--: xref:services.adoc#InstanceOperatorService-onlyInstanceOperatorAddress-- +:xref-InstanceOperatorService-_afterInitialize--: xref:services.adoc#InstanceOperatorService-_afterInitialize-- +:xref-InstanceOperatorService-prepareRelease-bytes32-: xref:services.adoc#InstanceOperatorService-prepareRelease-bytes32- +:xref-InstanceOperatorService-register-bytes32-address-: xref:services.adoc#InstanceOperatorService-register-bytes32-address- +:xref-InstanceOperatorService-deregister-bytes32-: xref:services.adoc#InstanceOperatorService-deregister-bytes32- +:xref-InstanceOperatorService-registerInRelease-bytes32-bytes32-address-: xref:services.adoc#InstanceOperatorService-registerInRelease-bytes32-bytes32-address- +:xref-InstanceOperatorService-deregisterInRelease-bytes32-bytes32-: xref:services.adoc#InstanceOperatorService-deregisterInRelease-bytes32-bytes32- +:xref-InstanceOperatorService-createRole-bytes32-: xref:services.adoc#InstanceOperatorService-createRole-bytes32- +:xref-InstanceOperatorService-invalidateRole-bytes32-: xref:services.adoc#InstanceOperatorService-invalidateRole-bytes32- +:xref-InstanceOperatorService-grantRole-bytes32-address-: xref:services.adoc#InstanceOperatorService-grantRole-bytes32-address- +:xref-InstanceOperatorService-revokeRole-bytes32-address-: xref:services.adoc#InstanceOperatorService-revokeRole-bytes32-address- +:xref-InstanceOperatorService-approve-uint256-: xref:services.adoc#InstanceOperatorService-approve-uint256- +:xref-InstanceOperatorService-decline-uint256-: xref:services.adoc#InstanceOperatorService-decline-uint256- +:xref-InstanceOperatorService-suspend-uint256-: xref:services.adoc#InstanceOperatorService-suspend-uint256- +:xref-InstanceOperatorService-resume-uint256-: xref:services.adoc#InstanceOperatorService-resume-uint256- +:xref-InstanceOperatorService-archive-uint256-: xref:services.adoc#InstanceOperatorService-archive-uint256- +:xref-InstanceOperatorService-setDefaultStaking-uint16-bytes-: xref:services.adoc#InstanceOperatorService-setDefaultStaking-uint16-bytes- +:xref-InstanceOperatorService-adjustStakingRequirements-uint256-bytes-: xref:services.adoc#InstanceOperatorService-adjustStakingRequirements-uint256-bytes- +:xref-InstanceOperatorService-suspendTreasury--: xref:services.adoc#InstanceOperatorService-suspendTreasury-- +:xref-InstanceOperatorService-resumeTreasury--: xref:services.adoc#InstanceOperatorService-resumeTreasury-- +:xref-InstanceOperatorService-setInstanceWallet-address-: xref:services.adoc#InstanceOperatorService-setInstanceWallet-address- +:xref-InstanceOperatorService-setRiskpoolWallet-uint256-address-: xref:services.adoc#InstanceOperatorService-setRiskpoolWallet-uint256-address- +:xref-InstanceOperatorService-setProductToken-uint256-address-: xref:services.adoc#InstanceOperatorService-setProductToken-uint256-address- +:xref-InstanceOperatorService-createFeeSpecification-uint256-uint256-uint256-bytes-: xref:services.adoc#InstanceOperatorService-createFeeSpecification-uint256-uint256-uint256-bytes- +:xref-InstanceOperatorService-setPremiumFees-struct-ITreasury-FeeSpecification-: xref:services.adoc#InstanceOperatorService-setPremiumFees-struct-ITreasury-FeeSpecification- +:xref-InstanceOperatorService-setCapitalFees-struct-ITreasury-FeeSpecification-: xref:services.adoc#InstanceOperatorService-setCapitalFees-struct-ITreasury-FeeSpecification- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-InstanceService-_afterInitialize--: xref:services.adoc#InstanceService-_afterInitialize-- +:xref-InstanceService-_setChainNames--: xref:services.adoc#InstanceService-_setChainNames-- +:xref-InstanceService-getChainId--: xref:services.adoc#InstanceService-getChainId-- +:xref-InstanceService-getChainName--: xref:services.adoc#InstanceService-getChainName-- +:xref-InstanceService-getInstanceId--: xref:services.adoc#InstanceService-getInstanceId-- +:xref-InstanceService-getInstanceOperator--: xref:services.adoc#InstanceService-getInstanceOperator-- +:xref-InstanceService-getComponentOwnerService--: xref:services.adoc#InstanceService-getComponentOwnerService-- +:xref-InstanceService-getInstanceOperatorService--: xref:services.adoc#InstanceService-getInstanceOperatorService-- +:xref-InstanceService-getOracleService--: xref:services.adoc#InstanceService-getOracleService-- +:xref-InstanceService-getProductService--: xref:services.adoc#InstanceService-getProductService-- +:xref-InstanceService-getRiskpoolService--: xref:services.adoc#InstanceService-getRiskpoolService-- +:xref-InstanceService-getRegistry--: xref:services.adoc#InstanceService-getRegistry-- +:xref-InstanceService-contracts--: xref:services.adoc#InstanceService-contracts-- +:xref-InstanceService-contractName-uint256-: xref:services.adoc#InstanceService-contractName-uint256- +:xref-InstanceService-getDefaultAdminRole--: xref:services.adoc#InstanceService-getDefaultAdminRole-- +:xref-InstanceService-getProductOwnerRole--: xref:services.adoc#InstanceService-getProductOwnerRole-- +:xref-InstanceService-getOracleProviderRole--: xref:services.adoc#InstanceService-getOracleProviderRole-- +:xref-InstanceService-getRiskpoolKeeperRole--: xref:services.adoc#InstanceService-getRiskpoolKeeperRole-- +:xref-InstanceService-hasRole-bytes32-address-: xref:services.adoc#InstanceService-hasRole-bytes32-address- +:xref-InstanceService-products--: xref:services.adoc#InstanceService-products-- +:xref-InstanceService-oracles--: xref:services.adoc#InstanceService-oracles-- +:xref-InstanceService-riskpools--: xref:services.adoc#InstanceService-riskpools-- +:xref-InstanceService-getComponentId-address-: xref:services.adoc#InstanceService-getComponentId-address- +:xref-InstanceService-getComponentType-uint256-: xref:services.adoc#InstanceService-getComponentType-uint256- +:xref-InstanceService-getComponentState-uint256-: xref:services.adoc#InstanceService-getComponentState-uint256- +:xref-InstanceService-getComponent-uint256-: xref:services.adoc#InstanceService-getComponent-uint256- +:xref-InstanceService-getOracleId-uint256-: xref:services.adoc#InstanceService-getOracleId-uint256- +:xref-InstanceService-getRiskpoolId-uint256-: xref:services.adoc#InstanceService-getRiskpoolId-uint256- +:xref-InstanceService-getProductId-uint256-: xref:services.adoc#InstanceService-getProductId-uint256- +:xref-InstanceService-getStakingRequirements-uint256-: xref:services.adoc#InstanceService-getStakingRequirements-uint256- +:xref-InstanceService-getStakedAssets-uint256-: xref:services.adoc#InstanceService-getStakedAssets-uint256- +:xref-InstanceService-processIds--: xref:services.adoc#InstanceService-processIds-- +:xref-InstanceService-getMetadata-bytes32-: xref:services.adoc#InstanceService-getMetadata-bytes32- +:xref-InstanceService-getApplication-bytes32-: xref:services.adoc#InstanceService-getApplication-bytes32- +:xref-InstanceService-getPolicy-bytes32-: xref:services.adoc#InstanceService-getPolicy-bytes32- +:xref-InstanceService-claims-bytes32-: xref:services.adoc#InstanceService-claims-bytes32- +:xref-InstanceService-payouts-bytes32-: xref:services.adoc#InstanceService-payouts-bytes32- +:xref-InstanceService-getClaim-bytes32-uint256-: xref:services.adoc#InstanceService-getClaim-bytes32-uint256- +:xref-InstanceService-getPayout-bytes32-uint256-: xref:services.adoc#InstanceService-getPayout-bytes32-uint256- +:xref-InstanceService-getRiskpool-uint256-: xref:services.adoc#InstanceService-getRiskpool-uint256- +:xref-InstanceService-getFullCollateralizationLevel--: xref:services.adoc#InstanceService-getFullCollateralizationLevel-- +:xref-InstanceService-getCapital-uint256-: xref:services.adoc#InstanceService-getCapital-uint256- +:xref-InstanceService-getTotalValueLocked-uint256-: xref:services.adoc#InstanceService-getTotalValueLocked-uint256- +:xref-InstanceService-getCapacity-uint256-: xref:services.adoc#InstanceService-getCapacity-uint256- +:xref-InstanceService-getBalance-uint256-: xref:services.adoc#InstanceService-getBalance-uint256- +:xref-InstanceService-activeBundles-uint256-: xref:services.adoc#InstanceService-activeBundles-uint256- +:xref-InstanceService-getActiveBundleId-uint256-uint256-: xref:services.adoc#InstanceService-getActiveBundleId-uint256-uint256- +:xref-InstanceService-getMaximumNumberOfActiveBundles-uint256-: xref:services.adoc#InstanceService-getMaximumNumberOfActiveBundles-uint256- +:xref-InstanceService-getBundleToken--: xref:services.adoc#InstanceService-getBundleToken-- +:xref-InstanceService-getBundle-uint256-: xref:services.adoc#InstanceService-getBundle-uint256- +:xref-InstanceService-bundles--: xref:services.adoc#InstanceService-bundles-- +:xref-InstanceService-unburntBundles-uint256-: xref:services.adoc#InstanceService-unburntBundles-uint256- +:xref-InstanceService-getTreasuryAddress--: xref:services.adoc#InstanceService-getTreasuryAddress-- +:xref-InstanceService-getInstanceWallet--: xref:services.adoc#InstanceService-getInstanceWallet-- +:xref-InstanceService-getRiskpoolWallet-uint256-: xref:services.adoc#InstanceService-getRiskpoolWallet-uint256- +:xref-InstanceService-getComponentToken-uint256-: xref:services.adoc#InstanceService-getComponentToken-uint256- +:xref-InstanceService-getFeeFractionFullUnit--: xref:services.adoc#InstanceService-getFeeFractionFullUnit-- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-OracleService-_afterInitialize--: xref:services.adoc#OracleService-_afterInitialize-- +:xref-OracleService-respond-uint256-bytes-: xref:services.adoc#OracleService-respond-uint256-bytes- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-ProductService-constructor-address-: xref:services.adoc#ProductService-constructor-address- +:xref-ProductService-fallback--: xref:services.adoc#ProductService-fallback-- +:xref-ProductService-_delegate-address-: xref:services.adoc#ProductService-_delegate-address- +:xref-ProductService-_license--: xref:services.adoc#ProductService-_license-- +:xref-WithRegistry-getContractFromRegistry-bytes32-: xref:shared.adoc#WithRegistry-getContractFromRegistry-bytes32- +:xref-WithRegistry-getContractInReleaseFromRegistry-bytes32-bytes32-: xref:shared.adoc#WithRegistry-getContractInReleaseFromRegistry-bytes32-bytes32- +:xref-WithRegistry-getReleaseFromRegistry--: xref:shared.adoc#WithRegistry-getReleaseFromRegistry-- +:xref-RiskpoolService-onlyProposedRiskpool--: xref:services.adoc#RiskpoolService-onlyProposedRiskpool-- +:xref-RiskpoolService-onlyActiveRiskpool--: xref:services.adoc#RiskpoolService-onlyActiveRiskpool-- +:xref-RiskpoolService-onlyOwningRiskpool-uint256-bool-: xref:services.adoc#RiskpoolService-onlyOwningRiskpool-uint256-bool- +:xref-RiskpoolService-onlyOwningRiskpoolId-uint256-bool-: xref:services.adoc#RiskpoolService-onlyOwningRiskpoolId-uint256-bool- +:xref-RiskpoolService-_afterInitialize--: xref:services.adoc#RiskpoolService-_afterInitialize-- +:xref-RiskpoolService-registerRiskpool-address-address-uint256-uint256-: xref:services.adoc#RiskpoolService-registerRiskpool-address-address-uint256-uint256- +:xref-RiskpoolService-createBundle-address-bytes-uint256-: xref:services.adoc#RiskpoolService-createBundle-address-bytes-uint256- +:xref-RiskpoolService-fundBundle-uint256-uint256-: xref:services.adoc#RiskpoolService-fundBundle-uint256-uint256- +:xref-RiskpoolService-defundBundle-uint256-uint256-: xref:services.adoc#RiskpoolService-defundBundle-uint256-uint256- +:xref-RiskpoolService-lockBundle-uint256-: xref:services.adoc#RiskpoolService-lockBundle-uint256- +:xref-RiskpoolService-unlockBundle-uint256-: xref:services.adoc#RiskpoolService-unlockBundle-uint256- +:xref-RiskpoolService-closeBundle-uint256-: xref:services.adoc#RiskpoolService-closeBundle-uint256- +:xref-RiskpoolService-burnBundle-uint256-: xref:services.adoc#RiskpoolService-burnBundle-uint256- +:xref-RiskpoolService-collateralizePolicy-uint256-bytes32-uint256-: xref:services.adoc#RiskpoolService-collateralizePolicy-uint256-bytes32-uint256- +:xref-RiskpoolService-processPremium-uint256-bytes32-uint256-: xref:services.adoc#RiskpoolService-processPremium-uint256-bytes32-uint256- +:xref-RiskpoolService-processPayout-uint256-bytes32-uint256-: xref:services.adoc#RiskpoolService-processPayout-uint256-bytes32-uint256- +:xref-RiskpoolService-releasePolicy-uint256-bytes32-: xref:services.adoc#RiskpoolService-releasePolicy-uint256-bytes32- +:xref-RiskpoolService-setMaximumNumberOfActiveBundles-uint256-uint256-: xref:services.adoc#RiskpoolService-setMaximumNumberOfActiveBundles-uint256-uint256- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- += Services + +[.readme-notice] +NOTE: This document is better viewed at https://docs.etherisc.com/contracts/api/services + +== Contracts + +:onlyOwnerWithRoleFromComponent: pass:normal[xref:#ComponentOwnerService-onlyOwnerWithRoleFromComponent-contract-IComponent-[`++onlyOwnerWithRoleFromComponent++`]] +:onlyOwnerWithRole: pass:normal[xref:#ComponentOwnerService-onlyOwnerWithRole-uint256-[`++onlyOwnerWithRole++`]] +:_afterInitialize: pass:normal[xref:#ComponentOwnerService-_afterInitialize--[`++_afterInitialize++`]] +:propose: pass:normal[xref:#ComponentOwnerService-propose-contract-IComponent-[`++propose++`]] +:stake: pass:normal[xref:#ComponentOwnerService-stake-uint256-[`++stake++`]] +:withdraw: pass:normal[xref:#ComponentOwnerService-withdraw-uint256-[`++withdraw++`]] +:pause: pass:normal[xref:#ComponentOwnerService-pause-uint256-[`++pause++`]] +:unpause: pass:normal[xref:#ComponentOwnerService-unpause-uint256-[`++unpause++`]] +:archive: pass:normal[xref:#ComponentOwnerService-archive-uint256-[`++archive++`]] + +[.contract] +[[ComponentOwnerService]] +=== `++ComponentOwnerService++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/services/ComponentOwnerService.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/services/ComponentOwnerService.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-ComponentOwnerService-onlyOwnerWithRoleFromComponent-contract-IComponent-}[`++onlyOwnerWithRoleFromComponent(component)++`] +* {xref-ComponentOwnerService-onlyOwnerWithRole-uint256-}[`++onlyOwnerWithRole(id)++`] +-- + +[.contract-index] +.Functions +-- +* {xref-ComponentOwnerService-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-ComponentOwnerService-propose-contract-IComponent-}[`++propose(component)++`] +* {xref-ComponentOwnerService-stake-uint256-}[`++stake(id)++`] +* {xref-ComponentOwnerService-withdraw-uint256-}[`++withdraw(id)++`] +* {xref-ComponentOwnerService-pause-uint256-}[`++pause(id)++`] +* {xref-ComponentOwnerService-unpause-uint256-}[`++unpause(id)++`] +* {xref-ComponentOwnerService-archive-uint256-}[`++archive(id)++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IComponentOwnerService + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IComponentOwnerService + +-- + +[.contract-item] +[[ComponentOwnerService-onlyOwnerWithRoleFromComponent-contract-IComponent-]] +==== `[.contract-item-name]#++onlyOwnerWithRoleFromComponent++#++(contract IComponent component)++` [.item-kind]#modifier# + +[.contract-item] +[[ComponentOwnerService-onlyOwnerWithRole-uint256-]] +==== `[.contract-item-name]#++onlyOwnerWithRole++#++(uint256 id)++` [.item-kind]#modifier# + +[.contract-item] +[[ComponentOwnerService-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[ComponentOwnerService-propose-contract-IComponent-]] +==== `[.contract-item-name]#++propose++#++(contract IComponent component)++` [.item-kind]#external# + +[.contract-item] +[[ComponentOwnerService-stake-uint256-]] +==== `[.contract-item-name]#++stake++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[ComponentOwnerService-withdraw-uint256-]] +==== `[.contract-item-name]#++withdraw++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[ComponentOwnerService-pause-uint256-]] +==== `[.contract-item-name]#++pause++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[ComponentOwnerService-unpause-uint256-]] +==== `[.contract-item-name]#++unpause++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[ComponentOwnerService-archive-uint256-]] +==== `[.contract-item-name]#++archive++#++(uint256 id)++` [.item-kind]#external# + +:onlyInstanceOperatorAddress: pass:normal[xref:#InstanceOperatorService-onlyInstanceOperatorAddress--[`++onlyInstanceOperatorAddress++`]] +:_afterInitialize: pass:normal[xref:#InstanceOperatorService-_afterInitialize--[`++_afterInitialize++`]] +:prepareRelease: pass:normal[xref:#InstanceOperatorService-prepareRelease-bytes32-[`++prepareRelease++`]] +:register: pass:normal[xref:#InstanceOperatorService-register-bytes32-address-[`++register++`]] +:deregister: pass:normal[xref:#InstanceOperatorService-deregister-bytes32-[`++deregister++`]] +:registerInRelease: pass:normal[xref:#InstanceOperatorService-registerInRelease-bytes32-bytes32-address-[`++registerInRelease++`]] +:deregisterInRelease: pass:normal[xref:#InstanceOperatorService-deregisterInRelease-bytes32-bytes32-[`++deregisterInRelease++`]] +:createRole: pass:normal[xref:#InstanceOperatorService-createRole-bytes32-[`++createRole++`]] +:invalidateRole: pass:normal[xref:#InstanceOperatorService-invalidateRole-bytes32-[`++invalidateRole++`]] +:grantRole: pass:normal[xref:#InstanceOperatorService-grantRole-bytes32-address-[`++grantRole++`]] +:revokeRole: pass:normal[xref:#InstanceOperatorService-revokeRole-bytes32-address-[`++revokeRole++`]] +:approve: pass:normal[xref:#InstanceOperatorService-approve-uint256-[`++approve++`]] +:decline: pass:normal[xref:#InstanceOperatorService-decline-uint256-[`++decline++`]] +:suspend: pass:normal[xref:#InstanceOperatorService-suspend-uint256-[`++suspend++`]] +:resume: pass:normal[xref:#InstanceOperatorService-resume-uint256-[`++resume++`]] +:archive: pass:normal[xref:#InstanceOperatorService-archive-uint256-[`++archive++`]] +:setDefaultStaking: pass:normal[xref:#InstanceOperatorService-setDefaultStaking-uint16-bytes-[`++setDefaultStaking++`]] +:adjustStakingRequirements: pass:normal[xref:#InstanceOperatorService-adjustStakingRequirements-uint256-bytes-[`++adjustStakingRequirements++`]] +:suspendTreasury: pass:normal[xref:#InstanceOperatorService-suspendTreasury--[`++suspendTreasury++`]] +:resumeTreasury: pass:normal[xref:#InstanceOperatorService-resumeTreasury--[`++resumeTreasury++`]] +:setInstanceWallet: pass:normal[xref:#InstanceOperatorService-setInstanceWallet-address-[`++setInstanceWallet++`]] +:setRiskpoolWallet: pass:normal[xref:#InstanceOperatorService-setRiskpoolWallet-uint256-address-[`++setRiskpoolWallet++`]] +:setProductToken: pass:normal[xref:#InstanceOperatorService-setProductToken-uint256-address-[`++setProductToken++`]] +:createFeeSpecification: pass:normal[xref:#InstanceOperatorService-createFeeSpecification-uint256-uint256-uint256-bytes-[`++createFeeSpecification++`]] +:setPremiumFees: pass:normal[xref:#InstanceOperatorService-setPremiumFees-struct-ITreasury-FeeSpecification-[`++setPremiumFees++`]] +:setCapitalFees: pass:normal[xref:#InstanceOperatorService-setCapitalFees-struct-ITreasury-FeeSpecification-[`++setCapitalFees++`]] + +[.contract] +[[InstanceOperatorService]] +=== `++InstanceOperatorService++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/services/InstanceOperatorService.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/services/InstanceOperatorService.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-InstanceOperatorService-onlyInstanceOperatorAddress--}[`++onlyInstanceOperatorAddress()++`] +-- + +[.contract-index] +.Functions +-- +* {xref-InstanceOperatorService-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-InstanceOperatorService-prepareRelease-bytes32-}[`++prepareRelease(_newRelease)++`] +* {xref-InstanceOperatorService-register-bytes32-address-}[`++register(_contractName, _contractAddress)++`] +* {xref-InstanceOperatorService-deregister-bytes32-}[`++deregister(_contractName)++`] +* {xref-InstanceOperatorService-registerInRelease-bytes32-bytes32-address-}[`++registerInRelease(_release, _contractName, _contractAddress)++`] +* {xref-InstanceOperatorService-deregisterInRelease-bytes32-bytes32-}[`++deregisterInRelease(_release, _contractName)++`] +* {xref-InstanceOperatorService-createRole-bytes32-}[`++createRole(_role)++`] +* {xref-InstanceOperatorService-invalidateRole-bytes32-}[`++invalidateRole(_role)++`] +* {xref-InstanceOperatorService-grantRole-bytes32-address-}[`++grantRole(role, principal)++`] +* {xref-InstanceOperatorService-revokeRole-bytes32-address-}[`++revokeRole(role, principal)++`] +* {xref-InstanceOperatorService-approve-uint256-}[`++approve(id)++`] +* {xref-InstanceOperatorService-decline-uint256-}[`++decline(id)++`] +* {xref-InstanceOperatorService-suspend-uint256-}[`++suspend(id)++`] +* {xref-InstanceOperatorService-resume-uint256-}[`++resume(id)++`] +* {xref-InstanceOperatorService-archive-uint256-}[`++archive(id)++`] +* {xref-InstanceOperatorService-setDefaultStaking-uint16-bytes-}[`++setDefaultStaking(componentType, data)++`] +* {xref-InstanceOperatorService-adjustStakingRequirements-uint256-bytes-}[`++adjustStakingRequirements(id, data)++`] +* {xref-InstanceOperatorService-suspendTreasury--}[`++suspendTreasury()++`] +* {xref-InstanceOperatorService-resumeTreasury--}[`++resumeTreasury()++`] +* {xref-InstanceOperatorService-setInstanceWallet-address-}[`++setInstanceWallet(walletAddress)++`] +* {xref-InstanceOperatorService-setRiskpoolWallet-uint256-address-}[`++setRiskpoolWallet(riskpoolId, riskpoolWalletAddress)++`] +* {xref-InstanceOperatorService-setProductToken-uint256-address-}[`++setProductToken(productId, erc20Address)++`] +* {xref-InstanceOperatorService-createFeeSpecification-uint256-uint256-uint256-bytes-}[`++createFeeSpecification(componentId, fixedFee, fractionalFee, feeCalculationData)++`] +* {xref-InstanceOperatorService-setPremiumFees-struct-ITreasury-FeeSpecification-}[`++setPremiumFees(feeSpec)++`] +* {xref-InstanceOperatorService-setCapitalFees-struct-ITreasury-FeeSpecification-}[`++setCapitalFees(feeSpec)++`] + +[.contract-subindex-inherited] +.Ownable +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-owner--[`++owner()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-_checkOwner--[`++_checkOwner()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-renounceOwnership--[`++renounceOwnership()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-transferOwnership-address-[`++transferOwnership(newOwner)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-_transferOwnership-address-[`++_transferOwnership(newOwner)++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IInstanceOperatorService + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.Ownable +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-OwnershipTransferred-address-address-[`++OwnershipTransferred(previousOwner, newOwner)++`] + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IInstanceOperatorService + +-- + +[.contract-item] +[[InstanceOperatorService-onlyInstanceOperatorAddress--]] +==== `[.contract-item-name]#++onlyInstanceOperatorAddress++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[InstanceOperatorService-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[InstanceOperatorService-prepareRelease-bytes32-]] +==== `[.contract-item-name]#++prepareRelease++#++(bytes32 _newRelease)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-register-bytes32-address-]] +==== `[.contract-item-name]#++register++#++(bytes32 _contractName, address _contractAddress)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-deregister-bytes32-]] +==== `[.contract-item-name]#++deregister++#++(bytes32 _contractName)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-registerInRelease-bytes32-bytes32-address-]] +==== `[.contract-item-name]#++registerInRelease++#++(bytes32 _release, bytes32 _contractName, address _contractAddress)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-deregisterInRelease-bytes32-bytes32-]] +==== `[.contract-item-name]#++deregisterInRelease++#++(bytes32 _release, bytes32 _contractName)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-createRole-bytes32-]] +==== `[.contract-item-name]#++createRole++#++(bytes32 _role)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-invalidateRole-bytes32-]] +==== `[.contract-item-name]#++invalidateRole++#++(bytes32 _role)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-grantRole-bytes32-address-]] +==== `[.contract-item-name]#++grantRole++#++(bytes32 role, address principal)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-revokeRole-bytes32-address-]] +==== `[.contract-item-name]#++revokeRole++#++(bytes32 role, address principal)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-approve-uint256-]] +==== `[.contract-item-name]#++approve++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-decline-uint256-]] +==== `[.contract-item-name]#++decline++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-suspend-uint256-]] +==== `[.contract-item-name]#++suspend++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-resume-uint256-]] +==== `[.contract-item-name]#++resume++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-archive-uint256-]] +==== `[.contract-item-name]#++archive++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-setDefaultStaking-uint16-bytes-]] +==== `[.contract-item-name]#++setDefaultStaking++#++(uint16 componentType, bytes data)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-adjustStakingRequirements-uint256-bytes-]] +==== `[.contract-item-name]#++adjustStakingRequirements++#++(uint256 id, bytes data)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-suspendTreasury--]] +==== `[.contract-item-name]#++suspendTreasury++#++()++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-resumeTreasury--]] +==== `[.contract-item-name]#++resumeTreasury++#++()++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-setInstanceWallet-address-]] +==== `[.contract-item-name]#++setInstanceWallet++#++(address walletAddress)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-setRiskpoolWallet-uint256-address-]] +==== `[.contract-item-name]#++setRiskpoolWallet++#++(uint256 riskpoolId, address riskpoolWalletAddress)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-setProductToken-uint256-address-]] +==== `[.contract-item-name]#++setProductToken++#++(uint256 productId, address erc20Address)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-createFeeSpecification-uint256-uint256-uint256-bytes-]] +==== `[.contract-item-name]#++createFeeSpecification++#++(uint256 componentId, uint256 fixedFee, uint256 fractionalFee, bytes feeCalculationData) → struct ITreasury.FeeSpecification++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-setPremiumFees-struct-ITreasury-FeeSpecification-]] +==== `[.contract-item-name]#++setPremiumFees++#++(struct ITreasury.FeeSpecification feeSpec)++` [.item-kind]#external# + +[.contract-item] +[[InstanceOperatorService-setCapitalFees-struct-ITreasury-FeeSpecification-]] +==== `[.contract-item-name]#++setCapitalFees++#++(struct ITreasury.FeeSpecification feeSpec)++` [.item-kind]#external# + +:BUNDLE_NAME: pass:normal[xref:#InstanceService-BUNDLE_NAME-bytes32[`++BUNDLE_NAME++`]] +:COMPONENT_NAME: pass:normal[xref:#InstanceService-COMPONENT_NAME-bytes32[`++COMPONENT_NAME++`]] +:POLICY_NAME: pass:normal[xref:#InstanceService-POLICY_NAME-bytes32[`++POLICY_NAME++`]] +:POOL_NAME: pass:normal[xref:#InstanceService-POOL_NAME-bytes32[`++POOL_NAME++`]] +:TREASURY_NAME: pass:normal[xref:#InstanceService-TREASURY_NAME-bytes32[`++TREASURY_NAME++`]] +:COMPONENT_OWNER_SERVICE_NAME: pass:normal[xref:#InstanceService-COMPONENT_OWNER_SERVICE_NAME-bytes32[`++COMPONENT_OWNER_SERVICE_NAME++`]] +:INSTANCE_OPERATOR_SERVICE_NAME: pass:normal[xref:#InstanceService-INSTANCE_OPERATOR_SERVICE_NAME-bytes32[`++INSTANCE_OPERATOR_SERVICE_NAME++`]] +:ORACLE_SERVICE_NAME: pass:normal[xref:#InstanceService-ORACLE_SERVICE_NAME-bytes32[`++ORACLE_SERVICE_NAME++`]] +:PRODUCT_SERVICE_NAME: pass:normal[xref:#InstanceService-PRODUCT_SERVICE_NAME-bytes32[`++PRODUCT_SERVICE_NAME++`]] +:RISKPOOL_SERVICE_NAME: pass:normal[xref:#InstanceService-RISKPOOL_SERVICE_NAME-bytes32[`++RISKPOOL_SERVICE_NAME++`]] +:_bundle: pass:normal[xref:#InstanceService-_bundle-contract-BundleController[`++_bundle++`]] +:_component: pass:normal[xref:#InstanceService-_component-contract-ComponentController[`++_component++`]] +:_policy: pass:normal[xref:#InstanceService-_policy-contract-PolicyController[`++_policy++`]] +:_pool: pass:normal[xref:#InstanceService-_pool-contract-PoolController[`++_pool++`]] +:_afterInitialize: pass:normal[xref:#InstanceService-_afterInitialize--[`++_afterInitialize++`]] +:_setChainNames: pass:normal[xref:#InstanceService-_setChainNames--[`++_setChainNames++`]] +:getChainId: pass:normal[xref:#InstanceService-getChainId--[`++getChainId++`]] +:getChainName: pass:normal[xref:#InstanceService-getChainName--[`++getChainName++`]] +:getInstanceId: pass:normal[xref:#InstanceService-getInstanceId--[`++getInstanceId++`]] +:getInstanceOperator: pass:normal[xref:#InstanceService-getInstanceOperator--[`++getInstanceOperator++`]] +:getComponentOwnerService: pass:normal[xref:#InstanceService-getComponentOwnerService--[`++getComponentOwnerService++`]] +:getInstanceOperatorService: pass:normal[xref:#InstanceService-getInstanceOperatorService--[`++getInstanceOperatorService++`]] +:getOracleService: pass:normal[xref:#InstanceService-getOracleService--[`++getOracleService++`]] +:getProductService: pass:normal[xref:#InstanceService-getProductService--[`++getProductService++`]] +:getRiskpoolService: pass:normal[xref:#InstanceService-getRiskpoolService--[`++getRiskpoolService++`]] +:getRegistry: pass:normal[xref:#InstanceService-getRegistry--[`++getRegistry++`]] +:contracts: pass:normal[xref:#InstanceService-contracts--[`++contracts++`]] +:contractName: pass:normal[xref:#InstanceService-contractName-uint256-[`++contractName++`]] +:getDefaultAdminRole: pass:normal[xref:#InstanceService-getDefaultAdminRole--[`++getDefaultAdminRole++`]] +:getProductOwnerRole: pass:normal[xref:#InstanceService-getProductOwnerRole--[`++getProductOwnerRole++`]] +:getOracleProviderRole: pass:normal[xref:#InstanceService-getOracleProviderRole--[`++getOracleProviderRole++`]] +:getRiskpoolKeeperRole: pass:normal[xref:#InstanceService-getRiskpoolKeeperRole--[`++getRiskpoolKeeperRole++`]] +:hasRole: pass:normal[xref:#InstanceService-hasRole-bytes32-address-[`++hasRole++`]] +:products: pass:normal[xref:#InstanceService-products--[`++products++`]] +:oracles: pass:normal[xref:#InstanceService-oracles--[`++oracles++`]] +:riskpools: pass:normal[xref:#InstanceService-riskpools--[`++riskpools++`]] +:getComponentId: pass:normal[xref:#InstanceService-getComponentId-address-[`++getComponentId++`]] +:getComponentType: pass:normal[xref:#InstanceService-getComponentType-uint256-[`++getComponentType++`]] +:getComponentState: pass:normal[xref:#InstanceService-getComponentState-uint256-[`++getComponentState++`]] +:getComponent: pass:normal[xref:#InstanceService-getComponent-uint256-[`++getComponent++`]] +:getOracleId: pass:normal[xref:#InstanceService-getOracleId-uint256-[`++getOracleId++`]] +:getRiskpoolId: pass:normal[xref:#InstanceService-getRiskpoolId-uint256-[`++getRiskpoolId++`]] +:getProductId: pass:normal[xref:#InstanceService-getProductId-uint256-[`++getProductId++`]] +:getStakingRequirements: pass:normal[xref:#InstanceService-getStakingRequirements-uint256-[`++getStakingRequirements++`]] +:getStakedAssets: pass:normal[xref:#InstanceService-getStakedAssets-uint256-[`++getStakedAssets++`]] +:processIds: pass:normal[xref:#InstanceService-processIds--[`++processIds++`]] +:getMetadata: pass:normal[xref:#InstanceService-getMetadata-bytes32-[`++getMetadata++`]] +:getApplication: pass:normal[xref:#InstanceService-getApplication-bytes32-[`++getApplication++`]] +:getPolicy: pass:normal[xref:#InstanceService-getPolicy-bytes32-[`++getPolicy++`]] +:claims: pass:normal[xref:#InstanceService-claims-bytes32-[`++claims++`]] +:payouts: pass:normal[xref:#InstanceService-payouts-bytes32-[`++payouts++`]] +:getClaim: pass:normal[xref:#InstanceService-getClaim-bytes32-uint256-[`++getClaim++`]] +:getPayout: pass:normal[xref:#InstanceService-getPayout-bytes32-uint256-[`++getPayout++`]] +:getRiskpool: pass:normal[xref:#InstanceService-getRiskpool-uint256-[`++getRiskpool++`]] +:getFullCollateralizationLevel: pass:normal[xref:#InstanceService-getFullCollateralizationLevel--[`++getFullCollateralizationLevel++`]] +:getCapital: pass:normal[xref:#InstanceService-getCapital-uint256-[`++getCapital++`]] +:getTotalValueLocked: pass:normal[xref:#InstanceService-getTotalValueLocked-uint256-[`++getTotalValueLocked++`]] +:getCapacity: pass:normal[xref:#InstanceService-getCapacity-uint256-[`++getCapacity++`]] +:getBalance: pass:normal[xref:#InstanceService-getBalance-uint256-[`++getBalance++`]] +:activeBundles: pass:normal[xref:#InstanceService-activeBundles-uint256-[`++activeBundles++`]] +:getActiveBundleId: pass:normal[xref:#InstanceService-getActiveBundleId-uint256-uint256-[`++getActiveBundleId++`]] +:getMaximumNumberOfActiveBundles: pass:normal[xref:#InstanceService-getMaximumNumberOfActiveBundles-uint256-[`++getMaximumNumberOfActiveBundles++`]] +:getBundleToken: pass:normal[xref:#InstanceService-getBundleToken--[`++getBundleToken++`]] +:getBundle: pass:normal[xref:#InstanceService-getBundle-uint256-[`++getBundle++`]] +:bundles: pass:normal[xref:#InstanceService-bundles--[`++bundles++`]] +:unburntBundles: pass:normal[xref:#InstanceService-unburntBundles-uint256-[`++unburntBundles++`]] +:getTreasuryAddress: pass:normal[xref:#InstanceService-getTreasuryAddress--[`++getTreasuryAddress++`]] +:getInstanceWallet: pass:normal[xref:#InstanceService-getInstanceWallet--[`++getInstanceWallet++`]] +:getRiskpoolWallet: pass:normal[xref:#InstanceService-getRiskpoolWallet-uint256-[`++getRiskpoolWallet++`]] +:getComponentToken: pass:normal[xref:#InstanceService-getComponentToken-uint256-[`++getComponentToken++`]] +:getFeeFractionFullUnit: pass:normal[xref:#InstanceService-getFeeFractionFullUnit--[`++getFeeFractionFullUnit++`]] + +[.contract] +[[InstanceService]] +=== `++InstanceService++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/services/InstanceService.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/services/InstanceService.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-InstanceService-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-InstanceService-_setChainNames--}[`++_setChainNames()++`] +* {xref-InstanceService-getChainId--}[`++getChainId()++`] +* {xref-InstanceService-getChainName--}[`++getChainName()++`] +* {xref-InstanceService-getInstanceId--}[`++getInstanceId()++`] +* {xref-InstanceService-getInstanceOperator--}[`++getInstanceOperator()++`] +* {xref-InstanceService-getComponentOwnerService--}[`++getComponentOwnerService()++`] +* {xref-InstanceService-getInstanceOperatorService--}[`++getInstanceOperatorService()++`] +* {xref-InstanceService-getOracleService--}[`++getOracleService()++`] +* {xref-InstanceService-getProductService--}[`++getProductService()++`] +* {xref-InstanceService-getRiskpoolService--}[`++getRiskpoolService()++`] +* {xref-InstanceService-getRegistry--}[`++getRegistry()++`] +* {xref-InstanceService-contracts--}[`++contracts()++`] +* {xref-InstanceService-contractName-uint256-}[`++contractName(idx)++`] +* {xref-InstanceService-getDefaultAdminRole--}[`++getDefaultAdminRole()++`] +* {xref-InstanceService-getProductOwnerRole--}[`++getProductOwnerRole()++`] +* {xref-InstanceService-getOracleProviderRole--}[`++getOracleProviderRole()++`] +* {xref-InstanceService-getRiskpoolKeeperRole--}[`++getRiskpoolKeeperRole()++`] +* {xref-InstanceService-hasRole-bytes32-address-}[`++hasRole(role, principal)++`] +* {xref-InstanceService-products--}[`++products()++`] +* {xref-InstanceService-oracles--}[`++oracles()++`] +* {xref-InstanceService-riskpools--}[`++riskpools()++`] +* {xref-InstanceService-getComponentId-address-}[`++getComponentId(componentAddress)++`] +* {xref-InstanceService-getComponentType-uint256-}[`++getComponentType(componentId)++`] +* {xref-InstanceService-getComponentState-uint256-}[`++getComponentState(componentId)++`] +* {xref-InstanceService-getComponent-uint256-}[`++getComponent(id)++`] +* {xref-InstanceService-getOracleId-uint256-}[`++getOracleId(idx)++`] +* {xref-InstanceService-getRiskpoolId-uint256-}[`++getRiskpoolId(idx)++`] +* {xref-InstanceService-getProductId-uint256-}[`++getProductId(idx)++`] +* {xref-InstanceService-getStakingRequirements-uint256-}[`++getStakingRequirements(id)++`] +* {xref-InstanceService-getStakedAssets-uint256-}[`++getStakedAssets(id)++`] +* {xref-InstanceService-processIds--}[`++processIds()++`] +* {xref-InstanceService-getMetadata-bytes32-}[`++getMetadata(bpKey)++`] +* {xref-InstanceService-getApplication-bytes32-}[`++getApplication(processId)++`] +* {xref-InstanceService-getPolicy-bytes32-}[`++getPolicy(processId)++`] +* {xref-InstanceService-claims-bytes32-}[`++claims(processId)++`] +* {xref-InstanceService-payouts-bytes32-}[`++payouts(processId)++`] +* {xref-InstanceService-getClaim-bytes32-uint256-}[`++getClaim(processId, claimId)++`] +* {xref-InstanceService-getPayout-bytes32-uint256-}[`++getPayout(processId, payoutId)++`] +* {xref-InstanceService-getRiskpool-uint256-}[`++getRiskpool(riskpoolId)++`] +* {xref-InstanceService-getFullCollateralizationLevel--}[`++getFullCollateralizationLevel()++`] +* {xref-InstanceService-getCapital-uint256-}[`++getCapital(riskpoolId)++`] +* {xref-InstanceService-getTotalValueLocked-uint256-}[`++getTotalValueLocked(riskpoolId)++`] +* {xref-InstanceService-getCapacity-uint256-}[`++getCapacity(riskpoolId)++`] +* {xref-InstanceService-getBalance-uint256-}[`++getBalance(riskpoolId)++`] +* {xref-InstanceService-activeBundles-uint256-}[`++activeBundles(riskpoolId)++`] +* {xref-InstanceService-getActiveBundleId-uint256-uint256-}[`++getActiveBundleId(riskpoolId, bundleIdx)++`] +* {xref-InstanceService-getMaximumNumberOfActiveBundles-uint256-}[`++getMaximumNumberOfActiveBundles(riskpoolId)++`] +* {xref-InstanceService-getBundleToken--}[`++getBundleToken()++`] +* {xref-InstanceService-getBundle-uint256-}[`++getBundle(bundleId)++`] +* {xref-InstanceService-bundles--}[`++bundles()++`] +* {xref-InstanceService-unburntBundles-uint256-}[`++unburntBundles(riskpoolId)++`] +* {xref-InstanceService-getTreasuryAddress--}[`++getTreasuryAddress()++`] +* {xref-InstanceService-getInstanceWallet--}[`++getInstanceWallet()++`] +* {xref-InstanceService-getRiskpoolWallet-uint256-}[`++getRiskpoolWallet(riskpoolId)++`] +* {xref-InstanceService-getComponentToken-uint256-}[`++getComponentToken(componentId)++`] +* {xref-InstanceService-getFeeFractionFullUnit--}[`++getFeeFractionFullUnit()++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IInstanceService + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IInstanceService + +-- + +[.contract-item] +[[InstanceService-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[InstanceService-_setChainNames--]] +==== `[.contract-item-name]#++_setChainNames++#++()++` [.item-kind]#internal# + +[.contract-item] +[[InstanceService-getChainId--]] +==== `[.contract-item-name]#++getChainId++#++() → uint256 chainId++` [.item-kind]#public# + +[.contract-item] +[[InstanceService-getChainName--]] +==== `[.contract-item-name]#++getChainName++#++() → string chainName++` [.item-kind]#public# + +[.contract-item] +[[InstanceService-getInstanceId--]] +==== `[.contract-item-name]#++getInstanceId++#++() → bytes32 instanceId++` [.item-kind]#public# + +[.contract-item] +[[InstanceService-getInstanceOperator--]] +==== `[.contract-item-name]#++getInstanceOperator++#++() → address++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getComponentOwnerService--]] +==== `[.contract-item-name]#++getComponentOwnerService++#++() → contract IComponentOwnerService service++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getInstanceOperatorService--]] +==== `[.contract-item-name]#++getInstanceOperatorService++#++() → contract IInstanceOperatorService service++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getOracleService--]] +==== `[.contract-item-name]#++getOracleService++#++() → contract IOracleService service++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getProductService--]] +==== `[.contract-item-name]#++getProductService++#++() → contract IProductService service++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getRiskpoolService--]] +==== `[.contract-item-name]#++getRiskpoolService++#++() → contract IRiskpoolService service++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getRegistry--]] +==== `[.contract-item-name]#++getRegistry++#++() → contract IRegistry service++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-contracts--]] +==== `[.contract-item-name]#++contracts++#++() → uint256 numberOfContracts++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-contractName-uint256-]] +==== `[.contract-item-name]#++contractName++#++(uint256 idx) → bytes32 name++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getDefaultAdminRole--]] +==== `[.contract-item-name]#++getDefaultAdminRole++#++() → bytes32++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getProductOwnerRole--]] +==== `[.contract-item-name]#++getProductOwnerRole++#++() → bytes32++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getOracleProviderRole--]] +==== `[.contract-item-name]#++getOracleProviderRole++#++() → bytes32++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getRiskpoolKeeperRole--]] +==== `[.contract-item-name]#++getRiskpoolKeeperRole++#++() → bytes32++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-hasRole-bytes32-address-]] +==== `[.contract-item-name]#++hasRole++#++(bytes32 role, address principal) → bool++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-products--]] +==== `[.contract-item-name]#++products++#++() → uint256++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-oracles--]] +==== `[.contract-item-name]#++oracles++#++() → uint256++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-riskpools--]] +==== `[.contract-item-name]#++riskpools++#++() → uint256++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getComponentId-address-]] +==== `[.contract-item-name]#++getComponentId++#++(address componentAddress) → uint256 componentId++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getComponentType-uint256-]] +==== `[.contract-item-name]#++getComponentType++#++(uint256 componentId) → enum IComponent.ComponentType componentType++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getComponentState-uint256-]] +==== `[.contract-item-name]#++getComponentState++#++(uint256 componentId) → enum IComponent.ComponentState componentState++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getComponent-uint256-]] +==== `[.contract-item-name]#++getComponent++#++(uint256 id) → contract IComponent++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getOracleId-uint256-]] +==== `[.contract-item-name]#++getOracleId++#++(uint256 idx) → uint256 oracleId++` [.item-kind]#public# + +[.contract-item] +[[InstanceService-getRiskpoolId-uint256-]] +==== `[.contract-item-name]#++getRiskpoolId++#++(uint256 idx) → uint256 riskpoolId++` [.item-kind]#public# + +[.contract-item] +[[InstanceService-getProductId-uint256-]] +==== `[.contract-item-name]#++getProductId++#++(uint256 idx) → uint256 productId++` [.item-kind]#public# + +[.contract-item] +[[InstanceService-getStakingRequirements-uint256-]] +==== `[.contract-item-name]#++getStakingRequirements++#++(uint256 id) → bytes data++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getStakedAssets-uint256-]] +==== `[.contract-item-name]#++getStakedAssets++#++(uint256 id) → bytes data++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-processIds--]] +==== `[.contract-item-name]#++processIds++#++() → uint256 numberOfProcessIds++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getMetadata-bytes32-]] +==== `[.contract-item-name]#++getMetadata++#++(bytes32 bpKey) → struct IPolicy.Metadata metadata++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getApplication-bytes32-]] +==== `[.contract-item-name]#++getApplication++#++(bytes32 processId) → struct IPolicy.Application application++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getPolicy-bytes32-]] +==== `[.contract-item-name]#++getPolicy++#++(bytes32 processId) → struct IPolicy.Policy policy++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-claims-bytes32-]] +==== `[.contract-item-name]#++claims++#++(bytes32 processId) → uint256 numberOfClaims++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-payouts-bytes32-]] +==== `[.contract-item-name]#++payouts++#++(bytes32 processId) → uint256 numberOfPayouts++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getClaim-bytes32-uint256-]] +==== `[.contract-item-name]#++getClaim++#++(bytes32 processId, uint256 claimId) → struct IPolicy.Claim claim++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getPayout-bytes32-uint256-]] +==== `[.contract-item-name]#++getPayout++#++(bytes32 processId, uint256 payoutId) → struct IPolicy.Payout payout++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getRiskpool-uint256-]] +==== `[.contract-item-name]#++getRiskpool++#++(uint256 riskpoolId) → struct IPool.Pool riskPool++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getFullCollateralizationLevel--]] +==== `[.contract-item-name]#++getFullCollateralizationLevel++#++() → uint256++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getCapital-uint256-]] +==== `[.contract-item-name]#++getCapital++#++(uint256 riskpoolId) → uint256 capitalAmount++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getTotalValueLocked-uint256-]] +==== `[.contract-item-name]#++getTotalValueLocked++#++(uint256 riskpoolId) → uint256 totalValueLockedAmount++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getCapacity-uint256-]] +==== `[.contract-item-name]#++getCapacity++#++(uint256 riskpoolId) → uint256 capacityAmount++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getBalance-uint256-]] +==== `[.contract-item-name]#++getBalance++#++(uint256 riskpoolId) → uint256 balanceAmount++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-activeBundles-uint256-]] +==== `[.contract-item-name]#++activeBundles++#++(uint256 riskpoolId) → uint256 numberOfActiveBundles++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getActiveBundleId-uint256-uint256-]] +==== `[.contract-item-name]#++getActiveBundleId++#++(uint256 riskpoolId, uint256 bundleIdx) → uint256 bundleId++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getMaximumNumberOfActiveBundles-uint256-]] +==== `[.contract-item-name]#++getMaximumNumberOfActiveBundles++#++(uint256 riskpoolId) → uint256 maximumNumberOfActiveBundles++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getBundleToken--]] +==== `[.contract-item-name]#++getBundleToken++#++() → contract IBundleToken token++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getBundle-uint256-]] +==== `[.contract-item-name]#++getBundle++#++(uint256 bundleId) → struct IBundle.Bundle bundle++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-bundles--]] +==== `[.contract-item-name]#++bundles++#++() → uint256++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-unburntBundles-uint256-]] +==== `[.contract-item-name]#++unburntBundles++#++(uint256 riskpoolId) → uint256 numberOfUnburntBundles++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getTreasuryAddress--]] +==== `[.contract-item-name]#++getTreasuryAddress++#++() → address++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getInstanceWallet--]] +==== `[.contract-item-name]#++getInstanceWallet++#++() → address++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getRiskpoolWallet-uint256-]] +==== `[.contract-item-name]#++getRiskpoolWallet++#++(uint256 riskpoolId) → address++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getComponentToken-uint256-]] +==== `[.contract-item-name]#++getComponentToken++#++(uint256 componentId) → contract IERC20++` [.item-kind]#external# + +[.contract-item] +[[InstanceService-getFeeFractionFullUnit--]] +==== `[.contract-item-name]#++getFeeFractionFullUnit++#++() → uint256++` [.item-kind]#external# + +:_afterInitialize: pass:normal[xref:#OracleService-_afterInitialize--[`++_afterInitialize++`]] +:respond: pass:normal[xref:#OracleService-respond-uint256-bytes-[`++respond++`]] + +[.contract] +[[OracleService]] +=== `++OracleService++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/services/OracleService.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/services/OracleService.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-OracleService-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-OracleService-respond-uint256-bytes-}[`++respond(_requestId, _data)++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IOracleService + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IOracleService + +-- + +[.contract-item] +[[OracleService-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[OracleService-respond-uint256-bytes-]] +==== `[.contract-item-name]#++respond++#++(uint256 _requestId, bytes _data)++` [.item-kind]#external# + +:NAME: pass:normal[xref:#ProductService-NAME-bytes32[`++NAME++`]] +:constructor: pass:normal[xref:#ProductService-constructor-address-[`++constructor++`]] +:fallback: pass:normal[xref:#ProductService-fallback--[`++fallback++`]] +:_delegate: pass:normal[xref:#ProductService-_delegate-address-[`++_delegate++`]] +:_license: pass:normal[xref:#ProductService-_license--[`++_license++`]] + +[.contract] +[[ProductService]] +=== `++ProductService++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/services/ProductService.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/services/ProductService.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-ProductService-constructor-address-}[`++constructor(_registry)++`] +* {xref-ProductService-fallback--}[`++fallback()++`] +* {xref-ProductService-_delegate-address-}[`++_delegate(implementation)++`] +* {xref-ProductService-_license--}[`++_license()++`] + +[.contract-subindex-inherited] +.WithRegistry +* {xref-WithRegistry-getContractFromRegistry-bytes32-}[`++getContractFromRegistry(_contractName)++`] +* {xref-WithRegistry-getContractInReleaseFromRegistry-bytes32-bytes32-}[`++getContractInReleaseFromRegistry(_release, _contractName)++`] +* {xref-WithRegistry-getReleaseFromRegistry--}[`++getReleaseFromRegistry()++`] + +-- + +[.contract-item] +[[ProductService-constructor-address-]] +==== `[.contract-item-name]#++constructor++#++(address _registry)++` [.item-kind]#public# + +[.contract-item] +[[ProductService-fallback--]] +==== `[.contract-item-name]#++fallback++#++()++` [.item-kind]#external# + +[.contract-item] +[[ProductService-_delegate-address-]] +==== `[.contract-item-name]#++_delegate++#++(address implementation)++` [.item-kind]#internal# + +Delegates the current call to `implementation`. + +This function does not return to its internal call site, it will return directly to the external caller. +This function is a 1:1 copy of _delegate from +https://github.com/OpenZeppelin/openzeppelin-contracts/blob/release-v4.6/contracts/proxy/Proxy.sol + +[.contract-item] +[[ProductService-_license--]] +==== `[.contract-item-name]#++_license++#++() → contract ILicense++` [.item-kind]#internal# + +:RISKPOOL_NAME: pass:normal[xref:#RiskpoolService-RISKPOOL_NAME-bytes32[`++RISKPOOL_NAME++`]] +:onlyProposedRiskpool: pass:normal[xref:#RiskpoolService-onlyProposedRiskpool--[`++onlyProposedRiskpool++`]] +:onlyActiveRiskpool: pass:normal[xref:#RiskpoolService-onlyActiveRiskpool--[`++onlyActiveRiskpool++`]] +:onlyOwningRiskpool: pass:normal[xref:#RiskpoolService-onlyOwningRiskpool-uint256-bool-[`++onlyOwningRiskpool++`]] +:onlyOwningRiskpoolId: pass:normal[xref:#RiskpoolService-onlyOwningRiskpoolId-uint256-bool-[`++onlyOwningRiskpoolId++`]] +:_afterInitialize: pass:normal[xref:#RiskpoolService-_afterInitialize--[`++_afterInitialize++`]] +:registerRiskpool: pass:normal[xref:#RiskpoolService-registerRiskpool-address-address-uint256-uint256-[`++registerRiskpool++`]] +:createBundle: pass:normal[xref:#RiskpoolService-createBundle-address-bytes-uint256-[`++createBundle++`]] +:fundBundle: pass:normal[xref:#RiskpoolService-fundBundle-uint256-uint256-[`++fundBundle++`]] +:defundBundle: pass:normal[xref:#RiskpoolService-defundBundle-uint256-uint256-[`++defundBundle++`]] +:lockBundle: pass:normal[xref:#RiskpoolService-lockBundle-uint256-[`++lockBundle++`]] +:unlockBundle: pass:normal[xref:#RiskpoolService-unlockBundle-uint256-[`++unlockBundle++`]] +:closeBundle: pass:normal[xref:#RiskpoolService-closeBundle-uint256-[`++closeBundle++`]] +:burnBundle: pass:normal[xref:#RiskpoolService-burnBundle-uint256-[`++burnBundle++`]] +:collateralizePolicy: pass:normal[xref:#RiskpoolService-collateralizePolicy-uint256-bytes32-uint256-[`++collateralizePolicy++`]] +:processPremium: pass:normal[xref:#RiskpoolService-processPremium-uint256-bytes32-uint256-[`++processPremium++`]] +:processPayout: pass:normal[xref:#RiskpoolService-processPayout-uint256-bytes32-uint256-[`++processPayout++`]] +:releasePolicy: pass:normal[xref:#RiskpoolService-releasePolicy-uint256-bytes32-[`++releasePolicy++`]] +:setMaximumNumberOfActiveBundles: pass:normal[xref:#RiskpoolService-setMaximumNumberOfActiveBundles-uint256-uint256-[`++setMaximumNumberOfActiveBundles++`]] + +[.contract] +[[RiskpoolService]] +=== `++RiskpoolService++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/services/RiskpoolService.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/services/RiskpoolService.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-RiskpoolService-onlyProposedRiskpool--}[`++onlyProposedRiskpool()++`] +* {xref-RiskpoolService-onlyActiveRiskpool--}[`++onlyActiveRiskpool()++`] +* {xref-RiskpoolService-onlyOwningRiskpool-uint256-bool-}[`++onlyOwningRiskpool(bundleId, mustBeActive)++`] +* {xref-RiskpoolService-onlyOwningRiskpoolId-uint256-bool-}[`++onlyOwningRiskpoolId(riskpoolId, mustBeActive)++`] +-- + +[.contract-index] +.Functions +-- +* {xref-RiskpoolService-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-RiskpoolService-registerRiskpool-address-address-uint256-uint256-}[`++registerRiskpool(wallet, erc20Token, collateralizationLevel, sumOfSumInsuredCap)++`] +* {xref-RiskpoolService-createBundle-address-bytes-uint256-}[`++createBundle(owner, filter, initialCapital)++`] +* {xref-RiskpoolService-fundBundle-uint256-uint256-}[`++fundBundle(bundleId, amount)++`] +* {xref-RiskpoolService-defundBundle-uint256-uint256-}[`++defundBundle(bundleId, amount)++`] +* {xref-RiskpoolService-lockBundle-uint256-}[`++lockBundle(bundleId)++`] +* {xref-RiskpoolService-unlockBundle-uint256-}[`++unlockBundle(bundleId)++`] +* {xref-RiskpoolService-closeBundle-uint256-}[`++closeBundle(bundleId)++`] +* {xref-RiskpoolService-burnBundle-uint256-}[`++burnBundle(bundleId)++`] +* {xref-RiskpoolService-collateralizePolicy-uint256-bytes32-uint256-}[`++collateralizePolicy(bundleId, processId, collateralAmount)++`] +* {xref-RiskpoolService-processPremium-uint256-bytes32-uint256-}[`++processPremium(bundleId, processId, amount)++`] +* {xref-RiskpoolService-processPayout-uint256-bytes32-uint256-}[`++processPayout(bundleId, processId, amount)++`] +* {xref-RiskpoolService-releasePolicy-uint256-bytes32-}[`++releasePolicy(bundleId, processId)++`] +* {xref-RiskpoolService-setMaximumNumberOfActiveBundles-uint256-uint256-}[`++setMaximumNumberOfActiveBundles(riskpoolId, maxNumberOfActiveBundles)++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IRiskpoolService + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IRiskpoolService + +-- + +[.contract-item] +[[RiskpoolService-onlyProposedRiskpool--]] +==== `[.contract-item-name]#++onlyProposedRiskpool++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[RiskpoolService-onlyActiveRiskpool--]] +==== `[.contract-item-name]#++onlyActiveRiskpool++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[RiskpoolService-onlyOwningRiskpool-uint256-bool-]] +==== `[.contract-item-name]#++onlyOwningRiskpool++#++(uint256 bundleId, bool mustBeActive)++` [.item-kind]#modifier# + +[.contract-item] +[[RiskpoolService-onlyOwningRiskpoolId-uint256-bool-]] +==== `[.contract-item-name]#++onlyOwningRiskpoolId++#++(uint256 riskpoolId, bool mustBeActive)++` [.item-kind]#modifier# + +[.contract-item] +[[RiskpoolService-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[RiskpoolService-registerRiskpool-address-address-uint256-uint256-]] +==== `[.contract-item-name]#++registerRiskpool++#++(address wallet, address erc20Token, uint256 collateralizationLevel, uint256 sumOfSumInsuredCap)++` [.item-kind]#external# + +[.contract-item] +[[RiskpoolService-createBundle-address-bytes-uint256-]] +==== `[.contract-item-name]#++createBundle++#++(address owner, bytes filter, uint256 initialCapital) → uint256 bundleId++` [.item-kind]#external# + +[.contract-item] +[[RiskpoolService-fundBundle-uint256-uint256-]] +==== `[.contract-item-name]#++fundBundle++#++(uint256 bundleId, uint256 amount) → uint256 netAmount++` [.item-kind]#external# + +[.contract-item] +[[RiskpoolService-defundBundle-uint256-uint256-]] +==== `[.contract-item-name]#++defundBundle++#++(uint256 bundleId, uint256 amount) → uint256 netAmount++` [.item-kind]#external# + +[.contract-item] +[[RiskpoolService-lockBundle-uint256-]] +==== `[.contract-item-name]#++lockBundle++#++(uint256 bundleId)++` [.item-kind]#external# + +[.contract-item] +[[RiskpoolService-unlockBundle-uint256-]] +==== `[.contract-item-name]#++unlockBundle++#++(uint256 bundleId)++` [.item-kind]#external# + +[.contract-item] +[[RiskpoolService-closeBundle-uint256-]] +==== `[.contract-item-name]#++closeBundle++#++(uint256 bundleId)++` [.item-kind]#external# + +[.contract-item] +[[RiskpoolService-burnBundle-uint256-]] +==== `[.contract-item-name]#++burnBundle++#++(uint256 bundleId)++` [.item-kind]#external# + +[.contract-item] +[[RiskpoolService-collateralizePolicy-uint256-bytes32-uint256-]] +==== `[.contract-item-name]#++collateralizePolicy++#++(uint256 bundleId, bytes32 processId, uint256 collateralAmount)++` [.item-kind]#external# + +[.contract-item] +[[RiskpoolService-processPremium-uint256-bytes32-uint256-]] +==== `[.contract-item-name]#++processPremium++#++(uint256 bundleId, bytes32 processId, uint256 amount)++` [.item-kind]#external# + +[.contract-item] +[[RiskpoolService-processPayout-uint256-bytes32-uint256-]] +==== `[.contract-item-name]#++processPayout++#++(uint256 bundleId, bytes32 processId, uint256 amount)++` [.item-kind]#external# + +[.contract-item] +[[RiskpoolService-releasePolicy-uint256-bytes32-]] +==== `[.contract-item-name]#++releasePolicy++#++(uint256 bundleId, bytes32 processId) → uint256 collateralAmount++` [.item-kind]#external# + +[.contract-item] +[[RiskpoolService-setMaximumNumberOfActiveBundles-uint256-uint256-]] +==== `[.contract-item-name]#++setMaximumNumberOfActiveBundles++#++(uint256 riskpoolId, uint256 maxNumberOfActiveBundles)++` [.item-kind]#external# + diff --git a/docs/modules/api/pages/shared.adoc b/docs/modules/api/pages/shared.adoc new file mode 100644 index 00000000..cf8510b5 --- /dev/null +++ b/docs/modules/api/pages/shared.adoc @@ -0,0 +1,319 @@ +:github-icon: pass:[] +:xref-CoreController-onlyInstanceOperator--: xref:shared.adoc#CoreController-onlyInstanceOperator-- +:xref-CoreController-onlyPolicyFlow-bytes32-: xref:shared.adoc#CoreController-onlyPolicyFlow-bytes32- +:xref-CoreController-constructor--: xref:shared.adoc#CoreController-constructor-- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_afterInitialize--: xref:shared.adoc#CoreController-_afterInitialize-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-CoreProxy-onlyAdmin--: xref:shared.adoc#CoreProxy-onlyAdmin-- +:xref-CoreProxy-constructor-address-bytes-: xref:shared.adoc#CoreProxy-constructor-address-bytes- +:xref-CoreProxy-implementation--: xref:shared.adoc#CoreProxy-implementation-- +:xref-CoreProxy-upgradeToAndCall-address-bytes-: xref:shared.adoc#CoreProxy-upgradeToAndCall-address-bytes- +:xref-TransferHelper-unifiedTransferFrom-contract-IERC20-address-address-uint256-: xref:shared.adoc#TransferHelper-unifiedTransferFrom-contract-IERC20-address-address-uint256- +:xref-TransferHelper-LogTransferHelperInputValidation1Failed-bool-address-address-: xref:shared.adoc#TransferHelper-LogTransferHelperInputValidation1Failed-bool-address-address- +:xref-TransferHelper-LogTransferHelperInputValidation2Failed-uint256-uint256-: xref:shared.adoc#TransferHelper-LogTransferHelperInputValidation2Failed-uint256-uint256- +:xref-TransferHelper-LogTransferHelperCallFailed-bool-uint256-bytes-: xref:shared.adoc#TransferHelper-LogTransferHelperCallFailed-bool-uint256-bytes- +:xref-WithRegistry-onlyInstanceOperator--: xref:shared.adoc#WithRegistry-onlyInstanceOperator-- +:xref-WithRegistry-onlyOracleService--: xref:shared.adoc#WithRegistry-onlyOracleService-- +:xref-WithRegistry-onlyOracleOwner--: xref:shared.adoc#WithRegistry-onlyOracleOwner-- +:xref-WithRegistry-onlyProductOwner--: xref:shared.adoc#WithRegistry-onlyProductOwner-- +:xref-WithRegistry-constructor-address-: xref:shared.adoc#WithRegistry-constructor-address- +:xref-WithRegistry-getContractFromRegistry-bytes32-: xref:shared.adoc#WithRegistry-getContractFromRegistry-bytes32- +:xref-WithRegistry-getContractInReleaseFromRegistry-bytes32-bytes32-: xref:shared.adoc#WithRegistry-getContractInReleaseFromRegistry-bytes32-bytes32- +:xref-WithRegistry-getReleaseFromRegistry--: xref:shared.adoc#WithRegistry-getReleaseFromRegistry-- += Shared + +[.readme-notice] +NOTE: This document is better viewed at https://docs.etherisc.com/contracts/api/shared + +== Contracts + +:_registry: pass:normal[xref:#CoreController-_registry-contract-IRegistry[`++_registry++`]] +:_access: pass:normal[xref:#CoreController-_access-contract-IAccess[`++_access++`]] +:constructor: pass:normal[xref:#CoreController-constructor--[`++constructor++`]] +:onlyInstanceOperator: pass:normal[xref:#CoreController-onlyInstanceOperator--[`++onlyInstanceOperator++`]] +:onlyPolicyFlow: pass:normal[xref:#CoreController-onlyPolicyFlow-bytes32-[`++onlyPolicyFlow++`]] +:initialize: pass:normal[xref:#CoreController-initialize-address-[`++initialize++`]] +:_getName: pass:normal[xref:#CoreController-_getName--[`++_getName++`]] +:_afterInitialize: pass:normal[xref:#CoreController-_afterInitialize--[`++_afterInitialize++`]] +:_getContractAddress: pass:normal[xref:#CoreController-_getContractAddress-bytes32-[`++_getContractAddress++`]] + +[.contract] +[[CoreController]] +=== `++CoreController++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/shared/CoreController.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/shared/CoreController.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-CoreController-onlyInstanceOperator--}[`++onlyInstanceOperator()++`] +* {xref-CoreController-onlyPolicyFlow-bytes32-}[`++onlyPolicyFlow(module)++`] +-- + +[.contract-index] +.Functions +-- +* {xref-CoreController-constructor--}[`++constructor()++`] +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +-- + +[.contract-item] +[[CoreController-onlyInstanceOperator--]] +==== `[.contract-item-name]#++onlyInstanceOperator++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[CoreController-onlyPolicyFlow-bytes32-]] +==== `[.contract-item-name]#++onlyPolicyFlow++#++(bytes32 module)++` [.item-kind]#modifier# + +[.contract-item] +[[CoreController-constructor--]] +==== `[.contract-item-name]#++constructor++#++()++` [.item-kind]#public# + +[.contract-item] +[[CoreController-initialize-address-]] +==== `[.contract-item-name]#++initialize++#++(address registry)++` [.item-kind]#public# + +[.contract-item] +[[CoreController-_getName--]] +==== `[.contract-item-name]#++_getName++#++() → bytes32++` [.item-kind]#internal# + +[.contract-item] +[[CoreController-_afterInitialize--]] +==== `[.contract-item-name]#++_afterInitialize++#++()++` [.item-kind]#internal# + +[.contract-item] +[[CoreController-_getContractAddress-bytes32-]] +==== `[.contract-item-name]#++_getContractAddress++#++(bytes32 contractName) → address contractAddress++` [.item-kind]#internal# + +:onlyAdmin: pass:normal[xref:#CoreProxy-onlyAdmin--[`++onlyAdmin++`]] +:constructor: pass:normal[xref:#CoreProxy-constructor-address-bytes-[`++constructor++`]] +:implementation: pass:normal[xref:#CoreProxy-implementation--[`++implementation++`]] +:upgradeToAndCall: pass:normal[xref:#CoreProxy-upgradeToAndCall-address-bytes-[`++upgradeToAndCall++`]] + +[.contract] +[[CoreProxy]] +=== `++CoreProxy++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/shared/CoreProxy.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/shared/CoreProxy.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-CoreProxy-onlyAdmin--}[`++onlyAdmin()++`] +-- + +[.contract-index] +.Functions +-- +* {xref-CoreProxy-constructor-address-bytes-}[`++constructor(_controller, encoded_initializer)++`] +* {xref-CoreProxy-implementation--}[`++implementation()++`] +* {xref-CoreProxy-upgradeToAndCall-address-bytes-}[`++upgradeToAndCall(newImplementation, data)++`] + +[.contract-subindex-inherited] +.ERC1967Proxy +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#ERC1967Proxy-_implementation--[`++_implementation()++`] + +[.contract-subindex-inherited] +.ERC1967Upgrade +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#ERC1967Upgrade-_getImplementation--[`++_getImplementation()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#ERC1967Upgrade-_upgradeTo-address-[`++_upgradeTo(newImplementation)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#ERC1967Upgrade-_upgradeToAndCall-address-bytes-bool-[`++_upgradeToAndCall(newImplementation, data, forceCall)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#ERC1967Upgrade-_upgradeToAndCallUUPS-address-bytes-bool-[`++_upgradeToAndCallUUPS(newImplementation, data, forceCall)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#ERC1967Upgrade-_getAdmin--[`++_getAdmin()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#ERC1967Upgrade-_changeAdmin-address-[`++_changeAdmin(newAdmin)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#ERC1967Upgrade-_getBeacon--[`++_getBeacon()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#ERC1967Upgrade-_upgradeBeaconToAndCall-address-bytes-bool-[`++_upgradeBeaconToAndCall(newBeacon, data, forceCall)++`] + +[.contract-subindex-inherited] +.Proxy +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Proxy-_delegate-address-[`++_delegate(implementation)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Proxy-_fallback--[`++_fallback()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Proxy-fallback--[`++fallback()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Proxy-receive--[`++receive()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Proxy-_beforeFallback--[`++_beforeFallback()++`] + +[.contract-subindex-inherited] +.ICoreProxy + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.ERC1967Proxy + +[.contract-subindex-inherited] +.ERC1967Upgrade +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#ERC1967Upgrade-Upgraded-address-[`++Upgraded(implementation)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#ERC1967Upgrade-AdminChanged-address-address-[`++AdminChanged(previousAdmin, newAdmin)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#ERC1967Upgrade-BeaconUpgraded-address-[`++BeaconUpgraded(beacon)++`] + +[.contract-subindex-inherited] +.Proxy + +[.contract-subindex-inherited] +.ICoreProxy +* https://github.com/etherisc/gif-interface/blob/develop/contracts/shared/ICoreProxy.sol[`++LogCoreContractUpgraded(oldImplementation, newImplemntation)++`] + +-- + +[.contract-item] +[[CoreProxy-onlyAdmin--]] +==== `[.contract-item-name]#++onlyAdmin++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[CoreProxy-constructor-address-bytes-]] +==== `[.contract-item-name]#++constructor++#++(address _controller, bytes encoded_initializer)++` [.item-kind]#public# + +[.contract-item] +[[CoreProxy-implementation--]] +==== `[.contract-item-name]#++implementation++#++() → address++` [.item-kind]#external# + +[.contract-item] +[[CoreProxy-upgradeToAndCall-address-bytes-]] +==== `[.contract-item-name]#++upgradeToAndCall++#++(address newImplementation, bytes data)++` [.item-kind]#external# + +:LogTransferHelperInputValidation1Failed: pass:normal[xref:#TransferHelper-LogTransferHelperInputValidation1Failed-bool-address-address-[`++LogTransferHelperInputValidation1Failed++`]] +:LogTransferHelperInputValidation2Failed: pass:normal[xref:#TransferHelper-LogTransferHelperInputValidation2Failed-uint256-uint256-[`++LogTransferHelperInputValidation2Failed++`]] +:LogTransferHelperCallFailed: pass:normal[xref:#TransferHelper-LogTransferHelperCallFailed-bool-uint256-bytes-[`++LogTransferHelperCallFailed++`]] +:unifiedTransferFrom: pass:normal[xref:#TransferHelper-unifiedTransferFrom-contract-IERC20-address-address-uint256-[`++unifiedTransferFrom++`]] + +[.contract] +[[TransferHelper]] +=== `++TransferHelper++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/shared/TransferHelper.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/shared/TransferHelper.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-TransferHelper-unifiedTransferFrom-contract-IERC20-address-address-uint256-}[`++unifiedTransferFrom(token, from, to, value)++`] + +-- + +[.contract-index] +.Events +-- +* {xref-TransferHelper-LogTransferHelperInputValidation1Failed-bool-address-address-}[`++LogTransferHelperInputValidation1Failed(tokenIsContract, from, to)++`] +* {xref-TransferHelper-LogTransferHelperInputValidation2Failed-uint256-uint256-}[`++LogTransferHelperInputValidation2Failed(balance, allowance)++`] +* {xref-TransferHelper-LogTransferHelperCallFailed-bool-uint256-bytes-}[`++LogTransferHelperCallFailed(callSuccess, returnDataLength, returnData)++`] + +-- + +[.contract-item] +[[TransferHelper-unifiedTransferFrom-contract-IERC20-address-address-uint256-]] +==== `[.contract-item-name]#++unifiedTransferFrom++#++(contract IERC20 token, address from, address to, uint256 value) → bool success++` [.item-kind]#internal# + +[.contract-item] +[[TransferHelper-LogTransferHelperInputValidation1Failed-bool-address-address-]] +==== `[.contract-item-name]#++LogTransferHelperInputValidation1Failed++#++(bool tokenIsContract, address from, address to)++` [.item-kind]#event# + +[.contract-item] +[[TransferHelper-LogTransferHelperInputValidation2Failed-uint256-uint256-]] +==== `[.contract-item-name]#++LogTransferHelperInputValidation2Failed++#++(uint256 balance, uint256 allowance)++` [.item-kind]#event# + +[.contract-item] +[[TransferHelper-LogTransferHelperCallFailed-bool-uint256-bytes-]] +==== `[.contract-item-name]#++LogTransferHelperCallFailed++#++(bool callSuccess, uint256 returnDataLength, bytes returnData)++` [.item-kind]#event# + +:registry: pass:normal[xref:#WithRegistry-registry-contract-IRegistry[`++registry++`]] +:onlyInstanceOperator: pass:normal[xref:#WithRegistry-onlyInstanceOperator--[`++onlyInstanceOperator++`]] +:onlyOracleService: pass:normal[xref:#WithRegistry-onlyOracleService--[`++onlyOracleService++`]] +:onlyOracleOwner: pass:normal[xref:#WithRegistry-onlyOracleOwner--[`++onlyOracleOwner++`]] +:onlyProductOwner: pass:normal[xref:#WithRegistry-onlyProductOwner--[`++onlyProductOwner++`]] +:constructor: pass:normal[xref:#WithRegistry-constructor-address-[`++constructor++`]] +:getContractFromRegistry: pass:normal[xref:#WithRegistry-getContractFromRegistry-bytes32-[`++getContractFromRegistry++`]] +:getContractInReleaseFromRegistry: pass:normal[xref:#WithRegistry-getContractInReleaseFromRegistry-bytes32-bytes32-[`++getContractInReleaseFromRegistry++`]] +:getReleaseFromRegistry: pass:normal[xref:#WithRegistry-getReleaseFromRegistry--[`++getReleaseFromRegistry++`]] + +[.contract] +[[WithRegistry]] +=== `++WithRegistry++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/shared/WithRegistry.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/shared/WithRegistry.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-WithRegistry-onlyInstanceOperator--}[`++onlyInstanceOperator()++`] +* {xref-WithRegistry-onlyOracleService--}[`++onlyOracleService()++`] +* {xref-WithRegistry-onlyOracleOwner--}[`++onlyOracleOwner()++`] +* {xref-WithRegistry-onlyProductOwner--}[`++onlyProductOwner()++`] +-- + +[.contract-index] +.Functions +-- +* {xref-WithRegistry-constructor-address-}[`++constructor(_registry)++`] +* {xref-WithRegistry-getContractFromRegistry-bytes32-}[`++getContractFromRegistry(_contractName)++`] +* {xref-WithRegistry-getContractInReleaseFromRegistry-bytes32-bytes32-}[`++getContractInReleaseFromRegistry(_release, _contractName)++`] +* {xref-WithRegistry-getReleaseFromRegistry--}[`++getReleaseFromRegistry()++`] + +-- + +[.contract-item] +[[WithRegistry-onlyInstanceOperator--]] +==== `[.contract-item-name]#++onlyInstanceOperator++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[WithRegistry-onlyOracleService--]] +==== `[.contract-item-name]#++onlyOracleService++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[WithRegistry-onlyOracleOwner--]] +==== `[.contract-item-name]#++onlyOracleOwner++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[WithRegistry-onlyProductOwner--]] +==== `[.contract-item-name]#++onlyProductOwner++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[WithRegistry-constructor-address-]] +==== `[.contract-item-name]#++constructor++#++(address _registry)++` [.item-kind]#public# + +[.contract-item] +[[WithRegistry-getContractFromRegistry-bytes32-]] +==== `[.contract-item-name]#++getContractFromRegistry++#++(bytes32 _contractName) → address _addr++` [.item-kind]#public# + +[.contract-item] +[[WithRegistry-getContractInReleaseFromRegistry-bytes32-bytes32-]] +==== `[.contract-item-name]#++getContractInReleaseFromRegistry++#++(bytes32 _release, bytes32 _contractName) → address _addr++` [.item-kind]#internal# + +[.contract-item] +[[WithRegistry-getReleaseFromRegistry--]] +==== `[.contract-item-name]#++getReleaseFromRegistry++#++() → bytes32 _release++` [.item-kind]#internal# + diff --git a/docs/modules/api/pages/test.adoc b/docs/modules/api/pages/test.adoc new file mode 100644 index 00000000..f8f12efb --- /dev/null +++ b/docs/modules/api/pages/test.adoc @@ -0,0 +1,1271 @@ +:github-icon: pass:[] +:xref-TestCoin-constructor--: xref:test.adoc#TestCoin-constructor-- +:xref-TestCoinAlternativeImplementation-constructor--: xref:test.adoc#TestCoinAlternativeImplementation-constructor-- +:xref-TestCoinAlternativeImplementation-transferFrom-address-address-uint256-: xref:test.adoc#TestCoinAlternativeImplementation-transferFrom-address-address-uint256- +:xref-TestCompromisedProduct-onlyPolicyHolder-bytes32-: xref:test.adoc#TestCompromisedProduct-onlyPolicyHolder-bytes32- +:xref-TestCompromisedProduct-constructor-bytes32-address-uint256-uint256-address-: xref:test.adoc#TestCompromisedProduct-constructor-bytes32-address-uint256-uint256-address- +:xref-TestCompromisedProduct-applyForPolicy-uint256-uint256-bytes-bytes-: xref:test.adoc#TestCompromisedProduct-applyForPolicy-uint256-uint256-bytes-bytes- +:xref-TestCompromisedProduct-collectPremium-bytes32-: xref:test.adoc#TestCompromisedProduct-collectPremium-bytes32- +:xref-TestCompromisedProduct-submitClaim-bytes32-uint256-: xref:test.adoc#TestCompromisedProduct-submitClaim-bytes32-uint256- +:xref-TestCompromisedProduct-getToken--: xref:test.adoc#TestCompromisedProduct-getToken-- +:xref-TestCompromisedProduct-getPolicyFlow--: xref:test.adoc#TestCompromisedProduct-getPolicyFlow-- +:xref-TestCompromisedProduct-getRiskpoolId--: xref:test.adoc#TestCompromisedProduct-getRiskpoolId-- +:xref-TestCompromisedProduct-getApplicationDataStructure--: xref:test.adoc#TestCompromisedProduct-getApplicationDataStructure-- +:xref-TestCompromisedProduct-getClaimDataStructure--: xref:test.adoc#TestCompromisedProduct-getClaimDataStructure-- +:xref-TestCompromisedProduct-getPayoutDataStructure--: xref:test.adoc#TestCompromisedProduct-getPayoutDataStructure-- +:xref-TestCompromisedProduct-riskPoolCapacityCallback-uint256-: xref:test.adoc#TestCompromisedProduct-riskPoolCapacityCallback-uint256- +:xref-TestCompromisedProduct-setId-uint256-: xref:test.adoc#TestCompromisedProduct-setId-uint256- +:xref-TestCompromisedProduct-getName--: xref:test.adoc#TestCompromisedProduct-getName-- +:xref-TestCompromisedProduct-getId--: xref:test.adoc#TestCompromisedProduct-getId-- +:xref-TestCompromisedProduct-getType--: xref:test.adoc#TestCompromisedProduct-getType-- +:xref-TestCompromisedProduct-getState--: xref:test.adoc#TestCompromisedProduct-getState-- +:xref-TestCompromisedProduct-getOwner--: xref:test.adoc#TestCompromisedProduct-getOwner-- +:xref-TestCompromisedProduct-getRegistry--: xref:test.adoc#TestCompromisedProduct-getRegistry-- +:xref-TestCompromisedProduct-isProduct--: xref:test.adoc#TestCompromisedProduct-isProduct-- +:xref-TestCompromisedProduct-isOracle--: xref:test.adoc#TestCompromisedProduct-isOracle-- +:xref-TestCompromisedProduct-isRiskpool--: xref:test.adoc#TestCompromisedProduct-isRiskpool-- +:xref-TestCompromisedProduct-proposalCallback--: xref:test.adoc#TestCompromisedProduct-proposalCallback-- +:xref-TestCompromisedProduct-approvalCallback--: xref:test.adoc#TestCompromisedProduct-approvalCallback-- +:xref-TestCompromisedProduct-declineCallback--: xref:test.adoc#TestCompromisedProduct-declineCallback-- +:xref-TestCompromisedProduct-suspendCallback--: xref:test.adoc#TestCompromisedProduct-suspendCallback-- +:xref-TestCompromisedProduct-resumeCallback--: xref:test.adoc#TestCompromisedProduct-resumeCallback-- +:xref-TestCompromisedProduct-pauseCallback--: xref:test.adoc#TestCompromisedProduct-pauseCallback-- +:xref-TestCompromisedProduct-unpauseCallback--: xref:test.adoc#TestCompromisedProduct-unpauseCallback-- +:xref-TestCompromisedProduct-archiveCallback--: xref:test.adoc#TestCompromisedProduct-archiveCallback-- +:xref-TestOracle-constructor-bytes32-address-: xref:test.adoc#TestOracle-constructor-bytes32-address- +:xref-TestOracle-request-uint256-bytes-: xref:test.adoc#TestOracle-request-uint256-bytes- +:xref-TestOracle-cancel-uint256-: xref:test.adoc#TestOracle-cancel-uint256- +:xref-TestOracle-respond-uint256-bool-: xref:test.adoc#TestOracle-respond-uint256-bool- +:xref-TestOracle-_oracleCalculation-uint256-: xref:test.adoc#TestOracle-_oracleCalculation-uint256- +:xref-TestProduct-constructor-bytes32-address-address-uint256-uint256-address-: xref:test.adoc#TestProduct-constructor-bytes32-address-address-uint256-uint256-address- +:xref-TestProduct-applyForPolicy-uint256-uint256-bytes-bytes-: xref:test.adoc#TestProduct-applyForPolicy-uint256-uint256-bytes-bytes- +:xref-TestProduct-applyForPolicy-address-payable-uint256-uint256-bytes-bytes-: xref:test.adoc#TestProduct-applyForPolicy-address-payable-uint256-uint256-bytes-bytes- +:xref-TestProduct-newAppliation-uint256-uint256-bytes-bytes-: xref:test.adoc#TestProduct-newAppliation-uint256-uint256-bytes-bytes- +:xref-TestProduct-revoke-bytes32-: xref:test.adoc#TestProduct-revoke-bytes32- +:xref-TestProduct-decline-bytes32-: xref:test.adoc#TestProduct-decline-bytes32- +:xref-TestProduct-underwrite-bytes32-: xref:test.adoc#TestProduct-underwrite-bytes32- +:xref-TestProduct-collectPremium-bytes32-: xref:test.adoc#TestProduct-collectPremium-bytes32- +:xref-TestProduct-collectPremium-bytes32-uint256-: xref:test.adoc#TestProduct-collectPremium-bytes32-uint256- +:xref-TestProduct-adjustPremiumSumInsured-bytes32-uint256-uint256-: xref:test.adoc#TestProduct-adjustPremiumSumInsured-bytes32-uint256-uint256- +:xref-TestProduct-expire-bytes32-: xref:test.adoc#TestProduct-expire-bytes32- +:xref-TestProduct-close-bytes32-: xref:test.adoc#TestProduct-close-bytes32- +:xref-TestProduct-submitClaim-bytes32-uint256-: xref:test.adoc#TestProduct-submitClaim-bytes32-uint256- +:xref-TestProduct-submitClaimNoOracle-bytes32-uint256-: xref:test.adoc#TestProduct-submitClaimNoOracle-bytes32-uint256- +:xref-TestProduct-submitClaimWithDeferredResponse-bytes32-uint256-: xref:test.adoc#TestProduct-submitClaimWithDeferredResponse-bytes32-uint256- +:xref-TestProduct-confirmClaim-bytes32-uint256-uint256-: xref:test.adoc#TestProduct-confirmClaim-bytes32-uint256-uint256- +:xref-TestProduct-declineClaim-bytes32-uint256-: xref:test.adoc#TestProduct-declineClaim-bytes32-uint256- +:xref-TestProduct-closeClaim-bytes32-uint256-: xref:test.adoc#TestProduct-closeClaim-bytes32-uint256- +:xref-TestProduct-createPayout-bytes32-uint256-uint256-: xref:test.adoc#TestProduct-createPayout-bytes32-uint256-uint256- +:xref-TestProduct-newPayout-bytes32-uint256-uint256-: xref:test.adoc#TestProduct-newPayout-bytes32-uint256-uint256- +:xref-TestProduct-processPayout-bytes32-uint256-: xref:test.adoc#TestProduct-processPayout-bytes32-uint256- +:xref-TestProduct-oracleCallback-uint256-bytes32-bytes-: xref:test.adoc#TestProduct-oracleCallback-uint256-bytes32-bytes- +:xref-TestProduct-getClaimId-bytes32-: xref:test.adoc#TestProduct-getClaimId-bytes32- +:xref-TestProduct-getPayoutId-bytes32-: xref:test.adoc#TestProduct-getPayoutId-bytes32- +:xref-TestProduct-applications--: xref:test.adoc#TestProduct-applications-- +:xref-TestProduct-policies--: xref:test.adoc#TestProduct-policies-- +:xref-TestProduct-claims--: xref:test.adoc#TestProduct-claims-- +:xref-TestProduct-LogTestProductFundingReceived-address-uint256-: xref:test.adoc#TestProduct-LogTestProductFundingReceived-address-uint256- +:xref-TestProduct-LogTestOracleCallbackReceived-uint256-bytes32-bytes-: xref:test.adoc#TestProduct-LogTestOracleCallbackReceived-uint256-bytes32-bytes- +:xref-TestRegistryCompromisedController-getContract-bytes32-: xref:test.adoc#TestRegistryCompromisedController-getContract-bytes32- +:xref-TestRegistryCompromisedController-upgradeToV2-address-address-: xref:test.adoc#TestRegistryCompromisedController-upgradeToV2-address-address- +:xref-TestRegistryControllerUpdated-setMessage-string-: xref:test.adoc#TestRegistryControllerUpdated-setMessage-string- +:xref-TestRegistryControllerUpdated-getMessage--: xref:test.adoc#TestRegistryControllerUpdated-getMessage-- +:xref-TestRegistryControllerUpdated-upgradeToV2-string-: xref:test.adoc#TestRegistryControllerUpdated-upgradeToV2-string- +:xref-RegistryController-initializeRegistry-bytes32-: xref:modules.adoc#RegistryController-initializeRegistry-bytes32- +:xref-RegistryController-ensureSender-address-bytes32-: xref:modules.adoc#RegistryController-ensureSender-address-bytes32- +:xref-RegistryController-getRelease--: xref:modules.adoc#RegistryController-getRelease-- +:xref-RegistryController-getContract-bytes32-: xref:modules.adoc#RegistryController-getContract-bytes32- +:xref-RegistryController-register-bytes32-address-: xref:modules.adoc#RegistryController-register-bytes32-address- +:xref-RegistryController-deregister-bytes32-: xref:modules.adoc#RegistryController-deregister-bytes32- +:xref-RegistryController-getContractInRelease-bytes32-bytes32-: xref:modules.adoc#RegistryController-getContractInRelease-bytes32-bytes32- +:xref-RegistryController-registerInRelease-bytes32-bytes32-address-: xref:modules.adoc#RegistryController-registerInRelease-bytes32-bytes32-address- +:xref-RegistryController-deregisterInRelease-bytes32-bytes32-: xref:modules.adoc#RegistryController-deregisterInRelease-bytes32-bytes32- +:xref-RegistryController-prepareRelease-bytes32-: xref:modules.adoc#RegistryController-prepareRelease-bytes32- +:xref-RegistryController-contracts--: xref:modules.adoc#RegistryController-contracts-- +:xref-RegistryController-contractName-uint256-: xref:modules.adoc#RegistryController-contractName-uint256- +:xref-RegistryController-_getContractInRelease-bytes32-bytes32-: xref:modules.adoc#RegistryController-_getContractInRelease-bytes32-bytes32- +:xref-RegistryController-_registerInRelease-bytes32-bool-bytes32-address-: xref:modules.adoc#RegistryController-_registerInRelease-bytes32-bool-bytes32-address- +:xref-RegistryController-_deregisterInRelease-bytes32-bytes32-: xref:modules.adoc#RegistryController-_deregisterInRelease-bytes32-bytes32- +:xref-CoreController-initialize-address-: xref:shared.adoc#CoreController-initialize-address- +:xref-CoreController-_getName--: xref:shared.adoc#CoreController-_getName-- +:xref-CoreController-_afterInitialize--: xref:shared.adoc#CoreController-_afterInitialize-- +:xref-CoreController-_getContractAddress-bytes32-: xref:shared.adoc#CoreController-_getContractAddress-bytes32- +:xref-TestRiskpool-constructor-bytes32-uint256-address-address-address-: xref:test.adoc#TestRiskpool-constructor-bytes32-uint256-address-address-address- +:xref-TestRiskpool-bundleMatchesApplication-struct-IBundle-Bundle-struct-IPolicy-Application-: xref:test.adoc#TestRiskpool-bundleMatchesApplication-struct-IBundle-Bundle-struct-IPolicy-Application- +:xref-TestTransferFrom-unifiedTransferFrom-contract-IERC20-address-address-uint256-: xref:test.adoc#TestTransferFrom-unifiedTransferFrom-contract-IERC20-address-address-uint256- +:xref-TestTransferFrom-LogTransferHelperInputValidation1Failed-bool-address-address-: xref:test.adoc#TestTransferFrom-LogTransferHelperInputValidation1Failed-bool-address-address- +:xref-TestTransferFrom-LogTransferHelperInputValidation2Failed-uint256-uint256-: xref:test.adoc#TestTransferFrom-LogTransferHelperInputValidation2Failed-uint256-uint256- +:xref-TestTransferFrom-LogTransferHelperCallFailed-bool-uint256-bytes-: xref:test.adoc#TestTransferFrom-LogTransferHelperCallFailed-bool-uint256-bytes- += Test + +[.readme-notice] +NOTE: This document is better viewed at https://docs.etherisc.com/contracts/api/test + +== Contracts + +:NAME: pass:normal[xref:#TestCoin-NAME-string[`++NAME++`]] +:SYMBOL: pass:normal[xref:#TestCoin-SYMBOL-string[`++SYMBOL++`]] +:INITIAL_SUPPLY: pass:normal[xref:#TestCoin-INITIAL_SUPPLY-uint256[`++INITIAL_SUPPLY++`]] +:constructor: pass:normal[xref:#TestCoin-constructor--[`++constructor++`]] + +[.contract] +[[TestCoin]] +=== `++TestCoin++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/test/TestCoin.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/test/TestCoin.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-TestCoin-constructor--}[`++constructor()++`] + +[.contract-subindex-inherited] +.ERC20 +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-name--[`++name()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-symbol--[`++symbol()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-decimals--[`++decimals()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-totalSupply--[`++totalSupply()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-balanceOf-address-[`++balanceOf(account)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-transfer-address-uint256-[`++transfer(to, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-allowance-address-address-[`++allowance(owner, spender)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-approve-address-uint256-[`++approve(spender, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-transferFrom-address-address-uint256-[`++transferFrom(from, to, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-increaseAllowance-address-uint256-[`++increaseAllowance(spender, addedValue)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-decreaseAllowance-address-uint256-[`++decreaseAllowance(spender, subtractedValue)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_transfer-address-address-uint256-[`++_transfer(from, to, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_mint-address-uint256-[`++_mint(account, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_burn-address-uint256-[`++_burn(account, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_approve-address-address-uint256-[`++_approve(owner, spender, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_spendAllowance-address-address-uint256-[`++_spendAllowance(owner, spender, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_beforeTokenTransfer-address-address-uint256-[`++_beforeTokenTransfer(from, to, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_afterTokenTransfer-address-address-uint256-[`++_afterTokenTransfer(from, to, amount)++`] + +[.contract-subindex-inherited] +.IERC20Metadata + +[.contract-subindex-inherited] +.IERC20 + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.ERC20 + +[.contract-subindex-inherited] +.IERC20Metadata + +[.contract-subindex-inherited] +.IERC20 +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#IERC20-Transfer-address-address-uint256-[`++Transfer(from, to, value)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#IERC20-Approval-address-address-uint256-[`++Approval(owner, spender, value)++`] + +-- + +[.contract-item] +[[TestCoin-constructor--]] +==== `[.contract-item-name]#++constructor++#++()++` [.item-kind]#public# + +:NAME: pass:normal[xref:#TestCoinAlternativeImplementation-NAME-string[`++NAME++`]] +:SYMBOL: pass:normal[xref:#TestCoinAlternativeImplementation-SYMBOL-string[`++SYMBOL++`]] +:INITIAL_SUPPLY: pass:normal[xref:#TestCoinAlternativeImplementation-INITIAL_SUPPLY-uint256[`++INITIAL_SUPPLY++`]] +:constructor: pass:normal[xref:#TestCoinAlternativeImplementation-constructor--[`++constructor++`]] +:transferFrom: pass:normal[xref:#TestCoinAlternativeImplementation-transferFrom-address-address-uint256-[`++transferFrom++`]] + +[.contract] +[[TestCoinAlternativeImplementation]] +=== `++TestCoinAlternativeImplementation++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/test/TestCoinAlternativeImplementation.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/test/TestCoinAlternativeImplementation.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-TestCoinAlternativeImplementation-constructor--}[`++constructor()++`] +* {xref-TestCoinAlternativeImplementation-transferFrom-address-address-uint256-}[`++transferFrom(_from, _to, _value)++`] + +[.contract-subindex-inherited] +.ERC20 +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-name--[`++name()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-symbol--[`++symbol()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-decimals--[`++decimals()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-totalSupply--[`++totalSupply()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-balanceOf-address-[`++balanceOf(account)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-transfer-address-uint256-[`++transfer(to, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-allowance-address-address-[`++allowance(owner, spender)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-approve-address-uint256-[`++approve(spender, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-increaseAllowance-address-uint256-[`++increaseAllowance(spender, addedValue)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-decreaseAllowance-address-uint256-[`++decreaseAllowance(spender, subtractedValue)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_transfer-address-address-uint256-[`++_transfer(from, to, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_mint-address-uint256-[`++_mint(account, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_burn-address-uint256-[`++_burn(account, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_approve-address-address-uint256-[`++_approve(owner, spender, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_spendAllowance-address-address-uint256-[`++_spendAllowance(owner, spender, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_beforeTokenTransfer-address-address-uint256-[`++_beforeTokenTransfer(from, to, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_afterTokenTransfer-address-address-uint256-[`++_afterTokenTransfer(from, to, amount)++`] + +[.contract-subindex-inherited] +.IERC20Metadata + +[.contract-subindex-inherited] +.IERC20 + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.ERC20 + +[.contract-subindex-inherited] +.IERC20Metadata + +[.contract-subindex-inherited] +.IERC20 +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#IERC20-Transfer-address-address-uint256-[`++Transfer(from, to, value)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#IERC20-Approval-address-address-uint256-[`++Approval(owner, spender, value)++`] + +-- + +[.contract-item] +[[TestCoinAlternativeImplementation-constructor--]] +==== `[.contract-item-name]#++constructor++#++()++` [.item-kind]#public# + +[.contract-item] +[[TestCoinAlternativeImplementation-transferFrom-address-address-uint256-]] +==== `[.contract-item-name]#++transferFrom++#++(address _from, address _to, uint256 _value) → bool++` [.item-kind]#public# + +:FAKE_STATE: pass:normal[xref:#TestCompromisedProduct-FAKE_STATE-enum-IComponent-ComponentState[`++FAKE_STATE++`]] +:POLICY_FLOW: pass:normal[xref:#TestCompromisedProduct-POLICY_FLOW-bytes32[`++POLICY_FLOW++`]] +:onlyPolicyHolder: pass:normal[xref:#TestCompromisedProduct-onlyPolicyHolder-bytes32-[`++onlyPolicyHolder++`]] +:constructor: pass:normal[xref:#TestCompromisedProduct-constructor-bytes32-address-uint256-uint256-address-[`++constructor++`]] +:applyForPolicy: pass:normal[xref:#TestCompromisedProduct-applyForPolicy-uint256-uint256-bytes-bytes-[`++applyForPolicy++`]] +:collectPremium: pass:normal[xref:#TestCompromisedProduct-collectPremium-bytes32-[`++collectPremium++`]] +:submitClaim: pass:normal[xref:#TestCompromisedProduct-submitClaim-bytes32-uint256-[`++submitClaim++`]] +:getToken: pass:normal[xref:#TestCompromisedProduct-getToken--[`++getToken++`]] +:getPolicyFlow: pass:normal[xref:#TestCompromisedProduct-getPolicyFlow--[`++getPolicyFlow++`]] +:getRiskpoolId: pass:normal[xref:#TestCompromisedProduct-getRiskpoolId--[`++getRiskpoolId++`]] +:getApplicationDataStructure: pass:normal[xref:#TestCompromisedProduct-getApplicationDataStructure--[`++getApplicationDataStructure++`]] +:getClaimDataStructure: pass:normal[xref:#TestCompromisedProduct-getClaimDataStructure--[`++getClaimDataStructure++`]] +:getPayoutDataStructure: pass:normal[xref:#TestCompromisedProduct-getPayoutDataStructure--[`++getPayoutDataStructure++`]] +:riskPoolCapacityCallback: pass:normal[xref:#TestCompromisedProduct-riskPoolCapacityCallback-uint256-[`++riskPoolCapacityCallback++`]] +:setId: pass:normal[xref:#TestCompromisedProduct-setId-uint256-[`++setId++`]] +:getName: pass:normal[xref:#TestCompromisedProduct-getName--[`++getName++`]] +:getId: pass:normal[xref:#TestCompromisedProduct-getId--[`++getId++`]] +:getType: pass:normal[xref:#TestCompromisedProduct-getType--[`++getType++`]] +:getState: pass:normal[xref:#TestCompromisedProduct-getState--[`++getState++`]] +:getOwner: pass:normal[xref:#TestCompromisedProduct-getOwner--[`++getOwner++`]] +:getRegistry: pass:normal[xref:#TestCompromisedProduct-getRegistry--[`++getRegistry++`]] +:isProduct: pass:normal[xref:#TestCompromisedProduct-isProduct--[`++isProduct++`]] +:isOracle: pass:normal[xref:#TestCompromisedProduct-isOracle--[`++isOracle++`]] +:isRiskpool: pass:normal[xref:#TestCompromisedProduct-isRiskpool--[`++isRiskpool++`]] +:proposalCallback: pass:normal[xref:#TestCompromisedProduct-proposalCallback--[`++proposalCallback++`]] +:approvalCallback: pass:normal[xref:#TestCompromisedProduct-approvalCallback--[`++approvalCallback++`]] +:declineCallback: pass:normal[xref:#TestCompromisedProduct-declineCallback--[`++declineCallback++`]] +:suspendCallback: pass:normal[xref:#TestCompromisedProduct-suspendCallback--[`++suspendCallback++`]] +:resumeCallback: pass:normal[xref:#TestCompromisedProduct-resumeCallback--[`++resumeCallback++`]] +:pauseCallback: pass:normal[xref:#TestCompromisedProduct-pauseCallback--[`++pauseCallback++`]] +:unpauseCallback: pass:normal[xref:#TestCompromisedProduct-unpauseCallback--[`++unpauseCallback++`]] +:archiveCallback: pass:normal[xref:#TestCompromisedProduct-archiveCallback--[`++archiveCallback++`]] + +[.contract] +[[TestCompromisedProduct]] +=== `++TestCompromisedProduct++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/test/TestCompromisedProduct.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/test/TestCompromisedProduct.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-TestCompromisedProduct-onlyPolicyHolder-bytes32-}[`++onlyPolicyHolder(policyId)++`] +-- + +[.contract-index] +.Functions +-- +* {xref-TestCompromisedProduct-constructor-bytes32-address-uint256-uint256-address-}[`++constructor(fakeProductName, tokenAddress, fakeComponentId, fakeRiskpoolId, registryAddress)++`] +* {xref-TestCompromisedProduct-applyForPolicy-uint256-uint256-bytes-bytes-}[`++applyForPolicy(premium, sumInsured, metaData, applicationData)++`] +* {xref-TestCompromisedProduct-collectPremium-bytes32-}[`++collectPremium(policyId)++`] +* {xref-TestCompromisedProduct-submitClaim-bytes32-uint256-}[`++submitClaim(policyId, claimAmount)++`] +* {xref-TestCompromisedProduct-getToken--}[`++getToken()++`] +* {xref-TestCompromisedProduct-getPolicyFlow--}[`++getPolicyFlow()++`] +* {xref-TestCompromisedProduct-getRiskpoolId--}[`++getRiskpoolId()++`] +* {xref-TestCompromisedProduct-getApplicationDataStructure--}[`++getApplicationDataStructure()++`] +* {xref-TestCompromisedProduct-getClaimDataStructure--}[`++getClaimDataStructure()++`] +* {xref-TestCompromisedProduct-getPayoutDataStructure--}[`++getPayoutDataStructure()++`] +* {xref-TestCompromisedProduct-riskPoolCapacityCallback-uint256-}[`++riskPoolCapacityCallback(capacity)++`] +* {xref-TestCompromisedProduct-setId-uint256-}[`++setId(id)++`] +* {xref-TestCompromisedProduct-getName--}[`++getName()++`] +* {xref-TestCompromisedProduct-getId--}[`++getId()++`] +* {xref-TestCompromisedProduct-getType--}[`++getType()++`] +* {xref-TestCompromisedProduct-getState--}[`++getState()++`] +* {xref-TestCompromisedProduct-getOwner--}[`++getOwner()++`] +* {xref-TestCompromisedProduct-getRegistry--}[`++getRegistry()++`] +* {xref-TestCompromisedProduct-isProduct--}[`++isProduct()++`] +* {xref-TestCompromisedProduct-isOracle--}[`++isOracle()++`] +* {xref-TestCompromisedProduct-isRiskpool--}[`++isRiskpool()++`] +* {xref-TestCompromisedProduct-proposalCallback--}[`++proposalCallback()++`] +* {xref-TestCompromisedProduct-approvalCallback--}[`++approvalCallback()++`] +* {xref-TestCompromisedProduct-declineCallback--}[`++declineCallback()++`] +* {xref-TestCompromisedProduct-suspendCallback--}[`++suspendCallback()++`] +* {xref-TestCompromisedProduct-resumeCallback--}[`++resumeCallback()++`] +* {xref-TestCompromisedProduct-pauseCallback--}[`++pauseCallback()++`] +* {xref-TestCompromisedProduct-unpauseCallback--}[`++unpauseCallback()++`] +* {xref-TestCompromisedProduct-archiveCallback--}[`++archiveCallback()++`] + +[.contract-subindex-inherited] +.Ownable +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-owner--[`++owner()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-_checkOwner--[`++_checkOwner()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-renounceOwnership--[`++renounceOwnership()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-transferOwnership-address-[`++transferOwnership(newOwner)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-_transferOwnership-address-[`++_transferOwnership(newOwner)++`] + +[.contract-subindex-inherited] +.IProduct + +[.contract-subindex-inherited] +.IComponent + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.Ownable +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-OwnershipTransferred-address-address-[`++OwnershipTransferred(previousOwner, newOwner)++`] + +[.contract-subindex-inherited] +.IProduct +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IProduct.sol[`++LogProductCreated(productAddress)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IProduct.sol[`++LogProductProposed(componentId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IProduct.sol[`++LogProductApproved(componentId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IProduct.sol[`++LogProductDeclined(componentId)++`] + +[.contract-subindex-inherited] +.IComponent +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IComponent.sol[`++LogComponentCreated(componentName, componentType, componentAddress, registryAddress)++`] + +-- + +[.contract-item] +[[TestCompromisedProduct-onlyPolicyHolder-bytes32-]] +==== `[.contract-item-name]#++onlyPolicyHolder++#++(bytes32 policyId)++` [.item-kind]#modifier# + +[.contract-item] +[[TestCompromisedProduct-constructor-bytes32-address-uint256-uint256-address-]] +==== `[.contract-item-name]#++constructor++#++(bytes32 fakeProductName, address tokenAddress, uint256 fakeComponentId, uint256 fakeRiskpoolId, address registryAddress)++` [.item-kind]#public# + +[.contract-item] +[[TestCompromisedProduct-applyForPolicy-uint256-uint256-bytes-bytes-]] +==== `[.contract-item-name]#++applyForPolicy++#++(uint256 premium, uint256 sumInsured, bytes metaData, bytes applicationData) → bytes32 processId++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-collectPremium-bytes32-]] +==== `[.contract-item-name]#++collectPremium++#++(bytes32 policyId)++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-submitClaim-bytes32-uint256-]] +==== `[.contract-item-name]#++submitClaim++#++(bytes32 policyId, uint256 claimAmount)++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-getToken--]] +==== `[.contract-item-name]#++getToken++#++() → address token++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-getPolicyFlow--]] +==== `[.contract-item-name]#++getPolicyFlow++#++() → address policyFlow++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-getRiskpoolId--]] +==== `[.contract-item-name]#++getRiskpoolId++#++() → uint256 riskpoolId++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-getApplicationDataStructure--]] +==== `[.contract-item-name]#++getApplicationDataStructure++#++() → string dataStructure++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-getClaimDataStructure--]] +==== `[.contract-item-name]#++getClaimDataStructure++#++() → string dataStructure++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-getPayoutDataStructure--]] +==== `[.contract-item-name]#++getPayoutDataStructure++#++() → string dataStructure++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-riskPoolCapacityCallback-uint256-]] +==== `[.contract-item-name]#++riskPoolCapacityCallback++#++(uint256 capacity)++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-setId-uint256-]] +==== `[.contract-item-name]#++setId++#++(uint256 id)++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-getName--]] +==== `[.contract-item-name]#++getName++#++() → bytes32++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-getId--]] +==== `[.contract-item-name]#++getId++#++() → uint256++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-getType--]] +==== `[.contract-item-name]#++getType++#++() → enum IComponent.ComponentType++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-getState--]] +==== `[.contract-item-name]#++getState++#++() → enum IComponent.ComponentState++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-getOwner--]] +==== `[.contract-item-name]#++getOwner++#++() → address++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-getRegistry--]] +==== `[.contract-item-name]#++getRegistry++#++() → contract IRegistry++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-isProduct--]] +==== `[.contract-item-name]#++isProduct++#++() → bool++` [.item-kind]#public# + +[.contract-item] +[[TestCompromisedProduct-isOracle--]] +==== `[.contract-item-name]#++isOracle++#++() → bool++` [.item-kind]#public# + +[.contract-item] +[[TestCompromisedProduct-isRiskpool--]] +==== `[.contract-item-name]#++isRiskpool++#++() → bool++` [.item-kind]#public# + +[.contract-item] +[[TestCompromisedProduct-proposalCallback--]] +==== `[.contract-item-name]#++proposalCallback++#++()++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-approvalCallback--]] +==== `[.contract-item-name]#++approvalCallback++#++()++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-declineCallback--]] +==== `[.contract-item-name]#++declineCallback++#++()++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-suspendCallback--]] +==== `[.contract-item-name]#++suspendCallback++#++()++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-resumeCallback--]] +==== `[.contract-item-name]#++resumeCallback++#++()++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-pauseCallback--]] +==== `[.contract-item-name]#++pauseCallback++#++()++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-unpauseCallback--]] +==== `[.contract-item-name]#++unpauseCallback++#++()++` [.item-kind]#external# + +[.contract-item] +[[TestCompromisedProduct-archiveCallback--]] +==== `[.contract-item-name]#++archiveCallback++#++()++` [.item-kind]#external# + +:constructor: pass:normal[xref:#TestOracle-constructor-bytes32-address-[`++constructor++`]] +:request: pass:normal[xref:#TestOracle-request-uint256-bytes-[`++request++`]] +:cancel: pass:normal[xref:#TestOracle-cancel-uint256-[`++cancel++`]] +:respond: pass:normal[xref:#TestOracle-respond-uint256-bool-[`++respond++`]] +:_oracleCalculation: pass:normal[xref:#TestOracle-_oracleCalculation-uint256-[`++_oracleCalculation++`]] + +[.contract] +[[TestOracle]] +=== `++TestOracle++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/test/TestOracle.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/test/TestOracle.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-TestOracle-constructor-bytes32-address-}[`++constructor(oracleName, registry)++`] +* {xref-TestOracle-request-uint256-bytes-}[`++request(requestId, input)++`] +* {xref-TestOracle-cancel-uint256-}[`++cancel(requestId)++`] +* {xref-TestOracle-respond-uint256-bool-}[`++respond(requestId, isLossEvent)++`] +* {xref-TestOracle-_oracleCalculation-uint256-}[`++_oracleCalculation(counter)++`] + +[.contract-subindex-inherited] +.Oracle +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Oracle.sol[`++_afterApprove()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Oracle.sol[`++_afterPropose()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Oracle.sol[`++_afterDecline()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Oracle.sol[`++_respond(requestId, data)++`] + +[.contract-subindex-inherited] +.Component +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++setId(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getName()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getId()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getType()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getState()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getOwner()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++isProduct()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++isOracle()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++isRiskpool()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getRegistry()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++proposalCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++approvalCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++declineCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++suspendCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++resumeCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++pauseCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++unpauseCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++archiveCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterSuspend()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterResume()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterPause()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterUnpause()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterArchive()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_getAccess()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_getInstanceService()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_getComponentOwnerService()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Ownable +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-owner--[`++owner()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-_checkOwner--[`++_checkOwner()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-renounceOwnership--[`++renounceOwnership()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-transferOwnership-address-[`++transferOwnership(newOwner)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-_transferOwnership-address-[`++_transferOwnership(newOwner)++`] + +[.contract-subindex-inherited] +.IComponentEvents + +[.contract-subindex-inherited] +.IOracle + +[.contract-subindex-inherited] +.IComponent + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.Oracle + +[.contract-subindex-inherited] +.Component + +[.contract-subindex-inherited] +.Ownable +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-OwnershipTransferred-address-address-[`++OwnershipTransferred(previousOwner, newOwner)++`] + +[.contract-subindex-inherited] +.IComponentEvents +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentProposed(componentName, componentType, componentAddress, id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentApproved(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentDeclined(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentSuspended(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentResumed(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentPaused(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentUnpaused(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentArchived(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentStateChanged(id, stateOld, stateNew)++`] + +[.contract-subindex-inherited] +.IOracle +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IOracle.sol[`++LogOracleCreated(oracleAddress)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IOracle.sol[`++LogOracleProposed(componentId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IOracle.sol[`++LogOracleApproved(componentId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IOracle.sol[`++LogOracleDeclined(componentId)++`] + +[.contract-subindex-inherited] +.IComponent +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IComponent.sol[`++LogComponentCreated(componentName, componentType, componentAddress, registryAddress)++`] + +-- + +[.contract-item] +[[TestOracle-constructor-bytes32-address-]] +==== `[.contract-item-name]#++constructor++#++(bytes32 oracleName, address registry)++` [.item-kind]#public# + +[.contract-item] +[[TestOracle-request-uint256-bytes-]] +==== `[.contract-item-name]#++request++#++(uint256 requestId, bytes input)++` [.item-kind]#external# + +[.contract-item] +[[TestOracle-cancel-uint256-]] +==== `[.contract-item-name]#++cancel++#++(uint256 requestId)++` [.item-kind]#external# + +[.contract-item] +[[TestOracle-respond-uint256-bool-]] +==== `[.contract-item-name]#++respond++#++(uint256 requestId, bool isLossEvent)++` [.item-kind]#public# + +[.contract-item] +[[TestOracle-_oracleCalculation-uint256-]] +==== `[.contract-item-name]#++_oracleCalculation++#++(uint256 counter) → bool isLossEvent++` [.item-kind]#internal# + +:POLICY_FLOW: pass:normal[xref:#TestProduct-POLICY_FLOW-bytes32[`++POLICY_FLOW++`]] +:ORACLE_CALLBACK_METHOD_NAME: pass:normal[xref:#TestProduct-ORACLE_CALLBACK_METHOD_NAME-string[`++ORACLE_CALLBACK_METHOD_NAME++`]] +:LogTestProductFundingReceived: pass:normal[xref:#TestProduct-LogTestProductFundingReceived-address-uint256-[`++LogTestProductFundingReceived++`]] +:LogTestOracleCallbackReceived: pass:normal[xref:#TestProduct-LogTestOracleCallbackReceived-uint256-bytes32-bytes-[`++LogTestOracleCallbackReceived++`]] +:constructor: pass:normal[xref:#TestProduct-constructor-bytes32-address-address-uint256-uint256-address-[`++constructor++`]] +:applyForPolicy: pass:normal[xref:#TestProduct-applyForPolicy-uint256-uint256-bytes-bytes-[`++applyForPolicy++`]] +:applyForPolicy: pass:normal[xref:#TestProduct-applyForPolicy-address-payable-uint256-uint256-bytes-bytes-[`++applyForPolicy++`]] +:newAppliation: pass:normal[xref:#TestProduct-newAppliation-uint256-uint256-bytes-bytes-[`++newAppliation++`]] +:revoke: pass:normal[xref:#TestProduct-revoke-bytes32-[`++revoke++`]] +:decline: pass:normal[xref:#TestProduct-decline-bytes32-[`++decline++`]] +:underwrite: pass:normal[xref:#TestProduct-underwrite-bytes32-[`++underwrite++`]] +:collectPremium: pass:normal[xref:#TestProduct-collectPremium-bytes32-[`++collectPremium++`]] +:collectPremium: pass:normal[xref:#TestProduct-collectPremium-bytes32-uint256-[`++collectPremium++`]] +:adjustPremiumSumInsured: pass:normal[xref:#TestProduct-adjustPremiumSumInsured-bytes32-uint256-uint256-[`++adjustPremiumSumInsured++`]] +:expire: pass:normal[xref:#TestProduct-expire-bytes32-[`++expire++`]] +:close: pass:normal[xref:#TestProduct-close-bytes32-[`++close++`]] +:submitClaim: pass:normal[xref:#TestProduct-submitClaim-bytes32-uint256-[`++submitClaim++`]] +:submitClaimNoOracle: pass:normal[xref:#TestProduct-submitClaimNoOracle-bytes32-uint256-[`++submitClaimNoOracle++`]] +:submitClaimWithDeferredResponse: pass:normal[xref:#TestProduct-submitClaimWithDeferredResponse-bytes32-uint256-[`++submitClaimWithDeferredResponse++`]] +:confirmClaim: pass:normal[xref:#TestProduct-confirmClaim-bytes32-uint256-uint256-[`++confirmClaim++`]] +:declineClaim: pass:normal[xref:#TestProduct-declineClaim-bytes32-uint256-[`++declineClaim++`]] +:closeClaim: pass:normal[xref:#TestProduct-closeClaim-bytes32-uint256-[`++closeClaim++`]] +:createPayout: pass:normal[xref:#TestProduct-createPayout-bytes32-uint256-uint256-[`++createPayout++`]] +:newPayout: pass:normal[xref:#TestProduct-newPayout-bytes32-uint256-uint256-[`++newPayout++`]] +:processPayout: pass:normal[xref:#TestProduct-processPayout-bytes32-uint256-[`++processPayout++`]] +:oracleCallback: pass:normal[xref:#TestProduct-oracleCallback-uint256-bytes32-bytes-[`++oracleCallback++`]] +:getClaimId: pass:normal[xref:#TestProduct-getClaimId-bytes32-[`++getClaimId++`]] +:getPayoutId: pass:normal[xref:#TestProduct-getPayoutId-bytes32-[`++getPayoutId++`]] +:applications: pass:normal[xref:#TestProduct-applications--[`++applications++`]] +:policies: pass:normal[xref:#TestProduct-policies--[`++policies++`]] +:claims: pass:normal[xref:#TestProduct-claims--[`++claims++`]] + +[.contract] +[[TestProduct]] +=== `++TestProduct++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/test/TestProduct.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/test/TestProduct.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-TestProduct-constructor-bytes32-address-address-uint256-uint256-address-}[`++constructor(productName, tokenAddress, capitalOwner, oracleId, riskpoolId, registryAddress)++`] +* {xref-TestProduct-applyForPolicy-uint256-uint256-bytes-bytes-}[`++applyForPolicy(premium, sumInsured, metaData, applicationData)++`] +* {xref-TestProduct-applyForPolicy-address-payable-uint256-uint256-bytes-bytes-}[`++applyForPolicy(policyHolder, premium, sumInsured, metaData, applicationData)++`] +* {xref-TestProduct-newAppliation-uint256-uint256-bytes-bytes-}[`++newAppliation(premium, sumInsured, metaData, applicationData)++`] +* {xref-TestProduct-revoke-bytes32-}[`++revoke(processId)++`] +* {xref-TestProduct-decline-bytes32-}[`++decline(processId)++`] +* {xref-TestProduct-underwrite-bytes32-}[`++underwrite(processId)++`] +* {xref-TestProduct-collectPremium-bytes32-}[`++collectPremium(policyId)++`] +* {xref-TestProduct-collectPremium-bytes32-uint256-}[`++collectPremium(policyId, amount)++`] +* {xref-TestProduct-adjustPremiumSumInsured-bytes32-uint256-uint256-}[`++adjustPremiumSumInsured(processId, expectedPremiumAmount, sumInsuredAmount)++`] +* {xref-TestProduct-expire-bytes32-}[`++expire(policyId)++`] +* {xref-TestProduct-close-bytes32-}[`++close(policyId)++`] +* {xref-TestProduct-submitClaim-bytes32-uint256-}[`++submitClaim(policyId, claimAmount)++`] +* {xref-TestProduct-submitClaimNoOracle-bytes32-uint256-}[`++submitClaimNoOracle(policyId, claimAmount)++`] +* {xref-TestProduct-submitClaimWithDeferredResponse-bytes32-uint256-}[`++submitClaimWithDeferredResponse(policyId, claimAmount)++`] +* {xref-TestProduct-confirmClaim-bytes32-uint256-uint256-}[`++confirmClaim(policyId, claimId, confirmedAmount)++`] +* {xref-TestProduct-declineClaim-bytes32-uint256-}[`++declineClaim(policyId, claimId)++`] +* {xref-TestProduct-closeClaim-bytes32-uint256-}[`++closeClaim(policyId, claimId)++`] +* {xref-TestProduct-createPayout-bytes32-uint256-uint256-}[`++createPayout(policyId, claimId, payoutAmount)++`] +* {xref-TestProduct-newPayout-bytes32-uint256-uint256-}[`++newPayout(policyId, claimId, payoutAmount)++`] +* {xref-TestProduct-processPayout-bytes32-uint256-}[`++processPayout(policyId, payoutId)++`] +* {xref-TestProduct-oracleCallback-uint256-bytes32-bytes-}[`++oracleCallback(requestId, policyId, responseData)++`] +* {xref-TestProduct-getClaimId-bytes32-}[`++getClaimId(policyId)++`] +* {xref-TestProduct-getPayoutId-bytes32-}[`++getPayoutId(policyId)++`] +* {xref-TestProduct-applications--}[`++applications()++`] +* {xref-TestProduct-policies--}[`++policies()++`] +* {xref-TestProduct-claims--}[`++claims()++`] + +[.contract-subindex-inherited] +.Product +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++getToken()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++getPolicyFlow()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++getRiskpoolId()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_afterApprove()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_afterPropose()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_afterDecline()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_newApplication(applicationOwner, premiumAmount, sumInsuredAmount, metaData, applicationData)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_collectPremium(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_collectPremium(processId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_adjustPremiumSumInsured(processId, expectedPremiumAmount, sumInsuredAmount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_revoke(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_underwrite(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_decline(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_expire(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_close(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_newClaim(processId, claimAmount, data)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_confirmClaim(processId, claimId, payoutAmount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_declineClaim(processId, claimId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_closeClaim(processId, claimId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_newPayout(processId, claimId, amount, data)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_processPayout(processId, payoutId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_request(processId, input, callbackMethodName, responsibleOracleId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_cancelRequest(requestId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_getMetadata(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_getApplication(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_getPolicy(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_getClaim(processId, claimId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++_getPayout(processId, payoutId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++getApplicationDataStructure()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++getClaimDataStructure()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++getPayoutDataStructure()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Product.sol[`++riskPoolCapacityCallback(capacity)++`] + +[.contract-subindex-inherited] +.Component +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++setId(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getName()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getId()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getType()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getState()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getOwner()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++isProduct()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++isOracle()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++isRiskpool()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getRegistry()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++proposalCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++approvalCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++declineCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++suspendCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++resumeCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++pauseCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++unpauseCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++archiveCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterSuspend()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterResume()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterPause()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterUnpause()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterArchive()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_getAccess()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_getInstanceService()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_getComponentOwnerService()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Ownable +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-owner--[`++owner()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-_checkOwner--[`++_checkOwner()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-renounceOwnership--[`++renounceOwnership()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-transferOwnership-address-[`++transferOwnership(newOwner)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-_transferOwnership-address-[`++_transferOwnership(newOwner)++`] + +[.contract-subindex-inherited] +.IComponentEvents + +[.contract-subindex-inherited] +.IProduct + +[.contract-subindex-inherited] +.IComponent + +-- + +[.contract-index] +.Events +-- +* {xref-TestProduct-LogTestProductFundingReceived-address-uint256-}[`++LogTestProductFundingReceived(sender, amount)++`] +* {xref-TestProduct-LogTestOracleCallbackReceived-uint256-bytes32-bytes-}[`++LogTestOracleCallbackReceived(requestId, policyId, response)++`] + +[.contract-subindex-inherited] +.Product + +[.contract-subindex-inherited] +.Component + +[.contract-subindex-inherited] +.Ownable +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-OwnershipTransferred-address-address-[`++OwnershipTransferred(previousOwner, newOwner)++`] + +[.contract-subindex-inherited] +.IComponentEvents +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentProposed(componentName, componentType, componentAddress, id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentApproved(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentDeclined(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentSuspended(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentResumed(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentPaused(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentUnpaused(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentArchived(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentStateChanged(id, stateOld, stateNew)++`] + +[.contract-subindex-inherited] +.IProduct +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IProduct.sol[`++LogProductCreated(productAddress)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IProduct.sol[`++LogProductProposed(componentId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IProduct.sol[`++LogProductApproved(componentId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IProduct.sol[`++LogProductDeclined(componentId)++`] + +[.contract-subindex-inherited] +.IComponent +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IComponent.sol[`++LogComponentCreated(componentName, componentType, componentAddress, registryAddress)++`] + +-- + +[.contract-item] +[[TestProduct-constructor-bytes32-address-address-uint256-uint256-address-]] +==== `[.contract-item-name]#++constructor++#++(bytes32 productName, address tokenAddress, address capitalOwner, uint256 oracleId, uint256 riskpoolId, address registryAddress)++` [.item-kind]#public# + +[.contract-item] +[[TestProduct-applyForPolicy-uint256-uint256-bytes-bytes-]] +==== `[.contract-item-name]#++applyForPolicy++#++(uint256 premium, uint256 sumInsured, bytes metaData, bytes applicationData) → bytes32 processId++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-applyForPolicy-address-payable-uint256-uint256-bytes-bytes-]] +==== `[.contract-item-name]#++applyForPolicy++#++(address payable policyHolder, uint256 premium, uint256 sumInsured, bytes metaData, bytes applicationData) → bytes32 processId++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-newAppliation-uint256-uint256-bytes-bytes-]] +==== `[.contract-item-name]#++newAppliation++#++(uint256 premium, uint256 sumInsured, bytes metaData, bytes applicationData) → bytes32 processId++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-revoke-bytes32-]] +==== `[.contract-item-name]#++revoke++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-decline-bytes32-]] +==== `[.contract-item-name]#++decline++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-underwrite-bytes32-]] +==== `[.contract-item-name]#++underwrite++#++(bytes32 processId)++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-collectPremium-bytes32-]] +==== `[.contract-item-name]#++collectPremium++#++(bytes32 policyId) → bool success, uint256 fee, uint256 netPremium++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-collectPremium-bytes32-uint256-]] +==== `[.contract-item-name]#++collectPremium++#++(bytes32 policyId, uint256 amount) → bool success, uint256 fee, uint256 netPremium++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-adjustPremiumSumInsured-bytes32-uint256-uint256-]] +==== `[.contract-item-name]#++adjustPremiumSumInsured++#++(bytes32 processId, uint256 expectedPremiumAmount, uint256 sumInsuredAmount)++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-expire-bytes32-]] +==== `[.contract-item-name]#++expire++#++(bytes32 policyId)++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-close-bytes32-]] +==== `[.contract-item-name]#++close++#++(bytes32 policyId)++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-submitClaim-bytes32-uint256-]] +==== `[.contract-item-name]#++submitClaim++#++(bytes32 policyId, uint256 claimAmount) → uint256 claimId++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-submitClaimNoOracle-bytes32-uint256-]] +==== `[.contract-item-name]#++submitClaimNoOracle++#++(bytes32 policyId, uint256 claimAmount) → uint256 claimId++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-submitClaimWithDeferredResponse-bytes32-uint256-]] +==== `[.contract-item-name]#++submitClaimWithDeferredResponse++#++(bytes32 policyId, uint256 claimAmount) → uint256 claimId, uint256 requestId++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-confirmClaim-bytes32-uint256-uint256-]] +==== `[.contract-item-name]#++confirmClaim++#++(bytes32 policyId, uint256 claimId, uint256 confirmedAmount)++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-declineClaim-bytes32-uint256-]] +==== `[.contract-item-name]#++declineClaim++#++(bytes32 policyId, uint256 claimId)++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-closeClaim-bytes32-uint256-]] +==== `[.contract-item-name]#++closeClaim++#++(bytes32 policyId, uint256 claimId)++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-createPayout-bytes32-uint256-uint256-]] +==== `[.contract-item-name]#++createPayout++#++(bytes32 policyId, uint256 claimId, uint256 payoutAmount) → uint256 payoutId++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-newPayout-bytes32-uint256-uint256-]] +==== `[.contract-item-name]#++newPayout++#++(bytes32 policyId, uint256 claimId, uint256 payoutAmount) → uint256 payoutId++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-processPayout-bytes32-uint256-]] +==== `[.contract-item-name]#++processPayout++#++(bytes32 policyId, uint256 payoutId)++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-oracleCallback-uint256-bytes32-bytes-]] +==== `[.contract-item-name]#++oracleCallback++#++(uint256 requestId, bytes32 policyId, bytes responseData)++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-getClaimId-bytes32-]] +==== `[.contract-item-name]#++getClaimId++#++(bytes32 policyId) → uint256++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-getPayoutId-bytes32-]] +==== `[.contract-item-name]#++getPayoutId++#++(bytes32 policyId) → uint256++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-applications--]] +==== `[.contract-item-name]#++applications++#++() → uint256++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-policies--]] +==== `[.contract-item-name]#++policies++#++() → uint256++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-claims--]] +==== `[.contract-item-name]#++claims++#++() → uint256++` [.item-kind]#external# + +[.contract-item] +[[TestProduct-LogTestProductFundingReceived-address-uint256-]] +==== `[.contract-item-name]#++LogTestProductFundingReceived++#++(address sender, uint256 amount)++` [.item-kind]#event# + +[.contract-item] +[[TestProduct-LogTestOracleCallbackReceived-uint256-bytes32-bytes-]] +==== `[.contract-item-name]#++LogTestOracleCallbackReceived++#++(uint256 requestId, bytes32 policyId, bytes response)++` [.item-kind]#event# + +:POLICY: pass:normal[xref:#TestRegistryCompromisedController-POLICY-bytes32[`++POLICY++`]] +:QUERY: pass:normal[xref:#TestRegistryCompromisedController-QUERY-bytes32[`++QUERY++`]] +:contracts: pass:normal[xref:#TestRegistryCompromisedController-contracts-mapping-bytes32----address-[`++contracts++`]] +:getContract: pass:normal[xref:#TestRegistryCompromisedController-getContract-bytes32-[`++getContract++`]] +:upgradeToV2: pass:normal[xref:#TestRegistryCompromisedController-upgradeToV2-address-address-[`++upgradeToV2++`]] + +[.contract] +[[TestRegistryCompromisedController]] +=== `++TestRegistryCompromisedController++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/test/TestRegistryCompromisedController.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/test/TestRegistryCompromisedController.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-TestRegistryCompromisedController-getContract-bytes32-}[`++getContract(contractName)++`] +* {xref-TestRegistryCompromisedController-upgradeToV2-address-address-}[`++upgradeToV2(compromisedPolicyModuleAddress, originalQueryModuleAddress)++`] + +-- + +[.contract-item] +[[TestRegistryCompromisedController-getContract-bytes32-]] +==== `[.contract-item-name]#++getContract++#++(bytes32 contractName) → address moduleAddress++` [.item-kind]#external# + +[.contract-item] +[[TestRegistryCompromisedController-upgradeToV2-address-address-]] +==== `[.contract-item-name]#++upgradeToV2++#++(address compromisedPolicyModuleAddress, address originalQueryModuleAddress)++` [.item-kind]#public# + +:message: pass:normal[xref:#TestRegistryControllerUpdated-message-string[`++message++`]] +:upgradeV2: pass:normal[xref:#TestRegistryControllerUpdated-upgradeV2-bool[`++upgradeV2++`]] +:setMessage: pass:normal[xref:#TestRegistryControllerUpdated-setMessage-string-[`++setMessage++`]] +:getMessage: pass:normal[xref:#TestRegistryControllerUpdated-getMessage--[`++getMessage++`]] +:upgradeToV2: pass:normal[xref:#TestRegistryControllerUpdated-upgradeToV2-string-[`++upgradeToV2++`]] + +[.contract] +[[TestRegistryControllerUpdated]] +=== `++TestRegistryControllerUpdated++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/test/TestRegistryControllerUpdated.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/test/TestRegistryControllerUpdated.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-TestRegistryControllerUpdated-setMessage-string-}[`++setMessage(_message)++`] +* {xref-TestRegistryControllerUpdated-getMessage--}[`++getMessage()++`] +* {xref-TestRegistryControllerUpdated-upgradeToV2-string-}[`++upgradeToV2(_message)++`] + +[.contract-subindex-inherited] +.RegistryController +* {xref-RegistryController-initializeRegistry-bytes32-}[`++initializeRegistry(_initialRelease)++`] +* {xref-RegistryController-ensureSender-address-bytes32-}[`++ensureSender(sender, _contractName)++`] +* {xref-RegistryController-getRelease--}[`++getRelease()++`] +* {xref-RegistryController-getContract-bytes32-}[`++getContract(_contractName)++`] +* {xref-RegistryController-register-bytes32-address-}[`++register(_contractName, _contractAddress)++`] +* {xref-RegistryController-deregister-bytes32-}[`++deregister(_contractName)++`] +* {xref-RegistryController-getContractInRelease-bytes32-bytes32-}[`++getContractInRelease(_release, _contractName)++`] +* {xref-RegistryController-registerInRelease-bytes32-bytes32-address-}[`++registerInRelease(_release, _contractName, _contractAddress)++`] +* {xref-RegistryController-deregisterInRelease-bytes32-bytes32-}[`++deregisterInRelease(_release, _contractName)++`] +* {xref-RegistryController-prepareRelease-bytes32-}[`++prepareRelease(_newRelease)++`] +* {xref-RegistryController-contracts--}[`++contracts()++`] +* {xref-RegistryController-contractName-uint256-}[`++contractName(idx)++`] +* {xref-RegistryController-_getContractInRelease-bytes32-bytes32-}[`++_getContractInRelease(_release, _contractName)++`] +* {xref-RegistryController-_registerInRelease-bytes32-bool-bytes32-address-}[`++_registerInRelease(_release, isNewRelease, _contractName, _contractAddress)++`] +* {xref-RegistryController-_deregisterInRelease-bytes32-bytes32-}[`++_deregisterInRelease(_release, _contractName)++`] + +[.contract-subindex-inherited] +.CoreController +* {xref-CoreController-initialize-address-}[`++initialize(registry)++`] +* {xref-CoreController-_getName--}[`++_getName()++`] +* {xref-CoreController-_afterInitialize--}[`++_afterInitialize()++`] +* {xref-CoreController-_getContractAddress-bytes32-}[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-_disableInitializers--[`++_disableInitializers()++`] + +[.contract-subindex-inherited] +.IRegistry + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.RegistryController + +[.contract-subindex-inherited] +.CoreController + +[.contract-subindex-inherited] +.Initializable +* https://docs.openzeppelin.com/contracts/3.x/api/proxy#Initializable-Initialized-uint8-[`++Initialized(version)++`] + +[.contract-subindex-inherited] +.IRegistry +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IRegistry.sol[`++LogContractRegistered(release, contractName, contractAddress, isNew)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IRegistry.sol[`++LogContractDeregistered(release, contractName)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IRegistry.sol[`++LogReleasePrepared(release)++`] + +-- + +[.contract-item] +[[TestRegistryControllerUpdated-setMessage-string-]] +==== `[.contract-item-name]#++setMessage++#++(string _message)++` [.item-kind]#public# + +[.contract-item] +[[TestRegistryControllerUpdated-getMessage--]] +==== `[.contract-item-name]#++getMessage++#++() → string++` [.item-kind]#public# + +[.contract-item] +[[TestRegistryControllerUpdated-upgradeToV2-string-]] +==== `[.contract-item-name]#++upgradeToV2++#++(string _message)++` [.item-kind]#public# + +:SUM_OF_SUM_INSURED_CAP: pass:normal[xref:#TestRiskpool-SUM_OF_SUM_INSURED_CAP-uint256[`++SUM_OF_SUM_INSURED_CAP++`]] +:constructor: pass:normal[xref:#TestRiskpool-constructor-bytes32-uint256-address-address-address-[`++constructor++`]] +:bundleMatchesApplication: pass:normal[xref:#TestRiskpool-bundleMatchesApplication-struct-IBundle-Bundle-struct-IPolicy-Application-[`++bundleMatchesApplication++`]] + +[.contract] +[[TestRiskpool]] +=== `++TestRiskpool++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/test/TestRiskpool.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/test/TestRiskpool.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-TestRiskpool-constructor-bytes32-uint256-address-address-address-}[`++constructor(name, collateralization, erc20Token, wallet, registry)++`] +* {xref-TestRiskpool-bundleMatchesApplication-struct-IBundle-Bundle-struct-IPolicy-Application-}[`++bundleMatchesApplication(bundle, application)++`] + +[.contract-subindex-inherited] +.BasicRiskpool +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/BasicRiskpool.sol[`++_lockCollateral(processId, collateralAmount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/BasicRiskpool.sol[`++_processPayout(processId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/BasicRiskpool.sol[`++_processPremium(processId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/BasicRiskpool.sol[`++_releaseCollateral(processId)++`] + +[.contract-subindex-inherited] +.Riskpool +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++_afterPropose()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++createBundle(filter, initialAmount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++fundBundle(bundleId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++defundBundle(bundleId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++lockBundle(bundleId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++unlockBundle(bundleId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++closeBundle(bundleId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++burnBundle(bundleId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++collateralizePolicy(processId, collateralAmount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++processPolicyPayout(processId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++processPolicyPremium(processId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++releasePolicy(processId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++setMaximumNumberOfActiveBundles(maximumNumberOfActiveBundles)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getMaximumNumberOfActiveBundles()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getWallet()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getErc20Token()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getSumOfSumInsuredCap()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getFullCollateralizationLevel()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getCollateralizationLevel()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++bundles()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getBundle(idx)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++activeBundles()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getActiveBundleId(idx)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getFilterDataStructure()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getCapital()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getTotalValueLocked()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getCapacity()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++getBalance()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Riskpool.sol[`++_afterArchive()++`] + +[.contract-subindex-inherited] +.Component +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++setId(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getName()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getId()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getType()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getState()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getOwner()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++isProduct()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++isOracle()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++isRiskpool()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++getRegistry()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++proposalCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++approvalCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++declineCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++suspendCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++resumeCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++pauseCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++unpauseCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++archiveCallback()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterApprove()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterDecline()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterSuspend()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterResume()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterPause()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_afterUnpause()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_getAccess()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_getInstanceService()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_getComponentOwnerService()++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/Component.sol[`++_getContractAddress(contractName)++`] + +[.contract-subindex-inherited] +.Ownable +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-owner--[`++owner()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-_checkOwner--[`++_checkOwner()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-renounceOwnership--[`++renounceOwnership()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-transferOwnership-address-[`++transferOwnership(newOwner)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-_transferOwnership-address-[`++_transferOwnership(newOwner)++`] + +[.contract-subindex-inherited] +.IComponentEvents + +[.contract-subindex-inherited] +.IRiskpool + +[.contract-subindex-inherited] +.IComponent + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.BasicRiskpool +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/BasicRiskpool.sol[`++LogBasicRiskpoolBundlesAndPolicies(activeBundles, bundleId)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/BasicRiskpool.sol[`++LogBasicRiskpoolCandidateBundleAmountCheck(index, bundleId, maxAmount, collateralAmount)++`] + +[.contract-subindex-inherited] +.Riskpool + +[.contract-subindex-inherited] +.Component + +[.contract-subindex-inherited] +.Ownable +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-OwnershipTransferred-address-address-[`++OwnershipTransferred(previousOwner, newOwner)++`] + +[.contract-subindex-inherited] +.IComponentEvents +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentProposed(componentName, componentType, componentAddress, id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentApproved(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentDeclined(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentSuspended(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentResumed(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentPaused(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentUnpaused(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentArchived(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/modules/IComponentEvents.sol[`++LogComponentStateChanged(id, stateOld, stateNew)++`] + +[.contract-subindex-inherited] +.IRiskpool +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IRiskpool.sol[`++LogRiskpoolCreated(riskpoolAddress)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IRiskpool.sol[`++LogRiskpoolProposed(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IRiskpool.sol[`++LogRiskpoolApproved(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IRiskpool.sol[`++LogRiskpoolDeclined(id)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IRiskpool.sol[`++LogRiskpoolBundleCreated(bundleId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IRiskpool.sol[`++LogRiskpoolBundleMatchesPolicy(bundleId, isMatching)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IRiskpool.sol[`++LogRiskpoolCollateralLocked(processId, collateralAmount, isSecured)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IRiskpool.sol[`++LogRiskpoolPremiumProcessed(processId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IRiskpool.sol[`++LogRiskpoolPayoutProcessed(processId, amount)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IRiskpool.sol[`++LogRiskpoolCollateralReleased(processId, collateralAmount)++`] + +[.contract-subindex-inherited] +.IComponent +* https://github.com/etherisc/gif-interface/blob/develop/contracts/components/IComponent.sol[`++LogComponentCreated(componentName, componentType, componentAddress, registryAddress)++`] + +-- + +[.contract-item] +[[TestRiskpool-constructor-bytes32-uint256-address-address-address-]] +==== `[.contract-item-name]#++constructor++#++(bytes32 name, uint256 collateralization, address erc20Token, address wallet, address registry)++` [.item-kind]#public# + +[.contract-item] +[[TestRiskpool-bundleMatchesApplication-struct-IBundle-Bundle-struct-IPolicy-Application-]] +==== `[.contract-item-name]#++bundleMatchesApplication++#++(struct IBundle.Bundle bundle, struct IPolicy.Application application) → bool isMatching++` [.item-kind]#public# + +:LogTransferHelperInputValidation1Failed: pass:normal[xref:#TestTransferFrom-LogTransferHelperInputValidation1Failed-bool-address-address-[`++LogTransferHelperInputValidation1Failed++`]] +:LogTransferHelperInputValidation2Failed: pass:normal[xref:#TestTransferFrom-LogTransferHelperInputValidation2Failed-uint256-uint256-[`++LogTransferHelperInputValidation2Failed++`]] +:LogTransferHelperCallFailed: pass:normal[xref:#TestTransferFrom-LogTransferHelperCallFailed-bool-uint256-bytes-[`++LogTransferHelperCallFailed++`]] +:unifiedTransferFrom: pass:normal[xref:#TestTransferFrom-unifiedTransferFrom-contract-IERC20-address-address-uint256-[`++unifiedTransferFrom++`]] + +[.contract] +[[TestTransferFrom]] +=== `++TestTransferFrom++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/test/TestTransferFrom.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/test/TestTransferFrom.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-TestTransferFrom-unifiedTransferFrom-contract-IERC20-address-address-uint256-}[`++unifiedTransferFrom(token, from, to, amount)++`] + +-- + +[.contract-index] +.Events +-- +* {xref-TestTransferFrom-LogTransferHelperInputValidation1Failed-bool-address-address-}[`++LogTransferHelperInputValidation1Failed(tokenIsContract, from, to)++`] +* {xref-TestTransferFrom-LogTransferHelperInputValidation2Failed-uint256-uint256-}[`++LogTransferHelperInputValidation2Failed(balance, allowance)++`] +* {xref-TestTransferFrom-LogTransferHelperCallFailed-bool-uint256-bytes-}[`++LogTransferHelperCallFailed(callSuccess, returnDataLength, returnData)++`] + +-- + +[.contract-item] +[[TestTransferFrom-unifiedTransferFrom-contract-IERC20-address-address-uint256-]] +==== `[.contract-item-name]#++unifiedTransferFrom++#++(contract IERC20 token, address from, address to, uint256 amount) → bool++` [.item-kind]#external# + +[.contract-item] +[[TestTransferFrom-LogTransferHelperInputValidation1Failed-bool-address-address-]] +==== `[.contract-item-name]#++LogTransferHelperInputValidation1Failed++#++(bool tokenIsContract, address from, address to)++` [.item-kind]#event# + +[.contract-item] +[[TestTransferFrom-LogTransferHelperInputValidation2Failed-uint256-uint256-]] +==== `[.contract-item-name]#++LogTransferHelperInputValidation2Failed++#++(uint256 balance, uint256 allowance)++` [.item-kind]#event# + +[.contract-item] +[[TestTransferFrom-LogTransferHelperCallFailed-bool-uint256-bytes-]] +==== `[.contract-item-name]#++LogTransferHelperCallFailed++#++(bool callSuccess, uint256 returnDataLength, bytes returnData)++` [.item-kind]#event# + diff --git a/docs/modules/api/pages/tokens.adoc b/docs/modules/api/pages/tokens.adoc new file mode 100644 index 00000000..60b0f226 --- /dev/null +++ b/docs/modules/api/pages/tokens.adoc @@ -0,0 +1,257 @@ +:github-icon: pass:[] +:xref-BundleToken-onlyBundleModule--: xref:tokens.adoc#BundleToken-onlyBundleModule-- +:xref-BundleToken-constructor--: xref:tokens.adoc#BundleToken-constructor-- +:xref-BundleToken-setBundleModule-address-: xref:tokens.adoc#BundleToken-setBundleModule-address- +:xref-BundleToken-mint-uint256-address-: xref:tokens.adoc#BundleToken-mint-uint256-address- +:xref-BundleToken-burn-uint256-: xref:tokens.adoc#BundleToken-burn-uint256- +:xref-BundleToken-burned-uint256-: xref:tokens.adoc#BundleToken-burned-uint256- +:xref-BundleToken-getBundleId-uint256-: xref:tokens.adoc#BundleToken-getBundleId-uint256- +:xref-BundleToken-getBundleModuleAddress--: xref:tokens.adoc#BundleToken-getBundleModuleAddress-- +:xref-BundleToken-exists-uint256-: xref:tokens.adoc#BundleToken-exists-uint256- +:xref-BundleToken-totalSupply--: xref:tokens.adoc#BundleToken-totalSupply-- +:xref-RiskpoolToken-constructor--: xref:tokens.adoc#RiskpoolToken-constructor-- += Tokens + +[.readme-notice] +NOTE: This document is better viewed at https://docs.etherisc.com/contracts/api/tokens + +== Contracts + +:NAME: pass:normal[xref:#BundleToken-NAME-string[`++NAME++`]] +:SYMBOL: pass:normal[xref:#BundleToken-SYMBOL-string[`++SYMBOL++`]] +:bundleIdForTokenId: pass:normal[xref:#BundleToken-bundleIdForTokenId-mapping-uint256----uint256-[`++bundleIdForTokenId++`]] +:onlyBundleModule: pass:normal[xref:#BundleToken-onlyBundleModule--[`++onlyBundleModule++`]] +:constructor: pass:normal[xref:#BundleToken-constructor--[`++constructor++`]] +:setBundleModule: pass:normal[xref:#BundleToken-setBundleModule-address-[`++setBundleModule++`]] +:mint: pass:normal[xref:#BundleToken-mint-uint256-address-[`++mint++`]] +:burn: pass:normal[xref:#BundleToken-burn-uint256-[`++burn++`]] +:burned: pass:normal[xref:#BundleToken-burned-uint256-[`++burned++`]] +:getBundleId: pass:normal[xref:#BundleToken-getBundleId-uint256-[`++getBundleId++`]] +:getBundleModuleAddress: pass:normal[xref:#BundleToken-getBundleModuleAddress--[`++getBundleModuleAddress++`]] +:exists: pass:normal[xref:#BundleToken-exists-uint256-[`++exists++`]] +:totalSupply: pass:normal[xref:#BundleToken-totalSupply--[`++totalSupply++`]] + +[.contract] +[[BundleToken]] +=== `++BundleToken++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/tokens/BundleToken.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/tokens/BundleToken.sol"; +``` + +[.contract-index] +.Modifiers +-- +* {xref-BundleToken-onlyBundleModule--}[`++onlyBundleModule()++`] +-- + +[.contract-index] +.Functions +-- +* {xref-BundleToken-constructor--}[`++constructor()++`] +* {xref-BundleToken-setBundleModule-address-}[`++setBundleModule(bundleModule)++`] +* {xref-BundleToken-mint-uint256-address-}[`++mint(bundleId, to)++`] +* {xref-BundleToken-burn-uint256-}[`++burn(tokenId)++`] +* {xref-BundleToken-burned-uint256-}[`++burned(tokenId)++`] +* {xref-BundleToken-getBundleId-uint256-}[`++getBundleId(tokenId)++`] +* {xref-BundleToken-getBundleModuleAddress--}[`++getBundleModuleAddress()++`] +* {xref-BundleToken-exists-uint256-}[`++exists(tokenId)++`] +* {xref-BundleToken-totalSupply--}[`++totalSupply()++`] + +[.contract-subindex-inherited] +.Ownable +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-owner--[`++owner()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-_checkOwner--[`++_checkOwner()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-renounceOwnership--[`++renounceOwnership()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-transferOwnership-address-[`++transferOwnership(newOwner)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-_transferOwnership-address-[`++_transferOwnership(newOwner)++`] + +[.contract-subindex-inherited] +.ERC721 +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-supportsInterface-bytes4-[`++supportsInterface(interfaceId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-balanceOf-address-[`++balanceOf(owner)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-ownerOf-uint256-[`++ownerOf(tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-name--[`++name()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-symbol--[`++symbol()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-tokenURI-uint256-[`++tokenURI(tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_baseURI--[`++_baseURI()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-approve-address-uint256-[`++approve(to, tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-getApproved-uint256-[`++getApproved(tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-setApprovalForAll-address-bool-[`++setApprovalForAll(operator, approved)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-isApprovedForAll-address-address-[`++isApprovedForAll(owner, operator)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-transferFrom-address-address-uint256-[`++transferFrom(from, to, tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-safeTransferFrom-address-address-uint256-[`++safeTransferFrom(from, to, tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-safeTransferFrom-address-address-uint256-bytes-[`++safeTransferFrom(from, to, tokenId, data)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_safeTransfer-address-address-uint256-bytes-[`++_safeTransfer(from, to, tokenId, data)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_exists-uint256-[`++_exists(tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_isApprovedOrOwner-address-uint256-[`++_isApprovedOrOwner(spender, tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_safeMint-address-uint256-[`++_safeMint(to, tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_safeMint-address-uint256-bytes-[`++_safeMint(to, tokenId, data)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_mint-address-uint256-[`++_mint(to, tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_burn-uint256-[`++_burn(tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_transfer-address-address-uint256-[`++_transfer(from, to, tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_approve-address-uint256-[`++_approve(to, tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_setApprovalForAll-address-address-bool-[`++_setApprovalForAll(owner, operator, approved)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_requireMinted-uint256-[`++_requireMinted(tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_beforeTokenTransfer-address-address-uint256-[`++_beforeTokenTransfer(from, to, tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#ERC721-_afterTokenTransfer-address-address-uint256-[`++_afterTokenTransfer(from, to, tokenId)++`] + +[.contract-subindex-inherited] +.IERC721Metadata + +[.contract-subindex-inherited] +.IBundleToken + +[.contract-subindex-inherited] +.IERC721 + +[.contract-subindex-inherited] +.ERC165 + +[.contract-subindex-inherited] +.IERC165 + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.Ownable +* https://docs.openzeppelin.com/contracts/3.x/api/access#Ownable-OwnershipTransferred-address-address-[`++OwnershipTransferred(previousOwner, newOwner)++`] + +[.contract-subindex-inherited] +.ERC721 + +[.contract-subindex-inherited] +.IERC721Metadata + +[.contract-subindex-inherited] +.IBundleToken +* https://github.com/etherisc/gif-interface/blob/develop/contracts/tokens/IBundleToken.sol[`++LogBundleTokenMinted(bundleId, tokenId, tokenOwner)++`] +* https://github.com/etherisc/gif-interface/blob/develop/contracts/tokens/IBundleToken.sol[`++LogBundleTokenBurned(bundleId, tokenId)++`] + +[.contract-subindex-inherited] +.IERC721 +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#IERC721-Transfer-address-address-uint256-[`++Transfer(from, to, tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#IERC721-Approval-address-address-uint256-[`++Approval(owner, approved, tokenId)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC721#IERC721-ApprovalForAll-address-address-bool-[`++ApprovalForAll(owner, operator, approved)++`] + +[.contract-subindex-inherited] +.ERC165 + +[.contract-subindex-inherited] +.IERC165 + +-- + +[.contract-item] +[[BundleToken-onlyBundleModule--]] +==== `[.contract-item-name]#++onlyBundleModule++#++()++` [.item-kind]#modifier# + +[.contract-item] +[[BundleToken-constructor--]] +==== `[.contract-item-name]#++constructor++#++()++` [.item-kind]#public# + +[.contract-item] +[[BundleToken-setBundleModule-address-]] +==== `[.contract-item-name]#++setBundleModule++#++(address bundleModule)++` [.item-kind]#external# + +[.contract-item] +[[BundleToken-mint-uint256-address-]] +==== `[.contract-item-name]#++mint++#++(uint256 bundleId, address to) → uint256 tokenId++` [.item-kind]#external# + +[.contract-item] +[[BundleToken-burn-uint256-]] +==== `[.contract-item-name]#++burn++#++(uint256 tokenId)++` [.item-kind]#external# + +[.contract-item] +[[BundleToken-burned-uint256-]] +==== `[.contract-item-name]#++burned++#++(uint256 tokenId) → bool isBurned++` [.item-kind]#external# + +[.contract-item] +[[BundleToken-getBundleId-uint256-]] +==== `[.contract-item-name]#++getBundleId++#++(uint256 tokenId) → uint256++` [.item-kind]#external# + +[.contract-item] +[[BundleToken-getBundleModuleAddress--]] +==== `[.contract-item-name]#++getBundleModuleAddress++#++() → address++` [.item-kind]#external# + +[.contract-item] +[[BundleToken-exists-uint256-]] +==== `[.contract-item-name]#++exists++#++(uint256 tokenId) → bool++` [.item-kind]#external# + +[.contract-item] +[[BundleToken-totalSupply--]] +==== `[.contract-item-name]#++totalSupply++#++() → uint256 tokenCount++` [.item-kind]#external# + +:NAME: pass:normal[xref:#RiskpoolToken-NAME-string[`++NAME++`]] +:SYMBOL: pass:normal[xref:#RiskpoolToken-SYMBOL-string[`++SYMBOL++`]] +:constructor: pass:normal[xref:#RiskpoolToken-constructor--[`++constructor++`]] + +[.contract] +[[RiskpoolToken]] +=== `++RiskpoolToken++` link:https://github.com/etherisc/gif-contracts/blob/release-v2.0.0-rc.1-0/contracts/tokens/RiskpoolToken.sol[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/contracts/tokens/RiskpoolToken.sol"; +``` + +[.contract-index] +.Functions +-- +* {xref-RiskpoolToken-constructor--}[`++constructor()++`] + +[.contract-subindex-inherited] +.ERC20 +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-name--[`++name()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-symbol--[`++symbol()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-decimals--[`++decimals()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-totalSupply--[`++totalSupply()++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-balanceOf-address-[`++balanceOf(account)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-transfer-address-uint256-[`++transfer(to, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-allowance-address-address-[`++allowance(owner, spender)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-approve-address-uint256-[`++approve(spender, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-transferFrom-address-address-uint256-[`++transferFrom(from, to, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-increaseAllowance-address-uint256-[`++increaseAllowance(spender, addedValue)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-decreaseAllowance-address-uint256-[`++decreaseAllowance(spender, subtractedValue)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_transfer-address-address-uint256-[`++_transfer(from, to, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_mint-address-uint256-[`++_mint(account, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_burn-address-uint256-[`++_burn(account, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_approve-address-address-uint256-[`++_approve(owner, spender, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_spendAllowance-address-address-uint256-[`++_spendAllowance(owner, spender, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_beforeTokenTransfer-address-address-uint256-[`++_beforeTokenTransfer(from, to, amount)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#ERC20-_afterTokenTransfer-address-address-uint256-[`++_afterTokenTransfer(from, to, amount)++`] + +[.contract-subindex-inherited] +.IERC20Metadata + +[.contract-subindex-inherited] +.IERC20 + +-- + +[.contract-index] +.Events +-- + +[.contract-subindex-inherited] +.ERC20 + +[.contract-subindex-inherited] +.IERC20Metadata + +[.contract-subindex-inherited] +.IERC20 +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#IERC20-Transfer-address-address-uint256-[`++Transfer(from, to, value)++`] +* https://docs.openzeppelin.com/contracts/3.x/api/token/ERC20#IERC20-Approval-address-address-uint256-[`++Approval(owner, spender, value)++`] + +-- + +[.contract-item] +[[RiskpoolToken-constructor--]] +==== `[.contract-item-name]#++constructor++#++()++` [.item-kind]#public# + diff --git a/docs/templates/contract.hbs b/docs/templates/contract.hbs new file mode 100644 index 00000000..dd34a520 --- /dev/null +++ b/docs/templates/contract.hbs @@ -0,0 +1,93 @@ +{{#each items}} +:{{name}}: pass:normal[xref:#{{anchor}}[`++{{name}}++`]] +{{/each}} + +[.contract] +[[{{anchor}}]] +=== `++{{name}}++` link:https://github.com/etherisc/gif-contracts/blob/release-v{{gif-version}}/{{__item_context.file.absolutePath}}[{github-icon},role=heading-link] + +[.hljs-theme-light.nopadding] +```solidity +import "@etherisc/gif-contracts/{{__item_context.file.absolutePath}}"; +``` + +{{{natspec.dev}}} + +{{#if modifiers}} +[.contract-index] +.Modifiers +-- +{{#each modifiers}} +* {xref-{{anchor~}} }[`++{{name}}({{names params}})++`] +{{/each}} +-- +{{/if}} + +{{#if has-functions}} +[.contract-index] +.Functions +-- +{{#each inherited-functions}} +{{#unless @first}} +[.contract-subindex-inherited] +.{{contract.name}} +{{/unless}} +{{#each functions}} +{{#if isInternal}} +* {xref-{{anchor~}} }[`++{{name}}({{names params}})++`] +{{else}} +* {{externalLink~}} [`++{{name}}({{names params}})++`] +{{/if}} +{{/each}} + +{{/each}} +-- +{{/if}} + +{{#if has-events}} +[.contract-index] +.Events +-- +{{#each inheritance}} +{{#unless @first}} +[.contract-subindex-inherited] +.{{name}} +{{/unless}} +{{#each events}} +{{#if isInternal}} +* {xref-{{anchor~}} }[`++{{name}}({{names params}})++`] +{{else}} +* {{externalLink~}} [`++{{name}}({{names params}})++`] +{{/if}} +{{/each}} + +{{/each}} +-- +{{/if}} + +{{#each modifiers}} +[.contract-item] +[[{{anchor}}]] +==== `[.contract-item-name]#++{{name}}++#++({{typed-params params}})++` [.item-kind]#modifier# + +{{{natspec.dev}}} + +{{/each}} + +{{#each functions}} +[.contract-item] +[[{{anchor}}]] +==== `[.contract-item-name]#++{{name}}++#++({{typed-params params}}){{#if returns}} → {{typed-params returns}}{{/if}}++` [.item-kind]#{{visibility}}# + +{{{natspec.dev}}} + +{{/each}} + +{{#each events}} +[.contract-item] +[[{{anchor}}]] +==== `[.contract-item-name]#++{{name}}++#++({{typed-params params}})++` [.item-kind]#event# + +{{{natspec.dev}}} + +{{/each}} \ No newline at end of file diff --git a/docs/templates/helpers.js b/docs/templates/helpers.js new file mode 100644 index 00000000..dda19673 --- /dev/null +++ b/docs/templates/helpers.js @@ -0,0 +1,47 @@ +const { version } = require('../../package.json'); + +module.exports['gif-version'] = () => version; + +module.exports['readme-path'] = (opts) => { + return 'contracts/' + opts.data.root.id.replace(/\.adoc$/, '') + '/README.adoc'; +}; + +module.exports.names = (params) => params.map(p => p.name).join(', '); + +module.exports['typed-params'] = (params) => { + return params?.map(p => `${p.type}${p.indexed ? ' indexed' : ''}${p.name ? ' ' + p.name : ''}`).join(', '); +}; + +const slug = module.exports.slug = (str) => { + if (str === undefined) { + throw new Error('Missing argument'); + } + return str.replace(/\W/g, '-'); +}; + +const linksCache = new WeakMap(); + +function getAllLinks(items) { + if (linksCache.has(items)) { + return linksCache.get(items); + } + const res = {}; + linksCache.set(items, res); + for (const item of items) { + res[`xref-${item.anchor}`] = `xref:${item.__item_context.page}#${item.anchor}`; + res[slug(item.fullName)] = `pass:normal[xref:${item.__item_context.page}#${item.anchor}[\`${item.fullName}\`]]`; + } + return res; +} + +module.exports['with-prelude'] = (opts) => { + const links = getAllLinks(opts.data.site.items); + const contents = opts.fn(); + const match = contents.match(/\{[-._a-z0-9]+\}/ig) + if (!match) return contents; + const neededLinks = match + .map(m => m.replace(/^\{(.+)\}$/, '$1')) + .filter(k => k in links); + const prelude = neededLinks.map(k => `:${k}: ${links[k]}`).join('\n'); + return prelude + '\n' + contents; +}; \ No newline at end of file diff --git a/docs/templates/page.hbs b/docs/templates/page.hbs new file mode 100644 index 00000000..68e59957 --- /dev/null +++ b/docs/templates/page.hbs @@ -0,0 +1,4 @@ +:github-icon: pass:[] +{{#with-prelude}} +{{readme (readme-path)}} +{{/with-prelude}} \ No newline at end of file diff --git a/docs/templates/properties.js b/docs/templates/properties.js new file mode 100644 index 00000000..c8116afc --- /dev/null +++ b/docs/templates/properties.js @@ -0,0 +1,81 @@ +const { isNodeType } = require('solidity-ast/utils'); +const { slug } = require('./helpers'); + +module.exports.anchor = function anchor({ item, contract }) { + let res = ''; + if (contract) { + res += contract.name + '-'; + } + res += item.name; + if ('parameters' in item) { + const signature = item.parameters.parameters.map(v => v.typeName.typeDescriptions.typeString).join(','); + res += slug('(' + signature + ')'); + } + if (isNodeType('VariableDeclaration', item)) { + res += '-' + slug(item.typeName.typeDescriptions.typeString); + } + return res; +}; + +module.exports.externalLink = function ({ item, contract }) { + + const anchor = module.exports.anchor({ item, contract }); + // TODO: exchange this against links to the actual docs + const links = { + '@etherisc/gif-interface': 'https://github.com/etherisc/gif-interface/blob/develop', + '@openzeppelin': 'https://docs.openzeppelin.com/contracts/3.x/api' + }; + + const path = item.__item_context.file.absolutePath; + for (const [key, value] of Object.entries(links)) { + if (path.startsWith(key)) { + if (key === '@openzeppelin') { + const s1 = /contracts\/([^\/]+)\/.*$/; + const s2 = /contracts\/(.*)\/.*$/; + const mod1 = path.match(s1)[1]; + const mod2 = path.match(s2)[1]; + console.log(path, mod1, mod2) + return value + '/' + (mod1 === 'token' ? mod2 : mod1) + '#' + anchor; + } else { + return value + path.slice(key.length); + } + } + } + return ""; +}; + +module.exports.isInternal = function ({ item, contract }) { + return module.exports.externalLink({ item, contract }) === ""; +} + +module.exports.inheritance = function ({ item, build }) { + if (!isNodeType('ContractDefinition', item)) { + throw new Error('used inherited-items on non-contract'); + } + + return item.linearizedBaseContracts + .map(id => build.deref('ContractDefinition', id)) + .filter((c, i) => c.name !== 'Context' || i === 0); +}; + +module.exports['has-functions'] = function ({ item }) { + // console.log(item.inheritance) + return item.inheritance.some(c => c.functions.length > 0); +}; + +module.exports['has-events'] = function ({ item }) { + return item.inheritance.some(c => c.events.length > 0); +}; + +module.exports['inherited-functions'] = function ({ item }) { + const { inheritance } = item; + const baseFunctions = new Set( + inheritance.flatMap(c => c.functions.flatMap(f => f.baseFunctions ?? [])), + ); + return inheritance.map((contract, i) => ({ + contract, + functions: contract.functions.filter(f => + !baseFunctions.has(f.id) && (f.name !== 'constructor' || i === 0), + ), + })); +}; \ No newline at end of file diff --git a/hardhat.config.js b/hardhat.config.js new file mode 100644 index 00000000..13011b17 --- /dev/null +++ b/hardhat.config.js @@ -0,0 +1,19 @@ +// Minimum Hardhat config for solidity-docgen to work + +require('solidity-docgen'); + +/** + * @type import('hardhat/config').HardhatUserConfig + */ +module.exports = { + solidity: { + version: "0.8.2", + settings: { + optimizer: { + enabled: true, + runs: 200, + }, + }, + }, + docgen: require('./docs/config'), +}; diff --git a/package-lock.json b/package-lock.json index 18ea5ab4..4ca40895 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,23 @@ { "name": "@etherisc/gif-contracts", - "version": "2.0.0-rc.1", + "version": "2.0.0-rc.1-0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@etherisc/gif-contracts", - "version": "2.0.0-rc.1", + "version": "2.0.0-rc.1-0", "license": "Apache-2.0", "dependencies": { "@chainlink/contracts": "0.4.1", "@etherisc/gif-interface": "2.0.0-rc.1-0", "@openzeppelin/contracts": "4.7.3" + }, + "devDependencies": { + "hardhat": "^2.12.6", + "lodash.startcase": "^4.4.0", + "solidity-ast": "^0.4.40", + "solidity-docgen": "^0.6.0-beta.34" } }, "node_modules/@chainlink/contracts": { @@ -27,30 +33,6972 @@ "@openzeppelin/contracts": "4.7.3" } }, + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ] + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "node_modules/@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "dependencies": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@noble/secp256k1": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz", + "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@nomicfoundation/ethereumjs-block": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.0.0.tgz", + "integrity": "sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-block/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-blockchain": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.0.0.tgz", + "integrity": "sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-ethash": "^2.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-blockchain/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-common": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.0.0.tgz", + "integrity": "sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "crc-32": "^1.2.0" + } + }, + "node_modules/@nomicfoundation/ethereumjs-ethash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.0.tgz", + "integrity": "sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.0.23", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-ethash/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-evm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz", + "integrity": "sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@types/async-eventemitter": "^0.2.1", + "async-eventemitter": "^0.2.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-evm/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-rlp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz", + "integrity": "sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw==", + "dev": true, + "bin": { + "rlp": "bin/rlp" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-statemanager": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.0.tgz", + "integrity": "sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "functional-red-black-tree": "^1.0.1" + } + }, + "node_modules/@nomicfoundation/ethereumjs-statemanager/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-trie": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.0.tgz", + "integrity": "sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-trie/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.0.0.tgz", + "integrity": "sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-tx/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.0.tgz", + "integrity": "sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-rlp": "^4.0.0-beta.2", + "ethereum-cryptography": "0.1.3" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-util/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/ethereumjs-vm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.0.0.tgz", + "integrity": "sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w==", + "dev": true, + "dependencies": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-blockchain": "^6.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-evm": "^1.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-statemanager": "^1.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@types/async-eventemitter": "^0.2.1", + "async-eventemitter": "^0.2.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "functional-red-black-tree": "^1.0.1", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@nomicfoundation/ethereumjs-vm/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.0.tgz", + "integrity": "sha512-xGWAiVCGOycvGiP/qrlf9f9eOn7fpNbyJygcB0P21a1MDuVPlKt0Srp7rvtBEutYQ48ouYnRXm33zlRnlTOPHg==", + "dev": true, + "engines": { + "node": ">= 12" + }, + "optionalDependencies": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.0", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.0", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.0", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.0", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.0", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.0" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.0.tgz", + "integrity": "sha512-vEF3yKuuzfMHsZecHQcnkUrqm8mnTWfJeEVFHpg+cO+le96xQA4lAJYdUan8pXZohQxv1fSReQsn4QGNuBNuCw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.0.tgz", + "integrity": "sha512-dlHeIg0pTL4dB1l9JDwbi/JG6dHQaU1xpDK+ugYO8eJ1kxx9Dh2isEUtA4d02cQAl22cjOHTvifAk96A+ItEHA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.0.tgz", + "integrity": "sha512-WFCZYMv86WowDA4GiJKnebMQRt3kCcFqHeIomW6NMyqiKqhK1kIZCxSLDYsxqlx396kKLPN1713Q1S8tu68GKg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.0.tgz", + "integrity": "sha512-DTw6MNQWWlCgc71Pq7CEhEqkb7fZnS7oly13pujs4cMH1sR0JzNk90Mp1zpSCsCs4oKan2ClhMlLKtNat/XRKQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.0.tgz", + "integrity": "sha512-wUpUnR/3GV5Da88MhrxXh/lhb9kxh9V3Jya2NpBEhKDIRCDmtXMSqPMXHZmOR9DfCwCvG6vLFPr/+YrPCnUN0w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.0.tgz", + "integrity": "sha512-lR0AxK1x/MeKQ/3Pt923kPvwigmGX3OxeU5qNtQ9pj9iucgk4PzhbS3ruUeSpYhUxG50jN4RkIGwUMoev5lguw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.0.tgz", + "integrity": "sha512-A1he/8gy/JeBD3FKvmI6WUJrGrI5uWJNr5Xb9WdV+DK0F8msuOqpEByLlnTdLkXMwW7nSl3awvLezOs9xBHJEg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.0.tgz", + "integrity": "sha512-7x5SXZ9R9H4SluJZZP8XPN+ju7Mx+XeUMWZw7ZAqkdhP5mK19I4vz3x0zIWygmfE8RT7uQ5xMap0/9NPsO+ykw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.0.tgz", + "integrity": "sha512-m7w3xf+hnE774YRXu+2mGV7RiF3QJtUoiYU61FascCkQhX3QMQavh7saH/vzb2jN5D24nT/jwvaHYX/MAM9zUw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, + "node_modules/@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.0.tgz", + "integrity": "sha512-xCuybjY0sLJQnJhupiFAXaek2EqF0AP0eBjgzaalPXSNvCEN6ZYHvUzdA50ENDVeSYFXcUsYf3+FsD3XKaeptA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10" + } + }, "node_modules/@openzeppelin/contracts": { "version": "4.7.3", "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.3.tgz", "integrity": "sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw==" - } - }, - "dependencies": { - "@chainlink/contracts": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-0.4.1.tgz", - "integrity": "sha512-eC8biY6Ks8k9kZKVt5305veCP3z57yyiy6Os5aR6auta6Bp34xWQ/s4qvrifcW4FNgWw1HJPwMPXDGfiehcLjg==" }, - "@etherisc/gif-interface": { - "version": "2.0.0-rc.1-0", - "resolved": "https://registry.npmjs.org/@etherisc/gif-interface/-/gif-interface-2.0.0-rc.1-0.tgz", - "integrity": "sha512-KECt8o+M22Ov6r3j3gLb9bjPtjvqWxdNVx2cSP+dMdXHKEol081+QsiIGbE0bluo+ICgOA9J/F/F+f2FZtGQxg==", - "requires": { - "@openzeppelin/contracts": "4.7.3" + "node_modules/@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ] + }, + "node_modules/@scure/bip32": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.0.tgz", + "integrity": "sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.1.1", + "@noble/secp256k1": "~1.6.0", + "@scure/base": "~1.1.0" } }, - "@openzeppelin/contracts": { - "version": "4.7.3", - "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.3.tgz", - "integrity": "sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw==" + "node_modules/@scure/bip39": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", + "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "@noble/hashes": "~1.1.1", + "@scure/base": "~1.1.0" + } + }, + "node_modules/@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "dependencies": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "dependencies": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "dependencies": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@types/async-eventemitter": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz", + "integrity": "sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==", + "dev": true + }, + "node_modules/@types/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "node_modules/@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", + "dev": true + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "dependencies": { + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" + } + }, + "node_modules/abstract-level": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", + "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true, + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "dev": true, + "dependencies": { + "async": "^2.4.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bigint-crypto-utils": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.1.8.tgz", + "integrity": "sha512-+VMV9Laq8pXLBKKKK49nOoq9bfR3j7NNQAtbA617a4nw9bVLo8rsqkKMBgM2AJWlNX9fEIyYaYX+d0laqYV4tw==", + "dev": true, + "dependencies": { + "bigint-mod-arith": "^3.1.0" + }, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/bigint-mod-arith": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bigint-mod-arith/-/bigint-mod-arith-3.1.2.tgz", + "integrity": "sha512-nx8J8bBeiRR+NlsROFH9jHswW5HO8mgfOSqW0AmjicMMvaONDa8AO+5ViKDUUNytBPWiwfvZP4/Bj4Y3lUfvgQ==", + "dev": true, + "engines": { + "node": ">=10.4.0" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true + }, + "node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "node_modules/browser-level": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", + "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", + "dev": true, + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.1", + "module-error": "^1.0.2", + "run-parallel-limit": "^1.1.0" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "dependencies": { + "base-x": "^3.0.2" + } + }, + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "dependencies": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/classic-level": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.2.0.tgz", + "integrity": "sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "~2.0.0", + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "node_modules/commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true, + "bin": { + "crc32": "bin/crc32.njs" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "dependencies": { + "ansi-colors": "^4.1.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/ethereum-cryptography": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz", + "integrity": "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==", + "dev": true, + "dependencies": { + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@scure/bip32": "1.1.0", + "@scure/bip39": "1.1.0" + } + }, + "node_modules/ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + } + }, + "node_modules/ethereumjs-abi/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "dependencies": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + } + }, + "node_modules/ethereumjs-util/node_modules/@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/ethereumjs-util/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/ethereumjs-util/node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "dependencies": { + "locate-path": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/hardhat": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.12.6.tgz", + "integrity": "sha512-0Ent1O5DsPgvaVb5sxEgsQ3bJRt/Ex92tsoO+xjoNH2Qc4bFmhI5/CHVlFikulalxOPjNmw5XQ2vJFuVQFESAA==", + "dev": true, + "dependencies": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-blockchain": "^6.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-evm": "^1.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-statemanager": "^1.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@nomicfoundation/ethereumjs-vm": "^6.0.0", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "abort-controller": "^3.0.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "qs": "^6.7.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + }, + "bin": { + "hardhat": "internal/cli/cli.js" + }, + "engines": { + "node": "^14.0.0 || ^16.0.0 || ^18.0.0" + }, + "peerDependencies": { + "ts-node": "*", + "typescript": "*" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + }, + "typescript": { + "optional": true + } + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/immutable": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz", + "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==", + "dev": true + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "dependencies": { + "fp-ts": "^1.0.0" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/keccak": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", + "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.9" + } + }, + "node_modules/level": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", + "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", + "dev": true, + "dependencies": { + "browser-level": "^1.0.1", + "classic-level": "^1.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/level" + } + }, + "node_modules/level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "dependencies": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/mcl-wasm": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", + "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", + "dev": true, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/memory-level": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", + "dev": true, + "dependencies": { + "abstract-level": "^1.0.0", + "functional-red-black-tree": "^1.0.1", + "module-error": "^1.0.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "dependencies": { + "obliterator": "^2.0.0" + } + }, + "node_modules/mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "dependencies": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mochajs" + } + }, + "node_modules/mocha/node_modules/ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/mocha/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mocha/node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-macros": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", + "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", + "dev": true + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node_modules/node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "dev": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "dependencies": { + "p-try": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "dependencies": { + "p-limit": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "dependencies": { + "path-parse": "^1.0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, + "dependencies": { + "bn.js": "^5.2.0" + }, + "bin": { + "rlp": "bin/rlp" + } + }, + "node_modules/run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "dependencies": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "bin": { + "solcjs": "solcjs" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/solc/node_modules/fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "node_modules/solc/node_modules/jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/solc/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/solidity-ast": { + "version": "0.4.43", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.43.tgz", + "integrity": "sha512-rKfMl9Wm0hHL9bezSx+Ct7wimme0eogm+Follr3dm9VhbDgLgNGR9zxhESi0v7sqt3ZFjGObN3cWOYOQERJZtA==", + "dev": true + }, + "node_modules/solidity-docgen": { + "version": "0.6.0-beta.34", + "resolved": "https://registry.npmjs.org/solidity-docgen/-/solidity-docgen-0.6.0-beta.34.tgz", + "integrity": "sha512-igdGrkg8gT1jn+B2NwzjEtSf+7NTrSi/jz88zO7MZWgETmcWbXaxgAsQP4BQeC4YFeH0Pie1NsLP7+9qDgvFtA==", + "dev": true, + "dependencies": { + "handlebars": "^4.7.7", + "solidity-ast": "^0.4.38" + }, + "peerDependencies": { + "hardhat": "^2.8.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "dependencies": { + "type-fest": "^0.7.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/stacktrace-parser/node_modules/type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "dependencies": { + "is-hex-prefixed": "1.0.0" + }, + "engines": { + "node": ">=6.5.0", + "npm": ">=3" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true + }, + "node_modules/tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "node_modules/tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/undici": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.16.0.tgz", + "integrity": "sha512-KWBOXNv6VX+oJQhchXieUznEmnJMqgXMbs0xxH2t8q/FUAWSJvOSr/rMaZKnX5RIVq7JDn0JbP4BOnKG2SGXLQ==", + "dev": true, + "dependencies": { + "busboy": "^1.6.0" + }, + "engines": { + "node": ">=12.18" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "node_modules/workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@chainlink/contracts": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@chainlink/contracts/-/contracts-0.4.1.tgz", + "integrity": "sha512-eC8biY6Ks8k9kZKVt5305veCP3z57yyiy6Os5aR6auta6Bp34xWQ/s4qvrifcW4FNgWw1HJPwMPXDGfiehcLjg==" + }, + "@etherisc/gif-interface": { + "version": "2.0.0-rc.1-0", + "resolved": "https://registry.npmjs.org/@etherisc/gif-interface/-/gif-interface-2.0.0-rc.1-0.tgz", + "integrity": "sha512-KECt8o+M22Ov6r3j3gLb9bjPtjvqWxdNVx2cSP+dMdXHKEol081+QsiIGbE0bluo+ICgOA9J/F/F+f2FZtGQxg==", + "requires": { + "@openzeppelin/contracts": "4.7.3" + } + }, + "@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" + } + }, + "@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "dev": true, + "requires": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" + } + }, + "@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" + } + }, + "@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0" + } + }, + "@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" + } + }, + "@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "dev": true, + "requires": { + "@ethersproject/bignumber": "^5.7.0" + } + }, + "@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "dev": true, + "requires": { + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" + } + }, + "@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", + "dev": true + }, + "@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "dev": true, + "requires": { + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" + } + }, + "@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "dev": true, + "requires": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" + } + }, + "@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "dev": true, + "requires": { + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" + } + }, + "@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", + "dev": true, + "requires": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" + } + }, + "@metamask/eth-sig-util": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@metamask/eth-sig-util/-/eth-sig-util-4.0.1.tgz", + "integrity": "sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==", + "dev": true, + "requires": { + "ethereumjs-abi": "^0.6.8", + "ethereumjs-util": "^6.2.1", + "ethjs-util": "^0.1.6", + "tweetnacl": "^1.0.3", + "tweetnacl-util": "^0.15.1" + } + }, + "@noble/hashes": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.1.2.tgz", + "integrity": "sha512-KYRCASVTv6aeUi1tsF8/vpyR7zpfs3FUzy2Jqm+MU+LmUKhQ0y2FpfwqkCcxSg2ua4GALJd8k2R76WxwZGbQpA==", + "dev": true + }, + "@noble/secp256k1": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@noble/secp256k1/-/secp256k1-1.6.3.tgz", + "integrity": "sha512-T04e4iTurVy7I8Sw4+c5OSN9/RkPlo1uKxAomtxQNLq8j1uPAqnsqG1bqvY3Jv7c13gyr6dui0zmh/I3+f/JaQ==", + "dev": true + }, + "@nomicfoundation/ethereumjs-block": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-block/-/ethereumjs-block-4.0.0.tgz", + "integrity": "sha512-bk8uP8VuexLgyIZAHExH1QEovqx0Lzhc9Ntm63nCRKLHXIZkobaFaeCVwTESV7YkPKUk7NiK11s8ryed4CS9yA==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-blockchain": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-blockchain/-/ethereumjs-blockchain-6.0.0.tgz", + "integrity": "sha512-pLFEoea6MWd81QQYSReLlLfH7N9v7lH66JC/NMPN848ySPPQA5renWnE7wPByfQFzNrPBuDDRFFULMDmj1C0xw==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-ethash": "^2.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "abstract-level": "^1.0.3", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "level": "^8.0.0", + "lru-cache": "^5.1.1", + "memory-level": "^1.0.0" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-common": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-common/-/ethereumjs-common-3.0.0.tgz", + "integrity": "sha512-WS7qSshQfxoZOpHG/XqlHEGRG1zmyjYrvmATvc4c62+gZXgre1ymYP8ZNgx/3FyZY0TWe9OjFlKOfLqmgOeYwA==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "crc-32": "^1.2.0" + } + }, + "@nomicfoundation/ethereumjs-ethash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-ethash/-/ethereumjs-ethash-2.0.0.tgz", + "integrity": "sha512-WpDvnRncfDUuXdsAXlI4lXbqUDOA+adYRQaEezIkxqDkc+LDyYDbd/xairmY98GnQzo1zIqsIL6GB5MoMSJDew==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "abstract-level": "^1.0.3", + "bigint-crypto-utils": "^3.0.23", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-evm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-evm/-/ethereumjs-evm-1.0.0.tgz", + "integrity": "sha512-hVS6qRo3V1PLKCO210UfcEQHvlG7GqR8iFzp0yyjTg2TmJQizcChKgWo8KFsdMw6AyoLgLhHGHw4HdlP8a4i+Q==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@types/async-eventemitter": "^0.2.1", + "async-eventemitter": "^0.2.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-rlp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-rlp/-/ethereumjs-rlp-4.0.0.tgz", + "integrity": "sha512-GaSOGk5QbUk4eBP5qFbpXoZoZUj/NrW7MRa0tKY4Ew4c2HAS0GXArEMAamtFrkazp0BO4K5p2ZCG3b2FmbShmw==", + "dev": true + }, + "@nomicfoundation/ethereumjs-statemanager": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-statemanager/-/ethereumjs-statemanager-1.0.0.tgz", + "integrity": "sha512-jCtqFjcd2QejtuAMjQzbil/4NHf5aAWxUc+CvS0JclQpl+7M0bxMofR2AJdtz+P3u0ke2euhYREDiE7iSO31vQ==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "functional-red-black-tree": "^1.0.1" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-trie": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-trie/-/ethereumjs-trie-5.0.0.tgz", + "integrity": "sha512-LIj5XdE+s+t6WSuq/ttegJzZ1vliwg6wlb+Y9f4RlBpuK35B9K02bO7xU+E6Rgg9RGptkWd6TVLdedTI4eNc2A==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3", + "readable-stream": "^3.6.0" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-tx": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-tx/-/ethereumjs-tx-4.0.0.tgz", + "integrity": "sha512-Gg3Lir2lNUck43Kp/3x6TfBNwcWC9Z1wYue9Nz3v4xjdcv6oDW9QSMJxqsKw9QEGoBBZ+gqwpW7+F05/rs/g1w==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-util": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-util/-/ethereumjs-util-8.0.0.tgz", + "integrity": "sha512-2emi0NJ/HmTG+CGY58fa+DQuAoroFeSH9gKu9O6JnwTtlzJtgfTixuoOqLEgyyzZVvwfIpRueuePb8TonL1y+A==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-rlp": "^4.0.0-beta.2", + "ethereum-cryptography": "0.1.3" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/ethereumjs-vm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/ethereumjs-vm/-/ethereumjs-vm-6.0.0.tgz", + "integrity": "sha512-JMPxvPQ3fzD063Sg3Tp+UdwUkVxMoo1uML6KSzFhMH3hoQi/LMuXBoEHAoW83/vyNS9BxEe6jm6LmT5xdeEJ6w==", + "dev": true, + "requires": { + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-blockchain": "^6.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-evm": "^1.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-statemanager": "^1.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@types/async-eventemitter": "^0.2.1", + "async-eventemitter": "^0.2.4", + "debug": "^4.3.3", + "ethereum-cryptography": "0.1.3", + "functional-red-black-tree": "^1.0.1", + "mcl-wasm": "^0.7.1", + "rustbn.js": "~0.2.0" + }, + "dependencies": { + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "@nomicfoundation/solidity-analyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer/-/solidity-analyzer-0.1.0.tgz", + "integrity": "sha512-xGWAiVCGOycvGiP/qrlf9f9eOn7fpNbyJygcB0P21a1MDuVPlKt0Srp7rvtBEutYQ48ouYnRXm33zlRnlTOPHg==", + "dev": true, + "requires": { + "@nomicfoundation/solidity-analyzer-darwin-arm64": "0.1.0", + "@nomicfoundation/solidity-analyzer-darwin-x64": "0.1.0", + "@nomicfoundation/solidity-analyzer-freebsd-x64": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": "0.1.0", + "@nomicfoundation/solidity-analyzer-linux-x64-musl": "0.1.0", + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": "0.1.0", + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": "0.1.0", + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": "0.1.0" + } + }, + "@nomicfoundation/solidity-analyzer-darwin-arm64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-arm64/-/solidity-analyzer-darwin-arm64-0.1.0.tgz", + "integrity": "sha512-vEF3yKuuzfMHsZecHQcnkUrqm8mnTWfJeEVFHpg+cO+le96xQA4lAJYdUan8pXZohQxv1fSReQsn4QGNuBNuCw==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-darwin-x64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-darwin-x64/-/solidity-analyzer-darwin-x64-0.1.0.tgz", + "integrity": "sha512-dlHeIg0pTL4dB1l9JDwbi/JG6dHQaU1xpDK+ugYO8eJ1kxx9Dh2isEUtA4d02cQAl22cjOHTvifAk96A+ItEHA==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-freebsd-x64": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-freebsd-x64/-/solidity-analyzer-freebsd-x64-0.1.0.tgz", + "integrity": "sha512-WFCZYMv86WowDA4GiJKnebMQRt3kCcFqHeIomW6NMyqiKqhK1kIZCxSLDYsxqlx396kKLPN1713Q1S8tu68GKg==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-arm64-gnu": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-gnu/-/solidity-analyzer-linux-arm64-gnu-0.1.0.tgz", + "integrity": "sha512-DTw6MNQWWlCgc71Pq7CEhEqkb7fZnS7oly13pujs4cMH1sR0JzNk90Mp1zpSCsCs4oKan2ClhMlLKtNat/XRKQ==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-arm64-musl": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-arm64-musl/-/solidity-analyzer-linux-arm64-musl-0.1.0.tgz", + "integrity": "sha512-wUpUnR/3GV5Da88MhrxXh/lhb9kxh9V3Jya2NpBEhKDIRCDmtXMSqPMXHZmOR9DfCwCvG6vLFPr/+YrPCnUN0w==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-x64-gnu": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-gnu/-/solidity-analyzer-linux-x64-gnu-0.1.0.tgz", + "integrity": "sha512-lR0AxK1x/MeKQ/3Pt923kPvwigmGX3OxeU5qNtQ9pj9iucgk4PzhbS3ruUeSpYhUxG50jN4RkIGwUMoev5lguw==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-linux-x64-musl": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-linux-x64-musl/-/solidity-analyzer-linux-x64-musl-0.1.0.tgz", + "integrity": "sha512-A1he/8gy/JeBD3FKvmI6WUJrGrI5uWJNr5Xb9WdV+DK0F8msuOqpEByLlnTdLkXMwW7nSl3awvLezOs9xBHJEg==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-arm64-msvc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-arm64-msvc/-/solidity-analyzer-win32-arm64-msvc-0.1.0.tgz", + "integrity": "sha512-7x5SXZ9R9H4SluJZZP8XPN+ju7Mx+XeUMWZw7ZAqkdhP5mK19I4vz3x0zIWygmfE8RT7uQ5xMap0/9NPsO+ykw==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-ia32-msvc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-ia32-msvc/-/solidity-analyzer-win32-ia32-msvc-0.1.0.tgz", + "integrity": "sha512-m7w3xf+hnE774YRXu+2mGV7RiF3QJtUoiYU61FascCkQhX3QMQavh7saH/vzb2jN5D24nT/jwvaHYX/MAM9zUw==", + "dev": true, + "optional": true + }, + "@nomicfoundation/solidity-analyzer-win32-x64-msvc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@nomicfoundation/solidity-analyzer-win32-x64-msvc/-/solidity-analyzer-win32-x64-msvc-0.1.0.tgz", + "integrity": "sha512-xCuybjY0sLJQnJhupiFAXaek2EqF0AP0eBjgzaalPXSNvCEN6ZYHvUzdA50ENDVeSYFXcUsYf3+FsD3XKaeptA==", + "dev": true, + "optional": true + }, + "@openzeppelin/contracts": { + "version": "4.7.3", + "resolved": "https://registry.npmjs.org/@openzeppelin/contracts/-/contracts-4.7.3.tgz", + "integrity": "sha512-dGRS0agJzu8ybo44pCIf3xBaPQN/65AIXNgK8+4gzKd5kbvlqyxryUYVLJv7fK98Seyd2hDZzVEHSWAh0Bt1Yw==" + }, + "@scure/base": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@scure/base/-/base-1.1.1.tgz", + "integrity": "sha512-ZxOhsSyxYwLJj3pLZCefNitxsj093tb2vq90mp2txoYeBqbcjDjqFhyM8eUjq/uFm6zJ+mUuqxlS2FkuSY1MTA==", + "dev": true + }, + "@scure/bip32": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip32/-/bip32-1.1.0.tgz", + "integrity": "sha512-ftTW3kKX54YXLCxH6BB7oEEoJfoE2pIgw7MINKAs5PsS6nqKPuKk1haTF/EuHmYqG330t5GSrdmtRuHaY1a62Q==", + "dev": true, + "requires": { + "@noble/hashes": "~1.1.1", + "@noble/secp256k1": "~1.6.0", + "@scure/base": "~1.1.0" + } + }, + "@scure/bip39": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@scure/bip39/-/bip39-1.1.0.tgz", + "integrity": "sha512-pwrPOS16VeTKg98dYXQyIjJEcWfz7/1YJIwxUEPFfQPtc86Ym/1sVgQ2RLoD43AazMk2l/unK4ITySSpW2+82w==", + "dev": true, + "requires": { + "@noble/hashes": "~1.1.1", + "@scure/base": "~1.1.0" + } + }, + "@sentry/core": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.30.0.tgz", + "integrity": "sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/hub": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.30.0.tgz", + "integrity": "sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==", + "dev": true, + "requires": { + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/minimal": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.30.0.tgz", + "integrity": "sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/node": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.30.0.tgz", + "integrity": "sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==", + "dev": true, + "requires": { + "@sentry/core": "5.30.0", + "@sentry/hub": "5.30.0", + "@sentry/tracing": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "cookie": "^0.4.1", + "https-proxy-agent": "^5.0.0", + "lru_map": "^0.3.3", + "tslib": "^1.9.3" + } + }, + "@sentry/tracing": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-5.30.0.tgz", + "integrity": "sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==", + "dev": true, + "requires": { + "@sentry/hub": "5.30.0", + "@sentry/minimal": "5.30.0", + "@sentry/types": "5.30.0", + "@sentry/utils": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@sentry/types": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.30.0.tgz", + "integrity": "sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==", + "dev": true + }, + "@sentry/utils": { + "version": "5.30.0", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.30.0.tgz", + "integrity": "sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==", + "dev": true, + "requires": { + "@sentry/types": "5.30.0", + "tslib": "^1.9.3" + } + }, + "@types/async-eventemitter": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@types/async-eventemitter/-/async-eventemitter-0.2.1.tgz", + "integrity": "sha512-M2P4Ng26QbAeITiH7w1d7OxtldgfAe0wobpyJzVK/XOb0cUGKU2R4pfAhqcJBXAe2ife5ZOhSv4wk7p+ffURtg==", + "dev": true + }, + "@types/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==", + "dev": true + }, + "@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", + "dev": true + }, + "@types/pbkdf2": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.0.tgz", + "integrity": "sha512-Cf63Rv7jCQ0LaL8tNXmEyqTHuIJxRdlS5vMh1mj5voN4+QFhVZnlZruezqpWYDiJ8UTzhP0VmeLXCmBk66YrMQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-Da66lEIFeIz9ltsdMZcpQvmrmmoqrfju8pm1BH8WbYjZSwUgCwXLb9C+9XYogwBITnbsSaMdVPb2ekf7TV+03w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "dev": true, + "requires": { + "event-target-shim": "^5.0.0" + } + }, + "abstract-level": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/abstract-level/-/abstract-level-1.0.3.tgz", + "integrity": "sha512-t6jv+xHy+VYwc4xqZMn2Pa9DjcdzvzZmQGRjTFc8spIbRGHgBrEKbPq+rYXc7CCo0lxgYvSgKVg9qZAhpVQSjA==", + "dev": true, + "requires": { + "buffer": "^6.0.3", + "catering": "^2.1.0", + "is-buffer": "^2.0.5", + "level-supports": "^4.0.0", + "level-transcoder": "^1.0.1", + "module-error": "^1.0.1", + "queue-microtask": "^1.2.3" + } + }, + "adm-zip": { + "version": "0.4.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", + "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-eventemitter": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/async-eventemitter/-/async-eventemitter-0.2.4.tgz", + "integrity": "sha512-pd20BwL7Yt1zwDFy+8MX8F1+WCT8aQeKj0kQnTrH9WaeRETlRamVhD0JtRPmrV4GfOJ2F9CvdQkZeZhnh2TuHw==", + "dev": true, + "requires": { + "async": "^2.4.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base-x": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.9.tgz", + "integrity": "sha512-H7JU6iBHTal1gp56aKoaa//YUxEaAOUiydvrV/pILqIHXTtqxSkATOnDA2u+jZ/61sD+L/412+7kzXRtWukhpQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, + "bigint-crypto-utils": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/bigint-crypto-utils/-/bigint-crypto-utils-3.1.8.tgz", + "integrity": "sha512-+VMV9Laq8pXLBKKKK49nOoq9bfR3j7NNQAtbA617a4nw9bVLo8rsqkKMBgM2AJWlNX9fEIyYaYX+d0laqYV4tw==", + "dev": true, + "requires": { + "bigint-mod-arith": "^3.1.0" + } + }, + "bigint-mod-arith": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bigint-mod-arith/-/bigint-mod-arith-3.1.2.tgz", + "integrity": "sha512-nx8J8bBeiRR+NlsROFH9jHswW5HO8mgfOSqW0AmjicMMvaONDa8AO+5ViKDUUNytBPWiwfvZP4/Bj4Y3lUfvgQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", + "dev": true + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browser-level": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browser-level/-/browser-level-1.0.1.tgz", + "integrity": "sha512-XECYKJ+Dbzw0lbydyQuJzwNXtOpbMSq737qxJN11sIRTErOMShvDpbzTlgju7orJKvx4epULolZAuJGLzCmWRQ==", + "dev": true, + "requires": { + "abstract-level": "^1.0.2", + "catering": "^2.1.1", + "module-error": "^1.0.2", + "run-parallel-limit": "^1.1.0" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", + "dev": true, + "requires": { + "base-x": "^3.0.2" + } + }, + "bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", + "dev": true, + "requires": { + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" + } + }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "dev": true, + "requires": { + "streamsearch": "^1.1.0" + } + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "catering": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/catering/-/catering-2.1.1.tgz", + "integrity": "sha512-K7Qy8O9p76sL3/3m7/zLKbRkyOlSZAgzEaLhyj2mXS8PsCud2Eo4hAb8aLtZqHh0QGqLcb9dlJSu6lHRVENm1w==", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "classic-level": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/classic-level/-/classic-level-1.2.0.tgz", + "integrity": "sha512-qw5B31ANxSluWz9xBzklRWTUAJ1SXIdaVKTVS7HcTGKOAmExx65Wo5BUICW+YGORe2FOUaDghoI9ZDxj82QcFg==", + "dev": true, + "requires": { + "abstract-level": "^1.0.2", + "catering": "^2.1.0", + "module-error": "^1.0.1", + "napi-macros": "~2.0.0", + "node-gyp-build": "^4.3.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "command-exists": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", + "dev": true + }, + "commander": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/commander/-/commander-3.0.2.tgz", + "integrity": "sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "dev": true + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "diff": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "ethereum-cryptography": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-1.1.2.tgz", + "integrity": "sha512-XDSJlg4BD+hq9N2FjvotwUET9Tfxpxc3kWGE2AqUG5vcbeunnbImVk3cj6e/xT3phdW21mE8R5IugU4fspQDcQ==", + "dev": true, + "requires": { + "@noble/hashes": "1.1.2", + "@noble/secp256k1": "1.6.3", + "@scure/bip32": "1.1.0", + "@scure/bip39": "1.1.0" + } + }, + "ethereumjs-abi": { + "version": "0.6.8", + "resolved": "https://registry.npmjs.org/ethereumjs-abi/-/ethereumjs-abi-0.6.8.tgz", + "integrity": "sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==", + "dev": true, + "requires": { + "bn.js": "^4.11.8", + "ethereumjs-util": "^6.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "ethereumjs-util": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-6.2.1.tgz", + "integrity": "sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==", + "dev": true, + "requires": { + "@types/bn.js": "^4.11.3", + "bn.js": "^4.11.0", + "create-hash": "^1.1.2", + "elliptic": "^6.5.2", + "ethereum-cryptography": "^0.1.3", + "ethjs-util": "0.1.6", + "rlp": "^2.2.3" + }, + "dependencies": { + "@types/bn.js": { + "version": "4.11.6", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-4.11.6.tgz", + "integrity": "sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "dev": true, + "requires": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + } + } + }, + "ethjs-util": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/ethjs-util/-/ethjs-util-0.1.6.tgz", + "integrity": "sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0", + "strip-hex-prefix": "1.0.0" + } + }, + "event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "fp-ts": { + "version": "1.19.3", + "resolved": "https://registry.npmjs.org/fp-ts/-/fp-ts-1.19.3.tgz", + "integrity": "sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==", + "dev": true + }, + "fs-extra": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-7.0.1.tgz", + "integrity": "sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "hardhat": { + "version": "2.12.6", + "resolved": "https://registry.npmjs.org/hardhat/-/hardhat-2.12.6.tgz", + "integrity": "sha512-0Ent1O5DsPgvaVb5sxEgsQ3bJRt/Ex92tsoO+xjoNH2Qc4bFmhI5/CHVlFikulalxOPjNmw5XQ2vJFuVQFESAA==", + "dev": true, + "requires": { + "@ethersproject/abi": "^5.1.2", + "@metamask/eth-sig-util": "^4.0.0", + "@nomicfoundation/ethereumjs-block": "^4.0.0", + "@nomicfoundation/ethereumjs-blockchain": "^6.0.0", + "@nomicfoundation/ethereumjs-common": "^3.0.0", + "@nomicfoundation/ethereumjs-evm": "^1.0.0", + "@nomicfoundation/ethereumjs-rlp": "^4.0.0", + "@nomicfoundation/ethereumjs-statemanager": "^1.0.0", + "@nomicfoundation/ethereumjs-trie": "^5.0.0", + "@nomicfoundation/ethereumjs-tx": "^4.0.0", + "@nomicfoundation/ethereumjs-util": "^8.0.0", + "@nomicfoundation/ethereumjs-vm": "^6.0.0", + "@nomicfoundation/solidity-analyzer": "^0.1.0", + "@sentry/node": "^5.18.1", + "@types/bn.js": "^5.1.0", + "@types/lru-cache": "^5.1.0", + "abort-controller": "^3.0.0", + "adm-zip": "^0.4.16", + "aggregate-error": "^3.0.0", + "ansi-escapes": "^4.3.0", + "chalk": "^2.4.2", + "chokidar": "^3.4.0", + "ci-info": "^2.0.0", + "debug": "^4.1.1", + "enquirer": "^2.3.0", + "env-paths": "^2.2.0", + "ethereum-cryptography": "^1.0.3", + "ethereumjs-abi": "^0.6.8", + "find-up": "^2.1.0", + "fp-ts": "1.19.3", + "fs-extra": "^7.0.1", + "glob": "7.2.0", + "immutable": "^4.0.0-rc.12", + "io-ts": "1.10.4", + "keccak": "^3.0.2", + "lodash": "^4.17.11", + "mnemonist": "^0.38.0", + "mocha": "^10.0.0", + "p-map": "^4.0.0", + "qs": "^6.7.0", + "raw-body": "^2.4.1", + "resolve": "1.17.0", + "semver": "^6.3.0", + "solc": "0.7.3", + "source-map-support": "^0.5.13", + "stacktrace-parser": "^0.1.10", + "tsort": "0.0.1", + "undici": "^5.14.0", + "uuid": "^8.3.2", + "ws": "^7.4.6" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "immutable": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.2.2.tgz", + "integrity": "sha512-fTMKDwtbvO5tldky9QZ2fMX7slR0mYpY5nbnFWYp0fOzDhHqhgIw9KoYgxLWsoNTS9ZHGauHj18DTyEw6BK3Og==", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "io-ts": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/io-ts/-/io-ts-1.10.4.tgz", + "integrity": "sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==", + "dev": true, + "requires": { + "fp-ts": "^1.0.0" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-hex-prefixed": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz", + "integrity": "sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true + }, + "js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "keccak": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.3.tgz", + "integrity": "sha512-JZrLIAJWuZxKbCilMpNz5Vj7Vtb4scDG3dMXLOsbzBmQGyjwE61BbW7bJkfKKCShXiQZt3T6sBgALRtmd+nZaQ==", + "dev": true, + "requires": { + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "level": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/level/-/level-8.0.0.tgz", + "integrity": "sha512-ypf0jjAk2BWI33yzEaaotpq7fkOPALKAgDBxggO6Q9HGX2MRXn0wbP1Jn/tJv1gtL867+YOjOB49WaUF3UoJNQ==", + "dev": true, + "requires": { + "browser-level": "^1.0.1", + "classic-level": "^1.2.0" + } + }, + "level-supports": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-4.0.1.tgz", + "integrity": "sha512-PbXpve8rKeNcZ9C1mUicC9auIYFyGpkV9/i6g76tLgANwWhtG2v7I4xNBUlkn3lE2/dZF3Pi0ygYGtLc4RXXdA==", + "dev": true + }, + "level-transcoder": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/level-transcoder/-/level-transcoder-1.0.1.tgz", + "integrity": "sha512-t7bFwFtsQeD8cl8NIoQ2iwxA0CL/9IFw7/9gAjOonH0PWTTiRfY7Hq+Ejbsxh86tXobDQ6IOiddjNYIfOBs06w==", + "dev": true, + "requires": { + "buffer": "^6.0.3", + "module-error": "^1.0.1" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "lru_map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", + "integrity": "sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==", + "dev": true + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "mcl-wasm": { + "version": "0.7.9", + "resolved": "https://registry.npmjs.org/mcl-wasm/-/mcl-wasm-0.7.9.tgz", + "integrity": "sha512-iJIUcQWA88IJB/5L15GnJVnSQJmf/YaxxV6zRavv83HILHaJQb6y0iFyDMdDO0gN8X37tdxmAOrH/P8B6RB8sQ==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "memory-level": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/memory-level/-/memory-level-1.0.0.tgz", + "integrity": "sha512-UXzwewuWeHBz5krr7EvehKcmLFNoXxGcvuYhC41tRnkrTbJohtS7kVn9akmgirtRygg+f7Yjsfi8Uu5SGSQ4Og==", + "dev": true, + "requires": { + "abstract-level": "^1.0.0", + "functional-red-black-tree": "^1.0.1", + "module-error": "^1.0.1" + } + }, + "memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "mnemonist": { + "version": "0.38.5", + "resolved": "https://registry.npmjs.org/mnemonist/-/mnemonist-0.38.5.tgz", + "integrity": "sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==", + "dev": true, + "requires": { + "obliterator": "^2.0.0" + } + }, + "mocha": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.2.0.tgz", + "integrity": "sha512-IDY7fl/BecMwFHzoqF2sg/SHHANeBoMMXFlS9r0OXKDssYE1M5O43wUY/9BVPeIvfH2zmEbBfseqN9gBQZzXkg==", + "dev": true, + "requires": { + "ansi-colors": "4.1.1", + "browser-stdout": "1.3.1", + "chokidar": "3.5.3", + "debug": "4.3.4", + "diff": "5.0.0", + "escape-string-regexp": "4.0.0", + "find-up": "5.0.0", + "glob": "7.2.0", + "he": "1.2.0", + "js-yaml": "4.1.0", + "log-symbols": "4.1.0", + "minimatch": "5.0.1", + "ms": "2.1.3", + "nanoid": "3.3.3", + "serialize-javascript": "6.0.0", + "strip-json-comments": "3.1.1", + "supports-color": "8.1.1", + "workerpool": "6.2.1", + "yargs": "16.2.0", + "yargs-parser": "20.2.4", + "yargs-unparser": "2.0.0" + }, + "dependencies": { + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "module-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/module-error/-/module-error-1.0.2.tgz", + "integrity": "sha512-0yuvsqSCv8LbaOKhnsQ/T5JhyFlCYLPXK3U2sgV10zoKQwzs/MyfuQUOZQ1V/6OCOJsK/TRgNVrPuPDqtdMFtA==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true + }, + "napi-macros": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", + "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "dev": true + }, + "node-gyp-build": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz", + "integrity": "sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==", + "dev": true + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "obliterator": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/obliterator/-/obliterator-2.0.4.tgz", + "integrity": "sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "resolve": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz", + "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "dev": true, + "requires": { + "bn.js": "^5.2.0" + } + }, + "run-parallel-limit": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/run-parallel-limit/-/run-parallel-limit-1.1.0.tgz", + "integrity": "sha512-jJA7irRNM91jaKc3Hcl1npHsFLOXOoTkPCUL1JEa1R82O2miplXXRaGdjW/KM/98YQWDhJLiSs793CnXfblJUw==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rustbn.js": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/rustbn.js/-/rustbn.js-0.2.0.tgz", + "integrity": "sha512-4VlvkRUuCJvr2J6Y0ImW7NvTCriMi7ErOAqWk1y69vAdoNIzCF3yPmgeNzx+RQTLEDFq5sHfscn1MwHxP9hNfA==", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "dev": true + }, + "secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "dev": true, + "requires": { + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "solc": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/solc/-/solc-0.7.3.tgz", + "integrity": "sha512-GAsWNAjGzIDg7VxzP6mPjdurby3IkGCjQcM8GFYZT6RyaoUZKmMU6Y7YwG+tFGhv7dwZ8rmR4iwFDrrD99JwqA==", + "dev": true, + "requires": { + "command-exists": "^1.2.8", + "commander": "3.0.2", + "follow-redirects": "^1.12.1", + "fs-extra": "^0.30.0", + "js-sha3": "0.8.0", + "memorystream": "^0.3.1", + "require-from-string": "^2.0.0", + "semver": "^5.5.0", + "tmp": "0.0.33" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "solidity-ast": { + "version": "0.4.43", + "resolved": "https://registry.npmjs.org/solidity-ast/-/solidity-ast-0.4.43.tgz", + "integrity": "sha512-rKfMl9Wm0hHL9bezSx+Ct7wimme0eogm+Follr3dm9VhbDgLgNGR9zxhESi0v7sqt3ZFjGObN3cWOYOQERJZtA==", + "dev": true + }, + "solidity-docgen": { + "version": "0.6.0-beta.34", + "resolved": "https://registry.npmjs.org/solidity-docgen/-/solidity-docgen-0.6.0-beta.34.tgz", + "integrity": "sha512-igdGrkg8gT1jn+B2NwzjEtSf+7NTrSi/jz88zO7MZWgETmcWbXaxgAsQP4BQeC4YFeH0Pie1NsLP7+9qDgvFtA==", + "dev": true, + "requires": { + "handlebars": "^4.7.7", + "solidity-ast": "^0.4.38" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "stacktrace-parser": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", + "dev": true, + "requires": { + "type-fest": "^0.7.1" + }, + "dependencies": { + "type-fest": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", + "dev": true + } + } + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + }, + "streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "dev": true + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-hex-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-hex-prefix/-/strip-hex-prefix-1.0.0.tgz", + "integrity": "sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==", + "dev": true, + "requires": { + "is-hex-prefixed": "1.0.0" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsort": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/tsort/-/tsort-0.0.1.tgz", + "integrity": "sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==", + "dev": true + }, + "tweetnacl": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-1.0.3.tgz", + "integrity": "sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==", + "dev": true + }, + "tweetnacl-util": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/tweetnacl-util/-/tweetnacl-util-0.15.1.tgz", + "integrity": "sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true + }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true + }, + "undici": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-5.16.0.tgz", + "integrity": "sha512-KWBOXNv6VX+oJQhchXieUznEmnJMqgXMbs0xxH2t8q/FUAWSJvOSr/rMaZKnX5RIVq7JDn0JbP4BOnKG2SGXLQ==", + "dev": true, + "requires": { + "busboy": "^1.6.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "workerpool": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "requires": {} + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", + "dev": true + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true } } } diff --git a/package.json b/package.json index 3dc572dd..77e1c2c8 100644 --- a/package.json +++ b/package.json @@ -24,9 +24,18 @@ "bugs": { "url": "https://github.com/etherisc/gif-contracts/issues" }, + "scripts": { + "prepare-docs": "scripts/prepare-docs.sh" + }, "dependencies": { "@chainlink/contracts": "0.4.1", "@etherisc/gif-interface": "2.0.0-rc.1-0", "@openzeppelin/contracts": "4.7.3" + }, + "devDependencies": { + "hardhat": "^2.12.6", + "lodash.startcase": "^4.4.0", + "solidity-ast": "^0.4.40", + "solidity-docgen": "^0.6.0-beta.34" } } diff --git a/scripts/gen-nav.js b/scripts/gen-nav.js new file mode 100644 index 00000000..f805702f --- /dev/null +++ b/scripts/gen-nav.js @@ -0,0 +1,41 @@ +#!/usr/bin/env node + +const path = require('path'); +const glob = require('glob'); +const startCase = require('lodash.startcase'); + +const baseDir = process.argv[2]; + +const files = glob.sync(baseDir + '/**/*.adoc').map(f => path.relative(baseDir, f)); + +console.log('.API'); + +function getPageTitle(directory) { + switch (directory) { + case 'metatx': + return 'Meta Transactions'; + case 'common': + return 'Common (Tokens)'; + default: + return startCase(directory); + } +} + +const links = files.map(file => { + const doc = file.replace(baseDir, ''); + const title = path.parse(file).name; + + return { + xref: `* xref:${doc}[${getPageTitle(title)}]`, + title, + }; +}); + +// Case-insensitive sort based on titles (so 'token/ERC20' gets sorted as 'erc20') +const sortedLinks = links.sort(function (a, b) { + return a.title.toLowerCase().localeCompare(b.title.toLowerCase(), undefined, { numeric: true }); +}); + +for (const link of sortedLinks) { + console.log(link.xref); +} diff --git a/scripts/git-user-config.sh b/scripts/git-user-config.sh new file mode 100644 index 00000000..979b4b4d --- /dev/null +++ b/scripts/git-user-config.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +set -euo pipefail -x + +git config user.name 'github-actions' +git config user.email '41898282+github-actions[bot]@users.noreply.github.com' \ No newline at end of file diff --git a/scripts/prepare-docs.sh b/scripts/prepare-docs.sh new file mode 100755 index 00000000..d4676b9d --- /dev/null +++ b/scripts/prepare-docs.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +set -euo pipefail + +OUTDIR="$(node -p 'require("./docs/config.js").outputDir')" + +if [ ! -d node_modules ]; then + npm ci +fi + +rm -rf "$OUTDIR" + +npx hardhat docgen + +node scripts/gen-nav.js "$OUTDIR" > "$OUTDIR/../nav.adoc" \ No newline at end of file diff --git a/scripts/update-docs-branch.js b/scripts/update-docs-branch.js new file mode 100644 index 00000000..44f8a707 --- /dev/null +++ b/scripts/update-docs-branch.js @@ -0,0 +1,63 @@ +const proc = require('child_process'); +const read = cmd => proc.execSync(cmd, { encoding: 'utf8' }).trim(); +const run = cmd => { + proc.execSync(cmd, { stdio: 'inherit' }); +}; +const tryRead = cmd => { + try { + return read(cmd); + } catch (e) { + return undefined; + } +}; + +const releaseBranchRegex = /^release-v(?(?\d+)\.(?\d+)(?:\.(?\d+))?)$/; + +const currentBranch = read('git rev-parse --abbrev-ref HEAD'); +const match = currentBranch.match(releaseBranchRegex); + +if (!match) { + console.error('Not currently on a release branch'); + process.exit(1); +} + +if (/-.*$/.test(require('../package.json').version)) { + console.error('Refusing to update docs: prerelease detected'); + process.exit(0); +} + +const current = match.groups; +const docsBranch = `docs-v${current.major}.x`; + +// Fetch remotes and find the docs branch if it exists +run('git fetch --all --no-tags'); +const matchingDocsBranches = tryRead(`git rev-parse --glob='*/${docsBranch}'`); + +if (!matchingDocsBranches) { + // Create the branch + run(`git checkout --orphan ${docsBranch}`); +} else { + const [publishedRef, ...others] = new Set(matchingDocsBranches.split('\n')); + if (others.length > 0) { + console.error( + `Found conflicting ${docsBranch} branches.\n` + + 'Either local branch is outdated or there are multiple matching remote branches.', + ); + process.exit(1); + } + const publishedVersion = JSON.parse(read(`git show ${publishedRef}:package.json`)).version; + const publishedMinor = publishedVersion.match(/\d+\.(?\d+)\.\d+/).groups.minor; + if (current.minor < publishedMinor) { + console.error('Refusing to update docs: newer version is published'); + process.exit(0); + } + + run('git checkout --quiet --detach'); + run(`git reset --soft ${publishedRef}`); + run(`git checkout ${docsBranch}`); +} + +run('npm run prepare-docs'); +run('git add -f docs'); // --force needed because generated docs files are gitignored +run('git commit -m "Update docs"'); +run(`git checkout ${currentBranch}`);