From 3579544b6ad800d94ffcc2fb91eb761c960cffeb Mon Sep 17 00:00:00 2001 From: bitbeckers Date: Mon, 30 Sep 2024 01:11:46 +0200 Subject: [PATCH] chore(deploy): cleanup docs deploy arbOne --- .github/workflows/ci-default.yml | 18 - .gitmodules | 3 - contracts/hardhat.config.cts | 8 +- contracts/package.json | 2 +- contracts/pnpm-lock.yaml | 9209 +++++++++++++++++ .../deployment-marketplace-arbitrumOne.json | 55 + contracts/src/deployments/index.ts | 8 + contracts/src/index.ts | 1 + contracts/tasks/config.ts | 7 +- contracts/tasks/deploy-marketplace.ts | 2 +- docs/.eslintrc.yml | 27 - docs/.gitignore | 22 - docs/README.md | 40 - docs/babel.config.ts | 3 - docs/docs/about.md | 22 - .../2024_01_16_An_Impactful_Year.md | 24 - docs/docs/developer/allowlists.md | 101 - .../marketplace/BatchOrderTypehashRegistry.md | 46 - .../CreatorFeeManagerWithRebates.md | 76 - .../CreatorFeeManagerWithRoyalties.md | 64 - .../contracts/marketplace/CurrencyManager.md | 250 - .../contracts/marketplace/ExecutionManager.md | 751 -- .../marketplace/InheritedStrategy.md | 9 - .../marketplace/LooksRareProtocol.md | 1186 --- .../api/contracts/marketplace/NonceManager.md | 193 - .../marketplace/ProtocolFeeRecipient.md | 75 - .../contracts/marketplace/StrategyManager.md | 391 - .../contracts/marketplace/TransferManager.md | 561 - .../marketplace/TransferSelectorNFT.md | 773 -- .../executionStrategies/BaseStrategy.md | 41 - .../BaseStrategyChainlinkPriceLatency.md | 212 - .../StrategyChainlinkUSDDynamicAsk.md | 342 - .../StrategyCollectionOffer.md | 135 - .../StrategyDutchAuction.md | 91 - .../StrategyHypercertCollectionOffer.md | 135 - .../StrategyHypercertDutchAuction.md | 91 - .../StrategyHypercertFractionOffer.md | 123 - .../StrategyItemIdsRange.md | 75 - .../marketplace/helpers/OrderValidatorV2A.md | 215 - .../marketplace/helpers/ProtocolHelpers.md | 159 - .../interfaces/ICreatorFeeManager.md | 60 - .../interfaces/ICurrencyManager.md | 22 - .../interfaces/IExecutionManager.md | 99 - .../interfaces/IHypercert1155Token.md | 72 - .../interfaces/IImmutableCreate2Factory.md | 41 - .../interfaces/ILooksRareProtocol.md | 157 - .../marketplace/interfaces/INonceManager.md | 53 - .../interfaces/IRoyaltyFeeRegistry.md | 29 - .../marketplace/interfaces/IStrategy.md | 41 - .../interfaces/IStrategyManager.md | 84 - .../interfaces/ITransferManager.md | 111 - .../libraries/CurrencyValidator.md | 7 - .../libraries/LowLevelHypercertCaller.md | 21 - .../MerkleProofCalldataWithNodes.md | 7 - .../OpenZeppelin/MerkleProofMemory.md | 7 - .../marketplace/libraries/OrderStructs.md | 7 - .../libraries/RoyaltyFeeRegistry.md | 172 - .../api/contracts/protocol/AllowlistMinter.md | 102 - .../api/contracts/protocol/HypercertMinter.md | 913 -- .../contracts/protocol/SemiFungible1155.md | 457 - .../protocol/interfaces/IAllowlist.md | 29 - .../protocol/interfaces/IHypercertToken.md | 192 - .../api/contracts/protocol/libs/Errors.md | 59 - docs/docs/developer/api/index.md | 0 docs/docs/developer/api/sdk/_category_.yml | 3 - .../developer/api/sdk/classes/ClientError.md | 198 - .../api/sdk/classes/ConfigurationError.md | 196 - .../api/sdk/classes/ContractError.md | 197 - .../developer/api/sdk/classes/FetchError.md | 198 - .../api/sdk/classes/HypercertClient.md | 886 -- .../api/sdk/classes/HypercertsStorage.md | 192 - .../api/sdk/classes/InvalidOrMissingError.md | 198 - .../api/sdk/classes/MalformedDataError.md | 198 - .../developer/api/sdk/classes/MintingError.md | 198 - .../developer/api/sdk/classes/StorageError.md | 198 - .../api/sdk/classes/UnknownSchemaError.md | 201 - .../api/sdk/classes/UnsupportedChainError.md | 202 - .../developer/api/sdk/classes/_category_.yml | 2 - docs/docs/developer/api/sdk/index.md | 141 - .../api/sdk/interfaces/CustomError.md | 38 - .../api/sdk/interfaces/DuplicateEvaluation.md | 51 - .../api/sdk/interfaces/EASEvaluation.md | 51 - .../api/sdk/interfaces/HypercertClaimdata.md | 160 - .../interfaces/HypercertClientInterface.md | 476 - .../sdk/interfaces/HypercertClientMethods.md | 374 - .../sdk/interfaces/HypercertClientState.md | 51 - .../interfaces/HypercertEvaluationSchema.md | 43 - .../interfaces/HypercertIndexerInterface.md | 174 - .../api/sdk/interfaces/HypercertMetadata.md | 113 - .../api/sdk/interfaces/HypercertPointer.md | 41 - .../interfaces/HypercertStorageInterface.md | 130 - .../api/sdk/interfaces/IPFSEvaluation.md | 31 - .../sdk/interfaces/SimpleTextEvaluation.md | 41 - .../api/sdk/interfaces/_category_.yml | 2 - docs/docs/developer/api/sdk/modules.md | 1630 --- docs/docs/developer/burning.md | 12 - docs/docs/developer/config.md | 96 - docs/docs/developer/errors.md | 20 - docs/docs/developer/index.md | 49 - docs/docs/developer/minting.md | 57 - docs/docs/developer/querying.md | 273 - docs/docs/developer/quickstart-javascript.md | 93 - docs/docs/developer/quickstart-solidity.md | 41 - docs/docs/developer/split-merge.md | 15 - docs/docs/developer/supported-networks.md | 14 - docs/docs/devops/deploy-proxy.md | 138 - docs/docs/devops/errors.md | 45 - docs/docs/devops/index.md | 18 - docs/docs/devops/pause.md | 29 - docs/docs/devops/plasmic.md | 76 - docs/docs/devops/setup.md | 41 - docs/docs/devops/upgrade.md | 35 - docs/docs/faq.md | 138 - docs/docs/further-resources.md | 37 - docs/docs/implementation/glossary.md | 139 - docs/docs/implementation/metadata.md | 190 - docs/docs/implementation/token-standard.md | 29 - docs/docs/intro.md | 58 - docs/docs/minting-guide/gitcoin-round.md | 166 - .../docs/minting-guide/minting-guide-start.md | 43 - docs/docs/minting-guide/step-by-step.md | 130 - docs/docs/whitepaper/evaluation.md | 22 - docs/docs/whitepaper/hypercerts-intro.md | 91 - docs/docs/whitepaper/ifs.md | 98 - docs/docs/whitepaper/impact-space.md | 33 - docs/docs/whitepaper/retrospective-funding.md | 41 - docs/docs/whitepaper/whitepaper-intro.md | 24 - docs/docusaurus.config.js | 148 - docs/package.json | 56 - docs/sidebars.js | 180 - docs/src/components/homepage/homeNavBoxes.js | 96 - .../homepage/homeNavBoxes.module.css | 121 - docs/src/css/custom.css | 44 - docs/src/pages/index.js | 36 - docs/src/pages/index.module.css | 25 - docs/src/pages/video.module.css | 17 - docs/static/.nojekyll | 0 docs/static/img/creating.png | Bin 6616 -> 0 bytes docs/static/img/docusaurus.png | Bin 5142 -> 0 bytes docs/static/img/favicon.ico | Bin 15086 -> 0 bytes docs/static/img/hypercert_data_layer.png | Bin 140253 -> 0 bytes docs/static/img/hypercert_evaluations.png | Bin 34662 -> 0 bytes docs/static/img/hypercert_example.png | Bin 166342 -> 0 bytes docs/static/img/hypercert_id.png | Bin 19982 -> 0 bytes docs/static/img/hypercert_tech_report.png | Bin 130584 -> 0 bytes docs/static/img/icons/beige.svg | 3 - docs/static/img/icons/github-mark.png | Bin 6393 -> 0 bytes docs/static/img/icons/green.svg | 3 - .../img/icons/hypercerts_logo_beige.png | Bin 26553 -> 0 bytes .../img/icons/hypercerts_logo_green.png | Bin 26071 -> 0 bytes docs/static/img/icons/hypercerts_logo_red.png | Bin 26477 -> 0 bytes .../img/icons/hypercerts_logo_yellow.png | Bin 27098 -> 0 bytes docs/static/img/icons/red.svg | 3 - docs/static/img/icons/yellow.svg | 3 - docs/static/img/increasing_rewards.png | Bin 9721 -> 0 bytes docs/static/img/logo.svg | 1 - docs/static/img/merging.png | Bin 7467 -> 0 bytes docs/static/img/retrospective_funding.png | Bin 22631 -> 0 bytes docs/static/img/splitting.png | Bin 11673 -> 0 bytes .../static/img/undraw_docusaurus_mountain.svg | 171 - docs/static/img/undraw_docusaurus_react.svg | 170 - docs/static/img/undraw_docusaurus_tree.svg | 40 - .../pdf/hypercerts_Tech_Report_draft.pdf | Bin 209344 -> 0 bytes .../pdf/hypercerts_slides_FtC202203.pdf | Bin 599063 -> 0 bytes .../pdf/hypercerts_slides_FtC202206.pdf | Bin 669137 -> 0 bytes docs/static/pdf/hypercerts_whitepaper_v0.pdf | Bin 858405 -> 0 bytes docs/tsconfig.json | 7 - nohup.out | 266 - pnpm-workspace.yaml | 4 - sdk/.env.template | 10 - sdk/.eslintignore | 15 - sdk/.eslintrc.yml | 26 - sdk/.gitignore | 21 - sdk/.prettierignore | 28 - sdk/.prettierrc.yml | 20 - sdk/README.md | 101 - sdk/RELEASE.md | 202 - sdk/lib/hypercerts-api | 1 - sdk/migrationV1_V2.md | 54 - sdk/package.json | 71 - sdk/rollup.config.mjs | 37 - sdk/src/__generated__/api.ts | 455 - sdk/src/client.ts | 663 -- sdk/src/constants.ts | 51 - sdk/src/index.ts | 60 - sdk/src/resources/schema/claimdata.json | 135 - sdk/src/resources/schema/evaluation.json | 132 - sdk/src/resources/schema/metadata.json | 55 - sdk/src/storage.ts | 64 - sdk/src/types/claimdata.d.ts | 70 - sdk/src/types/client.ts | 349 - sdk/src/types/errors.ts | 203 - sdk/src/types/evaluation.d.ts | 50 - sdk/src/types/hypercerts.ts | 18 - sdk/src/types/index.ts | 5 - sdk/src/types/metadata.d.ts | 109 - sdk/src/types/storage.ts | 22 - sdk/src/utils/allowlist.ts | 68 - sdk/src/utils/chains.ts | 9 - sdk/src/utils/config.ts | 189 - sdk/src/utils/errors.ts | 76 - sdk/src/utils/fetchers.ts | 100 - sdk/src/utils/formatter.ts | 129 - sdk/src/utils/index.ts | 19 - sdk/src/utils/logger.ts | 52 - sdk/src/utils/parsing.ts | 37 - sdk/src/utils/txParser.ts | 101 - sdk/src/validator/index.ts | 171 - sdk/test/client.test.ts | 150 - sdk/test/client/allowlist.minting.test.ts | 340 - sdk/test/client/burn.test.ts | 106 - sdk/test/client/minting.test.ts | 143 - sdk/test/client/split.merge.test.ts | 230 - sdk/test/helpers.ts | 220 - sdk/test/res/mockData.ts | 8 - sdk/test/res/mockMetadata.ts | 67 - sdk/test/resources/HypercertMinter.json | 1139 -- sdk/test/setup-env.ts | 16 - sdk/test/storage.test.ts | 22 - sdk/test/storage/storeAllowList.test.ts | 54 - sdk/test/storage/storeMetadata.test.ts | 40 - sdk/test/types/errors.test.ts | 79 - sdk/test/utils/allowlist.test.ts | 52 - sdk/test/utils/config.test.ts | 66 - sdk/test/utils/errors.test.ts | 94 - sdk/test/utils/fetchers.test.ts | 41 - sdk/test/utils/formatter.test.ts | 86 - sdk/test/utils/logger.test.ts | 168 - sdk/test/validator.test.ts | 30 - sdk/tsconfig.json | 26 - sdk/vitest.config.mts | 9 - sdk/vitest.config.ts | 8 - turbo.json | 26 - 233 files changed, 9284 insertions(+), 26501 deletions(-) create mode 100644 contracts/pnpm-lock.yaml create mode 100644 contracts/src/deployments/deployment-marketplace-arbitrumOne.json delete mode 100644 docs/.eslintrc.yml delete mode 100644 docs/.gitignore delete mode 100644 docs/README.md delete mode 100644 docs/babel.config.ts delete mode 100644 docs/docs/about.md delete mode 100644 docs/docs/announcements/2024_01_16_An_Impactful_Year.md delete mode 100644 docs/docs/developer/allowlists.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/BatchOrderTypehashRegistry.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/CreatorFeeManagerWithRebates.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/CreatorFeeManagerWithRoyalties.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/CurrencyManager.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/ExecutionManager.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/InheritedStrategy.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/LooksRareProtocol.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/NonceManager.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/ProtocolFeeRecipient.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/StrategyManager.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/TransferManager.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/TransferSelectorNFT.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/executionStrategies/BaseStrategy.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/executionStrategies/Chainlink/BaseStrategyChainlinkPriceLatency.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/executionStrategies/Chainlink/StrategyChainlinkUSDDynamicAsk.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyCollectionOffer.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyDutchAuction.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyHypercertCollectionOffer.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyHypercertDutchAuction.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyHypercertFractionOffer.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyItemIdsRange.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/helpers/OrderValidatorV2A.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/helpers/ProtocolHelpers.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/interfaces/ICreatorFeeManager.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/interfaces/ICurrencyManager.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/interfaces/IExecutionManager.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/interfaces/IHypercert1155Token.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/interfaces/IImmutableCreate2Factory.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/interfaces/ILooksRareProtocol.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/interfaces/INonceManager.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/interfaces/IRoyaltyFeeRegistry.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/interfaces/IStrategy.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/interfaces/IStrategyManager.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/interfaces/ITransferManager.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/libraries/CurrencyValidator.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/libraries/LowLevelHypercertCaller.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/libraries/OpenZeppelin/MerkleProofCalldataWithNodes.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/libraries/OpenZeppelin/MerkleProofMemory.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/libraries/OrderStructs.md delete mode 100644 docs/docs/developer/api/contracts/marketplace/libraries/RoyaltyFeeRegistry.md delete mode 100644 docs/docs/developer/api/contracts/protocol/AllowlistMinter.md delete mode 100644 docs/docs/developer/api/contracts/protocol/HypercertMinter.md delete mode 100644 docs/docs/developer/api/contracts/protocol/SemiFungible1155.md delete mode 100644 docs/docs/developer/api/contracts/protocol/interfaces/IAllowlist.md delete mode 100644 docs/docs/developer/api/contracts/protocol/interfaces/IHypercertToken.md delete mode 100644 docs/docs/developer/api/contracts/protocol/libs/Errors.md delete mode 100644 docs/docs/developer/api/index.md delete mode 100644 docs/docs/developer/api/sdk/_category_.yml delete mode 100644 docs/docs/developer/api/sdk/classes/ClientError.md delete mode 100644 docs/docs/developer/api/sdk/classes/ConfigurationError.md delete mode 100644 docs/docs/developer/api/sdk/classes/ContractError.md delete mode 100644 docs/docs/developer/api/sdk/classes/FetchError.md delete mode 100644 docs/docs/developer/api/sdk/classes/HypercertClient.md delete mode 100644 docs/docs/developer/api/sdk/classes/HypercertsStorage.md delete mode 100644 docs/docs/developer/api/sdk/classes/InvalidOrMissingError.md delete mode 100644 docs/docs/developer/api/sdk/classes/MalformedDataError.md delete mode 100644 docs/docs/developer/api/sdk/classes/MintingError.md delete mode 100644 docs/docs/developer/api/sdk/classes/StorageError.md delete mode 100644 docs/docs/developer/api/sdk/classes/UnknownSchemaError.md delete mode 100644 docs/docs/developer/api/sdk/classes/UnsupportedChainError.md delete mode 100644 docs/docs/developer/api/sdk/classes/_category_.yml delete mode 100644 docs/docs/developer/api/sdk/index.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/CustomError.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/DuplicateEvaluation.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/EASEvaluation.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/HypercertClaimdata.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/HypercertClientInterface.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/HypercertClientMethods.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/HypercertClientState.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/HypercertEvaluationSchema.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/HypercertIndexerInterface.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/HypercertMetadata.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/HypercertPointer.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/HypercertStorageInterface.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/IPFSEvaluation.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/SimpleTextEvaluation.md delete mode 100644 docs/docs/developer/api/sdk/interfaces/_category_.yml delete mode 100644 docs/docs/developer/api/sdk/modules.md delete mode 100644 docs/docs/developer/burning.md delete mode 100644 docs/docs/developer/config.md delete mode 100644 docs/docs/developer/errors.md delete mode 100644 docs/docs/developer/index.md delete mode 100644 docs/docs/developer/minting.md delete mode 100644 docs/docs/developer/querying.md delete mode 100644 docs/docs/developer/quickstart-javascript.md delete mode 100644 docs/docs/developer/quickstart-solidity.md delete mode 100644 docs/docs/developer/split-merge.md delete mode 100644 docs/docs/developer/supported-networks.md delete mode 100644 docs/docs/devops/deploy-proxy.md delete mode 100644 docs/docs/devops/errors.md delete mode 100644 docs/docs/devops/index.md delete mode 100644 docs/docs/devops/pause.md delete mode 100644 docs/docs/devops/plasmic.md delete mode 100644 docs/docs/devops/setup.md delete mode 100644 docs/docs/devops/upgrade.md delete mode 100644 docs/docs/faq.md delete mode 100644 docs/docs/further-resources.md delete mode 100644 docs/docs/implementation/glossary.md delete mode 100644 docs/docs/implementation/metadata.md delete mode 100644 docs/docs/implementation/token-standard.md delete mode 100644 docs/docs/intro.md delete mode 100644 docs/docs/minting-guide/gitcoin-round.md delete mode 100644 docs/docs/minting-guide/minting-guide-start.md delete mode 100644 docs/docs/minting-guide/step-by-step.md delete mode 100644 docs/docs/whitepaper/evaluation.md delete mode 100644 docs/docs/whitepaper/hypercerts-intro.md delete mode 100644 docs/docs/whitepaper/ifs.md delete mode 100644 docs/docs/whitepaper/impact-space.md delete mode 100644 docs/docs/whitepaper/retrospective-funding.md delete mode 100644 docs/docs/whitepaper/whitepaper-intro.md delete mode 100644 docs/docusaurus.config.js delete mode 100644 docs/package.json delete mode 100644 docs/sidebars.js delete mode 100644 docs/src/components/homepage/homeNavBoxes.js delete mode 100644 docs/src/components/homepage/homeNavBoxes.module.css delete mode 100644 docs/src/css/custom.css delete mode 100644 docs/src/pages/index.js delete mode 100644 docs/src/pages/index.module.css delete mode 100644 docs/src/pages/video.module.css delete mode 100644 docs/static/.nojekyll delete mode 100644 docs/static/img/creating.png delete mode 100644 docs/static/img/docusaurus.png delete mode 100644 docs/static/img/favicon.ico delete mode 100644 docs/static/img/hypercert_data_layer.png delete mode 100644 docs/static/img/hypercert_evaluations.png delete mode 100644 docs/static/img/hypercert_example.png delete mode 100644 docs/static/img/hypercert_id.png delete mode 100644 docs/static/img/hypercert_tech_report.png delete mode 100644 docs/static/img/icons/beige.svg delete mode 100644 docs/static/img/icons/github-mark.png delete mode 100644 docs/static/img/icons/green.svg delete mode 100644 docs/static/img/icons/hypercerts_logo_beige.png delete mode 100644 docs/static/img/icons/hypercerts_logo_green.png delete mode 100644 docs/static/img/icons/hypercerts_logo_red.png delete mode 100644 docs/static/img/icons/hypercerts_logo_yellow.png delete mode 100644 docs/static/img/icons/red.svg delete mode 100644 docs/static/img/icons/yellow.svg delete mode 100644 docs/static/img/increasing_rewards.png delete mode 100644 docs/static/img/logo.svg delete mode 100644 docs/static/img/merging.png delete mode 100644 docs/static/img/retrospective_funding.png delete mode 100644 docs/static/img/splitting.png delete mode 100644 docs/static/img/undraw_docusaurus_mountain.svg delete mode 100644 docs/static/img/undraw_docusaurus_react.svg delete mode 100644 docs/static/img/undraw_docusaurus_tree.svg delete mode 100644 docs/static/pdf/hypercerts_Tech_Report_draft.pdf delete mode 100644 docs/static/pdf/hypercerts_slides_FtC202203.pdf delete mode 100644 docs/static/pdf/hypercerts_slides_FtC202206.pdf delete mode 100644 docs/static/pdf/hypercerts_whitepaper_v0.pdf delete mode 100644 docs/tsconfig.json delete mode 100644 nohup.out delete mode 100644 pnpm-workspace.yaml delete mode 100644 sdk/.env.template delete mode 100644 sdk/.eslintignore delete mode 100644 sdk/.eslintrc.yml delete mode 100644 sdk/.gitignore delete mode 100644 sdk/.prettierignore delete mode 100644 sdk/.prettierrc.yml delete mode 100644 sdk/README.md delete mode 100644 sdk/RELEASE.md delete mode 160000 sdk/lib/hypercerts-api delete mode 100644 sdk/migrationV1_V2.md delete mode 100644 sdk/package.json delete mode 100644 sdk/rollup.config.mjs delete mode 100644 sdk/src/__generated__/api.ts delete mode 100644 sdk/src/client.ts delete mode 100644 sdk/src/constants.ts delete mode 100644 sdk/src/index.ts delete mode 100644 sdk/src/resources/schema/claimdata.json delete mode 100644 sdk/src/resources/schema/evaluation.json delete mode 100644 sdk/src/resources/schema/metadata.json delete mode 100644 sdk/src/storage.ts delete mode 100644 sdk/src/types/claimdata.d.ts delete mode 100644 sdk/src/types/client.ts delete mode 100644 sdk/src/types/errors.ts delete mode 100644 sdk/src/types/evaluation.d.ts delete mode 100644 sdk/src/types/hypercerts.ts delete mode 100644 sdk/src/types/index.ts delete mode 100644 sdk/src/types/metadata.d.ts delete mode 100644 sdk/src/types/storage.ts delete mode 100644 sdk/src/utils/allowlist.ts delete mode 100644 sdk/src/utils/chains.ts delete mode 100644 sdk/src/utils/config.ts delete mode 100644 sdk/src/utils/errors.ts delete mode 100644 sdk/src/utils/fetchers.ts delete mode 100644 sdk/src/utils/formatter.ts delete mode 100644 sdk/src/utils/index.ts delete mode 100644 sdk/src/utils/logger.ts delete mode 100644 sdk/src/utils/parsing.ts delete mode 100644 sdk/src/utils/txParser.ts delete mode 100644 sdk/src/validator/index.ts delete mode 100644 sdk/test/client.test.ts delete mode 100644 sdk/test/client/allowlist.minting.test.ts delete mode 100644 sdk/test/client/burn.test.ts delete mode 100644 sdk/test/client/minting.test.ts delete mode 100644 sdk/test/client/split.merge.test.ts delete mode 100644 sdk/test/helpers.ts delete mode 100644 sdk/test/res/mockData.ts delete mode 100644 sdk/test/res/mockMetadata.ts delete mode 100644 sdk/test/resources/HypercertMinter.json delete mode 100644 sdk/test/setup-env.ts delete mode 100644 sdk/test/storage.test.ts delete mode 100644 sdk/test/storage/storeAllowList.test.ts delete mode 100644 sdk/test/storage/storeMetadata.test.ts delete mode 100644 sdk/test/types/errors.test.ts delete mode 100644 sdk/test/utils/allowlist.test.ts delete mode 100644 sdk/test/utils/config.test.ts delete mode 100644 sdk/test/utils/errors.test.ts delete mode 100644 sdk/test/utils/fetchers.test.ts delete mode 100644 sdk/test/utils/formatter.test.ts delete mode 100644 sdk/test/utils/logger.test.ts delete mode 100644 sdk/test/validator.test.ts delete mode 100644 sdk/tsconfig.json delete mode 100644 sdk/vitest.config.mts delete mode 100644 sdk/vitest.config.ts delete mode 100644 turbo.json diff --git a/.github/workflows/ci-default.yml b/.github/workflows/ci-default.yml index d51e1f94..37fab326 100644 --- a/.github/workflows/ci-default.yml +++ b/.github/workflows/ci-default.yml @@ -1,21 +1,8 @@ # NOTE: This name appears in GitHub's Checks API and in workflow's status badge. name: ci-default env: - TURBO_TEAM: ${{ secrets.TURBO_TEAM }} - TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} - NEXT_PUBLIC_DOMAIN: ${{ vars.NEXT_PUBLIC_DOMAIN }} - NEXT_PUBLIC_DEFAULT_CHAIN_ID: ${{ vars.NEXT_PUBLIC_DEFAULT_CHAIN_ID }} - NEXT_PUBLIC_CONTRACT_ADDRESS: ${{ vars.NEXT_PUBLIC_CONTRACT_ADDRESS }} - NEXT_PUBLIC_GRAPH_URL: ${{ vars.NEXT_PUBLIC_GRAPH_URL }} - NEXT_PUBLIC_NFT_STORAGE_TOKEN: ${{ secrets.NEXT_PUBLIC_NFT_STORAGE_TOKEN }} - NEXT_PUBLIC_WEB3_STORAGE_TOKEN: ${{ secrets.NEXT_PUBLIC_NFT_STORAGE_TOKEN }} - NEXT_PUBLIC_SUPABASE_URL: ${{ vars.NEXT_PUBLIC_SUPABASE_URL }} - NEXT_PUBLIC_SUPABASE_ANON_KEY: ${{ secrets.NEXT_PUBLIC_SUPABASE_ANON_KEY }} - NEXT_PUBLIC_SUPABASE_TABLE: ${{ vars.NEXT_PUBLIC_SUPABASE_TABLE }} - NEXT_PUBLIC_WALLETCONNECT_ID: ${{ secrets.NEXT_PUBLIC_WALLETCONNECT_ID }} INFURA_API_KEY: ${{ secrets.INFURA_API_KEY }} ALCHEMY_API_KEY: ${{ secrets.ALCHEMY_API_KEY }} - DOCKER_PLATFORM: "amd64" # Trigger the workflow when: on: @@ -46,14 +33,9 @@ jobs: # Fetch all history so gitlint can check the relevant commits. fetch-depth: "0" - run: corepack enable - - name: Set up Python 3 - uses: actions/setup-python@v4 - with: - python-version: "3.x" - name: Set up Node.js 18 uses: actions/setup-node@v4 with: - node-version: "18.18.1" cache: "pnpm" - name: Install Foundry diff --git a/.gitmodules b/.gitmodules index ff9eea93..e69de29b 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +0,0 @@ -[submodule "sdk/lib/hypercerts-api"] - path = sdk/lib/hypercerts-api - url = https://github.com/hypercerts-org/hypercerts-api diff --git a/contracts/hardhat.config.cts b/contracts/hardhat.config.cts index 21b49131..1a8789a8 100644 --- a/contracts/hardhat.config.cts +++ b/contracts/hardhat.config.cts @@ -114,7 +114,7 @@ function getChainConfig(chain: keyof typeof chainIds) { config = { ...config, url: `https://arb-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}`, - // url: "https://virtual.arbitrum.rpc.tenderly.co/982c9fbc-4ae9-4eb6-9346-daca23fd603f", + // url: "https://virtual.arbitrum.rpc.tenderly.co/143c1212-e69c-4f74-bd24-8676c965c44c", }; } @@ -154,7 +154,7 @@ const config: HardhatUserConfig = { except: ["@openzeppelin"], }, dodoc: { - runOnCompile: true, + runOnCompile: false, include: ["src/marketplace", "src/protocol"], freshOutput: true, outputDir: "../docs/docs/developer/api/contracts", @@ -167,7 +167,7 @@ const config: HardhatUserConfig = { base: BASESCAN_API_KEY!, "base-sepolia": BASESCAN_API_KEY!, "arb-sepolia": ARBISCAN_API_KEY!, - arbitrumOne: ARBISCAN_API_KEY!, + arbitrumOne: "DPB1JAY49URG4RJP76WQ11CMGPBF2FX3C5", }, customChains: [ { @@ -221,7 +221,7 @@ const config: HardhatUserConfig = { "base-sepolia": getChainConfig("base-sepolia"), "base-mainnet": getChainConfig("base-mainnet"), "arb-sepolia": getChainConfig("arb-sepolia"), - "arbitrumOne": getChainConfig("arbitrumOne"), + arbitrumOne: getChainConfig("arbitrumOne"), }, paths: { cache: "./cache_hardhat", // Use a different cache for Hardhat than Foundry diff --git a/contracts/package.json b/contracts/package.json index 632a4c88..9c1fec00 100644 --- a/contracts/package.json +++ b/contracts/package.json @@ -1,7 +1,7 @@ { "name": "@hypercerts-org/contracts", "description": "EVM compatible protocol for managing impact claims", - "version": "2.0.0-alpha.8", + "version": "2.0.0-alpha.9", "author": { "name": "Hypercerts Foundation", "url": "https://github.com/hypercerts-org/hypercerts" diff --git a/contracts/pnpm-lock.yaml b/contracts/pnpm-lock.yaml new file mode 100644 index 00000000..bd8e555a --- /dev/null +++ b/contracts/pnpm-lock.yaml @@ -0,0 +1,9209 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@tenderly/hardhat-tenderly': + specifier: ^2.3.0 + version: 2.3.0(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@swc/core@1.7.26)(@types/node@18.19.50)(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + hardhat: + specifier: ^2.22.8 + version: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + devDependencies: + '@chainlink/contracts': + specifier: ^0.8.0 + version: 0.8.0(ethers@6.13.2) + '@commitlint/cli': + specifier: ^17.1.2 + version: 17.8.1(@swc/core@1.7.26) + '@commitlint/config-conventional': + specifier: ^17.1.0 + version: 17.8.1 + '@looksrare/contracts-libs': + specifier: ^3.4.0 + version: 3.5.1 + '@nomicfoundation/hardhat-ethers': + specifier: ^3.0.6 + version: 3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@nomicfoundation/hardhat-toolbox': + specifier: ^5.0.0 + version: 5.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.7(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(chai@4.5.0)(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-ignition-ethers@0.15.5(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-ignition@0.15.5(@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/ignition-core@0.15.5)(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-network-helpers@1.0.11(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@typechain/ethers-v6@0.5.1(ethers@6.13.2)(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1(ethers@6.13.2)(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))(typechain@8.3.2(typescript@5.6.2)))(@types/chai@4.3.19)(@types/mocha@10.0.7)(@types/node@18.19.50)(chai@4.5.0)(ethers@6.13.2)(hardhat-gas-reporter@1.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))(solidity-coverage@0.8.13(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2) + '@nomicfoundation/hardhat-viem': + specifier: ^2.0.2 + version: 2.0.4(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))(typescript@5.6.2)(viem@2.21.5(typescript@5.6.2)) + '@openzeppelin/contracts': + specifier: ^4.9.3 + version: 4.9.6 + '@openzeppelin/hardhat-upgrades': + specifier: 3.2.1 + version: 3.2.1(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@primitivefi/hardhat-dodoc': + specifier: ^0.2.3 + version: 0.2.3(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))(squirrelly@8.0.8) + '@rollup/plugin-commonjs': + specifier: ^24.0.1 + version: 24.1.0(rollup@4.21.2) + '@rollup/plugin-json': + specifier: ^6.0.0 + version: 6.1.0(rollup@4.21.2) + '@rollup/plugin-node-resolve': + specifier: ^15.0.1 + version: 15.2.3(rollup@4.21.2) + '@trivago/prettier-plugin-sort-imports': + specifier: ^3.3.0 + version: 3.4.0(prettier@2.8.8) + '@typechain/hardhat': + specifier: ^9.1.0 + version: 9.1.0(@typechain/ethers-v6@0.5.1(ethers@6.13.2)(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))(typechain@8.3.2(typescript@5.6.2)) + '@types/node': + specifier: ^18.18.1 + version: 18.19.50 + '@typescript-eslint/eslint-plugin': + specifier: ^7.12.0 + version: 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2) + '@typescript-eslint/parser': + specifier: ^7.12.0 + version: 7.18.0(eslint@8.57.0)(typescript@5.6.2) + chai: + specifier: ^4.3.7 + version: 4.5.0 + commitizen: + specifier: ^4.2.5 + version: 4.3.0(@types/node@18.19.50)(typescript@5.6.2) + cross-env: + specifier: ^7.0.3 + version: 7.0.3 + cz-conventional-changelog: + specifier: ^3.3.0 + version: 3.3.0(@types/node@18.19.50)(typescript@5.6.2) + dotenv: + specifier: ^16.0.2 + version: 16.4.5 + eslint: + specifier: ^8.23.1 + version: 8.57.0 + eslint-config-prettier: + specifier: ^8.5.0 + version: 8.10.0(eslint@8.57.0) + ethers: + specifier: ^6.8.0 + version: 6.13.2 + hardhat-abi-exporter: + specifier: ^2.10.1 + version: 2.10.1(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + hardhat-preprocessor: + specifier: ^0.1.5 + version: 0.1.5(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + husky: + specifier: ^8.0.1 + version: 8.0.3 + lint-staged: + specifier: ^13.0.3 + version: 13.3.0(enquirer@2.4.1) + prettier: + specifier: ^2.8.8 + version: 2.8.8 + prettier-plugin-solidity: + specifier: ^1.1.3 + version: 1.4.1(prettier@2.8.8) + rimraf: + specifier: ^5.0.5 + version: 5.0.10 + rollup: + specifier: ^4.0.2 + version: 4.21.2 + rollup-plugin-auto-external: + specifier: ^2.0.0 + version: 2.0.0(rollup@4.21.2) + rollup-plugin-dts: + specifier: ^6.1.1 + version: 6.1.1(rollup@4.21.2)(typescript@5.6.2) + rollup-plugin-esbuild: + specifier: ^6.1.0 + version: 6.1.1(esbuild@0.23.1)(rollup@4.21.2) + rollup-plugin-node-polyfills: + specifier: ^0.2.1 + version: 0.2.1 + rollup-plugin-swc3: + specifier: ^0.11.2 + version: 0.11.2(@swc/core@1.7.26)(rollup@4.21.2) + shx: + specifier: ^0.3.4 + version: 0.3.4 + solhint: + specifier: ^3.6.2 + version: 3.6.2(typescript@5.6.2) + solhint-plugin-prettier: + specifier: ^0.0.5 + version: 0.0.5(prettier-plugin-solidity@1.4.1(prettier@2.8.8))(prettier@2.8.8) + solmate: + specifier: ^6.2.0 + version: 6.2.0 + ts-node: + specifier: ^10.9.1 + version: 10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2) + typechain: + specifier: ^8.3.2 + version: 8.3.2(typescript@5.6.2) + typescript: + specifier: ^5.5.3 + version: 5.6.2 + viem: + specifier: ^2.19.7 + version: 2.21.5(typescript@5.6.2) + xdeployer: + specifier: ^2.1.13 + version: 2.2.2(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + +packages: + + '@adraffy/ens-normalize@1.10.0': + resolution: {integrity: sha512-nA9XHtlAkYfJxY7bce8DcN7eKxWWCWkU+1GR9d+U6MbNpfwQp8TI7vqOsBsMcHoT4mBu2kypKoSKnghEzOOq5Q==} + + '@adraffy/ens-normalize@1.10.1': + resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + + '@ampproject/remapping@2.3.0': + resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} + engines: {node: '>=6.0.0'} + + '@aws-crypto/sha256-js@1.2.2': + resolution: {integrity: sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==} + + '@aws-crypto/util@1.2.2': + resolution: {integrity: sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==} + + '@aws-sdk/types@3.649.0': + resolution: {integrity: sha512-PuPw8RysbhJNlaD2d/PzOTf8sbf4Dsn2b7hwyGh7YVG3S75yTpxSAZxrnhKsz9fStgqFmnw/jUfV/G+uQAeTVw==} + engines: {node: '>=16.0.0'} + + '@aws-sdk/util-utf8-browser@3.259.0': + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + + '@babel/code-frame@7.24.7': + resolution: {integrity: sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.25.4': + resolution: {integrity: sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.17.8': + resolution: {integrity: sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.17.7': + resolution: {integrity: sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.25.6': + resolution: {integrity: sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.25.2': + resolution: {integrity: sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-environment-visitor@7.24.7': + resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-function-name@7.24.7': + resolution: {integrity: sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-hoist-variables@7.24.7': + resolution: {integrity: sha512-MJJwhkoGy5c4ehfoRyrJ/owKeMl19U54h27YYftT0o2teQ3FJ3nQUf/I3LlJsX4l3qlw7WRXUmiyajvHXoTubQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.24.7': + resolution: {integrity: sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.25.2': + resolution: {integrity: sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-simple-access@7.24.7': + resolution: {integrity: sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-split-export-declaration@7.24.7': + resolution: {integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.24.8': + resolution: {integrity: sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.24.7': + resolution: {integrity: sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.24.8': + resolution: {integrity: sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.25.6': + resolution: {integrity: sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==} + engines: {node: '>=6.9.0'} + + '@babel/highlight@7.24.7': + resolution: {integrity: sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.18.9': + resolution: {integrity: sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@7.25.6': + resolution: {integrity: sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/template@7.25.0': + resolution: {integrity: sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.17.3': + resolution: {integrity: sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.25.6': + resolution: {integrity: sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.17.0': + resolution: {integrity: sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.25.6': + resolution: {integrity: sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==} + engines: {node: '>=6.9.0'} + + '@chainlink/contracts@0.8.0': + resolution: {integrity: sha512-nUv1Uxw5Mn92wgLs2bgPYmo8hpdQ3s9jB/lcbdU0LmNOVu0hbfmouVnqwRLa28Ll50q6GczUA+eO0ikNIKLZsA==} + + '@colors/colors@1.5.0': + resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} + engines: {node: '>=0.1.90'} + + '@commitlint/cli@17.8.1': + resolution: {integrity: sha512-ay+WbzQesE0Rv4EQKfNbSMiJJ12KdKTDzIt0tcK4k11FdsWmtwP0Kp1NWMOUswfIWo6Eb7p7Ln721Nx9FLNBjg==} + engines: {node: '>=v14'} + hasBin: true + + '@commitlint/config-conventional@17.8.1': + resolution: {integrity: sha512-NxCOHx1kgneig3VLauWJcDWS40DVjg7nKOpBEEK9E5fjJpQqLCilcnKkIIjdBH98kEO1q3NpE5NSrZ2kl/QGJg==} + engines: {node: '>=v14'} + + '@commitlint/config-validator@17.8.1': + resolution: {integrity: sha512-UUgUC+sNiiMwkyiuIFR7JG2cfd9t/7MV8VB4TZ+q02ZFkHoduUS4tJGsCBWvBOGD9Btev6IecPMvlWUfJorkEA==} + engines: {node: '>=v14'} + + '@commitlint/config-validator@19.5.0': + resolution: {integrity: sha512-CHtj92H5rdhKt17RmgALhfQt95VayrUo2tSqY9g2w+laAXyk7K/Ef6uPm9tn5qSIwSmrLjKaXK9eiNuxmQrDBw==} + engines: {node: '>=v18'} + + '@commitlint/ensure@17.8.1': + resolution: {integrity: sha512-xjafwKxid8s1K23NFpL8JNo6JnY/ysetKo8kegVM7c8vs+kWLP8VrQq+NbhgVlmCojhEDbzQKp4eRXSjVOGsow==} + engines: {node: '>=v14'} + + '@commitlint/execute-rule@17.8.1': + resolution: {integrity: sha512-JHVupQeSdNI6xzA9SqMF+p/JjrHTcrJdI02PwesQIDCIGUrv04hicJgCcws5nzaoZbROapPs0s6zeVHoxpMwFQ==} + engines: {node: '>=v14'} + + '@commitlint/execute-rule@19.5.0': + resolution: {integrity: sha512-aqyGgytXhl2ejlk+/rfgtwpPexYyri4t8/n4ku6rRJoRhGZpLFMqrZ+YaubeGysCP6oz4mMA34YSTaSOKEeNrg==} + engines: {node: '>=v18'} + + '@commitlint/format@17.8.1': + resolution: {integrity: sha512-f3oMTyZ84M9ht7fb93wbCKmWxO5/kKSbwuYvS867duVomoOsgrgljkGGIztmT/srZnaiGbaK8+Wf8Ik2tSr5eg==} + engines: {node: '>=v14'} + + '@commitlint/is-ignored@17.8.1': + resolution: {integrity: sha512-UshMi4Ltb4ZlNn4F7WtSEugFDZmctzFpmbqvpyxD3la510J+PLcnyhf9chs7EryaRFJMdAKwsEKfNK0jL/QM4g==} + engines: {node: '>=v14'} + + '@commitlint/lint@17.8.1': + resolution: {integrity: sha512-aQUlwIR1/VMv2D4GXSk7PfL5hIaFSfy6hSHV94O8Y27T5q+DlDEgd/cZ4KmVI+MWKzFfCTiTuWqjfRSfdRllCA==} + engines: {node: '>=v14'} + + '@commitlint/load@17.8.1': + resolution: {integrity: sha512-iF4CL7KDFstP1kpVUkT8K2Wl17h2yx9VaR1ztTc8vzByWWcbO/WaKwxsnCOqow9tVAlzPfo1ywk9m2oJ9ucMqA==} + engines: {node: '>=v14'} + + '@commitlint/load@19.5.0': + resolution: {integrity: sha512-INOUhkL/qaKqwcTUvCE8iIUf5XHsEPCLY9looJ/ipzi7jtGhgmtH7OOFiNvwYgH7mA8osUWOUDV8t4E2HAi4xA==} + engines: {node: '>=v18'} + + '@commitlint/message@17.8.1': + resolution: {integrity: sha512-6bYL1GUQsD6bLhTH3QQty8pVFoETfFQlMn2Nzmz3AOLqRVfNNtXBaSY0dhZ0dM6A2MEq4+2d7L/2LP8TjqGRkA==} + engines: {node: '>=v14'} + + '@commitlint/parse@17.8.1': + resolution: {integrity: sha512-/wLUickTo0rNpQgWwLPavTm7WbwkZoBy3X8PpkUmlSmQJyWQTj0m6bDjiykMaDt41qcUbfeFfaCvXfiR4EGnfw==} + engines: {node: '>=v14'} + + '@commitlint/read@17.8.1': + resolution: {integrity: sha512-Fd55Oaz9irzBESPCdMd8vWWgxsW3OWR99wOntBDHgf9h7Y6OOHjWEdS9Xzen1GFndqgyoaFplQS5y7KZe0kO2w==} + engines: {node: '>=v14'} + + '@commitlint/resolve-extends@17.8.1': + resolution: {integrity: sha512-W/ryRoQ0TSVXqJrx5SGkaYuAaE/BUontL1j1HsKckvM6e5ZaG0M9126zcwL6peKSuIetJi7E87PRQF8O86EW0Q==} + engines: {node: '>=v14'} + + '@commitlint/resolve-extends@19.5.0': + resolution: {integrity: sha512-CU/GscZhCUsJwcKTJS9Ndh3AKGZTNFIOoQB2n8CmFnizE0VnEuJoum+COW+C1lNABEeqk6ssfc1Kkalm4bDklA==} + engines: {node: '>=v18'} + + '@commitlint/rules@17.8.1': + resolution: {integrity: sha512-2b7OdVbN7MTAt9U0vKOYKCDsOvESVXxQmrvuVUZ0rGFMCrCPJWWP1GJ7f0lAypbDAhaGb8zqtdOr47192LBrIA==} + engines: {node: '>=v14'} + + '@commitlint/to-lines@17.8.1': + resolution: {integrity: sha512-LE0jb8CuR/mj6xJyrIk8VLz03OEzXFgLdivBytoooKO5xLt5yalc8Ma5guTWobw998sbR3ogDd+2jed03CFmJA==} + engines: {node: '>=v14'} + + '@commitlint/top-level@17.8.1': + resolution: {integrity: sha512-l6+Z6rrNf5p333SHfEte6r+WkOxGlWK4bLuZKbtf/2TXRN+qhrvn1XE63VhD8Oe9oIHQ7F7W1nG2k/TJFhx2yA==} + engines: {node: '>=v14'} + + '@commitlint/types@17.8.1': + resolution: {integrity: sha512-PXDQXkAmiMEG162Bqdh9ChML/GJZo6vU+7F03ALKDK8zYc6SuAr47LjG7hGYRqUOz+WK0dU7bQ0xzuqFMdxzeQ==} + engines: {node: '>=v14'} + + '@commitlint/types@19.5.0': + resolution: {integrity: sha512-DSHae2obMSMkAtTBSOulg5X7/z+rGLxcXQIkg3OmWvY6wifojge5uVMydfhUvs7yQj+V7jNmRZ2Xzl8GJyqRgg==} + engines: {node: '>=v18'} + + '@cspotcode/source-map-support@0.8.1': + resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} + engines: {node: '>=12'} + + '@esbuild/aix-ppc64@0.23.1': + resolution: {integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.23.1': + resolution: {integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.23.1': + resolution: {integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.23.1': + resolution: {integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.23.1': + resolution: {integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.23.1': + resolution: {integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.23.1': + resolution: {integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.23.1': + resolution: {integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.23.1': + resolution: {integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.23.1': + resolution: {integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.23.1': + resolution: {integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.23.1': + resolution: {integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.23.1': + resolution: {integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.23.1': + resolution: {integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.23.1': + resolution: {integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.23.1': + resolution: {integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.23.1': + resolution: {integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-x64@0.23.1': + resolution: {integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.23.1': + resolution: {integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.23.1': + resolution: {integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/sunos-x64@0.23.1': + resolution: {integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.23.1': + resolution: {integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.23.1': + resolution: {integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.23.1': + resolution: {integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.4.0': + resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.11.0': + resolution: {integrity: sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/eslintrc@2.1.4': + resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eslint/js@8.57.0': + resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + '@eth-optimism/contracts@0.5.40': + resolution: {integrity: sha512-MrzV0nvsymfO/fursTB7m/KunkPsCndltVgfdHaT1Aj5Vi6R/doKIGGkOofHX+8B6VMZpuZosKCMQ5lQuqjt8w==} + peerDependencies: + ethers: ^5 + + '@eth-optimism/core-utils@0.12.0': + resolution: {integrity: sha512-qW+7LZYCz7i8dRa7SRlUKIo1VBU8lvN0HeXCxJR+z+xtMzMQpPds20XJNCMclszxYQHkXY00fOT6GvFw9ZL6nw==} + + '@ethereumjs/rlp@4.0.1': + resolution: {integrity: sha512-tqsQiBQDQdmPWE1xkkBq4rlSW5QZpLOUJ5RJh2/9fug+q9tnUhuZoVLk7s0scUIKTOzEtR72DFBXI4WiZcMpvw==} + engines: {node: '>=14'} + hasBin: true + + '@ethereumjs/util@8.1.0': + resolution: {integrity: sha512-zQ0IqbdX8FZ9aw11vP+dZkKDkS+kgIvQPHnSAXzP9pLu+Rfu3D3XEeLbicvoXJTYnhZiPmsZUxgdzXwNKxRPbA==} + engines: {node: '>=14'} + + '@ethersproject/abi@5.7.0': + resolution: {integrity: sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==} + + '@ethersproject/abstract-provider@5.7.0': + resolution: {integrity: sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==} + + '@ethersproject/abstract-signer@5.7.0': + resolution: {integrity: sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==} + + '@ethersproject/address@5.6.1': + resolution: {integrity: sha512-uOgF0kS5MJv9ZvCz7x6T2EXJSzotiybApn4XlOgoTX0xdtyVIJ7pF+6cGPxiEq/dpBiTfMiw7Yc81JcwhSYA0Q==} + + '@ethersproject/address@5.7.0': + resolution: {integrity: sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==} + + '@ethersproject/base64@5.7.0': + resolution: {integrity: sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==} + + '@ethersproject/basex@5.7.0': + resolution: {integrity: sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==} + + '@ethersproject/bignumber@5.7.0': + resolution: {integrity: sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==} + + '@ethersproject/bytes@5.7.0': + resolution: {integrity: sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==} + + '@ethersproject/constants@5.7.0': + resolution: {integrity: sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==} + + '@ethersproject/contracts@5.7.0': + resolution: {integrity: sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==} + + '@ethersproject/hash@5.7.0': + resolution: {integrity: sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==} + + '@ethersproject/hdnode@5.7.0': + resolution: {integrity: sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==} + + '@ethersproject/json-wallets@5.7.0': + resolution: {integrity: sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==} + + '@ethersproject/keccak256@5.7.0': + resolution: {integrity: sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==} + + '@ethersproject/logger@5.7.0': + resolution: {integrity: sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==} + + '@ethersproject/networks@5.7.1': + resolution: {integrity: sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==} + + '@ethersproject/pbkdf2@5.7.0': + resolution: {integrity: sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==} + + '@ethersproject/properties@5.7.0': + resolution: {integrity: sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==} + + '@ethersproject/providers@5.7.2': + resolution: {integrity: sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==} + + '@ethersproject/random@5.7.0': + resolution: {integrity: sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==} + + '@ethersproject/rlp@5.7.0': + resolution: {integrity: sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==} + + '@ethersproject/sha2@5.7.0': + resolution: {integrity: sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==} + + '@ethersproject/signing-key@5.7.0': + resolution: {integrity: sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==} + + '@ethersproject/solidity@5.7.0': + resolution: {integrity: sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==} + + '@ethersproject/strings@5.7.0': + resolution: {integrity: sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==} + + '@ethersproject/transactions@5.7.0': + resolution: {integrity: sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==} + + '@ethersproject/units@5.7.0': + resolution: {integrity: sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==} + + '@ethersproject/wallet@5.7.0': + resolution: {integrity: sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==} + + '@ethersproject/web@5.7.1': + resolution: {integrity: sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==} + + '@ethersproject/wordlists@5.7.0': + resolution: {integrity: sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==} + + '@fastify/busboy@2.1.1': + resolution: {integrity: sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==} + engines: {node: '>=14'} + + '@fastify/deepmerge@1.3.0': + resolution: {integrity: sha512-J8TOSBq3SoZbDhM9+R/u77hP93gz/rajSA+K2kGyijPpORPWUXHUpTaleoj+92As0S9uPRP7Oi8IqMf0u+ro6A==} + + '@humanwhocodes/config-array@0.11.14': + resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + engines: {node: '>=10.10.0'} + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/object-schema@2.0.3': + resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} + deprecated: Use @eslint/object-schema instead + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.5': + resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==} + engines: {node: '>=6.0.0'} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/set-array@1.2.1': + resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.0': + resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==} + + '@jridgewell/trace-mapping@0.3.25': + resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + + '@jridgewell/trace-mapping@0.3.9': + resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} + + '@looksrare/contracts-libs@3.5.1': + resolution: {integrity: sha512-grKSOYJS6iSwS3zrrR3v/RWUbJW+y7P0gg3GakA5A0kfQrzxK8wYpOqaOyAAOzS7/Yy9ToWnGpzYTr6YXz7olQ==} + engines: {node: '>=8.3.0'} + + '@metamask/eth-sig-util@4.0.1': + resolution: {integrity: sha512-tghyZKLHZjcdlDqCA3gNZmLeR0XvOE9U1qoQO9ohyAZT6Pya+H9vkBPcsyXytmYLNgVoin7CKCmweo/R43V+tQ==} + engines: {node: '>=12.0.0'} + + '@noble/curves@1.2.0': + resolution: {integrity: sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==} + + '@noble/curves@1.4.0': + resolution: {integrity: sha512-p+4cb332SFCrReJkCYe8Xzm0OWi4Jji5jVdIZRL/PmacmDkFNw6MrrV+gGpiPxLHbV+zKFRywUWbaseT+tZRXg==} + + '@noble/curves@1.4.2': + resolution: {integrity: sha512-TavHr8qycMChk8UwMld0ZDRvatedkzWfH8IiaeGCfymOP5i0hSCozz9vHOL0nkwk7HRMlFnAiKpS2jrUmSybcw==} + + '@noble/hashes@1.2.0': + resolution: {integrity: sha512-FZfhjEDbT5GRswV3C6uvLPHMiVD6lQBmpoX5+eSiPaMTXte/IKqI5dykDxzZB/WBeK/CDuQRBWarPdi3FNY2zQ==} + + '@noble/hashes@1.3.2': + resolution: {integrity: sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==} + engines: {node: '>= 16'} + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/hashes@1.5.0': + resolution: {integrity: sha512-1j6kQFb7QRru7eKN3ZDvRcP13rugwdxZqCjbiAVZfIJwgj2A65UmT4TgARXGlXgnRkORLTDTrO19ZErt7+QXgA==} + engines: {node: ^14.21.3 || >=16} + + '@noble/secp256k1@1.7.1': + resolution: {integrity: sha512-hOUk6AyBFmqVrv7k5WAw/LpszxVbj9gGN4JRkIX52fdFAj1UA61KXmZDvqVEm+pOyec3+fIeZB02LYa/pWOArw==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@nomicfoundation/edr-darwin-arm64@0.5.2': + resolution: {integrity: sha512-Gm4wOPKhbDjGTIRyFA2QUAPfCXA1AHxYOKt3yLSGJkQkdy9a5WW+qtqKeEKHc/+4wpJSLtsGQfpzyIzggFfo/A==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-darwin-x64@0.5.2': + resolution: {integrity: sha512-ClyABq2dFCsrYEED3/UIO0c7p4H1/4vvlswFlqUyBpOkJccr75qIYvahOSJRM62WgUFRhbSS0OJXFRwc/PwmVg==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-arm64-gnu@0.5.2': + resolution: {integrity: sha512-HWMTVk1iOabfvU2RvrKLDgtFjJZTC42CpHiw2h6rfpsgRqMahvIlx2jdjWYzFNy1jZKPTN1AStQ/91MRrg5KnA==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-arm64-musl@0.5.2': + resolution: {integrity: sha512-CwsQ10xFx/QAD5y3/g5alm9+jFVuhc7uYMhrZAu9UVF+KtVjeCvafj0PaVsZ8qyijjqVuVsJ8hD1x5ob7SMcGg==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-x64-gnu@0.5.2': + resolution: {integrity: sha512-CWVCEdhWJ3fmUpzWHCRnC0/VLBDbqtqTGTR6yyY1Ep3S3BOrHEAvt7h5gx85r2vLcztisu2vlDq51auie4IU1A==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-linux-x64-musl@0.5.2': + resolution: {integrity: sha512-+aJDfwhkddy2pP5u1ISg3IZVAm0dO836tRlDTFWtvvSMQ5hRGqPcWwlsbobhDQsIxhPJyT7phL0orCg5W3WMeA==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr-win32-x64-msvc@0.5.2': + resolution: {integrity: sha512-CcvvuA3sAv7liFNPsIR/68YlH6rrybKzYttLlMr80d4GKJjwJ5OKb3YgE6FdZZnOfP19HEHhsLcE0DPLtY3r0w==} + engines: {node: '>= 18'} + + '@nomicfoundation/edr@0.5.2': + resolution: {integrity: sha512-hW/iLvUQZNTVjFyX/I40rtKvvDOqUEyIi96T28YaLfmPL+3LW2lxmYLUXEJ6MI14HzqxDqrLyhf6IbjAa2r3Dw==} + engines: {node: '>= 18'} + + '@nomicfoundation/ethereumjs-common@4.0.4': + resolution: {integrity: sha512-9Rgb658lcWsjiicr5GzNCjI1llow/7r0k50dLL95OJ+6iZJcVbi15r3Y0xh2cIO+zgX0WIHcbzIu6FeQf9KPrg==} + + '@nomicfoundation/ethereumjs-rlp@5.0.4': + resolution: {integrity: sha512-8H1S3s8F6QueOc/X92SdrA4RDenpiAEqMg5vJH99kcQaCy/a3Q6fgseo75mgWlbanGJXSlAPtnCeG9jvfTYXlw==} + engines: {node: '>=18'} + hasBin: true + + '@nomicfoundation/ethereumjs-tx@5.0.4': + resolution: {integrity: sha512-Xjv8wAKJGMrP1f0n2PeyfFCCojHd7iS3s/Ab7qzF1S64kxZ8Z22LCMynArYsVqiFx6rzYy548HNVEyI+AYN/kw==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + + '@nomicfoundation/ethereumjs-util@9.0.4': + resolution: {integrity: sha512-sLOzjnSrlx9Bb9EFNtHzK/FJFsfg2re6bsGqinFinH1gCqVfz9YYlXiMWwDM4C/L4ywuHFCYwfKTVr/QHQcU0Q==} + engines: {node: '>=18'} + peerDependencies: + c-kzg: ^2.1.2 + peerDependenciesMeta: + c-kzg: + optional: true + + '@nomicfoundation/hardhat-chai-matchers@2.0.7': + resolution: {integrity: sha512-RQfsiTwdf0SP+DtuNYvm4921X6VirCQq0Xyh+mnuGlTwEFSPZ/o27oQC+l+3Y/l48DDU7+ZcYBR+Fp+Rp94LfQ==} + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.0 + chai: ^4.2.0 + ethers: ^6.1.0 + hardhat: ^2.9.4 + + '@nomicfoundation/hardhat-ethers@3.0.8': + resolution: {integrity: sha512-zhOZ4hdRORls31DTOqg+GmEZM0ujly8GGIuRY7t7szEk2zW/arY1qDug/py8AEktT00v5K+b6RvbVog+va51IA==} + peerDependencies: + ethers: ^6.1.0 + hardhat: ^2.0.0 + + '@nomicfoundation/hardhat-ignition-ethers@0.15.5': + resolution: {integrity: sha512-W6s1QN9CFxzSVZS6w9Jcj3WLaK32z2FP5MxNU2OKY1Fn9ZzLr+miXbUbWYuRHl6dxrrl6sE8cv33Cybv19pmCg==} + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.4 + '@nomicfoundation/hardhat-ignition': ^0.15.5 + '@nomicfoundation/ignition-core': ^0.15.5 + ethers: ^6.7.0 + hardhat: ^2.18.0 + + '@nomicfoundation/hardhat-ignition@0.15.5': + resolution: {integrity: sha512-Y5nhFXFqt4owA6Ooag8ZBFDF2RAZElMXViknVIsi3m45pbQimS50ti6FU8HxfRkDnBARa40CIn7UGV0hrelzDw==} + peerDependencies: + '@nomicfoundation/hardhat-verify': ^2.0.1 + hardhat: ^2.18.0 + + '@nomicfoundation/hardhat-network-helpers@1.0.11': + resolution: {integrity: sha512-uGPL7QSKvxrHRU69dx8jzoBvuztlLCtyFsbgfXIwIjnO3dqZRz2GNMHJoO3C3dIiUNM6jdNF4AUnoQKDscdYrA==} + peerDependencies: + hardhat: ^2.9.5 + + '@nomicfoundation/hardhat-toolbox@5.0.0': + resolution: {integrity: sha512-FnUtUC5PsakCbwiVNsqlXVIWG5JIb5CEZoSXbJUsEBun22Bivx2jhF1/q9iQbzuaGpJKFQyOhemPB2+XlEE6pQ==} + peerDependencies: + '@nomicfoundation/hardhat-chai-matchers': ^2.0.0 + '@nomicfoundation/hardhat-ethers': ^3.0.0 + '@nomicfoundation/hardhat-ignition-ethers': ^0.15.0 + '@nomicfoundation/hardhat-network-helpers': ^1.0.0 + '@nomicfoundation/hardhat-verify': ^2.0.0 + '@typechain/ethers-v6': ^0.5.0 + '@typechain/hardhat': ^9.0.0 + '@types/chai': ^4.2.0 + '@types/mocha': '>=9.1.0' + '@types/node': '>=18.0.0' + chai: ^4.2.0 + ethers: ^6.4.0 + hardhat: ^2.11.0 + hardhat-gas-reporter: ^1.0.8 + solidity-coverage: ^0.8.1 + ts-node: '>=8.0.0' + typechain: ^8.3.0 + typescript: '>=4.5.0' + + '@nomicfoundation/hardhat-verify@2.0.10': + resolution: {integrity: sha512-3zoTZGQhpeOm6piJDdsGb6euzZAd7N5Tk0zPQvGnfKQ0+AoxKz/7i4if12goi8IDTuUGElAUuZyQB8PMQoXA5g==} + peerDependencies: + hardhat: ^2.0.4 + + '@nomicfoundation/hardhat-viem@2.0.4': + resolution: {integrity: sha512-+L8bOZc7yQKkGxhEARhecrNRG2mxu4bZmNJyvKg9Teig0SOim5j8h3iFdVVx6u9Lc9DIVDDY6P1Vpb8P8tKZVQ==} + peerDependencies: + hardhat: ^2.17.0 + typescript: ~5.0.0 + viem: ^2.7.6 + + '@nomicfoundation/ignition-core@0.15.5': + resolution: {integrity: sha512-FgvuoIXhakRSP524JzNQ4BviyzBBKpsFaOWubPZ4XACLT4/7vGqlJ/7DIn0D2NL2anQ2qs98/BNBY9WccXUX1Q==} + + '@nomicfoundation/ignition-ui@0.15.5': + resolution: {integrity: sha512-ZcE4rIn10qKahR4OqS8rl8NM2Fbg2QYiBXgMgj74ZI0++LlCcZgB5HyaBbX+lsnKHjTXtjYD3b+2mtg7jFbAMQ==} + + '@nomicfoundation/slang-darwin-arm64@0.17.0': + resolution: {integrity: sha512-O0q94EUtoWy9A5kOTOa9/khtxXDYnLqmuda9pQELurSiwbQEVCPQL8kb34VbOW+ifdre66JM/05Xw9JWhIZ9sA==} + engines: {node: '>= 10'} + + '@nomicfoundation/slang-darwin-x64@0.17.0': + resolution: {integrity: sha512-IaDbHzvT08sBK2HyGzonWhq1uu8IxdjmTqAWHr25Oh/PYnamdi8u4qchZXXYKz/DHLoYN3vIpBXoqLQIomhD/g==} + engines: {node: '>= 10'} + + '@nomicfoundation/slang-linux-arm64-gnu@0.17.0': + resolution: {integrity: sha512-Lj4anvOsQZxs1SycG8VyT2Rl2oqIhyLSUCgGepTt3CiJ/bM+8r8bLJIgh8vKkki4BWz49YsYIgaJB2IPv8FFTw==} + engines: {node: '>= 10'} + + '@nomicfoundation/slang-linux-arm64-musl@0.17.0': + resolution: {integrity: sha512-/xkTCa9d5SIWUBQE3BmLqDFfJRr4yUBwbl4ynPiGUpRXrD69cs6pWKkwjwz/FdBpXqVo36I+zY95qzoTj/YhOA==} + engines: {node: '>= 10'} + + '@nomicfoundation/slang-linux-x64-gnu@0.17.0': + resolution: {integrity: sha512-oe5IO5vntOqYvTd67deCHPIWuSuWm6aYtT2/0Kqz2/VLtGz4ClEulBSRwfnNzBVtw2nksWipE1w8BzhImI7Syg==} + engines: {node: '>= 10'} + + '@nomicfoundation/slang-linux-x64-musl@0.17.0': + resolution: {integrity: sha512-PpYCI5K/kgLAMXaPY0V4VST5gCDprEOh7z/47tbI8kJQumI5odjsj/Cs8MpTo7/uRH6flKYbVNgUzcocWVYrAQ==} + engines: {node: '>= 10'} + + '@nomicfoundation/slang-win32-arm64-msvc@0.17.0': + resolution: {integrity: sha512-u/Mkf7OjokdBilP7QOJj6QYJU4/mjkbKnTX21wLyCIzeVWS7yafRPYpBycKIBj2pRRZ6ceAY5EqRpb0aiCq+0Q==} + engines: {node: '>= 10'} + + '@nomicfoundation/slang-win32-ia32-msvc@0.17.0': + resolution: {integrity: sha512-XJBVQfNnZQUv0tP2JSJ573S+pmgrLWgqSZOGaMllnB/TL1gRci4Z7dYRJUF2s82GlRJE+FHSI2Ro6JISKmlXCg==} + engines: {node: '>= 10'} + + '@nomicfoundation/slang-win32-x64-msvc@0.17.0': + resolution: {integrity: sha512-zPGsAeiTfqfPNYHD8BfrahQmYzA78ZraoHKTGraq/1xwJwzBK4bu/NtvVA4pJjBV+B4L6DCxVhSbpn40q26JQA==} + engines: {node: '>= 10'} + + '@nomicfoundation/slang@0.17.0': + resolution: {integrity: sha512-1GlkGRcGpVnjFw9Z1vvDKOKo2mzparFt7qrl2pDxWp+jrVtlvej98yCMX52pVyrYE7ZeOSZFnx/DtsSgoukStQ==} + engines: {node: '>= 10'} + + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': + resolution: {integrity: sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2': + resolution: {integrity: sha512-fZNmVztrSXC03e9RONBT+CiksSeYcxI1wlzqyr0L7hsQlK1fzV+f04g2JtQ1c/Fe74ZwdV6aQBdd6Uwl1052sw==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2': + resolution: {integrity: sha512-3d54oc+9ZVBuB6nbp8wHylk4xh0N0Gc+bk+/uJae+rUgbOBwQSfuGIbAZt1wBXs5REkSmynEGcqx6DutoK0tPA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2': + resolution: {integrity: sha512-iDJfR2qf55vgsg7BtJa7iPiFAsYf2d0Tv/0B+vhtnI16+wfQeTbP7teookbGvAo0eJo7aLLm0xfS/GTkvHIucA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2': + resolution: {integrity: sha512-9dlHMAt5/2cpWyuJ9fQNOUXFB/vgSFORg1jpjX1Mh9hJ/MfZXlDdHQ+DpFCs32Zk5pxRBb07yGvSHk9/fezL+g==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2': + resolution: {integrity: sha512-GzzVeeJob3lfrSlDKQw2bRJ8rBf6mEYaWY+gW0JnTDHINA0s2gPR4km5RLIj1xeZZOYz4zRw+AEeYgLRqB2NXg==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2': + resolution: {integrity: sha512-Fdjli4DCcFHb4Zgsz0uEJXZ2K7VEO+w5KVv7HmT7WO10iODdU9csC2az4jrhEsRtiR9Gfd74FlG0NYlw1BMdyA==} + engines: {node: '>= 12'} + + '@nomicfoundation/solidity-analyzer@0.1.2': + resolution: {integrity: sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==} + engines: {node: '>= 12'} + + '@openzeppelin/contracts-upgradeable@4.7.3': + resolution: {integrity: sha512-+wuegAMaLcZnLCJIvrVUDzA9z/Wp93f0Dla/4jJvIhijRrPabjQbZe6fWiECLaJyfn5ci9fqf9vTw3xpQOad2A==} + + '@openzeppelin/contracts@3.4.2': + resolution: {integrity: sha512-z0zMCjyhhp4y7XKAcDAi3Vgms4T2PstwBdahiO0+9NaGICQKjynK3wduSRplTgk4LXmoO1yfDGO5RbjKYxtuxA==} + + '@openzeppelin/contracts@4.3.3': + resolution: {integrity: sha512-tDBopO1c98Yk7Cv/PZlHqrvtVjlgK5R4J6jxLwoO7qxK4xqOiZG+zSkIvGFpPZ0ikc3QOED3plgdqjgNTnBc7g==} + + '@openzeppelin/contracts@4.9.6': + resolution: {integrity: sha512-xSmezSupL+y9VkHZJGDoCBpmnB2ogM13ccaYDWqJTfS3dbuHkgjuwDFUmaFauBCboQMGB/S5UqUl2y54X99BmA==} + + '@openzeppelin/defender-sdk-base-client@1.14.4': + resolution: {integrity: sha512-tOePVQLKpqfGQ1GMzHvSBNd2psPYd86LDNpvdl5gjD0Y2kW/zNh5qBXy29RraGtk/qc8zs9hzS5pAOh0vhGkGQ==} + + '@openzeppelin/defender-sdk-deploy-client@1.14.4': + resolution: {integrity: sha512-+diSoz1zid37LMsY2RDxI+uAsYx9Eryg8Vz+yfvuyd56fXrzjQEln7BBtYQw+2zp9yvyAByOL5XSQdrQga9OBQ==} + + '@openzeppelin/defender-sdk-network-client@1.14.4': + resolution: {integrity: sha512-OS0H5b0vgYacJcwkvUFJUaRuyUaXhIRl916W5xLvGia5H6i/qn3dP8MZ7oLcPwKc8jB+ucRytO4H/AHsea0aVA==} + + '@openzeppelin/hardhat-upgrades@3.2.1': + resolution: {integrity: sha512-Zy5M3QhkzwGdpzQmk+xbWdYOGJWjoTvwbBKYLhctu9B91DoprlhDRaZUwCtunwTdynkTDGdVfGr0kIkvycyKjw==} + hasBin: true + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.0 + '@nomicfoundation/hardhat-verify': ^2.0.0 + ethers: ^6.6.0 + hardhat: ^2.0.2 + peerDependenciesMeta: + '@nomicfoundation/hardhat-verify': + optional: true + + '@openzeppelin/upgrades-core@1.37.1': + resolution: {integrity: sha512-dMQPDoMn1OUZXsCHT1thnAmkZ14v0FNlst5Ej8MIfujOv0k74kUok5XeuNF42fYewnNUYMkkz3PhXU1OIwSeyg==} + hasBin: true + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@primitivefi/hardhat-dodoc@0.2.3': + resolution: {integrity: sha512-ver9uHa79LTDTeebOKZ/eOVRL/FP1k0s0x/5Bo/8ZaDdLWFVClKqZyZYVjjW4CJqTPCt8uU9b9p71P2vzH4O9A==} + peerDependencies: + hardhat: ^2.6.4 + squirrelly: ^8.0.8 + + '@rollup/plugin-commonjs@24.1.0': + resolution: {integrity: sha512-eSL45hjhCWI0jCCXcNtLVqM5N1JlBGvlFfY0m6oOYnLCJ6N0qEXoZql4sY2MOUArzhH4SA/qBpTxvvZp2Sc+DQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.68.0||^3.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-json@6.1.0': + resolution: {integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/plugin-node-resolve@15.2.3': + resolution: {integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^2.78.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/pluginutils@5.1.0': + resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.21.2': + resolution: {integrity: sha512-fSuPrt0ZO8uXeS+xP3b+yYTCBUd05MoSp2N/MFOgjhhUhMmchXlpTQrTpI8T+YAwAQuK7MafsCOxW7VrPMrJcg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.21.2': + resolution: {integrity: sha512-xGU5ZQmPlsjQS6tzTTGwMsnKUtu0WVbl0hYpTPauvbRAnmIvpInhJtgjj3mcuJpEiuUw4v1s4BimkdfDWlh7gA==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.21.2': + resolution: {integrity: sha512-99AhQ3/ZMxU7jw34Sq8brzXqWH/bMnf7ZVhvLk9QU2cOepbQSVTns6qoErJmSiAvU3InRqC2RRZ5ovh1KN0d0Q==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.21.2': + resolution: {integrity: sha512-ZbRaUvw2iN/y37x6dY50D8m2BnDbBjlnMPotDi/qITMJ4sIxNY33HArjikDyakhSv0+ybdUxhWxE6kTI4oX26w==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-linux-arm-gnueabihf@4.21.2': + resolution: {integrity: sha512-ztRJJMiE8nnU1YFcdbd9BcH6bGWG1z+jP+IPW2oDUAPxPjo9dverIOyXz76m6IPA6udEL12reYeLojzW2cYL7w==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.21.2': + resolution: {integrity: sha512-flOcGHDZajGKYpLV0JNc0VFH361M7rnV1ee+NTeC/BQQ1/0pllYcFmxpagltANYt8FYf9+kL6RSk80Ziwyhr7w==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.21.2': + resolution: {integrity: sha512-69CF19Kp3TdMopyteO/LJbWufOzqqXzkrv4L2sP8kfMaAQ6iwky7NoXTp7bD6/irKgknDKM0P9E/1l5XxVQAhw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.21.2': + resolution: {integrity: sha512-48pD/fJkTiHAZTnZwR0VzHrao70/4MlzJrq0ZsILjLW/Ab/1XlVUStYyGt7tdyIiVSlGZbnliqmult/QGA2O2w==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': + resolution: {integrity: sha512-cZdyuInj0ofc7mAQpKcPR2a2iu4YM4FQfuUzCVA2u4HI95lCwzjoPtdWjdpDKyHxI0UO82bLDoOaLfpZ/wviyQ==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.21.2': + resolution: {integrity: sha512-RL56JMT6NwQ0lXIQmMIWr1SW28z4E4pOhRRNqwWZeXpRlykRIlEpSWdsgNWJbYBEWD84eocjSGDu/XxbYeCmwg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.21.2': + resolution: {integrity: sha512-PMxkrWS9z38bCr3rWvDFVGD6sFeZJw4iQlhrup7ReGmfn7Oukrr/zweLhYX6v2/8J6Cep9IEA/SmjXjCmSbrMQ==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.21.2': + resolution: {integrity: sha512-B90tYAUoLhU22olrafY3JQCFLnT3NglazdwkHyxNDYF/zAxJt5fJUB/yBoWFoIQ7SQj+KLe3iL4BhOMa9fzgpw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.21.2': + resolution: {integrity: sha512-7twFizNXudESmC9oneLGIUmoHiiLppz/Xs5uJQ4ShvE6234K0VB1/aJYU3f/4g7PhssLGKBVCC37uRkkOi8wjg==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-win32-arm64-msvc@4.21.2': + resolution: {integrity: sha512-9rRero0E7qTeYf6+rFh3AErTNU1VCQg2mn7CQcI44vNUWM9Ze7MSRS/9RFuSsox+vstRt97+x3sOhEey024FRQ==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.21.2': + resolution: {integrity: sha512-5rA4vjlqgrpbFVVHX3qkrCo/fZTj1q0Xxpg+Z7yIo3J2AilW7t2+n6Q8Jrx+4MrYpAnjttTYF8rr7bP46BPzRw==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.21.2': + resolution: {integrity: sha512-6UUxd0+SKomjdzuAcp+HAmxw1FlGBnl1v2yEPSabtx4lBfdXHDVsW7+lQkgz9cNFJGY3AWR7+V8P5BqkD9L9nA==} + cpu: [x64] + os: [win32] + + '@scure/base@1.1.8': + resolution: {integrity: sha512-6CyAclxj3Nb0XT7GHK6K4zK6k2xJm6E4Ft0Ohjt4WgegiFUHEtFb2CGzmPmGBwoIhrLsqNLYfLr04Y1GePrzZg==} + + '@scure/bip32@1.1.5': + resolution: {integrity: sha512-XyNh1rB0SkEqd3tXcXMi+Xe1fvg+kUIcoRIEujP1Jgv7DqW2r9lg3Ah0NkFaCs9sTkQAQA8kw7xiRXzENi9Rtw==} + + '@scure/bip32@1.4.0': + resolution: {integrity: sha512-sVUpc0Vq3tXCkDGYVWGIZTRfnvu8LoTDaev7vbwh0omSvVORONr960MQWdKqJDCReIEmTj3PAr73O3aoxz7OPg==} + + '@scure/bip39@1.1.1': + resolution: {integrity: sha512-t+wDck2rVkh65Hmv280fYdVdY25J9YeEUIgn2LG1WM6gxFkGzcksoDiUkWVpVp3Oex9xGC68JU2dSbUfwZ2jPg==} + + '@scure/bip39@1.3.0': + resolution: {integrity: sha512-disdg7gHuTDZtY+ZdkmLpPCk7fxZSu3gBiEGuoC1XYxv9cGx3Z6cpTggCgW6odSOOIXCiDjuGejW+aJKCY/pIQ==} + + '@scure/bip39@1.4.0': + resolution: {integrity: sha512-BEEm6p8IueV/ZTfQLp/0vhw4NPnT9oWf5+28nvmeUICjP99f4vr2d+qc7AVGDDtwRep6ifR43Yed9ERVmiITzw==} + + '@sentry/core@5.30.0': + resolution: {integrity: sha512-TmfrII8w1PQZSZgPpUESqjB+jC6MvZJZdLtE/0hZ+SrnKhW3x5WlYLvTXZpcWePYBku7rl2wn1RZu6uT0qCTeg==} + engines: {node: '>=6'} + + '@sentry/hub@5.30.0': + resolution: {integrity: sha512-2tYrGnzb1gKz2EkMDQcfLrDTvmGcQPuWxLnJKXJvYTQDGLlEvi2tWz1VIHjunmOvJrB5aIQLhm+dcMRwFZDCqQ==} + engines: {node: '>=6'} + + '@sentry/minimal@5.30.0': + resolution: {integrity: sha512-BwWb/owZKtkDX+Sc4zCSTNcvZUq7YcH3uAVlmh/gtR9rmUvbzAA3ewLuB3myi4wWRAMEtny6+J/FN/x+2wn9Xw==} + engines: {node: '>=6'} + + '@sentry/node@5.30.0': + resolution: {integrity: sha512-Br5oyVBF0fZo6ZS9bxbJZG4ApAjRqAnqFFurMVJJdunNb80brh7a5Qva2kjhm+U6r9NJAB5OmDyPkA1Qnt+QVg==} + engines: {node: '>=6'} + + '@sentry/tracing@5.30.0': + resolution: {integrity: sha512-dUFowCr0AIMwiLD7Fs314Mdzcug+gBVo/+NCMyDw8tFxJkwWAKl7Qa2OZxLQ0ZHjakcj1hNKfCQJ9rhyfOl4Aw==} + engines: {node: '>=6'} + + '@sentry/types@5.30.0': + resolution: {integrity: sha512-R8xOqlSTZ+htqrfteCWU5Nk0CDN5ApUTvrlvBuiH1DyP6czDZ4ktbZB0hAgBlVcK0U+qpD3ag3Tqqpa5Q67rPw==} + engines: {node: '>=6'} + + '@sentry/utils@5.30.0': + resolution: {integrity: sha512-zaYmoH0NWWtvnJjC9/CBseXMtKHm/tm40sz3YfJRxeQjyzRqNQPgivpd9R/oDJCYj999mzdW382p/qi2ypjLww==} + engines: {node: '>=6'} + + '@smithy/types@3.4.0': + resolution: {integrity: sha512-0shOWSg/pnFXPcsSU8ZbaJ4JBHZJPPzLCJxafJvbMVFo9l1w81CqpgUqjlKGNHVrVB7fhIs+WS82JDTyzaLyLA==} + engines: {node: '>=16.0.0'} + + '@solidity-parser/parser@0.14.5': + resolution: {integrity: sha512-6dKnHZn7fg/iQATVEzqyUOyEidbn05q7YA2mQ9hC0MMXhhV3/JrsxmFSYZAcr7j1yUP700LLhTruvJ3MiQmjJg==} + + '@solidity-parser/parser@0.16.2': + resolution: {integrity: sha512-PI9NfoA3P8XK2VBkK5oIfRgKDsicwDZfkVq9ZTBCQYGOP1N2owgY2dyLGyU5/J/hQs8KRk55kdmvTLjy3Mu3vg==} + + '@solidity-parser/parser@0.18.0': + resolution: {integrity: sha512-yfORGUIPgLck41qyN7nbwJRAx17/jAIXCTanHOJZhB6PJ1iAk/84b/xlsVKFSyNyLXIj0dhppoE0+CRws7wlzA==} + + '@swc/core-darwin-arm64@1.7.26': + resolution: {integrity: sha512-FF3CRYTg6a7ZVW4yT9mesxoVVZTrcSWtmZhxKCYJX9brH4CS/7PRPjAKNk6kzWgWuRoglP7hkjQcd6EpMcZEAw==} + engines: {node: '>=10'} + cpu: [arm64] + os: [darwin] + + '@swc/core-darwin-x64@1.7.26': + resolution: {integrity: sha512-az3cibZdsay2HNKmc4bjf62QVukuiMRh5sfM5kHR/JMTrLyS6vSw7Ihs3UTkZjUxkLTT8ro54LI6sV6sUQUbLQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [darwin] + + '@swc/core-linux-arm-gnueabihf@1.7.26': + resolution: {integrity: sha512-VYPFVJDO5zT5U3RpCdHE5v1gz4mmR8BfHecUZTmD2v1JeFY6fv9KArJUpjrHEEsjK/ucXkQFmJ0jaiWXmpOV9Q==} + engines: {node: '>=10'} + cpu: [arm] + os: [linux] + + '@swc/core-linux-arm64-gnu@1.7.26': + resolution: {integrity: sha512-YKevOV7abpjcAzXrhsl+W48Z9mZvgoVs2eP5nY+uoMAdP2b3GxC0Df1Co0I90o2lkzO4jYBpTMcZlmUXLdXn+Q==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-arm64-musl@1.7.26': + resolution: {integrity: sha512-3w8iZICMkQQON0uIcvz7+Q1MPOW6hJ4O5ETjA0LSP/tuKqx30hIniCGOgPDnv3UTMruLUnQbtBwVCZTBKR3Rkg==} + engines: {node: '>=10'} + cpu: [arm64] + os: [linux] + + '@swc/core-linux-x64-gnu@1.7.26': + resolution: {integrity: sha512-c+pp9Zkk2lqb06bNGkR2Looxrs7FtGDMA4/aHjZcCqATgp348hOKH5WPvNLBl+yPrISuWjbKDVn3NgAvfvpH4w==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-linux-x64-musl@1.7.26': + resolution: {integrity: sha512-PgtyfHBF6xG87dUSSdTJHwZ3/8vWZfNIXQV2GlwEpslrOkGqy+WaiiyE7Of7z9AvDILfBBBcJvJ/r8u980wAfQ==} + engines: {node: '>=10'} + cpu: [x64] + os: [linux] + + '@swc/core-win32-arm64-msvc@1.7.26': + resolution: {integrity: sha512-9TNXPIJqFynlAOrRD6tUQjMq7KApSklK3R/tXgIxc7Qx+lWu8hlDQ/kVPLpU7PWvMMwC/3hKBW+p5f+Tms1hmA==} + engines: {node: '>=10'} + cpu: [arm64] + os: [win32] + + '@swc/core-win32-ia32-msvc@1.7.26': + resolution: {integrity: sha512-9YngxNcG3177GYdsTum4V98Re+TlCeJEP4kEwEg9EagT5s3YejYdKwVAkAsJszzkXuyRDdnHUpYbTrPG6FiXrQ==} + engines: {node: '>=10'} + cpu: [ia32] + os: [win32] + + '@swc/core-win32-x64-msvc@1.7.26': + resolution: {integrity: sha512-VR+hzg9XqucgLjXxA13MtV5O3C0bK0ywtLIBw/+a+O+Oc6mxFWHtdUeXDbIi5AiPbn0fjgVJMqYnyjGyyX8u0w==} + engines: {node: '>=10'} + cpu: [x64] + os: [win32] + + '@swc/core@1.7.26': + resolution: {integrity: sha512-f5uYFf+TmMQyYIoxkn/evWhNGuUzC730dFwAKGwBVHHVoPyak1/GvJUm6i1SKl+2Hrj9oN0i3WSoWWZ4pgI8lw==} + engines: {node: '>=10'} + peerDependencies: + '@swc/helpers': '*' + peerDependenciesMeta: + '@swc/helpers': + optional: true + + '@swc/counter@0.1.3': + resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} + + '@swc/types@0.1.12': + resolution: {integrity: sha512-wBJA+SdtkbFhHjTMYH+dEH1y4VpfGdAc2Kw/LK09i9bXd/K6j6PkDcFCEzb6iVfZMkPRrl/q0e3toqTAJdkIVA==} + + '@tenderly/hardhat-tenderly@2.3.0': + resolution: {integrity: sha512-Q21HeQofncnrH33Ys4Xd2HRgxl+4E/HgUqUIu6l734Cpw07KMwlsTicEML0nlVPgLDmtNrJv4cnFn4SypwioaA==} + peerDependencies: + ethers: ^6.8.1 + hardhat: ^2.22.6 + + '@trivago/prettier-plugin-sort-imports@3.4.0': + resolution: {integrity: sha512-485Iailw8X5f7KetzRka20RF1kPBEINR5LJMNwlBZWY1gRAlVnv5dZzyNPnLxSP0Qcia8HETa9Cdd8LlX9o+pg==} + peerDependencies: + prettier: 2.x + + '@tsconfig/node10@1.0.11': + resolution: {integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==} + + '@tsconfig/node12@1.0.11': + resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} + + '@tsconfig/node14@1.0.3': + resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} + + '@tsconfig/node16@1.0.4': + resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} + + '@typechain/ethers-v6@0.5.1': + resolution: {integrity: sha512-F+GklO8jBWlsaVV+9oHaPh5NJdd6rAKN4tklGfInX1Q7h0xPgVLP39Jl3eCulPB5qexI71ZFHwbljx4ZXNfouA==} + peerDependencies: + ethers: 6.x + typechain: ^8.3.2 + typescript: '>=4.7.0' + + '@typechain/hardhat@9.1.0': + resolution: {integrity: sha512-mtaUlzLlkqTlfPwB3FORdejqBskSnh+Jl8AIJGjXNAQfRQ4ofHADPl1+oU7Z3pAJzmZbUXII8MhOLQltcHgKnA==} + peerDependencies: + '@typechain/ethers-v6': ^0.5.1 + ethers: ^6.1.0 + hardhat: ^2.9.9 + typechain: ^8.3.2 + + '@types/bn.js@4.11.6': + resolution: {integrity: sha512-pqr857jrp2kPuO9uRjZ3PwnJTjoQy+fcdxvBTvHm6dkmEL9q+hDD/2j/0ELOBPtPnS8LjCX0gI9nbl8lVkadpg==} + + '@types/bn.js@5.1.5': + resolution: {integrity: sha512-V46N0zwKRF5Q00AZ6hWtN0T8gGmDUaUzLWQvHFo5yThtVwK/VCenFY3wXVbOvNfajEpsTfQM4IN9k/d6gUVX3A==} + + '@types/chai-as-promised@7.1.8': + resolution: {integrity: sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==} + + '@types/chai@4.3.19': + resolution: {integrity: sha512-2hHHvQBVE2FiSK4eN0Br6snX9MtolHaTo/batnLjlGRhoQzlCL61iVpxoqO7SfFyOw+P/pwv+0zNHzKoGWz9Cw==} + + '@types/concat-stream@1.6.1': + resolution: {integrity: sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==} + + '@types/conventional-commits-parser@5.0.0': + resolution: {integrity: sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==} + + '@types/estree@1.0.5': + resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + + '@types/form-data@0.0.33': + resolution: {integrity: sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/lru-cache@5.1.1': + resolution: {integrity: sha512-ssE3Vlrys7sdIzs5LOxCzTVMsU7i9oa/IaW92wF32JFb3CVczqOkru2xspuKczHEbG3nvmPY7IFqVmGGHdNbYw==} + + '@types/minimatch@5.1.2': + resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} + + '@types/minimist@1.2.5': + resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} + + '@types/mocha@10.0.7': + resolution: {integrity: sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==} + + '@types/node@10.17.60': + resolution: {integrity: sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==} + + '@types/node@18.15.13': + resolution: {integrity: sha512-N+0kuo9KgrUQ1Sn/ifDXsvg0TTleP7rIy4zOBGECxAljqvqfqpTfzx0Q1NUedOixRMBfe2Whhb056a42cWs26Q==} + + '@types/node@18.19.50': + resolution: {integrity: sha512-xonK+NRrMBRtkL1hVCc3G+uXtjh1Al4opBLjqVmipe5ZAaBYWW6cNAiBVZ1BvmkBhep698rP3UM3aRAdSALuhg==} + + '@types/node@20.5.1': + resolution: {integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==} + + '@types/node@8.10.66': + resolution: {integrity: sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==} + + '@types/normalize-package-data@2.4.4': + resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} + + '@types/pbkdf2@3.1.2': + resolution: {integrity: sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==} + + '@types/prettier@2.7.3': + resolution: {integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==} + + '@types/qs@6.9.15': + resolution: {integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==} + + '@types/resolve@1.20.2': + resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==} + + '@types/secp256k1@4.0.6': + resolution: {integrity: sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==} + + '@typescript-eslint/eslint-plugin@7.18.0': + resolution: {integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + '@typescript-eslint/parser': ^7.0.0 + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/parser@7.18.0': + resolution: {integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/scope-manager@7.18.0': + resolution: {integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/type-utils@7.18.0': + resolution: {integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/types@7.18.0': + resolution: {integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@typescript-eslint/typescript-estree@7.18.0': + resolution: {integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@typescript-eslint/utils@7.18.0': + resolution: {integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + + '@typescript-eslint/visitor-keys@7.18.0': + resolution: {integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==} + engines: {node: ^18.18.0 || >=20.0.0} + + '@ungap/structured-clone@1.2.0': + resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} + + '@vue/compiler-core@3.5.4': + resolution: {integrity: sha512-oNwn+BAt3n9dK9uAYvI+XGlutwuTq/wfj4xCBaZCqwwVIGtD7D6ViihEbyYZrDHIHTDE3Q6oL3/hqmAyFEy9DQ==} + + '@vue/compiler-dom@3.5.4': + resolution: {integrity: sha512-yP9RRs4BDLOLfldn6ah+AGCNovGjMbL9uHvhDHf5wan4dAHLnFGOkqtfE7PPe4HTXIqE7l/NILdYw53bo1C8jw==} + + '@vue/compiler-sfc@3.5.4': + resolution: {integrity: sha512-P+yiPhL+NYH7m0ZgCq7AQR2q7OIE+mpAEgtkqEeH9oHSdIRvUO+4X6MPvblJIWcoe4YC5a2Gdf/RsoyP8FFiPQ==} + + '@vue/compiler-ssr@3.5.4': + resolution: {integrity: sha512-acESdTXsxPnYr2C4Blv0ggx5zIFMgOzZmYU2UgvIff9POdRGbRNBHRyzHAnizcItvpgerSKQbllUc9USp3V7eg==} + + '@vue/shared@3.5.4': + resolution: {integrity: sha512-L2MCDD8l7yC62Te5UUyPVpmexhL9ipVnYRw9CsWfm/BGRL5FwDX4a25bcJ/OJSD3+Hx+k/a8LDKcG2AFdJV3BA==} + + JSONStream@1.3.5: + resolution: {integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==} + hasBin: true + + abbrev@1.0.9: + resolution: {integrity: sha512-LEyx4aLEC3x6T0UguF6YILf+ntvmOaWsVfENmIW0E9H09vKlLDGelMjjSm0jkDHALj8A8quZ/HapKNigzwge+Q==} + + abitype@0.9.10: + resolution: {integrity: sha512-FIS7U4n7qwAT58KibwYig5iFG4K61rbhAqaQh/UWj8v1Y8mjX3F8TC9gd8cz9yT1TYel9f8nS5NO5kZp2RW0jQ==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + abitype@1.0.5: + resolution: {integrity: sha512-YzDhti7cjlfaBhHutMaboYB21Ha3rXR9QTkNJFzYC4kC8YclaiwPBBBJY8ejFdu2wnJeZCVZSMlQJ7fi8S6hsw==} + peerDependencies: + typescript: '>=5.0.4' + zod: ^3 >=3.22.0 + peerDependenciesMeta: + typescript: + optional: true + zod: + optional: true + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.4: + resolution: {integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==} + engines: {node: '>=0.4.0'} + + acorn@8.12.1: + resolution: {integrity: sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==} + engines: {node: '>=0.4.0'} + hasBin: true + + adm-zip@0.4.16: + resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} + engines: {node: '>=0.3.0'} + + aes-js@3.0.0: + resolution: {integrity: sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==} + + aes-js@4.0.0-beta.5: + resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + aggregate-error@3.1.0: + resolution: {integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==} + engines: {node: '>=8'} + + ajv@6.12.6: + resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} + + ajv@8.17.1: + resolution: {integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==} + + amazon-cognito-identity-js@6.3.12: + resolution: {integrity: sha512-s7NKDZgx336cp+oDeUtB2ZzT8jWJp/v2LWuYl+LQtMEODe22RF1IJ4nRiDATp+rp1pTffCZcm44Quw4jx2bqNg==} + + amdefine@1.0.1: + resolution: {integrity: sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==} + engines: {node: '>=0.4.2'} + + ansi-align@3.0.1: + resolution: {integrity: sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@5.0.0: + resolution: {integrity: sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==} + engines: {node: '>=12'} + + ansi-regex@3.0.1: + resolution: {integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==} + engines: {node: '>=4'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.1.0: + resolution: {integrity: sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==} + engines: {node: '>=12'} + + ansi-styles@3.2.1: + resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==} + engines: {node: '>=4'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.1: + resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} + engines: {node: '>=12'} + + antlr4@4.13.2: + resolution: {integrity: sha512-QiVbZhyy4xAZ17UPEuG3YTOt8ZaoeOR1CvEAqrEsDBsOqINslaB147i9xqljZqoyf5S+EUlGStaj+t22LT9MOg==} + engines: {node: '>=16'} + + antlr4ts@0.5.0-alpha.4: + resolution: {integrity: sha512-WPQDt1B74OfPv/IMS2ekXAKkTZIHl88uMetg6q3OTqgFxZ/dxDXI0EWLyZid/1Pe6hTftyg5N7gel5wNAGxXyQ==} + + anymatch@3.1.3: + resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} + engines: {node: '>= 8'} + + arg@4.1.3: + resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-back@3.1.0: + resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} + engines: {node: '>=6'} + + array-back@4.0.2: + resolution: {integrity: sha512-NbdMezxqf94cnNfWLL7V/im0Ub+Anbb0IoZhvzie8+4HJ4nMQuzHuy49FkGYCJK2yAloZ3meiB6AVMClbrI1vg==} + engines: {node: '>=8'} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + array-uniq@1.0.3: + resolution: {integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==} + engines: {node: '>=0.10.0'} + + arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + + asap@2.0.6: + resolution: {integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==} + + assertion-error@1.1.0: + resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + + ast-parents@0.0.1: + resolution: {integrity: sha512-XHusKxKz3zoYk1ic8Un640joHbFMhbqneyoZfoKnEGtf2ey9Uh/IdpcQplODdO/kENaMIWsD0nJm4+wX3UNLHA==} + + astral-regex@2.0.0: + resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} + engines: {node: '>=8'} + + async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + + async@1.5.2: + resolution: {integrity: sha512-nSVgobk4rv61R9PUSDtYt7mPVB2olxNR5RWJcAsH676/ef11bUZwvu7+RGYrYauVdDPcO519v68wRhXQtxsV9w==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + axios@0.21.4: + resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + + axios@0.27.2: + resolution: {integrity: sha512-t+yRIyySRTp/wua5xEr+z1q60QmLq8ABsS5O9Me1AsE5dfKqgnCFzwiCZZ/cGNd1lq4/7akDWMxdhVlucjmnOQ==} + + axios@1.7.7: + resolution: {integrity: sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + base-x@3.0.10: + resolution: {integrity: sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bech32@1.1.4: + resolution: {integrity: sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==} + + binary-extensions@2.3.0: + resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} + engines: {node: '>=8'} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + + bn.js@4.11.6: + resolution: {integrity: sha512-XWwnNNFCuuSQ0m3r3C4LE3EiORltHd9M05pq6FOlVeiophzRbMo50Sbz1ehl8K3Z+jw9+vmgnXefY1hz8X+2wA==} + + bn.js@4.12.0: + resolution: {integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==} + + bn.js@5.2.1: + resolution: {integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==} + + boxen@5.1.2: + resolution: {integrity: sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==} + engines: {node: '>=10'} + + brace-expansion@1.1.11: + resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} + + brace-expansion@2.0.1: + resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + brorand@1.1.0: + resolution: {integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==} + + browser-stdout@1.3.1: + resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + browserslist@4.23.3: + resolution: {integrity: sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bufio@1.2.1: + resolution: {integrity: sha512-9oR3zNdupcg/Ge2sSHQF3GX+kmvL/fTPvD0nd5AGLq8SjUYnTz+SlFjK/GXidndbZtIj+pVKXiWeR9w6e9wKCA==} + engines: {node: '>=14.0.0'} + + builtin-modules@3.3.0: + resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==} + engines: {node: '>=6'} + + builtins@2.0.1: + resolution: {integrity: sha512-XkkVe5QAb6guWPXTzpSrYpSlN3nqEmrrE2TkAr/tp7idSF6+MONh9WvKrAuR3HiKLvoSgmbs8l1U9IPmMrIoLw==} + + bytes@3.1.2: + resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==} + engines: {node: '>= 0.8'} + + cachedir@2.3.0: + resolution: {integrity: sha512-A+Fezp4zxnit6FanDmv9EqXNAi3vt9DWp51/71UEhXukb7QUuvtv9344h91dyAxuTLoSYJFU299qzR3tzwPAhw==} + engines: {node: '>=6'} + + call-bind@1.0.7: + resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase-keys@6.2.2: + resolution: {integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==} + engines: {node: '>=8'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + + caniuse-lite@1.0.30001660: + resolution: {integrity: sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + cbor@8.1.0: + resolution: {integrity: sha512-DwGjNW9omn6EwP70aXsn7FQJx5kO12tX0bZkaTjzdVFM6/7nhA4t0EENocKGx6D2Bch9PE2KzCUf5SceBdeijg==} + engines: {node: '>=12.19'} + + cbor@9.0.2: + resolution: {integrity: sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==} + engines: {node: '>=16'} + + chai-as-promised@7.1.2: + resolution: {integrity: sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==} + peerDependencies: + chai: '>= 2.1.2 < 6' + + chai@4.5.0: + resolution: {integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==} + engines: {node: '>=4'} + + chalk@2.4.2: + resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} + engines: {node: '>=4'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chalk@5.3.0: + resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + chardet@0.7.0: + resolution: {integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==} + + charenc@0.0.2: + resolution: {integrity: sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==} + + check-error@1.0.3: + resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} + + chokidar@3.6.0: + resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} + engines: {node: '>= 8.10.0'} + + ci-info@2.0.0: + resolution: {integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==} + + cipher-base@1.0.4: + resolution: {integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==} + + clean-stack@2.2.0: + resolution: {integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==} + engines: {node: '>=6'} + + cli-boxes@2.2.1: + resolution: {integrity: sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==} + engines: {node: '>=6'} + + cli-cursor@3.1.0: + resolution: {integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==} + engines: {node: '>=8'} + + cli-cursor@4.0.0: + resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-table3@0.5.1: + resolution: {integrity: sha512-7Qg2Jrep1S/+Q3EceiZtQcDPWxhAvBw+ERf1162v4sikJrvojMHFqXt8QIVha8UlH9rgU0BeWPytZ9/TzYqlUw==} + engines: {node: '>=6'} + + cli-table3@0.6.5: + resolution: {integrity: sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==} + engines: {node: 10.* || >= 12.*} + + cli-truncate@3.1.0: + resolution: {integrity: sha512-wfOBkjXteqSnI59oPcJkcPl/ZmwvMMOj340qUIY1SKZCv0B9Cf4D4fAucRkIKQmsIuYK3x1rrgU7MeGRruiuiA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + cli-width@3.0.0: + resolution: {integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==} + engines: {node: '>= 10'} + + cliui@7.0.4: + resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + clone@1.0.4: + resolution: {integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==} + engines: {node: '>=0.8'} + + color-convert@1.9.3: + resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.3: + resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + command-exists@1.2.9: + resolution: {integrity: sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==} + + command-line-args@5.2.1: + resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} + engines: {node: '>=4.0.0'} + + command-line-usage@6.1.3: + resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} + engines: {node: '>=8.0.0'} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@11.0.0: + resolution: {integrity: sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==} + engines: {node: '>=16'} + + commander@8.3.0: + resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} + engines: {node: '>= 12'} + + commander@9.5.0: + resolution: {integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==} + engines: {node: ^12.20.0 || >=14} + + commitizen@4.3.0: + resolution: {integrity: sha512-H0iNtClNEhT0fotHvGV3E9tDejDeS04sN1veIebsKYGMuGscFaswRoYJKmT3eW85eIJAs0F28bG2+a/9wCOfPw==} + engines: {node: '>= 12'} + hasBin: true + + commondir@1.0.1: + resolution: {integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + compare-versions@6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + concat-stream@1.6.2: + resolution: {integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==} + engines: {'0': node >= 0.8} + + conventional-changelog-angular@6.0.0: + resolution: {integrity: sha512-6qLgrBF4gueoC7AFVHu51nHL9pF9FRjXrH+ceVf7WmAfH3gs+gEYOkvxhjMPjZu57I4AGUGoNTY8V7Hrgf1uqg==} + engines: {node: '>=14'} + + conventional-changelog-conventionalcommits@6.1.0: + resolution: {integrity: sha512-3cS3GEtR78zTfMzk0AizXKKIdN4OvSh7ibNz6/DPbhWWQu7LqE/8+/GqSodV+sywUR2gpJAdP/1JFf4XtN7Zpw==} + engines: {node: '>=14'} + + conventional-commit-types@3.0.0: + resolution: {integrity: sha512-SmmCYnOniSsAa9GqWOeLqc179lfr5TRu5b4QFDkbsrJ5TZjPJx85wtOr3zn+1dbeNiXDKGPbZ72IKbPhLXh/Lg==} + + conventional-commits-parser@4.0.0: + resolution: {integrity: sha512-WRv5j1FsVM5FISJkoYMR6tPk07fkKT0UodruX4je86V4owk451yjXAKzKAPOs9l7y59E2viHUS9eQ+dfUA9NSg==} + engines: {node: '>=14'} + hasBin: true + + convert-source-map@1.9.0: + resolution: {integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==} + + cookie@0.4.2: + resolution: {integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==} + engines: {node: '>= 0.6'} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig-typescript-loader@4.4.0: + resolution: {integrity: sha512-BabizFdC3wBHhbI4kJh0VkQP9GkBfoHPydD0COMce1nJ1kJAB3F2TmJ/I7diULBKtmEWSwEbuN/KDtgnmUUVmw==} + engines: {node: '>=v14.21.3'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=7' + ts-node: '>=10' + typescript: '>=4' + + cosmiconfig-typescript-loader@5.0.0: + resolution: {integrity: sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==} + engines: {node: '>=v16'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=8.2' + typescript: '>=4' + + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + cosmiconfig@9.0.0: + resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + create-hash@1.2.0: + resolution: {integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==} + + create-hmac@1.1.7: + resolution: {integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==} + + create-require@1.1.1: + resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} + + cross-env@7.0.3: + resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} + engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} + hasBin: true + + cross-spawn@7.0.3: + resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + engines: {node: '>= 8'} + + crypt@0.0.2: + resolution: {integrity: sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==} + + cz-conventional-changelog@3.3.0: + resolution: {integrity: sha512-U466fIzU5U22eES5lTNiNbZ+d8dfcHcssH4o7QsdWaCcRs/feIPCxKYSWkYBNs5mny7MvEfwpTLWjvbm94hecw==} + engines: {node: '>= 10'} + + dargs@7.0.0: + resolution: {integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==} + engines: {node: '>=8'} + + death@1.1.0: + resolution: {integrity: sha512-vsV6S4KVHvTGxbEcij7hkWRv0It+sGGWVOM67dQde/o5Xjnr+KmLjxWJii2uEObIrt1CcM9w0Yaovx+iOlIL+w==} + + debug@4.3.4: + resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.3.7: + resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize-keys@1.1.1: + resolution: {integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==} + engines: {node: '>=0.10.0'} + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decamelize@4.0.0: + resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} + engines: {node: '>=10'} + + dedent@0.7.0: + resolution: {integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==} + + deep-eql@4.1.4: + resolution: {integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==} + engines: {node: '>=6'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + deepmerge@4.3.1: + resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} + engines: {node: '>=0.10.0'} + + defaults@1.0.4: + resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + define-lazy-prop@2.0.0: + resolution: {integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==} + engines: {node: '>=8'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + delete-empty@3.0.0: + resolution: {integrity: sha512-ZUyiwo76W+DYnKsL3Kim6M/UOavPdBJgDYWOmuQhYaZvJH0AXAHbUNyEDtRbBra8wqqr686+63/0azfEk1ebUQ==} + engines: {node: '>=10'} + hasBin: true + + depd@2.0.0: + resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==} + engines: {node: '>= 0.8'} + + detect-file@1.0.0: + resolution: {integrity: sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==} + engines: {node: '>=0.10.0'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + diff@4.0.2: + resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} + engines: {node: '>=0.3.1'} + + diff@5.2.0: + resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==} + engines: {node: '>=0.3.1'} + + difflib@0.2.4: + resolution: {integrity: sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + doctrine@3.0.0: + resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} + engines: {node: '>=6.0.0'} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dotenv@16.4.5: + resolution: {integrity: sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==} + engines: {node: '>=12'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + electron-to-chromium@1.5.19: + resolution: {integrity: sha512-kpLJJi3zxTR1U828P+LIUDZ5ohixyo68/IcYOHLqnbTPr/wdgn4i1ECvmALN9E16JPA6cvCG5UG79gVwVdEK5w==} + + elliptic@6.5.4: + resolution: {integrity: sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==} + + elliptic@6.5.7: + resolution: {integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + encode-utf8@1.0.3: + resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-define-property@1.0.0: + resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.5.4: + resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==} + + esbuild@0.23.1: + resolution: {integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@1.0.5: + resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} + engines: {node: '>=0.8.0'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + escodegen@1.8.1: + resolution: {integrity: sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==} + engines: {node: '>=0.12.0'} + hasBin: true + + eslint-config-prettier@8.10.0: + resolution: {integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-scope@7.2.2: + resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint@8.57.0: + resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + hasBin: true + + espree@9.6.1: + resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + esprima@2.7.3: + resolution: {integrity: sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==} + engines: {node: '>=0.10.0'} + hasBin: true + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.6.0: + resolution: {integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@1.9.3: + resolution: {integrity: sha512-25w1fMXQrGdoquWnScXZGckOv+Wes+JDnuN/+7ex3SauFRS72r2lFDec0EKPt2YD1wUJ/IrfEex+9yp4hfSOJA==} + engines: {node: '>=0.10.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@0.6.1: + resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + eth-gas-reporter@0.2.27: + resolution: {integrity: sha512-femhvoAM7wL0GcI8ozTdxfuBtBFJ9qsyIAsmKVjlWAHUbdnnXHt+lKzz/kmldM5lA9jLuNHGwuIxorNpLbR1Zw==} + peerDependencies: + '@codechecks/client': ^0.1.0 + peerDependenciesMeta: + '@codechecks/client': + optional: true + + ethereum-bloom-filters@1.2.0: + resolution: {integrity: sha512-28hyiE7HVsWubqhpVLVmZXFd4ITeHi+BUu05o9isf0GUpMtzBUi+8/gFrGaGYzvGAJQmJ3JKj77Mk9G98T84rA==} + + ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + + ethereum-cryptography@1.2.0: + resolution: {integrity: sha512-6yFQC9b5ug6/17CQpCyE3k9eKBMdhyVjzUy1WkiuY/E4vj/SXDBbCw8QEIaXqf0Mf2SnY6RmpDcwlUmBSS0EJw==} + + ethereum-cryptography@2.2.1: + resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + + ethereumjs-abi@0.6.8: + resolution: {integrity: sha512-Tx0r/iXI6r+lRsdvkFDlut0N08jWMnKRZ6Gkq+Nmw75lZe4e6o3EkSnkaBP5NF6+m5PTGAr9JP43N3LyeoglsA==} + + ethereumjs-util@6.2.1: + resolution: {integrity: sha512-W2Ktez4L01Vexijrm5EB6w7dg4n/TgpoYU4avuT5T3Vmnw/eCRtiBrJfQYS/DCSvDIOLn2k57GcHdeBcgVxAqw==} + + ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + + ethers@5.7.2: + resolution: {integrity: sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==} + + ethers@6.13.2: + resolution: {integrity: sha512-9VkriTTed+/27BGuY1s0hf441kqwHJ1wtN2edksEtiRvXx+soxRX3iSXTfFqq2+YwrOqbDoTHjIhQnjJRlzKmg==} + engines: {node: '>=14.0.0'} + + ethjs-unit@0.1.6: + resolution: {integrity: sha512-/Sn9Y0oKl0uqQuvgFk/zQgR7aw1g36qX/jzSQ5lSwlO0GigPymk4eGQfeNTD03w1dPOqfz8V77Cy43jH56pagw==} + engines: {node: '>=6.5.0', npm: '>=3'} + + ethjs-util@0.1.6: + resolution: {integrity: sha512-CUnVOQq7gSpDHZVVrQW8ExxUETWrnrvXYvYz55wOU8Uj4VCgw56XC2B/fVqQN+f7gmrnRHSLVnFAwsCuNwji8w==} + engines: {node: '>=6.5.0', npm: '>=3'} + + eventemitter3@5.0.1: + resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==} + + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@7.2.0: + resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} + engines: {node: ^14.18.0 || ^16.14.0 || >=18.0.0} + + expand-tilde@2.0.2: + resolution: {integrity: sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==} + engines: {node: '>=0.10.0'} + + external-editor@3.1.0: + resolution: {integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==} + engines: {node: '>=4'} + + fast-base64-decode@1.0.0: + resolution: {integrity: sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.2: + resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-uri@3.0.1: + resolution: {integrity: sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==} + + fastq@1.17.1: + resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} + + figures@3.2.0: + resolution: {integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==} + engines: {node: '>=8'} + + file-entry-cache@6.0.1: + resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} + engines: {node: ^10.12.0 || >=12.0.0} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-node-modules@2.1.3: + resolution: {integrity: sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==} + + find-replace@3.0.0: + resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} + engines: {node: '>=4.0.0'} + + find-root@1.1.0: + resolution: {integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==} + + find-up@2.1.0: + resolution: {integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==} + engines: {node: '>=4'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + findup-sync@4.0.0: + resolution: {integrity: sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==} + engines: {node: '>= 8'} + + flat-cache@3.2.0: + resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} + engines: {node: ^10.12.0 || >=12.0.0} + + flat@5.0.2: + resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} + hasBin: true + + flatted@3.3.1: + resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + + fmix@0.1.0: + resolution: {integrity: sha512-Y6hyofImk9JdzU8k5INtTXX1cu8LDlePWDFU5sftm9H+zKCr5SGrVjdhkvsim646cw5zD0nADj8oHyXMZmCZ9w==} + + follow-redirects@1.15.9: + resolution: {integrity: sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.0: + resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} + engines: {node: '>=14'} + + form-data@2.5.1: + resolution: {integrity: sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==} + engines: {node: '>= 0.12'} + + form-data@4.0.0: + resolution: {integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==} + engines: {node: '>= 6'} + + fp-ts@1.19.3: + resolution: {integrity: sha512-H5KQDspykdHuztLTg+ajGN0Z2qUjcEf3Ybxc6hLt0k7/zPkn29XnKnxlBPyW2XIddWrGaJBzBl4VLYOtk39yZg==} + + fs-extra@10.1.0: + resolution: {integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==} + engines: {node: '>=12'} + + fs-extra@11.2.0: + resolution: {integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==} + engines: {node: '>=14.14'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fs-readdir-recursive@1.1.0: + resolution: {integrity: sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-func-name@2.0.2: + resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + + get-intrinsic@1.2.4: + resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} + engines: {node: '>= 0.4'} + + get-port@3.2.0: + resolution: {integrity: sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==} + engines: {node: '>=4'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-tsconfig@4.8.0: + resolution: {integrity: sha512-Pgba6TExTZ0FJAn1qkJAjIeKoDJ3CsI2ChuLohJnZl/tTU8MVrq3b+2t5UOPfRa4RMsorClBjJALkJUMjG1PAw==} + + ghost-testrpc@0.0.2: + resolution: {integrity: sha512-i08dAEgJ2g8z5buJIrCTduwPIhih3DP+hOCTyyryikfV8T0bNvHnGXO67i0DD1H4GBDETTclPy9njZbfluQYrQ==} + hasBin: true + + git-raw-commits@2.0.11: + resolution: {integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==} + engines: {node: '>=10'} + hasBin: true + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.4.5: + resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} + hasBin: true + + glob@5.0.15: + resolution: {integrity: sha512-c9IPMazfRITpmAAKi22dK1VKxGDX9ehhqfABDriL/lzO92xcUKEJPQHrVA/2YHSNFB4iFlykVmWvwo48nr3OxA==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.1.7: + resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.2.0: + resolution: {integrity: sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported + + glob@8.1.0: + resolution: {integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==} + engines: {node: '>=12'} + deprecated: Glob versions prior to v9 are no longer supported + + global-directory@4.0.1: + resolution: {integrity: sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==} + engines: {node: '>=18'} + + global-dirs@0.1.1: + resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} + engines: {node: '>=4'} + + global-modules@1.0.0: + resolution: {integrity: sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==} + engines: {node: '>=0.10.0'} + + global-modules@2.0.0: + resolution: {integrity: sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==} + engines: {node: '>=6'} + + global-prefix@1.0.2: + resolution: {integrity: sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==} + engines: {node: '>=0.10.0'} + + global-prefix@3.0.0: + resolution: {integrity: sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==} + engines: {node: '>=6'} + + globals@11.12.0: + resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} + engines: {node: '>=4'} + + globals@13.24.0: + resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} + engines: {node: '>=8'} + + globby@10.0.2: + resolution: {integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.0.1: + resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + graphemer@1.4.0: + resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} + + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + + hard-rejection@2.1.0: + resolution: {integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==} + engines: {node: '>=6'} + + hardhat-abi-exporter@2.10.1: + resolution: {integrity: sha512-X8GRxUTtebMAd2k4fcPyVnCdPa6dYK4lBsrwzKP5yiSq4i+WadWPIumaLfce53TUf/o2TnLpLOduyO1ylE2NHQ==} + engines: {node: '>=14.14.0'} + peerDependencies: + hardhat: ^2.0.0 + + hardhat-deploy@0.11.45: + resolution: {integrity: sha512-aC8UNaq3JcORnEUIwV945iJuvBwi65tjHVDU3v6mOcqik7WAzHVCJ7cwmkkipsHrWysrB5YvGF1q9S1vIph83w==} + + hardhat-gas-reporter@1.0.10: + resolution: {integrity: sha512-02N4+So/fZrzJ88ci54GqwVA3Zrf0C9duuTyGt0CFRIh/CdNwbnTgkXkRfojOMLBQ+6t+lBIkgbsOtqMvNwikA==} + peerDependencies: + hardhat: ^2.0.2 + + hardhat-preprocessor@0.1.5: + resolution: {integrity: sha512-j8m44mmPxpxAAd0G8fPHRHOas/INZdzptSur0TNJvMEGcFdLDhbHHxBcqZVQ/bmiW42q4gC60AP4CXn9EF018g==} + peerDependencies: + hardhat: ^2.0.5 + + hardhat@2.22.10: + resolution: {integrity: sha512-JRUDdiystjniAvBGFmJRsiIZSOP2/6s++8xRDe3TzLeQXlWWHsXBrd9wd3JWFyKXvgMqMeLL5Sz/oNxXKYw9vg==} + hasBin: true + peerDependencies: + ts-node: '*' + typescript: '*' + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + + has-flag@1.0.0: + resolution: {integrity: sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==} + engines: {node: '>=0.10.0'} + + has-flag@3.0.0: + resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} + engines: {node: '>=4'} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-proto@1.0.3: + resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} + engines: {node: '>= 0.4'} + + has-symbols@1.0.3: + resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} + engines: {node: '>= 0.4'} + + hash-base@3.1.0: + resolution: {integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==} + engines: {node: '>=4'} + + hash.js@1.1.7: + resolution: {integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==} + + hasown@2.0.2: + resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + heap@0.2.7: + resolution: {integrity: sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==} + + hmac-drbg@1.0.1: + resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + + homedir-polyfill@1.0.3: + resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} + engines: {node: '>=0.10.0'} + + hosted-git-info@2.8.9: + resolution: {integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==} + + hosted-git-info@4.1.0: + resolution: {integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==} + engines: {node: '>=10'} + + http-basic@8.1.3: + resolution: {integrity: sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==} + engines: {node: '>=6.0.0'} + + http-errors@2.0.0: + resolution: {integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==} + engines: {node: '>= 0.8'} + + http-response-object@3.0.2: + resolution: {integrity: sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@4.3.1: + resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} + engines: {node: '>=14.18.0'} + + husky@8.0.3: + resolution: {integrity: sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==} + engines: {node: '>=14'} + hasBin: true + + iconv-lite@0.4.24: + resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + immer@10.0.2: + resolution: {integrity: sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==} + + immutable@4.3.7: + resolution: {integrity: sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw==} + + import-fresh@3.3.0: + resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} + engines: {node: '>=6'} + + import-meta-resolve@4.1.0: + resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==} + + imul@1.0.1: + resolution: {integrity: sha512-WFAgfwPLAjU66EKt6vRdTlKj4nAgIDQzh29JonLa4Bqtl6D8JrIMvWjCnx7xEjVNmP3U0fM5o8ZObk7d0f62bA==} + engines: {node: '>=0.10.0'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@4.1.1: + resolution: {integrity: sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + inquirer@8.2.5: + resolution: {integrity: sha512-QAgPDQMEgrDssk1XiwwHoOGYF9BAbUcc1+j+FhEvaOt8/cKRqyLn0U5qA6F74fGhTMGxf92pOvPBeh29jQJDTQ==} + engines: {node: '>=12.0.0'} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + io-ts@1.10.4: + resolution: {integrity: sha512-b23PteSnYXSONJ6JQXRAlvJhuw8KOtkqa87W4wDtvMrud/DTJd5X+NpOOI+O/zZwVq6v0VLAaJ+1EDViKEuN9g==} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-binary-path@2.1.0: + resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} + engines: {node: '>=8'} + + is-builtin-module@3.2.1: + resolution: {integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==} + engines: {node: '>=6'} + + is-core-module@2.15.1: + resolution: {integrity: sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==} + engines: {node: '>= 0.4'} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@2.0.0: + resolution: {integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==} + engines: {node: '>=4'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@4.0.0: + resolution: {integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==} + engines: {node: '>=12'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-hex-prefixed@1.0.0: + resolution: {integrity: sha512-WvtOiug1VFrE9v1Cydwm+FnXd3+w9GaeVUss5W4v/SLy3UW00vP+6iNF2SdnfiBoLy4bTqVdkftNGTUeOFVsbA==} + engines: {node: '>=6.5.0', npm: '>=3'} + + is-interactive@1.0.0: + resolution: {integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==} + engines: {node: '>=8'} + + is-module@1.0.0: + resolution: {integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-plain-obj@1.1.0: + resolution: {integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==} + engines: {node: '>=0.10.0'} + + is-plain-obj@2.1.0: + resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} + engines: {node: '>=8'} + + is-reference@1.2.1: + resolution: {integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@3.0.0: + resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + is-text-path@1.0.1: + resolution: {integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==} + engines: {node: '>=0.10.0'} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-utf8@0.2.1: + resolution: {integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isomorphic-unfetch@3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + + isows@1.0.4: + resolution: {integrity: sha512-hEzjY+x9u9hPmBom9IIAqdJCwNLax+xrPb51vEPpERoFlIxgmZcHzsT5jKG06nvInKOBGvReAVz80Umed5CczQ==} + peerDependencies: + ws: '*' + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + javascript-natural-sort@0.7.1: + resolution: {integrity: sha512-nO6jcEfZWQXDhOiBtG2KvKyEptz7RVbpGP4vTD2hLBdmNQSsCiicO2Ioinv6UI4y9ukqnBpy+XZ9H6uLNgJTlw==} + + jiti@1.21.6: + resolution: {integrity: sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==} + hasBin: true + + js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + + js-sha3@0.8.0: + resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.14.1: + resolution: {integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==} + hasBin: true + + js-yaml@4.1.0: + resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} + hasBin: true + + jsesc@2.5.2: + resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} + engines: {node: '>=4'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.1.0: + resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} + + jsonparse@1.3.1: + resolution: {integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==} + engines: {'0': node >= 0.2.0} + + jsonschema@1.4.1: + resolution: {integrity: sha512-S6cATIPVv1z0IlxdN+zUk5EPjkGCdnhN4wVSBlvoUO1tOLJootbo9CquNJmbIh4yikWHiUedhRYrNPn1arpEmQ==} + + keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kind-of@6.0.3: + resolution: {integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==} + engines: {node: '>=0.10.0'} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + levn@0.3.0: + resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} + engines: {node: '>= 0.8.0'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@2.1.0: + resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==} + engines: {node: '>=10'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@13.3.0: + resolution: {integrity: sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==} + engines: {node: ^16.14.0 || >=18.0.0} + hasBin: true + + listr2@6.6.1: + resolution: {integrity: sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==} + engines: {node: '>=16.0.0'} + peerDependencies: + enquirer: '>= 2.3.0 < 3' + peerDependenciesMeta: + enquirer: + optional: true + + load-json-file@4.0.0: + resolution: {integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==} + engines: {node: '>=4'} + + locate-path@2.0.0: + resolution: {integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==} + engines: {node: '>=4'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.clonedeep@4.5.0: + resolution: {integrity: sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==} + + lodash.isequal@4.5.0: + resolution: {integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==} + + lodash.isfunction@3.0.9: + resolution: {integrity: sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==} + + lodash.isplainobject@4.0.6: + resolution: {integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==} + + lodash.kebabcase@4.1.1: + resolution: {integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==} + + lodash.map@4.6.0: + resolution: {integrity: sha512-worNHGKLDetmcEYDvh2stPCrrQRkP20E4l0iIS7F8EvzMqBBi7ltvFN5m1HvTf1P7Jk1txKhvFcmYsCr8O2F1Q==} + + lodash.memoize@4.1.2: + resolution: {integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.mergewith@4.6.2: + resolution: {integrity: sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==} + + lodash.snakecase@4.1.1: + resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash.truncate@4.4.2: + resolution: {integrity: sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==} + + lodash.uniq@4.5.0: + resolution: {integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==} + + lodash.upperfirst@4.3.1: + resolution: {integrity: sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==} + + lodash@4.17.21: + resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@5.0.1: + resolution: {integrity: sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + longest@2.0.1: + resolution: {integrity: sha512-Ajzxb8CM6WAnFjgiloPsI3bF+WCxcvhdIG3KNA2KN962+tdBsHcuQ4k4qX/EcS/2CRkcc0iAkR956Nib6aXU/Q==} + engines: {node: '>=0.10.0'} + + loupe@2.3.7: + resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + lru-cache@6.0.0: + resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} + engines: {node: '>=10'} + + lru_map@0.3.3: + resolution: {integrity: sha512-Pn9cox5CsMYngeDbmChANltQl+5pi6XmTrraMSzhPmMBbmgcxmqWry0U3PGapCU1yB4/LqCcom7qhHZiF/jGfQ==} + + magic-string@0.25.9: + resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==} + + magic-string@0.27.0: + resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} + engines: {node: '>=12'} + + magic-string@0.30.11: + resolution: {integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==} + + make-error@1.3.6: + resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} + + map-obj@1.0.1: + resolution: {integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==} + engines: {node: '>=0.10.0'} + + map-obj@4.3.0: + resolution: {integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==} + engines: {node: '>=8'} + + markdown-table@1.1.3: + resolution: {integrity: sha512-1RUZVgQlpJSPWYbFSpmudq5nHY1doEIv89gBtF0s4gW1GF2XorxcA/70M5vq7rLv0a6mhOUccRsqkwhwLCIQ2Q==} + + match-all@1.2.6: + resolution: {integrity: sha512-0EESkXiTkWzrQQntBu2uzKvLu6vVkUGz40nGPbSZuegcfE5UuSzNjLaIu76zJWuaT/2I3Z/8M06OlUOZLGwLlQ==} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + meow@8.1.2: + resolution: {integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==} + engines: {node: '>=10'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + merge@2.1.1: + resolution: {integrity: sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==} + + micro-ftch@0.3.1: + resolution: {integrity: sha512-/0LLxhzP0tfiR5hcQebtudP56gUurs2CLkGarnCiB/OqEyUFQ6U3paQi/tgLv0hBJYt2rnr9MNpxz4fiiugstg==} + + micromatch@4.0.5: + resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} + engines: {node: '>=8.6'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-fn@4.0.0: + resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} + engines: {node: '>=12'} + + min-indent@1.0.1: + resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} + engines: {node: '>=4'} + + minimalistic-assert@1.0.1: + resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} + + minimalistic-crypto-utils@1.0.1: + resolution: {integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==} + + minimatch@3.1.2: + resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} + + minimatch@5.1.6: + resolution: {integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==} + engines: {node: '>=10'} + + minimatch@9.0.5: + resolution: {integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist-options@4.1.0: + resolution: {integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==} + engines: {node: '>= 6'} + + minimist@1.2.7: + resolution: {integrity: sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.2: + resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==} + engines: {node: '>=16 || 14 >=14.17'} + + mkdirp@0.5.6: + resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} + hasBin: true + + mkdirp@1.0.4: + resolution: {integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==} + engines: {node: '>=10'} + hasBin: true + + mnemonist@0.38.5: + resolution: {integrity: sha512-bZTFT5rrPKtPJxj8KSV0WkPyNxl72vQepqqVUAW2ARUpUSF2qXMB6jZj7hW5/k7C1rtpzqbD/IIbJwLXUjCHeg==} + + mocha@10.7.3: + resolution: {integrity: sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==} + engines: {node: '>= 14.0.0'} + hasBin: true + + ms@2.1.2: + resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + murmur-128@0.2.1: + resolution: {integrity: sha512-WseEgiRkI6aMFBbj8Cg9yBj/y+OdipwVC7zUo3W2W1JAJITwouUOtpqsmGSg67EQmwwSyod7hsVsWY5LsrfQVg==} + + mute-stream@0.0.8: + resolution: {integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==} + + nanoid@3.3.7: + resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + ndjson@2.0.0: + resolution: {integrity: sha512-nGl7LRGrzugTtaFcJMhLbpzJM6XdivmbkdlaGcrk/LXg2KL/YBC6z1g70xh0/al+oFuVFP8N8kiWRucmeEH/qQ==} + engines: {node: '>=10'} + hasBin: true + + neo-async@2.6.2: + resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} + + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + + node-emoji@1.11.0: + resolution: {integrity: sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-gyp-build@4.8.2: + resolution: {integrity: sha512-IRUxE4BVsHWXkV/SFOut4qTlagw2aM8T5/vnTsmrHJvVoKueJHRc/JaFND7QDDc61kLYUJ6qlZM3sqTSyx2dTw==} + hasBin: true + + node-releases@2.0.18: + resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==} + + nofilter@3.1.0: + resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} + engines: {node: '>=12.19'} + + nopt@3.0.6: + resolution: {integrity: sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==} + hasBin: true + + normalize-package-data@2.5.0: + resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} + + normalize-package-data@3.0.3: + resolution: {integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==} + engines: {node: '>=10'} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@5.3.0: + resolution: {integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + number-to-bn@1.7.0: + resolution: {integrity: sha512-wsJ9gfSz1/s4ZsJN01lyonwuxA1tml6X1yBDnfpMglypcBRFZZkus26EdPSlqS5GJfYddVZa22p3VNb3z5m5Ig==} + engines: {node: '>=6.5.0', npm: '>=3'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + object-inspect@1.13.2: + resolution: {integrity: sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==} + engines: {node: '>= 0.4'} + + obliterator@2.0.4: + resolution: {integrity: sha512-lgHwxlxV1qIg1Eap7LgIeoBWIMFibOjbrYPIPJZcI1mmGAI2m3lNYpK12Y+GBdPQ0U1hRwSord7GIaawz962qQ==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@6.0.0: + resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} + engines: {node: '>=12'} + + open@8.4.2: + resolution: {integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==} + engines: {node: '>=12'} + + optionator@0.8.3: + resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} + engines: {node: '>= 0.8.0'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ora@5.4.1: + resolution: {integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==} + engines: {node: '>=10'} + + ordinal@1.0.3: + resolution: {integrity: sha512-cMddMgb2QElm8G7vdaa02jhUNbTSrhsgAGUz1OokD83uJTwSUn+nKoNoKVVaRa08yF6sgfO7Maou1+bgLd9rdQ==} + + os-tmpdir@1.0.2: + resolution: {integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==} + engines: {node: '>=0.10.0'} + + p-limit@1.3.0: + resolution: {integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==} + engines: {node: '>=4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@2.0.0: + resolution: {integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==} + engines: {node: '>=4'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-map@4.0.0: + resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} + engines: {node: '>=10'} + + p-try@1.0.0: + resolution: {integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==} + engines: {node: '>=4'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.0: + resolution: {integrity: sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-cache-control@1.0.1: + resolution: {integrity: sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-passwd@1.0.0: + resolution: {integrity: sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==} + engines: {node: '>=0.10.0'} + + path-exists@3.0.0: + resolution: {integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==} + engines: {node: '>=4'} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-starts-with@2.0.1: + resolution: {integrity: sha512-wZ3AeiRBRlNwkdUxvBANh0+esnt38DLffHDujZyRHkqkaKHTglnY2EP5UX3b8rdeiSutgO4y9NEJwXezNP5vHg==} + engines: {node: '>=8'} + + path-type@3.0.0: + resolution: {integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==} + engines: {node: '>=4'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathval@1.1.1: + resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + + pbkdf2@3.1.2: + resolution: {integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==} + engines: {node: '>=0.12'} + + picocolors@1.1.0: + resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} + + picomatch@2.3.1: + resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + engines: {node: '>=8.6'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pluralize@8.0.0: + resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==} + engines: {node: '>=4'} + + postcss@8.4.45: + resolution: {integrity: sha512-7KTLTdzdZZYscUc65XmjFiB73vBhBfbPztCYdUNvlaso9PrzjzcmjqBPR0lNGkcVlcO4BjiO5rK/qNz+XAen1Q==} + engines: {node: ^10 || ^12 || >=14} + + prelude-ls@1.1.2: + resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} + engines: {node: '>= 0.8.0'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.0: + resolution: {integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==} + engines: {node: '>=6.0.0'} + + prettier-plugin-solidity@1.4.1: + resolution: {integrity: sha512-Mq8EtfacVZ/0+uDKTtHZGW3Aa7vEbX/BNx63hmVg6YTiTXSiuKP0amj0G6pGwjmLaOfymWh3QgXEZkjQbU8QRg==} + engines: {node: '>=16'} + peerDependencies: + prettier: '>=2.3.0' + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + promise@8.3.0: + resolution: {integrity: sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proper-lockfile@4.1.2: + resolution: {integrity: sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==} + + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qs@6.13.0: + resolution: {integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quick-lru@4.0.1: + resolution: {integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==} + engines: {node: '>=8'} + + randombytes@2.1.0: + resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + + raw-body@2.5.2: + resolution: {integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==} + engines: {node: '>= 0.8'} + + read-pkg-up@7.0.1: + resolution: {integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==} + engines: {node: '>=8'} + + read-pkg@3.0.0: + resolution: {integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==} + engines: {node: '>=4'} + + read-pkg@5.2.0: + resolution: {integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==} + engines: {node: '>=8'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readdirp@3.6.0: + resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} + engines: {node: '>=8.10.0'} + + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + + recursive-readdir@2.2.3: + resolution: {integrity: sha512-8HrF5ZsXk5FAH9dgsx3BlUer73nIhuj+9OrQwEbLTPOBzGkL1lsFCR01am+v+0m2Cmbs1nP12hLDl5FA7EszKA==} + engines: {node: '>=6.0.0'} + + redent@3.0.0: + resolution: {integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==} + engines: {node: '>=8'} + + reduce-flatten@2.0.0: + resolution: {integrity: sha512-EJ4UNY/U1t2P/2k6oqotuX2Cc3T6nxJwsM0N0asT7dhrtH1ltUxDn4NalSYmPE2rCkVpcf/X6R0wDwcFpzhd4w==} + engines: {node: '>=6'} + + req-cwd@2.0.0: + resolution: {integrity: sha512-ueoIoLo1OfB6b05COxAA9UpeoscNpYyM+BqYlA7H6LVF4hKGPXQQSSaD2YmvDVJMkk4UDpAHIeU1zG53IqjvlQ==} + engines: {node: '>=4'} + + req-from@2.0.0: + resolution: {integrity: sha512-LzTfEVDVQHBRfjOUMgNBA+V6DWsSnoeKzf42J7l0xa/B4jyPOuuF5MlNSmomLNGemWTnV2TIdjSSLnEn95fOQA==} + engines: {node: '>=4'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-dir@1.0.1: + resolution: {integrity: sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==} + engines: {node: '>=0.10.0'} + + resolve-from@3.0.0: + resolution: {integrity: sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==} + engines: {node: '>=4'} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-global@1.0.0: + resolution: {integrity: sha512-zFa12V4OLtT5XUX/Q4VLvTfBf+Ok0SPc1FNGM/z9ctUdiU618qwKpWnd0CHs3+RqROfyEg/DhuHbMWYqcgljEw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.1.7: + resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} + + resolve@1.17.0: + resolution: {integrity: sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==} + + resolve@1.22.8: + resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} + hasBin: true + + restore-cursor@3.1.0: + resolution: {integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==} + engines: {node: '>=8'} + + restore-cursor@4.0.0: + resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + retry@0.12.0: + resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} + engines: {node: '>= 4'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + reusify@1.0.4: + resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@2.7.1: + resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@3.0.2: + resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true + + rimraf@5.0.10: + resolution: {integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==} + hasBin: true + + ripemd160@2.0.2: + resolution: {integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==} + + rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + + rollup-plugin-auto-external@2.0.0: + resolution: {integrity: sha512-HQM3ZkZYfSam1uoZtAB9sK26EiAsfs1phrkf91c/YX+S07wugyRXSigBxrIwiLr5EPPilKYmoMxsrnlGBsXnuQ==} + engines: {node: '>=6'} + peerDependencies: + rollup: '>=0.45.2' + + rollup-plugin-dts@6.1.1: + resolution: {integrity: sha512-aSHRcJ6KG2IHIioYlvAOcEq6U99sVtqDDKVhnwt70rW6tsz3tv5OSjEiWcgzfsHdLyGXZ/3b/7b/+Za3Y6r1XA==} + engines: {node: '>=16'} + peerDependencies: + rollup: ^3.29.4 || ^4 + typescript: ^4.5 || ^5.0 + + rollup-plugin-esbuild@6.1.1: + resolution: {integrity: sha512-CehMY9FAqJD5OUaE/Mi1r5z0kNeYxItmRO2zG4Qnv2qWKF09J2lTy5GUzjJR354ZPrLkCj4fiBN41lo8PzBUhw==} + engines: {node: '>=14.18.0'} + peerDependencies: + esbuild: '>=0.18.0' + rollup: ^1.20.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 + + rollup-plugin-inject@3.0.2: + resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==} + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject. + + rollup-plugin-node-polyfills@0.2.1: + resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==} + + rollup-plugin-swc3@0.11.2: + resolution: {integrity: sha512-o1ih9B806fV2wBSNk46T0cYfTF2eiiKmYXRpWw3K4j/Cp3tCAt10UCVsTqvUhGP58pcB3/GZcAVl5e7TCSKN6Q==} + engines: {node: '>=12'} + peerDependencies: + '@swc/core': '>=1.2.165' + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 + + rollup-pluginutils@2.8.2: + resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==} + + rollup-preserve-directives@1.1.1: + resolution: {integrity: sha512-+eQafbuEfDPfxQ9hQPlwaROfin4yiVRxap8hnrvvvcSGoukv1tTiYpAW9mvm3uR8J+fe4xd8FdVd5rz9q7jZ+Q==} + peerDependencies: + rollup: ^2.0.0 || ^3.0.0 || ^4.0.0 + + rollup@4.21.2: + resolution: {integrity: sha512-e3TapAgYf9xjdLvKQCkQTnbTKd4a6jwlpQSJJFokHGaX2IVjoEqkIIhiQfqsi0cdwlOD+tQGuOd5AJkc5RngBw==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-async@2.4.1: + resolution: {integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==} + engines: {node: '>=0.12.0'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.1: + resolution: {integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-resolve@1.0.0: + resolution: {integrity: sha512-aQpRvfxoi1y0UxKEU0tNO327kb0/LMo8Xrk64M2u172UqOOLCCM0khxN2OTClDiTqTJz5864GMD1X92j4YiHTg==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + sc-istanbul@0.4.6: + resolution: {integrity: sha512-qJFF/8tW/zJsbyfh/iT/ZM5QNHE3CXxtLJbZsL+CzdJLBsPD7SedJZoUA4d8iAcN2IoMp/Dx80shOOd2x96X/g==} + hasBin: true + + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + secp256k1@4.0.3: + resolution: {integrity: sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==} + engines: {node: '>=10.0.0'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.5.4: + resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.6.3: + resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==} + engines: {node: '>=10'} + hasBin: true + + serialize-javascript@6.0.2: + resolution: {integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==} + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + setimmediate@1.0.5: + resolution: {integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==} + + setprototypeof@1.2.0: + resolution: {integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==} + + sha.js@2.4.11: + resolution: {integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==} + hasBin: true + + sha1@1.1.1: + resolution: {integrity: sha512-dZBS6OrMjtgVkopB1Gmo4RQCDKiZsqcpAQpkV/aaj+FCrCg8r4I4qMkDPQjBgLIxlmu9k4nUbWq6ohXahOneYA==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + + shx@0.3.4: + resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} + engines: {node: '>=6'} + hasBin: true + + side-channel@1.0.6: + resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} + engines: {node: '>= 0.4'} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + slice-ansi@4.0.0: + resolution: {integrity: sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==} + engines: {node: '>=10'} + + slice-ansi@5.0.0: + resolution: {integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==} + engines: {node: '>=12'} + + solc@0.8.26: + resolution: {integrity: sha512-yiPQNVf5rBFHwN6SIf3TUUvVAFKcQqmSUFeq+fb6pNRCo0ZCgpYOZDi3BVoezCPIAcKrVYd/qXlBLUP9wVrZ9g==} + engines: {node: '>=10.0.0'} + hasBin: true + + solhint-plugin-prettier@0.0.5: + resolution: {integrity: sha512-7jmWcnVshIrO2FFinIvDQmhQpfpS2rRRn3RejiYgnjIE68xO2bvrYvjqVNfrio4xH9ghOqn83tKuTzLjEbmGIA==} + peerDependencies: + prettier: ^1.15.0 || ^2.0.0 + prettier-plugin-solidity: ^1.0.0-alpha.14 + + solhint@3.6.2: + resolution: {integrity: sha512-85EeLbmkcPwD+3JR7aEMKsVC9YrRSxd4qkXuMzrlf7+z2Eqdfm1wHWq1ffTuo5aDhoZxp2I9yF3QkxZOxOL7aQ==} + hasBin: true + + solidity-ast@0.4.59: + resolution: {integrity: sha512-I+CX0wrYUN9jDfYtcgWSe+OAowaXy8/1YQy7NS4ni5IBDmIYBq7ZzaP/7QqouLjzZapmQtvGLqCaYgoUWqBo5g==} + + solidity-coverage@0.8.13: + resolution: {integrity: sha512-RiBoI+kF94V3Rv0+iwOj3HQVSqNzA9qm/qDP1ZDXK5IX0Cvho1qiz8hAXTsAo6KOIUeP73jfscq0KlLqVxzGWA==} + hasBin: true + peerDependencies: + hardhat: ^2.11.0 + + solmate@6.2.0: + resolution: {integrity: sha512-AM38ioQ2P8zRsA42zenb9or6OybRjOLXIu3lhIT8rhddUuduCt76pUEuLxOIg9GByGojGz+EbpFdCB6B+QZVVA==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + + source-map@0.2.0: + resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==} + engines: {node: '>=0.8.0'} + + source-map@0.5.7: + resolution: {integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + sourcemap-codec@1.4.8: + resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} + deprecated: Please use @jridgewell/sourcemap-codec instead + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.20: + resolution: {integrity: sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==} + + split2@3.2.2: + resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + squirrelly@8.0.8: + resolution: {integrity: sha512-7dyZJ9Gw86MmH0dYLiESsjGOTj6KG8IWToTaqBuB6LwPI+hyNb6mbQaZwrfnAQ4cMDnSWMUvX/zAYDLTSWLk/w==} + engines: {node: '>=6.0.0'} + + stacktrace-parser@0.1.10: + resolution: {integrity: sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==} + engines: {node: '>=6'} + + statuses@2.0.1: + resolution: {integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==} + engines: {node: '>= 0.8'} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-format@2.0.0: + resolution: {integrity: sha512-bbEs3scLeYNXLecRRuk6uJxdXUSj6le/8rNPHChIJTn2V79aXVTR1EH2OH5zLKKoz0V02fOUKZZcw01pLUShZA==} + + string-width@2.1.1: + resolution: {integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==} + engines: {node: '>=4'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@4.0.0: + resolution: {integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==} + engines: {node: '>=4'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.1.0: + resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-bom@4.0.0: + resolution: {integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==} + engines: {node: '>=8'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@3.0.0: + resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} + engines: {node: '>=12'} + + strip-hex-prefix@1.0.0: + resolution: {integrity: sha512-q8d4ue7JGEiVcypji1bALTos+0pWtyGlivAWyPuTkHzuTCJqrK9sWxYQZUq6Nq3cuyv3bm734IhHvHtGGURU6A==} + engines: {node: '>=6.5.0', npm: '>=3'} + + strip-indent@3.0.0: + resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} + engines: {node: '>=8'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supports-color@3.2.3: + resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} + engines: {node: '>=0.8.0'} + + supports-color@5.5.0: + resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} + engines: {node: '>=4'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + sync-request@6.1.0: + resolution: {integrity: sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==} + engines: {node: '>=8.0.0'} + + sync-rpc@1.3.6: + resolution: {integrity: sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==} + + table-layout@1.0.2: + resolution: {integrity: sha512-qd/R7n5rQTRFi+Zf2sk5XVVd9UQl6ZkduPFC3S7WEGJAmetDTjY3qPN50eSKzwuzEyQKy5TN2TiZdkIjos2L6A==} + engines: {node: '>=8.0.0'} + + table@6.8.2: + resolution: {integrity: sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==} + engines: {node: '>=10.0.0'} + + tenderly@0.9.1: + resolution: {integrity: sha512-EGhYYbOgIC0EUebrMIwCRIL9NrGrC8q3gTY/3JNSqvQrNX4RLUgMHungTG4bkgGAwJoehC57vsAeKqR1PVIyjw==} + peerDependencies: + ts-node: '*' + typescript: '*' + peerDependenciesMeta: + ts-node: + optional: true + typescript: + optional: true + + text-extensions@1.9.0: + resolution: {integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==} + engines: {node: '>=0.10'} + + text-table@0.2.0: + resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} + + then-request@6.0.2: + resolution: {integrity: sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==} + engines: {node: '>=6.0.0'} + + through2@4.0.2: + resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tmp@0.0.33: + resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} + engines: {node: '>=0.6.0'} + + to-fast-properties@2.0.0: + resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} + engines: {node: '>=4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + toidentifier@1.0.1: + resolution: {integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==} + engines: {node: '>=0.6'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + trim-newlines@3.0.1: + resolution: {integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==} + engines: {node: '>=8'} + + ts-api-utils@1.3.0: + resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} + engines: {node: '>=16'} + peerDependencies: + typescript: '>=4.2.0' + + ts-command-line-args@2.5.1: + resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} + hasBin: true + + ts-essentials@7.0.3: + resolution: {integrity: sha512-8+gr5+lqO3G84KdiTSMRLtuyJ+nTBVRKuCrK4lidMPdVeEp0uqC875uE5NMcaA7YYMN7XsNiFQuMvasF8HT/xQ==} + peerDependencies: + typescript: '>=3.7.0' + + ts-node@10.9.2: + resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} + hasBin: true + peerDependencies: + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' + peerDependenciesMeta: + '@swc/core': + optional: true + '@swc/wasm': + optional: true + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.4.0: + resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} + + tslib@2.7.0: + resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} + + tslog@4.9.3: + resolution: {integrity: sha512-oDWuGVONxhVEBtschLf2cs/Jy8i7h1T+CpdkTNWQgdAF7DhRo2G8vMCgILKe7ojdEkLhICWgI1LYSSKaJsRgcw==} + engines: {node: '>=16'} + + tsort@0.0.1: + resolution: {integrity: sha512-Tyrf5mxF8Ofs1tNoxA13lFeZ2Zrbd6cKbuH3V+MQ5sb6DtBj5FjrXVsRWT8YvNAQTqNoz66dz1WsbigI22aEnw==} + + tweetnacl-util@0.15.1: + resolution: {integrity: sha512-RKJBIj8lySrShN4w6i/BonWp2Z/uxwC3h4y7xsRrpP59ZboCd0GpEVsOnMDYLMmKBpYhb5TgHzZXy7wTfYFBRw==} + + tweetnacl@1.0.3: + resolution: {integrity: sha512-6rt+RN7aOi1nGMyC4Xa5DdYiukl2UWCbcJft7YhxReBGQD7OAM8Pbxw6YMo4r2diNEA8FEmu32YOn9rhaiE5yw==} + + type-check@0.3.2: + resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} + engines: {node: '>= 0.8.0'} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-detect@4.1.0: + resolution: {integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==} + engines: {node: '>=4'} + + type-fest@0.18.1: + resolution: {integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==} + engines: {node: '>=10'} + + type-fest@0.20.2: + resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} + engines: {node: '>=10'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@0.6.0: + resolution: {integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==} + engines: {node: '>=8'} + + type-fest@0.7.1: + resolution: {integrity: sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==} + engines: {node: '>=8'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + type-fest@1.4.0: + resolution: {integrity: sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==} + engines: {node: '>=10'} + + typechain@8.3.2: + resolution: {integrity: sha512-x/sQYr5w9K7yv3es7jo4KTX05CLxOf7TRWwoHlrjRh8H82G64g+k7VuWPJlgMo6qrjfCulOdfBjiaDtmhFYD/Q==} + hasBin: true + peerDependencies: + typescript: '>=4.3.0' + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript@5.6.2: + resolution: {integrity: sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==} + engines: {node: '>=14.17'} + hasBin: true + + typical@4.0.0: + resolution: {integrity: sha512-VAH4IvQ7BDFYglMd7BPRDfLgxZZX4O4TFcRDA6EN5X7erNJJq+McIEp8np9aVtxrCJ6qx4GTYVfOWNjcqwZgRw==} + engines: {node: '>=8'} + + typical@5.2.0: + resolution: {integrity: sha512-dvdQgNDNJo+8B2uBQoqdb11eUCE1JQXhvjC/CZtgvZseVd5TYMXnq0+vuUemXbd/Se29cTaUuPX3YIc2xgbvIg==} + engines: {node: '>=8'} + + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + + undici-types@5.26.5: + resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + + undici@5.28.4: + resolution: {integrity: sha512-72RFADWFqKmUb2hmmvNODKL3p9hcB6Gt2DOQMis1SEBaV6a4MH8soBvzg+95CYhCKPFedut2JY9bMfrDl9D23g==} + engines: {node: '>=14.0'} + + undici@6.19.8: + resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==} + engines: {node: '>=18.17'} + + unfetch@4.2.0: + resolution: {integrity: sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA==} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unpipe@1.0.0: + resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==} + engines: {node: '>= 0.8'} + + update-browserslist-db@1.1.0: + resolution: {integrity: sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + utf8@3.0.0: + resolution: {integrity: sha512-E8VjFIQ/TyQgp+TZfS6l8yp/xWppSAHzidGiRrqe4bK4XP9pTRyKFgGJpO3SN7zdX4DeomTrwaseCHovfpFcqQ==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + + v8-compile-cache-lib@3.0.1: + resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + viem@2.21.5: + resolution: {integrity: sha512-MFuoeGA8hRJJ0CknSuKYZjVaxSy5hyzu9MCArOANz3Iq5RITBJNIhM+m6TNvO9I2AxCSF3+PZObjbrLVg7cX2w==} + peerDependencies: + typescript: '>=5.0.4' + peerDependenciesMeta: + typescript: + optional: true + + wcwidth@1.0.1: + resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} + + web3-utils@1.10.4: + resolution: {integrity: sha512-tsu8FiKJLk2PzhDl9fXbGUWTkkVXYhtTA+SmEFkKft+9BgwLxfCRpU96sWv7ICC8zixBNd3JURVoiR3dUXgP8A==} + engines: {node: '>=8.0.0'} + + webauthn-p256@0.0.5: + resolution: {integrity: sha512-drMGNWKdaixZNobeORVIqq7k5DsRC9FnG201K2QjeOoQLmtSDaSsVZdkg6n5jUALJKcAG++zBPJXmv6hy0nWFg==} + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + wordwrapjs@4.0.1: + resolution: {integrity: sha512-kKlNACbvHrkpIw6oPeYDSmdCTu2hdMHoyXLTcUKala++lx5Y+wjJ/e474Jqv5abnVmwxw08DiTuHmw69lJGksA==} + engines: {node: '>=8.0.0'} + + workerpool@6.5.1: + resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@7.4.6: + resolution: {integrity: sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==} + 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 + + ws@7.5.10: + resolution: {integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==} + 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 + + ws@8.17.1: + resolution: {integrity: sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + xdeployer@2.2.2: + resolution: {integrity: sha512-CmkADnwn9M7J33Rrb1sbaI5mBaXrRr2kLEw5W6QMeTJkXw57ae7/IIBYHDbuFLu7L60J3ZF21KdpHjmSMkUsVQ==} + engines: {node: '>=14.0.0'} + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.5 + ethers: ^6.9.0 + hardhat: ^2.19.2 + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@4.0.0: + resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + + yaml@2.3.1: + resolution: {integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==} + engines: {node: '>= 14'} + + yargs-parser@20.2.9: + resolution: {integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==} + engines: {node: '>=10'} + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs-unparser@2.0.0: + resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} + engines: {node: '>=10'} + + yargs@16.2.0: + resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} + engines: {node: '>=10'} + + yargs@17.7.2: + resolution: {integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==} + engines: {node: '>=12'} + + yn@3.1.1: + resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} + engines: {node: '>=6'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + zksync-web3@0.14.4: + resolution: {integrity: sha512-kYehMD/S6Uhe1g434UnaMN+sBr9nQm23Ywn0EUP5BfQCsbjcr3ORuS68PosZw8xUTu3pac7G6YMSnNHk+fwzvg==} + deprecated: This package has been deprecated in favor of zksync-ethers@5.0.0 + peerDependencies: + ethers: ^5.7.0 + +snapshots: + + '@adraffy/ens-normalize@1.10.0': {} + + '@adraffy/ens-normalize@1.10.1': {} + + '@ampproject/remapping@2.3.0': + dependencies: + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + + '@aws-crypto/sha256-js@1.2.2': + dependencies: + '@aws-crypto/util': 1.2.2 + '@aws-sdk/types': 3.649.0 + tslib: 1.14.1 + + '@aws-crypto/util@1.2.2': + dependencies: + '@aws-sdk/types': 3.649.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-sdk/types@3.649.0': + dependencies: + '@smithy/types': 3.4.0 + tslib: 2.7.0 + + '@aws-sdk/util-utf8-browser@3.259.0': + dependencies: + tslib: 2.7.0 + + '@babel/code-frame@7.24.7': + dependencies: + '@babel/highlight': 7.24.7 + picocolors: 1.1.0 + + '@babel/compat-data@7.25.4': {} + + '@babel/core@7.17.8': + dependencies: + '@ampproject/remapping': 2.3.0 + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.17.7 + '@babel/helper-compilation-targets': 7.25.2 + '@babel/helper-module-transforms': 7.25.2(@babel/core@7.17.8) + '@babel/helpers': 7.25.6 + '@babel/parser': 7.18.9 + '@babel/template': 7.25.0 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 + convert-source-map: 1.9.0 + debug: 4.3.7(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.17.7': + dependencies: + '@babel/types': 7.17.0 + jsesc: 2.5.2 + source-map: 0.5.7 + + '@babel/generator@7.25.6': + dependencies: + '@babel/types': 7.25.6 + '@jridgewell/gen-mapping': 0.3.5 + '@jridgewell/trace-mapping': 0.3.25 + jsesc: 2.5.2 + + '@babel/helper-compilation-targets@7.25.2': + dependencies: + '@babel/compat-data': 7.25.4 + '@babel/helper-validator-option': 7.24.8 + browserslist: 4.23.3 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-environment-visitor@7.24.7': + dependencies: + '@babel/types': 7.25.6 + + '@babel/helper-function-name@7.24.7': + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + + '@babel/helper-hoist-variables@7.24.7': + dependencies: + '@babel/types': 7.25.6 + + '@babel/helper-module-imports@7.24.7': + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.25.2(@babel/core@7.17.8)': + dependencies: + '@babel/core': 7.17.8 + '@babel/helper-module-imports': 7.24.7 + '@babel/helper-simple-access': 7.24.7 + '@babel/helper-validator-identifier': 7.24.7 + '@babel/traverse': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-simple-access@7.24.7': + dependencies: + '@babel/traverse': 7.25.6 + '@babel/types': 7.25.6 + transitivePeerDependencies: + - supports-color + + '@babel/helper-split-export-declaration@7.24.7': + dependencies: + '@babel/types': 7.25.6 + + '@babel/helper-string-parser@7.24.8': {} + + '@babel/helper-validator-identifier@7.24.7': {} + + '@babel/helper-validator-option@7.24.8': {} + + '@babel/helpers@7.25.6': + dependencies: + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + + '@babel/highlight@7.24.7': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + chalk: 2.4.2 + js-tokens: 4.0.0 + picocolors: 1.1.0 + + '@babel/parser@7.18.9': + dependencies: + '@babel/types': 7.17.0 + + '@babel/parser@7.25.6': + dependencies: + '@babel/types': 7.25.6 + + '@babel/template@7.25.0': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/parser': 7.25.6 + '@babel/types': 7.25.6 + + '@babel/traverse@7.17.3': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.17.7 + '@babel/helper-environment-visitor': 7.24.7 + '@babel/helper-function-name': 7.24.7 + '@babel/helper-hoist-variables': 7.24.7 + '@babel/helper-split-export-declaration': 7.24.7 + '@babel/parser': 7.18.9 + '@babel/types': 7.17.0 + debug: 4.3.7(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/traverse@7.25.6': + dependencies: + '@babel/code-frame': 7.24.7 + '@babel/generator': 7.25.6 + '@babel/parser': 7.25.6 + '@babel/template': 7.25.0 + '@babel/types': 7.25.6 + debug: 4.3.7(supports-color@8.1.1) + globals: 11.12.0 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.17.0': + dependencies: + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@babel/types@7.25.6': + dependencies: + '@babel/helper-string-parser': 7.24.8 + '@babel/helper-validator-identifier': 7.24.7 + to-fast-properties: 2.0.0 + + '@chainlink/contracts@0.8.0(ethers@6.13.2)': + dependencies: + '@eth-optimism/contracts': 0.5.40(ethers@6.13.2) + '@openzeppelin/contracts': 4.3.3 + '@openzeppelin/contracts-upgradeable-4.7.3': '@openzeppelin/contracts-upgradeable@4.7.3' + '@openzeppelin/contracts-v0.7': '@openzeppelin/contracts@3.4.2' + transitivePeerDependencies: + - bufferutil + - ethers + - utf-8-validate + + '@colors/colors@1.5.0': + optional: true + + '@commitlint/cli@17.8.1(@swc/core@1.7.26)': + dependencies: + '@commitlint/format': 17.8.1 + '@commitlint/lint': 17.8.1 + '@commitlint/load': 17.8.1(@swc/core@1.7.26) + '@commitlint/read': 17.8.1 + '@commitlint/types': 17.8.1 + execa: 5.1.1 + lodash.isfunction: 3.0.9 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + + '@commitlint/config-conventional@17.8.1': + dependencies: + conventional-changelog-conventionalcommits: 6.1.0 + + '@commitlint/config-validator@17.8.1': + dependencies: + '@commitlint/types': 17.8.1 + ajv: 8.17.1 + + '@commitlint/config-validator@19.5.0': + dependencies: + '@commitlint/types': 19.5.0 + ajv: 8.17.1 + optional: true + + '@commitlint/ensure@17.8.1': + dependencies: + '@commitlint/types': 17.8.1 + lodash.camelcase: 4.3.0 + lodash.kebabcase: 4.1.1 + lodash.snakecase: 4.1.1 + lodash.startcase: 4.4.0 + lodash.upperfirst: 4.3.1 + + '@commitlint/execute-rule@17.8.1': {} + + '@commitlint/execute-rule@19.5.0': + optional: true + + '@commitlint/format@17.8.1': + dependencies: + '@commitlint/types': 17.8.1 + chalk: 4.1.2 + + '@commitlint/is-ignored@17.8.1': + dependencies: + '@commitlint/types': 17.8.1 + semver: 7.5.4 + + '@commitlint/lint@17.8.1': + dependencies: + '@commitlint/is-ignored': 17.8.1 + '@commitlint/parse': 17.8.1 + '@commitlint/rules': 17.8.1 + '@commitlint/types': 17.8.1 + + '@commitlint/load@17.8.1(@swc/core@1.7.26)': + dependencies: + '@commitlint/config-validator': 17.8.1 + '@commitlint/execute-rule': 17.8.1 + '@commitlint/resolve-extends': 17.8.1 + '@commitlint/types': 17.8.1 + '@types/node': 20.5.1 + chalk: 4.1.2 + cosmiconfig: 8.3.6(typescript@5.6.2) + cosmiconfig-typescript-loader: 4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.6.2))(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.5.1)(typescript@5.6.2))(typescript@5.6.2) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + resolve-from: 5.0.0 + ts-node: 10.9.2(@swc/core@1.7.26)(@types/node@20.5.1)(typescript@5.6.2) + typescript: 5.6.2 + transitivePeerDependencies: + - '@swc/core' + - '@swc/wasm' + + '@commitlint/load@19.5.0(@types/node@18.19.50)(typescript@5.6.2)': + dependencies: + '@commitlint/config-validator': 19.5.0 + '@commitlint/execute-rule': 19.5.0 + '@commitlint/resolve-extends': 19.5.0 + '@commitlint/types': 19.5.0 + chalk: 5.3.0 + cosmiconfig: 9.0.0(typescript@5.6.2) + cosmiconfig-typescript-loader: 5.0.0(@types/node@18.19.50)(cosmiconfig@9.0.0(typescript@5.6.2))(typescript@5.6.2) + lodash.isplainobject: 4.0.6 + lodash.merge: 4.6.2 + lodash.uniq: 4.5.0 + transitivePeerDependencies: + - '@types/node' + - typescript + optional: true + + '@commitlint/message@17.8.1': {} + + '@commitlint/parse@17.8.1': + dependencies: + '@commitlint/types': 17.8.1 + conventional-changelog-angular: 6.0.0 + conventional-commits-parser: 4.0.0 + + '@commitlint/read@17.8.1': + dependencies: + '@commitlint/top-level': 17.8.1 + '@commitlint/types': 17.8.1 + fs-extra: 11.2.0 + git-raw-commits: 2.0.11 + minimist: 1.2.8 + + '@commitlint/resolve-extends@17.8.1': + dependencies: + '@commitlint/config-validator': 17.8.1 + '@commitlint/types': 17.8.1 + import-fresh: 3.3.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + resolve-global: 1.0.0 + + '@commitlint/resolve-extends@19.5.0': + dependencies: + '@commitlint/config-validator': 19.5.0 + '@commitlint/types': 19.5.0 + global-directory: 4.0.1 + import-meta-resolve: 4.1.0 + lodash.mergewith: 4.6.2 + resolve-from: 5.0.0 + optional: true + + '@commitlint/rules@17.8.1': + dependencies: + '@commitlint/ensure': 17.8.1 + '@commitlint/message': 17.8.1 + '@commitlint/to-lines': 17.8.1 + '@commitlint/types': 17.8.1 + execa: 5.1.1 + + '@commitlint/to-lines@17.8.1': {} + + '@commitlint/top-level@17.8.1': + dependencies: + find-up: 5.0.0 + + '@commitlint/types@17.8.1': + dependencies: + chalk: 4.1.2 + + '@commitlint/types@19.5.0': + dependencies: + '@types/conventional-commits-parser': 5.0.0 + chalk: 5.3.0 + optional: true + + '@cspotcode/source-map-support@0.8.1': + dependencies: + '@jridgewell/trace-mapping': 0.3.9 + + '@esbuild/aix-ppc64@0.23.1': + optional: true + + '@esbuild/android-arm64@0.23.1': + optional: true + + '@esbuild/android-arm@0.23.1': + optional: true + + '@esbuild/android-x64@0.23.1': + optional: true + + '@esbuild/darwin-arm64@0.23.1': + optional: true + + '@esbuild/darwin-x64@0.23.1': + optional: true + + '@esbuild/freebsd-arm64@0.23.1': + optional: true + + '@esbuild/freebsd-x64@0.23.1': + optional: true + + '@esbuild/linux-arm64@0.23.1': + optional: true + + '@esbuild/linux-arm@0.23.1': + optional: true + + '@esbuild/linux-ia32@0.23.1': + optional: true + + '@esbuild/linux-loong64@0.23.1': + optional: true + + '@esbuild/linux-mips64el@0.23.1': + optional: true + + '@esbuild/linux-ppc64@0.23.1': + optional: true + + '@esbuild/linux-riscv64@0.23.1': + optional: true + + '@esbuild/linux-s390x@0.23.1': + optional: true + + '@esbuild/linux-x64@0.23.1': + optional: true + + '@esbuild/netbsd-x64@0.23.1': + optional: true + + '@esbuild/openbsd-arm64@0.23.1': + optional: true + + '@esbuild/openbsd-x64@0.23.1': + optional: true + + '@esbuild/sunos-x64@0.23.1': + optional: true + + '@esbuild/win32-arm64@0.23.1': + optional: true + + '@esbuild/win32-ia32@0.23.1': + optional: true + + '@esbuild/win32-x64@0.23.1': + optional: true + + '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + dependencies: + eslint: 8.57.0 + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.11.0': {} + + '@eslint/eslintrc@2.1.4': + dependencies: + ajv: 6.12.6 + debug: 4.3.7(supports-color@8.1.1) + espree: 9.6.1 + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@8.57.0': {} + + '@eth-optimism/contracts@0.5.40(ethers@6.13.2)': + dependencies: + '@eth-optimism/core-utils': 0.12.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + ethers: 6.13.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@eth-optimism/core-utils@0.12.0': + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bufio: 1.2.1 + chai: 4.5.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@ethereumjs/rlp@4.0.1': {} + + '@ethereumjs/util@8.1.0': + dependencies: + '@ethereumjs/rlp': 4.0.1 + ethereum-cryptography: 2.2.1 + micro-ftch: 0.3.1 + + '@ethersproject/abi@5.7.0': + 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 + + '@ethersproject/abstract-provider@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + + '@ethersproject/abstract-signer@5.7.0': + 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 + + '@ethersproject/address@5.6.1': + 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 + + '@ethersproject/address@5.7.0': + 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 + + '@ethersproject/base64@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + + '@ethersproject/basex@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/properties': 5.7.0 + + '@ethersproject/bignumber@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + bn.js: 5.2.1 + + '@ethersproject/bytes@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/constants@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + + '@ethersproject/contracts@5.7.0': + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/transactions': 5.7.0 + + '@ethersproject/hash@5.7.0': + 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 + + '@ethersproject/hdnode@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + + '@ethersproject/json-wallets@5.7.0': + dependencies: + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + aes-js: 3.0.0 + scrypt-js: 3.0.1 + + '@ethersproject/keccak256@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + js-sha3: 0.8.0 + + '@ethersproject/logger@5.7.0': {} + + '@ethersproject/networks@5.7.1': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/pbkdf2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/sha2': 5.7.0 + + '@ethersproject/properties@5.7.0': + dependencies: + '@ethersproject/logger': 5.7.0 + + '@ethersproject/providers@5.7.2': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/web': 5.7.1 + bech32: 1.1.4 + ws: 7.4.6 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + '@ethersproject/random@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/rlp@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/sha2@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/logger': 5.7.0 + hash.js: 1.1.7 + + '@ethersproject/signing-key@5.7.0': + 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 + + '@ethersproject/solidity@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@ethersproject/strings@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/transactions@5.7.0': + 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 + + '@ethersproject/units@5.7.0': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/logger': 5.7.0 + + '@ethersproject/wallet@5.7.0': + dependencies: + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/random': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wordlists': 5.7.0 + + '@ethersproject/web@5.7.1': + 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 + + '@ethersproject/wordlists@5.7.0': + dependencies: + '@ethersproject/bytes': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/strings': 5.7.0 + + '@fastify/busboy@2.1.1': {} + + '@fastify/deepmerge@1.3.0': {} + + '@humanwhocodes/config-array@0.11.14': + dependencies: + '@humanwhocodes/object-schema': 2.0.3 + debug: 4.3.7(supports-color@8.1.1) + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/object-schema@2.0.3': {} + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.1.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.5': + dependencies: + '@jridgewell/set-array': 1.2.1 + '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/trace-mapping': 0.3.25 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/set-array@1.2.1': {} + + '@jridgewell/sourcemap-codec@1.5.0': {} + + '@jridgewell/trace-mapping@0.3.25': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@jridgewell/trace-mapping@0.3.9': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.0 + + '@looksrare/contracts-libs@3.5.1': {} + + '@metamask/eth-sig-util@4.0.1': + 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 + + '@noble/curves@1.2.0': + dependencies: + '@noble/hashes': 1.3.2 + + '@noble/curves@1.4.0': + dependencies: + '@noble/hashes': 1.4.0 + + '@noble/curves@1.4.2': + dependencies: + '@noble/hashes': 1.4.0 + + '@noble/hashes@1.2.0': {} + + '@noble/hashes@1.3.2': {} + + '@noble/hashes@1.4.0': {} + + '@noble/hashes@1.5.0': {} + + '@noble/secp256k1@1.7.1': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@nomicfoundation/edr-darwin-arm64@0.5.2': {} + + '@nomicfoundation/edr-darwin-x64@0.5.2': {} + + '@nomicfoundation/edr-linux-arm64-gnu@0.5.2': {} + + '@nomicfoundation/edr-linux-arm64-musl@0.5.2': {} + + '@nomicfoundation/edr-linux-x64-gnu@0.5.2': {} + + '@nomicfoundation/edr-linux-x64-musl@0.5.2': {} + + '@nomicfoundation/edr-win32-x64-msvc@0.5.2': {} + + '@nomicfoundation/edr@0.5.2': + dependencies: + '@nomicfoundation/edr-darwin-arm64': 0.5.2 + '@nomicfoundation/edr-darwin-x64': 0.5.2 + '@nomicfoundation/edr-linux-arm64-gnu': 0.5.2 + '@nomicfoundation/edr-linux-arm64-musl': 0.5.2 + '@nomicfoundation/edr-linux-x64-gnu': 0.5.2 + '@nomicfoundation/edr-linux-x64-musl': 0.5.2 + '@nomicfoundation/edr-win32-x64-msvc': 0.5.2 + + '@nomicfoundation/ethereumjs-common@4.0.4': + dependencies: + '@nomicfoundation/ethereumjs-util': 9.0.4 + transitivePeerDependencies: + - c-kzg + + '@nomicfoundation/ethereumjs-rlp@5.0.4': {} + + '@nomicfoundation/ethereumjs-tx@5.0.4': + dependencies: + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + ethereum-cryptography: 0.1.3 + + '@nomicfoundation/ethereumjs-util@9.0.4': + dependencies: + '@nomicfoundation/ethereumjs-rlp': 5.0.4 + ethereum-cryptography: 0.1.3 + + '@nomicfoundation/hardhat-chai-matchers@2.0.7(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(chai@4.5.0)(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))': + dependencies: + '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@types/chai-as-promised': 7.1.8 + chai: 4.5.0 + chai-as-promised: 7.1.2(chai@4.5.0) + deep-eql: 4.1.4 + ethers: 6.13.2 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + ordinal: 1.0.3 + + '@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))': + dependencies: + debug: 4.3.7(supports-color@8.1.1) + ethers: 6.13.2 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + lodash.isequal: 4.5.0 + transitivePeerDependencies: + - supports-color + + '@nomicfoundation/hardhat-ignition-ethers@0.15.5(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-ignition@0.15.5(@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/ignition-core@0.15.5)(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))': + dependencies: + '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@nomicfoundation/hardhat-ignition': 0.15.5(@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@nomicfoundation/ignition-core': 0.15.5 + ethers: 6.13.2 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + + '@nomicfoundation/hardhat-ignition@0.15.5(@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))': + dependencies: + '@nomicfoundation/hardhat-verify': 2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@nomicfoundation/ignition-core': 0.15.5 + '@nomicfoundation/ignition-ui': 0.15.5 + chalk: 4.1.2 + debug: 4.3.7(supports-color@8.1.1) + fs-extra: 10.1.0 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + prompts: 2.4.2 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@nomicfoundation/hardhat-network-helpers@1.0.11(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))': + dependencies: + ethereumjs-util: 7.1.5 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + + ? '@nomicfoundation/hardhat-toolbox@5.0.0(@nomicfoundation/hardhat-chai-matchers@2.0.7(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(chai@4.5.0)(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-ignition-ethers@0.15.5(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-ignition@0.15.5(@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/ignition-core@0.15.5)(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-network-helpers@1.0.11(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@typechain/ethers-v6@0.5.1(ethers@6.13.2)(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1(ethers@6.13.2)(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))(typechain@8.3.2(typescript@5.6.2)))(@types/chai@4.3.19)(@types/mocha@10.0.7)(@types/node@18.19.50)(chai@4.5.0)(ethers@6.13.2)(hardhat-gas-reporter@1.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))(solidity-coverage@0.8.13(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2)' + : dependencies: + '@nomicfoundation/hardhat-chai-matchers': 2.0.7(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(chai@4.5.0)(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@nomicfoundation/hardhat-ignition-ethers': 0.15.5(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-ignition@0.15.5(@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/ignition-core@0.15.5)(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@nomicfoundation/hardhat-network-helpers': 1.0.11(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@nomicfoundation/hardhat-verify': 2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@typechain/ethers-v6': 0.5.1(ethers@6.13.2)(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2) + '@typechain/hardhat': 9.1.0(@typechain/ethers-v6@0.5.1(ethers@6.13.2)(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))(typechain@8.3.2(typescript@5.6.2)) + '@types/chai': 4.3.19 + '@types/mocha': 10.0.7 + '@types/node': 18.19.50 + chai: 4.5.0 + ethers: 6.13.2 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + hardhat-gas-reporter: 1.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + solidity-coverage: 0.8.13(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + ts-node: 10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2) + typechain: 8.3.2(typescript@5.6.2) + typescript: 5.6.2 + + '@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))': + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/address': 5.7.0 + cbor: 8.1.0 + chalk: 2.4.2 + debug: 4.3.7(supports-color@8.1.1) + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + lodash.clonedeep: 4.5.0 + semver: 6.3.1 + table: 6.8.2 + undici: 5.28.4 + transitivePeerDependencies: + - supports-color + + '@nomicfoundation/hardhat-viem@2.0.4(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))(typescript@5.6.2)(viem@2.21.5(typescript@5.6.2))': + dependencies: + abitype: 0.9.10(typescript@5.6.2) + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + lodash.memoize: 4.1.2 + typescript: 5.6.2 + viem: 2.21.5(typescript@5.6.2) + transitivePeerDependencies: + - zod + + '@nomicfoundation/ignition-core@0.15.5': + dependencies: + '@ethersproject/address': 5.6.1 + '@nomicfoundation/solidity-analyzer': 0.1.2 + cbor: 9.0.2 + debug: 4.3.7(supports-color@8.1.1) + ethers: 6.13.2 + fs-extra: 10.1.0 + immer: 10.0.2 + lodash: 4.17.21 + ndjson: 2.0.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + '@nomicfoundation/ignition-ui@0.15.5': {} + + '@nomicfoundation/slang-darwin-arm64@0.17.0': {} + + '@nomicfoundation/slang-darwin-x64@0.17.0': {} + + '@nomicfoundation/slang-linux-arm64-gnu@0.17.0': {} + + '@nomicfoundation/slang-linux-arm64-musl@0.17.0': {} + + '@nomicfoundation/slang-linux-x64-gnu@0.17.0': {} + + '@nomicfoundation/slang-linux-x64-musl@0.17.0': {} + + '@nomicfoundation/slang-win32-arm64-msvc@0.17.0': {} + + '@nomicfoundation/slang-win32-ia32-msvc@0.17.0': {} + + '@nomicfoundation/slang-win32-x64-msvc@0.17.0': {} + + '@nomicfoundation/slang@0.17.0': + dependencies: + '@nomicfoundation/slang-darwin-arm64': 0.17.0 + '@nomicfoundation/slang-darwin-x64': 0.17.0 + '@nomicfoundation/slang-linux-arm64-gnu': 0.17.0 + '@nomicfoundation/slang-linux-arm64-musl': 0.17.0 + '@nomicfoundation/slang-linux-x64-gnu': 0.17.0 + '@nomicfoundation/slang-linux-x64-musl': 0.17.0 + '@nomicfoundation/slang-win32-arm64-msvc': 0.17.0 + '@nomicfoundation/slang-win32-ia32-msvc': 0.17.0 + '@nomicfoundation/slang-win32-x64-msvc': 0.17.0 + + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-darwin-x64@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-arm64-musl@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-x64-gnu@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-linux-x64-musl@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer-win32-x64-msvc@0.1.2': + optional: true + + '@nomicfoundation/solidity-analyzer@0.1.2': + optionalDependencies: + '@nomicfoundation/solidity-analyzer-darwin-arm64': 0.1.2 + '@nomicfoundation/solidity-analyzer-darwin-x64': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-arm64-gnu': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-arm64-musl': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-x64-gnu': 0.1.2 + '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.2 + '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.2 + + '@openzeppelin/contracts-upgradeable@4.7.3': {} + + '@openzeppelin/contracts@3.4.2': {} + + '@openzeppelin/contracts@4.3.3': {} + + '@openzeppelin/contracts@4.9.6': {} + + '@openzeppelin/defender-sdk-base-client@1.14.4': + dependencies: + amazon-cognito-identity-js: 6.3.12 + async-retry: 1.3.3 + transitivePeerDependencies: + - encoding + + '@openzeppelin/defender-sdk-deploy-client@1.14.4(debug@4.3.7)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 1.14.4 + axios: 1.7.7(debug@4.3.7) + lodash: 4.17.21 + transitivePeerDependencies: + - debug + - encoding + + '@openzeppelin/defender-sdk-network-client@1.14.4(debug@4.3.7)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 1.14.4 + axios: 1.7.7(debug@4.3.7) + lodash: 4.17.21 + transitivePeerDependencies: + - debug + - encoding + + '@openzeppelin/hardhat-upgrades@3.2.1(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))': + dependencies: + '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@openzeppelin/defender-sdk-base-client': 1.14.4 + '@openzeppelin/defender-sdk-deploy-client': 1.14.4(debug@4.3.7) + '@openzeppelin/defender-sdk-network-client': 1.14.4(debug@4.3.7) + '@openzeppelin/upgrades-core': 1.37.1 + chalk: 4.1.2 + debug: 4.3.7(supports-color@8.1.1) + ethereumjs-util: 7.1.5 + ethers: 6.13.2 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + proper-lockfile: 4.1.2 + undici: 6.19.8 + optionalDependencies: + '@nomicfoundation/hardhat-verify': 2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + transitivePeerDependencies: + - encoding + - supports-color + + '@openzeppelin/upgrades-core@1.37.1': + dependencies: + '@nomicfoundation/slang': 0.17.0 + cbor: 9.0.2 + chalk: 4.1.2 + compare-versions: 6.1.1 + debug: 4.3.7(supports-color@8.1.1) + ethereumjs-util: 7.1.5 + minimatch: 9.0.5 + minimist: 1.2.8 + proper-lockfile: 4.1.2 + solidity-ast: 0.4.59 + transitivePeerDependencies: + - supports-color + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@primitivefi/hardhat-dodoc@0.2.3(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))(squirrelly@8.0.8)': + dependencies: + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + squirrelly: 8.0.8 + + '@rollup/plugin-commonjs@24.1.0(rollup@4.21.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + commondir: 1.0.1 + estree-walker: 2.0.2 + glob: 8.1.0 + is-reference: 1.2.1 + magic-string: 0.27.0 + optionalDependencies: + rollup: 4.21.2 + + '@rollup/plugin-json@6.1.0(rollup@4.21.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + optionalDependencies: + rollup: 4.21.2 + + '@rollup/plugin-node-resolve@15.2.3(rollup@4.21.2)': + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + '@types/resolve': 1.20.2 + deepmerge: 4.3.1 + is-builtin-module: 3.2.1 + is-module: 1.0.0 + resolve: 1.22.8 + optionalDependencies: + rollup: 4.21.2 + + '@rollup/pluginutils@5.1.0(rollup@4.21.2)': + dependencies: + '@types/estree': 1.0.5 + estree-walker: 2.0.2 + picomatch: 2.3.1 + optionalDependencies: + rollup: 4.21.2 + + '@rollup/rollup-android-arm-eabi@4.21.2': + optional: true + + '@rollup/rollup-android-arm64@4.21.2': + optional: true + + '@rollup/rollup-darwin-arm64@4.21.2': + optional: true + + '@rollup/rollup-darwin-x64@4.21.2': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.21.2': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.21.2': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.21.2': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.21.2': + optional: true + + '@rollup/rollup-linux-powerpc64le-gnu@4.21.2': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.21.2': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.21.2': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.21.2': + optional: true + + '@rollup/rollup-linux-x64-musl@4.21.2': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.21.2': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.21.2': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.21.2': + optional: true + + '@scure/base@1.1.8': {} + + '@scure/bip32@1.1.5': + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/base': 1.1.8 + + '@scure/bip32@1.4.0': + dependencies: + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.8 + + '@scure/bip39@1.1.1': + dependencies: + '@noble/hashes': 1.2.0 + '@scure/base': 1.1.8 + + '@scure/bip39@1.3.0': + dependencies: + '@noble/hashes': 1.4.0 + '@scure/base': 1.1.8 + + '@scure/bip39@1.4.0': + dependencies: + '@noble/hashes': 1.5.0 + '@scure/base': 1.1.8 + + '@sentry/core@5.30.0': + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + + '@sentry/hub@5.30.0': + dependencies: + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + + '@sentry/minimal@5.30.0': + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/types': 5.30.0 + tslib: 1.14.1 + + '@sentry/node@5.30.0': + 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.2 + https-proxy-agent: 5.0.1 + lru_map: 0.3.3 + tslib: 1.14.1 + transitivePeerDependencies: + - supports-color + + '@sentry/tracing@5.30.0': + dependencies: + '@sentry/hub': 5.30.0 + '@sentry/minimal': 5.30.0 + '@sentry/types': 5.30.0 + '@sentry/utils': 5.30.0 + tslib: 1.14.1 + + '@sentry/types@5.30.0': {} + + '@sentry/utils@5.30.0': + dependencies: + '@sentry/types': 5.30.0 + tslib: 1.14.1 + + '@smithy/types@3.4.0': + dependencies: + tslib: 2.7.0 + + '@solidity-parser/parser@0.14.5': + dependencies: + antlr4ts: 0.5.0-alpha.4 + + '@solidity-parser/parser@0.16.2': + dependencies: + antlr4ts: 0.5.0-alpha.4 + + '@solidity-parser/parser@0.18.0': {} + + '@swc/core-darwin-arm64@1.7.26': + optional: true + + '@swc/core-darwin-x64@1.7.26': + optional: true + + '@swc/core-linux-arm-gnueabihf@1.7.26': + optional: true + + '@swc/core-linux-arm64-gnu@1.7.26': + optional: true + + '@swc/core-linux-arm64-musl@1.7.26': + optional: true + + '@swc/core-linux-x64-gnu@1.7.26': + optional: true + + '@swc/core-linux-x64-musl@1.7.26': + optional: true + + '@swc/core-win32-arm64-msvc@1.7.26': + optional: true + + '@swc/core-win32-ia32-msvc@1.7.26': + optional: true + + '@swc/core-win32-x64-msvc@1.7.26': + optional: true + + '@swc/core@1.7.26': + dependencies: + '@swc/counter': 0.1.3 + '@swc/types': 0.1.12 + optionalDependencies: + '@swc/core-darwin-arm64': 1.7.26 + '@swc/core-darwin-x64': 1.7.26 + '@swc/core-linux-arm-gnueabihf': 1.7.26 + '@swc/core-linux-arm64-gnu': 1.7.26 + '@swc/core-linux-arm64-musl': 1.7.26 + '@swc/core-linux-x64-gnu': 1.7.26 + '@swc/core-linux-x64-musl': 1.7.26 + '@swc/core-win32-arm64-msvc': 1.7.26 + '@swc/core-win32-ia32-msvc': 1.7.26 + '@swc/core-win32-x64-msvc': 1.7.26 + + '@swc/counter@0.1.3': {} + + '@swc/types@0.1.12': + dependencies: + '@swc/counter': 0.1.3 + + '@tenderly/hardhat-tenderly@2.3.0(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@swc/core@1.7.26)(@types/node@18.19.50)(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))': + dependencies: + '@ethersproject/bignumber': 5.7.0 + '@nomicfoundation/hardhat-ignition': 0.15.5(@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@nomicfoundation/hardhat-verify': 2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@openzeppelin/hardhat-upgrades': 3.2.1(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(@nomicfoundation/hardhat-verify@2.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + '@openzeppelin/upgrades-core': 1.37.1 + axios: 1.7.7(debug@4.3.7) + ethers: 6.13.2 + fs-extra: 10.1.0 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + hardhat-deploy: 0.11.45 + tenderly: 0.9.1(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + ts-node: 10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2) + tslog: 4.9.3 + typescript: 5.6.2 + transitivePeerDependencies: + - '@nomicfoundation/hardhat-ethers' + - '@swc/core' + - '@swc/wasm' + - '@types/node' + - bufferutil + - debug + - encoding + - supports-color + - utf-8-validate + + '@trivago/prettier-plugin-sort-imports@3.4.0(prettier@2.8.8)': + dependencies: + '@babel/core': 7.17.8 + '@babel/generator': 7.17.7 + '@babel/parser': 7.18.9 + '@babel/traverse': 7.17.3 + '@babel/types': 7.17.0 + '@vue/compiler-sfc': 3.5.4 + javascript-natural-sort: 0.7.1 + lodash: 4.17.21 + prettier: 2.8.8 + transitivePeerDependencies: + - supports-color + + '@tsconfig/node10@1.0.11': {} + + '@tsconfig/node12@1.0.11': {} + + '@tsconfig/node14@1.0.3': {} + + '@tsconfig/node16@1.0.4': {} + + '@typechain/ethers-v6@0.5.1(ethers@6.13.2)(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2)': + dependencies: + ethers: 6.13.2 + lodash: 4.17.21 + ts-essentials: 7.0.3(typescript@5.6.2) + typechain: 8.3.2(typescript@5.6.2) + typescript: 5.6.2 + + '@typechain/hardhat@9.1.0(@typechain/ethers-v6@0.5.1(ethers@6.13.2)(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2))(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2))(typechain@8.3.2(typescript@5.6.2))': + dependencies: + '@typechain/ethers-v6': 0.5.1(ethers@6.13.2)(typechain@8.3.2(typescript@5.6.2))(typescript@5.6.2) + ethers: 6.13.2 + fs-extra: 9.1.0 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + typechain: 8.3.2(typescript@5.6.2) + + '@types/bn.js@4.11.6': + dependencies: + '@types/node': 18.19.50 + + '@types/bn.js@5.1.5': + dependencies: + '@types/node': 18.19.50 + + '@types/chai-as-promised@7.1.8': + dependencies: + '@types/chai': 4.3.19 + + '@types/chai@4.3.19': {} + + '@types/concat-stream@1.6.1': + dependencies: + '@types/node': 18.19.50 + + '@types/conventional-commits-parser@5.0.0': + dependencies: + '@types/node': 18.19.50 + optional: true + + '@types/estree@1.0.5': {} + + '@types/form-data@0.0.33': + dependencies: + '@types/node': 18.19.50 + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 5.1.2 + '@types/node': 18.19.50 + + '@types/lru-cache@5.1.1': {} + + '@types/minimatch@5.1.2': {} + + '@types/minimist@1.2.5': {} + + '@types/mocha@10.0.7': {} + + '@types/node@10.17.60': {} + + '@types/node@18.15.13': {} + + '@types/node@18.19.50': + dependencies: + undici-types: 5.26.5 + + '@types/node@20.5.1': {} + + '@types/node@8.10.66': {} + + '@types/normalize-package-data@2.4.4': {} + + '@types/pbkdf2@3.1.2': + dependencies: + '@types/node': 18.19.50 + + '@types/prettier@2.7.3': {} + + '@types/qs@6.9.15': {} + + '@types/resolve@1.20.2': {} + + '@types/secp256k1@4.0.6': + dependencies: + '@types/node': 18.19.50 + + '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.6.2))(eslint@8.57.0)(typescript@5.6.2)': + dependencies: + '@eslint-community/regexpp': 4.11.0 + '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.6.2) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.6.2) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 7.18.0 + eslint: 8.57.0 + graphemer: 1.4.0 + ignore: 5.3.2 + natural-compare: 1.4.0 + ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.6.2)': + dependencies: + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2) + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7(supports-color@8.1.1) + eslint: 8.57.0 + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + + '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.6.2)': + dependencies: + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2) + '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.6.2) + debug: 4.3.7(supports-color@8.1.1) + eslint: 8.57.0 + ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@7.18.0': {} + + '@typescript-eslint/typescript-estree@7.18.0(typescript@5.6.2)': + dependencies: + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/visitor-keys': 7.18.0 + debug: 4.3.7(supports-color@8.1.1) + globby: 11.1.0 + is-glob: 4.0.3 + minimatch: 9.0.5 + semver: 7.6.3 + ts-api-utils: 1.3.0(typescript@5.6.2) + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.6.2)': + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@typescript-eslint/scope-manager': 7.18.0 + '@typescript-eslint/types': 7.18.0 + '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.6.2) + eslint: 8.57.0 + transitivePeerDependencies: + - supports-color + - typescript + + '@typescript-eslint/visitor-keys@7.18.0': + dependencies: + '@typescript-eslint/types': 7.18.0 + eslint-visitor-keys: 3.4.3 + + '@ungap/structured-clone@1.2.0': {} + + '@vue/compiler-core@3.5.4': + dependencies: + '@babel/parser': 7.25.6 + '@vue/shared': 3.5.4 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.4': + dependencies: + '@vue/compiler-core': 3.5.4 + '@vue/shared': 3.5.4 + + '@vue/compiler-sfc@3.5.4': + dependencies: + '@babel/parser': 7.25.6 + '@vue/compiler-core': 3.5.4 + '@vue/compiler-dom': 3.5.4 + '@vue/compiler-ssr': 3.5.4 + '@vue/shared': 3.5.4 + estree-walker: 2.0.2 + magic-string: 0.30.11 + postcss: 8.4.45 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.4': + dependencies: + '@vue/compiler-dom': 3.5.4 + '@vue/shared': 3.5.4 + + '@vue/shared@3.5.4': {} + + JSONStream@1.3.5: + dependencies: + jsonparse: 1.3.1 + through: 2.3.8 + + abbrev@1.0.9: {} + + abitype@0.9.10(typescript@5.6.2): + optionalDependencies: + typescript: 5.6.2 + + abitype@1.0.5(typescript@5.6.2): + optionalDependencies: + typescript: 5.6.2 + + acorn-jsx@5.3.2(acorn@8.12.1): + dependencies: + acorn: 8.12.1 + + acorn-walk@8.3.4: + dependencies: + acorn: 8.12.1 + + acorn@8.12.1: {} + + adm-zip@0.4.16: {} + + aes-js@3.0.0: {} + + aes-js@4.0.0-beta.5: {} + + agent-base@6.0.2: + dependencies: + debug: 4.3.7(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + aggregate-error@3.1.0: + dependencies: + clean-stack: 2.2.0 + indent-string: 4.0.0 + + ajv@6.12.6: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.17.1: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.0.1 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + amazon-cognito-identity-js@6.3.12: + dependencies: + '@aws-crypto/sha256-js': 1.2.2 + buffer: 4.9.2 + fast-base64-decode: 1.0.0 + isomorphic-unfetch: 3.1.0 + js-cookie: 2.2.1 + transitivePeerDependencies: + - encoding + + amdefine@1.0.1: + optional: true + + ansi-align@3.0.1: + dependencies: + string-width: 4.2.3 + + ansi-colors@4.1.3: {} + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@5.0.0: + dependencies: + type-fest: 1.4.0 + + ansi-regex@3.0.1: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.1.0: {} + + ansi-styles@3.2.1: + dependencies: + color-convert: 1.9.3 + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.1: {} + + antlr4@4.13.2: {} + + antlr4ts@0.5.0-alpha.4: {} + + anymatch@3.1.3: + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + + arg@4.1.3: {} + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-back@3.1.0: {} + + array-back@4.0.2: {} + + array-ify@1.0.0: {} + + array-union@2.1.0: {} + + array-uniq@1.0.3: {} + + arrify@1.0.1: {} + + asap@2.0.6: {} + + assertion-error@1.1.0: {} + + ast-parents@0.0.1: {} + + astral-regex@2.0.0: {} + + async-retry@1.3.3: + dependencies: + retry: 0.13.1 + + async@1.5.2: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + axios@0.21.4(debug@4.3.7): + dependencies: + follow-redirects: 1.15.9(debug@4.3.7) + transitivePeerDependencies: + - debug + + axios@0.27.2: + dependencies: + follow-redirects: 1.15.9(debug@4.3.7) + form-data: 4.0.0 + transitivePeerDependencies: + - debug + + axios@1.7.7(debug@4.3.7): + dependencies: + follow-redirects: 1.15.9(debug@4.3.7) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + + balanced-match@1.0.2: {} + + base-x@3.0.10: + dependencies: + safe-buffer: 5.2.1 + + base64-js@1.5.1: {} + + bech32@1.1.4: {} + + binary-extensions@2.3.0: {} + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + blakejs@1.2.1: {} + + bn.js@4.11.6: {} + + bn.js@4.12.0: {} + + bn.js@5.2.1: {} + + boxen@5.1.2: + dependencies: + ansi-align: 3.0.1 + camelcase: 6.3.0 + chalk: 4.1.2 + cli-boxes: 2.2.1 + string-width: 4.2.3 + type-fest: 0.20.2 + widest-line: 3.1.0 + wrap-ansi: 7.0.0 + + brace-expansion@1.1.11: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.0.1: + dependencies: + balanced-match: 1.0.2 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + brorand@1.1.0: {} + + browser-stdout@1.3.1: {} + + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.4 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + browserslist@4.23.3: + dependencies: + caniuse-lite: 1.0.30001660 + electron-to-chromium: 1.5.19 + node-releases: 2.0.18 + update-browserslist-db: 1.1.0(browserslist@4.23.3) + + bs58@4.0.1: + dependencies: + base-x: 3.0.10 + + bs58check@2.1.2: + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + + buffer-from@1.1.2: {} + + buffer-xor@1.0.3: {} + + buffer@4.9.2: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bufio@1.2.1: {} + + builtin-modules@3.3.0: {} + + builtins@2.0.1: + dependencies: + semver: 6.3.1 + + bytes@3.1.2: {} + + cachedir@2.3.0: {} + + call-bind@1.0.7: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + set-function-length: 1.2.2 + + callsites@3.1.0: {} + + camelcase-keys@6.2.2: + dependencies: + camelcase: 5.3.1 + map-obj: 4.3.0 + quick-lru: 4.0.1 + + camelcase@5.3.1: {} + + camelcase@6.3.0: {} + + caniuse-lite@1.0.30001660: {} + + caseless@0.12.0: {} + + cbor@8.1.0: + dependencies: + nofilter: 3.1.0 + + cbor@9.0.2: + dependencies: + nofilter: 3.1.0 + + chai-as-promised@7.1.2(chai@4.5.0): + dependencies: + chai: 4.5.0 + check-error: 1.0.3 + + chai@4.5.0: + dependencies: + assertion-error: 1.1.0 + check-error: 1.0.3 + deep-eql: 4.1.4 + get-func-name: 2.0.2 + loupe: 2.3.7 + pathval: 1.1.1 + type-detect: 4.1.0 + + chalk@2.4.2: + dependencies: + ansi-styles: 3.2.1 + escape-string-regexp: 1.0.5 + supports-color: 5.5.0 + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chalk@5.3.0: {} + + chardet@0.7.0: {} + + charenc@0.0.2: {} + + check-error@1.0.3: + dependencies: + get-func-name: 2.0.2 + + chokidar@3.6.0: + dependencies: + anymatch: 3.1.3 + braces: 3.0.3 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.3 + + ci-info@2.0.0: {} + + cipher-base@1.0.4: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + clean-stack@2.2.0: {} + + cli-boxes@2.2.1: {} + + cli-cursor@3.1.0: + dependencies: + restore-cursor: 3.1.0 + + cli-cursor@4.0.0: + dependencies: + restore-cursor: 4.0.0 + + cli-spinners@2.9.2: {} + + cli-table3@0.5.1: + dependencies: + object-assign: 4.1.1 + string-width: 2.1.1 + optionalDependencies: + colors: 1.4.0 + + cli-table3@0.6.5: + dependencies: + string-width: 4.2.3 + optionalDependencies: + '@colors/colors': 1.5.0 + + cli-truncate@3.1.0: + dependencies: + slice-ansi: 5.0.0 + string-width: 5.1.2 + + cli-width@3.0.0: {} + + cliui@7.0.4: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + clone@1.0.4: {} + + color-convert@1.9.3: + dependencies: + color-name: 1.1.3 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.3: {} + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + colors@1.4.0: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + command-exists@1.2.9: {} + + command-line-args@5.2.1: + dependencies: + array-back: 3.1.0 + find-replace: 3.0.0 + lodash.camelcase: 4.3.0 + typical: 4.0.0 + + command-line-usage@6.1.3: + dependencies: + array-back: 4.0.2 + chalk: 2.4.2 + table-layout: 1.0.2 + typical: 5.2.0 + + commander@10.0.1: {} + + commander@11.0.0: {} + + commander@8.3.0: {} + + commander@9.5.0: {} + + commitizen@4.3.0(@types/node@18.19.50)(typescript@5.6.2): + dependencies: + cachedir: 2.3.0 + cz-conventional-changelog: 3.3.0(@types/node@18.19.50)(typescript@5.6.2) + dedent: 0.7.0 + detect-indent: 6.1.0 + find-node-modules: 2.1.3 + find-root: 1.1.0 + fs-extra: 9.1.0 + glob: 7.2.3 + inquirer: 8.2.5 + is-utf8: 0.2.1 + lodash: 4.17.21 + minimist: 1.2.7 + strip-bom: 4.0.0 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - '@types/node' + - typescript + + commondir@1.0.1: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + compare-versions@6.1.1: {} + + concat-map@0.0.1: {} + + concat-stream@1.6.2: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 2.3.8 + typedarray: 0.0.6 + + conventional-changelog-angular@6.0.0: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@6.1.0: + dependencies: + compare-func: 2.0.0 + + conventional-commit-types@3.0.0: {} + + conventional-commits-parser@4.0.0: + dependencies: + JSONStream: 1.3.5 + is-text-path: 1.0.1 + meow: 8.1.2 + split2: 3.2.2 + + convert-source-map@1.9.0: {} + + cookie@0.4.2: {} + + core-util-is@1.0.3: {} + + cosmiconfig-typescript-loader@4.4.0(@types/node@20.5.1)(cosmiconfig@8.3.6(typescript@5.6.2))(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.5.1)(typescript@5.6.2))(typescript@5.6.2): + dependencies: + '@types/node': 20.5.1 + cosmiconfig: 8.3.6(typescript@5.6.2) + ts-node: 10.9.2(@swc/core@1.7.26)(@types/node@20.5.1)(typescript@5.6.2) + typescript: 5.6.2 + + cosmiconfig-typescript-loader@5.0.0(@types/node@18.19.50)(cosmiconfig@9.0.0(typescript@5.6.2))(typescript@5.6.2): + dependencies: + '@types/node': 18.19.50 + cosmiconfig: 9.0.0(typescript@5.6.2) + jiti: 1.21.6 + typescript: 5.6.2 + optional: true + + cosmiconfig@8.3.6(typescript@5.6.2): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.6.2 + + cosmiconfig@9.0.0(typescript@5.6.2): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + optionalDependencies: + typescript: 5.6.2 + optional: true + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.4 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.2 + sha.js: 2.4.11 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.4 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + create-require@1.1.1: {} + + cross-env@7.0.3: + dependencies: + cross-spawn: 7.0.3 + + cross-spawn@7.0.3: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + crypt@0.0.2: {} + + cz-conventional-changelog@3.3.0(@types/node@18.19.50)(typescript@5.6.2): + dependencies: + chalk: 2.4.2 + commitizen: 4.3.0(@types/node@18.19.50)(typescript@5.6.2) + conventional-commit-types: 3.0.0 + lodash.map: 4.6.0 + longest: 2.0.1 + word-wrap: 1.2.5 + optionalDependencies: + '@commitlint/load': 19.5.0(@types/node@18.19.50)(typescript@5.6.2) + transitivePeerDependencies: + - '@types/node' + - typescript + + dargs@7.0.0: {} + + death@1.1.0: {} + + debug@4.3.4: + dependencies: + ms: 2.1.2 + + debug@4.3.7(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize-keys@1.1.1: + dependencies: + decamelize: 1.2.0 + map-obj: 1.0.1 + + decamelize@1.2.0: {} + + decamelize@4.0.0: {} + + dedent@0.7.0: {} + + deep-eql@4.1.4: + dependencies: + type-detect: 4.1.0 + + deep-extend@0.6.0: {} + + deep-is@0.1.4: {} + + deepmerge@4.3.1: {} + + defaults@1.0.4: + dependencies: + clone: 1.0.4 + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.0 + es-errors: 1.3.0 + gopd: 1.0.1 + + define-lazy-prop@2.0.0: {} + + delayed-stream@1.0.0: {} + + delete-empty@3.0.0: + dependencies: + ansi-colors: 4.1.3 + minimist: 1.2.8 + path-starts-with: 2.0.1 + rimraf: 2.7.1 + + depd@2.0.0: {} + + detect-file@1.0.0: {} + + detect-indent@6.1.0: {} + + diff@4.0.2: {} + + diff@5.2.0: {} + + difflib@0.2.4: + dependencies: + heap: 0.2.7 + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + doctrine@3.0.0: + dependencies: + esutils: 2.0.3 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dotenv@16.4.5: {} + + eastasianwidth@0.2.0: {} + + electron-to-chromium@1.5.19: {} + + elliptic@6.5.4: + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + elliptic@6.5.7: + dependencies: + bn.js: 4.12.0 + brorand: 1.1.0 + hash.js: 1.1.7 + hmac-drbg: 1.0.1 + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + encode-utf8@1.0.3: {} + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + entities@4.5.0: {} + + env-paths@2.2.1: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.0: + dependencies: + get-intrinsic: 1.2.4 + + es-errors@1.3.0: {} + + es-module-lexer@1.5.4: {} + + esbuild@0.23.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.23.1 + '@esbuild/android-arm': 0.23.1 + '@esbuild/android-arm64': 0.23.1 + '@esbuild/android-x64': 0.23.1 + '@esbuild/darwin-arm64': 0.23.1 + '@esbuild/darwin-x64': 0.23.1 + '@esbuild/freebsd-arm64': 0.23.1 + '@esbuild/freebsd-x64': 0.23.1 + '@esbuild/linux-arm': 0.23.1 + '@esbuild/linux-arm64': 0.23.1 + '@esbuild/linux-ia32': 0.23.1 + '@esbuild/linux-loong64': 0.23.1 + '@esbuild/linux-mips64el': 0.23.1 + '@esbuild/linux-ppc64': 0.23.1 + '@esbuild/linux-riscv64': 0.23.1 + '@esbuild/linux-s390x': 0.23.1 + '@esbuild/linux-x64': 0.23.1 + '@esbuild/netbsd-x64': 0.23.1 + '@esbuild/openbsd-arm64': 0.23.1 + '@esbuild/openbsd-x64': 0.23.1 + '@esbuild/sunos-x64': 0.23.1 + '@esbuild/win32-arm64': 0.23.1 + '@esbuild/win32-ia32': 0.23.1 + '@esbuild/win32-x64': 0.23.1 + + escalade@3.2.0: {} + + escape-string-regexp@1.0.5: {} + + escape-string-regexp@4.0.0: {} + + escodegen@1.8.1: + dependencies: + esprima: 2.7.3 + estraverse: 1.9.3 + esutils: 2.0.3 + optionator: 0.8.3 + optionalDependencies: + source-map: 0.2.0 + + eslint-config-prettier@8.10.0(eslint@8.57.0): + dependencies: + eslint: 8.57.0 + + eslint-scope@7.2.2: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint@8.57.0: + dependencies: + '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/regexpp': 4.11.0 + '@eslint/eslintrc': 2.1.4 + '@eslint/js': 8.57.0 + '@humanwhocodes/config-array': 0.11.14 + '@humanwhocodes/module-importer': 1.0.1 + '@nodelib/fs.walk': 1.2.8 + '@ungap/structured-clone': 1.2.0 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.7(supports-color@8.1.1) + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.6.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.24.0 + graphemer: 1.4.0 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.4 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + espree@9.6.1: + dependencies: + acorn: 8.12.1 + acorn-jsx: 5.3.2(acorn@8.12.1) + eslint-visitor-keys: 3.4.3 + + esprima@2.7.3: {} + + esprima@4.0.1: {} + + esquery@1.6.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@1.9.3: {} + + estraverse@5.3.0: {} + + estree-walker@0.6.1: {} + + estree-walker@2.0.2: {} + + esutils@2.0.3: {} + + eth-gas-reporter@0.2.27: + dependencies: + '@solidity-parser/parser': 0.14.5 + axios: 1.7.7(debug@4.3.7) + cli-table3: 0.5.1 + colors: 1.4.0 + ethereum-cryptography: 1.2.0 + ethers: 5.7.2 + fs-readdir-recursive: 1.1.0 + lodash: 4.17.21 + markdown-table: 1.1.3 + mocha: 10.7.3 + req-cwd: 2.0.0 + sha1: 1.1.1 + sync-request: 6.1.0 + transitivePeerDependencies: + - bufferutil + - debug + - utf-8-validate + + ethereum-bloom-filters@1.2.0: + dependencies: + '@noble/hashes': 1.5.0 + + ethereum-cryptography@0.1.3: + dependencies: + '@types/pbkdf2': 3.1.2 + '@types/secp256k1': 4.0.6 + blakejs: 1.2.1 + 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.4 + pbkdf2: 3.1.2 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.3 + setimmediate: 1.0.5 + + ethereum-cryptography@1.2.0: + dependencies: + '@noble/hashes': 1.2.0 + '@noble/secp256k1': 1.7.1 + '@scure/bip32': 1.1.5 + '@scure/bip39': 1.1.1 + + ethereum-cryptography@2.2.1: + dependencies: + '@noble/curves': 1.4.2 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.3.0 + + ethereumjs-abi@0.6.8: + dependencies: + bn.js: 4.12.0 + ethereumjs-util: 6.2.1 + + ethereumjs-util@6.2.1: + dependencies: + '@types/bn.js': 4.11.6 + bn.js: 4.12.0 + create-hash: 1.2.0 + elliptic: 6.5.7 + ethereum-cryptography: 0.1.3 + ethjs-util: 0.1.6 + rlp: 2.2.7 + + ethereumjs-util@7.1.5: + dependencies: + '@types/bn.js': 5.1.5 + bn.js: 5.2.1 + create-hash: 1.2.0 + ethereum-cryptography: 0.1.3 + rlp: 2.2.7 + + ethers@5.7.2: + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-provider': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/base64': 5.7.0 + '@ethersproject/basex': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/hash': 5.7.0 + '@ethersproject/hdnode': 5.7.0 + '@ethersproject/json-wallets': 5.7.0 + '@ethersproject/keccak256': 5.7.0 + '@ethersproject/logger': 5.7.0 + '@ethersproject/networks': 5.7.1 + '@ethersproject/pbkdf2': 5.7.0 + '@ethersproject/properties': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/random': 5.7.0 + '@ethersproject/rlp': 5.7.0 + '@ethersproject/sha2': 5.7.0 + '@ethersproject/signing-key': 5.7.0 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/strings': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/units': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@ethersproject/web': 5.7.1 + '@ethersproject/wordlists': 5.7.0 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + ethers@6.13.2: + dependencies: + '@adraffy/ens-normalize': 1.10.1 + '@noble/curves': 1.2.0 + '@noble/hashes': 1.3.2 + '@types/node': 18.15.13 + aes-js: 4.0.0-beta.5 + tslib: 2.4.0 + ws: 8.17.1 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + + ethjs-unit@0.1.6: + dependencies: + bn.js: 4.11.6 + number-to-bn: 1.7.0 + + ethjs-util@0.1.6: + dependencies: + is-hex-prefixed: 1.0.0 + strip-hex-prefix: 1.0.0 + + eventemitter3@5.0.1: {} + + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@7.2.0: + dependencies: + cross-spawn: 7.0.3 + get-stream: 6.0.1 + human-signals: 4.3.1 + is-stream: 3.0.0 + merge-stream: 2.0.0 + npm-run-path: 5.3.0 + onetime: 6.0.0 + signal-exit: 3.0.7 + strip-final-newline: 3.0.0 + + expand-tilde@2.0.2: + dependencies: + homedir-polyfill: 1.0.3 + + external-editor@3.1.0: + dependencies: + chardet: 0.7.0 + iconv-lite: 0.4.24 + tmp: 0.0.33 + + fast-base64-decode@1.0.0: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.2: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-uri@3.0.1: {} + + fastq@1.17.1: + dependencies: + reusify: 1.0.4 + + figures@3.2.0: + dependencies: + escape-string-regexp: 1.0.5 + + file-entry-cache@6.0.1: + dependencies: + flat-cache: 3.2.0 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-node-modules@2.1.3: + dependencies: + findup-sync: 4.0.0 + merge: 2.1.1 + + find-replace@3.0.0: + dependencies: + array-back: 3.1.0 + + find-root@1.1.0: {} + + find-up@2.1.0: + dependencies: + locate-path: 2.0.0 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + findup-sync@4.0.0: + dependencies: + detect-file: 1.0.0 + is-glob: 4.0.3 + micromatch: 4.0.8 + resolve-dir: 1.0.1 + + flat-cache@3.2.0: + dependencies: + flatted: 3.3.1 + keyv: 4.5.4 + rimraf: 3.0.2 + + flat@5.0.2: {} + + flatted@3.3.1: {} + + fmix@0.1.0: + dependencies: + imul: 1.0.1 + + follow-redirects@1.15.9(debug@4.3.7): + optionalDependencies: + debug: 4.3.7(supports-color@8.1.1) + + foreground-child@3.3.0: + dependencies: + cross-spawn: 7.0.3 + signal-exit: 4.1.0 + + form-data@2.5.1: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + form-data@4.0.0: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + mime-types: 2.1.35 + + fp-ts@1.19.3: {} + + fs-extra@10.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@11.2.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.1.0 + universalify: 2.0.1 + + fs-readdir-recursive@1.1.0: {} + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-func-name@2.0.2: {} + + get-intrinsic@1.2.4: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + has-proto: 1.0.3 + has-symbols: 1.0.3 + hasown: 2.0.2 + + get-port@3.2.0: {} + + get-stream@6.0.1: {} + + get-tsconfig@4.8.0: + dependencies: + resolve-pkg-maps: 1.0.0 + + ghost-testrpc@0.0.2: + dependencies: + chalk: 2.4.2 + node-emoji: 1.11.0 + + git-raw-commits@2.0.11: + dependencies: + dargs: 7.0.0 + lodash: 4.17.21 + meow: 8.1.2 + split2: 3.2.2 + through2: 4.0.2 + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.4.5: + dependencies: + foreground-child: 3.3.0 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 1.11.1 + + glob@5.0.15: + dependencies: + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.1.7: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.2.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + glob@8.1.0: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 5.1.6 + once: 1.4.0 + + global-directory@4.0.1: + dependencies: + ini: 4.1.1 + optional: true + + global-dirs@0.1.1: + dependencies: + ini: 1.3.8 + + global-modules@1.0.0: + dependencies: + global-prefix: 1.0.2 + is-windows: 1.0.2 + resolve-dir: 1.0.1 + + global-modules@2.0.0: + dependencies: + global-prefix: 3.0.0 + + global-prefix@1.0.2: + dependencies: + expand-tilde: 2.0.2 + homedir-polyfill: 1.0.3 + ini: 1.3.8 + is-windows: 1.0.2 + which: 1.3.1 + + global-prefix@3.0.0: + dependencies: + ini: 1.3.8 + kind-of: 6.0.3 + which: 1.3.1 + + globals@11.12.0: {} + + globals@13.24.0: + dependencies: + type-fest: 0.20.2 + + globby@10.0.2: + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + glob: 7.2.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.2 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.0.1: + dependencies: + get-intrinsic: 1.2.4 + + graceful-fs@4.2.11: {} + + graphemer@1.4.0: {} + + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + + hard-rejection@2.1.0: {} + + hardhat-abi-exporter@2.10.1(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)): + dependencies: + '@ethersproject/abi': 5.7.0 + delete-empty: 3.0.0 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + + hardhat-deploy@0.11.45: + dependencies: + '@ethersproject/abi': 5.7.0 + '@ethersproject/abstract-signer': 5.7.0 + '@ethersproject/address': 5.7.0 + '@ethersproject/bignumber': 5.7.0 + '@ethersproject/bytes': 5.7.0 + '@ethersproject/constants': 5.7.0 + '@ethersproject/contracts': 5.7.0 + '@ethersproject/providers': 5.7.2 + '@ethersproject/solidity': 5.7.0 + '@ethersproject/transactions': 5.7.0 + '@ethersproject/wallet': 5.7.0 + '@types/qs': 6.9.15 + axios: 0.21.4(debug@4.3.7) + chalk: 4.1.2 + chokidar: 3.6.0 + debug: 4.3.7(supports-color@8.1.1) + enquirer: 2.4.1 + ethers: 5.7.2 + form-data: 4.0.0 + fs-extra: 10.1.0 + match-all: 1.2.6 + murmur-128: 0.2.1 + qs: 6.13.0 + zksync-web3: 0.14.4(ethers@5.7.2) + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + hardhat-gas-reporter@1.0.10(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)): + dependencies: + array-uniq: 1.0.3 + eth-gas-reporter: 0.2.27 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + sha1: 1.1.1 + transitivePeerDependencies: + - '@codechecks/client' + - bufferutil + - debug + - utf-8-validate + + hardhat-preprocessor@0.1.5(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)): + dependencies: + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + murmur-128: 0.2.1 + + hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2): + dependencies: + '@ethersproject/abi': 5.7.0 + '@metamask/eth-sig-util': 4.0.1 + '@nomicfoundation/edr': 0.5.2 + '@nomicfoundation/ethereumjs-common': 4.0.4 + '@nomicfoundation/ethereumjs-tx': 5.0.4 + '@nomicfoundation/ethereumjs-util': 9.0.4 + '@nomicfoundation/solidity-analyzer': 0.1.2 + '@sentry/node': 5.30.0 + '@types/bn.js': 5.1.5 + '@types/lru-cache': 5.1.1 + adm-zip: 0.4.16 + aggregate-error: 3.1.0 + ansi-escapes: 4.3.2 + boxen: 5.1.2 + chalk: 2.4.2 + chokidar: 3.6.0 + ci-info: 2.0.0 + debug: 4.3.7(supports-color@8.1.1) + enquirer: 2.4.1 + env-paths: 2.2.1 + ethereum-cryptography: 1.2.0 + 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.3.7 + io-ts: 1.10.4 + keccak: 3.0.4 + lodash: 4.17.21 + mnemonist: 0.38.5 + mocha: 10.7.3 + p-map: 4.0.0 + raw-body: 2.5.2 + resolve: 1.17.0 + semver: 6.3.1 + solc: 0.8.26(debug@4.3.7) + source-map-support: 0.5.21 + stacktrace-parser: 0.1.10 + tsort: 0.0.1 + undici: 5.28.4 + uuid: 8.3.2 + ws: 7.5.10 + optionalDependencies: + ts-node: 10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2) + typescript: 5.6.2 + transitivePeerDependencies: + - bufferutil + - c-kzg + - supports-color + - utf-8-validate + + has-flag@1.0.0: {} + + has-flag@3.0.0: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.0 + + has-proto@1.0.3: {} + + has-symbols@1.0.3: {} + + hash-base@3.1.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + safe-buffer: 5.2.1 + + hash.js@1.1.7: + dependencies: + inherits: 2.0.4 + minimalistic-assert: 1.0.1 + + hasown@2.0.2: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + heap@0.2.7: {} + + hmac-drbg@1.0.1: + dependencies: + hash.js: 1.1.7 + minimalistic-assert: 1.0.1 + minimalistic-crypto-utils: 1.0.1 + + homedir-polyfill@1.0.3: + dependencies: + parse-passwd: 1.0.0 + + hosted-git-info@2.8.9: {} + + hosted-git-info@4.1.0: + dependencies: + lru-cache: 6.0.0 + + http-basic@8.1.3: + dependencies: + caseless: 0.12.0 + concat-stream: 1.6.2 + http-response-object: 3.0.2 + parse-cache-control: 1.0.1 + + http-errors@2.0.0: + dependencies: + depd: 2.0.0 + inherits: 2.0.4 + setprototypeof: 1.2.0 + statuses: 2.0.1 + toidentifier: 1.0.1 + + http-response-object@3.0.2: + dependencies: + '@types/node': 10.17.60 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.3.7(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + human-signals@2.1.0: {} + + human-signals@4.3.1: {} + + husky@8.0.3: {} + + iconv-lite@0.4.24: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + immer@10.0.2: {} + + immutable@4.3.7: {} + + import-fresh@3.3.0: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.1.0: + optional: true + + imul@1.0.1: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@4.1.1: + optional: true + + inquirer@8.2.5: + dependencies: + ansi-escapes: 4.3.2 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-width: 3.0.0 + external-editor: 3.1.0 + figures: 3.2.0 + lodash: 4.17.21 + mute-stream: 0.0.8 + ora: 5.4.1 + run-async: 2.4.1 + rxjs: 7.8.1 + string-width: 4.2.3 + strip-ansi: 6.0.1 + through: 2.3.8 + wrap-ansi: 7.0.0 + + interpret@1.4.0: {} + + io-ts@1.10.4: + dependencies: + fp-ts: 1.19.3 + + is-arrayish@0.2.1: {} + + is-binary-path@2.1.0: + dependencies: + binary-extensions: 2.3.0 + + is-builtin-module@3.2.1: + dependencies: + builtin-modules: 3.3.0 + + is-core-module@2.15.1: + dependencies: + hasown: 2.0.2 + + is-docker@2.2.1: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@2.0.0: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@4.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-hex-prefixed@1.0.0: {} + + is-interactive@1.0.0: {} + + is-module@1.0.0: {} + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-path-inside@3.0.3: {} + + is-plain-obj@1.1.0: {} + + is-plain-obj@2.1.0: {} + + is-reference@1.2.1: + dependencies: + '@types/estree': 1.0.5 + + is-stream@2.0.1: {} + + is-stream@3.0.0: {} + + is-text-path@1.0.1: + dependencies: + text-extensions: 1.9.0 + + is-unicode-supported@0.1.0: {} + + is-utf8@0.2.1: {} + + is-windows@1.0.2: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + isomorphic-unfetch@3.1.0: + dependencies: + node-fetch: 2.7.0 + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding + + isows@1.0.4(ws@8.17.1): + dependencies: + ws: 8.17.1 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + javascript-natural-sort@0.7.1: {} + + jiti@1.21.6: + optional: true + + js-cookie@2.2.1: {} + + js-sha3@0.8.0: {} + + js-tokens@4.0.0: {} + + js-yaml@3.14.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.1.0: + dependencies: + argparse: 2.0.1 + + jsesc@2.5.2: {} + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-safe@5.0.1: {} + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.1.0: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jsonparse@1.3.1: {} + + jsonschema@1.4.1: {} + + keccak@3.0.4: + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.2 + readable-stream: 3.6.2 + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kind-of@6.0.3: {} + + kleur@3.0.3: {} + + levn@0.3.0: + dependencies: + prelude-ls: 1.1.2 + type-check: 0.3.2 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@2.1.0: {} + + lines-and-columns@1.2.4: {} + + lint-staged@13.3.0(enquirer@2.4.1): + dependencies: + chalk: 5.3.0 + commander: 11.0.0 + debug: 4.3.4 + execa: 7.2.0 + lilconfig: 2.1.0 + listr2: 6.6.1(enquirer@2.4.1) + micromatch: 4.0.5 + pidtree: 0.6.0 + string-argv: 0.3.2 + yaml: 2.3.1 + transitivePeerDependencies: + - enquirer + - supports-color + + listr2@6.6.1(enquirer@2.4.1): + dependencies: + cli-truncate: 3.1.0 + colorette: 2.0.20 + eventemitter3: 5.0.1 + log-update: 5.0.1 + rfdc: 1.4.1 + wrap-ansi: 8.1.0 + optionalDependencies: + enquirer: 2.4.1 + + load-json-file@4.0.0: + dependencies: + graceful-fs: 4.2.11 + parse-json: 4.0.0 + pify: 3.0.0 + strip-bom: 3.0.0 + + locate-path@2.0.0: + dependencies: + p-locate: 2.0.0 + path-exists: 3.0.0 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.camelcase@4.3.0: {} + + lodash.clonedeep@4.5.0: {} + + lodash.isequal@4.5.0: {} + + lodash.isfunction@3.0.9: {} + + lodash.isplainobject@4.0.6: {} + + lodash.kebabcase@4.1.1: {} + + lodash.map@4.6.0: {} + + lodash.memoize@4.1.2: {} + + lodash.merge@4.6.2: {} + + lodash.mergewith@4.6.2: {} + + lodash.snakecase@4.1.1: {} + + lodash.startcase@4.4.0: {} + + lodash.truncate@4.4.2: {} + + lodash.uniq@4.5.0: {} + + lodash.upperfirst@4.3.1: {} + + lodash@4.17.21: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-update@5.0.1: + dependencies: + ansi-escapes: 5.0.0 + cli-cursor: 4.0.0 + slice-ansi: 5.0.0 + strip-ansi: 7.1.0 + wrap-ansi: 8.1.0 + + longest@2.0.1: {} + + loupe@2.3.7: + dependencies: + get-func-name: 2.0.2 + + lru-cache@10.4.3: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + lru-cache@6.0.0: + dependencies: + yallist: 4.0.0 + + lru_map@0.3.3: {} + + magic-string@0.25.9: + dependencies: + sourcemap-codec: 1.4.8 + + magic-string@0.27.0: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + magic-string@0.30.11: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.0 + + make-error@1.3.6: {} + + map-obj@1.0.1: {} + + map-obj@4.3.0: {} + + markdown-table@1.1.3: {} + + match-all@1.2.6: {} + + md5.js@1.3.5: + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + memorystream@0.3.1: {} + + meow@8.1.2: + dependencies: + '@types/minimist': 1.2.5 + camelcase-keys: 6.2.2 + decamelize-keys: 1.1.1 + hard-rejection: 2.1.0 + minimist-options: 4.1.0 + normalize-package-data: 3.0.3 + read-pkg-up: 7.0.1 + redent: 3.0.0 + trim-newlines: 3.0.1 + type-fest: 0.18.1 + yargs-parser: 20.2.9 + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + merge@2.1.1: {} + + micro-ftch@0.3.1: {} + + micromatch@4.0.5: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.1 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + mimic-fn@4.0.0: {} + + min-indent@1.0.1: {} + + minimalistic-assert@1.0.1: {} + + minimalistic-crypto-utils@1.0.1: {} + + minimatch@3.1.2: + dependencies: + brace-expansion: 1.1.11 + + minimatch@5.1.6: + dependencies: + brace-expansion: 2.0.1 + + minimatch@9.0.5: + dependencies: + brace-expansion: 2.0.1 + + minimist-options@4.1.0: + dependencies: + arrify: 1.0.1 + is-plain-obj: 1.1.0 + kind-of: 6.0.3 + + minimist@1.2.7: {} + + minimist@1.2.8: {} + + minipass@7.1.2: {} + + mkdirp@0.5.6: + dependencies: + minimist: 1.2.8 + + mkdirp@1.0.4: {} + + mnemonist@0.38.5: + dependencies: + obliterator: 2.0.4 + + mocha@10.7.3: + dependencies: + ansi-colors: 4.1.3 + browser-stdout: 1.3.1 + chokidar: 3.6.0 + debug: 4.3.7(supports-color@8.1.1) + diff: 5.2.0 + escape-string-regexp: 4.0.0 + find-up: 5.0.0 + glob: 8.1.0 + he: 1.2.0 + js-yaml: 4.1.0 + log-symbols: 4.1.0 + minimatch: 5.1.6 + ms: 2.1.3 + serialize-javascript: 6.0.2 + strip-json-comments: 3.1.1 + supports-color: 8.1.1 + workerpool: 6.5.1 + yargs: 16.2.0 + yargs-parser: 20.2.9 + yargs-unparser: 2.0.0 + + ms@2.1.2: {} + + ms@2.1.3: {} + + murmur-128@0.2.1: + dependencies: + encode-utf8: 1.0.3 + fmix: 0.1.0 + imul: 1.0.1 + + mute-stream@0.0.8: {} + + nanoid@3.3.7: {} + + natural-compare@1.4.0: {} + + ndjson@2.0.0: + dependencies: + json-stringify-safe: 5.0.1 + minimist: 1.2.8 + readable-stream: 3.6.2 + split2: 3.2.2 + through2: 4.0.2 + + neo-async@2.6.2: {} + + node-addon-api@2.0.2: {} + + node-emoji@1.11.0: + dependencies: + lodash: 4.17.21 + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-gyp-build@4.8.2: {} + + node-releases@2.0.18: {} + + nofilter@3.1.0: {} + + nopt@3.0.6: + dependencies: + abbrev: 1.0.9 + + normalize-package-data@2.5.0: + dependencies: + hosted-git-info: 2.8.9 + resolve: 1.22.8 + semver: 5.7.2 + validate-npm-package-license: 3.0.4 + + normalize-package-data@3.0.3: + dependencies: + hosted-git-info: 4.1.0 + is-core-module: 2.15.1 + semver: 7.6.3 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@5.3.0: + dependencies: + path-key: 4.0.0 + + number-to-bn@1.7.0: + dependencies: + bn.js: 4.11.6 + strip-hex-prefix: 1.0.0 + + object-assign@4.1.1: {} + + object-inspect@1.13.2: {} + + obliterator@2.0.4: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@6.0.0: + dependencies: + mimic-fn: 4.0.0 + + open@8.4.2: + dependencies: + define-lazy-prop: 2.0.0 + is-docker: 2.2.1 + is-wsl: 2.2.0 + + optionator@0.8.3: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.3.0 + prelude-ls: 1.1.2 + type-check: 0.3.2 + word-wrap: 1.2.5 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ora@5.4.1: + dependencies: + bl: 4.1.0 + chalk: 4.1.2 + cli-cursor: 3.1.0 + cli-spinners: 2.9.2 + is-interactive: 1.0.0 + is-unicode-supported: 0.1.0 + log-symbols: 4.1.0 + strip-ansi: 6.0.1 + wcwidth: 1.0.1 + + ordinal@1.0.3: {} + + os-tmpdir@1.0.2: {} + + p-limit@1.3.0: + dependencies: + p-try: 1.0.0 + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@2.0.0: + dependencies: + p-limit: 1.3.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-map@4.0.0: + dependencies: + aggregate-error: 3.1.0 + + p-try@1.0.0: {} + + p-try@2.2.0: {} + + package-json-from-dist@1.0.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-cache-control@1.0.1: {} + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.24.7 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-passwd@1.0.0: {} + + path-exists@3.0.0: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.2 + + path-starts-with@2.0.1: {} + + path-type@3.0.0: + dependencies: + pify: 3.0.0 + + path-type@4.0.0: {} + + pathval@1.1.1: {} + + pbkdf2@3.1.2: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.2 + safe-buffer: 5.2.1 + sha.js: 2.4.11 + + picocolors@1.1.0: {} + + picomatch@2.3.1: {} + + pidtree@0.6.0: {} + + pify@3.0.0: {} + + pify@4.0.1: {} + + pluralize@8.0.0: {} + + postcss@8.4.45: + dependencies: + nanoid: 3.3.7 + picocolors: 1.1.0 + source-map-js: 1.2.1 + + prelude-ls@1.1.2: {} + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.0: + dependencies: + fast-diff: 1.3.0 + + prettier-plugin-solidity@1.4.1(prettier@2.8.8): + dependencies: + '@solidity-parser/parser': 0.18.0 + prettier: 2.8.8 + semver: 7.6.3 + + prettier@2.8.8: {} + + process-nextick-args@2.0.1: {} + + promise@8.3.0: + dependencies: + asap: 2.0.6 + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + proper-lockfile@4.1.2: + dependencies: + graceful-fs: 4.2.11 + retry: 0.12.0 + signal-exit: 3.0.7 + + proxy-from-env@1.1.0: {} + + punycode@2.3.1: {} + + qs@6.13.0: + dependencies: + side-channel: 1.0.6 + + queue-microtask@1.2.3: {} + + quick-lru@4.0.1: {} + + randombytes@2.1.0: + dependencies: + safe-buffer: 5.2.1 + + raw-body@2.5.2: + dependencies: + bytes: 3.1.2 + http-errors: 2.0.0 + iconv-lite: 0.4.24 + unpipe: 1.0.0 + + read-pkg-up@7.0.1: + dependencies: + find-up: 4.1.0 + read-pkg: 5.2.0 + type-fest: 0.8.1 + + read-pkg@3.0.0: + dependencies: + load-json-file: 4.0.0 + normalize-package-data: 2.5.0 + path-type: 3.0.0 + + read-pkg@5.2.0: + dependencies: + '@types/normalize-package-data': 2.4.4 + normalize-package-data: 2.5.0 + parse-json: 5.2.0 + type-fest: 0.6.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readdirp@3.6.0: + dependencies: + picomatch: 2.3.1 + + rechoir@0.6.2: + dependencies: + resolve: 1.22.8 + + recursive-readdir@2.2.3: + dependencies: + minimatch: 3.1.2 + + redent@3.0.0: + dependencies: + indent-string: 4.0.0 + strip-indent: 3.0.0 + + reduce-flatten@2.0.0: {} + + req-cwd@2.0.0: + dependencies: + req-from: 2.0.0 + + req-from@2.0.0: + dependencies: + resolve-from: 3.0.0 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-dir@1.0.1: + dependencies: + expand-tilde: 2.0.2 + global-modules: 1.0.0 + + resolve-from@3.0.0: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + resolve-global@1.0.0: + dependencies: + global-dirs: 0.1.1 + + resolve-pkg-maps@1.0.0: {} + + resolve@1.1.7: {} + + resolve@1.17.0: + dependencies: + path-parse: 1.0.7 + + resolve@1.22.8: + dependencies: + is-core-module: 2.15.1 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + restore-cursor@3.1.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + restore-cursor@4.0.0: + dependencies: + onetime: 5.1.2 + signal-exit: 3.0.7 + + retry@0.12.0: {} + + retry@0.13.1: {} + + reusify@1.0.4: {} + + rfdc@1.4.1: {} + + rimraf@2.7.1: + dependencies: + glob: 7.2.3 + + rimraf@3.0.2: + dependencies: + glob: 7.2.3 + + rimraf@5.0.10: + dependencies: + glob: 10.4.5 + + ripemd160@2.0.2: + dependencies: + hash-base: 3.1.0 + inherits: 2.0.4 + + rlp@2.2.7: + dependencies: + bn.js: 5.2.1 + + rollup-plugin-auto-external@2.0.0(rollup@4.21.2): + dependencies: + builtins: 2.0.1 + read-pkg: 3.0.0 + rollup: 4.21.2 + safe-resolve: 1.0.0 + semver: 5.7.2 + + rollup-plugin-dts@6.1.1(rollup@4.21.2)(typescript@5.6.2): + dependencies: + magic-string: 0.30.11 + rollup: 4.21.2 + typescript: 5.6.2 + optionalDependencies: + '@babel/code-frame': 7.24.7 + + rollup-plugin-esbuild@6.1.1(esbuild@0.23.1)(rollup@4.21.2): + dependencies: + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + debug: 4.3.7(supports-color@8.1.1) + es-module-lexer: 1.5.4 + esbuild: 0.23.1 + get-tsconfig: 4.8.0 + rollup: 4.21.2 + transitivePeerDependencies: + - supports-color + + rollup-plugin-inject@3.0.2: + dependencies: + estree-walker: 0.6.1 + magic-string: 0.25.9 + rollup-pluginutils: 2.8.2 + + rollup-plugin-node-polyfills@0.2.1: + dependencies: + rollup-plugin-inject: 3.0.2 + + rollup-plugin-swc3@0.11.2(@swc/core@1.7.26)(rollup@4.21.2): + dependencies: + '@fastify/deepmerge': 1.3.0 + '@rollup/pluginutils': 5.1.0(rollup@4.21.2) + '@swc/core': 1.7.26 + get-tsconfig: 4.8.0 + rollup: 4.21.2 + rollup-preserve-directives: 1.1.1(rollup@4.21.2) + + rollup-pluginutils@2.8.2: + dependencies: + estree-walker: 0.6.1 + + rollup-preserve-directives@1.1.1(rollup@4.21.2): + dependencies: + magic-string: 0.30.11 + rollup: 4.21.2 + + rollup@4.21.2: + dependencies: + '@types/estree': 1.0.5 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.21.2 + '@rollup/rollup-android-arm64': 4.21.2 + '@rollup/rollup-darwin-arm64': 4.21.2 + '@rollup/rollup-darwin-x64': 4.21.2 + '@rollup/rollup-linux-arm-gnueabihf': 4.21.2 + '@rollup/rollup-linux-arm-musleabihf': 4.21.2 + '@rollup/rollup-linux-arm64-gnu': 4.21.2 + '@rollup/rollup-linux-arm64-musl': 4.21.2 + '@rollup/rollup-linux-powerpc64le-gnu': 4.21.2 + '@rollup/rollup-linux-riscv64-gnu': 4.21.2 + '@rollup/rollup-linux-s390x-gnu': 4.21.2 + '@rollup/rollup-linux-x64-gnu': 4.21.2 + '@rollup/rollup-linux-x64-musl': 4.21.2 + '@rollup/rollup-win32-arm64-msvc': 4.21.2 + '@rollup/rollup-win32-ia32-msvc': 4.21.2 + '@rollup/rollup-win32-x64-msvc': 4.21.2 + fsevents: 2.3.3 + + run-async@2.4.1: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.1: + dependencies: + tslib: 2.7.0 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-resolve@1.0.0: {} + + safer-buffer@2.1.2: {} + + sc-istanbul@0.4.6: + dependencies: + abbrev: 1.0.9 + async: 1.5.2 + escodegen: 1.8.1 + esprima: 2.7.3 + glob: 5.0.15 + handlebars: 4.7.8 + js-yaml: 3.14.1 + mkdirp: 0.5.6 + nopt: 3.0.6 + once: 1.4.0 + resolve: 1.1.7 + supports-color: 3.2.3 + which: 1.3.1 + wordwrap: 1.0.0 + + scrypt-js@3.0.1: {} + + secp256k1@4.0.3: + dependencies: + elliptic: 6.5.7 + node-addon-api: 2.0.2 + node-gyp-build: 4.8.2 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.5.4: + dependencies: + lru-cache: 6.0.0 + + semver@7.6.3: {} + + serialize-javascript@6.0.2: + dependencies: + randombytes: 2.1.0 + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.2.4 + gopd: 1.0.1 + has-property-descriptors: 1.0.2 + + setimmediate@1.0.5: {} + + setprototypeof@1.2.0: {} + + sha.js@2.4.11: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + + sha1@1.1.1: + dependencies: + charenc: 0.0.2 + crypt: 0.0.2 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shelljs@0.8.5: + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + + shx@0.3.4: + dependencies: + minimist: 1.2.8 + shelljs: 0.8.5 + + side-channel@1.0.6: + dependencies: + call-bind: 1.0.7 + es-errors: 1.3.0 + get-intrinsic: 1.2.4 + object-inspect: 1.13.2 + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sisteransi@1.0.5: {} + + slash@3.0.0: {} + + slice-ansi@4.0.0: + dependencies: + ansi-styles: 4.3.0 + astral-regex: 2.0.0 + is-fullwidth-code-point: 3.0.0 + + slice-ansi@5.0.0: + dependencies: + ansi-styles: 6.2.1 + is-fullwidth-code-point: 4.0.0 + + solc@0.8.26(debug@4.3.7): + dependencies: + command-exists: 1.2.9 + commander: 8.3.0 + follow-redirects: 1.15.9(debug@4.3.7) + js-sha3: 0.8.0 + memorystream: 0.3.1 + semver: 5.7.2 + tmp: 0.0.33 + transitivePeerDependencies: + - debug + + solhint-plugin-prettier@0.0.5(prettier-plugin-solidity@1.4.1(prettier@2.8.8))(prettier@2.8.8): + dependencies: + prettier: 2.8.8 + prettier-linter-helpers: 1.0.0 + prettier-plugin-solidity: 1.4.1(prettier@2.8.8) + + solhint@3.6.2(typescript@5.6.2): + dependencies: + '@solidity-parser/parser': 0.16.2 + ajv: 6.12.6 + antlr4: 4.13.2 + ast-parents: 0.0.1 + chalk: 4.1.2 + commander: 10.0.1 + cosmiconfig: 8.3.6(typescript@5.6.2) + fast-diff: 1.3.0 + glob: 8.1.0 + ignore: 5.3.2 + js-yaml: 4.1.0 + lodash: 4.17.21 + pluralize: 8.0.0 + semver: 7.6.3 + strip-ansi: 6.0.1 + table: 6.8.2 + text-table: 0.2.0 + optionalDependencies: + prettier: 2.8.8 + transitivePeerDependencies: + - typescript + + solidity-ast@0.4.59: {} + + solidity-coverage@0.8.13(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)): + dependencies: + '@ethersproject/abi': 5.7.0 + '@solidity-parser/parser': 0.18.0 + chalk: 2.4.2 + death: 1.1.0 + difflib: 0.2.4 + fs-extra: 8.1.0 + ghost-testrpc: 0.0.2 + global-modules: 2.0.0 + globby: 10.0.2 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + jsonschema: 1.4.1 + lodash: 4.17.21 + mocha: 10.7.3 + node-emoji: 1.11.0 + pify: 4.0.1 + recursive-readdir: 2.2.3 + sc-istanbul: 0.4.6 + semver: 7.6.3 + shelljs: 0.8.5 + web3-utils: 1.10.4 + + solmate@6.2.0: {} + + source-map-js@1.2.1: {} + + source-map-support@0.5.21: + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + + source-map@0.2.0: + dependencies: + amdefine: 1.0.1 + optional: true + + source-map@0.5.7: {} + + source-map@0.6.1: {} + + sourcemap-codec@1.4.8: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.20 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.20 + + spdx-license-ids@3.0.20: {} + + split2@3.2.2: + dependencies: + readable-stream: 3.6.2 + + sprintf-js@1.0.3: {} + + squirrelly@8.0.8: {} + + stacktrace-parser@0.1.10: + dependencies: + type-fest: 0.7.1 + + statuses@2.0.1: {} + + string-argv@0.3.2: {} + + string-format@2.0.0: {} + + string-width@2.1.1: + dependencies: + is-fullwidth-code-point: 2.0.0 + strip-ansi: 4.0.0 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.1.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@4.0.0: + dependencies: + ansi-regex: 3.0.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.1.0: + dependencies: + ansi-regex: 6.1.0 + + strip-bom@3.0.0: {} + + strip-bom@4.0.0: {} + + strip-final-newline@2.0.0: {} + + strip-final-newline@3.0.0: {} + + strip-hex-prefix@1.0.0: + dependencies: + is-hex-prefixed: 1.0.0 + + strip-indent@3.0.0: + dependencies: + min-indent: 1.0.1 + + strip-json-comments@3.1.1: {} + + supports-color@3.2.3: + dependencies: + has-flag: 1.0.0 + + supports-color@5.5.0: + dependencies: + has-flag: 3.0.0 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + sync-request@6.1.0: + dependencies: + http-response-object: 3.0.2 + sync-rpc: 1.3.6 + then-request: 6.0.2 + + sync-rpc@1.3.6: + dependencies: + get-port: 3.2.0 + + table-layout@1.0.2: + dependencies: + array-back: 4.0.2 + deep-extend: 0.6.0 + typical: 5.2.0 + wordwrapjs: 4.0.1 + + table@6.8.2: + dependencies: + ajv: 8.17.1 + lodash.truncate: 4.4.2 + slice-ansi: 4.0.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + tenderly@0.9.1(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2): + dependencies: + axios: 0.27.2 + cli-table3: 0.6.5 + commander: 9.5.0 + js-yaml: 4.1.0 + open: 8.4.2 + prompts: 2.4.2 + tslog: 4.9.3 + optionalDependencies: + ts-node: 10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2) + typescript: 5.6.2 + transitivePeerDependencies: + - debug + + text-extensions@1.9.0: {} + + text-table@0.2.0: {} + + then-request@6.0.2: + dependencies: + '@types/concat-stream': 1.6.1 + '@types/form-data': 0.0.33 + '@types/node': 8.10.66 + '@types/qs': 6.9.15 + caseless: 0.12.0 + concat-stream: 1.6.2 + form-data: 2.5.1 + http-basic: 8.1.3 + http-response-object: 3.0.2 + promise: 8.3.0 + qs: 6.13.0 + + through2@4.0.2: + dependencies: + readable-stream: 3.6.2 + + through@2.3.8: {} + + tmp@0.0.33: + dependencies: + os-tmpdir: 1.0.2 + + to-fast-properties@2.0.0: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + toidentifier@1.0.1: {} + + tr46@0.0.3: {} + + trim-newlines@3.0.1: {} + + ts-api-utils@1.3.0(typescript@5.6.2): + dependencies: + typescript: 5.6.2 + + ts-command-line-args@2.5.1: + dependencies: + chalk: 4.1.2 + command-line-args: 5.2.1 + command-line-usage: 6.1.3 + string-format: 2.0.0 + + ts-essentials@7.0.3(typescript@5.6.2): + dependencies: + typescript: 5.6.2 + + ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 18.19.50 + acorn: 8.12.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.6.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.7.26 + + ts-node@10.9.2(@swc/core@1.7.26)(@types/node@20.5.1)(typescript@5.6.2): + dependencies: + '@cspotcode/source-map-support': 0.8.1 + '@tsconfig/node10': 1.0.11 + '@tsconfig/node12': 1.0.11 + '@tsconfig/node14': 1.0.3 + '@tsconfig/node16': 1.0.4 + '@types/node': 20.5.1 + acorn: 8.12.1 + acorn-walk: 8.3.4 + arg: 4.1.3 + create-require: 1.1.1 + diff: 4.0.2 + make-error: 1.3.6 + typescript: 5.6.2 + v8-compile-cache-lib: 3.0.1 + yn: 3.1.1 + optionalDependencies: + '@swc/core': 1.7.26 + + tslib@1.14.1: {} + + tslib@2.4.0: {} + + tslib@2.7.0: {} + + tslog@4.9.3: {} + + tsort@0.0.1: {} + + tweetnacl-util@0.15.1: {} + + tweetnacl@1.0.3: {} + + type-check@0.3.2: + dependencies: + prelude-ls: 1.1.2 + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-detect@4.1.0: {} + + type-fest@0.18.1: {} + + type-fest@0.20.2: {} + + type-fest@0.21.3: {} + + type-fest@0.6.0: {} + + type-fest@0.7.1: {} + + type-fest@0.8.1: {} + + type-fest@1.4.0: {} + + typechain@8.3.2(typescript@5.6.2): + dependencies: + '@types/prettier': 2.7.3 + debug: 4.3.7(supports-color@8.1.1) + fs-extra: 7.0.1 + glob: 7.1.7 + js-sha3: 0.8.0 + lodash: 4.17.21 + mkdirp: 1.0.4 + prettier: 2.8.8 + ts-command-line-args: 2.5.1 + ts-essentials: 7.0.3(typescript@5.6.2) + typescript: 5.6.2 + transitivePeerDependencies: + - supports-color + + typedarray@0.0.6: {} + + typescript@5.6.2: {} + + typical@4.0.0: {} + + typical@5.2.0: {} + + uglify-js@3.19.3: + optional: true + + undici-types@5.26.5: {} + + undici@5.28.4: + dependencies: + '@fastify/busboy': 2.1.1 + + undici@6.19.8: {} + + unfetch@4.2.0: {} + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + unpipe@1.0.0: {} + + update-browserslist-db@1.1.0(browserslist@4.23.3): + dependencies: + browserslist: 4.23.3 + escalade: 3.2.0 + picocolors: 1.1.0 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + utf8@3.0.0: {} + + util-deprecate@1.0.2: {} + + uuid@8.3.2: {} + + v8-compile-cache-lib@3.0.1: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + viem@2.21.5(typescript@5.6.2): + dependencies: + '@adraffy/ens-normalize': 1.10.0 + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + '@scure/bip32': 1.4.0 + '@scure/bip39': 1.4.0 + abitype: 1.0.5(typescript@5.6.2) + isows: 1.0.4(ws@8.17.1) + webauthn-p256: 0.0.5 + ws: 8.17.1 + optionalDependencies: + typescript: 5.6.2 + transitivePeerDependencies: + - bufferutil + - utf-8-validate + - zod + + wcwidth@1.0.1: + dependencies: + defaults: 1.0.4 + + web3-utils@1.10.4: + dependencies: + '@ethereumjs/util': 8.1.0 + bn.js: 5.2.1 + ethereum-bloom-filters: 1.2.0 + ethereum-cryptography: 2.2.1 + ethjs-unit: 0.1.6 + number-to-bn: 1.7.0 + randombytes: 2.1.0 + utf8: 3.0.0 + + webauthn-p256@0.0.5: + dependencies: + '@noble/curves': 1.4.0 + '@noble/hashes': 1.4.0 + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + + word-wrap@1.2.5: {} + + wordwrap@1.0.0: {} + + wordwrapjs@4.0.1: + dependencies: + reduce-flatten: 2.0.0 + typical: 5.2.0 + + workerpool@6.5.1: {} + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.1 + string-width: 5.1.2 + strip-ansi: 7.1.0 + + wrappy@1.0.2: {} + + ws@7.4.6: {} + + ws@7.5.10: {} + + ws@8.17.1: {} + + xdeployer@2.2.2(@nomicfoundation/hardhat-ethers@3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)))(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)): + dependencies: + '@nomicfoundation/hardhat-ethers': 3.0.8(ethers@6.13.2)(hardhat@2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2)) + ethers: 6.13.2 + hardhat: 2.22.10(ts-node@10.9.2(@swc/core@1.7.26)(@types/node@18.19.50)(typescript@5.6.2))(typescript@5.6.2) + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@4.0.0: {} + + yaml@2.3.1: {} + + yargs-parser@20.2.9: {} + + yargs-parser@21.1.1: {} + + yargs-unparser@2.0.0: + dependencies: + camelcase: 6.3.0 + decamelize: 4.0.0 + flat: 5.0.2 + is-plain-obj: 2.1.0 + + yargs@16.2.0: + dependencies: + cliui: 7.0.4 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 20.2.9 + + yargs@17.7.2: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yn@3.1.1: {} + + yocto-queue@0.1.0: {} + + zksync-web3@0.14.4(ethers@5.7.2): + dependencies: + ethers: 5.7.2 diff --git a/contracts/src/deployments/deployment-marketplace-arbitrumOne.json b/contracts/src/deployments/deployment-marketplace-arbitrumOne.json new file mode 100644 index 00000000..116db5d5 --- /dev/null +++ b/contracts/src/deployments/deployment-marketplace-arbitrumOne.json @@ -0,0 +1,55 @@ +{ + "TransferManager": { + "address": "0x658c1695DCb298E57e6144F6dA3e83DdCF5e2BaB", + "fullNamespace": "TransferManager", + "args": ["0xdc6d6f9ab5fcc398b92b017e8482749ae5afbf35"], + "encodedArgs": "0xdc6d6f9ab5fcc398b92b017e8482749ae5afbf35", + "tx": "0x70b306371278c66189814b465e151006ad6a6e0c9d6b910c0234ac2ec8da1706" + }, + "ProtocolFeeRecipient": { + "address": "0xE332d4b0a30a522099292594999967267480a081", + "fullNamespace": "ProtocolFeeRecipient", + "args": ["0xE7C4531ad8828794904D332a12702beC8ff1A498", "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"], + "encodedArgs": "0xe7c4531ad8828794904d332a12702bec8ff1a49882af49447d8a07e3bd95bd0d56f35241523fbab1", + "tx": "0x6d9ff2423d04879b3445bb95c2abdfe760090391440e1e2ea92e26c267d5c696" + }, + "HypercertExchange": { + "address": "0xcE8fa09562f07c23B9C21b5d0A29a293F8a8BC83", + "fullNamespace": "LooksRareProtocol", + "args": [ + "0xdc6d6f9ab5fcc398b92b017e8482749ae5afbf35", + "0xE332d4b0a30a522099292594999967267480a081", + "0x658c1695DCb298E57e6144F6dA3e83DdCF5e2BaB", + "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1" + ], + "encodedArgs": "0xdc6d6f9ab5fcc398b92b017e8482749ae5afbf35e332d4b0a30a522099292594999967267480a081658c1695dcb298e57e6144f6da3e83ddcf5e2bab82af49447d8a07e3bd95bd0d56f35241523fbab1", + "tx": "0x1eff2ebd3d6ad2a97f92c4caa648fb34fb25ca60730625d3491cd2b1171fcc23" + }, + "RoyaltyFeeRegistry": { + "address": "0xd97b92B740EAf655DFf4f93B0D6D38232cfE84C6", + "fullNamespace": "RoyaltyFeeRegistry", + "args": ["1000"], + "encodedArgs": "0x00000000000000000000000000000000000000000000000000000000000003e8", + "tx": "0x8352d52116ff97551dca27801b0fe1995e9b66ad45062021c13da4d7855f9658" + }, + "OrderValidator": { + "address": "0x74b05A917BBa5050ea216877c81801d6049b3f16", + "fullNamespace": "OrderValidatorV2A", + "args": ["0xcE8fa09562f07c23B9C21b5d0A29a293F8a8BC83"], + "encodedArgs": "0xce8fa09562f07c23b9c21b5d0a29a293f8a8bc83" + }, + "CreatorFeeManager": { + "address": "0x2d25df25ab95b74a18eb2d719a98b47f5e5f5534", + "fullNamespace": "CreatorFeeManagerWithRoyalties", + "args": ["0xd97b92B740EAf655DFf4f93B0D6D38232cfE84C6"], + "encodedArgs": "0xd97b92b740eaf655dff4f93b0d6d38232cfe84c6", + "tx": "0x2339dcf7dda93e4fbfc763a70dfe932b793552ee805c584d10acdf6127ba18f2" + }, + "StrategyHypercertFractionOffer": { + "address": "0xecab24cade0261fc6513ca13bb3d10f760af3da8", + "fullNamespace": "StrategyHypercertFractionOffer", + "args": [], + "encodedArgs": "0x", + "tx": "0x79012a15888ec5c77e7c68cbc85614645f13603e18a1f951746fa5857c0f0a23" + } +} diff --git a/contracts/src/deployments/index.ts b/contracts/src/deployments/index.ts index 3fb1600c..f924f0f3 100644 --- a/contracts/src/deployments/index.ts +++ b/contracts/src/deployments/index.ts @@ -3,6 +3,7 @@ import deployments_marketplace_optimism_mainnet from "./deployment-marketplace-o import deployments_marketplace_sepolia from "./deployment-marketplace-sepolia.json"; import deployments_protocol from "./deployments-protocol.json"; import deployments_marketplace_arb_sepolia from "./deployment-marketplace-arb-sepolia.json"; +import deployments_marketplace_arb_one from "./deployment-marketplace-arbitrumOne.json"; const deployments_marketplace = { "10": { @@ -33,6 +34,13 @@ const deployments_marketplace = { RoyaltyFeeRegistry: deployments_marketplace_arb_sepolia.RoyaltyFeeRegistry.address, StrategyHypercertFractionOffer: deployments_marketplace_arb_sepolia.StrategyHypercertFractionOffer.address, }, + "42161": { + TransferManager: deployments_marketplace_arb_one.TransferManager.address, + HypercertExchange: deployments_marketplace_arb_one.HypercertExchange.address, + OrderValidatorV2A: deployments_marketplace_arb_one.OrderValidator.address, + RoyaltyFeeRegistry: deployments_marketplace_arb_one.RoyaltyFeeRegistry.address, + StrategyHypercertFractionOffer: deployments_marketplace_arb_one.StrategyHypercertFractionOffer.address, + }, }; export default { marketplace: deployments_marketplace, protocol: deployments_protocol }; diff --git a/contracts/src/index.ts b/contracts/src/index.ts index c42814ca..30e00b8b 100644 --- a/contracts/src/index.ts +++ b/contracts/src/index.ts @@ -79,6 +79,7 @@ const deployments = { }, 42161: { ...DEPLOYMENTS.protocol["42161"], + ...DEPLOYMENTS.marketplace["42161"], }, 421614: { ...DEPLOYMENTS.protocol["421614"], diff --git a/contracts/tasks/config.ts b/contracts/tasks/config.ts index 89c508b0..4915724d 100644 --- a/contracts/tasks/config.ts +++ b/contracts/tasks/config.ts @@ -7,6 +7,7 @@ const WETH: TokenAddressType = { "optimism-mainnet": "0x4200000000000000000000000000000000000006", "base-sepolia": "0x4200000000000000000000000000000000000006", "arb-sepolia": "0x3031a6D5D9648BA5f50f656Cd4a1672E1167a34A", + arbitrumOne: "0x82aF49447D8a07e3bd95BD0d56f35241523fBab1", }; // LINK faucet for Sepolia: https://faucets.chain.link/ @@ -17,6 +18,7 @@ const DAI: TokenAddressType = { "optimism-mainnet": "0xda10009cbd5d07dd0cecc66161fc93d7c9000da1", "base-sepolia": "0xE4aB69C077896252FAFBD49EFD26B5D171A32410", "arb-sepolia": "0xb1D4538B4571d411F07960EF2838Ce337FE1E80E", + arbitrumOne: "0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1", }; // USDC https://faucet.circle.com/ @@ -28,6 +30,7 @@ const USDC: TokenAddressType = { "optimism-mainnet": "0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85", "base-sepolia": "0x036CbD53842c5426634e7929541eC2318f3dCF7e", "arb-sepolia": "0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d", + arbitrumOne: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", }; export const getTokenAddresses = (network: string) => { @@ -46,7 +49,7 @@ const ADMIN_ACCOUNT: { [key: string]: string } = { "optimism-mainnet": "0x560adA72a80b4707e493cA8c3B7B7528930E7Be5", celo: "0x14ae502FEF3843fF3a1735B3209D39B320130af9", base: "0x14ae502FEF3843fF3a1735B3209D39B320130af9", - arbitrum: "0x14ae502FEF3843fF3a1735B3209D39B320130af9", + arbitrumOne: "0x14ae502FEF3843fF3a1735B3209D39B320130af9", "arb-sepolia": "0x5d36971451AE593685Cab8815d644f9B4B66Ec99", }; @@ -68,7 +71,7 @@ const FEE_RECIPIENT: { [key: string]: string } = { "optimism-mainnet": "0xE7C4531ad8828794904D332a12702beC8ff1A498", celo: "0xE7C4531ad8828794904D332a12702beC8ff1A498", base: "0xE7C4531ad8828794904D332a12702beC8ff1A498", - arbitrum: "0xE7C4531ad8828794904D332a12702beC8ff1A498", + arbitrumOne: "0xE7C4531ad8828794904D332a12702beC8ff1A498", "arb-sepolia": "0x5d36971451AE593685Cab8815d644f9B4B66Ec99", }; diff --git a/contracts/tasks/deploy-marketplace.ts b/contracts/tasks/deploy-marketplace.ts index 7f22b2bb..02998862 100644 --- a/contracts/tasks/deploy-marketplace.ts +++ b/contracts/tasks/deploy-marketplace.ts @@ -52,7 +52,7 @@ const runCreate2Deployment = async ( abi: create2Instance.abi, functionName: "safeCreate2", args: [create2.salt, create2.deployData], - account: "0x5d36971451ae593685cab8815d644f9b4b66ec99", // update method to take account as arg + account: "0xDc6d6f9aB5fcc398B92B017e8482749aE5afbF35", // update method to take account as arg }); const hash = await create2Instance.write.safeCreate2([create2.salt, create2.deployData]); diff --git a/docs/.eslintrc.yml b/docs/.eslintrc.yml deleted file mode 100644 index c1258f9f..00000000 --- a/docs/.eslintrc.yml +++ /dev/null @@ -1,27 +0,0 @@ -extends: - - "eslint:recommended" - - "plugin:@typescript-eslint/eslint-recommended" - - "plugin:@typescript-eslint/recommended" - - "prettier" -parser: "@typescript-eslint/parser" -parserOptions: - project: "./docs/tsconfig.json" -plugins: - - "@docusaurus" - - "@typescript-eslint" -root: true -ignorePatterns: ["build/"] -rules: - "@typescript-eslint/semi": - - warn - "@typescript-eslint/switch-exhaustiveness-check": - - warn - "@typescript-eslint/no-floating-promises": - - error - - ignoreIIFE: true - ignoreVoid: true - "@typescript-eslint/no-inferrable-types": "off" - "@typescript-eslint/no-unused-vars": - - error - - argsIgnorePattern: "_" - varsIgnorePattern: "_" diff --git a/docs/.gitignore b/docs/.gitignore deleted file mode 100644 index 3651560a..00000000 --- a/docs/.gitignore +++ /dev/null @@ -1,22 +0,0 @@ -# Dependencies -/node_modules - -# Production -/build - -# Generated files -.docusaurus -.cache-loader - -# Misc -.DS_Store -.env.local -.env.development.local -.env.test.local -.env.production.local - -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -.idea \ No newline at end of file diff --git a/docs/README.md b/docs/README.md deleted file mode 100644 index bc59add5..00000000 --- a/docs/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Website - -You can find the production version of this website at [https://hypercerts.org/docs](https://hypercerts.org/docs) - -This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. - -NOTE: By default, all edits to `docs/` will be hidden behind the `Next` version in the navbar until the version is released. To cut a release, see the section on [versioning](#versioning). - -### Local Development - -``` -$ yarn -$ yarn start -``` - -This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. - -### Build - -``` -$ yarn build -``` - -This command generates static content into the `build` directory and can be served using any static contents hosting service. - -### Deployment - -Using SSH: - -``` -$ USE_SSH=true yarn deploy -``` - -Not using SSH: - -``` -$ GIT_USER= yarn deploy -``` - -If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/docs/babel.config.ts b/docs/babel.config.ts deleted file mode 100644 index 4e1c4976..00000000 --- a/docs/babel.config.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const config = { - presets: "@docusaurus/core/lib/babel/preset", -}; diff --git a/docs/docs/about.md b/docs/docs/about.md deleted file mode 100644 index b56bfa4f..00000000 --- a/docs/docs/about.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: The Hypercerts Foundation -id: about ---- - -# The Hypercerts Foundation - -### Mission -The mission of the Hypercerts Foundation is to advance the development and adoption of open-source protocols for funding and rewarding positive impact. - -### Organization - -The Hypercerts Foundation is a fully independent organisation working closely with stakeholders in the open source, scientific research, and cryptography communities to develop and promote additional protocols that are decentralized, secure, and transparent. The Foundation will also provide support and resources to help drive the wider adoption of these protocols. - -### History - -Research on hypercerts was first presented to the public by David A. Dalrymple at the conference series Funding the Commons in March 2022. However, the concept of “impact certificates” has been a recurring theme at conferences and in online discussion forums since at least 2014. In late 2022, a small team of research scientists, developers, and practitioners began implementing hypercerts as a set of Ethereum-based smart contracts that could be used to assert and fund impact claims. The Hypercerts Foundation will now serve as the long-term home for this work. - -The new foundation is supported in part by Protocol Labs and is part of the broader Protocol Labs Network of hundreds of companies and organizations. The Foundation will complement Protocol Labs Network’s mission of enabling a more secure, open, and accessible internet. The Hypercerts Foundation, however, is fully independent and will focus on protocol development and cultivating a community of developers and impact entrepreneurs well beyond the Protocol Labs Network. - -### Further links -Read the full [announcement of the Hypercerts Foundation](https://hypercerts.notion.site/Introducing-the-Hypercerts-Foundation-d956203fe0fc4792980da138015e770a). diff --git a/docs/docs/announcements/2024_01_16_An_Impactful_Year.md b/docs/docs/announcements/2024_01_16_An_Impactful_Year.md deleted file mode 100644 index 3ec4a3d1..00000000 --- a/docs/docs/announcements/2024_01_16_An_Impactful_Year.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: An Impactful Year -id: an-impactful-year.md ---- - -# Announcements - -### Hypercerts are a new token standard for tracking and rewarding positive impact. - -Gm gm. We’re wishing you an impactful 2024. We’re excited for the things ahead! - -2023 has been a year of maturing the foundations laid by the release of the protocol. Together with Grants Stack, Funding the Commons, da0, Zuzalu and many other partners, we’ve successfully run a set of hypercerts pilots. We are grateful for our partners and the enthusiasm of their communities about hypercerts. At every event, we feel the positive energy about hypercerts and about the value mechanism they can unlock. - -At the end of the year, we started developing the hypercert marketplace, which will be released on Sepolia later this week. The marketplace is a fork of LooksRare with modifications to add native support for hypercerts. Thanks to their high quality open source code we were able to use both their exchange contracts as well as the SDK. Special credits go to [Trust Security](https://x.com/trust__90) for not only thoroughly reviewing the changes we’ve made to the stack, but also for going beyond their scope to help us improve our protocol. - -To help developers get onboarded with our tec,h we’ve released a [Next.JS starter app](https://github.com/hypercerts-org/hypercert-nextjs-chakra-starter), a repo with minimal [demo apps](https://github.com/hypercerts-org/demo-apps) for JS, TS on both server and client side, and of course, the [hypercerts SDK v1](https://www.npmjs.com/package/@hypercerts-org/sdk). The SDK provides methods and utilities for minting and claiming hypercerts, validating datasets, and uploading to and fetching from IPFS. - -All of this work is supported by GG19, the first Octant epoch, Optimism’s retroPGF and of course Protocol Labs. A big thank you to all supporters. - -In the next months, we’ll work with close collaborators to build out the evaluation functionalities and provide support to projects that want to integrate hypercerts into their funding systems (similar to how we are integrating hypercerts with Gitcoin) or want to build new applications using hypercerts. If you want to build on top of the hypercerts protocol, please get in contact with us. - -Excited and grateful, - -The hypercerts team diff --git a/docs/docs/developer/allowlists.md b/docs/docs/developer/allowlists.md deleted file mode 100644 index 61200236..00000000 --- a/docs/docs/developer/allowlists.md +++ /dev/null @@ -1,101 +0,0 @@ -# Allowlists - -Allowlists are an efficient way to enable distribution of hypercert fractions amongst a group. -First, the creator will create the hypercert with the metadata and an immutable allowlist. -With the `claimId`, every account specified in the allowlist can later mint their fraction token from that allowlist. - -## Create an allowlist - -First specify an allowlist, mapping addresses to the number of units they should receive. - -```js -import { - TransferRestrictions, - formatHypercertData, - Allowlist, -} from "@hypercerts-org/sdk"; - -const allowlist: Allowlist = [ - { address: "0x123....asfcnaes", units: 100n }, - { address: "0xabc....w2dwqwef", units: 100n }, -]; -``` - -Then, call `createAllowlist` with the metadata and allowlist. - -```js -const { metadata } = formatHypercertData(...); -const totalUnits = 10000n; -const transferRestrictions = TransferRestrictions.FromCreatorOnly - -const txHash = await hypercerts.createAllowlist({ - allowList, - metaData, - totalUnits, - transferRestrictions: TransferRestrictions.FromCreatorOnly, -}); -``` - -> **note** We store the allowlist and the Merkle tree in the metadata of the Hypercert. To understand the Merkle tree generation and data structures, check out the [OpenZeppelin merkle tree library](https://github.com/OpenZeppelin/merkle-tree) - -It first checks if the client is writable and if the operator is a signer. If the operator is not a signer, it throws an `InvalidOrMissingError`. - -Next, it validates the allowlist and metadata by calling the `validateAllowlist` and `validateMetaData` functions respectively. If either the allowlist or metadata is invalid, it throws a `MalformedDataError`. - -Once the allowlist and metadata are validated, the method creates a Merkle tree from the allowlist and stores it on IPFS. It then stores the metadata on IPFS as well. - -Finally, the method invokes the `createAllowlist` function on the contract with the signer's `address`, the total number of `units`, the Merkle tree `root`, the metadata `CID`, and the `transfer restrictions`. If the method is called with `overrides`, it passes them to the createAllowlist function. - -## Claiming a fraction token - -Users can claim their fraction tokens for many hypercerts at once using `mintClaimFractionFromAllowlist`. To determine the input the following information is required: - -| Variable | Type | Source | -| -------- | ------ | ------------- | ----------- | -| claimId | bigint | Hypercert ID | -| units | bigint | Allowlist | -| proof | `(Hex | ByteArray)[]` | Merkle tree | - -We store the allowlist and the Merkle tree in the metadata of the Hypercert. To understand the Merkle tree data structures, check out the [OpenZeppelin merkle tree library](https://github.com/OpenZeppelin/merkle-tree). You can get the `proof` and `units` by traversing the merkle tree. - -Then, call `mintClaimFractionFromAllowlist` with the required data. The contracts will also verify the proofs. However, when providing the `root` in the function input, the proofs will be verified before a transaction is submitted. - -```js -import { StandardMerkleTree } from "@openzeppelin/merkle-tree"; - -const claimId = "0x822f17a9a5eecfd...85254363386255337"; -const address = "0xc0ffee254729296a45a3885639AC7E10F9d54979"; - -const { indexer, storage } = hypercertsClient; -const claimById = await indexer.claimById(claimId); -const { uri, tokenID: _id } = claimById.claim; -const metadata = await storage.getMetadata(uri || ""); -const treeResponse = await storage.getData(metadata.allowList); -const tree = StandardMerkleTree.load(JSON.parse(treeResponse)); - -let args; -// Find the proof in the allowlist -for (const [leaf, value] of tree.entries()) { - if (value[0] === address) { - args = { - proofs: tree.getProof(leaf), - units: Number(value[1]), - claimId: _id, - }; - break; - } -} - -// Mint fraction token -const tx = await hypercerts.mintClaimFractionFromAllowlist({ - ...args, -}); -``` - -Let's see what happens under the hood: - -First, the method checks that the client is not `read only` and that the operator is a signer. If not, it throws an `InvalidOrMissingError`. - -Next, the method verifies the Merkle `proof` using the OpenZeppelin Merkle tree library. If a `root` is provided, the method uses it to verify the proof. If the proof is invalid, it throws an error. - -Finally, the method calls the `mintClaimFromAllowlist` function on the contract with the signer `address`, Merkle `proof`, `claim ID`, and number of `units` as parameters. If overrides are provided, the method uses them to send the transaction. Otherwise, it sends the transaction without overrides. diff --git a/docs/docs/developer/api/contracts/marketplace/BatchOrderTypehashRegistry.md b/docs/docs/developer/api/contracts/marketplace/BatchOrderTypehashRegistry.md deleted file mode 100644 index 4cb96bfc..00000000 --- a/docs/docs/developer/api/contracts/marketplace/BatchOrderTypehashRegistry.md +++ /dev/null @@ -1,46 +0,0 @@ -# BatchOrderTypehashRegistry - -_LooksRare protocol team (👀,💎)_ - -> BatchOrderTypehashRegistry - -The contract generates the batch order hash that is used to compute the digest for signature verification. - -## Methods - -### hashBatchOrder - -```solidity -function hashBatchOrder(bytes32 root, uint256 proofLength) external pure returns (bytes32 batchOrderHash) -``` - -This function returns the hash of the concatenation of batch order type hash and merkle root. - -#### Parameters - -| Name | Type | Description | -| ----------- | ------- | ------------------- | -| root | bytes32 | Merkle root | -| proofLength | uint256 | Merkle proof length | - -#### Returns - -| Name | Type | Description | -| -------------- | ------- | -------------------- | -| batchOrderHash | bytes32 | The batch order hash | - -## Errors - -### MerkleProofTooLarge - -```solidity -error MerkleProofTooLarge(uint256 length) -``` - -It is returned if the length of the merkle proof provided is greater than tolerated. - -#### Parameters - -| Name | Type | Description | -| ------ | ------- | ------------ | -| length | uint256 | Proof length | diff --git a/docs/docs/developer/api/contracts/marketplace/CreatorFeeManagerWithRebates.md b/docs/docs/developer/api/contracts/marketplace/CreatorFeeManagerWithRebates.md deleted file mode 100644 index a32aef65..00000000 --- a/docs/docs/developer/api/contracts/marketplace/CreatorFeeManagerWithRebates.md +++ /dev/null @@ -1,76 +0,0 @@ -# CreatorFeeManagerWithRebates - -_LooksRare protocol team (👀,💎)_ - -> CreatorFeeManagerWithRebates - -This contract returns the creator fee address and the creator rebate amount. - -## Methods - -### STANDARD_ROYALTY_FEE_BP - -```solidity -function STANDARD_ROYALTY_FEE_BP() external view returns (uint256) -``` - -Standard royalty fee (in basis point). - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -### royaltyFeeRegistry - -```solidity -function royaltyFeeRegistry() external view returns (contract IRoyaltyFeeRegistry) -``` - -Royalty fee registry interface. - -#### Returns - -| Name | Type | Description | -| ---- | ---------------------------- | ----------- | -| \_0 | contract IRoyaltyFeeRegistry | undefined | - -### viewCreatorFeeInfo - -```solidity -function viewCreatorFeeInfo(address collection, uint256 price, uint256[] itemIds) external view returns (address creator, uint256 creatorFeeAmount) -``` - -This function returns the creator address and calculates the creator fee amount. - -#### Parameters - -| Name | Type | Description | -| ---------- | --------- | ------------------ | -| collection | address | Collection address | -| price | uint256 | Transaction price | -| itemIds | uint256[] | Array of item ids | - -#### Returns - -| Name | Type | Description | -| ---------------- | ------- | ------------------ | -| creator | address | Creator address | -| creatorFeeAmount | uint256 | Creator fee amount | - -## Errors - -### BundleEIP2981NotAllowed - -```solidity -error BundleEIP2981NotAllowed(address collection) -``` - -It is returned if the bundle contains multiple itemIds with different creator fee structure. - -#### Parameters - -| Name | Type | Description | -| ---------- | ------- | ----------- | -| collection | address | undefined | diff --git a/docs/docs/developer/api/contracts/marketplace/CreatorFeeManagerWithRoyalties.md b/docs/docs/developer/api/contracts/marketplace/CreatorFeeManagerWithRoyalties.md deleted file mode 100644 index 41cab900..00000000 --- a/docs/docs/developer/api/contracts/marketplace/CreatorFeeManagerWithRoyalties.md +++ /dev/null @@ -1,64 +0,0 @@ -# CreatorFeeManagerWithRoyalties - -_LooksRare protocol team (👀,💎)_ - -> CreatorFeeManagerWithRoyalties - -This contract returns the creator fee address and the creator fee amount. - -## Methods - -### royaltyFeeRegistry - -```solidity -function royaltyFeeRegistry() external view returns (contract IRoyaltyFeeRegistry) -``` - -Royalty fee registry interface. - -#### Returns - -| Name | Type | Description | -| ---- | ---------------------------- | ----------- | -| \_0 | contract IRoyaltyFeeRegistry | undefined | - -### viewCreatorFeeInfo - -```solidity -function viewCreatorFeeInfo(address collection, uint256 price, uint256[] itemIds) external view returns (address creator, uint256 creatorFeeAmount) -``` - -This function returns the creator address and calculates the creator fee amount. - -_There are two on-chain sources for the royalty fee to distribute. 1. RoyaltyFeeRegistry: It is an on-chain registry where creator fee is defined for all items of a collection. 2. ERC2981: The NFT Royalty Standard where royalty fee is defined at a itemId level in a collection. The on-chain logic looks up the registry first. If it does not find anything, it checks if a collection is ERC2981. If so, it fetches the proper royalty information for the itemId. For a bundle that contains multiple itemIds (for a collection using ERC2981), if the royalty fee/recipient differ among the itemIds part of the bundle, the trade reverts. This contract DOES NOT enforce any restriction for extremely high creator fee, nor verifies the creator fee fetched is inferior to the total price. If any contract relies on it to build an on-chain royalty logic, it should implement protection against: (1) high royalties (2) potential unexpected royalty changes that can occur after the creation of the order._ - -#### Parameters - -| Name | Type | Description | -| ---------- | --------- | ------------------ | -| collection | address | Collection address | -| price | uint256 | Transaction price | -| itemIds | uint256[] | Array of item ids | - -#### Returns - -| Name | Type | Description | -| ---------------- | ------- | ------------------ | -| creator | address | Creator address | -| creatorFeeAmount | uint256 | Creator fee amount | - -## Errors - -### BundleEIP2981NotAllowed - -```solidity -error BundleEIP2981NotAllowed(address collection) -``` - -It is returned if the bundle contains multiple itemIds with different creator fee structure. - -#### Parameters - -| Name | Type | Description | -| ---------- | ------- | ----------- | -| collection | address | undefined | diff --git a/docs/docs/developer/api/contracts/marketplace/CurrencyManager.md b/docs/docs/developer/api/contracts/marketplace/CurrencyManager.md deleted file mode 100644 index 9ff1c0fc..00000000 --- a/docs/docs/developer/api/contracts/marketplace/CurrencyManager.md +++ /dev/null @@ -1,250 +0,0 @@ -# CurrencyManager - -_LooksRare protocol team (👀,💎)_ - -> CurrencyManager - -This contract manages the list of valid fungible currencies. - -## Methods - -### cancelOwnershipTransfer - -```solidity -function cancelOwnershipTransfer() external nonpayable -``` - -This function is used to cancel the ownership transfer. - -_This function can be used for both cancelling a transfer to a new owner and cancelling the renouncement of the ownership._ - -### confirmOwnershipRenouncement - -```solidity -function confirmOwnershipRenouncement() external nonpayable -``` - -This function is used to confirm the ownership renouncement. - -### confirmOwnershipTransfer - -```solidity -function confirmOwnershipTransfer() external nonpayable -``` - -This function is used to confirm the ownership transfer. - -_This function can only be called by the current potential owner._ - -### initiateOwnershipRenouncement - -```solidity -function initiateOwnershipRenouncement() external nonpayable -``` - -This function is used to initiate the ownership renouncement. - -### initiateOwnershipTransfer - -```solidity -function initiateOwnershipTransfer(address newPotentialOwner) external nonpayable -``` - -This function is used to initiate the transfer of ownership to a new owner. - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | --------------------------- | -| newPotentialOwner | address | New potential owner address | - -### isCurrencyAllowed - -```solidity -function isCurrencyAllowed(address) external view returns (bool) -``` - -It checks whether the currency is allowed for transacting. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### owner - -```solidity -function owner() external view returns (address) -``` - -Address of the current owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### ownershipStatus - -```solidity -function ownershipStatus() external view returns (enum IOwnableTwoSteps.Status) -``` - -Ownership status. - -#### Returns - -| Name | Type | Description | -| ---- | ---------------------------- | ----------- | -| \_0 | enum IOwnableTwoSteps.Status | undefined | - -### potentialOwner - -```solidity -function potentialOwner() external view returns (address) -``` - -Address of the potential owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### updateCurrencyStatus - -```solidity -function updateCurrencyStatus(address currency, bool isAllowed) external nonpayable -``` - -This function allows the owner to update the status of a currency. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| --------- | ------- | -------------------------------------------------- | -| currency | address | Currency address (address(0) for ETH) | -| isAllowed | bool | Whether the currency should be allowed for trading | - -## Events - -### CancelOwnershipTransfer - -```solidity -event CancelOwnershipTransfer() -``` - -This is emitted if the ownership transfer is cancelled. - -### CurrencyStatusUpdated - -```solidity -event CurrencyStatusUpdated(address currency, bool isAllowed) -``` - -It is emitted if the currency status in the allowlist is updated. - -#### Parameters - -| Name | Type | Description | -| --------- | ------- | ----------- | -| currency | address | undefined | -| isAllowed | bool | undefined | - -### InitiateOwnershipRenouncement - -```solidity -event InitiateOwnershipRenouncement() -``` - -This is emitted if the ownership renouncement is initiated. - -### InitiateOwnershipTransfer - -```solidity -event InitiateOwnershipTransfer(address previousOwner, address potentialOwner) -``` - -This is emitted if the ownership transfer is initiated. - -#### Parameters - -| Name | Type | Description | -| -------------- | ------- | ----------- | -| previousOwner | address | undefined | -| potentialOwner | address | undefined | - -### NewOwner - -```solidity -event NewOwner(address newOwner) -``` - -This is emitted when there is a new owner. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| newOwner | address | undefined | - -## Errors - -### NoOngoingTransferInProgress - -```solidity -error NoOngoingTransferInProgress() -``` - -This is returned when there is no transfer of ownership in progress. - -### NotOwner - -```solidity -error NotOwner() -``` - -This is returned when the caller is not the owner. - -### RenouncementNotInProgress - -```solidity -error RenouncementNotInProgress() -``` - -This is returned when there is no renouncement in progress but the owner tries to validate the ownership renouncement. - -### TransferAlreadyInProgress - -```solidity -error TransferAlreadyInProgress() -``` - -This is returned when the transfer is already in progress but the owner tries initiate a new ownership transfer. - -### TransferNotInProgress - -```solidity -error TransferNotInProgress() -``` - -This is returned when there is no ownership transfer in progress but the ownership change tries to be approved. - -### WrongPotentialOwner - -```solidity -error WrongPotentialOwner() -``` - -This is returned when the ownership transfer is attempted to be validated by the a caller that is not the potential owner. diff --git a/docs/docs/developer/api/contracts/marketplace/ExecutionManager.md b/docs/docs/developer/api/contracts/marketplace/ExecutionManager.md deleted file mode 100644 index 83eefc37..00000000 --- a/docs/docs/developer/api/contracts/marketplace/ExecutionManager.md +++ /dev/null @@ -1,751 +0,0 @@ -# ExecutionManager - -_LooksRare protocol team (👀,💎); bitbeckers;_ - -> ExecutionManager - -This contract handles the execution and resolution of transactions. A transaction is executed on-chain when an off-chain maker order is matched by on-chain taker order of a different kind. For instance, a taker ask is executed against a maker bid (or a taker bid against a maker ask). - -## Methods - -### MAGIC_VALUE_ORDER_NONCE_EXECUTED - -```solidity -function MAGIC_VALUE_ORDER_NONCE_EXECUTED() external view returns (bytes32) -``` - -Magic value nonce returned if executed (or cancelled). - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### addStrategy - -```solidity -function addStrategy(uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) external nonpayable -``` - -This function allows the owner to add a new execution strategy to the protocol. - -_Strategies have an id that is incremental. Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ---------------------------------------------- | -| standardProtocolFeeBp | uint16 | Standard protocol fee (in basis point) | -| minTotalFeeBp | uint16 | Minimum total fee (in basis point) | -| maxProtocolFeeBp | uint16 | Maximum protocol fee (in basis point) | -| selector | bytes4 | Function selector for the strategy | -| isMakerBid | bool | Whether the function selector is for maker bid | -| implementation | address | Implementation address | - -### cancelOrderNonces - -```solidity -function cancelOrderNonces(uint256[] orderNonces) external nonpayable -``` - -This function allows a user to cancel an array of order nonces. - -_It does not check the status of the nonces to save gas and to prevent revertion if one of the orders is filled in the same block._ - -#### Parameters - -| Name | Type | Description | -| ----------- | --------- | --------------------- | -| orderNonces | uint256[] | Array of order nonces | - -### cancelOwnershipTransfer - -```solidity -function cancelOwnershipTransfer() external nonpayable -``` - -This function is used to cancel the ownership transfer. - -_This function can be used for both cancelling a transfer to a new owner and cancelling the renouncement of the ownership._ - -### cancelSubsetNonces - -```solidity -function cancelSubsetNonces(uint256[] subsetNonces) external nonpayable -``` - -This function allows a user to cancel an array of subset nonces. - -_It does not check the status of the nonces to save gas._ - -#### Parameters - -| Name | Type | Description | -| ------------ | --------- | ---------------------- | -| subsetNonces | uint256[] | Array of subset nonces | - -### confirmOwnershipRenouncement - -```solidity -function confirmOwnershipRenouncement() external nonpayable -``` - -This function is used to confirm the ownership renouncement. - -### confirmOwnershipTransfer - -```solidity -function confirmOwnershipTransfer() external nonpayable -``` - -This function is used to confirm the ownership transfer. - -_This function can only be called by the current potential owner._ - -### creatorFeeManager - -```solidity -function creatorFeeManager() external view returns (contract ICreatorFeeManager) -``` - -Creator fee manager. - -#### Returns - -| Name | Type | Description | -| ---- | --------------------------- | ----------- | -| \_0 | contract ICreatorFeeManager | undefined | - -### incrementBidAskNonces - -```solidity -function incrementBidAskNonces(bool bid, bool ask) external nonpayable -``` - -This function increments a user's bid/ask nonces. - -_The logic for computing the quasi-random number is inspired by Seaport v1.2. The pseudo-randomness allows non-deterministic computation of the next ask/bid nonce. A deterministic increment would make the cancel-all process non-effective in certain cases (orders signed with a greater ask/bid nonce). The same quasi-random number is used for incrementing both the bid and ask nonces if both values are incremented in the same transaction. If this function is used twice in the same block, it will return the same quasiRandomNumber but this will not impact the overall business logic._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | --------------------------------------- | -| bid | bool | Whether to increment the user bid nonce | -| ask | bool | Whether to increment the user ask nonce | - -### initiateOwnershipRenouncement - -```solidity -function initiateOwnershipRenouncement() external nonpayable -``` - -This function is used to initiate the ownership renouncement. - -### initiateOwnershipTransfer - -```solidity -function initiateOwnershipTransfer(address newPotentialOwner) external nonpayable -``` - -This function is used to initiate the transfer of ownership to a new owner. - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | --------------------------- | -| newPotentialOwner | address | New potential owner address | - -### isCurrencyAllowed - -```solidity -function isCurrencyAllowed(address) external view returns (bool) -``` - -It checks whether the currency is allowed for transacting. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### maxCreatorFeeBp - -```solidity -function maxCreatorFeeBp() external view returns (uint16) -``` - -Maximum creator fee (in basis point). - -#### Returns - -| Name | Type | Description | -| ---- | ------ | ----------- | -| \_0 | uint16 | undefined | - -### owner - -```solidity -function owner() external view returns (address) -``` - -Address of the current owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### ownershipStatus - -```solidity -function ownershipStatus() external view returns (enum IOwnableTwoSteps.Status) -``` - -Ownership status. - -#### Returns - -| Name | Type | Description | -| ---- | ---------------------------- | ----------- | -| \_0 | enum IOwnableTwoSteps.Status | undefined | - -### potentialOwner - -```solidity -function potentialOwner() external view returns (address) -``` - -Address of the potential owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### protocolFeeRecipient - -```solidity -function protocolFeeRecipient() external view returns (address) -``` - -Protocol fee recipient. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### strategyInfo - -```solidity -function strategyInfo(uint256) external view returns (bool isActive, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) -``` - -This returns the strategy information for a strategy id. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| --------------------- | ------- | ----------- | -| isActive | bool | undefined | -| standardProtocolFeeBp | uint16 | undefined | -| minTotalFeeBp | uint16 | undefined | -| maxProtocolFeeBp | uint16 | undefined | -| selector | bytes4 | undefined | -| isMakerBid | bool | undefined | -| implementation | address | undefined | - -### updateCreatorFeeManager - -```solidity -function updateCreatorFeeManager(address newCreatorFeeManager) external nonpayable -``` - -This function allows the owner to update the creator fee manager address. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| -------------------- | ------- | ---------------------------------- | -| newCreatorFeeManager | address | Address of the creator fee manager | - -### updateCurrencyStatus - -```solidity -function updateCurrencyStatus(address currency, bool isAllowed) external nonpayable -``` - -This function allows the owner to update the status of a currency. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| --------- | ------- | -------------------------------------------------- | -| currency | address | Currency address (address(0) for ETH) | -| isAllowed | bool | Whether the currency should be allowed for trading | - -### updateMaxCreatorFeeBp - -```solidity -function updateMaxCreatorFeeBp(uint16 newMaxCreatorFeeBp) external nonpayable -``` - -This function allows the owner to update the maximum creator fee (in basis point). - -_The maximum value that can be set is 25%. Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| ------------------ | ------ | ---------------------------------------- | -| newMaxCreatorFeeBp | uint16 | New maximum creator fee (in basis point) | - -### updateProtocolFeeRecipient - -```solidity -function updateProtocolFeeRecipient(address newProtocolFeeRecipient) external nonpayable -``` - -This function allows the owner to update the protocol fee recipient. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| ----------------------- | ------- | ---------------------------------- | -| newProtocolFeeRecipient | address | New protocol fee recipient address | - -### updateStrategy - -```solidity -function updateStrategy(uint256 strategyId, bool isActive, uint16 newStandardProtocolFee, uint16 newMinTotalFee) external nonpayable -``` - -This function allows the owner to update parameters for an existing execution strategy. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| ---------------------- | ------- | ------------------------------------------ | -| strategyId | uint256 | Strategy id | -| isActive | bool | Whether the strategy must be active | -| newStandardProtocolFee | uint16 | New standard protocol fee (in basis point) | -| newMinTotalFee | uint16 | New minimum total fee (in basis point) | - -### userBidAskNonces - -```solidity -function userBidAskNonces(address) external view returns (uint256 bidNonce, uint256 askNonce) -``` - -This tracks the bid and ask nonces for a user address. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -#### Returns - -| Name | Type | Description | -| -------- | ------- | ----------- | -| bidNonce | uint256 | undefined | -| askNonce | uint256 | undefined | - -### userOrderNonce - -```solidity -function userOrderNonce(address, uint256) external view returns (bytes32) -``` - -This checks whether the order nonce for a user was executed or cancelled. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | -| \_1 | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### userSubsetNonce - -```solidity -function userSubsetNonce(address, uint256) external view returns (bool) -``` - -This checks whether the subset nonce for a user was cancelled. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | -| \_1 | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -## Events - -### CancelOwnershipTransfer - -```solidity -event CancelOwnershipTransfer() -``` - -This is emitted if the ownership transfer is cancelled. - -### CurrencyStatusUpdated - -```solidity -event CurrencyStatusUpdated(address currency, bool isAllowed) -``` - -It is emitted if the currency status in the allowlist is updated. - -#### Parameters - -| Name | Type | Description | -| --------- | ------- | ----------- | -| currency | address | undefined | -| isAllowed | bool | undefined | - -### InitiateOwnershipRenouncement - -```solidity -event InitiateOwnershipRenouncement() -``` - -This is emitted if the ownership renouncement is initiated. - -### InitiateOwnershipTransfer - -```solidity -event InitiateOwnershipTransfer(address previousOwner, address potentialOwner) -``` - -This is emitted if the ownership transfer is initiated. - -#### Parameters - -| Name | Type | Description | -| -------------- | ------- | ----------- | -| previousOwner | address | undefined | -| potentialOwner | address | undefined | - -### NewBidAskNonces - -```solidity -event NewBidAskNonces(address user, uint256 bidNonce, uint256 askNonce) -``` - -It is emitted when there is an update of the global bid/ask nonces for a user. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| user | address | undefined | -| bidNonce | uint256 | undefined | -| askNonce | uint256 | undefined | - -### NewCreatorFeeManager - -```solidity -event NewCreatorFeeManager(address creatorFeeManager) -``` - -It is issued when there is a new creator fee manager. - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | ----------- | -| creatorFeeManager | address | undefined | - -### NewMaxCreatorFeeBp - -```solidity -event NewMaxCreatorFeeBp(uint256 maxCreatorFeeBp) -``` - -It is issued when there is a new maximum creator fee (in basis point). - -#### Parameters - -| Name | Type | Description | -| --------------- | ------- | ----------- | -| maxCreatorFeeBp | uint256 | undefined | - -### NewOwner - -```solidity -event NewOwner(address newOwner) -``` - -This is emitted when there is a new owner. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| newOwner | address | undefined | - -### NewProtocolFeeRecipient - -```solidity -event NewProtocolFeeRecipient(address protocolFeeRecipient) -``` - -It is issued when there is a new protocol fee recipient address. - -#### Parameters - -| Name | Type | Description | -| -------------------- | ------- | ----------- | -| protocolFeeRecipient | address | undefined | - -### NewStrategy - -```solidity -event NewStrategy(uint256 strategyId, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) -``` - -It is emitted when a new strategy is added. - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ----------- | -| strategyId | uint256 | undefined | -| standardProtocolFeeBp | uint16 | undefined | -| minTotalFeeBp | uint16 | undefined | -| maxProtocolFeeBp | uint16 | undefined | -| selector | bytes4 | undefined | -| isMakerBid | bool | undefined | -| implementation | address | undefined | - -### OrderNoncesCancelled - -```solidity -event OrderNoncesCancelled(address user, uint256[] orderNonces) -``` - -It is emitted when order nonces are cancelled for a user. - -#### Parameters - -| Name | Type | Description | -| ----------- | --------- | ----------- | -| user | address | undefined | -| orderNonces | uint256[] | undefined | - -### StrategyUpdated - -```solidity -event StrategyUpdated(uint256 strategyId, bool isActive, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp) -``` - -It is emitted when an existing strategy is updated. - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ----------- | -| strategyId | uint256 | undefined | -| isActive | bool | undefined | -| standardProtocolFeeBp | uint16 | undefined | -| minTotalFeeBp | uint16 | undefined | - -### SubsetNoncesCancelled - -```solidity -event SubsetNoncesCancelled(address user, uint256[] subsetNonces) -``` - -It is emitted when subset nonces are cancelled for a user. - -#### Parameters - -| Name | Type | Description | -| ------------ | --------- | ----------- | -| user | address | undefined | -| subsetNonces | uint256[] | undefined | - -## Errors - -### CreatorFeeBpTooHigh - -```solidity -error CreatorFeeBpTooHigh() -``` - -It is returned if the creator fee (in basis point) is too high. - -### LengthsInvalid - -```solidity -error LengthsInvalid() -``` - -It is returned if there is either a mismatch or an error in the length of the array(s). - -### NewProtocolFeeRecipientCannotBeNullAddress - -```solidity -error NewProtocolFeeRecipientCannotBeNullAddress() -``` - -It is returned if the new protocol fee recipient is set to address(0). - -### NoOngoingTransferInProgress - -```solidity -error NoOngoingTransferInProgress() -``` - -This is returned when there is no transfer of ownership in progress. - -### NoSelectorForStrategy - -```solidity -error NoSelectorForStrategy() -``` - -It is returned if there is no selector for maker ask/bid for a given strategyId, depending on the quote type. - -### NotOwner - -```solidity -error NotOwner() -``` - -This is returned when the caller is not the owner. - -### NotV2Strategy - -```solidity -error NotV2Strategy() -``` - -If the strategy has not set properly its implementation contract. - -_It can only be returned for owner operations._ - -### OutsideOfTimeRange - -```solidity -error OutsideOfTimeRange() -``` - -It is returned if the current block timestamp is not between start and end times in the maker order. - -### RenouncementNotInProgress - -```solidity -error RenouncementNotInProgress() -``` - -This is returned when there is no renouncement in progress but the owner tries to validate the ownership renouncement. - -### StrategyHasNoSelector - -```solidity -error StrategyHasNoSelector() -``` - -It is returned if the strategy has no selector. - -_It can only be returned for owner operations._ - -### StrategyNotAvailable - -```solidity -error StrategyNotAvailable(uint256 strategyId) -``` - -It is returned if the strategy id has no implementation. - -_It is returned if there is no implementation address and the strategyId is strictly greater than 0._ - -#### Parameters - -| Name | Type | Description | -| ---------- | ------- | ----------- | -| strategyId | uint256 | undefined | - -### StrategyNotUsed - -```solidity -error StrategyNotUsed() -``` - -It is returned if the strategyId is invalid. - -### StrategyProtocolFeeTooHigh - -```solidity -error StrategyProtocolFeeTooHigh() -``` - -It is returned if the strategy's protocol fee is too high. - -_It can only be returned for owner operations._ - -### TransferAlreadyInProgress - -```solidity -error TransferAlreadyInProgress() -``` - -This is returned when the transfer is already in progress but the owner tries initiate a new ownership transfer. - -### TransferNotInProgress - -```solidity -error TransferNotInProgress() -``` - -This is returned when there is no ownership transfer in progress but the ownership change tries to be approved. - -### WrongPotentialOwner - -```solidity -error WrongPotentialOwner() -``` - -This is returned when the ownership transfer is attempted to be validated by the a caller that is not the potential owner. diff --git a/docs/docs/developer/api/contracts/marketplace/InheritedStrategy.md b/docs/docs/developer/api/contracts/marketplace/InheritedStrategy.md deleted file mode 100644 index 022cce57..00000000 --- a/docs/docs/developer/api/contracts/marketplace/InheritedStrategy.md +++ /dev/null @@ -1,9 +0,0 @@ -# InheritedStrategy - -_LooksRare protocol team (👀,💎)_ - -> InheritedStrategy - -This contract handles the verification of parameters for standard transactions. It does not verify the taker struct's itemIds and amounts array as well as minPrice (taker ask) / maxPrice (taker bid) because before the taker executes the transaction and the maker itemIds/amounts/price should have already been confirmed off-chain. - -_A standard transaction (bid or ask) is mapped to strategyId = 0._ diff --git a/docs/docs/developer/api/contracts/marketplace/LooksRareProtocol.md b/docs/docs/developer/api/contracts/marketplace/LooksRareProtocol.md deleted file mode 100644 index 66bb61e8..00000000 --- a/docs/docs/developer/api/contracts/marketplace/LooksRareProtocol.md +++ /dev/null @@ -1,1186 +0,0 @@ -# LooksRareProtocol - -_LooksRare protocol team (👀,💎); bitbeckers_ - -> LooksRareProtocol - -This contract is the core smart contract of the LooksRare protocol ("v2"). It is the main entry point for users to initiate transactions with taker orders and manage the cancellation of maker orders, which exist off-chain. ~~~~~~ ~~~~ ~~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~~~~~~~ ~~~ ~~~ ~~~~~~~~~ ~~~ ~~~~~~~~~ ~~~~ ~~~~ ~~~~~~~~~ ~~~ ~~~ ~~~~~~~ ~~~~~~~ ~~~ ~~~- ~~~~~~~~ ~~~~ ~~~ ~~~~ ~~~~ ~~~ ~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~ ~~~ ~~~~~~~~~~~ ~~~~~~~~~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~~~~~~~~ ~~~ ~~~ ~~~~~ ~~~ ~~~~~~ ~~~~~~ ~~~ ~~~~~ ~~~~~~~ ~~~ ~~~ ~~~ ~~~ ~~~~~~~ ~~~~~~ ~~~~ ~~~ ~~~ ~~~~ ~~~~~~ ~~~~ ~~~ ~~~ ~~~ ~~~ ~~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~~ ~~~ ~~~ ~~~ ~~~ ~~~~ ~~~~~~ ~~~~ ~~~ ~~~ ~~~~~ ~~~~~~ ~~~~~~~ ~~~ ~~~ ~~~ ~~~ ~~~~~~~ ~~~~~ ~~~ ~~~~~~ ~~~~~~ ~~~ ~~~~~ ~~~ ~~~ ~~~~~~~~~~ ~~~ ~~~ ~~ ~~~ ~~~ ~~~ ~~~ ~~~~~~~~~~~ ~~~~~~~~~~~ ~~~ ~~~ ~~~~~~~~~~~~ ~~~~~~~~~~~~ ~~~ ~~~ ~~~~ ~~~~ ~~~ ~~~~ ~~~~~~~~ ~~~~ ~~~ ~~~~~~~ ~~~~~~~ ~~~ ~~~ ~~~~~~~~ ~~~~ ~~~~ ~~~~~~~~ ~~~ ~~~~~~~~~ ~~~ ~~~ ~~~~~~~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~ ~~~~ ~~~~ ~~~~~~ - -## Methods - -### MAGIC_VALUE_ORDER_NONCE_EXECUTED - -```solidity -function MAGIC_VALUE_ORDER_NONCE_EXECUTED() external view returns (bytes32) -``` - -Magic value nonce returned if executed (or cancelled). - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### WETH - -```solidity -function WETH() external view returns (address) -``` - -Wrapped ETH. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### \_getUnitsHeldByHypercertFractions - -```solidity -function _getUnitsHeldByHypercertFractions(address collection, uint256[] itemIds) external view returns (uint256 unitsHeldByItems) -``` - -#### Parameters - -| Name | Type | Description | -| ---------- | --------- | ----------- | -| collection | address | undefined | -| itemIds | uint256[] | undefined | - -#### Returns - -| Name | Type | Description | -| ---------------- | ------- | ----------- | -| unitsHeldByItems | uint256 | undefined | - -### addStrategy - -```solidity -function addStrategy(uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) external nonpayable -``` - -This function allows the owner to add a new execution strategy to the protocol. - -_Strategies have an id that is incremental. Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ---------------------------------------------- | -| standardProtocolFeeBp | uint16 | Standard protocol fee (in basis point) | -| minTotalFeeBp | uint16 | Minimum total fee (in basis point) | -| maxProtocolFeeBp | uint16 | Maximum protocol fee (in basis point) | -| selector | bytes4 | Function selector for the strategy | -| isMakerBid | bool | Whether the function selector is for maker bid | -| implementation | address | Implementation address | - -### cancelOrderNonces - -```solidity -function cancelOrderNonces(uint256[] orderNonces) external nonpayable -``` - -This function allows a user to cancel an array of order nonces. - -_It does not check the status of the nonces to save gas and to prevent revertion if one of the orders is filled in the same block._ - -#### Parameters - -| Name | Type | Description | -| ----------- | --------- | --------------------- | -| orderNonces | uint256[] | Array of order nonces | - -### cancelOwnershipTransfer - -```solidity -function cancelOwnershipTransfer() external nonpayable -``` - -This function is used to cancel the ownership transfer. - -_This function can be used for both cancelling a transfer to a new owner and cancelling the renouncement of the ownership._ - -### cancelSubsetNonces - -```solidity -function cancelSubsetNonces(uint256[] subsetNonces) external nonpayable -``` - -This function allows a user to cancel an array of subset nonces. - -_It does not check the status of the nonces to save gas._ - -#### Parameters - -| Name | Type | Description | -| ------------ | --------- | ---------------------- | -| subsetNonces | uint256[] | Array of subset nonces | - -### chainId - -```solidity -function chainId() external view returns (uint256) -``` - -Current chainId. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -### confirmOwnershipRenouncement - -```solidity -function confirmOwnershipRenouncement() external nonpayable -``` - -This function is used to confirm the ownership renouncement. - -### confirmOwnershipTransfer - -```solidity -function confirmOwnershipTransfer() external nonpayable -``` - -This function is used to confirm the ownership transfer. - -_This function can only be called by the current potential owner._ - -### creatorFeeManager - -```solidity -function creatorFeeManager() external view returns (contract ICreatorFeeManager) -``` - -Creator fee manager. - -#### Returns - -| Name | Type | Description | -| ---- | --------------------------- | ----------- | -| \_0 | contract ICreatorFeeManager | undefined | - -### domainSeparator - -```solidity -function domainSeparator() external view returns (bytes32) -``` - -Current domain separator. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### executeMultipleTakerBids - -```solidity -function executeMultipleTakerBids(OrderStructs.Taker[] takerBids, OrderStructs.Maker[] makerAsks, bytes[] makerSignatures, OrderStructs.MerkleTree[] merkleTrees, bool isAtomic) external payable -``` - -#### Parameters - -| Name | Type | Description | -| --------------- | ------------------------- | ----------- | -| takerBids | OrderStructs.Taker[] | undefined | -| makerAsks | OrderStructs.Maker[] | undefined | -| makerSignatures | bytes[] | undefined | -| merkleTrees | OrderStructs.MerkleTree[] | undefined | -| isAtomic | bool | undefined | - -### executeTakerAsk - -```solidity -function executeTakerAsk(OrderStructs.Taker takerAsk, OrderStructs.Maker makerBid, bytes makerSignature, OrderStructs.MerkleTree merkleTree) external nonpayable -``` - -#### Parameters - -| Name | Type | Description | -| -------------- | ----------------------- | ----------- | -| takerAsk | OrderStructs.Taker | undefined | -| makerBid | OrderStructs.Maker | undefined | -| makerSignature | bytes | undefined | -| merkleTree | OrderStructs.MerkleTree | undefined | - -### executeTakerBid - -```solidity -function executeTakerBid(OrderStructs.Taker takerBid, OrderStructs.Maker makerAsk, bytes makerSignature, OrderStructs.MerkleTree merkleTree) external payable -``` - -#### Parameters - -| Name | Type | Description | -| -------------- | ----------------------- | ----------- | -| takerBid | OrderStructs.Taker | undefined | -| makerAsk | OrderStructs.Maker | undefined | -| makerSignature | bytes | undefined | -| merkleTree | OrderStructs.MerkleTree | undefined | - -### hashBatchOrder - -```solidity -function hashBatchOrder(bytes32 root, uint256 proofLength) external pure returns (bytes32 batchOrderHash) -``` - -This function returns the hash of the concatenation of batch order type hash and merkle root. - -#### Parameters - -| Name | Type | Description | -| ----------- | ------- | ------------------- | -| root | bytes32 | Merkle root | -| proofLength | uint256 | Merkle proof length | - -#### Returns - -| Name | Type | Description | -| -------------- | ------- | -------------------- | -| batchOrderHash | bytes32 | The batch order hash | - -### incrementBidAskNonces - -```solidity -function incrementBidAskNonces(bool bid, bool ask) external nonpayable -``` - -This function increments a user's bid/ask nonces. - -_The logic for computing the quasi-random number is inspired by Seaport v1.2. The pseudo-randomness allows non-deterministic computation of the next ask/bid nonce. A deterministic increment would make the cancel-all process non-effective in certain cases (orders signed with a greater ask/bid nonce). The same quasi-random number is used for incrementing both the bid and ask nonces if both values are incremented in the same transaction. If this function is used twice in the same block, it will return the same quasiRandomNumber but this will not impact the overall business logic._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | --------------------------------------- | -| bid | bool | Whether to increment the user bid nonce | -| ask | bool | Whether to increment the user ask nonce | - -### initiateOwnershipRenouncement - -```solidity -function initiateOwnershipRenouncement() external nonpayable -``` - -This function is used to initiate the ownership renouncement. - -### initiateOwnershipTransfer - -```solidity -function initiateOwnershipTransfer(address newPotentialOwner) external nonpayable -``` - -This function is used to initiate the transfer of ownership to a new owner. - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | --------------------------- | -| newPotentialOwner | address | New potential owner address | - -### isCurrencyAllowed - -```solidity -function isCurrencyAllowed(address) external view returns (bool) -``` - -It checks whether the currency is allowed for transacting. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### maxCreatorFeeBp - -```solidity -function maxCreatorFeeBp() external view returns (uint16) -``` - -Maximum creator fee (in basis point). - -#### Returns - -| Name | Type | Description | -| ---- | ------ | ----------- | -| \_0 | uint16 | undefined | - -### owner - -```solidity -function owner() external view returns (address) -``` - -Address of the current owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### ownershipStatus - -```solidity -function ownershipStatus() external view returns (enum IOwnableTwoSteps.Status) -``` - -Ownership status. - -#### Returns - -| Name | Type | Description | -| ---- | ---------------------------- | ----------- | -| \_0 | enum IOwnableTwoSteps.Status | undefined | - -### potentialOwner - -```solidity -function potentialOwner() external view returns (address) -``` - -Address of the potential owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### protocolFeeRecipient - -```solidity -function protocolFeeRecipient() external view returns (address) -``` - -Protocol fee recipient. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### restrictedExecuteTakerBid - -```solidity -function restrictedExecuteTakerBid(OrderStructs.Taker takerBid, OrderStructs.Maker makerAsk, address sender, bytes32 orderHash) external nonpayable returns (uint256 protocolFeeAmount) -``` - -#### Parameters - -| Name | Type | Description | -| --------- | ------------------ | ----------- | -| takerBid | OrderStructs.Taker | undefined | -| makerAsk | OrderStructs.Maker | undefined | -| sender | address | undefined | -| orderHash | bytes32 | undefined | - -#### Returns - -| Name | Type | Description | -| ----------------- | ------- | ----------- | -| protocolFeeAmount | uint256 | undefined | - -### strategyInfo - -```solidity -function strategyInfo(uint256) external view returns (bool isActive, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) -``` - -This returns the strategy information for a strategy id. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| --------------------- | ------- | ----------- | -| isActive | bool | undefined | -| standardProtocolFeeBp | uint16 | undefined | -| minTotalFeeBp | uint16 | undefined | -| maxProtocolFeeBp | uint16 | undefined | -| selector | bytes4 | undefined | -| isMakerBid | bool | undefined | -| implementation | address | undefined | - -### transferManager - -```solidity -function transferManager() external view returns (contract TransferManager) -``` - -Transfer manager for ERC721, ERC1155 and Hypercerts. - -#### Returns - -| Name | Type | Description | -| ---- | ------------------------ | ----------- | -| \_0 | contract TransferManager | undefined | - -### updateCreatorFeeManager - -```solidity -function updateCreatorFeeManager(address newCreatorFeeManager) external nonpayable -``` - -This function allows the owner to update the creator fee manager address. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| -------------------- | ------- | ---------------------------------- | -| newCreatorFeeManager | address | Address of the creator fee manager | - -### updateCurrencyStatus - -```solidity -function updateCurrencyStatus(address currency, bool isAllowed) external nonpayable -``` - -This function allows the owner to update the status of a currency. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| --------- | ------- | -------------------------------------------------- | -| currency | address | Currency address (address(0) for ETH) | -| isAllowed | bool | Whether the currency should be allowed for trading | - -### updateDomainSeparator - -```solidity -function updateDomainSeparator() external nonpayable -``` - -This function allows the owner to update the domain separator (if possible). - -_Only callable by owner. If there is a fork of the network with a new chainId, it allows the owner to reset the domain separator for the new chain id._ - -### updateETHGasLimitForTransfer - -```solidity -function updateETHGasLimitForTransfer(uint256 newGasLimitETHTransfer) external nonpayable -``` - -This function allows the owner to update the maximum ETH gas limit for a standard transfer. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| ---------------------- | ------- | ------------------------------ | -| newGasLimitETHTransfer | uint256 | New gas limit for ETH transfer | - -### updateMaxCreatorFeeBp - -```solidity -function updateMaxCreatorFeeBp(uint16 newMaxCreatorFeeBp) external nonpayable -``` - -This function allows the owner to update the maximum creator fee (in basis point). - -_The maximum value that can be set is 25%. Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| ------------------ | ------ | ---------------------------------------- | -| newMaxCreatorFeeBp | uint16 | New maximum creator fee (in basis point) | - -### updateProtocolFeeRecipient - -```solidity -function updateProtocolFeeRecipient(address newProtocolFeeRecipient) external nonpayable -``` - -This function allows the owner to update the protocol fee recipient. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| ----------------------- | ------- | ---------------------------------- | -| newProtocolFeeRecipient | address | New protocol fee recipient address | - -### updateStrategy - -```solidity -function updateStrategy(uint256 strategyId, bool isActive, uint16 newStandardProtocolFee, uint16 newMinTotalFee) external nonpayable -``` - -This function allows the owner to update parameters for an existing execution strategy. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| ---------------------- | ------- | ------------------------------------------ | -| strategyId | uint256 | Strategy id | -| isActive | bool | Whether the strategy must be active | -| newStandardProtocolFee | uint16 | New standard protocol fee (in basis point) | -| newMinTotalFee | uint16 | New minimum total fee (in basis point) | - -### userBidAskNonces - -```solidity -function userBidAskNonces(address) external view returns (uint256 bidNonce, uint256 askNonce) -``` - -This tracks the bid and ask nonces for a user address. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -#### Returns - -| Name | Type | Description | -| -------- | ------- | ----------- | -| bidNonce | uint256 | undefined | -| askNonce | uint256 | undefined | - -### userOrderNonce - -```solidity -function userOrderNonce(address, uint256) external view returns (bytes32) -``` - -This checks whether the order nonce for a user was executed or cancelled. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | -| \_1 | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### userSubsetNonce - -```solidity -function userSubsetNonce(address, uint256) external view returns (bool) -``` - -This checks whether the subset nonce for a user was cancelled. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | -| \_1 | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -## Events - -### CancelOwnershipTransfer - -```solidity -event CancelOwnershipTransfer() -``` - -This is emitted if the ownership transfer is cancelled. - -### CurrencyStatusUpdated - -```solidity -event CurrencyStatusUpdated(address currency, bool isAllowed) -``` - -It is emitted if the currency status in the allowlist is updated. - -#### Parameters - -| Name | Type | Description | -| --------- | ------- | ----------- | -| currency | address | undefined | -| isAllowed | bool | undefined | - -### InitiateOwnershipRenouncement - -```solidity -event InitiateOwnershipRenouncement() -``` - -This is emitted if the ownership renouncement is initiated. - -### InitiateOwnershipTransfer - -```solidity -event InitiateOwnershipTransfer(address previousOwner, address potentialOwner) -``` - -This is emitted if the ownership transfer is initiated. - -#### Parameters - -| Name | Type | Description | -| -------------- | ------- | ----------- | -| previousOwner | address | undefined | -| potentialOwner | address | undefined | - -### NewBidAskNonces - -```solidity -event NewBidAskNonces(address user, uint256 bidNonce, uint256 askNonce) -``` - -It is emitted when there is an update of the global bid/ask nonces for a user. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| user | address | undefined | -| bidNonce | uint256 | undefined | -| askNonce | uint256 | undefined | - -### NewCreatorFeeManager - -```solidity -event NewCreatorFeeManager(address creatorFeeManager) -``` - -It is issued when there is a new creator fee manager. - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | ----------- | -| creatorFeeManager | address | undefined | - -### NewDomainSeparator - -```solidity -event NewDomainSeparator() -``` - -It is emitted if there is a change in the domain separator. - -### NewGasLimitETHTransfer - -```solidity -event NewGasLimitETHTransfer(uint256 gasLimitETHTransfer) -``` - -It is emitted when there is a new gas limit for a ETH transfer (before it is wrapped to WETH). - -#### Parameters - -| Name | Type | Description | -| ------------------- | ------- | ----------- | -| gasLimitETHTransfer | uint256 | undefined | - -### NewMaxCreatorFeeBp - -```solidity -event NewMaxCreatorFeeBp(uint256 maxCreatorFeeBp) -``` - -It is issued when there is a new maximum creator fee (in basis point). - -#### Parameters - -| Name | Type | Description | -| --------------- | ------- | ----------- | -| maxCreatorFeeBp | uint256 | undefined | - -### NewOwner - -```solidity -event NewOwner(address newOwner) -``` - -This is emitted when there is a new owner. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| newOwner | address | undefined | - -### NewProtocolFeeRecipient - -```solidity -event NewProtocolFeeRecipient(address protocolFeeRecipient) -``` - -It is issued when there is a new protocol fee recipient address. - -#### Parameters - -| Name | Type | Description | -| -------------------- | ------- | ----------- | -| protocolFeeRecipient | address | undefined | - -### NewStrategy - -```solidity -event NewStrategy(uint256 strategyId, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) -``` - -It is emitted when a new strategy is added. - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ----------- | -| strategyId | uint256 | undefined | -| standardProtocolFeeBp | uint16 | undefined | -| minTotalFeeBp | uint16 | undefined | -| maxProtocolFeeBp | uint16 | undefined | -| selector | bytes4 | undefined | -| isMakerBid | bool | undefined | -| implementation | address | undefined | - -### OrderNoncesCancelled - -```solidity -event OrderNoncesCancelled(address user, uint256[] orderNonces) -``` - -It is emitted when order nonces are cancelled for a user. - -#### Parameters - -| Name | Type | Description | -| ----------- | --------- | ----------- | -| user | address | undefined | -| orderNonces | uint256[] | undefined | - -### StrategyUpdated - -```solidity -event StrategyUpdated(uint256 strategyId, bool isActive, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp) -``` - -It is emitted when an existing strategy is updated. - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ----------- | -| strategyId | uint256 | undefined | -| isActive | bool | undefined | -| standardProtocolFeeBp | uint16 | undefined | -| minTotalFeeBp | uint16 | undefined | - -### SubsetNoncesCancelled - -```solidity -event SubsetNoncesCancelled(address user, uint256[] subsetNonces) -``` - -It is emitted when subset nonces are cancelled for a user. - -#### Parameters - -| Name | Type | Description | -| ------------ | --------- | ----------- | -| user | address | undefined | -| subsetNonces | uint256[] | undefined | - -### TakerAsk - -```solidity -event TakerAsk(ILooksRareProtocol.NonceInvalidationParameters nonceInvalidationParameters, address askUser, address bidUser, uint256 strategyId, address currency, address collection, uint256[] itemIds, uint256[] amounts, address[2] feeRecipients, uint256[3] feeAmounts) -``` - -It is emitted when a taker ask transaction is completed. - -#### Parameters - -| Name | Type | Description | -| --------------------------- | ---------------------------------------------- | ----------- | -| nonceInvalidationParameters | ILooksRareProtocol.NonceInvalidationParameters | undefined | -| askUser | address | undefined | -| bidUser | address | undefined | -| strategyId | uint256 | undefined | -| currency | address | undefined | -| collection | address | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| feeRecipients | address[2] | undefined | -| feeAmounts | uint256[3] | undefined | - -### TakerBid - -```solidity -event TakerBid(ILooksRareProtocol.NonceInvalidationParameters nonceInvalidationParameters, address bidUser, address bidRecipient, uint256 strategyId, address currency, address collection, uint256[] itemIds, uint256[] amounts, address[2] feeRecipients, uint256[3] feeAmounts) -``` - -It is emitted when a taker bid transaction is completed. - -#### Parameters - -| Name | Type | Description | -| --------------------------- | ---------------------------------------------- | ----------- | -| nonceInvalidationParameters | ILooksRareProtocol.NonceInvalidationParameters | undefined | -| bidUser | address | undefined | -| bidRecipient | address | undefined | -| strategyId | uint256 | undefined | -| currency | address | undefined | -| collection | address | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| feeRecipients | address[2] | undefined | -| feeAmounts | uint256[3] | undefined | - -## Errors - -### CallerInvalid - -```solidity -error CallerInvalid() -``` - -It is returned if the function cannot be called by the sender. - -### ChainIdInvalid - -```solidity -error ChainIdInvalid() -``` - -It is returned if the domain separator should change. - -### CollectionTypeInvalid - -```solidity -error CollectionTypeInvalid() -``` - -It is returned is the collection type is not supported. For instance if the strategy is specific to hypercerts. - -### CreatorFeeBpTooHigh - -```solidity -error CreatorFeeBpTooHigh() -``` - -It is returned if the creator fee (in basis point) is too high. - -### CurrencyInvalid - -```solidity -error CurrencyInvalid() -``` - -It is returned if the currency is invalid. - -### ERC20TransferFromFail - -```solidity -error ERC20TransferFromFail() -``` - -It is emitted if the ERC20 transferFrom fails. - -### LengthsInvalid - -```solidity -error LengthsInvalid() -``` - -It is returned if there is either a mismatch or an error in the length of the array(s). - -### MerkleProofInvalid - -```solidity -error MerkleProofInvalid() -``` - -It is returned if the merkle proof provided is invalid. - -### MerkleProofTooLarge - -```solidity -error MerkleProofTooLarge(uint256 length) -``` - -It is returned if the length of the merkle proof provided is greater than tolerated. - -#### Parameters - -| Name | Type | Description | -| ------ | ------- | ------------ | -| length | uint256 | Proof length | - -### NewGasLimitETHTransferTooLow - -```solidity -error NewGasLimitETHTransferTooLow() -``` - -It is returned if the gas limit for a standard ETH transfer is too low. - -### NewProtocolFeeRecipientCannotBeNullAddress - -```solidity -error NewProtocolFeeRecipientCannotBeNullAddress() -``` - -It is returned if the new protocol fee recipient is set to address(0). - -### NoOngoingTransferInProgress - -```solidity -error NoOngoingTransferInProgress() -``` - -This is returned when there is no transfer of ownership in progress. - -### NoSelectorForStrategy - -```solidity -error NoSelectorForStrategy() -``` - -It is returned if there is no selector for maker ask/bid for a given strategyId, depending on the quote type. - -### NoncesInvalid - -```solidity -error NoncesInvalid() -``` - -It is returned if the nonces are invalid. - -### NotAContract - -```solidity -error NotAContract() -``` - -It is emitted if the call recipient is not a contract. - -### NotOwner - -```solidity -error NotOwner() -``` - -This is returned when the caller is not the owner. - -### NotV2Strategy - -```solidity -error NotV2Strategy() -``` - -If the strategy has not set properly its implementation contract. - -_It can only be returned for owner operations._ - -### NullSignerAddress - -```solidity -error NullSignerAddress() -``` - -It is emitted if the signer is null. - -### OutsideOfTimeRange - -```solidity -error OutsideOfTimeRange() -``` - -It is returned if the current block timestamp is not between start and end times in the maker order. - -### QuoteTypeInvalid - -```solidity -error QuoteTypeInvalid() -``` - -It is returned if the maker quote type is invalid. - -### ReentrancyFail - -```solidity -error ReentrancyFail() -``` - -This is returned when there is a reentrant call. - -### RenouncementNotInProgress - -```solidity -error RenouncementNotInProgress() -``` - -This is returned when there is no renouncement in progress but the owner tries to validate the ownership renouncement. - -### SameDomainSeparator - -```solidity -error SameDomainSeparator() -``` - -It is returned if the domain separator cannot be updated (i.e. the chainId is the same). - -### SignatureEOAInvalid - -```solidity -error SignatureEOAInvalid() -``` - -It is emitted if the signature is invalid for an EOA (the address recovered is not the expected one). - -### SignatureERC1271Invalid - -```solidity -error SignatureERC1271Invalid() -``` - -It is emitted if the signature is invalid for a ERC1271 contract signer. - -### SignatureLengthInvalid - -```solidity -error SignatureLengthInvalid(uint256 length) -``` - -It is emitted if the signature's length is neither 64 nor 65 bytes. - -#### Parameters - -| Name | Type | Description | -| ------ | ------- | ----------- | -| length | uint256 | undefined | - -### SignatureParameterSInvalid - -```solidity -error SignatureParameterSInvalid() -``` - -It is emitted if the signature is invalid due to S parameter. - -### SignatureParameterVInvalid - -```solidity -error SignatureParameterVInvalid(uint8 v) -``` - -It is emitted if the signature is invalid due to V parameter. - -#### Parameters - -| Name | Type | Description | -| ---- | ----- | ----------- | -| v | uint8 | undefined | - -### StrategyHasNoSelector - -```solidity -error StrategyHasNoSelector() -``` - -It is returned if the strategy has no selector. - -_It can only be returned for owner operations._ - -### StrategyNotAvailable - -```solidity -error StrategyNotAvailable(uint256 strategyId) -``` - -It is returned if the strategy id has no implementation. - -_It is returned if there is no implementation address and the strategyId is strictly greater than 0._ - -#### Parameters - -| Name | Type | Description | -| ---------- | ------- | ----------- | -| strategyId | uint256 | undefined | - -### StrategyNotUsed - -```solidity -error StrategyNotUsed() -``` - -It is returned if the strategyId is invalid. - -### StrategyProtocolFeeTooHigh - -```solidity -error StrategyProtocolFeeTooHigh() -``` - -It is returned if the strategy's protocol fee is too high. - -_It can only be returned for owner operations._ - -### TransferAlreadyInProgress - -```solidity -error TransferAlreadyInProgress() -``` - -This is returned when the transfer is already in progress but the owner tries initiate a new ownership transfer. - -### TransferNotInProgress - -```solidity -error TransferNotInProgress() -``` - -This is returned when there is no ownership transfer in progress but the ownership change tries to be approved. - -### UnitAmountInvalid - -```solidity -error UnitAmountInvalid() -``` - -It is returned if the available amount of fraction units is not available for the selected type of transaction. For instance, a split transaction cannot be executed if the amount of fraction units is not higher than the amount of fraction units available. - -### WrongPotentialOwner - -```solidity -error WrongPotentialOwner() -``` - -This is returned when the ownership transfer is attempted to be validated by the a caller that is not the potential owner. diff --git a/docs/docs/developer/api/contracts/marketplace/NonceManager.md b/docs/docs/developer/api/contracts/marketplace/NonceManager.md deleted file mode 100644 index fea95495..00000000 --- a/docs/docs/developer/api/contracts/marketplace/NonceManager.md +++ /dev/null @@ -1,193 +0,0 @@ -# NonceManager - -_LooksRare protocol team (👀,💎)_ - -> NonceManager - -This contract handles the nonce logic that is used for invalidating maker orders that exist off-chain. The nonce logic revolves around three parts at the user level: - order nonce (orders sharing an order nonce are conditional, OCO-like) - subset (orders can be grouped under a same subset) - bid/ask (all orders can be executed only if the bid/ask nonce matches the user's one on-chain) Only the order nonce is invalidated at the time of the execution of a maker order that contains it. - -## Methods - -### MAGIC_VALUE_ORDER_NONCE_EXECUTED - -```solidity -function MAGIC_VALUE_ORDER_NONCE_EXECUTED() external view returns (bytes32) -``` - -Magic value nonce returned if executed (or cancelled). - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### cancelOrderNonces - -```solidity -function cancelOrderNonces(uint256[] orderNonces) external nonpayable -``` - -This function allows a user to cancel an array of order nonces. - -_It does not check the status of the nonces to save gas and to prevent revertion if one of the orders is filled in the same block._ - -#### Parameters - -| Name | Type | Description | -| ----------- | --------- | --------------------- | -| orderNonces | uint256[] | Array of order nonces | - -### cancelSubsetNonces - -```solidity -function cancelSubsetNonces(uint256[] subsetNonces) external nonpayable -``` - -This function allows a user to cancel an array of subset nonces. - -_It does not check the status of the nonces to save gas._ - -#### Parameters - -| Name | Type | Description | -| ------------ | --------- | ---------------------- | -| subsetNonces | uint256[] | Array of subset nonces | - -### incrementBidAskNonces - -```solidity -function incrementBidAskNonces(bool bid, bool ask) external nonpayable -``` - -This function increments a user's bid/ask nonces. - -_The logic for computing the quasi-random number is inspired by Seaport v1.2. The pseudo-randomness allows non-deterministic computation of the next ask/bid nonce. A deterministic increment would make the cancel-all process non-effective in certain cases (orders signed with a greater ask/bid nonce). The same quasi-random number is used for incrementing both the bid and ask nonces if both values are incremented in the same transaction. If this function is used twice in the same block, it will return the same quasiRandomNumber but this will not impact the overall business logic._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | --------------------------------------- | -| bid | bool | Whether to increment the user bid nonce | -| ask | bool | Whether to increment the user ask nonce | - -### userBidAskNonces - -```solidity -function userBidAskNonces(address) external view returns (uint256 bidNonce, uint256 askNonce) -``` - -This tracks the bid and ask nonces for a user address. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -#### Returns - -| Name | Type | Description | -| -------- | ------- | ----------- | -| bidNonce | uint256 | undefined | -| askNonce | uint256 | undefined | - -### userOrderNonce - -```solidity -function userOrderNonce(address, uint256) external view returns (bytes32) -``` - -This checks whether the order nonce for a user was executed or cancelled. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | -| \_1 | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### userSubsetNonce - -```solidity -function userSubsetNonce(address, uint256) external view returns (bool) -``` - -This checks whether the subset nonce for a user was cancelled. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | -| \_1 | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -## Events - -### NewBidAskNonces - -```solidity -event NewBidAskNonces(address user, uint256 bidNonce, uint256 askNonce) -``` - -It is emitted when there is an update of the global bid/ask nonces for a user. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| user | address | undefined | -| bidNonce | uint256 | undefined | -| askNonce | uint256 | undefined | - -### OrderNoncesCancelled - -```solidity -event OrderNoncesCancelled(address user, uint256[] orderNonces) -``` - -It is emitted when order nonces are cancelled for a user. - -#### Parameters - -| Name | Type | Description | -| ----------- | --------- | ----------- | -| user | address | undefined | -| orderNonces | uint256[] | undefined | - -### SubsetNoncesCancelled - -```solidity -event SubsetNoncesCancelled(address user, uint256[] subsetNonces) -``` - -It is emitted when subset nonces are cancelled for a user. - -#### Parameters - -| Name | Type | Description | -| ------------ | --------- | ----------- | -| user | address | undefined | -| subsetNonces | uint256[] | undefined | - -## Errors - -### LengthsInvalid - -```solidity -error LengthsInvalid() -``` - -It is returned if there is either a mismatch or an error in the length of the array(s). diff --git a/docs/docs/developer/api/contracts/marketplace/ProtocolFeeRecipient.md b/docs/docs/developer/api/contracts/marketplace/ProtocolFeeRecipient.md deleted file mode 100644 index 36f6a35c..00000000 --- a/docs/docs/developer/api/contracts/marketplace/ProtocolFeeRecipient.md +++ /dev/null @@ -1,75 +0,0 @@ -# ProtocolFeeRecipient - -_LooksRare protocol team (👀,💎)_ - -> ProtocolFeeRecipient - -This contract is used to receive protocol fees and transfer them to the fee sharing setter. Fee sharing setter cannot receive ETH directly, so we need to use this contract as a middleman to convert ETH into WETH before sending it. - -## Methods - -### FEE_SHARING_SETTER - -```solidity -function FEE_SHARING_SETTER() external view returns (address) -``` - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### WETH - -```solidity -function WETH() external view returns (contract IWETH) -``` - -#### Returns - -| Name | Type | Description | -| ---- | -------------- | ----------- | -| \_0 | contract IWETH | undefined | - -### transferERC20 - -```solidity -function transferERC20(address currency) external nonpayable -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ---------------------- | -| currency | address | ERC20 currency address | - -### transferETH - -```solidity -function transferETH() external nonpayable -``` - -## Errors - -### ERC20TransferFail - -```solidity -error ERC20TransferFail() -``` - -It is emitted if the ERC20 transfer fails. - -### NotAContract - -```solidity -error NotAContract() -``` - -It is emitted if the call recipient is not a contract. - -### NothingToTransfer - -```solidity -error NothingToTransfer() -``` diff --git a/docs/docs/developer/api/contracts/marketplace/StrategyManager.md b/docs/docs/developer/api/contracts/marketplace/StrategyManager.md deleted file mode 100644 index a55f3985..00000000 --- a/docs/docs/developer/api/contracts/marketplace/StrategyManager.md +++ /dev/null @@ -1,391 +0,0 @@ -# StrategyManager - -_LooksRare protocol team (👀,💎)_ - -> StrategyManager - -This contract handles the addition and the update of execution strategies. - -## Methods - -### addStrategy - -```solidity -function addStrategy(uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) external nonpayable -``` - -This function allows the owner to add a new execution strategy to the protocol. - -_Strategies have an id that is incremental. Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ---------------------------------------------- | -| standardProtocolFeeBp | uint16 | Standard protocol fee (in basis point) | -| minTotalFeeBp | uint16 | Minimum total fee (in basis point) | -| maxProtocolFeeBp | uint16 | Maximum protocol fee (in basis point) | -| selector | bytes4 | Function selector for the strategy | -| isMakerBid | bool | Whether the function selector is for maker bid | -| implementation | address | Implementation address | - -### cancelOwnershipTransfer - -```solidity -function cancelOwnershipTransfer() external nonpayable -``` - -This function is used to cancel the ownership transfer. - -_This function can be used for both cancelling a transfer to a new owner and cancelling the renouncement of the ownership._ - -### confirmOwnershipRenouncement - -```solidity -function confirmOwnershipRenouncement() external nonpayable -``` - -This function is used to confirm the ownership renouncement. - -### confirmOwnershipTransfer - -```solidity -function confirmOwnershipTransfer() external nonpayable -``` - -This function is used to confirm the ownership transfer. - -_This function can only be called by the current potential owner._ - -### initiateOwnershipRenouncement - -```solidity -function initiateOwnershipRenouncement() external nonpayable -``` - -This function is used to initiate the ownership renouncement. - -### initiateOwnershipTransfer - -```solidity -function initiateOwnershipTransfer(address newPotentialOwner) external nonpayable -``` - -This function is used to initiate the transfer of ownership to a new owner. - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | --------------------------- | -| newPotentialOwner | address | New potential owner address | - -### isCurrencyAllowed - -```solidity -function isCurrencyAllowed(address) external view returns (bool) -``` - -It checks whether the currency is allowed for transacting. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### owner - -```solidity -function owner() external view returns (address) -``` - -Address of the current owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### ownershipStatus - -```solidity -function ownershipStatus() external view returns (enum IOwnableTwoSteps.Status) -``` - -Ownership status. - -#### Returns - -| Name | Type | Description | -| ---- | ---------------------------- | ----------- | -| \_0 | enum IOwnableTwoSteps.Status | undefined | - -### potentialOwner - -```solidity -function potentialOwner() external view returns (address) -``` - -Address of the potential owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### strategyInfo - -```solidity -function strategyInfo(uint256) external view returns (bool isActive, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) -``` - -This returns the strategy information for a strategy id. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| --------------------- | ------- | ----------- | -| isActive | bool | undefined | -| standardProtocolFeeBp | uint16 | undefined | -| minTotalFeeBp | uint16 | undefined | -| maxProtocolFeeBp | uint16 | undefined | -| selector | bytes4 | undefined | -| isMakerBid | bool | undefined | -| implementation | address | undefined | - -### updateCurrencyStatus - -```solidity -function updateCurrencyStatus(address currency, bool isAllowed) external nonpayable -``` - -This function allows the owner to update the status of a currency. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| --------- | ------- | -------------------------------------------------- | -| currency | address | Currency address (address(0) for ETH) | -| isAllowed | bool | Whether the currency should be allowed for trading | - -### updateStrategy - -```solidity -function updateStrategy(uint256 strategyId, bool isActive, uint16 newStandardProtocolFee, uint16 newMinTotalFee) external nonpayable -``` - -This function allows the owner to update parameters for an existing execution strategy. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| ---------------------- | ------- | ------------------------------------------ | -| strategyId | uint256 | Strategy id | -| isActive | bool | Whether the strategy must be active | -| newStandardProtocolFee | uint16 | New standard protocol fee (in basis point) | -| newMinTotalFee | uint16 | New minimum total fee (in basis point) | - -## Events - -### CancelOwnershipTransfer - -```solidity -event CancelOwnershipTransfer() -``` - -This is emitted if the ownership transfer is cancelled. - -### CurrencyStatusUpdated - -```solidity -event CurrencyStatusUpdated(address currency, bool isAllowed) -``` - -It is emitted if the currency status in the allowlist is updated. - -#### Parameters - -| Name | Type | Description | -| --------- | ------- | ----------- | -| currency | address | undefined | -| isAllowed | bool | undefined | - -### InitiateOwnershipRenouncement - -```solidity -event InitiateOwnershipRenouncement() -``` - -This is emitted if the ownership renouncement is initiated. - -### InitiateOwnershipTransfer - -```solidity -event InitiateOwnershipTransfer(address previousOwner, address potentialOwner) -``` - -This is emitted if the ownership transfer is initiated. - -#### Parameters - -| Name | Type | Description | -| -------------- | ------- | ----------- | -| previousOwner | address | undefined | -| potentialOwner | address | undefined | - -### NewOwner - -```solidity -event NewOwner(address newOwner) -``` - -This is emitted when there is a new owner. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| newOwner | address | undefined | - -### NewStrategy - -```solidity -event NewStrategy(uint256 strategyId, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) -``` - -It is emitted when a new strategy is added. - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ----------- | -| strategyId | uint256 | undefined | -| standardProtocolFeeBp | uint16 | undefined | -| minTotalFeeBp | uint16 | undefined | -| maxProtocolFeeBp | uint16 | undefined | -| selector | bytes4 | undefined | -| isMakerBid | bool | undefined | -| implementation | address | undefined | - -### StrategyUpdated - -```solidity -event StrategyUpdated(uint256 strategyId, bool isActive, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp) -``` - -It is emitted when an existing strategy is updated. - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ----------- | -| strategyId | uint256 | undefined | -| isActive | bool | undefined | -| standardProtocolFeeBp | uint16 | undefined | -| minTotalFeeBp | uint16 | undefined | - -## Errors - -### NoOngoingTransferInProgress - -```solidity -error NoOngoingTransferInProgress() -``` - -This is returned when there is no transfer of ownership in progress. - -### NotOwner - -```solidity -error NotOwner() -``` - -This is returned when the caller is not the owner. - -### NotV2Strategy - -```solidity -error NotV2Strategy() -``` - -If the strategy has not set properly its implementation contract. - -_It can only be returned for owner operations._ - -### RenouncementNotInProgress - -```solidity -error RenouncementNotInProgress() -``` - -This is returned when there is no renouncement in progress but the owner tries to validate the ownership renouncement. - -### StrategyHasNoSelector - -```solidity -error StrategyHasNoSelector() -``` - -It is returned if the strategy has no selector. - -_It can only be returned for owner operations._ - -### StrategyNotUsed - -```solidity -error StrategyNotUsed() -``` - -It is returned if the strategyId is invalid. - -### StrategyProtocolFeeTooHigh - -```solidity -error StrategyProtocolFeeTooHigh() -``` - -It is returned if the strategy's protocol fee is too high. - -_It can only be returned for owner operations._ - -### TransferAlreadyInProgress - -```solidity -error TransferAlreadyInProgress() -``` - -This is returned when the transfer is already in progress but the owner tries initiate a new ownership transfer. - -### TransferNotInProgress - -```solidity -error TransferNotInProgress() -``` - -This is returned when there is no ownership transfer in progress but the ownership change tries to be approved. - -### WrongPotentialOwner - -```solidity -error WrongPotentialOwner() -``` - -This is returned when the ownership transfer is attempted to be validated by the a caller that is not the potential owner. diff --git a/docs/docs/developer/api/contracts/marketplace/TransferManager.md b/docs/docs/developer/api/contracts/marketplace/TransferManager.md deleted file mode 100644 index 991b849c..00000000 --- a/docs/docs/developer/api/contracts/marketplace/TransferManager.md +++ /dev/null @@ -1,561 +0,0 @@ -# TransferManager - -_LooksRare protocol team (👀,💎); bitbeckers_ - -> TransferManager - -This contract provides the transfer functions for ERC721/ERC1155/Hypercert for contracts that require them. Collection type "0" refers to ERC721 transfer functions. Collection type "1" refers to ERC1155 transfer functions. Collection type "2" refers to Hypercert transfer functions. - -_"Safe" transfer functions for ERC721 are not implemented since they come with added gas costs to verify if the recipient is a contract as it requires verifying the receiver interface is valid._ - -## Methods - -### allowOperator - -```solidity -function allowOperator(address operator) external nonpayable -``` - -This function allows an operator to be added for the shared transfer system. Once the operator is allowed, users can grant NFT approvals to this operator. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ------------------------- | -| operator | address | Operator address to allow | - -### cancelOwnershipTransfer - -```solidity -function cancelOwnershipTransfer() external nonpayable -``` - -This function is used to cancel the ownership transfer. - -_This function can be used for both cancelling a transfer to a new owner and cancelling the renouncement of the ownership._ - -### confirmOwnershipRenouncement - -```solidity -function confirmOwnershipRenouncement() external nonpayable -``` - -This function is used to confirm the ownership renouncement. - -### confirmOwnershipTransfer - -```solidity -function confirmOwnershipTransfer() external nonpayable -``` - -This function is used to confirm the ownership transfer. - -_This function can only be called by the current potential owner._ - -### grantApprovals - -```solidity -function grantApprovals(address[] operators) external nonpayable -``` - -This function allows a user to grant approvals for an array of operators. Users cannot grant approvals if the operator is not allowed by this contract's owner. - -_Each operator address must be globally allowed to be approved._ - -#### Parameters - -| Name | Type | Description | -| --------- | --------- | --------------------------- | -| operators | address[] | Array of operator addresses | - -### hasUserApprovedOperator - -```solidity -function hasUserApprovedOperator(address, address) external view returns (bool) -``` - -This returns whether the user has approved the operator address. The first address is the user and the second address is the operator (e.g. LooksRareProtocol). - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | -| \_1 | address | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### initiateOwnershipRenouncement - -```solidity -function initiateOwnershipRenouncement() external nonpayable -``` - -This function is used to initiate the ownership renouncement. - -### initiateOwnershipTransfer - -```solidity -function initiateOwnershipTransfer(address newPotentialOwner) external nonpayable -``` - -This function is used to initiate the transfer of ownership to a new owner. - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | --------------------------- | -| newPotentialOwner | address | New potential owner address | - -### isOperatorAllowed - -```solidity -function isOperatorAllowed(address) external view returns (bool) -``` - -This returns whether the operator address is allowed by this contract's owner. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### owner - -```solidity -function owner() external view returns (address) -``` - -Address of the current owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### ownershipStatus - -```solidity -function ownershipStatus() external view returns (enum IOwnableTwoSteps.Status) -``` - -Ownership status. - -#### Returns - -| Name | Type | Description | -| ---- | ---------------------------- | ----------- | -| \_0 | enum IOwnableTwoSteps.Status | undefined | - -### potentialOwner - -```solidity -function potentialOwner() external view returns (address) -``` - -Address of the potential owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### removeOperator - -```solidity -function removeOperator(address operator) external nonpayable -``` - -This function allows the user to remove an operator for the shared transfer system. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | -------------------------- | -| operator | address | Operator address to remove | - -### revokeApprovals - -```solidity -function revokeApprovals(address[] operators) external nonpayable -``` - -This function allows a user to revoke existing approvals for an array of operators. - -_Each operator address must be approved at the user level to be revoked._ - -#### Parameters - -| Name | Type | Description | -| --------- | --------- | --------------------------- | -| operators | address[] | Array of operator addresses | - -### splitItemsHypercert - -```solidity -function splitItemsHypercert(address collection, address from, address to, uint256[] itemIds, uint256[] amounts) external nonpayable -``` - -This function splits and transfers a fraction of a hypercert. - -_It does not allow batch transferring._ - -#### Parameters - -| Name | Type | Description | -| ---------- | --------- | ------------------ | -| collection | address | Collection address | -| from | address | Sender address | -| to | address | Recipient address | -| itemIds | uint256[] | Array of itemIds | -| amounts | uint256[] | Array of amounts | - -### transferBatchItemsAcrossCollections - -```solidity -function transferBatchItemsAcrossCollections(ITransferManager.BatchTransferItem[] items, address from, address to) external nonpayable -``` - -#### Parameters - -| Name | Type | Description | -| ----- | ------------------------------------ | ----------- | -| items | ITransferManager.BatchTransferItem[] | undefined | -| from | address | undefined | -| to | address | undefined | - -### transferItemsERC1155 - -```solidity -function transferItemsERC1155(address collection, address from, address to, uint256[] itemIds, uint256[] amounts) external nonpayable -``` - -This function transfers items for a single ERC1155 collection. - -_It does not allow batch transferring if from = msg.sender since native function should be used._ - -#### Parameters - -| Name | Type | Description | -| ---------- | --------- | ------------------ | -| collection | address | Collection address | -| from | address | Sender address | -| to | address | Recipient address | -| itemIds | uint256[] | Array of itemIds | -| amounts | uint256[] | Array of amounts | - -### transferItemsERC721 - -```solidity -function transferItemsERC721(address collection, address from, address to, uint256[] itemIds, uint256[] amounts) external nonpayable -``` - -This function transfers items for a single ERC721 collection. - -#### Parameters - -| Name | Type | Description | -| ---------- | --------- | ------------------ | -| collection | address | Collection address | -| from | address | Sender address | -| to | address | Recipient address | -| itemIds | uint256[] | Array of itemIds | -| amounts | uint256[] | Array of amounts | - -### transferItemsHypercert - -```solidity -function transferItemsHypercert(address collection, address from, address to, uint256[] itemIds, uint256[] amounts) external nonpayable -``` - -This function transfers items for a single Hypercert. - -_It does not allow batch transferring if from = msg.sender since native function should be used._ - -#### Parameters - -| Name | Type | Description | -| ---------- | --------- | ------------------ | -| collection | address | Collection address | -| from | address | Sender address | -| to | address | Recipient address | -| itemIds | uint256[] | Array of itemIds | -| amounts | uint256[] | Array of amounts | - -## Events - -### ApprovalsGranted - -```solidity -event ApprovalsGranted(address user, address[] operators) -``` - -It is emitted if operators' approvals to transfer NFTs are granted by a user. - -#### Parameters - -| Name | Type | Description | -| --------- | --------- | ----------- | -| user | address | undefined | -| operators | address[] | undefined | - -### ApprovalsRemoved - -```solidity -event ApprovalsRemoved(address user, address[] operators) -``` - -It is emitted if operators' approvals to transfer NFTs are revoked by a user. - -#### Parameters - -| Name | Type | Description | -| --------- | --------- | ----------- | -| user | address | undefined | -| operators | address[] | undefined | - -### CancelOwnershipTransfer - -```solidity -event CancelOwnershipTransfer() -``` - -This is emitted if the ownership transfer is cancelled. - -### InitiateOwnershipRenouncement - -```solidity -event InitiateOwnershipRenouncement() -``` - -This is emitted if the ownership renouncement is initiated. - -### InitiateOwnershipTransfer - -```solidity -event InitiateOwnershipTransfer(address previousOwner, address potentialOwner) -``` - -This is emitted if the ownership transfer is initiated. - -#### Parameters - -| Name | Type | Description | -| -------------- | ------- | ----------- | -| previousOwner | address | undefined | -| potentialOwner | address | undefined | - -### NewOwner - -```solidity -event NewOwner(address newOwner) -``` - -This is emitted when there is a new owner. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| newOwner | address | undefined | - -### OperatorAllowed - -```solidity -event OperatorAllowed(address operator) -``` - -It is emitted if a new operator is added to the global allowlist. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| operator | address | undefined | - -### OperatorRemoved - -```solidity -event OperatorRemoved(address operator) -``` - -It is emitted if an operator is removed from the global allowlist. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| operator | address | undefined | - -## Errors - -### AmountInvalid - -```solidity -error AmountInvalid() -``` - -It is returned if the amount is invalid. For ERC721 and Hypercert, any number that is not 1. For ERC1155, if amount is 0. - -### ERC1155SafeBatchTransferFromFail - -```solidity -error ERC1155SafeBatchTransferFromFail() -``` - -It is emitted if the ERC1155 safeBatchTransferFrom fails. - -### ERC1155SafeTransferFromFail - -```solidity -error ERC1155SafeTransferFromFail() -``` - -It is emitted if the ERC1155 safeTransferFrom fails. - -### ERC721TransferFromFail - -```solidity -error ERC721TransferFromFail() -``` - -It is emitted if the ERC721 transferFrom fails. - -### HypercertSplitFractionError - -```solidity -error HypercertSplitFractionError() -``` - -### LengthsInvalid - -```solidity -error LengthsInvalid() -``` - -It is returned if there is either a mismatch or an error in the length of the array(s). - -### NoOngoingTransferInProgress - -```solidity -error NoOngoingTransferInProgress() -``` - -This is returned when there is no transfer of ownership in progress. - -### NotAContract - -```solidity -error NotAContract() -``` - -It is emitted if the call recipient is not a contract. - -### NotOwner - -```solidity -error NotOwner() -``` - -This is returned when the caller is not the owner. - -### OperatorAlreadyAllowed - -```solidity -error OperatorAlreadyAllowed() -``` - -It is returned if the transfer caller is already allowed by the owner. - -_This error can only be returned for owner operations._ - -### OperatorAlreadyApprovedByUser - -```solidity -error OperatorAlreadyApprovedByUser() -``` - -It is returned if the operator to approve has already been approved by the user. - -### OperatorNotAllowed - -```solidity -error OperatorNotAllowed() -``` - -It is returned if the operator to approve is not in the global allowlist defined by the owner. - -_This error can be returned if the user tries to grant approval to an operator address not in the allowlist or if the owner tries to remove the operator from the global allowlist._ - -### OperatorNotApprovedByUser - -```solidity -error OperatorNotApprovedByUser() -``` - -It is returned if the operator to revoke has not been previously approved by the user. - -### OrderInvalid - -```solidity -error OrderInvalid() -``` - -It is returned if the order is permanently invalid. There may be an issue with the order formatting. - -### RenouncementNotInProgress - -```solidity -error RenouncementNotInProgress() -``` - -This is returned when there is no renouncement in progress but the owner tries to validate the ownership renouncement. - -### TransferAlreadyInProgress - -```solidity -error TransferAlreadyInProgress() -``` - -This is returned when the transfer is already in progress but the owner tries initiate a new ownership transfer. - -### TransferCallerInvalid - -```solidity -error TransferCallerInvalid() -``` - -It is returned if the transfer caller is invalid. For a transfer called to be valid, the operator must be in the global allowlist and approved by the 'from' user. - -### TransferNotInProgress - -```solidity -error TransferNotInProgress() -``` - -This is returned when there is no ownership transfer in progress but the ownership change tries to be approved. - -### WrongPotentialOwner - -```solidity -error WrongPotentialOwner() -``` - -This is returned when the ownership transfer is attempted to be validated by the a caller that is not the potential owner. diff --git a/docs/docs/developer/api/contracts/marketplace/TransferSelectorNFT.md b/docs/docs/developer/api/contracts/marketplace/TransferSelectorNFT.md deleted file mode 100644 index 168bab88..00000000 --- a/docs/docs/developer/api/contracts/marketplace/TransferSelectorNFT.md +++ /dev/null @@ -1,773 +0,0 @@ -# TransferSelectorNFT - -_LooksRare protocol team (👀,💎); bitbeckers;_ - -> TransferSelectorNFT - -This contract handles the logic for transferring non-fungible items. - -## Methods - -### MAGIC_VALUE_ORDER_NONCE_EXECUTED - -```solidity -function MAGIC_VALUE_ORDER_NONCE_EXECUTED() external view returns (bytes32) -``` - -Magic value nonce returned if executed (or cancelled). - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### addStrategy - -```solidity -function addStrategy(uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) external nonpayable -``` - -This function allows the owner to add a new execution strategy to the protocol. - -_Strategies have an id that is incremental. Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ---------------------------------------------- | -| standardProtocolFeeBp | uint16 | Standard protocol fee (in basis point) | -| minTotalFeeBp | uint16 | Minimum total fee (in basis point) | -| maxProtocolFeeBp | uint16 | Maximum protocol fee (in basis point) | -| selector | bytes4 | Function selector for the strategy | -| isMakerBid | bool | Whether the function selector is for maker bid | -| implementation | address | Implementation address | - -### cancelOrderNonces - -```solidity -function cancelOrderNonces(uint256[] orderNonces) external nonpayable -``` - -This function allows a user to cancel an array of order nonces. - -_It does not check the status of the nonces to save gas and to prevent revertion if one of the orders is filled in the same block._ - -#### Parameters - -| Name | Type | Description | -| ----------- | --------- | --------------------- | -| orderNonces | uint256[] | Array of order nonces | - -### cancelOwnershipTransfer - -```solidity -function cancelOwnershipTransfer() external nonpayable -``` - -This function is used to cancel the ownership transfer. - -_This function can be used for both cancelling a transfer to a new owner and cancelling the renouncement of the ownership._ - -### cancelSubsetNonces - -```solidity -function cancelSubsetNonces(uint256[] subsetNonces) external nonpayable -``` - -This function allows a user to cancel an array of subset nonces. - -_It does not check the status of the nonces to save gas._ - -#### Parameters - -| Name | Type | Description | -| ------------ | --------- | ---------------------- | -| subsetNonces | uint256[] | Array of subset nonces | - -### confirmOwnershipRenouncement - -```solidity -function confirmOwnershipRenouncement() external nonpayable -``` - -This function is used to confirm the ownership renouncement. - -### confirmOwnershipTransfer - -```solidity -function confirmOwnershipTransfer() external nonpayable -``` - -This function is used to confirm the ownership transfer. - -_This function can only be called by the current potential owner._ - -### creatorFeeManager - -```solidity -function creatorFeeManager() external view returns (contract ICreatorFeeManager) -``` - -Creator fee manager. - -#### Returns - -| Name | Type | Description | -| ---- | --------------------------- | ----------- | -| \_0 | contract ICreatorFeeManager | undefined | - -### incrementBidAskNonces - -```solidity -function incrementBidAskNonces(bool bid, bool ask) external nonpayable -``` - -This function increments a user's bid/ask nonces. - -_The logic for computing the quasi-random number is inspired by Seaport v1.2. The pseudo-randomness allows non-deterministic computation of the next ask/bid nonce. A deterministic increment would make the cancel-all process non-effective in certain cases (orders signed with a greater ask/bid nonce). The same quasi-random number is used for incrementing both the bid and ask nonces if both values are incremented in the same transaction. If this function is used twice in the same block, it will return the same quasiRandomNumber but this will not impact the overall business logic._ - -#### Parameters - -| Name | Type | Description | -| ---- | ---- | --------------------------------------- | -| bid | bool | Whether to increment the user bid nonce | -| ask | bool | Whether to increment the user ask nonce | - -### initiateOwnershipRenouncement - -```solidity -function initiateOwnershipRenouncement() external nonpayable -``` - -This function is used to initiate the ownership renouncement. - -### initiateOwnershipTransfer - -```solidity -function initiateOwnershipTransfer(address newPotentialOwner) external nonpayable -``` - -This function is used to initiate the transfer of ownership to a new owner. - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | --------------------------- | -| newPotentialOwner | address | New potential owner address | - -### isCurrencyAllowed - -```solidity -function isCurrencyAllowed(address) external view returns (bool) -``` - -It checks whether the currency is allowed for transacting. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### maxCreatorFeeBp - -```solidity -function maxCreatorFeeBp() external view returns (uint16) -``` - -Maximum creator fee (in basis point). - -#### Returns - -| Name | Type | Description | -| ---- | ------ | ----------- | -| \_0 | uint16 | undefined | - -### owner - -```solidity -function owner() external view returns (address) -``` - -Address of the current owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### ownershipStatus - -```solidity -function ownershipStatus() external view returns (enum IOwnableTwoSteps.Status) -``` - -Ownership status. - -#### Returns - -| Name | Type | Description | -| ---- | ---------------------------- | ----------- | -| \_0 | enum IOwnableTwoSteps.Status | undefined | - -### potentialOwner - -```solidity -function potentialOwner() external view returns (address) -``` - -Address of the potential owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### protocolFeeRecipient - -```solidity -function protocolFeeRecipient() external view returns (address) -``` - -Protocol fee recipient. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### strategyInfo - -```solidity -function strategyInfo(uint256) external view returns (bool isActive, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) -``` - -This returns the strategy information for a strategy id. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| --------------------- | ------- | ----------- | -| isActive | bool | undefined | -| standardProtocolFeeBp | uint16 | undefined | -| minTotalFeeBp | uint16 | undefined | -| maxProtocolFeeBp | uint16 | undefined | -| selector | bytes4 | undefined | -| isMakerBid | bool | undefined | -| implementation | address | undefined | - -### transferManager - -```solidity -function transferManager() external view returns (contract TransferManager) -``` - -Transfer manager for ERC721, ERC1155 and Hypercerts. - -#### Returns - -| Name | Type | Description | -| ---- | ------------------------ | ----------- | -| \_0 | contract TransferManager | undefined | - -### updateCreatorFeeManager - -```solidity -function updateCreatorFeeManager(address newCreatorFeeManager) external nonpayable -``` - -This function allows the owner to update the creator fee manager address. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| -------------------- | ------- | ---------------------------------- | -| newCreatorFeeManager | address | Address of the creator fee manager | - -### updateCurrencyStatus - -```solidity -function updateCurrencyStatus(address currency, bool isAllowed) external nonpayable -``` - -This function allows the owner to update the status of a currency. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| --------- | ------- | -------------------------------------------------- | -| currency | address | Currency address (address(0) for ETH) | -| isAllowed | bool | Whether the currency should be allowed for trading | - -### updateMaxCreatorFeeBp - -```solidity -function updateMaxCreatorFeeBp(uint16 newMaxCreatorFeeBp) external nonpayable -``` - -This function allows the owner to update the maximum creator fee (in basis point). - -_The maximum value that can be set is 25%. Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| ------------------ | ------ | ---------------------------------------- | -| newMaxCreatorFeeBp | uint16 | New maximum creator fee (in basis point) | - -### updateProtocolFeeRecipient - -```solidity -function updateProtocolFeeRecipient(address newProtocolFeeRecipient) external nonpayable -``` - -This function allows the owner to update the protocol fee recipient. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| ----------------------- | ------- | ---------------------------------- | -| newProtocolFeeRecipient | address | New protocol fee recipient address | - -### updateStrategy - -```solidity -function updateStrategy(uint256 strategyId, bool isActive, uint16 newStandardProtocolFee, uint16 newMinTotalFee) external nonpayable -``` - -This function allows the owner to update parameters for an existing execution strategy. - -_Only callable by owner._ - -#### Parameters - -| Name | Type | Description | -| ---------------------- | ------- | ------------------------------------------ | -| strategyId | uint256 | Strategy id | -| isActive | bool | Whether the strategy must be active | -| newStandardProtocolFee | uint16 | New standard protocol fee (in basis point) | -| newMinTotalFee | uint16 | New minimum total fee (in basis point) | - -### userBidAskNonces - -```solidity -function userBidAskNonces(address) external view returns (uint256 bidNonce, uint256 askNonce) -``` - -This tracks the bid and ask nonces for a user address. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -#### Returns - -| Name | Type | Description | -| -------- | ------- | ----------- | -| bidNonce | uint256 | undefined | -| askNonce | uint256 | undefined | - -### userOrderNonce - -```solidity -function userOrderNonce(address, uint256) external view returns (bytes32) -``` - -This checks whether the order nonce for a user was executed or cancelled. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | -| \_1 | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### userSubsetNonce - -```solidity -function userSubsetNonce(address, uint256) external view returns (bool) -``` - -This checks whether the subset nonce for a user was cancelled. - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | -| \_1 | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -## Events - -### CancelOwnershipTransfer - -```solidity -event CancelOwnershipTransfer() -``` - -This is emitted if the ownership transfer is cancelled. - -### CurrencyStatusUpdated - -```solidity -event CurrencyStatusUpdated(address currency, bool isAllowed) -``` - -It is emitted if the currency status in the allowlist is updated. - -#### Parameters - -| Name | Type | Description | -| --------- | ------- | ----------- | -| currency | address | undefined | -| isAllowed | bool | undefined | - -### InitiateOwnershipRenouncement - -```solidity -event InitiateOwnershipRenouncement() -``` - -This is emitted if the ownership renouncement is initiated. - -### InitiateOwnershipTransfer - -```solidity -event InitiateOwnershipTransfer(address previousOwner, address potentialOwner) -``` - -This is emitted if the ownership transfer is initiated. - -#### Parameters - -| Name | Type | Description | -| -------------- | ------- | ----------- | -| previousOwner | address | undefined | -| potentialOwner | address | undefined | - -### NewBidAskNonces - -```solidity -event NewBidAskNonces(address user, uint256 bidNonce, uint256 askNonce) -``` - -It is emitted when there is an update of the global bid/ask nonces for a user. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| user | address | undefined | -| bidNonce | uint256 | undefined | -| askNonce | uint256 | undefined | - -### NewCreatorFeeManager - -```solidity -event NewCreatorFeeManager(address creatorFeeManager) -``` - -It is issued when there is a new creator fee manager. - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | ----------- | -| creatorFeeManager | address | undefined | - -### NewMaxCreatorFeeBp - -```solidity -event NewMaxCreatorFeeBp(uint256 maxCreatorFeeBp) -``` - -It is issued when there is a new maximum creator fee (in basis point). - -#### Parameters - -| Name | Type | Description | -| --------------- | ------- | ----------- | -| maxCreatorFeeBp | uint256 | undefined | - -### NewOwner - -```solidity -event NewOwner(address newOwner) -``` - -This is emitted when there is a new owner. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| newOwner | address | undefined | - -### NewProtocolFeeRecipient - -```solidity -event NewProtocolFeeRecipient(address protocolFeeRecipient) -``` - -It is issued when there is a new protocol fee recipient address. - -#### Parameters - -| Name | Type | Description | -| -------------------- | ------- | ----------- | -| protocolFeeRecipient | address | undefined | - -### NewStrategy - -```solidity -event NewStrategy(uint256 strategyId, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) -``` - -It is emitted when a new strategy is added. - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ----------- | -| strategyId | uint256 | undefined | -| standardProtocolFeeBp | uint16 | undefined | -| minTotalFeeBp | uint16 | undefined | -| maxProtocolFeeBp | uint16 | undefined | -| selector | bytes4 | undefined | -| isMakerBid | bool | undefined | -| implementation | address | undefined | - -### OrderNoncesCancelled - -```solidity -event OrderNoncesCancelled(address user, uint256[] orderNonces) -``` - -It is emitted when order nonces are cancelled for a user. - -#### Parameters - -| Name | Type | Description | -| ----------- | --------- | ----------- | -| user | address | undefined | -| orderNonces | uint256[] | undefined | - -### StrategyUpdated - -```solidity -event StrategyUpdated(uint256 strategyId, bool isActive, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp) -``` - -It is emitted when an existing strategy is updated. - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ----------- | -| strategyId | uint256 | undefined | -| isActive | bool | undefined | -| standardProtocolFeeBp | uint16 | undefined | -| minTotalFeeBp | uint16 | undefined | - -### SubsetNoncesCancelled - -```solidity -event SubsetNoncesCancelled(address user, uint256[] subsetNonces) -``` - -It is emitted when subset nonces are cancelled for a user. - -#### Parameters - -| Name | Type | Description | -| ------------ | --------- | ----------- | -| user | address | undefined | -| subsetNonces | uint256[] | undefined | - -## Errors - -### CreatorFeeBpTooHigh - -```solidity -error CreatorFeeBpTooHigh() -``` - -It is returned if the creator fee (in basis point) is too high. - -### LengthsInvalid - -```solidity -error LengthsInvalid() -``` - -It is returned if there is either a mismatch or an error in the length of the array(s). - -### NewProtocolFeeRecipientCannotBeNullAddress - -```solidity -error NewProtocolFeeRecipientCannotBeNullAddress() -``` - -It is returned if the new protocol fee recipient is set to address(0). - -### NoOngoingTransferInProgress - -```solidity -error NoOngoingTransferInProgress() -``` - -This is returned when there is no transfer of ownership in progress. - -### NoSelectorForStrategy - -```solidity -error NoSelectorForStrategy() -``` - -It is returned if there is no selector for maker ask/bid for a given strategyId, depending on the quote type. - -### NotOwner - -```solidity -error NotOwner() -``` - -This is returned when the caller is not the owner. - -### NotV2Strategy - -```solidity -error NotV2Strategy() -``` - -If the strategy has not set properly its implementation contract. - -_It can only be returned for owner operations._ - -### OutsideOfTimeRange - -```solidity -error OutsideOfTimeRange() -``` - -It is returned if the current block timestamp is not between start and end times in the maker order. - -### ReentrancyFail - -```solidity -error ReentrancyFail() -``` - -This is returned when there is a reentrant call. - -### RenouncementNotInProgress - -```solidity -error RenouncementNotInProgress() -``` - -This is returned when there is no renouncement in progress but the owner tries to validate the ownership renouncement. - -### StrategyHasNoSelector - -```solidity -error StrategyHasNoSelector() -``` - -It is returned if the strategy has no selector. - -_It can only be returned for owner operations._ - -### StrategyNotAvailable - -```solidity -error StrategyNotAvailable(uint256 strategyId) -``` - -It is returned if the strategy id has no implementation. - -_It is returned if there is no implementation address and the strategyId is strictly greater than 0._ - -#### Parameters - -| Name | Type | Description | -| ---------- | ------- | ----------- | -| strategyId | uint256 | undefined | - -### StrategyNotUsed - -```solidity -error StrategyNotUsed() -``` - -It is returned if the strategyId is invalid. - -### StrategyProtocolFeeTooHigh - -```solidity -error StrategyProtocolFeeTooHigh() -``` - -It is returned if the strategy's protocol fee is too high. - -_It can only be returned for owner operations._ - -### TransferAlreadyInProgress - -```solidity -error TransferAlreadyInProgress() -``` - -This is returned when the transfer is already in progress but the owner tries initiate a new ownership transfer. - -### TransferNotInProgress - -```solidity -error TransferNotInProgress() -``` - -This is returned when there is no ownership transfer in progress but the ownership change tries to be approved. - -### WrongPotentialOwner - -```solidity -error WrongPotentialOwner() -``` - -This is returned when the ownership transfer is attempted to be validated by the a caller that is not the potential owner. diff --git a/docs/docs/developer/api/contracts/marketplace/executionStrategies/BaseStrategy.md b/docs/docs/developer/api/contracts/marketplace/executionStrategies/BaseStrategy.md deleted file mode 100644 index 6767c2c2..00000000 --- a/docs/docs/developer/api/contracts/marketplace/executionStrategies/BaseStrategy.md +++ /dev/null @@ -1,41 +0,0 @@ -# BaseStrategy - -_LooksRare protocol team (👀,💎); bitbeckers_ - -> BaseStrategy - -## Methods - -### isLooksRareV2Strategy - -```solidity -function isLooksRareV2Strategy() external pure returns (bool) -``` - -This function acts as a safety check for the protocol's owner when adding new execution strategies. - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ---------------------------------------------- | -| \_0 | bool | Whether it is a LooksRare V2 protocol strategy | - -### isMakerOrderValid - -```solidity -function isMakerOrderValid(OrderStructs.Maker makerOrder, bytes4 functionSelector) external view returns (bool isValid, bytes4 errorSelector) -``` - -#### Parameters - -| Name | Type | Description | -| ---------------- | ------------------ | ----------- | -| makerOrder | OrderStructs.Maker | undefined | -| functionSelector | bytes4 | undefined | - -#### Returns - -| Name | Type | Description | -| ------------- | ------ | ----------- | -| isValid | bool | undefined | -| errorSelector | bytes4 | undefined | diff --git a/docs/docs/developer/api/contracts/marketplace/executionStrategies/Chainlink/BaseStrategyChainlinkPriceLatency.md b/docs/docs/developer/api/contracts/marketplace/executionStrategies/Chainlink/BaseStrategyChainlinkPriceLatency.md deleted file mode 100644 index c9503939..00000000 --- a/docs/docs/developer/api/contracts/marketplace/executionStrategies/Chainlink/BaseStrategyChainlinkPriceLatency.md +++ /dev/null @@ -1,212 +0,0 @@ -# BaseStrategyChainlinkPriceLatency - -_LooksRare protocol team (👀,💎)_ - -> BaseStrategyChainlinkPriceLatency - -This contract allows the owner to define the maximum acceptable Chainlink price latency. - -## Methods - -### cancelOwnershipTransfer - -```solidity -function cancelOwnershipTransfer() external nonpayable -``` - -This function is used to cancel the ownership transfer. - -_This function can be used for both cancelling a transfer to a new owner and cancelling the renouncement of the ownership._ - -### confirmOwnershipRenouncement - -```solidity -function confirmOwnershipRenouncement() external nonpayable -``` - -This function is used to confirm the ownership renouncement. - -### confirmOwnershipTransfer - -```solidity -function confirmOwnershipTransfer() external nonpayable -``` - -This function is used to confirm the ownership transfer. - -_This function can only be called by the current potential owner._ - -### initiateOwnershipRenouncement - -```solidity -function initiateOwnershipRenouncement() external nonpayable -``` - -This function is used to initiate the ownership renouncement. - -### initiateOwnershipTransfer - -```solidity -function initiateOwnershipTransfer(address newPotentialOwner) external nonpayable -``` - -This function is used to initiate the transfer of ownership to a new owner. - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | --------------------------- | -| newPotentialOwner | address | New potential owner address | - -### maxLatency - -```solidity -function maxLatency() external view returns (uint256) -``` - -Maximum latency accepted after which the execution strategy rejects the retrieved price. For ETH, it cannot be higher than 3,600 as Chainlink will at least update the price every 3,600 seconds, provided ETH's price does not deviate more than 0.5%. For NFTs, it cannot be higher than 86,400 as Chainlink will at least update the price every 86,400 seconds, provided ETH's price does not deviate more than 2%. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -### owner - -```solidity -function owner() external view returns (address) -``` - -Address of the current owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### ownershipStatus - -```solidity -function ownershipStatus() external view returns (enum IOwnableTwoSteps.Status) -``` - -Ownership status. - -#### Returns - -| Name | Type | Description | -| ---- | ---------------------------- | ----------- | -| \_0 | enum IOwnableTwoSteps.Status | undefined | - -### potentialOwner - -```solidity -function potentialOwner() external view returns (address) -``` - -Address of the potential owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -## Events - -### CancelOwnershipTransfer - -```solidity -event CancelOwnershipTransfer() -``` - -This is emitted if the ownership transfer is cancelled. - -### InitiateOwnershipRenouncement - -```solidity -event InitiateOwnershipRenouncement() -``` - -This is emitted if the ownership renouncement is initiated. - -### InitiateOwnershipTransfer - -```solidity -event InitiateOwnershipTransfer(address previousOwner, address potentialOwner) -``` - -This is emitted if the ownership transfer is initiated. - -#### Parameters - -| Name | Type | Description | -| -------------- | ------- | ----------- | -| previousOwner | address | undefined | -| potentialOwner | address | undefined | - -### NewOwner - -```solidity -event NewOwner(address newOwner) -``` - -This is emitted when there is a new owner. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| newOwner | address | undefined | - -## Errors - -### NoOngoingTransferInProgress - -```solidity -error NoOngoingTransferInProgress() -``` - -This is returned when there is no transfer of ownership in progress. - -### NotOwner - -```solidity -error NotOwner() -``` - -This is returned when the caller is not the owner. - -### RenouncementNotInProgress - -```solidity -error RenouncementNotInProgress() -``` - -This is returned when there is no renouncement in progress but the owner tries to validate the ownership renouncement. - -### TransferAlreadyInProgress - -```solidity -error TransferAlreadyInProgress() -``` - -This is returned when the transfer is already in progress but the owner tries initiate a new ownership transfer. - -### TransferNotInProgress - -```solidity -error TransferNotInProgress() -``` - -This is returned when there is no ownership transfer in progress but the ownership change tries to be approved. - -### WrongPotentialOwner - -```solidity -error WrongPotentialOwner() -``` - -This is returned when the ownership transfer is attempted to be validated by the a caller that is not the potential owner. diff --git a/docs/docs/developer/api/contracts/marketplace/executionStrategies/Chainlink/StrategyChainlinkUSDDynamicAsk.md b/docs/docs/developer/api/contracts/marketplace/executionStrategies/Chainlink/StrategyChainlinkUSDDynamicAsk.md deleted file mode 100644 index e2d77dd3..00000000 --- a/docs/docs/developer/api/contracts/marketplace/executionStrategies/Chainlink/StrategyChainlinkUSDDynamicAsk.md +++ /dev/null @@ -1,342 +0,0 @@ -# StrategyChainlinkUSDDynamicAsk - -_LooksRare protocol team (👀,💎)_ - -> StrategyChainlinkUSDDynamicAsk - -This contract allows a seller to sell an NFT priced in USD and the receivable amount to be in ETH. - -## Methods - -### ETH_USD_PRICE_FEED_DECIMALS - -```solidity -function ETH_USD_PRICE_FEED_DECIMALS() external view returns (uint256) -``` - -_It is possible to call priceFeed.decimals() to get the decimals, but to save gas, it is hard coded instead._ - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -### WETH - -```solidity -function WETH() external view returns (address) -``` - -Wrapped ether (WETH) address. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### cancelOwnershipTransfer - -```solidity -function cancelOwnershipTransfer() external nonpayable -``` - -This function is used to cancel the ownership transfer. - -_This function can be used for both cancelling a transfer to a new owner and cancelling the renouncement of the ownership._ - -### confirmOwnershipRenouncement - -```solidity -function confirmOwnershipRenouncement() external nonpayable -``` - -This function is used to confirm the ownership renouncement. - -### confirmOwnershipTransfer - -```solidity -function confirmOwnershipTransfer() external nonpayable -``` - -This function is used to confirm the ownership transfer. - -_This function can only be called by the current potential owner._ - -### executeStrategyWithTakerBid - -```solidity -function executeStrategyWithTakerBid(OrderStructs.Taker takerBid, OrderStructs.Maker makerAsk) external view returns (uint256 price, uint256[] itemIds, uint256[] amounts, bool isNonceInvalidated) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------------------ | ----------- | -| takerBid | OrderStructs.Taker | undefined | -| makerAsk | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| price | uint256 | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| isNonceInvalidated | bool | undefined | - -### initiateOwnershipRenouncement - -```solidity -function initiateOwnershipRenouncement() external nonpayable -``` - -This function is used to initiate the ownership renouncement. - -### initiateOwnershipTransfer - -```solidity -function initiateOwnershipTransfer(address newPotentialOwner) external nonpayable -``` - -This function is used to initiate the transfer of ownership to a new owner. - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | --------------------------- | -| newPotentialOwner | address | New potential owner address | - -### isLooksRareV2Strategy - -```solidity -function isLooksRareV2Strategy() external pure returns (bool) -``` - -This function acts as a safety check for the protocol's owner when adding new execution strategies. - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ---------------------------------------------- | -| \_0 | bool | Whether it is a LooksRare V2 protocol strategy | - -### isMakerOrderValid - -```solidity -function isMakerOrderValid(OrderStructs.Maker makerAsk, bytes4 functionSelector) external view returns (bool isValid, bytes4 errorSelector) -``` - -#### Parameters - -| Name | Type | Description | -| ---------------- | ------------------ | ----------- | -| makerAsk | OrderStructs.Maker | undefined | -| functionSelector | bytes4 | undefined | - -#### Returns - -| Name | Type | Description | -| ------------- | ------ | ----------- | -| isValid | bool | undefined | -| errorSelector | bytes4 | undefined | - -### maxLatency - -```solidity -function maxLatency() external view returns (uint256) -``` - -Maximum latency accepted after which the execution strategy rejects the retrieved price. For ETH, it cannot be higher than 3,600 as Chainlink will at least update the price every 3,600 seconds, provided ETH's price does not deviate more than 0.5%. For NFTs, it cannot be higher than 86,400 as Chainlink will at least update the price every 86,400 seconds, provided ETH's price does not deviate more than 2%. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -### owner - -```solidity -function owner() external view returns (address) -``` - -Address of the current owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### ownershipStatus - -```solidity -function ownershipStatus() external view returns (enum IOwnableTwoSteps.Status) -``` - -Ownership status. - -#### Returns - -| Name | Type | Description | -| ---- | ---------------------------- | ----------- | -| \_0 | enum IOwnableTwoSteps.Status | undefined | - -### potentialOwner - -```solidity -function potentialOwner() external view returns (address) -``` - -Address of the potential owner. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### priceFeed - -```solidity -function priceFeed() external view returns (contract AggregatorV3Interface) -``` - -ETH/USD Chainlink price feed - -#### Returns - -| Name | Type | Description | -| ---- | ------------------------------ | ----------- | -| \_0 | contract AggregatorV3Interface | undefined | - -## Events - -### CancelOwnershipTransfer - -```solidity -event CancelOwnershipTransfer() -``` - -This is emitted if the ownership transfer is cancelled. - -### InitiateOwnershipRenouncement - -```solidity -event InitiateOwnershipRenouncement() -``` - -This is emitted if the ownership renouncement is initiated. - -### InitiateOwnershipTransfer - -```solidity -event InitiateOwnershipTransfer(address previousOwner, address potentialOwner) -``` - -This is emitted if the ownership transfer is initiated. - -#### Parameters - -| Name | Type | Description | -| -------------- | ------- | ----------- | -| previousOwner | address | undefined | -| potentialOwner | address | undefined | - -### NewOwner - -```solidity -event NewOwner(address newOwner) -``` - -This is emitted when there is a new owner. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| newOwner | address | undefined | - -## Errors - -### BidTooLow - -```solidity -error BidTooLow() -``` - -It is returned if the bid price is too low for the ask user. - -### ChainlinkPriceInvalid - -```solidity -error ChainlinkPriceInvalid() -``` - -It is returned if the Chainlink price is invalid (e.g. negative). - -### NoOngoingTransferInProgress - -```solidity -error NoOngoingTransferInProgress() -``` - -This is returned when there is no transfer of ownership in progress. - -### NotOwner - -```solidity -error NotOwner() -``` - -This is returned when the caller is not the owner. - -### OrderInvalid - -```solidity -error OrderInvalid() -``` - -It is returned if the order is permanently invalid. There may be an issue with the order formatting. - -### PriceNotRecentEnough - -```solidity -error PriceNotRecentEnough() -``` - -It is returned if the current block time relative to the latest price's update time is greater than the latency tolerance. - -### RenouncementNotInProgress - -```solidity -error RenouncementNotInProgress() -``` - -This is returned when there is no renouncement in progress but the owner tries to validate the ownership renouncement. - -### TransferAlreadyInProgress - -```solidity -error TransferAlreadyInProgress() -``` - -This is returned when the transfer is already in progress but the owner tries initiate a new ownership transfer. - -### TransferNotInProgress - -```solidity -error TransferNotInProgress() -``` - -This is returned when there is no ownership transfer in progress but the ownership change tries to be approved. - -### WrongPotentialOwner - -```solidity -error WrongPotentialOwner() -``` - -This is returned when the ownership transfer is attempted to be validated by the a caller that is not the potential owner. diff --git a/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyCollectionOffer.md b/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyCollectionOffer.md deleted file mode 100644 index cecc9324..00000000 --- a/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyCollectionOffer.md +++ /dev/null @@ -1,135 +0,0 @@ -# StrategyCollectionOffer - -_LooksRare protocol team (👀,💎); bitbeckers_ - -> StrategyCollectionOffer - -This contract offers execution strategies for users to create maker bid offers for items in a collection. There are two available functions: 1. executeCollectionStrategyWithTakerAsk --> it applies to all itemIds in a collection 2. executeCollectionStrategyWithTakerAskWithProof --> it allows adding merkle proof criteria for tokenIds. 2. executeCollectionStrategyWithTakerAskWithAllowlist --> it allows adding merkle proof criteria for accounts.The bidder can only bid on 1 item id at a time. 1. If ERC721, the amount must be 1. 2. If ERC1155, the amount can be greater than 1. - -## Methods - -### executeCollectionStrategyWithTakerAsk - -```solidity -function executeCollectionStrategyWithTakerAsk(OrderStructs.Taker takerAsk, OrderStructs.Maker makerBid) external pure returns (uint256 price, uint256[] itemIds, uint256[] amounts, bool isNonceInvalidated) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------------------ | ----------- | -| takerAsk | OrderStructs.Taker | undefined | -| makerBid | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| price | uint256 | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| isNonceInvalidated | bool | undefined | - -### executeCollectionStrategyWithTakerAskWithAllowlist - -```solidity -function executeCollectionStrategyWithTakerAskWithAllowlist(OrderStructs.Taker takerAsk, OrderStructs.Maker makerBid) external pure returns (uint256 price, uint256[] itemIds, uint256[] amounts, bool isNonceInvalidated) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------------------ | ----------- | -| takerAsk | OrderStructs.Taker | undefined | -| makerBid | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| price | uint256 | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| isNonceInvalidated | bool | undefined | - -### executeCollectionStrategyWithTakerAskWithProof - -```solidity -function executeCollectionStrategyWithTakerAskWithProof(OrderStructs.Taker takerAsk, OrderStructs.Maker makerBid) external pure returns (uint256 price, uint256[] itemIds, uint256[] amounts, bool isNonceInvalidated) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------------------ | ----------- | -| takerAsk | OrderStructs.Taker | undefined | -| makerBid | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| price | uint256 | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| isNonceInvalidated | bool | undefined | - -### isLooksRareV2Strategy - -```solidity -function isLooksRareV2Strategy() external pure returns (bool) -``` - -This function acts as a safety check for the protocol's owner when adding new execution strategies. - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ---------------------------------------------- | -| \_0 | bool | Whether it is a LooksRare V2 protocol strategy | - -### isMakerOrderValid - -```solidity -function isMakerOrderValid(OrderStructs.Maker makerBid, bytes4 functionSelector) external pure returns (bool isValid, bytes4 errorSelector) -``` - -#### Parameters - -| Name | Type | Description | -| ---------------- | ------------------ | ----------- | -| makerBid | OrderStructs.Maker | undefined | -| functionSelector | bytes4 | undefined | - -#### Returns - -| Name | Type | Description | -| ------------- | ------ | ----------- | -| isValid | bool | undefined | -| errorSelector | bytes4 | undefined | - -## Errors - -### CollectionTypeInvalid - -```solidity -error CollectionTypeInvalid() -``` - -It is returned is the collection type is not supported. For instance if the strategy is specific to hypercerts. - -### MerkleProofInvalid - -```solidity -error MerkleProofInvalid() -``` - -It is returned if the merkle proof provided is invalid. - -### OrderInvalid - -```solidity -error OrderInvalid() -``` - -It is returned if the order is permanently invalid. There may be an issue with the order formatting. diff --git a/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyDutchAuction.md b/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyDutchAuction.md deleted file mode 100644 index 65fd5b25..00000000 --- a/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyDutchAuction.md +++ /dev/null @@ -1,91 +0,0 @@ -# StrategyDutchAuction - -_LooksRare protocol team (👀,💎); bitbeckers_ - -> StrategyDutchAuction - -This contract offers a single execution strategy for users to create Dutch auctions. - -## Methods - -### executeStrategyWithTakerBid - -```solidity -function executeStrategyWithTakerBid(OrderStructs.Taker takerBid, OrderStructs.Maker makerAsk) external view returns (uint256 price, uint256[] itemIds, uint256[] amounts, bool isNonceInvalidated) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------------------ | ----------- | -| takerBid | OrderStructs.Taker | undefined | -| makerAsk | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| price | uint256 | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| isNonceInvalidated | bool | undefined | - -### isLooksRareV2Strategy - -```solidity -function isLooksRareV2Strategy() external pure returns (bool) -``` - -This function acts as a safety check for the protocol's owner when adding new execution strategies. - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ---------------------------------------------- | -| \_0 | bool | Whether it is a LooksRare V2 protocol strategy | - -### isMakerOrderValid - -```solidity -function isMakerOrderValid(OrderStructs.Maker makerAsk, bytes4 functionSelector) external pure returns (bool isValid, bytes4 errorSelector) -``` - -#### Parameters - -| Name | Type | Description | -| ---------------- | ------------------ | ----------- | -| makerAsk | OrderStructs.Maker | undefined | -| functionSelector | bytes4 | undefined | - -#### Returns - -| Name | Type | Description | -| ------------- | ------ | ----------- | -| isValid | bool | undefined | -| errorSelector | bytes4 | undefined | - -## Errors - -### BidTooLow - -```solidity -error BidTooLow() -``` - -It is returned if the bid price is too low for the ask user. - -### CollectionTypeInvalid - -```solidity -error CollectionTypeInvalid() -``` - -It is returned is the collection type is not supported. For instance if the strategy is specific to hypercerts. - -### OrderInvalid - -```solidity -error OrderInvalid() -``` - -It is returned if the order is permanently invalid. There may be an issue with the order formatting. diff --git a/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyHypercertCollectionOffer.md b/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyHypercertCollectionOffer.md deleted file mode 100644 index 17b10115..00000000 --- a/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyHypercertCollectionOffer.md +++ /dev/null @@ -1,135 +0,0 @@ -# StrategyHypercertCollectionOffer - -_LooksRare protocol team (👀,💎); bitbeckers_ - -> StrategyHypercertCollectionOffer - -This contract offers execution strategies for users to create maker bid offers for items in a collection. There are two available functions: 1. executeCollectionStrategyWithTakerAsk --> it applies to all itemIds in a collection 2. executeCollectionStrategyWithTakerAskWithProof --> it allows adding merkle proof criteria for tokenIds. 2. executeCollectionStrategyWithTakerAskWithAllowlist --> it allows adding merkle proof criteria for accounts.The bidder can only bid on 1 item id at a time. 1. The amount must be 1. 2. The units held at bid creation and ask execution time must be the same. 3. The units held by the item sold must be the same as the units held by the item bid. - -## Methods - -### executeHypercertCollectionStrategyWithTakerAsk - -```solidity -function executeHypercertCollectionStrategyWithTakerAsk(OrderStructs.Taker takerAsk, OrderStructs.Maker makerBid) external view returns (uint256 price, uint256[] itemIds, uint256[] amounts, bool isNonceInvalidated) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------------------ | ----------- | -| takerAsk | OrderStructs.Taker | undefined | -| makerBid | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| price | uint256 | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| isNonceInvalidated | bool | undefined | - -### executeHypercertCollectionStrategyWithTakerAskWithAllowlist - -```solidity -function executeHypercertCollectionStrategyWithTakerAskWithAllowlist(OrderStructs.Taker takerAsk, OrderStructs.Maker makerBid) external view returns (uint256 price, uint256[] itemIds, uint256[] amounts, bool isNonceInvalidated) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------------------ | ----------- | -| takerAsk | OrderStructs.Taker | undefined | -| makerBid | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| price | uint256 | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| isNonceInvalidated | bool | undefined | - -### executeHypercertCollectionStrategyWithTakerAskWithProof - -```solidity -function executeHypercertCollectionStrategyWithTakerAskWithProof(OrderStructs.Taker takerAsk, OrderStructs.Maker makerBid) external view returns (uint256 price, uint256[] itemIds, uint256[] amounts, bool isNonceInvalidated) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------------------ | ----------- | -| takerAsk | OrderStructs.Taker | undefined | -| makerBid | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| price | uint256 | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| isNonceInvalidated | bool | undefined | - -### isLooksRareV2Strategy - -```solidity -function isLooksRareV2Strategy() external pure returns (bool) -``` - -This function acts as a safety check for the protocol's owner when adding new execution strategies. - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ---------------------------------------------- | -| \_0 | bool | Whether it is a LooksRare V2 protocol strategy | - -### isMakerOrderValid - -```solidity -function isMakerOrderValid(OrderStructs.Maker makerBid, bytes4 functionSelector) external pure returns (bool isValid, bytes4 errorSelector) -``` - -#### Parameters - -| Name | Type | Description | -| ---------------- | ------------------ | ----------- | -| makerBid | OrderStructs.Maker | undefined | -| functionSelector | bytes4 | undefined | - -#### Returns - -| Name | Type | Description | -| ------------- | ------ | ----------- | -| isValid | bool | undefined | -| errorSelector | bytes4 | undefined | - -## Errors - -### CollectionTypeInvalid - -```solidity -error CollectionTypeInvalid() -``` - -It is returned is the collection type is not supported. For instance if the strategy is specific to hypercerts. - -### MerkleProofInvalid - -```solidity -error MerkleProofInvalid() -``` - -It is returned if the merkle proof provided is invalid. - -### OrderInvalid - -```solidity -error OrderInvalid() -``` - -It is returned if the order is permanently invalid. There may be an issue with the order formatting. diff --git a/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyHypercertDutchAuction.md b/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyHypercertDutchAuction.md deleted file mode 100644 index a1c37e73..00000000 --- a/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyHypercertDutchAuction.md +++ /dev/null @@ -1,91 +0,0 @@ -# StrategyHypercertDutchAuction - -_LooksRare protocol team (👀,💎); bitbeckers_ - -> StrategyHypercertDutchAuction - -This contract offers a single execution strategy for users to create Dutch auctions for hypercerts. - -## Methods - -### executeStrategyWithTakerBid - -```solidity -function executeStrategyWithTakerBid(OrderStructs.Taker takerBid, OrderStructs.Maker makerAsk) external view returns (uint256 price, uint256[] itemIds, uint256[] amounts, bool isNonceInvalidated) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------------------ | ----------- | -| takerBid | OrderStructs.Taker | undefined | -| makerAsk | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| price | uint256 | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| isNonceInvalidated | bool | undefined | - -### isLooksRareV2Strategy - -```solidity -function isLooksRareV2Strategy() external pure returns (bool) -``` - -This function acts as a safety check for the protocol's owner when adding new execution strategies. - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ---------------------------------------------- | -| \_0 | bool | Whether it is a LooksRare V2 protocol strategy | - -### isMakerOrderValid - -```solidity -function isMakerOrderValid(OrderStructs.Maker makerAsk, bytes4 functionSelector) external view returns (bool isValid, bytes4 errorSelector) -``` - -#### Parameters - -| Name | Type | Description | -| ---------------- | ------------------ | ----------- | -| makerAsk | OrderStructs.Maker | undefined | -| functionSelector | bytes4 | undefined | - -#### Returns - -| Name | Type | Description | -| ------------- | ------ | ----------- | -| isValid | bool | undefined | -| errorSelector | bytes4 | undefined | - -## Errors - -### BidTooLow - -```solidity -error BidTooLow() -``` - -It is returned if the bid price is too low for the ask user. - -### CollectionTypeInvalid - -```solidity -error CollectionTypeInvalid() -``` - -It is returned is the collection type is not supported. For instance if the strategy is specific to hypercerts. - -### OrderInvalid - -```solidity -error OrderInvalid() -``` - -It is returned if the order is permanently invalid. There may be an issue with the order formatting. diff --git a/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyHypercertFractionOffer.md b/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyHypercertFractionOffer.md deleted file mode 100644 index 30b21a56..00000000 --- a/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyHypercertFractionOffer.md +++ /dev/null @@ -1,123 +0,0 @@ -# StrategyHypercertFractionOffer - -_LooksRare protocol team (👀,💎); bitbeckers;_ - -> StrategyHypercertFractionOffer - -This contract offers a single execution strategy for users to bid on a specific amount of units in an hypercerts that's for sale. Example: Alice has 100 units of a hypercert (id: 42) for sale at a minimum price of 0.001 ETH/unit. Bob wants to buy 10 units. Bob can create a taker bid order with the following parameters: - unitAmount: 10000 // in `additionalParameters` - pricePerUnit: 10 // amount of accepted token paid; in `additionalParameters` - proof: [0xsdadfa....s9fds,0xdasdas...asff8e] // proof to the root defined in the maker ask; in `additionalParameters` This strategy will validate the available units and the price.This contract offers execution strategies for users to create maker bid offers for items in a collection. There are three available functions: 1. executeHypercertFractionStrategyWithTakerBid --> it applies to all itemIds in a collection 2. executeHypercertFractionStrategyWithTakerBidWithAllowlist --> it allows adding merkle proof criteria for accounts.The bidder can only bid on 1 item id at a time. 1. If Hypercert, the amount must be 1 because the fractions are NFTs. - -_Use cases can include tiered pricing; think early bird tickets._ - -## Methods - -### executeHypercertFractionStrategyWithTakerBid - -```solidity -function executeHypercertFractionStrategyWithTakerBid(OrderStructs.Taker takerBid, OrderStructs.Maker makerAsk) external view returns (uint256 price, uint256[] itemIds, uint256[] amounts, bool isNonceInvalidated) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------------------ | ----------- | -| takerBid | OrderStructs.Taker | undefined | -| makerAsk | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| price | uint256 | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| isNonceInvalidated | bool | undefined | - -### executeHypercertFractionStrategyWithTakerBidWithAllowlist - -```solidity -function executeHypercertFractionStrategyWithTakerBidWithAllowlist(OrderStructs.Taker takerBid, OrderStructs.Maker makerAsk) external view returns (uint256 price, uint256[] itemIds, uint256[] amounts, bool isNonceInvalidated) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------------------ | ----------- | -| takerBid | OrderStructs.Taker | undefined | -| makerAsk | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| price | uint256 | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| isNonceInvalidated | bool | undefined | - -### isLooksRareV2Strategy - -```solidity -function isLooksRareV2Strategy() external pure returns (bool) -``` - -This function acts as a safety check for the protocol's owner when adding new execution strategies. - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ---------------------------------------------- | -| \_0 | bool | Whether it is a LooksRare V2 protocol strategy | - -### isMakerOrderValid - -```solidity -function isMakerOrderValid(OrderStructs.Maker makerAsk, bytes4 functionSelector) external view returns (bool isValid, bytes4 errorSelector) -``` - -#### Parameters - -| Name | Type | Description | -| ---------------- | ------------------ | ----------- | -| makerAsk | OrderStructs.Maker | undefined | -| functionSelector | bytes4 | undefined | - -#### Returns - -| Name | Type | Description | -| ------------- | ------ | ----------- | -| isValid | bool | undefined | -| errorSelector | bytes4 | undefined | - -## Errors - -### AmountInvalid - -```solidity -error AmountInvalid() -``` - -It is returned if the amount is invalid. For ERC721 and Hypercert, any number that is not 1. For ERC1155, if amount is 0. - -### LengthsInvalid - -```solidity -error LengthsInvalid() -``` - -It is returned if there is either a mismatch or an error in the length of the array(s). - -### MerkleProofInvalid - -```solidity -error MerkleProofInvalid() -``` - -It is returned if the merkle proof provided is invalid. - -### OrderInvalid - -```solidity -error OrderInvalid() -``` - -It is returned if the order is permanently invalid. There may be an issue with the order formatting. diff --git a/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyItemIdsRange.md b/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyItemIdsRange.md deleted file mode 100644 index 6a1f0cd5..00000000 --- a/docs/docs/developer/api/contracts/marketplace/executionStrategies/StrategyItemIdsRange.md +++ /dev/null @@ -1,75 +0,0 @@ -# StrategyItemIdsRange - -_LooksRare protocol team (👀,💎)_ - -> StrategyItemIdsRange - -This contract offers a single execution strategy for users to bid on a specific amount of items in a range bounded by 2 item ids. - -## Methods - -### executeStrategyWithTakerAsk - -```solidity -function executeStrategyWithTakerAsk(OrderStructs.Taker takerAsk, OrderStructs.Maker makerBid) external pure returns (uint256 price, uint256[] itemIds, uint256[] amounts, bool isNonceInvalidated) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------------------ | ----------- | -| takerAsk | OrderStructs.Taker | undefined | -| makerBid | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| price | uint256 | undefined | -| itemIds | uint256[] | undefined | -| amounts | uint256[] | undefined | -| isNonceInvalidated | bool | undefined | - -### isLooksRareV2Strategy - -```solidity -function isLooksRareV2Strategy() external pure returns (bool) -``` - -This function acts as a safety check for the protocol's owner when adding new execution strategies. - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ---------------------------------------------- | -| \_0 | bool | Whether it is a LooksRare V2 protocol strategy | - -### isMakerOrderValid - -```solidity -function isMakerOrderValid(OrderStructs.Maker makerBid, bytes4 functionSelector) external pure returns (bool isValid, bytes4 errorSelector) -``` - -#### Parameters - -| Name | Type | Description | -| ---------------- | ------------------ | ----------- | -| makerBid | OrderStructs.Maker | undefined | -| functionSelector | bytes4 | undefined | - -#### Returns - -| Name | Type | Description | -| ------------- | ------ | ----------- | -| isValid | bool | undefined | -| errorSelector | bytes4 | undefined | - -## Errors - -### OrderInvalid - -```solidity -error OrderInvalid() -``` - -It is returned if the order is permanently invalid. There may be an issue with the order formatting. diff --git a/docs/docs/developer/api/contracts/marketplace/helpers/OrderValidatorV2A.md b/docs/docs/developer/api/contracts/marketplace/helpers/OrderValidatorV2A.md deleted file mode 100644 index 76918fc5..00000000 --- a/docs/docs/developer/api/contracts/marketplace/helpers/OrderValidatorV2A.md +++ /dev/null @@ -1,215 +0,0 @@ -# OrderValidatorV2A - -_LooksRare protocol team (👀,💎); bitbeckers_ - -> OrderValidatorV2A - -This contract is used to check the validity of maker ask/bid orders in the LooksRareProtocol (v2). It performs checks for: 1. Protocol allowlist issues (i.e. currency or strategy not allowed) 2. Maker order-specific issues (e.g., order invalid due to format or other-strategy specific issues) 3. Nonce related issues (e.g., nonce executed or cancelled) 4. Signature related issues and merkle tree parameters 5. Timestamp related issues (e.g., order expired) 6. Asset-related issues for ERC20/ERC721/ERC1155/Hypercerts (approvals and balances) 7. Collection-type suggestions 8. Transfer manager related issues 9. Creator fee related issues (e.g., creator fee too high, ERC2981 bundles) - -_This version does not handle strategies with partial fills._ - -## Methods - -### CRITERIA_GROUPS - -```solidity -function CRITERIA_GROUPS() external view returns (uint256) -``` - -Number of distinct criteria groups checked to evaluate the validity of an order. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -### ERC1155_INTERFACE_ID - -```solidity -function ERC1155_INTERFACE_ID() external view returns (bytes4) -``` - -ERC1155 interfaceId. - -#### Returns - -| Name | Type | Description | -| ---- | ------ | ----------- | -| \_0 | bytes4 | undefined | - -### ERC721_INTERFACE_ID_1 - -```solidity -function ERC721_INTERFACE_ID_1() external view returns (bytes4) -``` - -ERC721 potential interfaceId. - -#### Returns - -| Name | Type | Description | -| ---- | ------ | ----------- | -| \_0 | bytes4 | undefined | - -### ERC721_INTERFACE_ID_2 - -```solidity -function ERC721_INTERFACE_ID_2() external view returns (bytes4) -``` - -ERC721 potential interfaceId. - -#### Returns - -| Name | Type | Description | -| ---- | ------ | ----------- | -| \_0 | bytes4 | undefined | - -### HYPERCERT_INTERFACE_ID - -```solidity -function HYPERCERT_INTERFACE_ID() external view returns (bytes4) -``` - -Hypercert interfaceId - -#### Returns - -| Name | Type | Description | -| ---- | ------ | ----------- | -| \_0 | bytes4 | undefined | - -### MAGIC_VALUE_ORDER_NONCE_EXECUTED - -```solidity -function MAGIC_VALUE_ORDER_NONCE_EXECUTED() external view returns (bytes32) -``` - -Magic value nonce returned if executed (or cancelled). - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### checkMakerOrderValidity - -```solidity -function checkMakerOrderValidity(OrderStructs.Maker makerOrder, bytes signature, OrderStructs.MerkleTree merkleTree) external view returns (uint256[9] validationCodes) -``` - -#### Parameters - -| Name | Type | Description | -| ---------- | ----------------------- | ----------- | -| makerOrder | OrderStructs.Maker | undefined | -| signature | bytes | undefined | -| merkleTree | OrderStructs.MerkleTree | undefined | - -#### Returns - -| Name | Type | Description | -| --------------- | ---------- | ----------- | -| validationCodes | uint256[9] | undefined | - -### checkMultipleMakerOrderValidities - -```solidity -function checkMultipleMakerOrderValidities(OrderStructs.Maker[] makerOrders, bytes[] signatures, OrderStructs.MerkleTree[] merkleTrees) external view returns (uint256[9][] validationCodes) -``` - -#### Parameters - -| Name | Type | Description | -| ----------- | ------------------------- | ----------- | -| makerOrders | OrderStructs.Maker[] | undefined | -| signatures | bytes[] | undefined | -| merkleTrees | OrderStructs.MerkleTree[] | undefined | - -#### Returns - -| Name | Type | Description | -| --------------- | ------------ | ----------- | -| validationCodes | uint256[9][] | undefined | - -### creatorFeeManager - -```solidity -function creatorFeeManager() external view returns (contract ICreatorFeeManager) -``` - -CreatorFeeManager. - -#### Returns - -| Name | Type | Description | -| ---- | --------------------------- | ----------- | -| \_0 | contract ICreatorFeeManager | undefined | - -### deriveProtocolParameters - -```solidity -function deriveProtocolParameters() external nonpayable -``` - -Derive protocol parameters. Anyone can call this function. - -_It allows adjusting if the domain separator or creator fee manager address were to change._ - -### domainSeparator - -```solidity -function domainSeparator() external view returns (bytes32) -``` - -LooksRareProtocol domain separator. - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### looksRareProtocol - -```solidity -function looksRareProtocol() external view returns (contract LooksRareProtocol) -``` - -LooksRareProtocol. - -#### Returns - -| Name | Type | Description | -| ---- | -------------------------- | ----------- | -| \_0 | contract LooksRareProtocol | undefined | - -### maxCreatorFeeBp - -```solidity -function maxCreatorFeeBp() external view returns (uint256) -``` - -Maximum creator fee (in basis point). - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -### transferManager - -```solidity -function transferManager() external view returns (contract TransferManager) -``` - -TransferManager - -#### Returns - -| Name | Type | Description | -| ---- | ------------------------ | ----------- | -| \_0 | contract TransferManager | undefined | diff --git a/docs/docs/developer/api/contracts/marketplace/helpers/ProtocolHelpers.md b/docs/docs/developer/api/contracts/marketplace/helpers/ProtocolHelpers.md deleted file mode 100644 index 91be29a9..00000000 --- a/docs/docs/developer/api/contracts/marketplace/helpers/ProtocolHelpers.md +++ /dev/null @@ -1,159 +0,0 @@ -# ProtocolHelpers - -_LooksRare protocol team (👀,💎)_ - -> ProtocolHelpers - -This contract contains helper view functions for order creation. - -## Methods - -### computeDigestMerkleTree - -```solidity -function computeDigestMerkleTree(OrderStructs.MerkleTree merkleTree) external view returns (bytes32 digest) -``` - -#### Parameters - -| Name | Type | Description | -| ---------- | ----------------------- | ----------- | -| merkleTree | OrderStructs.MerkleTree | undefined | - -#### Returns - -| Name | Type | Description | -| ------ | ------- | ----------- | -| digest | bytes32 | undefined | - -### computeMakerDigest - -```solidity -function computeMakerDigest(OrderStructs.Maker maker) external view returns (bytes32 digest) -``` - -#### Parameters - -| Name | Type | Description | -| ----- | ------------------ | ----------- | -| maker | OrderStructs.Maker | undefined | - -#### Returns - -| Name | Type | Description | -| ------ | ------- | ----------- | -| digest | bytes32 | undefined | - -### looksRareProtocol - -```solidity -function looksRareProtocol() external view returns (contract LooksRareProtocol) -``` - -#### Returns - -| Name | Type | Description | -| ---- | -------------------------- | ----------- | -| \_0 | contract LooksRareProtocol | undefined | - -### verifyMakerSignature - -```solidity -function verifyMakerSignature(OrderStructs.Maker maker, bytes makerSignature, address signer) external view returns (bool) -``` - -#### Parameters - -| Name | Type | Description | -| -------------- | ------------------ | ----------- | -| maker | OrderStructs.Maker | undefined | -| makerSignature | bytes | undefined | -| signer | address | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### verifyMerkleTree - -```solidity -function verifyMerkleTree(OrderStructs.MerkleTree merkleTree, bytes makerSignature, address signer) external view returns (bool) -``` - -#### Parameters - -| Name | Type | Description | -| -------------- | ----------------------- | ----------- | -| merkleTree | OrderStructs.MerkleTree | undefined | -| makerSignature | bytes | undefined | -| signer | address | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -## Errors - -### NullSignerAddress - -```solidity -error NullSignerAddress() -``` - -It is emitted if the signer is null. - -### SignatureEOAInvalid - -```solidity -error SignatureEOAInvalid() -``` - -It is emitted if the signature is invalid for an EOA (the address recovered is not the expected one). - -### SignatureERC1271Invalid - -```solidity -error SignatureERC1271Invalid() -``` - -It is emitted if the signature is invalid for a ERC1271 contract signer. - -### SignatureLengthInvalid - -```solidity -error SignatureLengthInvalid(uint256 length) -``` - -It is emitted if the signature's length is neither 64 nor 65 bytes. - -#### Parameters - -| Name | Type | Description | -| ------ | ------- | ----------- | -| length | uint256 | undefined | - -### SignatureParameterSInvalid - -```solidity -error SignatureParameterSInvalid() -``` - -It is emitted if the signature is invalid due to S parameter. - -### SignatureParameterVInvalid - -```solidity -error SignatureParameterVInvalid(uint8 v) -``` - -It is emitted if the signature is invalid due to V parameter. - -#### Parameters - -| Name | Type | Description | -| ---- | ----- | ----------- | -| v | uint8 | undefined | diff --git a/docs/docs/developer/api/contracts/marketplace/interfaces/ICreatorFeeManager.md b/docs/docs/developer/api/contracts/marketplace/interfaces/ICreatorFeeManager.md deleted file mode 100644 index b832744e..00000000 --- a/docs/docs/developer/api/contracts/marketplace/interfaces/ICreatorFeeManager.md +++ /dev/null @@ -1,60 +0,0 @@ -# ICreatorFeeManager - -_LooksRare protocol team (👀,💎)_ - -> ICreatorFeeManager - -## Methods - -### royaltyFeeRegistry - -```solidity -function royaltyFeeRegistry() external view returns (contract IRoyaltyFeeRegistry royaltyFeeRegistry) -``` - -It returns the royalty fee registry address/interface. - -#### Returns - -| Name | Type | Description | -| ------------------ | ---------------------------- | ------------------------------------- | -| royaltyFeeRegistry | contract IRoyaltyFeeRegistry | Interface of the royalty fee registry | - -### viewCreatorFeeInfo - -```solidity -function viewCreatorFeeInfo(address collection, uint256 price, uint256[] itemIds) external view returns (address creator, uint256 creatorFeeAmount) -``` - -This function returns the creator address and calculates the creator fee amount. - -#### Parameters - -| Name | Type | Description | -| ---------- | --------- | ------------------ | -| collection | address | Collection address | -| price | uint256 | Transaction price | -| itemIds | uint256[] | Array of item ids | - -#### Returns - -| Name | Type | Description | -| ---------------- | ------- | ------------------ | -| creator | address | Creator address | -| creatorFeeAmount | uint256 | Creator fee amount | - -## Errors - -### BundleEIP2981NotAllowed - -```solidity -error BundleEIP2981NotAllowed(address collection) -``` - -It is returned if the bundle contains multiple itemIds with different creator fee structure. - -#### Parameters - -| Name | Type | Description | -| ---------- | ------- | ----------- | -| collection | address | undefined | diff --git a/docs/docs/developer/api/contracts/marketplace/interfaces/ICurrencyManager.md b/docs/docs/developer/api/contracts/marketplace/interfaces/ICurrencyManager.md deleted file mode 100644 index da683d8c..00000000 --- a/docs/docs/developer/api/contracts/marketplace/interfaces/ICurrencyManager.md +++ /dev/null @@ -1,22 +0,0 @@ -# ICurrencyManager - -_LooksRare protocol team (👀,💎)_ - -> ICurrencyManager - -## Events - -### CurrencyStatusUpdated - -```solidity -event CurrencyStatusUpdated(address currency, bool isAllowed) -``` - -It is emitted if the currency status in the allowlist is updated. - -#### Parameters - -| Name | Type | Description | -| --------- | ------- | ----------------------------------- | -| currency | address | Currency address (address(0) = ETH) | -| isAllowed | bool | Whether the currency is allowed | diff --git a/docs/docs/developer/api/contracts/marketplace/interfaces/IExecutionManager.md b/docs/docs/developer/api/contracts/marketplace/interfaces/IExecutionManager.md deleted file mode 100644 index 0e86c75b..00000000 --- a/docs/docs/developer/api/contracts/marketplace/interfaces/IExecutionManager.md +++ /dev/null @@ -1,99 +0,0 @@ -# IExecutionManager - -_LooksRare protocol team (👀,💎)_ - -> IExecutionManager - -## Events - -### NewCreatorFeeManager - -```solidity -event NewCreatorFeeManager(address creatorFeeManager) -``` - -It is issued when there is a new creator fee manager. - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | -------------------------------------- | -| creatorFeeManager | address | Address of the new creator fee manager | - -### NewMaxCreatorFeeBp - -```solidity -event NewMaxCreatorFeeBp(uint256 maxCreatorFeeBp) -``` - -It is issued when there is a new maximum creator fee (in basis point). - -#### Parameters - -| Name | Type | Description | -| --------------- | ------- | ---------------------------------------- | -| maxCreatorFeeBp | uint256 | New maximum creator fee (in basis point) | - -### NewProtocolFeeRecipient - -```solidity -event NewProtocolFeeRecipient(address protocolFeeRecipient) -``` - -It is issued when there is a new protocol fee recipient address. - -#### Parameters - -| Name | Type | Description | -| -------------------- | ------- | ----------------------------------------- | -| protocolFeeRecipient | address | Address of the new protocol fee recipient | - -## Errors - -### CreatorFeeBpTooHigh - -```solidity -error CreatorFeeBpTooHigh() -``` - -It is returned if the creator fee (in basis point) is too high. - -### NewProtocolFeeRecipientCannotBeNullAddress - -```solidity -error NewProtocolFeeRecipientCannotBeNullAddress() -``` - -It is returned if the new protocol fee recipient is set to address(0). - -### NoSelectorForStrategy - -```solidity -error NoSelectorForStrategy() -``` - -It is returned if there is no selector for maker ask/bid for a given strategyId, depending on the quote type. - -### OutsideOfTimeRange - -```solidity -error OutsideOfTimeRange() -``` - -It is returned if the current block timestamp is not between start and end times in the maker order. - -### StrategyNotAvailable - -```solidity -error StrategyNotAvailable(uint256 strategyId) -``` - -It is returned if the strategy id has no implementation. - -_It is returned if there is no implementation address and the strategyId is strictly greater than 0._ - -#### Parameters - -| Name | Type | Description | -| ---------- | ------- | ----------- | -| strategyId | uint256 | undefined | diff --git a/docs/docs/developer/api/contracts/marketplace/interfaces/IHypercert1155Token.md b/docs/docs/developer/api/contracts/marketplace/interfaces/IHypercert1155Token.md deleted file mode 100644 index 249c98d8..00000000 --- a/docs/docs/developer/api/contracts/marketplace/interfaces/IHypercert1155Token.md +++ /dev/null @@ -1,72 +0,0 @@ -# IHypercert1155Token - -## Methods - -### isApprovedForAll - -```solidity -function isApprovedForAll(address account, address operator) external view returns (bool) -``` - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| account | address | undefined | -| operator | address | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### ownerOf - -```solidity -function ownerOf(uint256 tokenId) external view returns (address) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| tokenId | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### splitFraction - -```solidity -function splitFraction(address to, uint256 tokenID, uint256[] _values) external nonpayable -``` - -#### Parameters - -| Name | Type | Description | -| -------- | --------- | ----------- | -| to | address | undefined | -| tokenID | uint256 | undefined | -| \_values | uint256[] | undefined | - -### unitsOf - -```solidity -function unitsOf(uint256 tokenId) external view returns (uint256) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| tokenId | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | diff --git a/docs/docs/developer/api/contracts/marketplace/interfaces/IImmutableCreate2Factory.md b/docs/docs/developer/api/contracts/marketplace/interfaces/IImmutableCreate2Factory.md deleted file mode 100644 index 393cb24b..00000000 --- a/docs/docs/developer/api/contracts/marketplace/interfaces/IImmutableCreate2Factory.md +++ /dev/null @@ -1,41 +0,0 @@ -# IImmutableCreate2Factory - -## Methods - -### findCreate2Address - -```solidity -function findCreate2Address(bytes32 salt, bytes initializationCode) external view returns (address deploymentAddress) -``` - -#### Parameters - -| Name | Type | Description | -| ------------------ | ------- | ----------- | -| salt | bytes32 | undefined | -| initializationCode | bytes | undefined | - -#### Returns - -| Name | Type | Description | -| ----------------- | ------- | ----------- | -| deploymentAddress | address | undefined | - -### safeCreate2 - -```solidity -function safeCreate2(bytes32 salt, bytes initializationCode) external payable returns (address deploymentAddress) -``` - -#### Parameters - -| Name | Type | Description | -| ------------------ | ------- | ----------- | -| salt | bytes32 | undefined | -| initializationCode | bytes | undefined | - -#### Returns - -| Name | Type | Description | -| ----------------- | ------- | ----------- | -| deploymentAddress | address | undefined | diff --git a/docs/docs/developer/api/contracts/marketplace/interfaces/ILooksRareProtocol.md b/docs/docs/developer/api/contracts/marketplace/interfaces/ILooksRareProtocol.md deleted file mode 100644 index e7414f54..00000000 --- a/docs/docs/developer/api/contracts/marketplace/interfaces/ILooksRareProtocol.md +++ /dev/null @@ -1,157 +0,0 @@ -# ILooksRareProtocol - -_LooksRare protocol team (👀,💎)_ - -> ILooksRareProtocol - -## Methods - -### executeMultipleTakerBids - -```solidity -function executeMultipleTakerBids(OrderStructs.Taker[] takerBids, OrderStructs.Maker[] makerAsks, bytes[] makerSignatures, OrderStructs.MerkleTree[] merkleTrees, bool isAtomic) external payable -``` - -#### Parameters - -| Name | Type | Description | -| --------------- | ------------------------- | ----------- | -| takerBids | OrderStructs.Taker[] | undefined | -| makerAsks | OrderStructs.Maker[] | undefined | -| makerSignatures | bytes[] | undefined | -| merkleTrees | OrderStructs.MerkleTree[] | undefined | -| isAtomic | bool | undefined | - -### executeTakerAsk - -```solidity -function executeTakerAsk(OrderStructs.Taker takerAsk, OrderStructs.Maker makerBid, bytes makerSignature, OrderStructs.MerkleTree merkleTree) external nonpayable -``` - -#### Parameters - -| Name | Type | Description | -| -------------- | ----------------------- | ----------- | -| takerAsk | OrderStructs.Taker | undefined | -| makerBid | OrderStructs.Maker | undefined | -| makerSignature | bytes | undefined | -| merkleTree | OrderStructs.MerkleTree | undefined | - -### executeTakerBid - -```solidity -function executeTakerBid(OrderStructs.Taker takerBid, OrderStructs.Maker makerAsk, bytes makerSignature, OrderStructs.MerkleTree merkleTree) external payable -``` - -#### Parameters - -| Name | Type | Description | -| -------------- | ----------------------- | ----------- | -| takerBid | OrderStructs.Taker | undefined | -| makerAsk | OrderStructs.Maker | undefined | -| makerSignature | bytes | undefined | -| merkleTree | OrderStructs.MerkleTree | undefined | - -## Events - -### NewDomainSeparator - -```solidity -event NewDomainSeparator() -``` - -It is emitted if there is a change in the domain separator. - -### NewGasLimitETHTransfer - -```solidity -event NewGasLimitETHTransfer(uint256 gasLimitETHTransfer) -``` - -It is emitted when there is a new gas limit for a ETH transfer (before it is wrapped to WETH). - -#### Parameters - -| Name | Type | Description | -| ------------------- | ------- | ----------------------------- | -| gasLimitETHTransfer | uint256 | Gas limit for an ETH transfer | - -### TakerAsk - -```solidity -event TakerAsk(ILooksRareProtocol.NonceInvalidationParameters nonceInvalidationParameters, address askUser, address bidUser, uint256 strategyId, address currency, address collection, uint256[] itemIds, uint256[] amounts, address[2] feeRecipients, uint256[3] feeAmounts) -``` - -It is emitted when a taker ask transaction is completed. - -#### Parameters - -| Name | Type | Description | -| --------------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| nonceInvalidationParameters | ILooksRareProtocol.NonceInvalidationParameters | Struct about nonce invalidation parameters | -| askUser | address | Address of the ask user | -| bidUser | address | Address of the bid user | -| strategyId | uint256 | Id of the strategy | -| currency | address | Address of the currency | -| collection | address | Address of the collection | -| itemIds | uint256[] | Array of item ids | -| amounts | uint256[] | Array of amounts (for item ids) | -| feeRecipients | address[2] | Array of fee recipients feeRecipients[0] User who receives the proceeds of the sale (it can be the taker ask user or different) feeRecipients[1] Creator fee recipient (if none, address(0)) | -| feeAmounts | uint256[3] | Array of fee amounts feeAmounts[0] Fee amount for the user receiving sale proceeds feeAmounts[1] Creator fee amount feeAmounts[2] Protocol fee amount prior to adjustment for a potential affiliate payment | - -### TakerBid - -```solidity -event TakerBid(ILooksRareProtocol.NonceInvalidationParameters nonceInvalidationParameters, address bidUser, address bidRecipient, uint256 strategyId, address currency, address collection, uint256[] itemIds, uint256[] amounts, address[2] feeRecipients, uint256[3] feeAmounts) -``` - -It is emitted when a taker bid transaction is completed. - -#### Parameters - -| Name | Type | Description | -| --------------------------- | ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| nonceInvalidationParameters | ILooksRareProtocol.NonceInvalidationParameters | Struct about nonce invalidation parameters | -| bidUser | address | Address of the bid user | -| bidRecipient | address | Address of the recipient of the bid | -| strategyId | uint256 | Id of the strategy | -| currency | address | Address of the currency | -| collection | address | Address of the collection | -| itemIds | uint256[] | Array of item ids | -| amounts | uint256[] | Array of amounts (for item ids) | -| feeRecipients | address[2] | Array of fee recipients feeRecipients[0] User who receives the proceeds of the sale (it is the maker ask user) feeRecipients[1] Creator fee recipient (if none, address(0)) | -| feeAmounts | uint256[3] | Array of fee amounts feeAmounts[0] Fee amount for the user receiving sale proceeds feeAmounts[1] Creator fee amount feeAmounts[2] Protocol fee amount prior to adjustment for a potential affiliate payment | - -## Errors - -### ChainIdInvalid - -```solidity -error ChainIdInvalid() -``` - -It is returned if the domain separator should change. - -### NewGasLimitETHTransferTooLow - -```solidity -error NewGasLimitETHTransferTooLow() -``` - -It is returned if the gas limit for a standard ETH transfer is too low. - -### NoncesInvalid - -```solidity -error NoncesInvalid() -``` - -It is returned if the nonces are invalid. - -### SameDomainSeparator - -```solidity -error SameDomainSeparator() -``` - -It is returned if the domain separator cannot be updated (i.e. the chainId is the same). diff --git a/docs/docs/developer/api/contracts/marketplace/interfaces/INonceManager.md b/docs/docs/developer/api/contracts/marketplace/interfaces/INonceManager.md deleted file mode 100644 index eaa3f977..00000000 --- a/docs/docs/developer/api/contracts/marketplace/interfaces/INonceManager.md +++ /dev/null @@ -1,53 +0,0 @@ -# INonceManager - -_LooksRare protocol team (👀,💎)_ - -> INonceManager - -## Events - -### NewBidAskNonces - -```solidity -event NewBidAskNonces(address user, uint256 bidNonce, uint256 askNonce) -``` - -It is emitted when there is an update of the global bid/ask nonces for a user. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ------------------- | -| user | address | Address of the user | -| bidNonce | uint256 | New bid nonce | -| askNonce | uint256 | New ask nonce | - -### OrderNoncesCancelled - -```solidity -event OrderNoncesCancelled(address user, uint256[] orderNonces) -``` - -It is emitted when order nonces are cancelled for a user. - -#### Parameters - -| Name | Type | Description | -| ----------- | --------- | ------------------------------- | -| user | address | Address of the user | -| orderNonces | uint256[] | Array of order nonces cancelled | - -### SubsetNoncesCancelled - -```solidity -event SubsetNoncesCancelled(address user, uint256[] subsetNonces) -``` - -It is emitted when subset nonces are cancelled for a user. - -#### Parameters - -| Name | Type | Description | -| ------------ | --------- | -------------------------------- | -| user | address | Address of the user | -| subsetNonces | uint256[] | Array of subset nonces cancelled | diff --git a/docs/docs/developer/api/contracts/marketplace/interfaces/IRoyaltyFeeRegistry.md b/docs/docs/developer/api/contracts/marketplace/interfaces/IRoyaltyFeeRegistry.md deleted file mode 100644 index 5ed0ef6c..00000000 --- a/docs/docs/developer/api/contracts/marketplace/interfaces/IRoyaltyFeeRegistry.md +++ /dev/null @@ -1,29 +0,0 @@ -# IRoyaltyFeeRegistry - -_LooksRare protocol team (👀,💎)_ - -> IRoyaltyFeeRegistry - -## Methods - -### royaltyInfo - -```solidity -function royaltyInfo(address collection, uint256 price) external view returns (address receiver, uint256 royaltyFee) -``` - -This function returns the royalty information for a collection at a given transaction price. - -#### Parameters - -| Name | Type | Description | -| ---------- | ------- | ------------------ | -| collection | address | Collection address | -| price | uint256 | Transaction price | - -#### Returns - -| Name | Type | Description | -| ---------- | ------- | ------------------ | -| receiver | address | Receiver address | -| royaltyFee | uint256 | Royalty fee amount | diff --git a/docs/docs/developer/api/contracts/marketplace/interfaces/IStrategy.md b/docs/docs/developer/api/contracts/marketplace/interfaces/IStrategy.md deleted file mode 100644 index 2b4a45bc..00000000 --- a/docs/docs/developer/api/contracts/marketplace/interfaces/IStrategy.md +++ /dev/null @@ -1,41 +0,0 @@ -# IStrategy - -_LooksRare protocol team (👀,💎)_ - -> IStrategy - -## Methods - -### isLooksRareV2Strategy - -```solidity -function isLooksRareV2Strategy() external pure returns (bool isStrategy) -``` - -This function acts as a safety check for the protocol's owner when adding new execution strategies. - -#### Returns - -| Name | Type | Description | -| ---------- | ---- | ---------------------------------------------- | -| isStrategy | bool | Whether it is a LooksRare V2 protocol strategy | - -### isMakerOrderValid - -```solidity -function isMakerOrderValid(OrderStructs.Maker makerOrder, bytes4 functionSelector) external view returns (bool isValid, bytes4 errorSelector) -``` - -#### Parameters - -| Name | Type | Description | -| ---------------- | ------------------ | ----------- | -| makerOrder | OrderStructs.Maker | undefined | -| functionSelector | bytes4 | undefined | - -#### Returns - -| Name | Type | Description | -| ------------- | ------ | ----------- | -| isValid | bool | undefined | -| errorSelector | bytes4 | undefined | diff --git a/docs/docs/developer/api/contracts/marketplace/interfaces/IStrategyManager.md b/docs/docs/developer/api/contracts/marketplace/interfaces/IStrategyManager.md deleted file mode 100644 index ae6ea7b1..00000000 --- a/docs/docs/developer/api/contracts/marketplace/interfaces/IStrategyManager.md +++ /dev/null @@ -1,84 +0,0 @@ -# IStrategyManager - -_LooksRare protocol team (👀,💎)_ - -> IStrategyManager - -## Events - -### NewStrategy - -```solidity -event NewStrategy(uint256 strategyId, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp, uint16 maxProtocolFeeBp, bytes4 selector, bool isMakerBid, address implementation) -``` - -It is emitted when a new strategy is added. - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | ---------------------------------------------------- | -| strategyId | uint256 | Id of the new strategy | -| standardProtocolFeeBp | uint16 | Standard protocol fee (in basis point) | -| minTotalFeeBp | uint16 | Minimum total fee (in basis point) | -| maxProtocolFeeBp | uint16 | Maximum protocol fee (in basis point) | -| selector | bytes4 | Function selector for the transaction to be executed | -| isMakerBid | bool | Whether the strategyId is for maker bid | -| implementation | address | Address of the implementation of the strategy | - -### StrategyUpdated - -```solidity -event StrategyUpdated(uint256 strategyId, bool isActive, uint16 standardProtocolFeeBp, uint16 minTotalFeeBp) -``` - -It is emitted when an existing strategy is updated. - -#### Parameters - -| Name | Type | Description | -| --------------------- | ------- | -------------------------------------------------------- | -| strategyId | uint256 | Id of the strategy | -| isActive | bool | Whether the strategy is active (or not) after the update | -| standardProtocolFeeBp | uint16 | Standard protocol fee (in basis point) | -| minTotalFeeBp | uint16 | Minimum total fee (in basis point) | - -## Errors - -### NotV2Strategy - -```solidity -error NotV2Strategy() -``` - -If the strategy has not set properly its implementation contract. - -_It can only be returned for owner operations._ - -### StrategyHasNoSelector - -```solidity -error StrategyHasNoSelector() -``` - -It is returned if the strategy has no selector. - -_It can only be returned for owner operations._ - -### StrategyNotUsed - -```solidity -error StrategyNotUsed() -``` - -It is returned if the strategyId is invalid. - -### StrategyProtocolFeeTooHigh - -```solidity -error StrategyProtocolFeeTooHigh() -``` - -It is returned if the strategy's protocol fee is too high. - -_It can only be returned for owner operations._ diff --git a/docs/docs/developer/api/contracts/marketplace/interfaces/ITransferManager.md b/docs/docs/developer/api/contracts/marketplace/interfaces/ITransferManager.md deleted file mode 100644 index 3ba8ca81..00000000 --- a/docs/docs/developer/api/contracts/marketplace/interfaces/ITransferManager.md +++ /dev/null @@ -1,111 +0,0 @@ -# ITransferManager - -_LooksRare protocol team (👀,💎)_ - -> ITransferManager - -## Events - -### ApprovalsGranted - -```solidity -event ApprovalsGranted(address user, address[] operators) -``` - -It is emitted if operators' approvals to transfer NFTs are granted by a user. - -#### Parameters - -| Name | Type | Description | -| --------- | --------- | --------------------------- | -| user | address | Address of the user | -| operators | address[] | Array of operator addresses | - -### ApprovalsRemoved - -```solidity -event ApprovalsRemoved(address user, address[] operators) -``` - -It is emitted if operators' approvals to transfer NFTs are revoked by a user. - -#### Parameters - -| Name | Type | Description | -| --------- | --------- | --------------------------- | -| user | address | Address of the user | -| operators | address[] | Array of operator addresses | - -### OperatorAllowed - -```solidity -event OperatorAllowed(address operator) -``` - -It is emitted if a new operator is added to the global allowlist. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ---------------- | -| operator | address | Operator address | - -### OperatorRemoved - -```solidity -event OperatorRemoved(address operator) -``` - -It is emitted if an operator is removed from the global allowlist. - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ---------------- | -| operator | address | Operator address | - -## Errors - -### OperatorAlreadyAllowed - -```solidity -error OperatorAlreadyAllowed() -``` - -It is returned if the transfer caller is already allowed by the owner. - -_This error can only be returned for owner operations._ - -### OperatorAlreadyApprovedByUser - -```solidity -error OperatorAlreadyApprovedByUser() -``` - -It is returned if the operator to approve has already been approved by the user. - -### OperatorNotAllowed - -```solidity -error OperatorNotAllowed() -``` - -It is returned if the operator to approve is not in the global allowlist defined by the owner. - -_This error can be returned if the user tries to grant approval to an operator address not in the allowlist or if the owner tries to remove the operator from the global allowlist._ - -### OperatorNotApprovedByUser - -```solidity -error OperatorNotApprovedByUser() -``` - -It is returned if the operator to revoke has not been previously approved by the user. - -### TransferCallerInvalid - -```solidity -error TransferCallerInvalid() -``` - -It is returned if the transfer caller is invalid. For a transfer called to be valid, the operator must be in the global allowlist and approved by the 'from' user. diff --git a/docs/docs/developer/api/contracts/marketplace/libraries/CurrencyValidator.md b/docs/docs/developer/api/contracts/marketplace/libraries/CurrencyValidator.md deleted file mode 100644 index 1b1f41a2..00000000 --- a/docs/docs/developer/api/contracts/marketplace/libraries/CurrencyValidator.md +++ /dev/null @@ -1,7 +0,0 @@ -# CurrencyValidator - -_LooksRare protocol team (👀,💎)_ - -> CurrencyValidator - -This library validates the order currency to be the chain's native currency or the specified ERC20 token. diff --git a/docs/docs/developer/api/contracts/marketplace/libraries/LowLevelHypercertCaller.md b/docs/docs/developer/api/contracts/marketplace/libraries/LowLevelHypercertCaller.md deleted file mode 100644 index 5951cc56..00000000 --- a/docs/docs/developer/api/contracts/marketplace/libraries/LowLevelHypercertCaller.md +++ /dev/null @@ -1,21 +0,0 @@ -# LowLevelHypercertCaller - -_bitbeckers_ - -> LowLevelHypercertCaller - -This contract contains low-level calls to transfer ERC1155 tokens. - -## Errors - -### HypercertSplitFractionError - -```solidity -error HypercertSplitFractionError() -``` - -### NotAContract - -```solidity -error NotAContract() -``` diff --git a/docs/docs/developer/api/contracts/marketplace/libraries/OpenZeppelin/MerkleProofCalldataWithNodes.md b/docs/docs/developer/api/contracts/marketplace/libraries/OpenZeppelin/MerkleProofCalldataWithNodes.md deleted file mode 100644 index 943a54cd..00000000 --- a/docs/docs/developer/api/contracts/marketplace/libraries/OpenZeppelin/MerkleProofCalldataWithNodes.md +++ /dev/null @@ -1,7 +0,0 @@ -# MerkleProofCalldataWithNodes - -_OpenZeppelin (adjusted by LooksRare)_ - -> MerkleProofCalldataWithNodes - -This library is adjusted from the work of OpenZeppelin. It is based on the 4.7.0 (utils/cryptography/MerkleProof.sol). diff --git a/docs/docs/developer/api/contracts/marketplace/libraries/OpenZeppelin/MerkleProofMemory.md b/docs/docs/developer/api/contracts/marketplace/libraries/OpenZeppelin/MerkleProofMemory.md deleted file mode 100644 index 37529181..00000000 --- a/docs/docs/developer/api/contracts/marketplace/libraries/OpenZeppelin/MerkleProofMemory.md +++ /dev/null @@ -1,7 +0,0 @@ -# MerkleProofMemory - -_OpenZeppelin (adjusted by LooksRare)_ - -> MerkleProofMemory - -This library is adjusted from the work of OpenZeppelin. It is based on the 4.7.0 (utils/cryptography/MerkleProof.sol). diff --git a/docs/docs/developer/api/contracts/marketplace/libraries/OrderStructs.md b/docs/docs/developer/api/contracts/marketplace/libraries/OrderStructs.md deleted file mode 100644 index 6ffa83e2..00000000 --- a/docs/docs/developer/api/contracts/marketplace/libraries/OrderStructs.md +++ /dev/null @@ -1,7 +0,0 @@ -# OrderStructs - -_LooksRare protocol team (👀,💎); bitbeckers_ - -> OrderStructs - -This library contains all order struct types for the LooksRare protocol (v2). diff --git a/docs/docs/developer/api/contracts/marketplace/libraries/RoyaltyFeeRegistry.md b/docs/docs/developer/api/contracts/marketplace/libraries/RoyaltyFeeRegistry.md deleted file mode 100644 index 781ab041..00000000 --- a/docs/docs/developer/api/contracts/marketplace/libraries/RoyaltyFeeRegistry.md +++ /dev/null @@ -1,172 +0,0 @@ -# RoyaltyFeeRegistry - -> RoyaltyFeeRegistry - -It is a royalty fee registry for the LooksRare exchange. - -## Methods - -### owner - -```solidity -function owner() external view returns (address) -``` - -_Returns the address of the current owner._ - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### renounceOwnership - -```solidity -function renounceOwnership() external nonpayable -``` - -_Leaves the contract without owner. It will not be possible to call `onlyOwner` functions. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby disabling any functionality that is only available to the owner._ - -### royaltyFeeInfoCollection - -```solidity -function royaltyFeeInfoCollection(address collection) external view returns (address, address, uint256) -``` - -View royalty info for a collection address - -#### Parameters - -| Name | Type | Description | -| ---------- | ------- | ------------------ | -| collection | address | collection address | - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | -| \_1 | address | undefined | -| \_2 | uint256 | undefined | - -### royaltyFeeLimit - -```solidity -function royaltyFeeLimit() external view returns (uint256) -``` - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -### royaltyInfo - -```solidity -function royaltyInfo(address collection, uint256 amount) external view returns (address, uint256) -``` - -Calculate royalty info for a collection address and a sale gross amount - -#### Parameters - -| Name | Type | Description | -| ---------- | ------- | ------------------ | -| collection | address | collection address | -| amount | uint256 | amount | - -#### Returns - -| Name | Type | Description | -| ---- | ------- | --------------------------------------------------------- | -| \_0 | address | receiver address and amount received by royalty recipient | -| \_1 | uint256 | undefined | - -### transferOwnership - -```solidity -function transferOwnership(address newOwner) external nonpayable -``` - -_Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner._ - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| newOwner | address | undefined | - -### updateRoyaltyFeeLimit - -```solidity -function updateRoyaltyFeeLimit(uint256 _royaltyFeeLimit) external nonpayable -``` - -Update royalty info for collection - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | --------------------------------------------- | -| \_royaltyFeeLimit | uint256 | new royalty fee limit (500 = 5%, 1,000 = 10%) | - -### updateRoyaltyInfoForCollection - -```solidity -function updateRoyaltyInfoForCollection(address collection, address setter, address receiver, uint256 fee) external nonpayable -``` - -Update royalty info for collection - -#### Parameters - -| Name | Type | Description | -| ---------- | ------- | ------------------------------ | -| collection | address | address of the NFT contract | -| setter | address | address that sets the receiver | -| receiver | address | receiver for the royalty fee | -| fee | uint256 | fee (500 = 5%, 1,000 = 10%) | - -## Events - -### NewRoyaltyFeeLimit - -```solidity -event NewRoyaltyFeeLimit(uint256 royaltyFeeLimit) -``` - -#### Parameters - -| Name | Type | Description | -| --------------- | ------- | ----------- | -| royaltyFeeLimit | uint256 | undefined | - -### OwnershipTransferred - -```solidity -event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -``` - -#### Parameters - -| Name | Type | Description | -| ----------------------- | ------- | ----------- | -| previousOwner `indexed` | address | undefined | -| newOwner `indexed` | address | undefined | - -### RoyaltyFeeUpdate - -```solidity -event RoyaltyFeeUpdate(address indexed collection, address indexed setter, address indexed receiver, uint256 fee) -``` - -#### Parameters - -| Name | Type | Description | -| -------------------- | ------- | ----------- | -| collection `indexed` | address | undefined | -| setter `indexed` | address | undefined | -| receiver `indexed` | address | undefined | -| fee | uint256 | undefined | diff --git a/docs/docs/developer/api/contracts/protocol/AllowlistMinter.md b/docs/docs/developer/api/contracts/protocol/AllowlistMinter.md deleted file mode 100644 index ed412b6b..00000000 --- a/docs/docs/developer/api/contracts/protocol/AllowlistMinter.md +++ /dev/null @@ -1,102 +0,0 @@ -# AllowlistMinter - -_bitbeckers_ - -> Interface for hypercert token interactions - -This interface declares the required functionality for a hypercert tokenThis interface does not specify the underlying token type (e.g. 721 or 1155) - -## Methods - -### getMinted - -```solidity -function getMinted(uint256 claimID) external view returns (uint256 mintedUnits) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| claimID | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ----------- | ------- | ----------- | -| mintedUnits | uint256 | undefined | - -### hasBeenClaimed - -```solidity -function hasBeenClaimed(uint256, bytes32) external view returns (bool) -``` - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | -| \_1 | bytes32 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### isAllowedToClaim - -```solidity -function isAllowedToClaim(bytes32[] proof, uint256 claimID, bytes32 leaf) external view returns (bool isAllowed) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | --------- | ----------- | -| proof | bytes32[] | undefined | -| claimID | uint256 | undefined | -| leaf | bytes32 | undefined | - -#### Returns - -| Name | Type | Description | -| --------- | ---- | ----------- | -| isAllowed | bool | undefined | - -## Events - -### AllowlistCreated - -```solidity -event AllowlistCreated(uint256 tokenID, bytes32 root) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| tokenID | uint256 | undefined | -| root | bytes32 | undefined | - -### LeafClaimed - -```solidity -event LeafClaimed(uint256 tokenID, bytes32 leaf) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| tokenID | uint256 | undefined | -| leaf | bytes32 | undefined | - -## Errors - -### DoesNotExist - -```solidity -error DoesNotExist() -``` diff --git a/docs/docs/developer/api/contracts/protocol/HypercertMinter.md b/docs/docs/developer/api/contracts/protocol/HypercertMinter.md deleted file mode 100644 index b2780935..00000000 --- a/docs/docs/developer/api/contracts/protocol/HypercertMinter.md +++ /dev/null @@ -1,913 +0,0 @@ -# HypercertMinter - -_bitbeckers_ - -> Contract for managing hypercert claims and whitelists - -Implementation of the HypercertTokenInterface using { SemiFungible1155 } as underlying token.This contract supports whitelisted minting via { AllowlistMinter }. - -_Wrapper contract to expose and chain functions._ - -## Methods - -### \_\_SemiFungible1155_init - -```solidity -function __SemiFungible1155_init() external nonpayable -``` - -_see { openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol }_ - -### balanceOf - -```solidity -function balanceOf(address account, uint256 id) external view returns (uint256) -``` - -_See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address._ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| account | address | undefined | -| id | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -### balanceOfBatch - -```solidity -function balanceOfBatch(address[] accounts, uint256[] ids) external view returns (uint256[]) -``` - -_See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length._ - -#### Parameters - -| Name | Type | Description | -| -------- | --------- | ----------- | -| accounts | address[] | undefined | -| ids | uint256[] | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | --------- | ----------- | -| \_0 | uint256[] | undefined | - -### batchBurnFraction - -```solidity -function batchBurnFraction(address _account, uint256[] _tokenIDs) external nonpayable -``` - -Burn a claimtoken - -_see {IHypercertToken}_ - -#### Parameters - -| Name | Type | Description | -| ---------- | --------- | ----------- | -| \_account | address | undefined | -| \_tokenIDs | uint256[] | undefined | - -### batchMintClaimsFromAllowlists - -```solidity -function batchMintClaimsFromAllowlists(address account, bytes32[][] proofs, uint256[] claimIDs, uint256[] units) external nonpayable -``` - -Mint semi-fungible tokens representing a fraction of the claims in `claimIDs` - -_Calls AllowlistMinter to verify `proofs`.Mints the `amount` of units for the hypercert stored under `claimIDs`_ - -#### Parameters - -| Name | Type | Description | -| -------- | ----------- | ----------- | -| account | address | undefined | -| proofs | bytes32[][] | undefined | -| claimIDs | uint256[] | undefined | -| units | uint256[] | undefined | - -### burn - -```solidity -function burn(address account, uint256 id, uint256) external nonpayable -``` - -Burn a claimtoken; override is needed to update units/values - -_see {ERC1155Burnable}_ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| account | address | undefined | -| id | uint256 | undefined | -| \_2 | uint256 | undefined | - -### burnBatch - -```solidity -function burnBatch(address account, uint256[] ids, uint256[]) external nonpayable -``` - -Batch burn claimtokens; override is needed to update units/values - -_see {ERC1155Burnable}_ - -#### Parameters - -| Name | Type | Description | -| ------- | --------- | ----------- | -| account | address | undefined | -| ids | uint256[] | undefined | -| \_2 | uint256[] | undefined | - -### burnFraction - -```solidity -function burnFraction(address _account, uint256 _tokenID) external nonpayable -``` - -Burn a claimtoken - -_see {IHypercertToken}_ - -#### Parameters - -| Name | Type | Description | -| --------- | ------- | ----------- | -| \_account | address | undefined | -| \_tokenID | uint256 | undefined | - -### createAllowlist - -```solidity -function createAllowlist(address account, uint256 units, bytes32 merkleRoot, string _uri, enum IHypercertToken.TransferRestrictions restrictions) external nonpayable -``` - -Register a claim and the whitelist for minting token(s) belonging to that claim - -_Calls SemiFungible1155 to store the claim referenced in `uri` with amount of `units`Calls AllowlistMinter to store the `merkleRoot` as proof to authorize claims_ - -#### Parameters - -| Name | Type | Description | -| ------------ | ----------------------------------------- | ----------- | -| account | address | undefined | -| units | uint256 | undefined | -| merkleRoot | bytes32 | undefined | -| \_uri | string | undefined | -| restrictions | enum IHypercertToken.TransferRestrictions | undefined | - -### getMinted - -```solidity -function getMinted(uint256 claimID) external view returns (uint256 mintedUnits) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| claimID | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ----------- | ------- | ----------- | -| mintedUnits | uint256 | undefined | - -### hasBeenClaimed - -```solidity -function hasBeenClaimed(uint256, bytes32) external view returns (bool) -``` - -#### Parameters - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | -| \_1 | bytes32 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### initialize - -```solidity -function initialize() external nonpayable -``` - -_see { openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol }_ - -### isAllowedToClaim - -```solidity -function isAllowedToClaim(bytes32[] proof, uint256 claimID, bytes32 leaf) external view returns (bool isAllowed) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | --------- | ----------- | -| proof | bytes32[] | undefined | -| claimID | uint256 | undefined | -| leaf | bytes32 | undefined | - -#### Returns - -| Name | Type | Description | -| --------- | ---- | ----------- | -| isAllowed | bool | undefined | - -### isApprovedForAll - -```solidity -function isApprovedForAll(address account, address operator) external view returns (bool) -``` - -_See {IERC1155-isApprovedForAll}._ - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| account | address | undefined | -| operator | address | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### mergeFractions - -```solidity -function mergeFractions(address _account, uint256[] _fractionIDs) external nonpayable -``` - -Merge the value of tokens belonging to the same claim - -_see {IHypercertToken}_ - -#### Parameters - -| Name | Type | Description | -| ------------- | --------- | ----------- | -| \_account | address | undefined | -| \_fractionIDs | uint256[] | undefined | - -### mintClaim - -```solidity -function mintClaim(address account, uint256 units, string _uri, enum IHypercertToken.TransferRestrictions restrictions) external nonpayable -``` - -Mint a semi-fungible token for the impact claim referenced via `uri` - -_see {IHypercertToken}_ - -#### Parameters - -| Name | Type | Description | -| ------------ | ----------------------------------------- | ----------- | -| account | address | undefined | -| units | uint256 | undefined | -| \_uri | string | undefined | -| restrictions | enum IHypercertToken.TransferRestrictions | undefined | - -### mintClaimFromAllowlist - -```solidity -function mintClaimFromAllowlist(address account, bytes32[] proof, uint256 claimID, uint256 units) external nonpayable -``` - -Mint a semi-fungible token representing a fraction of the claim - -_Calls AllowlistMinter to verify `proof`.Mints the `amount` of units for the hypercert stored under `claimID`_ - -#### Parameters - -| Name | Type | Description | -| ------- | --------- | ----------- | -| account | address | undefined | -| proof | bytes32[] | undefined | -| claimID | uint256 | undefined | -| units | uint256 | undefined | - -### mintClaimWithFractions - -```solidity -function mintClaimWithFractions(address account, uint256 units, uint256[] fractions, string _uri, enum IHypercertToken.TransferRestrictions restrictions) external nonpayable -``` - -Mint semi-fungible tokens for the impact claim referenced via `uri` - -_see {IHypercertToken}_ - -#### Parameters - -| Name | Type | Description | -| ------------ | ----------------------------------------- | ----------- | -| account | address | undefined | -| units | uint256 | undefined | -| fractions | uint256[] | undefined | -| \_uri | string | undefined | -| restrictions | enum IHypercertToken.TransferRestrictions | undefined | - -### name - -```solidity -function name() external view returns (string) -``` - -#### Returns - -| Name | Type | Description | -| ---- | ------ | ----------- | -| \_0 | string | undefined | - -### owner - -```solidity -function owner() external view returns (address) -``` - -_Returns the address of the current owner._ - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### ownerOf - -```solidity -function ownerOf(uint256 tokenID) external view returns (address _owner) -``` - -_Returns the owner of a given token ID._ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------------------------- | -| tokenID | uint256 | The ID of the token to query. | - -#### Returns - -| Name | Type | Description | -| ------- | ------- | -------------------------------------- | -| \_owner | address | The address of the owner of the token. | - -### pause - -```solidity -function pause() external nonpayable -``` - -PAUSABLE - -### paused - -```solidity -function paused() external view returns (bool) -``` - -_Returns true if the contract is paused, and false otherwise._ - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### proxiableUUID - -```solidity -function proxiableUUID() external view returns (bytes32) -``` - -_Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier._ - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### readTransferRestriction - -```solidity -function readTransferRestriction(uint256 tokenID) external view returns (string) -``` - -TRANSFER RESTRICTIONS - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| tokenID | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ------ | ----------- | -| \_0 | string | undefined | - -### renounceOwnership - -```solidity -function renounceOwnership() external nonpayable -``` - -_Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner._ - -### safeBatchTransferFrom - -```solidity -function safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] amounts, bytes data) external nonpayable -``` - -_See {IERC1155-safeBatchTransferFrom}._ - -#### Parameters - -| Name | Type | Description | -| ------- | --------- | ----------- | -| from | address | undefined | -| to | address | undefined | -| ids | uint256[] | undefined | -| amounts | uint256[] | undefined | -| data | bytes | undefined | - -### safeTransferFrom - -```solidity -function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes data) external nonpayable -``` - -_See {IERC1155-safeTransferFrom}._ - -#### Parameters - -| Name | Type | Description | -| ------ | ------- | ----------- | -| from | address | undefined | -| to | address | undefined | -| id | uint256 | undefined | -| amount | uint256 | undefined | -| data | bytes | undefined | - -### setApprovalForAll - -```solidity -function setApprovalForAll(address operator, bool approved) external nonpayable -``` - -_See {IERC1155-setApprovalForAll}._ - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| operator | address | undefined | -| approved | bool | undefined | - -### splitFraction - -```solidity -function splitFraction(address _account, uint256 _tokenID, uint256[] _newFractions) external nonpayable -``` - -Split a claimtokens value into parts with summed value equal to the original - -_see {IHypercertToken}_ - -#### Parameters - -| Name | Type | Description | -| -------------- | --------- | ----------- | -| \_account | address | undefined | -| \_tokenID | uint256 | undefined | -| \_newFractions | uint256[] | undefined | - -### supportsInterface - -```solidity -function supportsInterface(bytes4 interfaceId) external view returns (bool) -``` - -_See {IERC165-supportsInterface}._ - -#### Parameters - -| Name | Type | Description | -| ----------- | ------ | ----------- | -| interfaceId | bytes4 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### transferOwnership - -```solidity -function transferOwnership(address newOwner) external nonpayable -``` - -_Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner._ - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| newOwner | address | undefined | - -### unitsOf - -```solidity -function unitsOf(address account, uint256 tokenID) external view returns (uint256 units) -``` - -_see {IHypercertToken}_ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| account | address | undefined | -| tokenID | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ----- | ------- | ----------- | -| units | uint256 | undefined | - -### unitsOf - -```solidity -function unitsOf(uint256 tokenID) external view returns (uint256 units) -``` - -_see {IHypercertToken}_ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| tokenID | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ----- | ------- | ----------- | -| units | uint256 | undefined | - -### unpause - -```solidity -function unpause() external nonpayable -``` - -### upgradeTo - -```solidity -function upgradeTo(address newImplementation) external nonpayable -``` - -_Upgrade the implementation of the proxy to `newImplementation`. Calls {\_authorizeUpgrade}. Emits an {Upgraded} event._ - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | ----------- | -| newImplementation | address | undefined | - -### upgradeToAndCall - -```solidity -function upgradeToAndCall(address newImplementation, bytes data) external payable -``` - -_Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {\_authorizeUpgrade}. Emits an {Upgraded} event._ - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | ----------- | -| newImplementation | address | undefined | -| data | bytes | undefined | - -### uri - -```solidity -function uri(uint256 tokenID) external view returns (string _uri) -``` - -_see { IHypercertMetadata}_ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| tokenID | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ----- | ------ | ----------- | -| \_uri | string | undefined | - -## Events - -### AdminChanged - -```solidity -event AdminChanged(address previousAdmin, address newAdmin) -``` - -#### Parameters - -| Name | Type | Description | -| ------------- | ------- | ----------- | -| previousAdmin | address | undefined | -| newAdmin | address | undefined | - -### AllowlistCreated - -```solidity -event AllowlistCreated(uint256 tokenID, bytes32 root) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| tokenID | uint256 | undefined | -| root | bytes32 | undefined | - -### ApprovalForAll - -```solidity -event ApprovalForAll(address indexed account, address indexed operator, bool approved) -``` - -#### Parameters - -| Name | Type | Description | -| ------------------ | ------- | ----------- | -| account `indexed` | address | undefined | -| operator `indexed` | address | undefined | -| approved | bool | undefined | - -### BatchValueTransfer - -```solidity -event BatchValueTransfer(uint256[] claimIDs, uint256[] fromTokenIDs, uint256[] toTokenIDs, uint256[] values) -``` - -#### Parameters - -| Name | Type | Description | -| ------------ | --------- | ----------- | -| claimIDs | uint256[] | undefined | -| fromTokenIDs | uint256[] | undefined | -| toTokenIDs | uint256[] | undefined | -| values | uint256[] | undefined | - -### BeaconUpgraded - -```solidity -event BeaconUpgraded(address indexed beacon) -``` - -#### Parameters - -| Name | Type | Description | -| ---------------- | ------- | ----------- | -| beacon `indexed` | address | undefined | - -### ClaimStored - -```solidity -event ClaimStored(uint256 indexed claimID, string uri, uint256 totalUnits) -``` - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | ----------- | -| claimID `indexed` | uint256 | undefined | -| uri | string | undefined | -| totalUnits | uint256 | undefined | - -### Initialized - -```solidity -event Initialized(uint8 version) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ----- | ----------- | -| version | uint8 | undefined | - -### LeafClaimed - -```solidity -event LeafClaimed(uint256 tokenID, bytes32 leaf) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| tokenID | uint256 | undefined | -| leaf | bytes32 | undefined | - -### OwnershipTransferred - -```solidity -event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -``` - -#### Parameters - -| Name | Type | Description | -| ----------------------- | ------- | ----------- | -| previousOwner `indexed` | address | undefined | -| newOwner `indexed` | address | undefined | - -### Paused - -```solidity -event Paused(address account) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| account | address | undefined | - -### TransferBatch - -```solidity -event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values) -``` - -#### Parameters - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| operator `indexed` | address | undefined | -| from `indexed` | address | undefined | -| to `indexed` | address | undefined | -| ids | uint256[] | undefined | -| values | uint256[] | undefined | - -### TransferSingle - -```solidity -event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value) -``` - -#### Parameters - -| Name | Type | Description | -| ------------------ | ------- | ----------- | -| operator `indexed` | address | undefined | -| from `indexed` | address | undefined | -| to `indexed` | address | undefined | -| id | uint256 | undefined | -| value | uint256 | undefined | - -### URI - -```solidity -event URI(string value, uint256 indexed id) -``` - -#### Parameters - -| Name | Type | Description | -| ------------ | ------- | ----------- | -| value | string | undefined | -| id `indexed` | uint256 | undefined | - -### Unpaused - -```solidity -event Unpaused(address account) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| account | address | undefined | - -### Upgraded - -```solidity -event Upgraded(address indexed implementation) -``` - -#### Parameters - -| Name | Type | Description | -| ------------------------ | ------- | ----------- | -| implementation `indexed` | address | undefined | - -### ValueTransfer - -```solidity -event ValueTransfer(uint256 claimID, uint256 fromTokenID, uint256 toTokenID, uint256 value) -``` - -#### Parameters - -| Name | Type | Description | -| ----------- | ------- | ----------- | -| claimID | uint256 | undefined | -| fromTokenID | uint256 | undefined | -| toTokenID | uint256 | undefined | -| value | uint256 | undefined | - -## Errors - -### AlreadyClaimed - -```solidity -error AlreadyClaimed() -``` - -### ArraySize - -```solidity -error ArraySize() -``` - -### DoesNotExist - -```solidity -error DoesNotExist() -``` - -### DuplicateEntry - -```solidity -error DuplicateEntry() -``` - -### Invalid - -```solidity -error Invalid() -``` - -### NotAllowed - -```solidity -error NotAllowed() -``` - -### NotApprovedOrOwner - -```solidity -error NotApprovedOrOwner() -``` - -### TransfersNotAllowed - -```solidity -error TransfersNotAllowed() -``` - -### TypeMismatch - -```solidity -error TypeMismatch() -``` diff --git a/docs/docs/developer/api/contracts/protocol/SemiFungible1155.md b/docs/docs/developer/api/contracts/protocol/SemiFungible1155.md deleted file mode 100644 index a4086e37..00000000 --- a/docs/docs/developer/api/contracts/protocol/SemiFungible1155.md +++ /dev/null @@ -1,457 +0,0 @@ -# SemiFungible1155 - -_bitbeckers_ - -> Contract for minting semi-fungible EIP1155 tokens - -Extends { Upgradeable1155 } token with semi-fungible properties and the concept of `units` - -_Adds split bit strategy as described in [EIP-1155](https://eips.ethereum.org/EIPS/eip-1155#non-fungible-tokens)_ - -## Methods - -### \_\_SemiFungible1155_init - -```solidity -function __SemiFungible1155_init() external nonpayable -``` - -_see { openzeppelin-contracts-upgradeable/contracts/proxy/utils/Initializable.sol }_ - -### balanceOf - -```solidity -function balanceOf(address account, uint256 id) external view returns (uint256) -``` - -_See {IERC1155-balanceOf}. Requirements: - `account` cannot be the zero address._ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| account | address | undefined | -| id | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | uint256 | undefined | - -### balanceOfBatch - -```solidity -function balanceOfBatch(address[] accounts, uint256[] ids) external view returns (uint256[]) -``` - -_See {IERC1155-balanceOfBatch}. Requirements: - `accounts` and `ids` must have the same length._ - -#### Parameters - -| Name | Type | Description | -| -------- | --------- | ----------- | -| accounts | address[] | undefined | -| ids | uint256[] | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | --------- | ----------- | -| \_0 | uint256[] | undefined | - -### burn - -```solidity -function burn(address account, uint256 id, uint256 value) external nonpayable -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| account | address | undefined | -| id | uint256 | undefined | -| value | uint256 | undefined | - -### burnBatch - -```solidity -function burnBatch(address account, uint256[] ids, uint256[] values) external nonpayable -``` - -#### Parameters - -| Name | Type | Description | -| ------- | --------- | ----------- | -| account | address | undefined | -| ids | uint256[] | undefined | -| values | uint256[] | undefined | - -### isApprovedForAll - -```solidity -function isApprovedForAll(address account, address operator) external view returns (bool) -``` - -_See {IERC1155-isApprovedForAll}._ - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| account | address | undefined | -| operator | address | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### owner - -```solidity -function owner() external view returns (address) -``` - -_Returns the address of the current owner._ - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | address | undefined | - -### ownerOf - -```solidity -function ownerOf(uint256 tokenID) external view returns (address _owner) -``` - -_Returns the owner of a given token ID._ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------------------------- | -| tokenID | uint256 | The ID of the token to query. | - -#### Returns - -| Name | Type | Description | -| ------- | ------- | -------------------------------------- | -| \_owner | address | The address of the owner of the token. | - -### proxiableUUID - -```solidity -function proxiableUUID() external view returns (bytes32) -``` - -_Implementation of the ERC1822 {proxiableUUID} function. This returns the storage slot used by the implementation. It is used to validate the implementation's compatibility when performing an upgrade. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy. This is guaranteed by the `notDelegated` modifier._ - -#### Returns - -| Name | Type | Description | -| ---- | ------- | ----------- | -| \_0 | bytes32 | undefined | - -### renounceOwnership - -```solidity -function renounceOwnership() external nonpayable -``` - -_Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner._ - -### safeBatchTransferFrom - -```solidity -function safeBatchTransferFrom(address from, address to, uint256[] ids, uint256[] amounts, bytes data) external nonpayable -``` - -_See {IERC1155-safeBatchTransferFrom}._ - -#### Parameters - -| Name | Type | Description | -| ------- | --------- | ----------- | -| from | address | undefined | -| to | address | undefined | -| ids | uint256[] | undefined | -| amounts | uint256[] | undefined | -| data | bytes | undefined | - -### safeTransferFrom - -```solidity -function safeTransferFrom(address from, address to, uint256 id, uint256 amount, bytes data) external nonpayable -``` - -_See {IERC1155-safeTransferFrom}._ - -#### Parameters - -| Name | Type | Description | -| ------ | ------- | ----------- | -| from | address | undefined | -| to | address | undefined | -| id | uint256 | undefined | -| amount | uint256 | undefined | -| data | bytes | undefined | - -### setApprovalForAll - -```solidity -function setApprovalForAll(address operator, bool approved) external nonpayable -``` - -_See {IERC1155-setApprovalForAll}._ - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| operator | address | undefined | -| approved | bool | undefined | - -### supportsInterface - -```solidity -function supportsInterface(bytes4 interfaceId) external view returns (bool) -``` - -_See {IERC165-supportsInterface}._ - -#### Parameters - -| Name | Type | Description | -| ----------- | ------ | ----------- | -| interfaceId | bytes4 | undefined | - -#### Returns - -| Name | Type | Description | -| ---- | ---- | ----------- | -| \_0 | bool | undefined | - -### transferOwnership - -```solidity -function transferOwnership(address newOwner) external nonpayable -``` - -_Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner._ - -#### Parameters - -| Name | Type | Description | -| -------- | ------- | ----------- | -| newOwner | address | undefined | - -### upgradeTo - -```solidity -function upgradeTo(address newImplementation) external nonpayable -``` - -_Upgrade the implementation of the proxy to `newImplementation`. Calls {\_authorizeUpgrade}. Emits an {Upgraded} event._ - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | ----------- | -| newImplementation | address | undefined | - -### upgradeToAndCall - -```solidity -function upgradeToAndCall(address newImplementation, bytes data) external payable -``` - -_Upgrade the implementation of the proxy to `newImplementation`, and subsequently execute the function call encoded in `data`. Calls {\_authorizeUpgrade}. Emits an {Upgraded} event._ - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | ----------- | -| newImplementation | address | undefined | -| data | bytes | undefined | - -### uri - -```solidity -function uri(uint256 tokenID) external view returns (string _uri) -``` - -_Returns the metadata URI for a given token ID.This function retrieves the metadata URI for the specified token ID by calling the `uri` function of the `ERC1155URIStorageUpgradeable` contract.The metadata URI is a string that points to a JSON file containing information about the token, such as its name, symbol, and image.This function always returns the URI for the basetype so that it's managed in one place._ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------------------------------------------------- | -| tokenID | uint256 | The ID of the token to retrieve the metadata URI for. | - -#### Returns - -| Name | Type | Description | -| ----- | ------ | -------------------------------------------- | -| \_uri | string | The metadata URI for the specified token ID. | - -## Events - -### AdminChanged - -```solidity -event AdminChanged(address previousAdmin, address newAdmin) -``` - -#### Parameters - -| Name | Type | Description | -| ------------- | ------- | ----------- | -| previousAdmin | address | undefined | -| newAdmin | address | undefined | - -### ApprovalForAll - -```solidity -event ApprovalForAll(address indexed account, address indexed operator, bool approved) -``` - -#### Parameters - -| Name | Type | Description | -| ------------------ | ------- | ----------- | -| account `indexed` | address | undefined | -| operator `indexed` | address | undefined | -| approved | bool | undefined | - -### BatchValueTransfer - -```solidity -event BatchValueTransfer(uint256[] claimIDs, uint256[] fromTokenIDs, uint256[] toTokenIDs, uint256[] values) -``` - -_Emitted on transfer of `values` between `fromTokenIDs` to `toTokenIDs` of `claimIDs`_ - -#### Parameters - -| Name | Type | Description | -| ------------ | --------- | ----------- | -| claimIDs | uint256[] | undefined | -| fromTokenIDs | uint256[] | undefined | -| toTokenIDs | uint256[] | undefined | -| values | uint256[] | undefined | - -### BeaconUpgraded - -```solidity -event BeaconUpgraded(address indexed beacon) -``` - -#### Parameters - -| Name | Type | Description | -| ---------------- | ------- | ----------- | -| beacon `indexed` | address | undefined | - -### Initialized - -```solidity -event Initialized(uint8 version) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | ----- | ----------- | -| version | uint8 | undefined | - -### OwnershipTransferred - -```solidity -event OwnershipTransferred(address indexed previousOwner, address indexed newOwner) -``` - -#### Parameters - -| Name | Type | Description | -| ----------------------- | ------- | ----------- | -| previousOwner `indexed` | address | undefined | -| newOwner `indexed` | address | undefined | - -### TransferBatch - -```solidity -event TransferBatch(address indexed operator, address indexed from, address indexed to, uint256[] ids, uint256[] values) -``` - -#### Parameters - -| Name | Type | Description | -| ------------------ | --------- | ----------- | -| operator `indexed` | address | undefined | -| from `indexed` | address | undefined | -| to `indexed` | address | undefined | -| ids | uint256[] | undefined | -| values | uint256[] | undefined | - -### TransferSingle - -```solidity -event TransferSingle(address indexed operator, address indexed from, address indexed to, uint256 id, uint256 value) -``` - -#### Parameters - -| Name | Type | Description | -| ------------------ | ------- | ----------- | -| operator `indexed` | address | undefined | -| from `indexed` | address | undefined | -| to `indexed` | address | undefined | -| id | uint256 | undefined | -| value | uint256 | undefined | - -### URI - -```solidity -event URI(string value, uint256 indexed id) -``` - -#### Parameters - -| Name | Type | Description | -| ------------ | ------- | ----------- | -| value | string | undefined | -| id `indexed` | uint256 | undefined | - -### Upgraded - -```solidity -event Upgraded(address indexed implementation) -``` - -#### Parameters - -| Name | Type | Description | -| ------------------------ | ------- | ----------- | -| implementation `indexed` | address | undefined | - -### ValueTransfer - -```solidity -event ValueTransfer(uint256 claimID, uint256 fromTokenID, uint256 toTokenID, uint256 value) -``` - -_Emitted on transfer of `value` between `fromTokenID` to `toTokenID` of the same `claimID`_ - -#### Parameters - -| Name | Type | Description | -| ----------- | ------- | ----------- | -| claimID | uint256 | undefined | -| fromTokenID | uint256 | undefined | -| toTokenID | uint256 | undefined | -| value | uint256 | undefined | diff --git a/docs/docs/developer/api/contracts/protocol/interfaces/IAllowlist.md b/docs/docs/developer/api/contracts/protocol/interfaces/IAllowlist.md deleted file mode 100644 index 72455b43..00000000 --- a/docs/docs/developer/api/contracts/protocol/interfaces/IAllowlist.md +++ /dev/null @@ -1,29 +0,0 @@ -# IAllowlist - -_bitbeckers_ - -> Interface for allowlist - -This interface declares the required functionality for a hypercert tokenThis interface does not specify the underlying token type (e.g. 721 or 1155) - -## Methods - -### isAllowedToClaim - -```solidity -function isAllowedToClaim(bytes32[] proof, uint256 tokenID, bytes32 leaf) external view returns (bool isAllowed) -``` - -#### Parameters - -| Name | Type | Description | -| ------- | --------- | ----------- | -| proof | bytes32[] | undefined | -| tokenID | uint256 | undefined | -| leaf | bytes32 | undefined | - -#### Returns - -| Name | Type | Description | -| --------- | ---- | ----------- | -| isAllowed | bool | undefined | diff --git a/docs/docs/developer/api/contracts/protocol/interfaces/IHypercertToken.md b/docs/docs/developer/api/contracts/protocol/interfaces/IHypercertToken.md deleted file mode 100644 index 5bd0e8a9..00000000 --- a/docs/docs/developer/api/contracts/protocol/interfaces/IHypercertToken.md +++ /dev/null @@ -1,192 +0,0 @@ -# IHypercertToken - -_bitbeckers_ - -> Interface for hypercert token interactions - -This interface declares the required functionality for a hypercert tokenThis interface does not specify the underlying token type (e.g. 721 or 1155) - -## Methods - -### batchBurnFraction - -```solidity -function batchBurnFraction(address account, uint256[] tokenIDs) external nonpayable -``` - -Operator must be allowed by `creator` and the tokens must represent the total amount of available units. - -_Function to burn the tokens at `tokenIDs` for `account`_ - -#### Parameters - -| Name | Type | Description | -| -------- | --------- | ----------- | -| account | address | undefined | -| tokenIDs | uint256[] | undefined | - -### burnFraction - -```solidity -function burnFraction(address account, uint256 tokenID) external nonpayable -``` - -Operator must be allowed by `creator` and the token must represent the total amount of available units. - -_Function to burn the token at `tokenID` for `account`_ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| account | address | undefined | -| tokenID | uint256 | undefined | - -### mergeFractions - -```solidity -function mergeFractions(address account, uint256[] tokenIDs) external nonpayable -``` - -Tokens that have been merged are burned. - -_Function called to merge tokens within `tokenIDs`._ - -#### Parameters - -| Name | Type | Description | -| -------- | --------- | ----------- | -| account | address | undefined | -| tokenIDs | uint256[] | undefined | - -### mintClaim - -```solidity -function mintClaim(address account, uint256 units, string uri, enum IHypercertToken.TransferRestrictions restrictions) external nonpayable -``` - -_Function called to store a claim referenced via `uri` with a maximum number of fractions `units`._ - -#### Parameters - -| Name | Type | Description | -| ------------ | ----------------------------------------- | ----------- | -| account | address | undefined | -| units | uint256 | undefined | -| uri | string | undefined | -| restrictions | enum IHypercertToken.TransferRestrictions | undefined | - -### mintClaimWithFractions - -```solidity -function mintClaimWithFractions(address account, uint256 units, uint256[] fractions, string uri, enum IHypercertToken.TransferRestrictions restrictions) external nonpayable -``` - -_Function called to store a claim referenced via `uri` with a set of `fractions`.Fractions are internally summed to total units._ - -#### Parameters - -| Name | Type | Description | -| ------------ | ----------------------------------------- | ----------- | -| account | address | undefined | -| units | uint256 | undefined | -| fractions | uint256[] | undefined | -| uri | string | undefined | -| restrictions | enum IHypercertToken.TransferRestrictions | undefined | - -### splitFraction - -```solidity -function splitFraction(address to, uint256 tokenID, uint256[] _values) external nonpayable -``` - -The sum of `values` must equal the current value of `_tokenID`. - -_Function called to split `tokenID` and transfer `to` into units declared in `values`._ - -#### Parameters - -| Name | Type | Description | -| -------- | --------- | ----------- | -| to | address | undefined | -| tokenID | uint256 | undefined | -| \_values | uint256[] | undefined | - -### unitsOf - -```solidity -function unitsOf(address account, uint256 tokenID) external view returns (uint256 units) -``` - -_Returns the `units` held by `account` of a (fractional) token at `claimID`If `tokenID` is a base type, the total amount of `units` held by `account` for the claim is returned.If `tokenID` is a fractional token, the `units` held by `account` the token is returned_ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| account | address | undefined | -| tokenID | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ----- | ------- | ----------- | -| units | uint256 | undefined | - -### unitsOf - -```solidity -function unitsOf(uint256 tokenID) external view returns (uint256 units) -``` - -_Returns the `units` held by a (fractional) token at `claimID`If `tokenID` is a base type, the total amount of `units` for the claim is returned.If `tokenID` is a fractional token, the `units` held by the token is returned_ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| tokenID | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| ----- | ------- | ----------- | -| units | uint256 | undefined | - -### uri - -```solidity -function uri(uint256 tokenID) external view returns (string metadata) -``` - -_Returns the `uri` for metadata of the claim represented by `tokenID`Metadata must conform to { Hypercert Metadata } spec (based on ERC1155 Metadata)_ - -#### Parameters - -| Name | Type | Description | -| ------- | ------- | ----------- | -| tokenID | uint256 | undefined | - -#### Returns - -| Name | Type | Description | -| -------- | ------ | ----------- | -| metadata | string | undefined | - -## Events - -### ClaimStored - -```solidity -event ClaimStored(uint256 indexed claimID, string uri, uint256 totalUnits) -``` - -_Emitted when token with tokenID `claimID` is stored, with external data reference via `uri`._ - -#### Parameters - -| Name | Type | Description | -| ----------------- | ------- | ----------- | -| claimID `indexed` | uint256 | undefined | -| uri | string | undefined | -| totalUnits | uint256 | undefined | diff --git a/docs/docs/developer/api/contracts/protocol/libs/Errors.md b/docs/docs/developer/api/contracts/protocol/libs/Errors.md deleted file mode 100644 index 93fe0124..00000000 --- a/docs/docs/developer/api/contracts/protocol/libs/Errors.md +++ /dev/null @@ -1,59 +0,0 @@ -# Errors - -_bitbeckers_ - -## Errors - -### AlreadyClaimed - -```solidity -error AlreadyClaimed() -``` - -### ArraySize - -```solidity -error ArraySize() -``` - -### DoesNotExist - -```solidity -error DoesNotExist() -``` - -### DuplicateEntry - -```solidity -error DuplicateEntry() -``` - -### Invalid - -```solidity -error Invalid() -``` - -### NotAllowed - -```solidity -error NotAllowed() -``` - -### NotApprovedOrOwner - -```solidity -error NotApprovedOrOwner() -``` - -### TransfersNotAllowed - -```solidity -error TransfersNotAllowed() -``` - -### TypeMismatch - -```solidity -error TypeMismatch() -``` diff --git a/docs/docs/developer/api/index.md b/docs/docs/developer/api/index.md deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/docs/developer/api/sdk/_category_.yml b/docs/docs/developer/api/sdk/_category_.yml deleted file mode 100644 index 5c4b05b1..00000000 --- a/docs/docs/developer/api/sdk/_category_.yml +++ /dev/null @@ -1,3 +0,0 @@ -label: "API SDK" -position: 0 -collapsed: false \ No newline at end of file diff --git a/docs/docs/developer/api/sdk/classes/ClientError.md b/docs/docs/developer/api/sdk/classes/ClientError.md deleted file mode 100644 index 8958c83b..00000000 --- a/docs/docs/developer/api/sdk/classes/ClientError.md +++ /dev/null @@ -1,198 +0,0 @@ ---- -id: "ClientError" -title: "Class: ClientError" -sidebar_label: "ClientError" -sidebar_position: 0 -custom_edit_url: null ---- - -An error that is caused by a problem with the client. - -## Hierarchy - -- `Error` - - ↳ **`ClientError`** - -## Implements - -- [`CustomError`](../interfaces/CustomError.md) - -## Constructors - -### constructor - -• **new ClientError**(`message`, `payload?`): [`ClientError`](ClientError.md) - -Creates a new instance of the ClientError class. - -#### Parameters - -| Name | Type | Description | -| :--------- | :------- | :------------------------ | -| `message` | `string` | The error message. | -| `payload?` | `Object` | Additional error payload. | - -#### Returns - -[`ClientError`](ClientError.md) - -#### Overrides - -Error.constructor - -#### Defined in - -[sdk/src/types/errors.ts:27](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L27) - -## Properties - -### cause - -• `Optional` **cause**: `unknown` - -#### Inherited from - -Error.cause - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.error.d.ts:24 - ---- - -### message - -• **message**: `string` - -#### Inherited from - -Error.message - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1076 - ---- - -### name - -• **name**: `string` - -#### Inherited from - -Error.name - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1075 - ---- - -### payload - -• `Optional` **payload**: `Object` - -Additional error payload. - -#### Index signature - -▪ [key: `string`]: `unknown` - -#### Implementation of - -[CustomError](../interfaces/CustomError.md).[payload](../interfaces/CustomError.md#payload) - -#### Defined in - -[sdk/src/types/errors.ts:20](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L20) - ---- - -### stack - -• `Optional` **stack**: `string` - -#### Inherited from - -Error.stack - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1077 - ---- - -### prepareStackTrace - -▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` - -#### Type declaration - -▸ (`err`, `stackTraces`): `any` - -Optional override for formatting stack traces - -##### Parameters - -| Name | Type | -| :------------ | :----------- | -| `err` | `Error` | -| `stackTraces` | `CallSite`[] | - -##### Returns - -`any` - -**`See`** - -https://v8.dev/docs/stack-trace-api#customizing-stack-traces - -#### Inherited from - -Error.prepareStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:11 - ---- - -### stackTraceLimit - -▪ `Static` **stackTraceLimit**: `number` - -#### Inherited from - -Error.stackTraceLimit - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:13 - -## Methods - -### captureStackTrace - -▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` - -Create .stack property on a target object - -#### Parameters - -| Name | Type | -| :---------------- | :--------- | -| `targetObject` | `object` | -| `constructorOpt?` | `Function` | - -#### Returns - -`void` - -#### Inherited from - -Error.captureStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:4 diff --git a/docs/docs/developer/api/sdk/classes/ConfigurationError.md b/docs/docs/developer/api/sdk/classes/ConfigurationError.md deleted file mode 100644 index e29844e2..00000000 --- a/docs/docs/developer/api/sdk/classes/ConfigurationError.md +++ /dev/null @@ -1,196 +0,0 @@ ---- -id: "ConfigurationError" -title: "Class: ConfigurationError" -sidebar_label: "ConfigurationError" -sidebar_position: 0 -custom_edit_url: null ---- - -The configuration was invalid - -## Hierarchy - -- `Error` - - ↳ **`ConfigurationError`** - -## Implements - -- [`CustomError`](../interfaces/CustomError.md) - -## Constructors - -### constructor - -• **new ConfigurationError**(`message`, `payload?`): [`ConfigurationError`](ConfigurationError.md) - -#### Parameters - -| Name | Type | -| :--------- | :------- | -| `message` | `string` | -| `payload?` | `Object` | - -#### Returns - -[`ConfigurationError`](ConfigurationError.md) - -#### Overrides - -Error.constructor - -#### Defined in - -[sdk/src/types/errors.ts:188](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L188) - -## Properties - -### cause - -• `Optional` **cause**: `unknown` - -#### Inherited from - -Error.cause - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.error.d.ts:24 - ---- - -### message - -• **message**: `string` - -#### Inherited from - -Error.message - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1076 - ---- - -### name - -• **name**: `string` - -#### Inherited from - -Error.name - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1075 - ---- - -### payload - -• `Optional` **payload**: `Object` - -Additional error payload. - -#### Index signature - -▪ [key: `string`]: `unknown` - -#### Implementation of - -[CustomError](../interfaces/CustomError.md).[payload](../interfaces/CustomError.md#payload) - -#### Defined in - -[sdk/src/types/errors.ts:187](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L187) - ---- - -### stack - -• `Optional` **stack**: `string` - -#### Inherited from - -Error.stack - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1077 - ---- - -### prepareStackTrace - -▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` - -#### Type declaration - -▸ (`err`, `stackTraces`): `any` - -Optional override for formatting stack traces - -##### Parameters - -| Name | Type | -| :------------ | :----------- | -| `err` | `Error` | -| `stackTraces` | `CallSite`[] | - -##### Returns - -`any` - -**`See`** - -https://v8.dev/docs/stack-trace-api#customizing-stack-traces - -#### Inherited from - -Error.prepareStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:11 - ---- - -### stackTraceLimit - -▪ `Static` **stackTraceLimit**: `number` - -#### Inherited from - -Error.stackTraceLimit - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:13 - -## Methods - -### captureStackTrace - -▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` - -Create .stack property on a target object - -#### Parameters - -| Name | Type | -| :---------------- | :--------- | -| `targetObject` | `object` | -| `constructorOpt?` | `Function` | - -#### Returns - -`void` - -#### Inherited from - -Error.captureStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:4 diff --git a/docs/docs/developer/api/sdk/classes/ContractError.md b/docs/docs/developer/api/sdk/classes/ContractError.md deleted file mode 100644 index 5a2712c1..00000000 --- a/docs/docs/developer/api/sdk/classes/ContractError.md +++ /dev/null @@ -1,197 +0,0 @@ ---- -id: "ContractError" -title: "Class: ContractError" -sidebar_label: "ContractError" -sidebar_position: 0 -custom_edit_url: null ---- - -An error that is returned by the contract - -## Hierarchy - -- `Error` - - ↳ **`ContractError`** - -## Implements - -- [`CustomError`](../interfaces/CustomError.md) - -## Constructors - -### constructor - -• **new ContractError**(`errorName?`, `payload?`): [`ContractError`](ContractError.md) - -#### Parameters - -| Name | Type | -| :------------- | :------------------------------ | -| `errorName?` | `string` | -| `payload?` | `Object` | -| `payload.data` | \`0x$\{string}\` \| `BaseError` | - -#### Returns - -[`ContractError`](ContractError.md) - -#### Overrides - -Error.constructor - -#### Defined in - -[sdk/src/types/errors.ts:43](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L43) - -## Properties - -### cause - -• `Optional` **cause**: `unknown` - -#### Inherited from - -Error.cause - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.error.d.ts:24 - ---- - -### message - -• **message**: `string` - -#### Inherited from - -Error.message - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1076 - ---- - -### name - -• **name**: `string` - -#### Inherited from - -Error.name - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1075 - ---- - -### payload - -• `Optional` **payload**: `Object` - -Additional error payload. - -#### Index signature - -▪ [key: `string`]: `unknown` - -#### Implementation of - -[CustomError](../interfaces/CustomError.md).[payload](../interfaces/CustomError.md#payload) - -#### Defined in - -[sdk/src/types/errors.ts:41](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L41) - ---- - -### stack - -• `Optional` **stack**: `string` - -#### Inherited from - -Error.stack - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1077 - ---- - -### prepareStackTrace - -▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` - -#### Type declaration - -▸ (`err`, `stackTraces`): `any` - -Optional override for formatting stack traces - -##### Parameters - -| Name | Type | -| :------------ | :----------- | -| `err` | `Error` | -| `stackTraces` | `CallSite`[] | - -##### Returns - -`any` - -**`See`** - -https://v8.dev/docs/stack-trace-api#customizing-stack-traces - -#### Inherited from - -Error.prepareStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:11 - ---- - -### stackTraceLimit - -▪ `Static` **stackTraceLimit**: `number` - -#### Inherited from - -Error.stackTraceLimit - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:13 - -## Methods - -### captureStackTrace - -▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` - -Create .stack property on a target object - -#### Parameters - -| Name | Type | -| :---------------- | :--------- | -| `targetObject` | `object` | -| `constructorOpt?` | `Function` | - -#### Returns - -`void` - -#### Inherited from - -Error.captureStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:4 diff --git a/docs/docs/developer/api/sdk/classes/FetchError.md b/docs/docs/developer/api/sdk/classes/FetchError.md deleted file mode 100644 index 4a80b56b..00000000 --- a/docs/docs/developer/api/sdk/classes/FetchError.md +++ /dev/null @@ -1,198 +0,0 @@ ---- -id: "FetchError" -title: "Class: FetchError" -sidebar_label: "FetchError" -sidebar_position: 0 -custom_edit_url: null ---- - -Fails fetching a remote resource - -## Hierarchy - -- `Error` - - ↳ **`FetchError`** - -## Implements - -- [`CustomError`](../interfaces/CustomError.md) - -## Constructors - -### constructor - -• **new FetchError**(`message`, `payload?`): [`FetchError`](FetchError.md) - -Creates a new instance of the FetchError class. - -#### Parameters - -| Name | Type | Description | -| :--------- | :------- | :------------------------ | -| `message` | `string` | The error message. | -| `payload?` | `Object` | Additional error payload. | - -#### Returns - -[`FetchError`](FetchError.md) - -#### Overrides - -Error.constructor - -#### Defined in - -[sdk/src/types/errors.ts:65](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L65) - -## Properties - -### cause - -• `Optional` **cause**: `unknown` - -#### Inherited from - -Error.cause - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.error.d.ts:24 - ---- - -### message - -• **message**: `string` - -#### Inherited from - -Error.message - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1076 - ---- - -### name - -• **name**: `string` - -#### Inherited from - -Error.name - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1075 - ---- - -### payload - -• `Optional` **payload**: `Object` - -Additional error payload. - -#### Index signature - -▪ [key: `string`]: `unknown` - -#### Implementation of - -[CustomError](../interfaces/CustomError.md).[payload](../interfaces/CustomError.md#payload) - -#### Defined in - -[sdk/src/types/errors.ts:58](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L58) - ---- - -### stack - -• `Optional` **stack**: `string` - -#### Inherited from - -Error.stack - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1077 - ---- - -### prepareStackTrace - -▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` - -#### Type declaration - -▸ (`err`, `stackTraces`): `any` - -Optional override for formatting stack traces - -##### Parameters - -| Name | Type | -| :------------ | :----------- | -| `err` | `Error` | -| `stackTraces` | `CallSite`[] | - -##### Returns - -`any` - -**`See`** - -https://v8.dev/docs/stack-trace-api#customizing-stack-traces - -#### Inherited from - -Error.prepareStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:11 - ---- - -### stackTraceLimit - -▪ `Static` **stackTraceLimit**: `number` - -#### Inherited from - -Error.stackTraceLimit - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:13 - -## Methods - -### captureStackTrace - -▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` - -Create .stack property on a target object - -#### Parameters - -| Name | Type | -| :---------------- | :--------- | -| `targetObject` | `object` | -| `constructorOpt?` | `Function` | - -#### Returns - -`void` - -#### Inherited from - -Error.captureStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:4 diff --git a/docs/docs/developer/api/sdk/classes/HypercertClient.md b/docs/docs/developer/api/sdk/classes/HypercertClient.md deleted file mode 100644 index 0e538e5b..00000000 --- a/docs/docs/developer/api/sdk/classes/HypercertClient.md +++ /dev/null @@ -1,886 +0,0 @@ ---- -id: "HypercertClient" -title: "Class: HypercertClient" -sidebar_label: "HypercertClient" -sidebar_position: 0 -custom_edit_url: null ---- - -The `HypercertClient` is a core class in the hypercerts SDK, providing a high-level interface to interact with the hypercerts system. - -It encapsulates the logic for storage, evaluation, indexing, and wallet interactions, abstracting the complexity and providing a simple API for users. -The client is read-only if no walletClient was found. - -**`Example`** - -```ts -const config: Partial = { - chain: { id: 11155111 }, -}; -const client = new HypercertClient(config); -``` - -**`Param`** - -The configuration options for the client. - -## Implements - -- [`HypercertClientInterface`](../interfaces/HypercertClientInterface.md) - -## Constructors - -### constructor - -• **new HypercertClient**(`config`): [`HypercertClient`](HypercertClient.md) - -Creates a new instance of the `HypercertClient` class. - -This constructor takes a `config` parameter that is used to configure the client. The `config` parameter should be a `HypercertClientConfig` object. If the public client cannot be connected, it throws a `ClientError`. - -#### Parameters - -| Name | Type | Description | -| :------- | :------------------------------------------------------------------------- | :---------------------------------------- | -| `config` | `Partial`<[`HypercertClientConfig`](../modules.md#hypercertclientconfig)\> | The configuration options for the client. | - -#### Returns - -[`HypercertClient`](HypercertClient.md) - -**`Throws`** - -Will throw a `ClientError` if the public client cannot be connected. - -#### Defined in - -[sdk/src/client.ts:59](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L59) - -## Properties - -### \_config - -• `Readonly` **\_config**: `Partial`<[`HypercertClientConfig`](../modules.md#hypercertclientconfig)\> - -#### Defined in - -[sdk/src/client.ts:42](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L42) - ---- - -### \_evaluator - -• `Private` `Optional` **\_evaluator**: `HypercertEvaluator` - -#### Defined in - -[sdk/src/client.ts:45](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L45) - ---- - -### \_indexer - -• `Private` **\_indexer**: `HypercertIndexer` - -#### Defined in - -[sdk/src/client.ts:46](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L46) - ---- - -### \_publicClient - -• `Private` **\_publicClient**: `Object` - -#### Type declaration - -| Name | Type | Description | -| :------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `account` | `undefined` | The Account of the Client. | -| `batch?` | \{ `multicall?`: `boolean` \| \{ batchSize?: number \| undefined; wait?: number \| undefined; } } | Flags for batch settings. | -| `batch.multicall?` | `boolean` \| \{ batchSize?: number \| undefined; wait?: number \| undefined; } | Toggle to enable `eth_call` multicall aggregation. | -| `cacheTime` | `number` | Time (in ms) that cached data will remain in memory. | -| `call` | (`parameters`: `CallParameters`<`undefined` \| `Chain`\>) => `Promise`<`CallReturnType`\> | Executes a new message call immediately without submitting a transaction to the network. - Docs: https://viem.sh/docs/actions/public/call - JSON-RPC Methods: [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const data = await client.call({ account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', }) ` | -| `ccipRead?` | `false` \| \{ `request?`: (`parameters`: `CcipRequestParameters`) => `Promise`<\`0x$\{string}\`\> } | [CCIP Read](https://eips.ethereum.org/EIPS/eip-3668) configuration. | -| `chain` | `undefined` \| `Chain` | Chain for the client. | -| `createBlockFilter` | () => `Promise`<\{ `id`: \`0x$\{string}\` ; `request`: `EIP1193RequestFn` ; `type`: `"block"` }\> | Creates a Filter to listen for new block hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges). - Docs: https://viem.sh/docs/actions/public/createBlockFilter - JSON-RPC Methods: [`eth_newBlockFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newBlockFilter) **`Example`** `ts import { createPublicClient, createBlockFilter, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await createBlockFilter(client) // { id: "0x345a6572337856574a76364e457a4366", type: 'block' } ` | -| `createContractEventFilter` | (`args`: `CreateContractEventFilterParameters`<`TAbi`, `TEventName`, `TArgs`, `TStrict`, `TFromBlock`, `TToBlock`\>) => `Promise`<`CreateContractEventFilterReturnType`<`TAbi`, `TEventName`, `TArgs`, `TStrict`, `TFromBlock`, `TToBlock`\>\> | Creates a Filter to retrieve event logs that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges) or [`getFilterLogs`](https://viem.sh/docs/actions/public/getFilterLogs). - Docs: https://viem.sh/docs/contract/createContractEventFilter **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createContractEventFilter({ abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']), }) ` | -| `createEventFilter` | (`args?`: `CreateEventFilterParameters`<`TAbiEvent`, `TAbiEvents`, `TStrict`, `TFromBlock`, `TToBlock`, `_EventName`, `_Args`\>) => `Promise`<\{ [K in keyof Filter<"event", TAbiEvents, \_EventName, \_Args, TStrict, TFromBlock, TToBlock\>]: Filter<"event", TAbiEvents, ... 4 more ..., TToBlock\>[K]; }\> | Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new events that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges). - Docs: https://viem.sh/docs/actions/public/createEventFilter - JSON-RPC Methods: [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createEventFilter({ address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2', }) ` | -| `createPendingTransactionFilter` | () => `Promise`<\{ `id`: \`0x$\{string}\` ; `request`: `EIP1193RequestFn` ; `type`: `"transaction"` }\> | Creates a Filter to listen for new pending transaction hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges). - Docs: https://viem.sh/docs/actions/public/createPendingTransactionFilter - JSON-RPC Methods: [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createPendingTransactionFilter() // { id: "0x345a6572337856574a76364e457a4366", type: 'transaction' } ` | -| `estimateContractGas` | (`args`: `EstimateContractGasParameters`<`abi`, `functionName`, `args`, `TChain`\>) => `Promise`<`bigint`\> | Estimates the gas required to successfully execute a contract write function call. - Docs: https://viem.sh/docs/contract/estimateContractGas **`Remarks`** Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`estimateGas` action](https://viem.sh/docs/actions/public/estimateGas) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const gas = await client.estimateContractGas({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint() public']), functionName: 'mint', account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', }) ` | -| `estimateFeesPerGas` | (`args?`: `EstimateFeesPerGasParameters`<`undefined` \| `Chain`, `TChainOverride`, `TType`\>) => `Promise`<`EstimateFeesPerGasReturnType`\> | Returns an estimate for the fees per gas for a transaction to be included in the next block. - Docs: https://viem.sh/docs/actions/public/estimateFeesPerGas **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const maxPriorityFeePerGas = await client.estimateFeesPerGas() // { maxFeePerGas: ..., maxPriorityFeePerGas: ... } ` | -| `estimateGas` | (`args`: `EstimateGasParameters`<`undefined` \| `Chain`\>) => `Promise`<`bigint`\> | Estimates the gas necessary to complete a transaction without submitting it to the network. - Docs: https://viem.sh/docs/actions/public/estimateGas - JSON-RPC Methods: [`eth_estimateGas`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_estimategas) **`Example`** `ts import { createPublicClient, http, parseEther } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const gasEstimate = await client.estimateGas({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: parseEther('1'), }) ` | -| `estimateMaxPriorityFeePerGas` | (`args?`: \{ `chain`: `null` \| `TChainOverride` }) => `Promise`<`bigint`\> | Returns an estimate for the max priority fee per gas (in wei) for a transaction to be included in the next block. - Docs: https://viem.sh/docs/actions/public/estimateMaxPriorityFeePerGas **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const maxPriorityFeePerGas = await client.estimateMaxPriorityFeePerGas() // 10000000n ` | -| `extend` | (`fn`: (`client`: `Client`<`Transport`, `undefined` \| `Chain`, `undefined`, `PublicRpcSchema`, `PublicActions`<`Transport`, `undefined` \| `Chain`\>\>) => `client`) => `Client`<`Transport`, `undefined` \| `Chain`, `undefined`, `PublicRpcSchema`, \{ [K in keyof client]: client[K]; } & `PublicActions`<`Transport`, `undefined` \| `Chain`\>\> | - | -| `getBalance` | (`args`: `GetBalanceParameters`) => `Promise`<`bigint`\> | Returns the balance of an address in wei. - Docs: https://viem.sh/docs/actions/public/getBalance - JSON-RPC Methods: [`eth_getBalance`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance) **`Remarks`** You can convert the balance to ether units with [`formatEther`](https://viem.sh/docs/utilities/formatEther). `ts const balance = await getBalance(client, { address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', blockTag: 'safe' }) const balanceAsEther = formatEther(balance) // "6.942" ` **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const balance = await client.getBalance({ address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', }) // 10000000000000000000000n (wei) ` | -| `getBlobBaseFee` | () => `Promise`<`bigint`\> | Returns the base fee per blob gas in wei. - Docs: https://viem.sh/docs/actions/public/getBlobBaseFee - JSON-RPC Methods: [`eth_blobBaseFee`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blobBaseFee) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { getBlobBaseFee } from 'viem/public' const client = createPublicClient({ chain: mainnet, transport: http(), }) const blobBaseFee = await client.getBlobBaseFee() ` | -| `getBlock` | (`args?`: `GetBlockParameters`<`TIncludeTransactions`, `TBlockTag`\>) => `Promise`<\{ number: TBlockTag extends "pending" ? null : bigint; nonce: TBlockTag extends "pending" ? null : \`0x$\{string}\`; hash: TBlockTag extends "pending" ? null : \`0x$\{string}\`; ... 22 more ...; transactions: TIncludeTransactions extends true ? (\{ ...; } \| ... 2 more ... \| \{ ...; })[] : \`0x$\{string}\`[]; }\> | Returns information about a block at a block number, hash, or tag. - Docs: https://viem.sh/docs/actions/public/getBlock - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/fetching-blocks - JSON-RPC Methods: - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) for `blockNumber` & `blockTag`. - Calls [`eth_getBlockByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash) for `blockHash`. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const block = await client.getBlock() ` | -| `getBlockNumber` | (`args?`: `GetBlockNumberParameters`) => `Promise`<`bigint`\> | Returns the number of the most recent block seen. - Docs: https://viem.sh/docs/actions/public/getBlockNumber - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/fetching-blocks - JSON-RPC Methods: [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const blockNumber = await client.getBlockNumber() // 69420n ` | -| `getBlockTransactionCount` | (`args?`: `GetBlockTransactionCountParameters`) => `Promise`<`number`\> | Returns the number of Transactions at a block number, hash, or tag. - Docs: https://viem.sh/docs/actions/public/getBlockTransactionCount - JSON-RPC Methods: - Calls [`eth_getBlockTransactionCountByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbynumber) for `blockNumber` & `blockTag`. - Calls [`eth_getBlockTransactionCountByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbyhash) for `blockHash`. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const count = await client.getBlockTransactionCount() ` | -| `getBytecode` | (`args`: `GetBytecodeParameters`) => `Promise`<`GetBytecodeReturnType`\> | Retrieves the bytecode at an address. - Docs: https://viem.sh/docs/contract/getBytecode - JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const code = await client.getBytecode({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', }) ` | -| `getChainId` | () => `Promise`<`number`\> | Returns the chain ID associated with the current network. - Docs: https://viem.sh/docs/actions/public/getChainId - JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const chainId = await client.getChainId() // 1 ` | -| `getContractEvents` | (`args`: `GetContractEventsParameters`<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`\>) => `Promise`<`GetContractEventsReturnType`<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`\>\> | Returns a list of event logs emitted by a contract. - Docs: https://viem.sh/docs/actions/public/getContractEvents - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { wagmiAbi } from './abi' const client = createPublicClient({ chain: mainnet, transport: http(), }) const logs = await client.getContractEvents(client, { address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: wagmiAbi, eventName: 'Transfer' }) ` | -| `getEnsAddress` | (`args`: \{ blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; coinType?: number \| undefined; gatewayUrls?: string[] \| undefined; name: string; strict?: boolean \| undefined; universalResolverAddress?: \`0x$\{string}\` \| undefined; }) => `Promise`<`GetEnsAddressReturnType`\> | Gets address for ENS name. - Docs: https://viem.sh/docs/ens/actions/getEnsAddress - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract. Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { normalize } from 'viem/ens' const client = createPublicClient({ chain: mainnet, transport: http(), }) const ensAddress = await client.getEnsAddress({ name: normalize('wevm.eth'), }) // '0xd2135CfB216b74109775236E36d4b433F1DF507B' ` | -| `getEnsAvatar` | (`args`: \{ name: string; blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; gatewayUrls?: string[] \| undefined; strict?: boolean \| undefined; universalResolverAddress?: \`0x$\{string}\` \| undefined; assetGatewayUrls?: AssetGatewayUrls \| undefined; }) => `Promise`<`GetEnsAvatarReturnType`\> | Gets the avatar of an ENS name. - Docs: https://viem.sh/docs/ens/actions/getEnsAvatar - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls [`getEnsText`](https://viem.sh/docs/ens/actions/getEnsText) with `key` set to `'avatar'`. Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { normalize } from 'viem/ens' const client = createPublicClient({ chain: mainnet, transport: http(), }) const ensAvatar = await client.getEnsAvatar({ name: normalize('wevm.eth'), }) // 'https://ipfs.io/ipfs/Qma8mnp6xV3J2cRNf3mTth5C8nV11CAnceVinc3y8jSbio' ` | -| `getEnsName` | (`args`: \{ blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; address: \`0x$\{string}\`; gatewayUrls?: string[] \| undefined; strict?: boolean \| undefined; universalResolverAddress?: \`0x$\{string}\` \| undefined; }) => `Promise`<`GetEnsNameReturnType`\> | Gets primary name for specified address. - Docs: https://viem.sh/docs/ens/actions/getEnsName - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls `reverse(bytes)` on ENS Universal Resolver Contract to "reverse resolve" the address to the primary ENS name. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const ensName = await client.getEnsName({ address: '0xd2135CfB216b74109775236E36d4b433F1DF507B', }) // 'wevm.eth' ` | -| `getEnsResolver` | (`args`: \{ blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; name: string; universalResolverAddress?: \`0x$\{string}\` \| undefined; }) => `Promise`<\`0x$\{string}\`\> | Gets resolver for ENS name. - Docs: https://viem.sh/docs/ens/actions/getEnsResolver - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls `findResolver(bytes)` on ENS Universal Resolver Contract to retrieve the resolver of an ENS name. Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { normalize } from 'viem/ens' const client = createPublicClient({ chain: mainnet, transport: http(), }) const resolverAddress = await client.getEnsResolver({ name: normalize('wevm.eth'), }) // '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41' ` | -| `getEnsText` | (`args`: \{ blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; name: string; gatewayUrls?: string[] \| undefined; key: string; strict?: boolean \| undefined; universalResolverAddress?: \`0x$\{string}\` \| undefined; }) => `Promise`<`GetEnsTextReturnType`\> | Gets a text record for specified ENS name. - Docs: https://viem.sh/docs/ens/actions/getEnsResolver - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract. Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { normalize } from 'viem/ens' const client = createPublicClient({ chain: mainnet, transport: http(), }) const twitterRecord = await client.getEnsText({ name: normalize('wevm.eth'), key: 'com.twitter', }) // 'wagmi_sh' ` | -| `getFeeHistory` | (`args`: `GetFeeHistoryParameters`) => `Promise`<`GetFeeHistoryReturnType`\> | Returns a collection of historical gas information. - Docs: https://viem.sh/docs/actions/public/getFeeHistory - JSON-RPC Methods: [`eth_feeHistory`](https://docs.alchemy.com/reference/eth-feehistory) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const feeHistory = await client.getFeeHistory({ blockCount: 4, rewardPercentiles: [25, 75], }) ` | -| `getFilterChanges` | (`args`: `GetFilterChangesParameters`<`TFilterType`, `TAbi`, `TEventName`, `TStrict`, `TFromBlock`, `TToBlock`\>) => `Promise`<`GetFilterChangesReturnType`<`TFilterType`, `TAbi`, `TEventName`, `TStrict`, `TFromBlock`, `TToBlock`\>\> | Returns a list of logs or hashes based on a [Filter](/docs/glossary/terms#filter) since the last time it was called. - Docs: https://viem.sh/docs/actions/public/getFilterChanges - JSON-RPC Methods: [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges) **`Remarks`** A Filter can be created from the following actions: - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter) - [`createContractEventFilter`](https://viem.sh/docs/contract/createContractEventFilter) - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter) - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter) Depending on the type of filter, the return value will be different: - If the filter was created with `createContractEventFilter` or `createEventFilter`, it returns a list of logs. - If the filter was created with `createPendingTransactionFilter`, it returns a list of transaction hashes. - If the filter was created with `createBlockFilter`, it returns a list of block hashes. **`Example`** `ts // Blocks import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createBlockFilter() const hashes = await client.getFilterChanges({ filter }) ` **`Example`** `ts // Contract Events import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createContractEventFilter({ address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']), eventName: 'Transfer', }) const logs = await client.getFilterChanges({ filter }) ` **`Example`** `ts // Raw Events import { createPublicClient, http, parseAbiItem } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createEventFilter({ address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'), }) const logs = await client.getFilterChanges({ filter }) ` **`Example`** `ts // Transactions import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createPendingTransactionFilter() const hashes = await client.getFilterChanges({ filter }) ` | -| `getFilterLogs` | (`args`: `GetFilterLogsParameters`<`TAbi`, `TEventName`, `TStrict`, `TFromBlock`, `TToBlock`\>) => `Promise`<`GetFilterLogsReturnType`<`TAbi`, `TEventName`, `TStrict`, `TFromBlock`, `TToBlock`\>\> | Returns a list of event logs since the filter was created. - Docs: https://viem.sh/docs/actions/public/getFilterLogs - JSON-RPC Methods: [`eth_getFilterLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterlogs) **`Remarks`** `getFilterLogs` is only compatible with **event filters**. **`Example`** `ts import { createPublicClient, http, parseAbiItem } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createEventFilter({ address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'), }) const logs = await client.getFilterLogs({ filter }) ` | -| `getGasPrice` | () => `Promise`<`bigint`\> | Returns the current price of gas (in wei). - Docs: https://viem.sh/docs/actions/public/getGasPrice - JSON-RPC Methods: [`eth_gasPrice`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gasprice) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const gasPrice = await client.getGasPrice() ` | -| `getLogs` | (`args?`: `GetLogsParameters`<`TAbiEvent`, `TAbiEvents`, `TStrict`, `TFromBlock`, `TToBlock`\>) => `Promise`<`GetLogsReturnType`<`TAbiEvent`, `TAbiEvents`, `TStrict`, `TFromBlock`, `TToBlock`\>\> | Returns a list of event logs matching the provided parameters. - Docs: https://viem.sh/docs/actions/public/getLogs - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/filters-and-logs/event-logs - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) **`Example`** `ts import { createPublicClient, http, parseAbiItem } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const logs = await client.getLogs() ` | -| `getProof` | (`args`: `GetProofParameters`) => `Promise`<`GetProofReturnType`\> | Returns the account and storage values of the specified account including the Merkle-proof. - Docs: https://viem.sh/docs/actions/public/getProof - JSON-RPC Methods: - Calls [`eth_getProof`](https://eips.ethereum.org/EIPS/eip-1186) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const block = await client.getProof({ address: '0x...', storageKeys: ['0x...'], }) ` | -| `getStorageAt` | (`args`: `GetStorageAtParameters`) => `Promise`<`GetStorageAtReturnType`\> | Returns the value from a storage slot at a given address. - Docs: https://viem.sh/docs/contract/getStorageAt - JSON-RPC Methods: [`eth_getStorageAt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getstorageat) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { getStorageAt } from 'viem/contract' const client = createPublicClient({ chain: mainnet, transport: http(), }) const code = await client.getStorageAt({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', slot: toHex(0), }) ` | -| `getTransaction` | (`args`: `GetTransactionParameters`<`TBlockTag`\>) => `Promise`<\{ type: "legacy"; to: \`0x$\{string}\` \| null; from: \`0x$\{string}\`; gas: bigint; nonce: number; value: bigint; gasPrice: bigint; maxFeePerBlobGas?: undefined; maxFeePerGas?: undefined; maxPriorityFeePerGas?: undefined; ... 12 more ...; transactionIndex: (TBlockTag extends "pending" ? true : false) extends true ? null :... \| \{ type: "eip2930"; to: \`0x$\{string}\` \| null; from: \`0x$\{string}\`; gas: bigint; nonce: number; value: bigint; gasPrice: bigint; maxFeePerBlobGas?: undefined; maxFeePerGas?: undefined; maxPriorityFeePerGas?: undefined; ... 12 more ...; transactionIndex: (TBlockTag extends "pending" ? true : false) extends true ? null ... \| \{ type: "eip1559"; to: \`0x$\{string}\` \| null; from: \`0x$\{string}\`; gas: bigint; nonce: number; value: bigint; gasPrice?: undefined; maxFeePerBlobGas?: undefined; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; ... 12 more ...; transactionIndex: (TBlockTag extends "pending" ? true : false) extends true ? null : nu... \| \{ type: "eip4844"; to: \`0x$\{string}\` \| null; from: \`0x$\{string}\`; gas: bigint; nonce: number; value: bigint; gasPrice?: undefined; maxFeePerBlobGas: bigint; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; ... 12 more ...; transactionIndex: (TBlockTag extends "pending" ? true : false) extends true ? null : number...\> | Returns information about a [Transaction](https://viem.sh/docs/glossary/terms#transaction) given a hash or block identifier. - Docs: https://viem.sh/docs/actions/public/getTransaction - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/fetching-transactions - JSON-RPC Methods: [`eth_getTransactionByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionByHash) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const transaction = await client.getTransaction({ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', }) ` | -| `getTransactionConfirmations` | (`args`: `GetTransactionConfirmationsParameters`<`undefined` \| `Chain`\>) => `Promise`<`bigint`\> | Returns the number of blocks passed (confirmations) since the transaction was processed on a block. - Docs: https://viem.sh/docs/actions/public/getTransactionConfirmations - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/fetching-transactions - JSON-RPC Methods: [`eth_getTransactionConfirmations`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionConfirmations) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const confirmations = await client.getTransactionConfirmations({ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', }) ` | -| `getTransactionCount` | (`args`: `GetTransactionCountParameters`) => `Promise`<`number`\> | Returns the number of [Transactions](https://viem.sh/docs/glossary/terms#transaction) an Account has broadcast / sent. - Docs: https://viem.sh/docs/actions/public/getTransactionCount - JSON-RPC Methods: [`eth_getTransactionCount`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactioncount) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const transactionCount = await client.getTransactionCount({ address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', }) ` | -| `getTransactionReceipt` | (`args`: `GetTransactionReceiptParameters`) => `Promise`<`TransactionReceipt`\> | Returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt) given a [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. - Docs: https://viem.sh/docs/actions/public/getTransactionReceipt - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/fetching-transactions - JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const transactionReceipt = await client.getTransactionReceipt({ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', }) ` | -| `key` | `string` | A key for the client. | -| `multicall` | (`args`: `MulticallParameters`<`contracts`, `allowFailure`\>) => `Promise`<`MulticallReturnType`<`contracts`, `allowFailure`\>\> | Similar to [`readContract`](https://viem.sh/docs/contract/readContract), but batches up multiple functions on a contract in a single RPC call via the [`multicall3` contract](https://github.com/mds1/multicall). - Docs: https://viem.sh/docs/contract/multicall **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const abi = parseAbi([ 'function balanceOf(address) view returns (uint256)', 'function totalSupply() view returns (uint256)', ]) const result = await client.multicall({ contracts: [ { address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi, functionName: 'balanceOf', args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'], }, { address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi, functionName: 'totalSupply', }, ], }) // [{ result: 424122n, status: 'success' }, { result: 1000000n, status: 'success' }] ` | -| `name` | `string` | A name for the client. | -| `pollingInterval` | `number` | Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. | -| `prepareTransactionRequest` | (`args`: `PrepareTransactionRequestParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`, `TAccountOverride`, `TRequest`\>) => `Promise`<\{ [K in keyof (UnionRequiredBy, "transactionRequest", TransactionRequest\>, "from"\> & (DeriveChain<...\> extends Chain ? \{ ...; } : \{ ...; }) & (DeriveAccount<...\> extends Account ? \{ ...; } : \{ ...; }), IsNever<...\> extends true ? un...\> | Prepares a transaction request for signing. - Docs: https://viem.sh/docs/actions/wallet/prepareTransactionRequest **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x0000000000000000000000000000000000000000', value: 1n, }) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ to: '0x0000000000000000000000000000000000000000', value: 1n, }) ` | -| `readContract` | (`args`: `ReadContractParameters`<`abi`, `functionName`, `args`\>) => `Promise`<`ReadContractReturnType`<`abi`, `functionName`, `args`\>\> | Calls a read-only function on a contract, and returns the response. - Docs: https://viem.sh/docs/contract/readContract - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/reading-contracts **`Remarks`** A "read-only" function (constant function) on a Solidity contract is denoted by a `view` or `pure` keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas. Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' import { readContract } from 'viem/contract' const client = createPublicClient({ chain: mainnet, transport: http(), }) const result = await client.readContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function balanceOf(address) view returns (uint256)']), functionName: 'balanceOf', args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'], }) // 424122n ` | -| `request` | `EIP1193RequestFn`<`PublicRpcSchema`\> | Request function wrapped with friendly error handling | -| `sendRawTransaction` | (`args`: `SendRawTransactionParameters`) => `Promise`<\`0x$\{string}\`\> | Sends a **signed** transaction to the network - Docs: https://viem.sh/docs/actions/wallet/sendRawTransaction - JSON-RPC Method: [`eth_sendRawTransaction`](https://ethereum.github.io/execution-apis/api-documentation/) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' import { sendRawTransaction } from 'viem/wallet' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const hash = await client.sendRawTransaction({ serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33' }) ` | -| `simulateContract` | (`args`: `SimulateContractParameters`<`abi`, `functionName`, `args`, `undefined` \| `Chain`, `chainOverride`, `accountOverride`\>) => `Promise`<`SimulateContractReturnType`<`abi`, `functionName`, `args`, `undefined` \| `Chain`, `undefined` \| `Account`, `chainOverride`, `accountOverride`\>\> | Simulates/validates a contract interaction. This is useful for retrieving **return data** and **revert reasons** of contract write functions. - Docs: https://viem.sh/docs/contract/simulateContract - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/writing-to-contracts **`Remarks`** This function does not require gas to execute and _**does not**_ change the state of the blockchain. It is almost identical to [`readContract`](https://viem.sh/docs/contract/readContract), but also supports contract write functions. Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const result = await client.simulateContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint(uint32) view returns (uint32)']), functionName: 'mint', args: ['69420'], account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', }) ` | -| `transport` | `TransportConfig`<`string`, `EIP1193RequestFn`\> & `Record`<`string`, `any`\> | The RPC transport | -| `type` | `string` | The type of client. | -| `uid` | `string` | A unique ID for the client. | -| `uninstallFilter` | (`args`: `UninstallFilterParameters`) => `Promise`<`boolean`\> | Destroys a Filter that was created from one of the following Actions: - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter) - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter) - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter) - Docs: https://viem.sh/docs/actions/public/uninstallFilter - JSON-RPC Methods: [`eth_uninstallFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_uninstallFilter) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { createPendingTransactionFilter, uninstallFilter } from 'viem/public' const filter = await client.createPendingTransactionFilter() const uninstalled = await client.uninstallFilter({ filter }) // true ` | -| `verifyMessage` | (`args`: `VerifyMessageParameters`) => `Promise`<`boolean`\> | - | -| `verifyTypedData` | (`args`: `VerifyTypedDataParameters`) => `Promise`<`boolean`\> | - | -| `waitForTransactionReceipt` | (`args`: `WaitForTransactionReceiptParameters`<`undefined` \| `Chain`\>) => `Promise`<`TransactionReceipt`\> | Waits for the [Transaction](https://viem.sh/docs/glossary/terms#transaction) to be included on a [Block](https://viem.sh/docs/glossary/terms#block) (one confirmation), and then returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt). If the Transaction reverts, then the action will throw an error. - Docs: https://viem.sh/docs/actions/public/waitForTransactionReceipt - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/sending-transactions - JSON-RPC Methods: - Polls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt) on each block until it has been processed. - If a Transaction has been replaced: - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) and extracts the transactions - Checks if one of the Transactions is a replacement - If so, calls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt). **`Remarks`** The `waitForTransactionReceipt` action additionally supports Replacement detection (e.g. sped up Transactions). Transactions can be replaced when a user modifies their transaction in their wallet (to speed up or cancel). Transactions are replaced when they are sent from the same nonce. There are 3 types of Transaction Replacement reasons: - `repriced`: The gas price has been modified (e.g. different `maxFeePerGas`) - `cancelled`: The Transaction has been cancelled (e.g. `value === 0n`) - `replaced`: The Transaction has been replaced (e.g. different `value` or `data`) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const transactionReceipt = await client.waitForTransactionReceipt({ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', }) ` | -| `watchBlockNumber` | (`args`: `WatchBlockNumberParameters`) => `WatchBlockNumberReturnType` | Watches and returns incoming block numbers. - Docs: https://viem.sh/docs/actions/public/watchBlockNumber - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/watching-blocks - JSON-RPC Methods: - When `poll: true`, calls [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) on a polling interval. - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newHeads"` event. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = await client.watchBlockNumber({ onBlockNumber: (blockNumber) => console.log(blockNumber), }) ` | -| `watchBlocks` | (`args`: `WatchBlocksParameters`<`Transport`, `undefined` \| `Chain`, `TIncludeTransactions`, `TBlockTag`\>) => `WatchBlocksReturnType` | Watches and returns information for incoming blocks. - Docs: https://viem.sh/docs/actions/public/watchBlocks - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/watching-blocks - JSON-RPC Methods: - When `poll: true`, calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getBlockByNumber) on a polling interval. - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newHeads"` event. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = await client.watchBlocks({ onBlock: (block) => console.log(block), }) ` | -| `watchContractEvent` | (`args`: `WatchContractEventParameters`<`TAbi`, `TEventName`, `TStrict`, `Transport`\>) => `WatchContractEventReturnType` | Watches and returns emitted contract event logs. - Docs: https://viem.sh/docs/contract/watchContractEvent **`Remarks`** This Action will batch up all the event logs found within the [`pollingInterval`](https://viem.sh/docs/contract/watchContractEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/contract/watchContractEvent#onLogs). `watchContractEvent` will attempt to create an [Event Filter](https://viem.sh/docs/contract/createContractEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchContractEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead. **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = client.watchContractEvent({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['event Transfer(address indexed from, address indexed to, uint256 value)']), eventName: 'Transfer', args: { from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b' }, onLogs: (logs) => console.log(logs), }) ` | -| `watchEvent` | (`args`: `WatchEventParameters`<`TAbiEvent`, `TAbiEvents`, `TStrict`, `Transport`\>) => `WatchEventReturnType` | Watches and returns emitted [Event Logs](https://viem.sh/docs/glossary/terms#event-log). - Docs: https://viem.sh/docs/actions/public/watchEvent - JSON-RPC Methods: - **RPC Provider supports `eth_newFilter`:** - Calls [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) to create a filter (called on initialize). - On a polling interval, it will call [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges). - **RPC Provider does not support `eth_newFilter`:** - Calls [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) for each block between the polling interval. **`Remarks`** This Action will batch up all the Event Logs found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/actions/public/watchEvent#onLogs). `watchEvent` will attempt to create an [Event Filter](https://viem.sh/docs/actions/public/createEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = client.watchEvent({ onLogs: (logs) => console.log(logs), }) ` | -| `watchPendingTransactions` | (`args`: `WatchPendingTransactionsParameters`<`Transport`\>) => `WatchPendingTransactionsReturnType` | Watches and returns pending transaction hashes. - Docs: https://viem.sh/docs/actions/public/watchPendingTransactions - JSON-RPC Methods: - When `poll: true` - Calls [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter) to initialize the filter. - Calls [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getFilterChanges) on a polling interval. - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newPendingTransactions"` event. **`Remarks`** This Action will batch up all the pending transactions found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchPendingTransactions#pollinginterval-optional), and invoke them via [`onTransactions`](https://viem.sh/docs/actions/public/watchPendingTransactions#ontransactions). **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = await client.watchPendingTransactions({ onTransactions: (hashes) => console.log(hashes), }) ` | - -#### Defined in - -[sdk/src/client.ts:47](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L47) - ---- - -### \_storage - -• `Private` **\_storage**: [`HypercertsStorage`](HypercertsStorage.md) - -#### Defined in - -[sdk/src/client.ts:43](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L43) - ---- - -### \_walletClient - -• `Private` `Optional` **\_walletClient**: `Object` - -#### Type declaration - -| Name | Type | Description | -| :-------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `account` | `undefined` \| `Account` | The Account of the Client. | -| `addChain` | (`args`: `AddChainParameters`) => `Promise`<`void`\> | Adds an EVM chain to the wallet. - Docs: https://viem.sh/docs/actions/wallet/addChain - JSON-RPC Methods: [`eth_addEthereumChain`](https://eips.ethereum.org/EIPS/eip-3085) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { optimism } from 'viem/chains' const client = createWalletClient({ transport: custom(window.ethereum), }) await client.addChain({ chain: optimism }) ` | -| `batch?` | \{ `multicall?`: `boolean` \| \{ batchSize?: number \| undefined; wait?: number \| undefined; } } | Flags for batch settings. | -| `batch.multicall?` | `boolean` \| \{ batchSize?: number \| undefined; wait?: number \| undefined; } | Toggle to enable `eth_call` multicall aggregation. | -| `cacheTime` | `number` | Time (in ms) that cached data will remain in memory. | -| `ccipRead?` | `false` \| \{ `request?`: (`parameters`: `CcipRequestParameters`) => `Promise`<\`0x$\{string}\`\> } | [CCIP Read](https://eips.ethereum.org/EIPS/eip-3668) configuration. | -| `chain` | `undefined` \| `Chain` | Chain for the client. | -| `deployContract` | (`args`: `DeployContractParameters`<`abi`, `undefined` \| `Chain`, `undefined` \| `Account`, `chainOverride`\>) => `Promise`<\`0x$\{string}\`\> | Deploys a contract to the network, given bytecode and constructor arguments. - Docs: https://viem.sh/docs/contract/deployContract - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/deploying-contracts **`Example`** `ts import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(), }) const hash = await client.deployContract({ abi: [], account: '0x…, bytecode: '0x608060405260405161083e38038061083e833981016040819052610...', }) ` | -| `extend` | (`fn`: (`client`: `Client`<`Transport`, `undefined` \| `Chain`, `undefined` \| `Account`, `WalletRpcSchema`, `WalletActions`<`undefined` \| `Chain`, `undefined` \| `Account`\>\>) => `client`) => `Client`<`Transport`, `undefined` \| `Chain`, `undefined` \| `Account`, `WalletRpcSchema`, \{ [K in keyof client]: client[K]; } & `WalletActions`<`undefined` \| `Chain`, `undefined` \| `Account`\>\> | - | -| `getAddresses` | () => `Promise`<`GetAddressesReturnType`\> | Returns a list of account addresses owned by the wallet or client. - Docs: https://viem.sh/docs/actions/wallet/getAddresses - JSON-RPC Methods: [`eth_accounts`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_accounts) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const accounts = await client.getAddresses() ` | -| `getChainId` | () => `Promise`<`number`\> | Returns the chain ID associated with the current network. - Docs: https://viem.sh/docs/actions/public/getChainId - JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid) **`Example`** `ts import { createWalletClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const chainId = await client.getChainId() // 1 ` | -| `getPermissions` | () => `Promise`<`GetPermissionsReturnType`\> | Gets the wallets current permissions. - Docs: https://viem.sh/docs/actions/wallet/getPermissions - JSON-RPC Methods: [`wallet_getPermissions`](https://eips.ethereum.org/EIPS/eip-2255) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const permissions = await client.getPermissions() ` | -| `key` | `string` | A key for the client. | -| `name` | `string` | A name for the client. | -| `pollingInterval` | `number` | Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. | -| `prepareTransactionRequest` | (`args`: `PrepareTransactionRequestParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`, `TAccountOverride`, `TRequest`\>) => `Promise`<\{ [K in keyof (UnionRequiredBy, "transactionRequest", TransactionRequest\>, "from"\> & (DeriveChain<...\> extends Chain ? \{ ...; } : \{ ...; }) & (DeriveAccount<...\> extends Account ? \{ ...; } : \{ ...; }), IsNever<...\> extends true ? un...\> | Prepares a transaction request for signing. - Docs: https://viem.sh/docs/actions/wallet/prepareTransactionRequest **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x0000000000000000000000000000000000000000', value: 1n, }) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ to: '0x0000000000000000000000000000000000000000', value: 1n, }) ` | -| `request` | `EIP1193RequestFn`<`WalletRpcSchema`\> | Request function wrapped with friendly error handling | -| `requestAddresses` | () => `Promise`<`RequestAddressesReturnType`\> | Requests a list of accounts managed by a wallet. - Docs: https://viem.sh/docs/actions/wallet/requestAddresses - JSON-RPC Methods: [`eth_requestAccounts`](https://eips.ethereum.org/EIPS/eip-1102) Sends a request to the wallet, asking for permission to access the user's accounts. After the user accepts the request, it will return a list of accounts (addresses). This API can be useful for dapps that need to access the user's accounts in order to execute transactions or interact with smart contracts. **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const accounts = await client.requestAddresses() ` | -| `requestPermissions` | (`args`: \{ [x: string]: Record; eth_accounts: Record; }) => `Promise`<`RequestPermissionsReturnType`\> | Requests permissions for a wallet. - Docs: https://viem.sh/docs/actions/wallet/requestPermissions - JSON-RPC Methods: [`wallet_requestPermissions`](https://eips.ethereum.org/EIPS/eip-2255) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const permissions = await client.requestPermissions({ eth_accounts: {} }) ` | -| `sendRawTransaction` | (`args`: `SendRawTransactionParameters`) => `Promise`<\`0x$\{string}\`\> | Sends a **signed** transaction to the network - Docs: https://viem.sh/docs/actions/wallet/sendRawTransaction - JSON-RPC Method: [`eth_sendRawTransaction`](https://ethereum.github.io/execution-apis/api-documentation/) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' import { sendRawTransaction } from 'viem/wallet' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const hash = await client.sendRawTransaction({ serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33' }) ` | -| `sendTransaction` | (`args`: `SendTransactionParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`, `TRequest`\>) => `Promise`<\`0x$\{string}\`\> | Creates, signs, and sends a new transaction to the network. - Docs: https://viem.sh/docs/actions/wallet/sendTransaction - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/sending-transactions - JSON-RPC Methods: - JSON-RPC Accounts: [`eth_sendTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction) - Local Accounts: [`eth_sendRawTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const hash = await client.sendTransaction({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: 1000000000000000000n, }) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(), }) const hash = await client.sendTransaction({ to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: 1000000000000000000n, }) ` | -| `signMessage` | (`args`: `SignMessageParameters`<`undefined` \| `Account`\>) => `Promise`<\`0x$\{string}\`\> | Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))`. - Docs: https://viem.sh/docs/actions/wallet/signMessage - JSON-RPC Methods: - JSON-RPC Accounts: [`personal_sign`](https://docs.metamask.io/guide/signing-data#personal-sign) - Local Accounts: Signs locally. No JSON-RPC request. With the calculated signature, you can: - use [`verifyMessage`](https://viem.sh/docs/utilities/verifyMessage) to verify the signature, - use [`recoverMessageAddress`](https://viem.sh/docs/utilities/recoverMessageAddress) to recover the signing address from a signature. **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const signature = await client.signMessage({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', message: 'hello world', }) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(), }) const signature = await client.signMessage({ message: 'hello world', }) ` | -| `signTransaction` | (`args`: `SignTransactionParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`\>) => `Promise`<\`0x02$\{string}\` \| \`0x01$\{string}\` \| \`0x03$\{string}\` \| `TransactionSerializedLegacy`\> | Signs a transaction. - Docs: https://viem.sh/docs/actions/wallet/signTransaction - JSON-RPC Methods: - JSON-RPC Accounts: [`eth_signTransaction`](https://ethereum.github.io/execution-apis/api-documentation/) - Local Accounts: Signs locally. No JSON-RPC request. **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x0000000000000000000000000000000000000000', value: 1n, }) const signature = await client.signTransaction(request) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ to: '0x0000000000000000000000000000000000000000', value: 1n, }) const signature = await client.signTransaction(request) ` | -| `signTypedData` | (`args`: `SignTypedDataParameters`<`TTypedData`, `TPrimaryType`, `undefined` \| `Account`\>) => `Promise`<\`0x$\{string}\`\> | Signs typed data and calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))`. - Docs: https://viem.sh/docs/actions/wallet/signTypedData - JSON-RPC Methods: - JSON-RPC Accounts: [`eth_signTypedData_v4`](https://docs.metamask.io/guide/signing-data#signtypeddata-v4) - Local Accounts: Signs locally. No JSON-RPC request. **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const signature = await client.signTypedData({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', domain: { name: 'Ether Mail', version: '1', chainId: 1, verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', }, types: { Person: [ { name: 'name', type: 'string' }, { name: 'wallet', type: 'address' }, ], Mail: [ { name: 'from', type: 'Person' }, { name: 'to', type: 'Person' }, { name: 'contents', type: 'string' }, ], }, primaryType: 'Mail', message: { from: { name: 'Cow', wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', }, to: { name: 'Bob', wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', }, contents: 'Hello, Bob!', }, }) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(), }) const signature = await client.signTypedData({ domain: { name: 'Ether Mail', version: '1', chainId: 1, verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', }, types: { Person: [ { name: 'name', type: 'string' }, { name: 'wallet', type: 'address' }, ], Mail: [ { name: 'from', type: 'Person' }, { name: 'to', type: 'Person' }, { name: 'contents', type: 'string' }, ], }, primaryType: 'Mail', message: { from: { name: 'Cow', wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', }, to: { name: 'Bob', wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', }, contents: 'Hello, Bob!', }, }) ` | -| `switchChain` | (`args`: `SwitchChainParameters`) => `Promise`<`void`\> | Switch the target chain in a wallet. - Docs: https://viem.sh/docs/actions/wallet/switchChain - JSON-RPC Methods: [`eth_switchEthereumChain`](https://eips.ethereum.org/EIPS/eip-3326) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet, optimism } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) await client.switchChain({ id: optimism.id }) ` | -| `transport` | `TransportConfig`<`string`, `EIP1193RequestFn`\> & `Record`<`string`, `any`\> | The RPC transport | -| `type` | `string` | The type of client. | -| `uid` | `string` | A unique ID for the client. | -| `watchAsset` | (`args`: `WatchAssetParams`) => `Promise`<`boolean`\> | Adds an EVM chain to the wallet. - Docs: https://viem.sh/docs/actions/wallet/watchAsset - JSON-RPC Methods: [`eth_switchEthereumChain`](https://eips.ethereum.org/EIPS/eip-747) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const success = await client.watchAsset({ type: 'ERC20', options: { address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', decimals: 18, symbol: 'WETH', }, }) ` | -| `writeContract` | (`args`: `WriteContractParameters`<`abi`, `functionName`, `args`, `undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`\>) => `Promise`<\`0x$\{string}\`\> | Executes a write function on a contract. - Docs: https://viem.sh/docs/contract/writeContract - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/writing-to-contracts A "write" function on a Solidity contract modifies the state of the blockchain. These types of functions require gas to be executed, and hence a [Transaction](https://viem.sh/docs/glossary/terms) is needed to be broadcast in order to change the state. Internally, uses a [Wallet Client](https://viem.sh/docs/clients/wallet) to call the [`sendTransaction` action](https://viem.sh/docs/actions/wallet/sendTransaction) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **Warning: The `write` internally sends a transaction – it does not validate if the contract write will succeed (the contract may throw an error). It is highly recommended to [simulate the contract write with `contract.simulate`](https://viem.sh/docs/contract/writeContract#usage) before you execute it.** **`Example`** `ts import { createWalletClient, custom, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const hash = await client.writeContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint(uint32 tokenId) nonpayable']), functionName: 'mint', args: [69420], }) ` **`Example`** `ts // With Validation import { createWalletClient, custom, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const { request } = await client.simulateContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint(uint32 tokenId) nonpayable']), functionName: 'mint', args: [69420], } const hash = await client.writeContract(request) ` | - -#### Defined in - -[sdk/src/client.ts:48](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L48) - ---- - -### readonly - -• **readonly**: `boolean` - -Whether the client is in read-only mode. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[readonly](../interfaces/HypercertClientInterface.md#readonly) - -#### Defined in - -[sdk/src/client.ts:49](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L49) - -## Accessors - -### config - -• `get` **config**(): `Partial`<[`HypercertClientConfig`](../modules.md#hypercertclientconfig)\> - -Gets the config for the client. - -#### Returns - -`Partial`<[`HypercertClientConfig`](../modules.md#hypercertclientconfig)\> - -The client config. - -#### Defined in - -[sdk/src/client.ts:88](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L88) - ---- - -### indexer - -• `get` **indexer**(): `HypercertIndexer` - -Gets the indexer for the client. - -#### Returns - -`HypercertIndexer` - -The indexer. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[indexer](../interfaces/HypercertClientInterface.md#indexer) - -#### Defined in - -[sdk/src/client.ts:104](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L104) - ---- - -### storage - -• `get` **storage**(): [`HypercertsStorage`](HypercertsStorage.md) - -Gets the storage layer for the client. - -#### Returns - -[`HypercertsStorage`](HypercertsStorage.md) - -The storage layer. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[storage](../interfaces/HypercertClientInterface.md#storage) - -#### Defined in - -[sdk/src/client.ts:96](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L96) - -## Methods - -### batchMintClaimFractionsFromAllowlists - -▸ **batchMintClaimFractionsFromAllowlists**(`claimIds`, `units`, `proofs`, `roots?`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Mints multiple claim fractions from allowlists in a batch. - -This method first retrieves the wallet client and account using the `getWallet` method. If the roots are provided, it verifies each proof using the `verifyMerkleProofs` function. If any of the proofs are invalid, it throws an `InvalidOrMissingError`. -It then simulates a contract call to the `batchMintClaimsFromAllowlists` function with the provided parameters and the account, and submits the request using the `submitRequest` method. - -#### Parameters - -| Name | Type | Description | -| :----------- | :------------------------------------------------------- | :------------------------------------------------------------------------ | -| `claimIds` | `bigint`[] | The IDs of the claims to mint. | -| `units` | `bigint`[] | The units of each claim to mint. | -| `proofs` | (\`0x$\{string}\` \| `Uint8Array`)[][] | The proofs for each claim. | -| `roots?` | (\`0x$\{string}\` \| `Uint8Array`)[] | The roots of each proof. If provided, they are used to verify the proofs. | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | Optional overrides for the contract call. | - -#### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A promise that resolves to the transaction hash. - -**`Throws`** - -Will throw an `InvalidOrMissingError` if any of the proofs are invalid. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[batchMintClaimFractionsFromAllowlists](../interfaces/HypercertClientInterface.md#batchmintclaimfractionsfromallowlists) - -#### Defined in - -[sdk/src/client.ts:448](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L448) - ---- - -### batchTransferFractions - -▸ **batchTransferFractions**(`fractionIds`, `to`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Transfers multiple claim fractions to a new owner. - -This method first retrieves the wallet client and account using the `getWallet` method. -It then simulates a contract call to the `safeBatchTransferFrom` function with the provided parameters and the account, and submits the request using the `submitRequest` method. - -#### Parameters - -| Name | Type | -| :------------ | :------------------------------------------------------- | -| `fractionIds` | `bigint`[] | -| `to` | \`0x$\{string}\` | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | - -#### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A promise that resolves to the transaction hash. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[batchTransferFractions](../interfaces/HypercertClientInterface.md#batchtransferfractions) - -#### Defined in - -[sdk/src/client.ts:208](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L208) - ---- - -### burnClaimFraction - -▸ **burnClaimFraction**(`claimId`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Burns a claim fraction. - -This method first retrieves the wallet client and account using the `getWallet` method. It then retrieves the owner of the claim using the `ownerOf` method of the read contract. -If the claim is not owned by the account, it throws a `ClientError`. -It then simulates a contract call to the `burnFraction` function with the provided parameters and the account, and submits the request using the `submitRequest` method. - -#### Parameters - -| Name | Type | Description | -| :----------- | :------------------------------------------------------- | :---------------------------------------- | -| `claimId` | `bigint` | The ID of the claim to burn. | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | Optional overrides for the contract call. | - -#### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A promise that resolves to the transaction hash. - -**`Throws`** - -Will throw a `ClientError` if the claim is not owned by the account. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[burnClaimFraction](../interfaces/HypercertClientInterface.md#burnclaimfraction) - -#### Defined in - -[sdk/src/client.ts:371](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L371) - ---- - -### createAllowlist - -▸ **createAllowlist**(`allowList`, `metaData`, `totalUnits`, `transferRestriction`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Creates an allowlist. - -This method first validates the provided allowlist and metadata using the `validateAllowlist` and `validateMetaData` functions respectively. If either is invalid, it throws a `MalformedDataError`. -It then creates an allowlist from the provided entries and stores it on IPFS using the `storeData` method of the storage client. -After that, it stores the metadata (including the CID of the allowlist) on IPFS using the `storeMetadata` method of the storage client. -Finally, it simulates a contract call to the `createAllowlist` function with the provided parameters and the stored metadata CID, and submits the request using the `submitRequest` method. - -#### Parameters - -| Name | Type | Description | -| :-------------------- | :------------------------------------------------------------- | :---------------------------------------- | -| `allowList` | [`AllowlistEntry`](../modules.md#allowlistentry)[] | The entries for the allowlist. | -| `metaData` | [`HypercertMetadata`](../interfaces/HypercertMetadata.md) | The metadata for the claim. | -| `totalUnits` | `bigint` | The total units for the claim. | -| `transferRestriction` | [`TransferRestrictions`](../modules.md#transferrestrictions-1) | The transfer restrictions for the claim. | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | Optional overrides for the contract call. | - -#### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A promise that resolves to the transaction hash. - -**`Throws`** - -Will throw a `MalformedDataError` if the provided allowlist or metadata is invalid. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[createAllowlist](../interfaces/HypercertClientInterface.md#createallowlist) - -#### Defined in - -[sdk/src/client.ts:241](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L241) - ---- - -### getClaimStoredDataFromTxHash - -▸ **getClaimStoredDataFromTxHash**(`hash`): `Promise`<`ParserReturnType`\> - -#### Parameters - -| Name | Type | -| :----- | :--------------- | -| `hash` | \`0x$\{string}\` | - -#### Returns - -`Promise`<`ParserReturnType`\> - -#### Defined in - -[sdk/src/client.ts:479](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L479) - ---- - -### getCleanedOverrides - -▸ **getCleanedOverrides**(`overrides?`): `Object` - -#### Parameters - -| Name | Type | -| :----------- | :------------------------------------------------------- | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | - -#### Returns - -`Object` - -#### Defined in - -[sdk/src/client.ts:496](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L496) - ---- - -### getContractConfig - -▸ **getContractConfig**(): `Object` - -#### Returns - -`Object` - -| Name | Type | Description | -| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `abi` | (\{ `anonymous?`: `undefined` = false; `inputs`: `never`[] = []; `name?`: `undefined` = "balanceOf"; `outputs?`: `undefined` ; `stateMutability`: `string` = "nonpayable"; `type`: `string` = "constructor" } \| \{ `anonymous?`: `undefined` = false; `inputs`: `never`[] = []; `name`: `string` = "AlreadyClaimed"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `anonymous`: `boolean` = false; `inputs`: \{ `indexed`: `boolean` = false; `internalType`: `string` = "address"; `name`: `string` = "previousAdmin"; `type`: `string` = "address" }[] ; `name`: `string` = "AdminChanged"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "event" } \| \{ `anonymous?`: `undefined` = false; `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = "account"; `type`: `string` = "address" }[] ; `name`: `string` = "balanceOf"; `outputs`: \{ `internalType`: `string` = "uint256"; `name`: `string` = ""; `type`: `string` = "uint256" }[] ; `stateMutability`: `string` = "view"; `type`: `string` = "function" })[] | - | -| `address` | \`0x$\{string}\` | - | -| `createEventFilter` | {} | Creates a Filter to retrieve event logs that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges) or [`getFilterLogs`](https://viem.sh/docs/actions/public/getFilterLogs). **`Example`** `ts import { createPublicClient, getContract, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const publicClient = createPublicClient({ chain: mainnet, transport: http(), }) const contract = getContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']), client: publicClient, }) const filter = await contract.createEventFilter.Transfer() ` | -| `estimateGas` | {} | Estimates the gas necessary to complete a transaction without submitting it to the network. **`Example`** `ts import { createPublicClient, getContract, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const publicClient = createPublicClient({ chain: mainnet, transport: http(), }) const contract = getContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint() public']), client: publicClient, }) const gas = await contract.estimateGas.mint({ account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', }) ` | -| `getEvents` | {} | Creates a Filter to retrieve event logs that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges) or [`getFilterLogs`](https://viem.sh/docs/actions/public/getFilterLogs). **`Example`** `ts import { createPublicClient, getContract, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const publicClient = createPublicClient({ chain: mainnet, transport: http(), }) const contract = getContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']), client: publicClient, }) const filter = await contract.createEventFilter.Transfer() ` | -| `read` | {} | Calls a read-only function on a contract, and returns the response. A "read-only" function (constant function) on a Solidity contract is denoted by a `view` or `pure` keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas. Internally, `read` uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **`Example`** `ts import { createPublicClient, getContract, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const publicClient = createPublicClient({ chain: mainnet, transport: http(), }) const contract = getContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi([ 'function balanceOf(address owner) view returns (uint256)', ]), client: publicClient, }) const result = await contract.read.balanceOf(['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e']) // 424122n ` | -| `simulate` | {} | Simulates/validates a contract interaction. This is useful for retrieving return data and revert reasons of contract write functions. This function does not require gas to execute and does not change the state of the blockchain. It is almost identical to [`readContract`](https://viem.sh/docs/contract/readContract), but also supports contract write functions. Internally, `simulate` uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **`Example`** `ts import { createPublicClient, getContract, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const publicClient = createPublicClient({ chain: mainnet, transport: http(), }) const contract = getContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint() public']), client: publicClient, }) const result = await contract.simulate.mint({ account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', }) ` | -| `watchEvent` | {} | Watches and returns emitted contract event logs. This Action will batch up all the event logs found within the [`pollingInterval`](https://viem.sh/docs/contract/watchContractEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/contract/watchContractEvent#onLogs). `watchEvent` will attempt to create an [Event Filter](https://viem.sh/docs/contract/createContractEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead. **`Example`** `ts import { createPublicClient, getContract, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const publicClient = createPublicClient({ chain: mainnet, transport: http(), }) const contract = getContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']), client: publicClient, }) const filter = await contract.createEventFilter.Transfer() const unwatch = contract.watchEvent.Transfer( { from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b' }, { onLogs: (logs) => console.log(logs) }, ) ` | - -#### Defined in - -[sdk/src/client.ts:485](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L485) - ---- - -### getDeployments - -▸ **getDeployments**(`chainId`): `Partial`<[`Deployment`](../modules.md#deployment)\> - -Gets the contract addresses and graph urls for the provided `chainId` - -#### Parameters - -| Name | Type | -| :-------- | :----------------------------------------------------- | -| `chainId` | [`SupportedChainIds`](../modules.md#supportedchainids) | - -#### Returns - -`Partial`<[`Deployment`](../modules.md#deployment)\> - -The addresses, graph name and graph url. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[getDeployments](../interfaces/HypercertClientInterface.md#getdeployments) - -#### Defined in - -[sdk/src/client.ts:112](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L112) - ---- - -### getTransferRestrictions - -▸ **getTransferRestrictions**(`fractionId`): `Promise`<[`TransferRestrictions`](../modules.md#transferrestrictions-1)\> - -Gets the TransferRestrictions for a claim. - -This method first retrieves the read contract using the `getContract` method. It then simulates a contract call to the `readTransferRestriction` function with the provided fraction ID. - -#### Parameters - -| Name | Type | -| :----------- | :------- | -| `fractionId` | `bigint` | - -#### Returns - -`Promise`<[`TransferRestrictions`](../modules.md#transferrestrictions-1)\> - -a Promise that resolves to the applicable transfer restrictions. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[getTransferRestrictions](../interfaces/HypercertClientInterface.md#gettransferrestrictions) - -#### Defined in - -[sdk/src/client.ts:160](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L160) - ---- - -### getWallet - -▸ **getWallet**(): `Object` - -#### Returns - -`Object` - -| Name | Type | -| :--------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `account` | `Account` | -| `walletClient` | \{ `account`: `undefined` \| `Account` ; `addChain`: (`args`: `AddChainParameters`) => `Promise`<`void`\> ; `batch?`: \{ `multicall?`: `boolean` \| \{ batchSize?: number \| undefined; wait?: number \| undefined; } } ; `cacheTime`: `number` ; `ccipRead?`: `false` \| \{ `request?`: (`parameters`: `CcipRequestParameters`) => `Promise`<\`0x$\{string}\`\> } ; `chain`: `undefined` \| `Chain` ; `deployContract`: (`args`: `DeployContractParameters`<`abi`, `undefined` \| `Chain`, `undefined` \| `Account`, `chainOverride`\>) => `Promise`<\`0x$\{string}\`\> ; `extend`: (`fn`: (`client`: `Client`<`Transport`, `undefined` \| `Chain`, `undefined` \| `Account`, `WalletRpcSchema`, `WalletActions`<`undefined` \| `Chain`, `undefined` \| `Account`\>\>) => `client`) => `Client`<`Transport`, `undefined` \| `Chain`, `undefined` \| `Account`, `WalletRpcSchema`, \{ [K in keyof client]: client[K]; } & `WalletActions`<`undefined` \| `Chain`, `undefined` \| `Account`\>\> ; `getAddresses`: () => `Promise`<`GetAddressesReturnType`\> ; `getChainId`: () => `Promise`<`number`\> ; `getPermissions`: () => `Promise`<`GetPermissionsReturnType`\> ; `key`: `string` ; `name`: `string` ; `pollingInterval`: `number` ; `prepareTransactionRequest`: (`args`: `PrepareTransactionRequestParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`, `TAccountOverride`, `TRequest`\>) => `Promise`<\{ [K in keyof (UnionRequiredBy, "transactionRequest", TransactionRequest\>, "from"\> & (DeriveChain<...\> extends Chain ? \{ ...; } : \{ ...; }) & (DeriveAccount<...\> extends Account ? \{ ...; } : \{ ...; }), IsNever<...\> extends true ? un...\> ; `request`: `EIP1193RequestFn`<`WalletRpcSchema`\> ; `requestAddresses`: () => `Promise`<`RequestAddressesReturnType`\> ; `requestPermissions`: (`args`: \{ [x: string]: Record; eth_accounts: Record; }) => `Promise`<`RequestPermissionsReturnType`\> ; `sendRawTransaction`: (`args`: `SendRawTransactionParameters`) => `Promise`<\`0x$\{string}\`\> ; `sendTransaction`: (`args`: `SendTransactionParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`, `TRequest`\>) => `Promise`<\`0x$\{string}\`\> ; `signMessage`: (`args`: `SignMessageParameters`<`undefined` \| `Account`\>) => `Promise`<\`0x$\{string}\`\> ; `signTransaction`: (`args`: `SignTransactionParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`\>) => `Promise`<\`0x02$\{string}\` \| \`0x01$\{string}\` \| \`0x03$\{string}\` \| `TransactionSerializedLegacy`\> ; `signTypedData`: (`args`: `SignTypedDataParameters`<`TTypedData`, `TPrimaryType`, `undefined` \| `Account`\>) => `Promise`<\`0x$\{string}\`\> ; `switchChain`: (`args`: `SwitchChainParameters`) => `Promise`<`void`\> ; `transport`: `TransportConfig`<`string`, `EIP1193RequestFn`\> & `Record`<`string`, `any`\> ; `type`: `string` ; `uid`: `string` ; `watchAsset`: (`args`: `WatchAssetParams`) => `Promise`<`boolean`\> ; `writeContract`: (`args`: `WriteContractParameters`<`abi`, `functionName`, `args`, `undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`\>) => `Promise`<\`0x$\{string}\`\> } | -| `walletClient.account` | `undefined` \| `Account` | -| `walletClient.addChain` | (`args`: `AddChainParameters`) => `Promise`<`void`\> | -| `walletClient.batch?` | \{ `multicall?`: `boolean` \| \{ batchSize?: number \| undefined; wait?: number \| undefined; } } | -| `walletClient.batch.multicall?` | `boolean` \| \{ batchSize?: number \| undefined; wait?: number \| undefined; } | -| `walletClient.cacheTime` | `number` | -| `walletClient.ccipRead?` | `false` \| \{ `request?`: (`parameters`: `CcipRequestParameters`) => `Promise`<\`0x$\{string}\`\> } | -| `walletClient.chain` | `undefined` \| `Chain` | -| `walletClient.deployContract` | (`args`: `DeployContractParameters`<`abi`, `undefined` \| `Chain`, `undefined` \| `Account`, `chainOverride`\>) => `Promise`<\`0x$\{string}\`\> | -| `walletClient.extend` | (`fn`: (`client`: `Client`<`Transport`, `undefined` \| `Chain`, `undefined` \| `Account`, `WalletRpcSchema`, `WalletActions`<`undefined` \| `Chain`, `undefined` \| `Account`\>\>) => `client`) => `Client`<`Transport`, `undefined` \| `Chain`, `undefined` \| `Account`, `WalletRpcSchema`, \{ [K in keyof client]: client[K]; } & `WalletActions`<`undefined` \| `Chain`, `undefined` \| `Account`\>\> | -| `walletClient.getAddresses` | () => `Promise`<`GetAddressesReturnType`\> | -| `walletClient.getChainId` | () => `Promise`<`number`\> | -| `walletClient.getPermissions` | () => `Promise`<`GetPermissionsReturnType`\> | -| `walletClient.key` | `string` | -| `walletClient.name` | `string` | -| `walletClient.pollingInterval` | `number` | -| `walletClient.prepareTransactionRequest` | (`args`: `PrepareTransactionRequestParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`, `TAccountOverride`, `TRequest`\>) => `Promise`<\{ [K in keyof (UnionRequiredBy, "transactionRequest", TransactionRequest\>, "from"\> & (DeriveChain<...\> extends Chain ? \{ ...; } : \{ ...; }) & (DeriveAccount<...\> extends Account ? \{ ...; } : \{ ...; }), IsNever<...\> extends true ? un...\> | -| `walletClient.request` | `EIP1193RequestFn`<`WalletRpcSchema`\> | -| `walletClient.requestAddresses` | () => `Promise`<`RequestAddressesReturnType`\> | -| `walletClient.requestPermissions` | (`args`: \{ [x: string]: Record; eth_accounts: Record; }) => `Promise`<`RequestPermissionsReturnType`\> | -| `walletClient.sendRawTransaction` | (`args`: `SendRawTransactionParameters`) => `Promise`<\`0x$\{string}\`\> | -| `walletClient.sendTransaction` | (`args`: `SendTransactionParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`, `TRequest`\>) => `Promise`<\`0x$\{string}\`\> | -| `walletClient.signMessage` | (`args`: `SignMessageParameters`<`undefined` \| `Account`\>) => `Promise`<\`0x$\{string}\`\> | -| `walletClient.signTransaction` | (`args`: `SignTransactionParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`\>) => `Promise`<\`0x02$\{string}\` \| \`0x01$\{string}\` \| \`0x03$\{string}\` \| `TransactionSerializedLegacy`\> | -| `walletClient.signTypedData` | (`args`: `SignTypedDataParameters`<`TTypedData`, `TPrimaryType`, `undefined` \| `Account`\>) => `Promise`<\`0x$\{string}\`\> | -| `walletClient.switchChain` | (`args`: `SwitchChainParameters`) => `Promise`<`void`\> | -| `walletClient.transport` | `TransportConfig`<`string`, `EIP1193RequestFn`\> & `Record`<`string`, `any`\> | -| `walletClient.type` | `string` | -| `walletClient.uid` | `string` | -| `walletClient.watchAsset` | (`args`: `WatchAssetParams`) => `Promise`<`boolean`\> | -| `walletClient.writeContract` | (`args`: `WriteContractParameters`<`abi`, `functionName`, `args`, `undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`\>) => `Promise`<\`0x$\{string}\`\> | - -#### Defined in - -[sdk/src/client.ts:506](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L506) - ---- - -### isClaimOrFractionOnConnectedChain - -▸ **isClaimOrFractionOnConnectedChain**(`claimOrFractionId`): `boolean` - -Check if a claim or fraction is on the chain that the Hypercertclient -is currently connected to - -#### Parameters - -| Name | Type | Description | -| :------------------ | :------- | :---------------------------------------- | -| `claimOrFractionId` | `string` | The ID of the claim or fraction to check. | - -#### Returns - -`boolean` - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[isClaimOrFractionOnConnectedChain](../interfaces/HypercertClientInterface.md#isclaimorfractiononconnectedchain) - -#### Defined in - -[sdk/src/client.ts:79](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L79) - ---- - -### mergeFractionUnits - -▸ **mergeFractionUnits**(`fractionIds`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Merges multiple fractions into a single fraction. - -This method first retrieves the wallet client and account using the `getWallet` method. It then retrieves the owner of each fraction using the `ownerOf` method of the read contract. -If any of the fractions are not owned by the account, it throws a `ClientError`. -It then simulates a contract call to the `mergeFractions` function with the provided parameters and the account, and submits the request using the `submitRequest` method. - -#### Parameters - -| Name | Type | Description | -| :------------ | :------------------------------------------------------- | :---------------------------------------- | -| `fractionIds` | `bigint`[] | The IDs of the fractions to merge. | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | Optional overrides for the contract call. | - -#### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A promise that resolves to the transaction hash. - -**`Throws`** - -Will throw a `ClientError` if any of the fractions are not owned by the account. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[mergeFractionUnits](../interfaces/HypercertClientInterface.md#mergefractionunits) - -#### Defined in - -[sdk/src/client.ts:330](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L330) - ---- - -### mintClaim - -▸ **mintClaim**(`metaData`, `totalUnits`, `transferRestriction`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Mints a new claim. - -This method first validates the provided metadata using the `validateMetaData` function. If the metadata is invalid, it throws a `MalformedDataError`. -It then stores the metadata on IPFS using the `storeMetadata` method of the storage client. -After that, it simulates a contract call to the `mintClaim` function with the provided parameters and the stored metadata CID to validate the transaction. -Finally, it submits the request using the `submitRequest` method. - -#### Parameters - -| Name | Type | Description | -| :-------------------- | :------------------------------------------------------------- | :---------------------------------------- | -| `metaData` | [`HypercertMetadata`](../interfaces/HypercertMetadata.md) | The metadata for the claim. | -| `totalUnits` | `bigint` | The total units for the claim. | -| `transferRestriction` | [`TransferRestrictions`](../modules.md#transferrestrictions-1) | The transfer restrictions for the claim. | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | Optional overrides for the contract call. | - -#### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A promise that resolves to the transaction hash. - -**`Throws`** - -Will throw a `MalformedDataError` if the provided metadata is invalid. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[mintClaim](../interfaces/HypercertClientInterface.md#mintclaim) - -#### Defined in - -[sdk/src/client.ts:131](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L131) - ---- - -### mintClaimFractionFromAllowlist - -▸ **mintClaimFractionFromAllowlist**(`claimId`, `units`, `proof`, `root?`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Mints a claim fraction from an allowlist. - -This method first retrieves the wallet client and account using the `getWallet` method. It then verifies the provided proof using the `verifyMerkleProof` function. If the proof is invalid, it throws an `InvalidOrMissingError`. -It then simulates a contract call to the `mintClaimFromAllowlist` function with the provided parameters and the account, and submits the request using the `submitRequest` method. - -#### Parameters - -| Name | Type | Description | -| :----------- | :------------------------------------------------------- | :------------------------------------------------------------------ | -| `claimId` | `bigint` | The ID of the claim to mint. | -| `units` | `bigint` | The units of the claim to mint. | -| `proof` | (\`0x$\{string}\` \| `Uint8Array`)[] | The proof for the claim. | -| `root?` | \`0x$\{string}\` \| `Uint8Array` | The root of the proof. If provided, it is used to verify the proof. | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | Optional overrides for the contract call. | - -#### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A promise that resolves to the transaction hash. - -**`Throws`** - -Will throw an `InvalidOrMissingError` if the proof is invalid. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[mintClaimFractionFromAllowlist](../interfaces/HypercertClientInterface.md#mintclaimfractionfromallowlist) - -#### Defined in - -[sdk/src/client.ts:404](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L404) - ---- - -### simulateRequest - -▸ **simulateRequest**(`account`, `functionName`, `args`, `overrides?`): `Promise`<\{ `abi`: readonly [`never`] ; `accessList?`: `undefined` ; `account`: `JsonRpcAccount`<\`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs?`: `undefined` ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `bigint` ; `maxFeePerBlobGas?`: `undefined` ; `maxFeePerGas?`: `undefined` ; `maxPriorityFeePerGas?`: `undefined` ; `nonce?`: `number` ; `type?`: ``"legacy"`` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `undefined` ; `account`: `LocalAccount`<`string`, \`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs?`: `undefined` ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `bigint` ; `maxFeePerBlobGas?`: `undefined` ; `maxFeePerGas?`: `undefined` ; `maxPriorityFeePerGas?`: `undefined` ; `nonce?`: `number` ; `type?`: `"legacy"` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `AccessList` ; `account`: `JsonRpcAccount`<\`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs?`: `undefined` ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `bigint` ; `maxFeePerBlobGas?`: `undefined` ; `maxFeePerGas?`: `undefined` ; `maxPriorityFeePerGas?`: `undefined` ; `nonce?`: `number` ; `type?`: ``"eip2930"`` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `AccessList` ; `account`: `LocalAccount`<`string`, \`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs?`: `undefined` ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `bigint` ; `maxFeePerBlobGas?`: `undefined` ; `maxFeePerGas?`: `undefined` ; `maxPriorityFeePerGas?`: `undefined` ; `nonce?`: `number` ; `type?`: `"eip2930"` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `AccessList` ; `account`: `JsonRpcAccount`<\`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs?`: `undefined` ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `undefined` ; `maxFeePerBlobGas?`: `undefined` ; `maxFeePerGas?`: `bigint` ; `maxPriorityFeePerGas?`: `bigint` ; `nonce?`: `number` ; `type?`: ``"eip1559"`` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `AccessList` ; `account`: `LocalAccount`<`string`, \`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs?`: `undefined` ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `undefined` ; `maxFeePerBlobGas?`: `undefined` ; `maxFeePerGas?`: `bigint` ; `maxPriorityFeePerGas?`: `bigint` ; `nonce?`: `number` ; `type?`: `"eip1559"` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `AccessList` ; `account`: `JsonRpcAccount`<\`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs`: readonly \`0x$\{string}\`[] \| readonly `Uint8Array`[] ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `undefined` ; `maxFeePerBlobGas`: `bigint` ; `maxFeePerGas?`: `bigint` ; `maxPriorityFeePerGas?`: `bigint` ; `nonce?`: `number` ; `type?`: `"eip4844"` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `AccessList` ; `account`: `LocalAccount`<`string`, \`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs`: readonly \`0x$\{string}\`[] \| readonly `Uint8Array`[] ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `undefined` ; `maxFeePerBlobGas`: `bigint` ; `maxFeePerGas?`: `bigint` ; `maxPriorityFeePerGas?`: `bigint` ; `nonce?`: `number` ; `type?`: `"eip4844"` ; `value?`: `bigint` }\> - -#### Parameters - -| Name | Type | -| :------------- | :------------------------------------------------------- | -| `account` | `Account` | -| `functionName` | `string` | -| `args` | `unknown`[] | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | - -#### Returns - -`Promise`<\{ `abi`: readonly [`never`] ; `accessList?`: `undefined` ; `account`: `JsonRpcAccount`<\`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs?`: `undefined` ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `bigint` ; `maxFeePerBlobGas?`: `undefined` ; `maxFeePerGas?`: `undefined` ; `maxPriorityFeePerGas?`: `undefined` ; `nonce?`: `number` ; `type?`: ``"legacy"`` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `undefined` ; `account`: `LocalAccount`<`string`, \`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs?`: `undefined` ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `bigint` ; `maxFeePerBlobGas?`: `undefined` ; `maxFeePerGas?`: `undefined` ; `maxPriorityFeePerGas?`: `undefined` ; `nonce?`: `number` ; `type?`: `"legacy"` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `AccessList` ; `account`: `JsonRpcAccount`<\`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs?`: `undefined` ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `bigint` ; `maxFeePerBlobGas?`: `undefined` ; `maxFeePerGas?`: `undefined` ; `maxPriorityFeePerGas?`: `undefined` ; `nonce?`: `number` ; `type?`: ``"eip2930"`` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `AccessList` ; `account`: `LocalAccount`<`string`, \`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs?`: `undefined` ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `bigint` ; `maxFeePerBlobGas?`: `undefined` ; `maxFeePerGas?`: `undefined` ; `maxPriorityFeePerGas?`: `undefined` ; `nonce?`: `number` ; `type?`: `"eip2930"` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `AccessList` ; `account`: `JsonRpcAccount`<\`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs?`: `undefined` ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `undefined` ; `maxFeePerBlobGas?`: `undefined` ; `maxFeePerGas?`: `bigint` ; `maxPriorityFeePerGas?`: `bigint` ; `nonce?`: `number` ; `type?`: ``"eip1559"`` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `AccessList` ; `account`: `LocalAccount`<`string`, \`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs?`: `undefined` ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `undefined` ; `maxFeePerBlobGas?`: `undefined` ; `maxFeePerGas?`: `bigint` ; `maxPriorityFeePerGas?`: `bigint` ; `nonce?`: `number` ; `type?`: `"eip1559"` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `AccessList` ; `account`: `JsonRpcAccount`<\`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs`: readonly \`0x$\{string}\`[] \| readonly `Uint8Array`[] ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `undefined` ; `maxFeePerBlobGas`: `bigint` ; `maxFeePerGas?`: `bigint` ; `maxPriorityFeePerGas?`: `bigint` ; `nonce?`: `number` ; `type?`: `"eip4844"` ; `value?`: `bigint` } \| \{ `abi`: readonly [`never`] ; `accessList?`: `AccessList` ; `account`: `LocalAccount`<`string`, \`0x$\{string}\`\> ; `address`: \`0x$\{string}\` ; `args?`: readonly `unknown`[] ; `blobs`: readonly \`0x$\{string}\`[] \| readonly `Uint8Array`[] ; `chain`: `undefined` \| `Chain` ; `dataSuffix?`: \`0x$\{string}\` ; `functionName`: `string` ; `gas?`: `bigint` ; `gasPrice?`: `undefined` ; `maxFeePerBlobGas`: `bigint` ; `maxFeePerGas?`: `bigint` ; `maxPriorityFeePerGas?`: `bigint` ; `nonce?`: `number` ; `type?`: `"eip4844"` ; `value?`: `bigint` }\> - -#### Defined in - -[sdk/src/client.ts:516](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L516) - ---- - -### splitFractionUnits - -▸ **splitFractionUnits**(`fractionId`, `fractions`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Splits a fraction into multiple fractions. - -This method first retrieves the wallet client and account using the `getWallet` method. It then retrieves the owner and total units of the fraction using the `ownerOf` and `unitsOf` methods of the read contract. -If the fraction is not owned by the account, it throws a `ClientError`. -It then checks if the sum of the provided fractions is equal to the total units of the fraction. If not, it throws a `ClientError`. -Finally, it simulates a contract call to the `splitFraction` function with the provided parameters and the account, and submits the request using the `submitRequest` method. - -#### Parameters - -| Name | Type | Description | -| :----------- | :------------------------------------------------------- | :---------------------------------------- | -| `fractionId` | `bigint` | The ID of the fraction to split. | -| `fractions` | `bigint`[] | The fractions to split the fraction into. | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | Optional overrides for the contract call. | - -#### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A promise that resolves to the transaction hash. - -**`Throws`** - -Will throw a `ClientError` if the fraction is not owned by the account or if the sum of the fractions is not equal to the total units of the fraction. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[splitFractionUnits](../interfaces/HypercertClientInterface.md#splitfractionunits) - -#### Defined in - -[sdk/src/client.ts:285](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L285) - ---- - -### submitRequest - -▸ **submitRequest**(`request`): `Promise`<\`0x$\{string}\`\> - -Submits a contract request. - -This method submits a contract request using the `writeContract` method of the wallet client. If the request fails, it throws a `ClientError`. - -#### Parameters - -| Name | Type | Description | -| :-------- | :---- | :------------------------------ | -| `request` | `any` | The contract request to submit. | - -#### Returns - -`Promise`<\`0x$\{string}\`\> - -A promise that resolves to the hash of the submitted request. - -**`Throws`** - -Will throw a `ClientError` if the request fails. - -#### Defined in - -[sdk/src/client.ts:551](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L551) - ---- - -### transferFraction - -▸ **transferFraction**(`fractionId`, `to`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Transfers a claim fraction to a new owner. - -This method first retrieves the wallet client and account using the `getWallet` method. -It then simulates a contract call to the `safeTransferFrom` function with the provided parameters and the account, and submits the request using the `submitRequest` method. - -#### Parameters - -| Name | Type | -| :----------- | :------------------------------------------------------- | -| `fractionId` | `bigint` | -| `to` | `string` | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | - -#### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A promise that resolves to the transaction hash. - -#### Implementation of - -[HypercertClientInterface](../interfaces/HypercertClientInterface.md).[transferFraction](../interfaces/HypercertClientInterface.md#transferfraction) - -#### Defined in - -[sdk/src/client.ts:180](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/client.ts#L180) diff --git a/docs/docs/developer/api/sdk/classes/HypercertsStorage.md b/docs/docs/developer/api/sdk/classes/HypercertsStorage.md deleted file mode 100644 index f26c02ff..00000000 --- a/docs/docs/developer/api/sdk/classes/HypercertsStorage.md +++ /dev/null @@ -1,192 +0,0 @@ ---- -id: "HypercertsStorage" -title: "Class: HypercertsStorage" -sidebar_label: "HypercertsStorage" -sidebar_position: 0 -custom_edit_url: null ---- - -A class that provides storage functionality for Hypercerts. - -This class implements the `HypercertStorageInterface` and provides methods for storing and retrieving Hypercerts. - -**`Example`** - -```ts -const storage = new HypercertsStorage(); -const metadata = await storage.getMetadata("your-hypercert-id"); -``` - -## Implements - -- [`HypercertStorageInterface`](../interfaces/HypercertStorageInterface.md) - -## Constructors - -### constructor - -• **new HypercertsStorage**(): [`HypercertsStorage`](HypercertsStorage.md) - -#### Returns - -[`HypercertsStorage`](HypercertsStorage.md) - -## Methods - -### getData - -▸ **getData**(`cidOrIpfsUri`, `config?`): `Promise`<`unknown`\> - -Retrieves data from IPFS using the provided CID or IPFS URI. - -This method first retrieves the data from IPFS using the `getFromIPFS` function. It then parses the retrieved data as JSON and returns it. - -#### Parameters - -| Name | Type | Description | -| :------------- | :--------------------------------------------------------------- | :------------------------------------------- | -| `cidOrIpfsUri` | `string` | The CID or IPFS URI of the data to retrieve. | -| `config?` | [`StorageConfigOverrides`](../modules.md#storageconfigoverrides) | An optional configuration object. | - -#### Returns - -`Promise`<`unknown`\> - -A promise that resolves to the retrieved data. - -**`Throws`** - -Will throw a `FetchError` if the retrieval operation fails. - -**`Throws`** - -Will throw a `MalformedDataError` if the retrieved data is not a single file. - -**`Remarkts`** - -Note: The original implementation using the Web3 Storage client is currently commented out due to issues with upstream repos. This will be replaced once those issues are resolved. - -#### Implementation of - -[HypercertStorageInterface](../interfaces/HypercertStorageInterface.md).[getData](../interfaces/HypercertStorageInterface.md#getdata) - -#### Defined in - -[sdk/src/storage.ts:145](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/storage.ts#L145) - ---- - -### getMetadata - -▸ **getMetadata**(`cidOrIpfsUri`, `config?`): `Promise`<[`HypercertMetadata`](../interfaces/HypercertMetadata.md)\> - -Retrieves Hypercert metadata from IPFS using the provided CID or IPFS URI. - -This method first retrieves the data from IPFS using the `getFromIPFS` function. It then validates the retrieved data using the `validateMetaData` function. If the data is invalid, it throws a `MalformedDataError`. -If the data is valid, it returns the data as a `HypercertMetadata` object. - -#### Parameters - -| Name | Type | Description | -| :------------- | :--------------------------------------------------------------- | :----------------------------------------------- | -| `cidOrIpfsUri` | `string` | The CID or IPFS URI of the metadata to retrieve. | -| `config?` | [`StorageConfigOverrides`](../modules.md#storageconfigoverrides) | An optional configuration object. | - -#### Returns - -`Promise`<[`HypercertMetadata`](../interfaces/HypercertMetadata.md)\> - -A promise that resolves to the retrieved metadata. - -**`Throws`** - -Will throw a `MalformedDataError` if the retrieved data is invalid. - -#### Implementation of - -[HypercertStorageInterface](../interfaces/HypercertStorageInterface.md).[getMetadata](../interfaces/HypercertStorageInterface.md#getmetadata) - -#### Defined in - -[sdk/src/storage.ts:118](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/storage.ts#L118) - ---- - -### storeAllowList - -▸ **storeAllowList**(`allowList`, `totalUnits`, `config?`): `Promise`<`string`\> - -Stores hypercerts allowlist on IPFS. - -First it validates the provided metadata using the `validateMetaData` function. If the metadata is invalid, it throws a `MalformedDataError`. -If the metadata is valid, it creates a new Blob from the metadata and stores it using the hypercerts API. If the storage operation fails, it throws a `StorageError`. - -#### Parameters - -| Name | Type | Description | -| :----------- | :--------------------------------------------------------------- | :------------------------------------------ | -| `allowList` | [`AllowlistEntry`](../modules.md#allowlistentry)[] | The allowList to store. | -| `totalUnits` | `bigint` | The total number of units in the allowlist. | -| `config?` | [`StorageConfigOverrides`](../modules.md#storageconfigoverrides) | An optional configuration object. | - -#### Returns - -`Promise`<`string`\> - -A promise that resolves to the CID of the stored metadata. - -**`Throws`** - -Will throw a `StorageError` if the storage operation fails. - -**`Throws`** - -Will throw a `MalformedDataError` if the provided metadata is invalid. - -#### Implementation of - -[HypercertStorageInterface](../interfaces/HypercertStorageInterface.md).[storeAllowList](../interfaces/HypercertStorageInterface.md#storeallowlist) - -#### Defined in - -[sdk/src/storage.ts:36](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/storage.ts#L36) - ---- - -### storeMetadata - -▸ **storeMetadata**(`metadata`, `config?`): `Promise`<`string`\> - -Stores Hypercert metadata using the hypercerts API. - -It then validates the provided metadata using the `validateMetaData` function. If the metadata is invalid, it throws a `MalformedDataError`. -If the metadata is valid, it creates a new Blob from the metadata and stores it using the hypercerts API. If the storage operation fails, it throws a `StorageError`. - -#### Parameters - -| Name | Type | Description | -| :--------- | :--------------------------------------------------------------- | :-------------------------------- | -| `metadata` | [`HypercertMetadata`](../interfaces/HypercertMetadata.md) | - | -| `config?` | [`StorageConfigOverrides`](../modules.md#storageconfigoverrides) | An optional configuration object. | - -#### Returns - -`Promise`<`string`\> - -A promise that resolves to the CID of the stored metadata. - -**`Throws`** - -Will throw a `StorageError` if the storage operation fails. - -**`Throws`** - -Will throw a `MalformedDataError` if the provided metadata is invalid. - -#### Implementation of - -[HypercertStorageInterface](../interfaces/HypercertStorageInterface.md).[storeMetadata](../interfaces/HypercertStorageInterface.md#storemetadata) - -#### Defined in - -[sdk/src/storage.ts:83](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/storage.ts#L83) diff --git a/docs/docs/developer/api/sdk/classes/InvalidOrMissingError.md b/docs/docs/developer/api/sdk/classes/InvalidOrMissingError.md deleted file mode 100644 index 91b6fab3..00000000 --- a/docs/docs/developer/api/sdk/classes/InvalidOrMissingError.md +++ /dev/null @@ -1,198 +0,0 @@ ---- -id: "InvalidOrMissingError" -title: "Class: InvalidOrMissingError" -sidebar_label: "InvalidOrMissingError" -sidebar_position: 0 -custom_edit_url: null ---- - -The provided value was undefined or empty - -## Hierarchy - -- `Error` - - ↳ **`InvalidOrMissingError`** - -## Implements - -- [`CustomError`](../interfaces/CustomError.md) - -## Constructors - -### constructor - -• **new InvalidOrMissingError**(`message`, `payload?`): [`InvalidOrMissingError`](InvalidOrMissingError.md) - -Creates a new instance of the InvalidOrMissingError class. - -#### Parameters - -| Name | Type | Description | -| :--------- | :------- | :------------------------ | -| `message` | `string` | The error message. | -| `payload?` | `Object` | Additional error payload. | - -#### Returns - -[`InvalidOrMissingError`](InvalidOrMissingError.md) - -#### Overrides - -Error.constructor - -#### Defined in - -[sdk/src/types/errors.ts:83](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L83) - -## Properties - -### cause - -• `Optional` **cause**: `unknown` - -#### Inherited from - -Error.cause - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.error.d.ts:24 - ---- - -### message - -• **message**: `string` - -#### Inherited from - -Error.message - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1076 - ---- - -### name - -• **name**: `string` - -#### Inherited from - -Error.name - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1075 - ---- - -### payload - -• `Optional` **payload**: `Object` - -Additional error payload. - -#### Index signature - -▪ [key: `string`]: `unknown` - -#### Implementation of - -[CustomError](../interfaces/CustomError.md).[payload](../interfaces/CustomError.md#payload) - -#### Defined in - -[sdk/src/types/errors.ts:76](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L76) - ---- - -### stack - -• `Optional` **stack**: `string` - -#### Inherited from - -Error.stack - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1077 - ---- - -### prepareStackTrace - -▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` - -#### Type declaration - -▸ (`err`, `stackTraces`): `any` - -Optional override for formatting stack traces - -##### Parameters - -| Name | Type | -| :------------ | :----------- | -| `err` | `Error` | -| `stackTraces` | `CallSite`[] | - -##### Returns - -`any` - -**`See`** - -https://v8.dev/docs/stack-trace-api#customizing-stack-traces - -#### Inherited from - -Error.prepareStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:11 - ---- - -### stackTraceLimit - -▪ `Static` **stackTraceLimit**: `number` - -#### Inherited from - -Error.stackTraceLimit - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:13 - -## Methods - -### captureStackTrace - -▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` - -Create .stack property on a target object - -#### Parameters - -| Name | Type | -| :---------------- | :--------- | -| `targetObject` | `object` | -| `constructorOpt?` | `Function` | - -#### Returns - -`void` - -#### Inherited from - -Error.captureStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:4 diff --git a/docs/docs/developer/api/sdk/classes/MalformedDataError.md b/docs/docs/developer/api/sdk/classes/MalformedDataError.md deleted file mode 100644 index d11a0869..00000000 --- a/docs/docs/developer/api/sdk/classes/MalformedDataError.md +++ /dev/null @@ -1,198 +0,0 @@ ---- -id: "MalformedDataError" -title: "Class: MalformedDataError" -sidebar_label: "MalformedDataError" -sidebar_position: 0 -custom_edit_url: null ---- - -Data doesn't conform to expectations - -## Hierarchy - -- `Error` - - ↳ **`MalformedDataError`** - -## Implements - -- [`CustomError`](../interfaces/CustomError.md) - -## Constructors - -### constructor - -• **new MalformedDataError**(`message`, `payload?`): [`MalformedDataError`](MalformedDataError.md) - -Creates a new instance of the MalformedDataError class. - -#### Parameters - -| Name | Type | Description | -| :--------- | :------- | :------------------------ | -| `message` | `string` | The error message. | -| `payload?` | `Object` | Additional error payload. | - -#### Returns - -[`MalformedDataError`](MalformedDataError.md) - -#### Overrides - -Error.constructor - -#### Defined in - -[sdk/src/types/errors.ts:155](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L155) - -## Properties - -### cause - -• `Optional` **cause**: `unknown` - -#### Inherited from - -Error.cause - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.error.d.ts:24 - ---- - -### message - -• **message**: `string` - -#### Inherited from - -Error.message - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1076 - ---- - -### name - -• **name**: `string` - -#### Inherited from - -Error.name - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1075 - ---- - -### payload - -• `Optional` **payload**: `Object` - -Additional error payload. - -#### Index signature - -▪ [key: `string`]: `unknown` - -#### Implementation of - -[CustomError](../interfaces/CustomError.md).[payload](../interfaces/CustomError.md#payload) - -#### Defined in - -[sdk/src/types/errors.ts:148](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L148) - ---- - -### stack - -• `Optional` **stack**: `string` - -#### Inherited from - -Error.stack - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1077 - ---- - -### prepareStackTrace - -▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` - -#### Type declaration - -▸ (`err`, `stackTraces`): `any` - -Optional override for formatting stack traces - -##### Parameters - -| Name | Type | -| :------------ | :----------- | -| `err` | `Error` | -| `stackTraces` | `CallSite`[] | - -##### Returns - -`any` - -**`See`** - -https://v8.dev/docs/stack-trace-api#customizing-stack-traces - -#### Inherited from - -Error.prepareStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:11 - ---- - -### stackTraceLimit - -▪ `Static` **stackTraceLimit**: `number` - -#### Inherited from - -Error.stackTraceLimit - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:13 - -## Methods - -### captureStackTrace - -▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` - -Create .stack property on a target object - -#### Parameters - -| Name | Type | -| :---------------- | :--------- | -| `targetObject` | `object` | -| `constructorOpt?` | `Function` | - -#### Returns - -`void` - -#### Inherited from - -Error.captureStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:4 diff --git a/docs/docs/developer/api/sdk/classes/MintingError.md b/docs/docs/developer/api/sdk/classes/MintingError.md deleted file mode 100644 index 6c66e904..00000000 --- a/docs/docs/developer/api/sdk/classes/MintingError.md +++ /dev/null @@ -1,198 +0,0 @@ ---- -id: "MintingError" -title: "Class: MintingError" -sidebar_label: "MintingError" -sidebar_position: 0 -custom_edit_url: null ---- - -Minting transaction failed - -## Hierarchy - -- `Error` - - ↳ **`MintingError`** - -## Implements - -- [`CustomError`](../interfaces/CustomError.md) - -## Constructors - -### constructor - -• **new MintingError**(`message`, `payload?`): [`MintingError`](MintingError.md) - -Creates a new instance of the MintingError class. - -#### Parameters - -| Name | Type | Description | -| :--------- | :------- | :------------------------ | -| `message` | `string` | The error message. | -| `payload?` | `Object` | Additional error payload. | - -#### Returns - -[`MintingError`](MintingError.md) - -#### Overrides - -Error.constructor - -#### Defined in - -[sdk/src/types/errors.ts:101](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L101) - -## Properties - -### cause - -• `Optional` **cause**: `unknown` - -#### Inherited from - -Error.cause - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.error.d.ts:24 - ---- - -### message - -• **message**: `string` - -#### Inherited from - -Error.message - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1076 - ---- - -### name - -• **name**: `string` - -#### Inherited from - -Error.name - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1075 - ---- - -### payload - -• `Optional` **payload**: `Object` - -Additional error payload. - -#### Index signature - -▪ [key: `string`]: `unknown` - -#### Implementation of - -[CustomError](../interfaces/CustomError.md).[payload](../interfaces/CustomError.md#payload) - -#### Defined in - -[sdk/src/types/errors.ts:94](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L94) - ---- - -### stack - -• `Optional` **stack**: `string` - -#### Inherited from - -Error.stack - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1077 - ---- - -### prepareStackTrace - -▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` - -#### Type declaration - -▸ (`err`, `stackTraces`): `any` - -Optional override for formatting stack traces - -##### Parameters - -| Name | Type | -| :------------ | :----------- | -| `err` | `Error` | -| `stackTraces` | `CallSite`[] | - -##### Returns - -`any` - -**`See`** - -https://v8.dev/docs/stack-trace-api#customizing-stack-traces - -#### Inherited from - -Error.prepareStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:11 - ---- - -### stackTraceLimit - -▪ `Static` **stackTraceLimit**: `number` - -#### Inherited from - -Error.stackTraceLimit - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:13 - -## Methods - -### captureStackTrace - -▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` - -Create .stack property on a target object - -#### Parameters - -| Name | Type | -| :---------------- | :--------- | -| `targetObject` | `object` | -| `constructorOpt?` | `Function` | - -#### Returns - -`void` - -#### Inherited from - -Error.captureStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:4 diff --git a/docs/docs/developer/api/sdk/classes/StorageError.md b/docs/docs/developer/api/sdk/classes/StorageError.md deleted file mode 100644 index 096b4a4e..00000000 --- a/docs/docs/developer/api/sdk/classes/StorageError.md +++ /dev/null @@ -1,198 +0,0 @@ ---- -id: "StorageError" -title: "Class: StorageError" -sidebar_label: "StorageError" -sidebar_position: 0 -custom_edit_url: null ---- - -Fails storing to a remote resource - -## Hierarchy - -- `Error` - - ↳ **`StorageError`** - -## Implements - -- [`CustomError`](../interfaces/CustomError.md) - -## Constructors - -### constructor - -• **new StorageError**(`message`, `payload?`): [`StorageError`](StorageError.md) - -Creates a new instance of the StorageError class. - -#### Parameters - -| Name | Type | Description | -| :--------- | :------- | :------------------------ | -| `message` | `string` | The error message. | -| `payload?` | `Object` | Additional error payload. | - -#### Returns - -[`StorageError`](StorageError.md) - -#### Overrides - -Error.constructor - -#### Defined in - -[sdk/src/types/errors.ts:119](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L119) - -## Properties - -### cause - -• `Optional` **cause**: `unknown` - -#### Inherited from - -Error.cause - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.error.d.ts:24 - ---- - -### message - -• **message**: `string` - -#### Inherited from - -Error.message - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1076 - ---- - -### name - -• **name**: `string` - -#### Inherited from - -Error.name - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1075 - ---- - -### payload - -• `Optional` **payload**: `Object` - -Additional error payload. - -#### Index signature - -▪ [key: `string`]: `unknown` - -#### Implementation of - -[CustomError](../interfaces/CustomError.md).[payload](../interfaces/CustomError.md#payload) - -#### Defined in - -[sdk/src/types/errors.ts:112](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L112) - ---- - -### stack - -• `Optional` **stack**: `string` - -#### Inherited from - -Error.stack - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1077 - ---- - -### prepareStackTrace - -▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` - -#### Type declaration - -▸ (`err`, `stackTraces`): `any` - -Optional override for formatting stack traces - -##### Parameters - -| Name | Type | -| :------------ | :----------- | -| `err` | `Error` | -| `stackTraces` | `CallSite`[] | - -##### Returns - -`any` - -**`See`** - -https://v8.dev/docs/stack-trace-api#customizing-stack-traces - -#### Inherited from - -Error.prepareStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:11 - ---- - -### stackTraceLimit - -▪ `Static` **stackTraceLimit**: `number` - -#### Inherited from - -Error.stackTraceLimit - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:13 - -## Methods - -### captureStackTrace - -▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` - -Create .stack property on a target object - -#### Parameters - -| Name | Type | -| :---------------- | :--------- | -| `targetObject` | `object` | -| `constructorOpt?` | `Function` | - -#### Returns - -`void` - -#### Inherited from - -Error.captureStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:4 diff --git a/docs/docs/developer/api/sdk/classes/UnknownSchemaError.md b/docs/docs/developer/api/sdk/classes/UnknownSchemaError.md deleted file mode 100644 index 928c8071..00000000 --- a/docs/docs/developer/api/sdk/classes/UnknownSchemaError.md +++ /dev/null @@ -1,201 +0,0 @@ ---- -id: "UnknownSchemaError" -title: "Class: UnknownSchemaError" -sidebar_label: "UnknownSchemaError" -sidebar_position: 0 -custom_edit_url: null ---- - -Schema could not be loaded - -## Hierarchy - -- `Error` - - ↳ **`UnknownSchemaError`** - -## Implements - -- [`CustomError`](../interfaces/CustomError.md) - -## Constructors - -### constructor - -• **new UnknownSchemaError**(`message`, `payload?`): [`UnknownSchemaError`](UnknownSchemaError.md) - -Creates a new instance of the UnknownSchemaError class. - -#### Parameters - -| Name | Type | Description | -| :------------------- | :------- | :------------------------ | -| `message` | `string` | The error message. | -| `payload?` | `Object` | Additional error payload. | -| `payload.schemaName` | `string` | - | - -#### Returns - -[`UnknownSchemaError`](UnknownSchemaError.md) - -#### Overrides - -Error.constructor - -#### Defined in - -[sdk/src/types/errors.ts:137](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L137) - -## Properties - -### cause - -• `Optional` **cause**: `unknown` - -#### Inherited from - -Error.cause - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.error.d.ts:24 - ---- - -### message - -• **message**: `string` - -#### Inherited from - -Error.message - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1076 - ---- - -### name - -• **name**: `string` - -#### Inherited from - -Error.name - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1075 - ---- - -### payload - -• `Optional` **payload**: `Object` - -Additional error payload. - -#### Type declaration - -| Name | Type | -| :----------- | :------- | -| `schemaName` | `string` | - -#### Implementation of - -[CustomError](../interfaces/CustomError.md).[payload](../interfaces/CustomError.md#payload) - -#### Defined in - -[sdk/src/types/errors.ts:130](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L130) - ---- - -### stack - -• `Optional` **stack**: `string` - -#### Inherited from - -Error.stack - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1077 - ---- - -### prepareStackTrace - -▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` - -#### Type declaration - -▸ (`err`, `stackTraces`): `any` - -Optional override for formatting stack traces - -##### Parameters - -| Name | Type | -| :------------ | :----------- | -| `err` | `Error` | -| `stackTraces` | `CallSite`[] | - -##### Returns - -`any` - -**`See`** - -https://v8.dev/docs/stack-trace-api#customizing-stack-traces - -#### Inherited from - -Error.prepareStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:11 - ---- - -### stackTraceLimit - -▪ `Static` **stackTraceLimit**: `number` - -#### Inherited from - -Error.stackTraceLimit - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:13 - -## Methods - -### captureStackTrace - -▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` - -Create .stack property on a target object - -#### Parameters - -| Name | Type | -| :---------------- | :--------- | -| `targetObject` | `object` | -| `constructorOpt?` | `Function` | - -#### Returns - -`void` - -#### Inherited from - -Error.captureStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:4 diff --git a/docs/docs/developer/api/sdk/classes/UnsupportedChainError.md b/docs/docs/developer/api/sdk/classes/UnsupportedChainError.md deleted file mode 100644 index 789bf68c..00000000 --- a/docs/docs/developer/api/sdk/classes/UnsupportedChainError.md +++ /dev/null @@ -1,202 +0,0 @@ ---- -id: "UnsupportedChainError" -title: "Class: UnsupportedChainError" -sidebar_label: "UnsupportedChainError" -sidebar_position: 0 -custom_edit_url: null ---- - -This blockchain is not yet supported -Please file an issue - -## Hierarchy - -- `Error` - - ↳ **`UnsupportedChainError`** - -## Implements - -- [`CustomError`](../interfaces/CustomError.md) - -## Constructors - -### constructor - -• **new UnsupportedChainError**(`message`, `payload?`): [`UnsupportedChainError`](UnsupportedChainError.md) - -Creates a new instance of the UnsupportedChainError class. - -#### Parameters - -| Name | Type | Description | -| :---------------- | :---------------------------------- | :------------------------ | -| `message` | `string` | The error message. | -| `payload?` | `Object` | Additional error payload. | -| `payload.chainID` | `undefined` \| `string` \| `number` | - | - -#### Returns - -[`UnsupportedChainError`](UnsupportedChainError.md) - -#### Overrides - -Error.constructor - -#### Defined in - -[sdk/src/types/errors.ts:174](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L174) - -## Properties - -### cause - -• `Optional` **cause**: `unknown` - -#### Inherited from - -Error.cause - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es2022.error.d.ts:24 - ---- - -### message - -• **message**: `string` - -#### Inherited from - -Error.message - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1076 - ---- - -### name - -• **name**: `string` - -#### Inherited from - -Error.name - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1075 - ---- - -### payload - -• `Optional` **payload**: `Object` - -Additional error payload. - -#### Type declaration - -| Name | Type | -| :-------- | :---------------------------------- | -| `chainID` | `undefined` \| `string` \| `number` | - -#### Implementation of - -[CustomError](../interfaces/CustomError.md).[payload](../interfaces/CustomError.md#payload) - -#### Defined in - -[sdk/src/types/errors.ts:167](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L167) - ---- - -### stack - -• `Optional` **stack**: `string` - -#### Inherited from - -Error.stack - -#### Defined in - -node_modules/.pnpm/typescript@5.3.2/node_modules/typescript/lib/lib.es5.d.ts:1077 - ---- - -### prepareStackTrace - -▪ `Static` `Optional` **prepareStackTrace**: (`err`: `Error`, `stackTraces`: `CallSite`[]) => `any` - -#### Type declaration - -▸ (`err`, `stackTraces`): `any` - -Optional override for formatting stack traces - -##### Parameters - -| Name | Type | -| :------------ | :----------- | -| `err` | `Error` | -| `stackTraces` | `CallSite`[] | - -##### Returns - -`any` - -**`See`** - -https://v8.dev/docs/stack-trace-api#customizing-stack-traces - -#### Inherited from - -Error.prepareStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:11 - ---- - -### stackTraceLimit - -▪ `Static` **stackTraceLimit**: `number` - -#### Inherited from - -Error.stackTraceLimit - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:13 - -## Methods - -### captureStackTrace - -▸ **captureStackTrace**(`targetObject`, `constructorOpt?`): `void` - -Create .stack property on a target object - -#### Parameters - -| Name | Type | -| :---------------- | :--------- | -| `targetObject` | `object` | -| `constructorOpt?` | `Function` | - -#### Returns - -`void` - -#### Inherited from - -Error.captureStackTrace - -#### Defined in - -node_modules/.pnpm/@types+node@18.18.7/node_modules/@types/node/globals.d.ts:4 diff --git a/docs/docs/developer/api/sdk/classes/_category_.yml b/docs/docs/developer/api/sdk/classes/_category_.yml deleted file mode 100644 index 55c7980a..00000000 --- a/docs/docs/developer/api/sdk/classes/_category_.yml +++ /dev/null @@ -1,2 +0,0 @@ -label: "Classes" -position: 3 \ No newline at end of file diff --git a/docs/docs/developer/api/sdk/index.md b/docs/docs/developer/api/sdk/index.md deleted file mode 100644 index 6e5c33b0..00000000 --- a/docs/docs/developer/api/sdk/index.md +++ /dev/null @@ -1,141 +0,0 @@ ---- -id: "index" -title: "@hypercerts-org/sdk" -sidebar_label: "Readme" -sidebar_position: 0 -custom_edit_url: null ---- - -# Hypercert SDK - -## Quickstart Guide - -1. Install the SDK using npm or yarn: - -```bash -npm install @hypercerts-org/sdk -``` - -or - -```bash - yarn add @hypercerts-org/sdk -``` - -2. Import the SDK into your project: - -```bash -import { HypercertClient } from "@hypercerts-org/sdk"; -``` - -3. Create a new instance of the HypercertClient class with your configuration options: - -```js -const client = new HypercertClient({ - chain: { id: 11155111 }, // required -}); -``` - -> **Note** If there's no `walletClient` provided the client will run in [read-only mode](#read-only-mode) - -4. Use the client object to interact with the Hypercert network. - -For example, you can use the `client.mintClaim` method to create a new claim: - -```js -const tx = await client.mintClaim( - metaData, - totalUnits, - transferRestriction, - overrides, -); -``` - -This will validate the metadata, store it on IPFS, create a new hypercert on-chain and return a transaction receipt. - -You can also use the client to query the subgraph and retrieve which claims an address owns: - -```js -const claims = await client.indexer.fractionsByOwner(owner); -``` - -For more information on how to use the SDK, check out the -[developer documentation](https://hypercerts.org/docs/developer/) and the -[Graph playground](https://thegraph.com/hosted-service/subgraph/hypercerts-admin/hypercerts-testnet). - -That's it! With these simple steps, you can start using the Hypercert SDK in your own projects. - -## Config - -HypercertClientConfig is a configuration object used when initializing a new instance of the HypercertClient. It allows -you to customize the client by setting your own providers or deployments. At it's simplest, you only need to provide -`chain.id` to initalize the client in `readonly` mode. - -| Field | Type | Description | -| --------------------------- | --------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------- | -| `chain` | Object | Partial configuration for the blockchain network. | -| `contractAddress` | String | The address of the deployed contract. | -| `graphName` | String | The name of the subgraph. | -| `easContractAddress` | String | The address of the EAS contract. | -| `publicClient` | Object | The PublicClient is inherently read-only and is used for reading data from the blockchain. | -| `walletClient` | Object | The WalletClient is used for signing and sending transactions. | -| `unsafeForceOverrideConfig` | Boolean | Boolean to force the use of overridden values. | -| `readOnly` | Boolean | Boolean to assert if the client is in read-only mode. | -| `readOnlyReason` | String | Reason for read-only mode. This is optional and can be used for logging or debugging purposes. | -| `indexerEnvironment` | `'test' \| 'production' \| 'all'` | Determines which graphs should be read out when querying | The environment of the indexer. | - -### Read-only mode - -The SDK client will be in read-only mode if any of the following conditions are true: - -- The client was initialized without a walletprovider. -- The contract address is not set. -- The storage layer is in read-only mode. - -If any of these conditions are true, the readonly property of the HypercertClient instance will be set to true, and a -warning message will be logged indicating that the client is in read-only mode. - -### Logging - -The logger for the SDK uses the log level based on the value of the LOG_LEVEL environment variable. The log level -determines which log messages are printed to the console. By default, the logger is configured to log messages with a -level of info or higher to the console. - -## Client modules - -The `HypercertClient` provides a high-level interface for interacting with the Hypercert ecosystem. The HypercertClient -has three getter methods: `storage`, `indexer`, and `contract`. These methods return instances of the HypercertsStorage, -HypercertIndexer, and HypercertMinter classes, respectively. - -```js -const { - client: { storage }, -} = new HypercertClient({ chain: { id: 11155111 } }); -``` - -The `storage` is a utility class that provides methods for storing and retrieving Hypercert metadata from IPFS. It is -used by the HypercertClient to store metadata when creating new Hypercerts. - -```js -const { - client: { indexer }, -} = new HypercertClient({ chain: { id: 11155111 } }); -``` - -The `indexer` is a utility class that provides methods for indexing and searching Hypercerts based on various criteria. -It is used by the HypercertClient to retrieve event-based data via the subgraph - -```js -const { - client: { contract }, -} = new HypercertClient({ chain: { id: 11155111 } }); -``` - -Finally we have a `contract` that provides methods for interacting with the HypercertMinter smart contract. It is used -by the HypercertClient to create new Hypercerts and retrieve specific on-chain information. - -By providing instances of these classes through the storage, indexer, and contract getters, the HypercertClient allows -developers to easily interact with the various components of the Hypercert system. For example, a developer could use -the storage instance to store metadata for a new Hypercert, the indexer instance to search for existing Hypercerts based -on various criteria, and the contract instance to create new Hypercerts and retrieve existing Hypercerts from the -contract. diff --git a/docs/docs/developer/api/sdk/interfaces/CustomError.md b/docs/docs/developer/api/sdk/interfaces/CustomError.md deleted file mode 100644 index 392d17e9..00000000 --- a/docs/docs/developer/api/sdk/interfaces/CustomError.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -id: "CustomError" -title: "Interface: CustomError" -sidebar_label: "CustomError" -sidebar_position: 0 -custom_edit_url: null ---- - -An interface for errors that have a specific type. - -## Implemented by - -- [`ClientError`](../classes/ClientError.md) -- [`ConfigurationError`](../classes/ConfigurationError.md) -- [`ContractError`](../classes/ContractError.md) -- [`FetchError`](../classes/FetchError.md) -- [`InvalidOrMissingError`](../classes/InvalidOrMissingError.md) -- [`MalformedDataError`](../classes/MalformedDataError.md) -- [`MintingError`](../classes/MintingError.md) -- [`StorageError`](../classes/StorageError.md) -- [`UnknownSchemaError`](../classes/UnknownSchemaError.md) -- [`UnsupportedChainError`](../classes/UnsupportedChainError.md) - -## Properties - -### payload - -• `Optional` **payload**: `Object` - -Additional error payload. - -#### Index signature - -▪ [key: `string`]: `unknown` - -#### Defined in - -[sdk/src/types/errors.ts:10](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L10) diff --git a/docs/docs/developer/api/sdk/interfaces/DuplicateEvaluation.md b/docs/docs/developer/api/sdk/interfaces/DuplicateEvaluation.md deleted file mode 100644 index b2d63435..00000000 --- a/docs/docs/developer/api/sdk/interfaces/DuplicateEvaluation.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -id: "DuplicateEvaluation" -title: "Interface: DuplicateEvaluation" -sidebar_label: "DuplicateEvaluation" -sidebar_position: 0 -custom_edit_url: null ---- - -## Indexable - -▪ [k: `string`]: `unknown` - -## Properties - -### duplicateHypercerts - -• **duplicateHypercerts**: [`HypercertPointer`](HypercertPointer.md)[] - -#### Defined in - -[sdk/src/types/evaluation.d.ts:22](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L22) - ---- - -### explanation - -• **explanation**: `string` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:24](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L24) - ---- - -### realHypercert - -• **realHypercert**: [`HypercertPointer`](HypercertPointer.md) - -#### Defined in - -[sdk/src/types/evaluation.d.ts:23](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L23) - ---- - -### type - -• **type**: `"duplicate"` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:21](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L21) diff --git a/docs/docs/developer/api/sdk/interfaces/EASEvaluation.md b/docs/docs/developer/api/sdk/interfaces/EASEvaluation.md deleted file mode 100644 index a68f6cce..00000000 --- a/docs/docs/developer/api/sdk/interfaces/EASEvaluation.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -id: "EASEvaluation" -title: "Interface: EASEvaluation" -sidebar_label: "EASEvaluation" -sidebar_position: 0 -custom_edit_url: null ---- - -## Indexable - -▪ [k: `string`]: `unknown` - -## Properties - -### chainId - -• **chainId**: `string` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:41](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L41) - ---- - -### contract - -• **contract**: `string` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:42](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L42) - ---- - -### type - -• **type**: `"EAS"` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:40](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L40) - ---- - -### uid - -• **uid**: `string` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:43](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L43) diff --git a/docs/docs/developer/api/sdk/interfaces/HypercertClaimdata.md b/docs/docs/developer/api/sdk/interfaces/HypercertClaimdata.md deleted file mode 100644 index c309d77d..00000000 --- a/docs/docs/developer/api/sdk/interfaces/HypercertClaimdata.md +++ /dev/null @@ -1,160 +0,0 @@ ---- -id: "HypercertClaimdata" -title: "Interface: HypercertClaimdata" -sidebar_label: "HypercertClaimdata" -sidebar_position: 0 -custom_edit_url: null ---- - -Properties of an impact claim - -## Indexable - -▪ [k: `string`]: `unknown` - -## Properties - -### contributors - -• **contributors**: `Object` - -Contributors - -#### Index signature - -▪ [k: `string`]: `unknown` - -#### Type declaration - -| Name | Type | -| :--------------- | :--------- | -| `display_value?` | `string` | -| `name?` | `string` | -| `value?` | `string`[] | - -#### Defined in - -[sdk/src/types/claimdata.d.ts:53](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/claimdata.d.ts#L53) - ---- - -### impact_scope - -• **impact_scope**: `Object` - -Scopes of impact - -#### Index signature - -▪ [k: `string`]: `unknown` - -#### Type declaration - -| Name | Type | -| :--------------- | :--------- | -| `display_value?` | `string` | -| `excludes?` | `string`[] | -| `name?` | `string` | -| `value?` | `string`[] | - -#### Defined in - -[sdk/src/types/claimdata.d.ts:15](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/claimdata.d.ts#L15) - ---- - -### impact_timeframe - -• **impact_timeframe**: `Object` - -Impact time period. The value is UNIX time in seconds from epoch. - -#### Index signature - -▪ [k: `string`]: `unknown` - -#### Type declaration - -| Name | Type | -| :--------------- | :--------- | -| `display_value?` | `string` | -| `name?` | `string` | -| `value?` | `number`[] | - -#### Defined in - -[sdk/src/types/claimdata.d.ts:44](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/claimdata.d.ts#L44) - ---- - -### rights - -• `Optional` **rights**: `Object` - -Rights - -#### Index signature - -▪ [k: `string`]: `unknown` - -#### Type declaration - -| Name | Type | -| :--------------- | :--------- | -| `display_value?` | `string` | -| `excludes?` | `string`[] | -| `name?` | `string` | -| `value?` | `string`[] | - -#### Defined in - -[sdk/src/types/claimdata.d.ts:62](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/claimdata.d.ts#L62) - ---- - -### work_scope - -• **work_scope**: `Object` - -Scopes of work - -#### Index signature - -▪ [k: `string`]: `unknown` - -#### Type declaration - -| Name | Type | -| :--------------- | :--------- | -| `display_value?` | `string` | -| `excludes?` | `string`[] | -| `name?` | `string` | -| `value?` | `string`[] | - -#### Defined in - -[sdk/src/types/claimdata.d.ts:25](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/claimdata.d.ts#L25) - ---- - -### work_timeframe - -• **work_timeframe**: `Object` - -Work time period. The value is UNIX time in seconds from epoch. - -#### Index signature - -▪ [k: `string`]: `unknown` - -#### Type declaration - -| Name | Type | -| :--------------- | :--------- | -| `display_value?` | `string` | -| `name?` | `string` | -| `value?` | `number`[] | - -#### Defined in - -[sdk/src/types/claimdata.d.ts:35](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/claimdata.d.ts#L35) diff --git a/docs/docs/developer/api/sdk/interfaces/HypercertClientInterface.md b/docs/docs/developer/api/sdk/interfaces/HypercertClientInterface.md deleted file mode 100644 index 2045e99e..00000000 --- a/docs/docs/developer/api/sdk/interfaces/HypercertClientInterface.md +++ /dev/null @@ -1,476 +0,0 @@ ---- -id: "HypercertClientInterface" -title: "Interface: HypercertClientInterface" -sidebar_label: "HypercertClientInterface" -sidebar_position: 0 -custom_edit_url: null ---- - -The interface for the Hypercert client. - -## Hierarchy - -- [`HypercertClientMethods`](HypercertClientMethods.md) - -- [`HypercertClientState`](HypercertClientState.md) - - ↳ **`HypercertClientInterface`** - -## Implemented by - -- [`HypercertClient`](../classes/HypercertClient.md) - -## Properties - -### batchMintClaimFractionsFromAllowlists - -• **batchMintClaimFractionsFromAllowlists**: (`claimIds`: `bigint`[], `units`: `bigint`[], `proofs`: (\`0x$\{string}\` \| `Uint8Array`)[][]) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`claimIds`, `units`, `proofs`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Batch mints a claim fraction from an allowlist - -##### Parameters - -| Name | Type | Description | -| :--------- | :------------------------------------- | :---------------------------------------------------- | -| `claimIds` | `bigint`[] | Array of the IDs of the claims to mint fractions for. | -| `units` | `bigint`[] | Array of the number of units for each fraction. | -| `proofs` | (\`0x$\{string}\` \| `Uint8Array`)[][] | Array of Merkle proofs for the allowlists. | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction receipt - -A Promise that resolves to the transaction hash - -**`Note`** - -The length of the arrays must be equal. - -**`Note`** - -The order of the arrays must be equal. - -#### Inherited from - -[HypercertClientMethods](HypercertClientMethods.md).[batchMintClaimFractionsFromAllowlists](HypercertClientMethods.md#batchmintclaimfractionsfromallowlists) - -#### Defined in - -[sdk/src/types/client.ts:291](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L291) - ---- - -### batchTransferFractions - -• **batchTransferFractions**: (`fractionIds`: `bigint`[], `to`: \`0x$\{string}\`, `overrides?`: [`SupportedOverrides`](../modules.md#supportedoverrides)) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`fractionIds`, `to`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Transfers multiple claim fractions to a new owner. - -##### Parameters - -| Name | Type | -| :------------ | :------------------------------------------------------- | -| `fractionIds` | `bigint`[] | -| `to` | \`0x$\{string}\` | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Inherited from - -[HypercertClientMethods](HypercertClientMethods.md).[batchTransferFractions](HypercertClientMethods.md#batchtransferfractions) - -#### Defined in - -[sdk/src/types/client.ts:225](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L225) - ---- - -### burnClaimFraction - -• **burnClaimFraction**: (`fractionId`: `bigint`) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`fractionId`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Burns a claim fraction. - -##### Parameters - -| Name | Type | Description | -| :----------- | :------- | :------------------------------------ | -| `fractionId` | `bigint` | The ID of the claim fraction to burn. | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Inherited from - -[HypercertClientMethods](HypercertClientMethods.md).[burnClaimFraction](HypercertClientMethods.md#burnclaimfraction) - -#### Defined in - -[sdk/src/types/client.ts:266](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L266) - ---- - -### createAllowlist - -• **createAllowlist**: (`allowList`: [`AllowlistEntry`](../modules.md#allowlistentry)[], `metaData`: [`HypercertMetadata`](HypercertMetadata.md), `totalUnits`: `bigint`, `transferRestriction`: [`TransferRestrictions`](../modules.md#transferrestrictions-1)) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`allowList`, `metaData`, `totalUnits`, `transferRestriction`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Creates a new allowlist and mints a new claim with the allowlist. - -##### Parameters - -| Name | Type | Description | -| :-------------------- | :------------------------------------------------------------- | :--------------------------------------- | -| `allowList` | [`AllowlistEntry`](../modules.md#allowlistentry)[] | The allowlist for the claim. | -| `metaData` | [`HypercertMetadata`](HypercertMetadata.md) | The metadata for the claim. | -| `totalUnits` | `bigint` | The total number of units for the claim. | -| `transferRestriction` | [`TransferRestrictions`](../modules.md#transferrestrictions-1) | The transfer restriction for the claim. | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Inherited from - -[HypercertClientMethods](HypercertClientMethods.md).[createAllowlist](HypercertClientMethods.md#createallowlist) - -#### Defined in - -[sdk/src/types/client.ts:239](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L239) - ---- - -### getDeployments - -• **getDeployments**: (`chainId`: [`SupportedChainIds`](../modules.md#supportedchainids)) => `Partial`<[`Deployment`](../modules.md#deployment)\> - -#### Type declaration - -▸ (`chainId`): `Partial`<[`Deployment`](../modules.md#deployment)\> - -Gets the contract addresses and graph urls for the provided `chainId` - -##### Parameters - -| Name | Type | -| :-------- | :----------------------------------------------------- | -| `chainId` | [`SupportedChainIds`](../modules.md#supportedchainids) | - -##### Returns - -`Partial`<[`Deployment`](../modules.md#deployment)\> - -The addresses, graph name and graph url. - -#### Inherited from - -[HypercertClientMethods](HypercertClientMethods.md).[getDeployments](HypercertClientMethods.md#getdeployments) - -#### Defined in - -[sdk/src/types/client.ts:183](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L183) - ---- - -### getTransferRestrictions - -• **getTransferRestrictions**: (`fractionId`: `bigint`) => `Promise`<[`TransferRestrictions`](../modules.md#transferrestrictions-1)\> - -#### Type declaration - -▸ (`fractionId`): `Promise`<[`TransferRestrictions`](../modules.md#transferrestrictions-1)\> - -Retrieves the TransferRestrictions for a claim. - -##### Parameters - -| Name | Type | Description | -| :----------- | :------- | :------------------------------- | -| `fractionId` | `bigint` | The ID of the claim to retrieve. | - -##### Returns - -`Promise`<[`TransferRestrictions`](../modules.md#transferrestrictions-1)\> - -A Promise that resolves to the applicable transfer restrictions. - -#### Inherited from - -[HypercertClientMethods](HypercertClientMethods.md).[getTransferRestrictions](HypercertClientMethods.md#gettransferrestrictions) - -#### Defined in - -[sdk/src/types/client.ts:203](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L203) - ---- - -### indexer - -• **indexer**: `HypercertIndexer` - -The indexer used by the client. - -#### Inherited from - -[HypercertClientState](HypercertClientState.md).[indexer](HypercertClientState.md#indexer) - -#### Defined in - -[sdk/src/types/client.ts:172](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L172) - ---- - -### isClaimOrFractionOnConnectedChain - -• **isClaimOrFractionOnConnectedChain**: (`claimOrFractionId`: `string`) => `boolean` - -#### Type declaration - -▸ (`claimOrFractionId`): `boolean` - -Check if a claim or fraction is on the chain that the Hypercertclient -is currently connected to - -##### Parameters - -| Name | Type | Description | -| :------------------ | :------- | :---------------------------------------- | -| `claimOrFractionId` | `string` | The ID of the claim or fraction to check. | - -##### Returns - -`boolean` - -#### Inherited from - -[HypercertClientMethods](HypercertClientMethods.md).[isClaimOrFractionOnConnectedChain](HypercertClientMethods.md#isclaimorfractiononconnectedchain) - -#### Defined in - -[sdk/src/types/client.ts:302](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L302) - ---- - -### mergeFractionUnits - -• **mergeFractionUnits**: (`fractionIds`: `bigint`[]) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`fractionIds`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Merges multiple claim fractions into a single claim. - -##### Parameters - -| Name | Type | Description | -| :------------ | :--------- | :--------------------------------------- | -| `fractionIds` | `bigint`[] | The IDs of the claim fractions to merge. | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Inherited from - -[HypercertClientMethods](HypercertClientMethods.md).[mergeFractionUnits](HypercertClientMethods.md#mergefractionunits) - -#### Defined in - -[sdk/src/types/client.ts:259](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L259) - ---- - -### mintClaim - -• **mintClaim**: (`metaData`: [`HypercertMetadata`](HypercertMetadata.md), `totalUnits`: `bigint`, `transferRestriction`: [`TransferRestrictions`](../modules.md#transferrestrictions-1)) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`metaData`, `totalUnits`, `transferRestriction`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Mints a new claim. - -##### Parameters - -| Name | Type | Description | -| :-------------------- | :------------------------------------------------------------- | :--------------------------------------- | -| `metaData` | [`HypercertMetadata`](HypercertMetadata.md) | The metadata for the claim. | -| `totalUnits` | `bigint` | The total number of units for the claim. | -| `transferRestriction` | [`TransferRestrictions`](../modules.md#transferrestrictions-1) | The transfer restriction for the claim. | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Inherited from - -[HypercertClientMethods](HypercertClientMethods.md).[mintClaim](HypercertClientMethods.md#mintclaim) - -#### Defined in - -[sdk/src/types/client.ts:192](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L192) - ---- - -### mintClaimFractionFromAllowlist - -• **mintClaimFractionFromAllowlist**: (`claimId`: `bigint`, `units`: `bigint`, `proof`: (\`0x$\{string}\` \| `Uint8Array`)[]) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`claimId`, `units`, `proof`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Mints a claim fraction from an allowlist. - -##### Parameters - -| Name | Type | Description | -| :-------- | :----------------------------------- | :------------------------------------------ | -| `claimId` | `bigint` | The ID of the claim to mint a fraction for. | -| `units` | `bigint` | The number of units for the fraction. | -| `proof` | (\`0x$\{string}\` \| `Uint8Array`)[] | The Merkle proof for the allowlist. | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Inherited from - -[HypercertClientMethods](HypercertClientMethods.md).[mintClaimFractionFromAllowlist](HypercertClientMethods.md#mintclaimfractionfromallowlist) - -#### Defined in - -[sdk/src/types/client.ts:275](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L275) - ---- - -### readonly - -• **readonly**: `boolean` - -Whether the client is in read-only mode. - -#### Inherited from - -[HypercertClientState](HypercertClientState.md).[readonly](HypercertClientState.md#readonly) - -#### Defined in - -[sdk/src/types/client.ts:168](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L168) - ---- - -### splitFractionUnits - -• **splitFractionUnits**: (`fractionId`: `bigint`, `fractions`: `bigint`[]) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`fractionId`, `fractions`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Splits a claim into multiple fractions. - -##### Parameters - -| Name | Type | Description | -| :----------- | :--------- | :---------------------------- | -| `fractionId` | `bigint` | The ID of the claim to split. | -| `fractions` | `bigint`[] | - | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Inherited from - -[HypercertClientMethods](HypercertClientMethods.md).[splitFractionUnits](HypercertClientMethods.md#splitfractionunits) - -#### Defined in - -[sdk/src/types/client.ts:252](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L252) - ---- - -### storage - -• **storage**: [`HypercertStorageInterface`](HypercertStorageInterface.md) - -The storage layer used by the client. - -#### Inherited from - -[HypercertClientState](HypercertClientState.md).[storage](HypercertClientState.md#storage) - -#### Defined in - -[sdk/src/types/client.ts:170](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L170) - ---- - -### transferFraction - -• **transferFraction**: (`fractionId`: `bigint`, `to`: \`0x$\{string}\`, `overrides?`: [`SupportedOverrides`](../modules.md#supportedoverrides)) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`fractionId`, `to`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Transfers a claim fraction to a new owner. - -##### Parameters - -| Name | Type | -| :----------- | :------------------------------------------------------- | -| `fractionId` | `bigint` | -| `to` | \`0x$\{string}\` | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Inherited from - -[HypercertClientMethods](HypercertClientMethods.md).[transferFraction](HypercertClientMethods.md#transferfraction) - -#### Defined in - -[sdk/src/types/client.ts:212](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L212) diff --git a/docs/docs/developer/api/sdk/interfaces/HypercertClientMethods.md b/docs/docs/developer/api/sdk/interfaces/HypercertClientMethods.md deleted file mode 100644 index be54b2af..00000000 --- a/docs/docs/developer/api/sdk/interfaces/HypercertClientMethods.md +++ /dev/null @@ -1,374 +0,0 @@ ---- -id: "HypercertClientMethods" -title: "Interface: HypercertClientMethods" -sidebar_label: "HypercertClientMethods" -sidebar_position: 0 -custom_edit_url: null ---- - -The methods for the Hypercert client. - -## Hierarchy - -- **`HypercertClientMethods`** - - ↳ [`HypercertClientInterface`](HypercertClientInterface.md) - -## Properties - -### batchMintClaimFractionsFromAllowlists - -• **batchMintClaimFractionsFromAllowlists**: (`claimIds`: `bigint`[], `units`: `bigint`[], `proofs`: (\`0x$\{string}\` \| `Uint8Array`)[][]) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`claimIds`, `units`, `proofs`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Batch mints a claim fraction from an allowlist - -##### Parameters - -| Name | Type | Description | -| :--------- | :------------------------------------- | :---------------------------------------------------- | -| `claimIds` | `bigint`[] | Array of the IDs of the claims to mint fractions for. | -| `units` | `bigint`[] | Array of the number of units for each fraction. | -| `proofs` | (\`0x$\{string}\` \| `Uint8Array`)[][] | Array of Merkle proofs for the allowlists. | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction receipt - -A Promise that resolves to the transaction hash - -**`Note`** - -The length of the arrays must be equal. - -**`Note`** - -The order of the arrays must be equal. - -#### Defined in - -[sdk/src/types/client.ts:291](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L291) - ---- - -### batchTransferFractions - -• **batchTransferFractions**: (`fractionIds`: `bigint`[], `to`: \`0x$\{string}\`, `overrides?`: [`SupportedOverrides`](../modules.md#supportedoverrides)) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`fractionIds`, `to`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Transfers multiple claim fractions to a new owner. - -##### Parameters - -| Name | Type | -| :------------ | :------------------------------------------------------- | -| `fractionIds` | `bigint`[] | -| `to` | \`0x$\{string}\` | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Defined in - -[sdk/src/types/client.ts:225](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L225) - ---- - -### burnClaimFraction - -• **burnClaimFraction**: (`fractionId`: `bigint`) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`fractionId`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Burns a claim fraction. - -##### Parameters - -| Name | Type | Description | -| :----------- | :------- | :------------------------------------ | -| `fractionId` | `bigint` | The ID of the claim fraction to burn. | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Defined in - -[sdk/src/types/client.ts:266](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L266) - ---- - -### createAllowlist - -• **createAllowlist**: (`allowList`: [`AllowlistEntry`](../modules.md#allowlistentry)[], `metaData`: [`HypercertMetadata`](HypercertMetadata.md), `totalUnits`: `bigint`, `transferRestriction`: [`TransferRestrictions`](../modules.md#transferrestrictions-1)) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`allowList`, `metaData`, `totalUnits`, `transferRestriction`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Creates a new allowlist and mints a new claim with the allowlist. - -##### Parameters - -| Name | Type | Description | -| :-------------------- | :------------------------------------------------------------- | :--------------------------------------- | -| `allowList` | [`AllowlistEntry`](../modules.md#allowlistentry)[] | The allowlist for the claim. | -| `metaData` | [`HypercertMetadata`](HypercertMetadata.md) | The metadata for the claim. | -| `totalUnits` | `bigint` | The total number of units for the claim. | -| `transferRestriction` | [`TransferRestrictions`](../modules.md#transferrestrictions-1) | The transfer restriction for the claim. | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Defined in - -[sdk/src/types/client.ts:239](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L239) - ---- - -### getDeployments - -• **getDeployments**: (`chainId`: [`SupportedChainIds`](../modules.md#supportedchainids)) => `Partial`<[`Deployment`](../modules.md#deployment)\> - -#### Type declaration - -▸ (`chainId`): `Partial`<[`Deployment`](../modules.md#deployment)\> - -Gets the contract addresses and graph urls for the provided `chainId` - -##### Parameters - -| Name | Type | -| :-------- | :----------------------------------------------------- | -| `chainId` | [`SupportedChainIds`](../modules.md#supportedchainids) | - -##### Returns - -`Partial`<[`Deployment`](../modules.md#deployment)\> - -The addresses, graph name and graph url. - -#### Defined in - -[sdk/src/types/client.ts:183](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L183) - ---- - -### getTransferRestrictions - -• **getTransferRestrictions**: (`fractionId`: `bigint`) => `Promise`<[`TransferRestrictions`](../modules.md#transferrestrictions-1)\> - -#### Type declaration - -▸ (`fractionId`): `Promise`<[`TransferRestrictions`](../modules.md#transferrestrictions-1)\> - -Retrieves the TransferRestrictions for a claim. - -##### Parameters - -| Name | Type | Description | -| :----------- | :------- | :------------------------------- | -| `fractionId` | `bigint` | The ID of the claim to retrieve. | - -##### Returns - -`Promise`<[`TransferRestrictions`](../modules.md#transferrestrictions-1)\> - -A Promise that resolves to the applicable transfer restrictions. - -#### Defined in - -[sdk/src/types/client.ts:203](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L203) - ---- - -### isClaimOrFractionOnConnectedChain - -• **isClaimOrFractionOnConnectedChain**: (`claimOrFractionId`: `string`) => `boolean` - -#### Type declaration - -▸ (`claimOrFractionId`): `boolean` - -Check if a claim or fraction is on the chain that the Hypercertclient -is currently connected to - -##### Parameters - -| Name | Type | Description | -| :------------------ | :------- | :---------------------------------------- | -| `claimOrFractionId` | `string` | The ID of the claim or fraction to check. | - -##### Returns - -`boolean` - -#### Defined in - -[sdk/src/types/client.ts:302](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L302) - ---- - -### mergeFractionUnits - -• **mergeFractionUnits**: (`fractionIds`: `bigint`[]) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`fractionIds`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Merges multiple claim fractions into a single claim. - -##### Parameters - -| Name | Type | Description | -| :------------ | :--------- | :--------------------------------------- | -| `fractionIds` | `bigint`[] | The IDs of the claim fractions to merge. | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Defined in - -[sdk/src/types/client.ts:259](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L259) - ---- - -### mintClaim - -• **mintClaim**: (`metaData`: [`HypercertMetadata`](HypercertMetadata.md), `totalUnits`: `bigint`, `transferRestriction`: [`TransferRestrictions`](../modules.md#transferrestrictions-1)) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`metaData`, `totalUnits`, `transferRestriction`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Mints a new claim. - -##### Parameters - -| Name | Type | Description | -| :-------------------- | :------------------------------------------------------------- | :--------------------------------------- | -| `metaData` | [`HypercertMetadata`](HypercertMetadata.md) | The metadata for the claim. | -| `totalUnits` | `bigint` | The total number of units for the claim. | -| `transferRestriction` | [`TransferRestrictions`](../modules.md#transferrestrictions-1) | The transfer restriction for the claim. | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Defined in - -[sdk/src/types/client.ts:192](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L192) - ---- - -### mintClaimFractionFromAllowlist - -• **mintClaimFractionFromAllowlist**: (`claimId`: `bigint`, `units`: `bigint`, `proof`: (\`0x$\{string}\` \| `Uint8Array`)[]) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`claimId`, `units`, `proof`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Mints a claim fraction from an allowlist. - -##### Parameters - -| Name | Type | Description | -| :-------- | :----------------------------------- | :------------------------------------------ | -| `claimId` | `bigint` | The ID of the claim to mint a fraction for. | -| `units` | `bigint` | The number of units for the fraction. | -| `proof` | (\`0x$\{string}\` \| `Uint8Array`)[] | The Merkle proof for the allowlist. | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Defined in - -[sdk/src/types/client.ts:275](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L275) - ---- - -### splitFractionUnits - -• **splitFractionUnits**: (`fractionId`: `bigint`, `fractions`: `bigint`[]) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`fractionId`, `fractions`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Splits a claim into multiple fractions. - -##### Parameters - -| Name | Type | Description | -| :----------- | :--------- | :---------------------------- | -| `fractionId` | `bigint` | The ID of the claim to split. | -| `fractions` | `bigint`[] | - | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Defined in - -[sdk/src/types/client.ts:252](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L252) - ---- - -### transferFraction - -• **transferFraction**: (`fractionId`: `bigint`, `to`: \`0x$\{string}\`, `overrides?`: [`SupportedOverrides`](../modules.md#supportedoverrides)) => `Promise`<`undefined` \| \`0x$\{string}\`\> - -#### Type declaration - -▸ (`fractionId`, `to`, `overrides?`): `Promise`<`undefined` \| \`0x$\{string}\`\> - -Transfers a claim fraction to a new owner. - -##### Parameters - -| Name | Type | -| :----------- | :------------------------------------------------------- | -| `fractionId` | `bigint` | -| `to` | \`0x$\{string}\` | -| `overrides?` | [`SupportedOverrides`](../modules.md#supportedoverrides) | - -##### Returns - -`Promise`<`undefined` \| \`0x$\{string}\`\> - -A Promise that resolves to the transaction hash - -#### Defined in - -[sdk/src/types/client.ts:212](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L212) diff --git a/docs/docs/developer/api/sdk/interfaces/HypercertClientState.md b/docs/docs/developer/api/sdk/interfaces/HypercertClientState.md deleted file mode 100644 index dd0967ce..00000000 --- a/docs/docs/developer/api/sdk/interfaces/HypercertClientState.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -id: "HypercertClientState" -title: "Interface: HypercertClientState" -sidebar_label: "HypercertClientState" -sidebar_position: 0 -custom_edit_url: null ---- - -The state of the Hypercert client. - -## Hierarchy - -- **`HypercertClientState`** - - ↳ [`HypercertClientInterface`](HypercertClientInterface.md) - -## Properties - -### indexer - -• **indexer**: `HypercertIndexer` - -The indexer used by the client. - -#### Defined in - -[sdk/src/types/client.ts:172](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L172) - ---- - -### readonly - -• **readonly**: `boolean` - -Whether the client is in read-only mode. - -#### Defined in - -[sdk/src/types/client.ts:168](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L168) - ---- - -### storage - -• **storage**: [`HypercertStorageInterface`](HypercertStorageInterface.md) - -The storage layer used by the client. - -#### Defined in - -[sdk/src/types/client.ts:170](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L170) diff --git a/docs/docs/developer/api/sdk/interfaces/HypercertEvaluationSchema.md b/docs/docs/developer/api/sdk/interfaces/HypercertEvaluationSchema.md deleted file mode 100644 index 9bbd00a4..00000000 --- a/docs/docs/developer/api/sdk/interfaces/HypercertEvaluationSchema.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -id: "HypercertEvaluationSchema" -title: "Interface: HypercertEvaluationSchema" -sidebar_label: "HypercertEvaluationSchema" -sidebar_position: 0 -custom_edit_url: null ---- - -Schema for evaluating Hypercerts across different sources and evaluation types - -## Indexable - -▪ [k: `string`]: `unknown` - -## Properties - -### creator - -• **creator**: `string` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:15](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L15) - ---- - -### evaluationData - -• **evaluationData**: [`EvaluationData`](../modules.md#evaluationdata) - -#### Defined in - -[sdk/src/types/evaluation.d.ts:16](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L16) - ---- - -### evaluationSource - -• **evaluationSource**: [`EvaluationSource`](../modules.md#evaluationsource) - -#### Defined in - -[sdk/src/types/evaluation.d.ts:17](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L17) diff --git a/docs/docs/developer/api/sdk/interfaces/HypercertIndexerInterface.md b/docs/docs/developer/api/sdk/interfaces/HypercertIndexerInterface.md deleted file mode 100644 index 91826145..00000000 --- a/docs/docs/developer/api/sdk/interfaces/HypercertIndexerInterface.md +++ /dev/null @@ -1,174 +0,0 @@ ---- -id: "HypercertIndexerInterface" -title: "Interface: HypercertIndexerInterface" -sidebar_label: "HypercertIndexerInterface" -sidebar_position: 0 -custom_edit_url: null ---- - -## Properties - -### claimById - -• **claimById**: (`id`: `string`) => `Promise`<`undefined` \| [`ClaimByIdQuery`](../modules.md#claimbyidquery)\> - -#### Type declaration - -▸ (`id`): `Promise`<`undefined` \| [`ClaimByIdQuery`](../modules.md#claimbyidquery)\> - -##### Parameters - -| Name | Type | -| :--- | :------- | -| `id` | `string` | - -##### Returns - -`Promise`<`undefined` \| [`ClaimByIdQuery`](../modules.md#claimbyidquery)\> - -#### Defined in - -[sdk/src/types/indexer.ts:23](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/indexer.ts#L23) - ---- - -### claimsByOwner - -• **claimsByOwner**: (`owner`: `string`, `params?`: [`QueryParams`](../modules.md#queryparams)) => `Promise`<`undefined` \| [`ClaimsByOwnerQuery`](../modules.md#claimsbyownerquery)\> - -#### Type declaration - -▸ (`owner`, `params?`): `Promise`<`undefined` \| [`ClaimsByOwnerQuery`](../modules.md#claimsbyownerquery)\> - -##### Parameters - -| Name | Type | -| :-------- | :----------------------------------------- | -| `owner` | `string` | -| `params?` | [`QueryParams`](../modules.md#queryparams) | - -##### Returns - -`Promise`<`undefined` \| [`ClaimsByOwnerQuery`](../modules.md#claimsbyownerquery)\> - -#### Defined in - -[sdk/src/types/indexer.ts:22](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/indexer.ts#L22) - ---- - -### firstClaims - -• **firstClaims**: (`params?`: [`QueryParams`](../modules.md#queryparams)) => `Promise`<`undefined` \| [`RecentClaimsQuery`](../modules.md#recentclaimsquery)\> - -#### Type declaration - -▸ (`params?`): `Promise`<`undefined` \| [`RecentClaimsQuery`](../modules.md#recentclaimsquery)\> - -##### Parameters - -| Name | Type | -| :-------- | :----------------------------------------- | -| `params?` | [`QueryParams`](../modules.md#queryparams) | - -##### Returns - -`Promise`<`undefined` \| [`RecentClaimsQuery`](../modules.md#recentclaimsquery)\> - -#### Defined in - -[sdk/src/types/indexer.ts:24](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/indexer.ts#L24) - ---- - -### fractionById - -• **fractionById**: (`fractionId`: `string`) => `Promise`<`undefined` \| [`ClaimTokenByIdQuery`](../modules.md#claimtokenbyidquery)\> - -#### Type declaration - -▸ (`fractionId`): `Promise`<`undefined` \| [`ClaimTokenByIdQuery`](../modules.md#claimtokenbyidquery)\> - -##### Parameters - -| Name | Type | -| :----------- | :------- | -| `fractionId` | `string` | - -##### Returns - -`Promise`<`undefined` \| [`ClaimTokenByIdQuery`](../modules.md#claimtokenbyidquery)\> - -#### Defined in - -[sdk/src/types/indexer.ts:27](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/indexer.ts#L27) - ---- - -### fractionsByClaim - -• **fractionsByClaim**: (`claimId`: `string`, `params?`: [`QueryParams`](../modules.md#queryparams)) => `Promise`<`undefined` \| [`ClaimTokensByClaimQuery`](../modules.md#claimtokensbyclaimquery)\> - -#### Type declaration - -▸ (`claimId`, `params?`): `Promise`<`undefined` \| [`ClaimTokensByClaimQuery`](../modules.md#claimtokensbyclaimquery)\> - -##### Parameters - -| Name | Type | -| :-------- | :----------------------------------------- | -| `claimId` | `string` | -| `params?` | [`QueryParams`](../modules.md#queryparams) | - -##### Returns - -`Promise`<`undefined` \| [`ClaimTokensByClaimQuery`](../modules.md#claimtokensbyclaimquery)\> - -#### Defined in - -[sdk/src/types/indexer.ts:26](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/indexer.ts#L26) - ---- - -### fractionsByOwner - -• **fractionsByOwner**: (`owner`: `string`, `params?`: [`QueryParams`](../modules.md#queryparams)) => `Promise`<`undefined` \| [`ClaimTokensByOwnerQuery`](../modules.md#claimtokensbyownerquery)\> - -#### Type declaration - -▸ (`owner`, `params?`): `Promise`<`undefined` \| [`ClaimTokensByOwnerQuery`](../modules.md#claimtokensbyownerquery)\> - -##### Parameters - -| Name | Type | -| :-------- | :----------------------------------------- | -| `owner` | `string` | -| `params?` | [`QueryParams`](../modules.md#queryparams) | - -##### Returns - -`Promise`<`undefined` \| [`ClaimTokensByOwnerQuery`](../modules.md#claimtokensbyownerquery)\> - -#### Defined in - -[sdk/src/types/indexer.ts:25](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/indexer.ts#L25) - -## Methods - -### getGraphClient - -▸ **getGraphClient**(`chainId`): `Client` - -#### Parameters - -| Name | Type | -| :-------- | :------- | -| `chainId` | `number` | - -#### Returns - -`Client` - -#### Defined in - -[sdk/src/types/indexer.ts:21](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/indexer.ts#L21) diff --git a/docs/docs/developer/api/sdk/interfaces/HypercertMetadata.md b/docs/docs/developer/api/sdk/interfaces/HypercertMetadata.md deleted file mode 100644 index 2df42b6a..00000000 --- a/docs/docs/developer/api/sdk/interfaces/HypercertMetadata.md +++ /dev/null @@ -1,113 +0,0 @@ ---- -id: "HypercertMetadata" -title: "Interface: HypercertMetadata" -sidebar_label: "HypercertMetadata" -sidebar_position: 0 -custom_edit_url: null ---- - -Claim data for hypercert. ERC1155 Metadata compliant - -## Properties - -### allowList - -• `Optional` **allowList**: `string` - -A CID pointer to the merke tree proof json on ipfs - -#### Defined in - -[sdk/src/types/metadata.d.ts:39](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/metadata.d.ts#L39) - ---- - -### description - -• **description**: `string` - -Describes the asset to which this token represents - -#### Defined in - -[sdk/src/types/metadata.d.ts:19](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/metadata.d.ts#L19) - ---- - -### external_url - -• `Optional` **external_url**: `string` - -An url pointing to the external website of the project - -#### Defined in - -[sdk/src/types/metadata.d.ts:23](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/metadata.d.ts#L23) - ---- - -### hypercert - -• `Optional` **hypercert**: `HypercertClaimdata` - -#### Defined in - -[sdk/src/types/metadata.d.ts:45](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/metadata.d.ts#L45) - ---- - -### image - -• **image**: `string` - -A URI pointing to a resource with mime type image/\* representing the asset to which this token represents. Consider making any images at a width between 320 and 1080 pixels and aspect ratio between 1.91:1 and 4:5 inclusive. - -#### Defined in - -[sdk/src/types/metadata.d.ts:27](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/metadata.d.ts#L27) - ---- - -### name - -• **name**: `string` - -Identifies the asset to which this token represents - -#### Defined in - -[sdk/src/types/metadata.d.ts:15](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/metadata.d.ts#L15) - ---- - -### properties - -• `Optional` **properties**: \{ `[k: string]`: `unknown`; `trait_type?`: `string` ; `value?`: `string` }[] - -#### Defined in - -[sdk/src/types/metadata.d.ts:40](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/metadata.d.ts#L40) - ---- - -### ref - -• `Optional` **ref**: `string` - -Describes the asset to which this token represents - -#### Defined in - -[sdk/src/types/metadata.d.ts:35](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/metadata.d.ts#L35) - ---- - -### version - -• `Optional` **version**: `string` - -The version of Hypercert schema used to describe this hypercert - -#### Defined in - -[sdk/src/types/metadata.d.ts:31](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/metadata.d.ts#L31) diff --git a/docs/docs/developer/api/sdk/interfaces/HypercertPointer.md b/docs/docs/developer/api/sdk/interfaces/HypercertPointer.md deleted file mode 100644 index 0d6489e6..00000000 --- a/docs/docs/developer/api/sdk/interfaces/HypercertPointer.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: "HypercertPointer" -title: "Interface: HypercertPointer" -sidebar_label: "HypercertPointer" -sidebar_position: 0 -custom_edit_url: null ---- - -## Indexable - -▪ [k: `string`]: `unknown` - -## Properties - -### chainId - -• **chainId**: `string` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:28](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L28) - ---- - -### claimId - -• **claimId**: `string` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:30](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L30) - ---- - -### contract - -• **contract**: `string` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:29](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L29) diff --git a/docs/docs/developer/api/sdk/interfaces/HypercertStorageInterface.md b/docs/docs/developer/api/sdk/interfaces/HypercertStorageInterface.md deleted file mode 100644 index ddf9e9dc..00000000 --- a/docs/docs/developer/api/sdk/interfaces/HypercertStorageInterface.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -id: "HypercertStorageInterface" -title: "Interface: HypercertStorageInterface" -sidebar_label: "HypercertStorageInterface" -sidebar_position: 0 -custom_edit_url: null ---- - -The interface for the Hypercert storage layer. - -## Implemented by - -- [`HypercertsStorage`](../classes/HypercertsStorage.md) - -## Properties - -### getData - -• **getData**: (`cidOrIpfsUri`: `string`, `config?`: [`StorageConfigOverrides`](../modules.md#storageconfigoverrides)) => `Promise`<`unknown`\> - -#### Type declaration - -▸ (`cidOrIpfsUri`, `config?`): `Promise`<`unknown`\> - -Retrieves arbitrary data from IPFS. - -##### Parameters - -| Name | Type | Description | -| :------------- | :--------------------------------------------------------------- | :------------------------------------------- | -| `cidOrIpfsUri` | `string` | The CID or IPFS URI of the data to retrieve. | -| `config?` | [`StorageConfigOverrides`](../modules.md#storageconfigoverrides) | An optional configuration object. | - -##### Returns - -`Promise`<`unknown`\> - -A Promise that resolves to the retrieved data. - -#### Defined in - -[sdk/src/types/client.ts:147](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L147) - ---- - -### getMetadata - -• **getMetadata**: (`cidOrIpfsUri`: `string`, `config?`: [`StorageConfigOverrides`](../modules.md#storageconfigoverrides)) => `Promise`<[`HypercertMetadata`](HypercertMetadata.md)\> - -#### Type declaration - -▸ (`cidOrIpfsUri`, `config?`): `Promise`<[`HypercertMetadata`](HypercertMetadata.md)\> - -Retrieves the metadata for a hypercerts. - -##### Parameters - -| Name | Type | Description | -| :------------- | :--------------------------------------------------------------- | :----------------------------------------------- | -| `cidOrIpfsUri` | `string` | The CID or IPFS URI of the metadata to retrieve. | -| `config?` | [`StorageConfigOverrides`](../modules.md#storageconfigoverrides) | An optional configuration object. | - -##### Returns - -`Promise`<[`HypercertMetadata`](HypercertMetadata.md)\> - -A Promise that resolves to the retrieved metadata. - -#### Defined in - -[sdk/src/types/client.ts:139](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L139) - ---- - -### storeAllowList - -• **storeAllowList**: (`allowList`: [`AllowlistEntry`](../modules.md#allowlistentry)[], `totalUnits`: `bigint`, `config?`: [`StorageConfigOverrides`](../modules.md#storageconfigoverrides)) => `Promise`<`string`\> - -#### Type declaration - -▸ (`allowList`, `totalUnits`, `config?`): `Promise`<`string`\> - -Stores the allowlost for a hypercert. - -##### Parameters - -| Name | Type | Description | -| :----------- | :--------------------------------------------------------------- | :-------------------------------- | -| `allowList` | [`AllowlistEntry`](../modules.md#allowlistentry)[] | The metadata to store. | -| `totalUnits` | `bigint` | - | -| `config?` | [`StorageConfigOverrides`](../modules.md#storageconfigoverrides) | An optional configuration object. | - -##### Returns - -`Promise`<`string`\> - -A Promise that resolves to the CID of the stored metadata. - -#### Defined in - -[sdk/src/types/client.ts:123](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L123) - ---- - -### storeMetadata - -• **storeMetadata**: (`metadata`: [`HypercertMetadata`](HypercertMetadata.md), `config?`: [`StorageConfigOverrides`](../modules.md#storageconfigoverrides)) => `Promise`<`string`\> - -#### Type declaration - -▸ (`metadata`, `config?`): `Promise`<`string`\> - -Stores the metadata for a hypercert. - -##### Parameters - -| Name | Type | Description | -| :--------- | :--------------------------------------------------------------- | :-------------------------------- | -| `metadata` | [`HypercertMetadata`](HypercertMetadata.md) | The metadata to store. | -| `config?` | [`StorageConfigOverrides`](../modules.md#storageconfigoverrides) | An optional configuration object. | - -##### Returns - -`Promise`<`string`\> - -A Promise that resolves to the CID of the stored metadata. - -#### Defined in - -[sdk/src/types/client.ts:131](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L131) diff --git a/docs/docs/developer/api/sdk/interfaces/IPFSEvaluation.md b/docs/docs/developer/api/sdk/interfaces/IPFSEvaluation.md deleted file mode 100644 index ec56fab6..00000000 --- a/docs/docs/developer/api/sdk/interfaces/IPFSEvaluation.md +++ /dev/null @@ -1,31 +0,0 @@ ---- -id: "IPFSEvaluation" -title: "Interface: IPFSEvaluation" -sidebar_label: "IPFSEvaluation" -sidebar_position: 0 -custom_edit_url: null ---- - -## Indexable - -▪ [k: `string`]: `unknown` - -## Properties - -### cid - -• **cid**: `string` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:48](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L48) - ---- - -### type - -• **type**: `"IPFS"` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:47](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L47) diff --git a/docs/docs/developer/api/sdk/interfaces/SimpleTextEvaluation.md b/docs/docs/developer/api/sdk/interfaces/SimpleTextEvaluation.md deleted file mode 100644 index 812c8a29..00000000 --- a/docs/docs/developer/api/sdk/interfaces/SimpleTextEvaluation.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -id: "SimpleTextEvaluation" -title: "Interface: SimpleTextEvaluation" -sidebar_label: "SimpleTextEvaluation" -sidebar_position: 0 -custom_edit_url: null ---- - -## Indexable - -▪ [k: `string`]: `unknown` - -## Properties - -### hypercert - -• **hypercert**: [`HypercertPointer`](HypercertPointer.md) - -#### Defined in - -[sdk/src/types/evaluation.d.ts:35](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L35) - ---- - -### text - -• **text**: `string` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:36](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L36) - ---- - -### type - -• **type**: `"simpleText"` - -#### Defined in - -[sdk/src/types/evaluation.d.ts:34](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L34) diff --git a/docs/docs/developer/api/sdk/interfaces/_category_.yml b/docs/docs/developer/api/sdk/interfaces/_category_.yml deleted file mode 100644 index 43bec88c..00000000 --- a/docs/docs/developer/api/sdk/interfaces/_category_.yml +++ /dev/null @@ -1,2 +0,0 @@ -label: "Interfaces" -position: 4 \ No newline at end of file diff --git a/docs/docs/developer/api/sdk/modules.md b/docs/docs/developer/api/sdk/modules.md deleted file mode 100644 index 6e6bc4e2..00000000 --- a/docs/docs/developer/api/sdk/modules.md +++ /dev/null @@ -1,1630 +0,0 @@ ---- -id: "modules" -title: "@hypercerts-org/sdk" -sidebar_label: "Exports" -sidebar_position: 0.5 -custom_edit_url: null ---- - -## Classes - -- [ClientError](classes/ClientError.md) -- [ConfigurationError](classes/ConfigurationError.md) -- [ContractError](classes/ContractError.md) -- [FetchError](classes/FetchError.md) -- [HypercertClient](classes/HypercertClient.md) -- [HypercertsStorage](classes/HypercertsStorage.md) -- [InvalidOrMissingError](classes/InvalidOrMissingError.md) -- [MalformedDataError](classes/MalformedDataError.md) -- [MintingError](classes/MintingError.md) -- [StorageError](classes/StorageError.md) -- [UnknownSchemaError](classes/UnknownSchemaError.md) -- [UnsupportedChainError](classes/UnsupportedChainError.md) - -## Interfaces - -- [CustomError](interfaces/CustomError.md) -- [DuplicateEvaluation](interfaces/DuplicateEvaluation.md) -- [EASEvaluation](interfaces/EASEvaluation.md) -- [HypercertClaimdata](interfaces/HypercertClaimdata.md) -- [HypercertClientInterface](interfaces/HypercertClientInterface.md) -- [HypercertClientMethods](interfaces/HypercertClientMethods.md) -- [HypercertClientState](interfaces/HypercertClientState.md) -- [HypercertEvaluationSchema](interfaces/HypercertEvaluationSchema.md) -- [HypercertIndexerInterface](interfaces/HypercertIndexerInterface.md) -- [HypercertMetadata](interfaces/HypercertMetadata.md) -- [HypercertPointer](interfaces/HypercertPointer.md) -- [HypercertStorageInterface](interfaces/HypercertStorageInterface.md) -- [IPFSEvaluation](interfaces/IPFSEvaluation.md) -- [SimpleTextEvaluation](interfaces/SimpleTextEvaluation.md) - -## Type Aliases - -### AllowlistEntry - -Ƭ **AllowlistEntry**: `Object` - -Represents an entry in an allowlist. - -#### Type declaration - -| Name | Type | -| :-------- | :------- | -| `address` | `string` | -| `units` | `bigint` | - -#### Defined in - -[sdk/src/types/hypercerts.ts:24](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/hypercerts.ts#L24) - ---- - -### Claim - -Ƭ **Claim**: `Object` - -#### Type declaration - -| Name | Type | -| :------------ | :-------------------------------------------- | -| `__typename?` | `"Claim"` | -| `allowlist?` | `Maybe`<`Allowlist`\> | -| `contract` | `Scalars`[`"String"`][``"output"``] | -| `creation` | `Scalars`[`"BigInt"`][``"output"``] | -| `creator?` | `Maybe`<`Scalars`[`"Bytes"`][``"output"``]\> | -| `id` | `Scalars`[`"String"`][``"output"``] | -| `owner?` | `Maybe`<`Scalars`[`"Bytes"`][``"output"``]\> | -| `tokenID` | `Scalars`[`"BigInt"`][``"output"``] | -| `totalUnits?` | `Maybe`<`Scalars`[`"BigInt"`][``"output"``]\> | -| `uri?` | `Maybe`<`Scalars`[`"String"`][``"output"``]\> | - -#### Defined in - -[sdk/src/indexer/gql/graphql.ts:205](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/graphql.ts#L205) - ---- - -### ClaimByIdQuery - -Ƭ **ClaimByIdQuery**: `Object` - -#### Type declaration - -| Name | Type | -| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `__typename?` | `"Query"` | -| `claim?` | \{ `__typename?`: `"Claim"` ; `contract`: `string` ; `creator?`: `any` \| `null` ; `id`: `string` ; `owner?`: `any` \| `null` ; `tokenID`: `any` ; `totalUnits?`: `any` \| `null` ; `uri?`: `string` \| `null` } \| `null` | - -#### Defined in - -[sdk/src/indexer/gql/graphql.ts:1179](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/graphql.ts#L1179) - ---- - -### ClaimToken - -Ƭ **ClaimToken**: `Object` - -#### Type declaration - -| Name | Type | -| :------------ | :---------------------------------- | -| `__typename?` | `"ClaimToken"` | -| `claim` | [`Claim`](modules.md#claim) | -| `id` | `Scalars`[`"String"`][``"output"``] | -| `offers?` | `Maybe`<`Offer`[]\> | -| `owner` | `Scalars`[`"Bytes"`][``"output"``] | -| `tokenID` | `Scalars`[`"BigInt"`][``"output"``] | -| `units` | `Scalars`[`"BigInt"`][``"output"``] | - -#### Defined in - -[sdk/src/indexer/gql/graphql.ts:218](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/graphql.ts#L218) - ---- - -### ClaimTokenByIdQuery - -Ƭ **ClaimTokenByIdQuery**: `Object` - -#### Type declaration - -| Name | Type | -| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `__typename?` | `"Query"` | -| `claimToken?` | \{ `__typename?`: `"ClaimToken"` ; `claim`: \{ `__typename?`: `"Claim"` ; `creation`: `any` ; `id`: `string` ; `totalUnits?`: `any` \| `null` ; `uri?`: `string` \| `null` } ; `id`: `string` ; `owner`: `any` ; `tokenID`: `any` ; `units`: `any` } \| `null` | - -#### Defined in - -[sdk/src/indexer/gql/graphql.ts:1206](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/graphql.ts#L1206) - ---- - -### ClaimTokensByClaimQuery - -Ƭ **ClaimTokensByClaimQuery**: `Object` - -#### Type declaration - -| Name | Type | -| :------------ | :--------------------------------------------------------------------------------------------------------- | -| `__typename?` | `"Query"` | -| `claimTokens` | \{ `__typename?`: `"ClaimToken"` ; `id`: `string` ; `owner`: `any` ; `tokenID`: `any` ; `units`: `any` }[] | - -#### Defined in - -[sdk/src/indexer/gql/graphql.ts:1199](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/graphql.ts#L1199) - ---- - -### ClaimTokensByOwnerQuery - -Ƭ **ClaimTokensByOwnerQuery**: `Object` - -#### Type declaration - -| Name | Type | -| :------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `__typename?` | `"Query"` | -| `claimTokens` | \{ `__typename?`: `"ClaimToken"` ; `claim`: \{ `__typename?`: `"Claim"` ; `creation`: `any` ; `id`: `string` ; `totalUnits?`: `any` \| `null` ; `uri?`: `string` \| `null` } ; `id`: `string` ; `owner`: `any` ; `tokenID`: `any` ; `units`: `any` }[] | - -#### Defined in - -[sdk/src/indexer/gql/graphql.ts:1189](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/graphql.ts#L1189) - ---- - -### ClaimsByOwnerQuery - -Ƭ **ClaimsByOwnerQuery**: `Object` - -#### Type declaration - -| Name | Type | -| :------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `__typename?` | `"Query"` | -| `claims` | \{ `__typename?`: `"Claim"` ; `contract`: `string` ; `creator?`: `any` \| `null` ; `id`: `string` ; `owner?`: `any` \| `null` ; `tokenID`: `any` ; `totalUnits?`: `any` \| `null` ; `uri?`: `string` \| `null` }[] | - -#### Defined in - -[sdk/src/indexer/gql/graphql.ts:1163](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/graphql.ts#L1163) - ---- - -### ContractOverrides - -Ƭ **ContractOverrides**: `Object` - -Configuration options for the contract interactions. - -**`Param`** - -The value to send with the transaction (in wei). - -**`Param`** - -The gas price to use for the transaction (in wei). - -**`Param`** - -The gas limit to use for the transaction (in wei). - -#### Type declaration - -| Name | Type | -| :---------- | :------- | -| `gasLimit?` | `bigint` | -| `gasPrice?` | `bigint` | -| `value?` | `bigint` | - -#### Defined in - -[sdk/src/types/client.ts:25](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L25) - ---- - -### Contracts - -Ƭ **Contracts**: `"HypercertMinterUUPS"` \| `"TransferManager"` \| `"ProtocolFeeRecipient"` \| `"HypercertExchange"` \| `"RoyaltyFeeRegistry"` \| `"OrderValidator"` \| `"CreatorFeeManager"` \| `"StrategyCollectionOffer"` \| `"StrategyDutchAuction"` \| `"StrategyItemIdsRange"` \| `"StrategyHypercertCollectionOffer"` \| `"StrategyHypercertDutchAuction"` \| `"StrategyHypercertFractionOffer"` - -#### Defined in - -[sdk/src/types/client.ts:40](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L40) - ---- - -### Deployment - -Ƭ **Deployment**: `Object` - -Represents a deployment of a contract on a specific network. - -#### Type declaration - -| Name | Type | Description | -| :---------- | :--------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- | -| `addresses` | `Partial`<`Record`<[`Contracts`](modules.md#contracts), \`0x$\{string}\`\>\> | The address of the deployed contract. | -| `chain` | `Partial`<`Chain`\> | - | -| `graphName` | `string` | - | -| `graphUrl` | `string` | The url to the subgraph that indexes the contract events. Override for localized testing | -| `isTestnet` | `boolean` | - | - -#### Defined in - -[sdk/src/types/client.ts:58](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L58) - ---- - -### DocumentType - -Ƭ **DocumentType**<`TDocumentNode`\>: `TDocumentNode` extends `DocumentNode` ? `TType` : `never` - -#### Type parameters - -| Name | Type | -| :-------------- | :------------------------------------ | -| `TDocumentNode` | extends `DocumentNode`<`any`, `any`\> | - -#### Defined in - -[sdk/src/indexer/gql/gql.ts:47](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/gql.ts#L47) - ---- - -### EvaluationData - -Ƭ **EvaluationData**: [`DuplicateEvaluation`](interfaces/DuplicateEvaluation.md) \| [`SimpleTextEvaluation`](interfaces/SimpleTextEvaluation.md) - -This file was automatically generated by json-schema-to-typescript. -DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file, -and run json-schema-to-typescript to regenerate this file. - -#### Defined in - -[sdk/src/types/evaluation.d.ts:8](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L8) - ---- - -### EvaluationSource - -Ƭ **EvaluationSource**: [`EASEvaluation`](interfaces/EASEvaluation.md) \| [`IPFSEvaluation`](interfaces/IPFSEvaluation.md) - -#### Defined in - -[sdk/src/types/evaluation.d.ts:9](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/evaluation.d.ts#L9) - ---- - -### FragmentType - -Ƭ **FragmentType**<`TDocumentType`\>: `TDocumentType` extends `DocumentTypeDecoration` ? [`TType`] extends [\{ ` $fragmentName?`: infer TKey }] ? `TKey` extends `string` ? \{ ` $fragmentRefs?`: \{ [key in TKey]: TType } } : `never` : `never` : `never` - -#### Type parameters - -| Name | Type | -| :-------------- | :---------------------------------------------- | -| `TDocumentType` | extends `DocumentTypeDecoration`<`any`, `any`\> | - -#### Defined in - -[sdk/src/indexer/gql/fragment-masking.ts:6](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/fragment-masking.ts#L6) - ---- - -### HypercertClientConfig - -Ƭ **HypercertClientConfig**: `Pick`<[`Deployment`](modules.md#deployment), `"addresses"` \| `"chain"`\> & [`HypercertStorageConfig`](modules.md#hypercertstorageconfig) & [`HypercertEvaluatorConfig`](modules.md#hypercertevaluatorconfig) & \{ `indexerEnvironment`: [`IndexerEnvironment`](modules.md#indexerenvironment) ; `publicClient`: `PublicClient` ; `readOnly`: `boolean` ; `readOnlyReason?`: `string` ; `unsafeForceOverrideConfig?`: `boolean` ; `walletClient`: `WalletClient` } - -Configuration options for the Hypercert client. - -#### Defined in - -[sdk/src/types/client.ts:71](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L71) - ---- - -### HypercertClientProps - -Ƭ **HypercertClientProps**: `Object` - -The props for the Hypercert client. - -#### Type declaration - -| Name | Type | Description | -| :-------- | :---------------------------------------------------------------------- | :-------------------------------------------------- | -| `config?` | `Partial`<[`HypercertClientConfig`](modules.md#hypercertclientconfig)\> | The configuration options for the Hypercert client. | - -#### Defined in - -[sdk/src/types/client.ts:153](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L153) - ---- - -### HypercertEvaluatorConfig - -Ƭ **HypercertEvaluatorConfig**: `Omit`<`PartialTypedDataConfig`, `"address"`\> & \{ `easContractAddress`: `string` } - -Configuration options for the Hypercert evaluator. - -**`Note`** - -The signer is required for submitting evaluations. - -#### Defined in - -[sdk/src/types/client.ts:109](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L109) - ---- - -### HypercertStorageConfig - -Ƭ **HypercertStorageConfig**: `Object` - -Configuration options for the Hypercert storage layer. - -**`Note`** - -The API tokens are optional, but required for storing data on NFT.storage and Web3.storage. - -**`Deprecated`** - -nft.storage and web3.storage are no longer used - -#### Type declaration - -| Name | Type | Description | -| :----------------- | :------- | :----------------------------- | -| `nftStorageToken?` | `string` | The API token for NFT.storage. | - -#### Defined in - -[sdk/src/types/client.ts:100](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L100) - ---- - -### HypercertsSdkError - -Ƭ **HypercertsSdkError**: [`ConfigurationError`](classes/ConfigurationError.md) \| [`FetchError`](classes/FetchError.md) \| [`InvalidOrMissingError`](classes/InvalidOrMissingError.md) \| [`MalformedDataError`](classes/MalformedDataError.md) \| [`MintingError`](classes/MintingError.md) \| [`StorageError`](classes/StorageError.md) \| [`UnsupportedChainError`](classes/UnsupportedChainError.md) \| [`UnknownSchemaError`](classes/UnknownSchemaError.md) - -#### Defined in - -[sdk/src/types/errors.ts:195](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/errors.ts#L195) - ---- - -### IndexerEnvironment - -Ƭ **IndexerEnvironment**: `"production"` \| `"test"` \| `"all"` - -The environment to run the indexer in. -Production will run against all mainnet chains, while test will run against testnet chains. -All will run against both - -#### Defined in - -[sdk/src/types/client.ts:92](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L92) - ---- - -### QueryParams - -Ƭ **QueryParams**: `Object` - -#### Index signature - -▪ [key: `string`]: `string` \| `number` \| `undefined` - -#### Type declaration - -| Name | Type | -| :---------------- | :------------------ | -| `first` | `number` | -| `orderDirections` | `"asc"` \| `"desc"` | -| `skip` | `number` | - -#### Defined in - -[sdk/src/types/indexer.ts:11](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/indexer.ts#L11) - ---- - -### QueryParamsWithChainId - -Ƭ **QueryParamsWithChainId**: [`QueryParams`](modules.md#queryparams) & \{ `chainId?`: `number` } - -#### Defined in - -[sdk/src/types/indexer.ts:18](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/indexer.ts#L18) - ---- - -### RecentClaimsQuery - -Ƭ **RecentClaimsQuery**: `Object` - -#### Type declaration - -| Name | Type | -| :------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `__typename?` | `"Query"` | -| `claims` | \{ `__typename?`: `"Claim"` ; `contract`: `string` ; `creator?`: `any` \| `null` ; `id`: `string` ; `owner?`: `any` \| `null` ; `tokenID`: `any` ; `totalUnits?`: `any` \| `null` ; `uri?`: `string` \| `null` }[] | - -#### Defined in - -[sdk/src/indexer/gql/graphql.ts:1172](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/graphql.ts#L1172) - ---- - -### StorageConfigOverrides - -Ƭ **StorageConfigOverrides**: `Object` - -Configuration options for the Hypercert storage layer. - -**`Param`** - -The timeout (im ms) for the HTTP request; for example for uploading metadata or fetching allowlists. - -#### Type declaration - -| Name | Type | -| :--------- | :------- | -| `timeout?` | `number` | - -#### Defined in - -[sdk/src/types/client.ts:35](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L35) - ---- - -### SupportedChainIds - -Ƭ **SupportedChainIds**: `10` \| `42220` \| `11155111` \| `84532` \| `8453` - -Enum to verify the supported chainIds - -**`Note`** - -10 = Optimism, 42220 = Celo, 11155111 = Sepolia, 84532 = Base Sepolia, 8453 = Base Mainnet - -#### Defined in - -[sdk/src/types/client.ts:14](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L14) - ---- - -### SupportedOverrides - -Ƭ **SupportedOverrides**: [`ContractOverrides`](modules.md#contractoverrides) & [`StorageConfigOverrides`](modules.md#storageconfigoverrides) - -#### Defined in - -[sdk/src/types/client.ts:16](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/client.ts#L16) - ---- - -### TransferRestrictions - -Ƭ **TransferRestrictions**: typeof [`TransferRestrictions`](modules.md#transferrestrictions-1)[keyof typeof [`TransferRestrictions`](modules.md#transferrestrictions-1)] - -#### Defined in - -[sdk/src/types/hypercerts.ts:9](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/hypercerts.ts#L9) - -[sdk/src/types/hypercerts.ts:15](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/hypercerts.ts#L15) - -## Variables - -### CreatorFeeManagerWithRoyaltiesAbi - -• **CreatorFeeManagerWithRoyaltiesAbi**: (\{ `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = "\_royaltyFeeRegistry"; `type`: `string` = "address" }[] ; `name?`: `undefined` = "balanceOf"; `outputs?`: `undefined` ; `stateMutability`: `string` = "nonpayable"; `type`: `string` = "constructor" } \| \{ `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = "collection"; `type`: `string` = "address" }[] ; `name`: `string` = "BundleEIP2981NotAllowed"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = "collection"; `type`: `string` = "address" }[] ; `name`: `string` = "viewCreatorFeeInfo"; `outputs`: \{ `internalType`: `string` = "address"; `name`: `string` = "creator"; `type`: `string` = "address" }[] ; `stateMutability`: `string` = "view"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:5790 - ---- - -### ExecutionManagerAbi - -• **ExecutionManagerAbi**: (\{ `anonymous?`: `undefined` = false; `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = "\_owner"; `type`: `string` = "address" }[] ; `name?`: `undefined` = "balanceOf"; `outputs?`: `undefined` ; `stateMutability`: `string` = "nonpayable"; `type`: `string` = "constructor" } \| \{ `anonymous?`: `undefined` = false; `inputs`: \{ `internalType`: `string` = "uint256"; `name`: `string` = "strategyId"; `type`: `string` = "uint256" }[] ; `name`: `string` = "StrategyNotAvailable"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `anonymous`: `boolean` = false; `inputs`: \{ `indexed`: `boolean` = false; `internalType`: `string` = "address"; `name`: `string` = "currency"; `type`: `string` = "address" }[] ; `name`: `string` = "CurrencyStatusUpdated"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "event" } \| \{ `anonymous?`: `undefined` = false; `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = ""; `type`: `string` = "address" }[] ; `name`: `string` = "isCurrencyAllowed"; `outputs`: \{ `internalType`: `string` = "bool"; `name`: `string` = ""; `type`: `string` = "bool" }[] ; `stateMutability`: `string` = "view"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:6914 - ---- - -### HypercertExchangeAbi - -• **HypercertExchangeAbi**: (\{ `anonymous?`: `undefined` = false; `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = "\_owner"; `type`: `string` = "address" }[] ; `name?`: `undefined` = "balanceOf"; `outputs?`: `undefined` ; `stateMutability`: `string` = "nonpayable"; `type`: `string` = "constructor" } \| \{ `anonymous?`: `undefined` = false; `inputs`: \{ `internalType`: `string` = "uint256"; `name`: `string` = "length"; `type`: `string` = "uint256" }[] ; `name`: `string` = "MerkleProofTooLarge"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `anonymous`: `boolean` = false; `inputs`: (\{ `components`: \{ `internalType`: `string` = "bytes32"; `name`: `string` = "orderHash"; `type`: `string` = "bytes32" }[] ; `indexed`: `boolean` = false; `internalType`: `string` = "struct ILooksRareProtocol.NonceInvalidationParameters"; `name`: `string` = "nonceInvalidationParameters"; `type`: `string` = "tuple" } \| \{ `components?`: `undefined` ; `indexed`: `boolean` = false; `internalType`: `string` = "address"; `name`: `string` = "askUser"; `type`: `string` = "address" })[] ; `name`: `string` = "TakerAsk"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "event" } \| \{ `anonymous?`: `undefined` = false; `inputs`: (\{ `components?`: `undefined` ; `internalType`: `string` = "bytes[]"; `name`: `string` = "makerSignatures"; `type`: `string` = "bytes[]" } \| \{ `components`: (\{ `components?`: `undefined` ; `internalType`: `string` = "bytes32"; `name`: `string` = "root"; `type`: `string` = "bytes32" } \| \{ `components`: \{ `internalType`: `string` = "bytes32"; `name`: `string` = "value"; `type`: `string` = "bytes32" }[] ; `internalType`: `string` = "struct OrderStructs.MerkleTreeNode[]"; `name`: `string` = "proof"; `type`: `string` = "tuple[]" })[] ; `internalType`: `string` = "struct OrderStructs.MerkleTree[]"; `name`: `string` = "merkleTrees"; `type`: `string` = "tuple[]" })[] ; `name`: `string` = "executeMultipleTakerBids"; `outputs`: `never`[] = []; `stateMutability`: `string` = "payable"; `type`: `string` = "function" } \| \{ `anonymous?`: `undefined` = false; `inputs`: (\{ `components`: \{ `internalType`: `string` = "address"; `name`: `string` = "recipient"; `type`: `string` = "address" }[] ; `internalType`: `string` = "struct OrderStructs.Taker"; `name`: `string` = "takerBid"; `type`: `string` = "tuple" } \| \{ `components?`: `undefined` ; `internalType`: `string` = "address"; `name`: `string` = "sender"; `type`: `string` = "address" })[] ; `name`: `string` = "restrictedExecuteTakerBid"; `outputs`: \{ `internalType`: `string` = "uint256"; `name`: `string` = "protocolFeeAmount"; `type`: `string` = "uint256" }[] ; `stateMutability`: `string` = "nonpayable"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:1234 - ---- - -### HypercertMinterAbi - -• **HypercertMinterAbi**: (\{ `anonymous?`: `undefined` = false; `inputs`: `never`[] = []; `name?`: `undefined` = "balanceOf"; `outputs?`: `undefined` ; `stateMutability`: `string` = "nonpayable"; `type`: `string` = "constructor" } \| \{ `anonymous?`: `undefined` = false; `inputs`: `never`[] = []; `name`: `string` = "AlreadyClaimed"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `anonymous`: `boolean` = false; `inputs`: \{ `indexed`: `boolean` = false; `internalType`: `string` = "address"; `name`: `string` = "previousAdmin"; `type`: `string` = "address" }[] ; `name`: `string` = "AdminChanged"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "event" } \| \{ `anonymous?`: `undefined` = false; `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = "account"; `type`: `string` = "address" }[] ; `name`: `string` = "balanceOf"; `outputs`: \{ `internalType`: `string` = "uint256"; `name`: `string` = ""; `type`: `string` = "uint256" }[] ; `stateMutability`: `string` = "view"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:43 - ---- - -### OrderValidatorV2AAbi - -• **OrderValidatorV2AAbi**: (\{ `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = "\_looksRareProtocol"; `type`: `string` = "address" }[] ; `name?`: `undefined` = "balanceOf"; `outputs?`: `undefined` ; `stateMutability`: `string` = "nonpayable"; `type`: `string` = "constructor" } \| \{ `inputs`: (\{ `components?`: `undefined` ; `internalType`: `string` = "bytes"; `name`: `string` = "signature"; `type`: `string` = "bytes" } \| \{ `components`: (\{ `components?`: `undefined` ; `internalType`: `string` = "bytes32"; `name`: `string` = "root"; `type`: `string` = "bytes32" } \| \{ `components`: \{ `internalType`: `string` = "bytes32"; `name`: `string` = "value"; `type`: `string` = "bytes32" }[] ; `internalType`: `string` = "struct OrderStructs.MerkleTreeNode[]"; `name`: `string` = "proof"; `type`: `string` = "tuple[]" })[] ; `internalType`: `string` = "struct OrderStructs.MerkleTree"; `name`: `string` = "merkleTree"; `type`: `string` = "tuple" })[] ; `name`: `string` = "checkMakerOrderValidity"; `outputs`: \{ `internalType`: `string` = "uint256[9]"; `name`: `string` = "validationCodes"; `type`: `string` = "uint256[9]" }[] ; `stateMutability`: `string` = "view"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:3079 - ---- - -### StrategyCollectionOfferAbi - -• **StrategyCollectionOfferAbi**: (\{ `inputs`: `never`[] = []; `name`: `string` = "CollectionTypeInvalid"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `inputs`: (\{ `components`: \{ `internalType`: `string` = "enum QuoteType"; `name`: `string` = "quoteType"; `type`: `string` = "uint8" }[] ; `internalType`: `string` = "struct OrderStructs.Maker"; `name`: `string` = "makerBid"; `type`: `string` = "tuple" } \| \{ `components?`: `undefined` ; `internalType`: `string` = "bytes4"; `name`: `string` = "functionSelector"; `type`: `string` = "bytes4" })[] ; `name`: `string` = "isMakerOrderValid"; `outputs`: \{ `internalType`: `string` = "bool"; `name`: `string` = "isValid"; `type`: `string` = "bool" }[] ; `stateMutability`: `string` = "pure"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:4593 - ---- - -### StrategyDutchAuctionAbi - -• **StrategyDutchAuctionAbi**: (\{ `inputs`: `never`[] = []; `name`: `string` = "BidTooLow"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `inputs`: (\{ `components`: \{ `internalType`: `string` = "enum QuoteType"; `name`: `string` = "quoteType"; `type`: `string` = "uint8" }[] ; `internalType`: `string` = "struct OrderStructs.Maker"; `name`: `string` = "makerAsk"; `type`: `string` = "tuple" } \| \{ `components?`: `undefined` ; `internalType`: `string` = "bytes4"; `name`: `string` = "functionSelector"; `type`: `string` = "bytes4" })[] ; `name`: `string` = "isMakerOrderValid"; `outputs`: \{ `internalType`: `string` = "bool"; `name`: `string` = "isValid"; `type`: `string` = "bool" }[] ; `stateMutability`: `string` = "pure"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:5118 - ---- - -### StrategyHypercertCollectionOfferAbi - -• **StrategyHypercertCollectionOfferAbi**: (\{ `inputs`: `never`[] = []; `name`: `string` = "CollectionTypeInvalid"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `inputs`: (\{ `components`: \{ `internalType`: `string` = "enum QuoteType"; `name`: `string` = "quoteType"; `type`: `string` = "uint8" }[] ; `internalType`: `string` = "struct OrderStructs.Maker"; `name`: `string` = "makerBid"; `type`: `string` = "tuple" } \| \{ `components?`: `undefined` ; `internalType`: `string` = "bytes4"; `name`: `string` = "functionSelector"; `type`: `string` = "bytes4" })[] ; `name`: `string` = "isMakerOrderValid"; `outputs`: \{ `internalType`: `string` = "bool"; `name`: `string` = "isValid"; `type`: `string` = "bool" }[] ; `stateMutability`: `string` = "pure"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:5863 - ---- - -### StrategyHypercertDutchAuctionAbi - -• **StrategyHypercertDutchAuctionAbi**: (\{ `inputs`: `never`[] = []; `name`: `string` = "BidTooLow"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `inputs`: (\{ `components`: \{ `internalType`: `string` = "enum QuoteType"; `name`: `string` = "quoteType"; `type`: `string` = "uint8" }[] ; `internalType`: `string` = "struct OrderStructs.Maker"; `name`: `string` = "makerAsk"; `type`: `string` = "tuple" } \| \{ `components?`: `undefined` ; `internalType`: `string` = "bytes4"; `name`: `string` = "functionSelector"; `type`: `string` = "bytes4" })[] ; `name`: `string` = "isMakerOrderValid"; `outputs`: \{ `internalType`: `string` = "bool"; `name`: `string` = "isValid"; `type`: `string` = "bool" }[] ; `stateMutability`: `string` = "view"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:6388 - ---- - -### StrategyHypercertFractionOfferAbi - -• **StrategyHypercertFractionOfferAbi**: (\{ `inputs`: `never`[] = []; `name`: `string` = "AmountInvalid"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `inputs`: (\{ `components`: \{ `internalType`: `string` = "enum QuoteType"; `name`: `string` = "quoteType"; `type`: `string` = "uint8" }[] ; `internalType`: `string` = "struct OrderStructs.Maker"; `name`: `string` = "makerAsk"; `type`: `string` = "tuple" } \| \{ `components?`: `undefined` ; `internalType`: `string` = "bytes4"; `name`: `string` = "functionSelector"; `type`: `string` = "bytes4" })[] ; `name`: `string` = "isMakerOrderValid"; `outputs`: \{ `internalType`: `string` = "bool"; `name`: `string` = "isValid"; `type`: `string` = "bool" }[] ; `stateMutability`: `string` = "view"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:5387 - ---- - -### StrategyItemIdsRangeAbi - -• **StrategyItemIdsRangeAbi**: (\{ `inputs`: `never`[] = []; `name`: `string` = "OrderInvalid"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `inputs`: (\{ `components`: \{ `internalType`: `string` = "enum QuoteType"; `name`: `string` = "quoteType"; `type`: `string` = "uint8" }[] ; `internalType`: `string` = "struct OrderStructs.Maker"; `name`: `string` = "makerBid"; `type`: `string` = "tuple" } \| \{ `components?`: `undefined` ; `internalType`: `string` = "bytes4"; `name`: `string` = "functionSelector"; `type`: `string` = "bytes4" })[] ; `name`: `string` = "isMakerOrderValid"; `outputs`: \{ `internalType`: `string` = "bool"; `name`: `string` = "isValid"; `type`: `string` = "bool" }[] ; `stateMutability`: `string` = "pure"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:6657 - ---- - -### StrategyManagerAbi - -• **StrategyManagerAbi**: (\{ `anonymous?`: `undefined` = false; `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = "\_owner"; `type`: `string` = "address" }[] ; `name?`: `undefined` = "balanceOf"; `outputs?`: `undefined` ; `stateMutability`: `string` = "nonpayable"; `type`: `string` = "constructor" } \| \{ `anonymous?`: `undefined` = false; `inputs`: `never`[] = []; `name`: `string` = "NoOngoingTransferInProgress"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `anonymous`: `boolean` = false; `inputs`: \{ `indexed`: `boolean` = false; `internalType`: `string` = "address"; `name`: `string` = "currency"; `type`: `string` = "address" }[] ; `name`: `string` = "CurrencyStatusUpdated"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "event" } \| \{ `anonymous?`: `undefined` = false; `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = ""; `type`: `string` = "address" }[] ; `name`: `string` = "isCurrencyAllowed"; `outputs`: \{ `internalType`: `string` = "bool"; `name`: `string` = ""; `type`: `string` = "bool" }[] ; `stateMutability`: `string` = "view"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:3516 - ---- - -### TransferManagerAbi - -• **TransferManagerAbi**: (\{ `anonymous?`: `undefined` = false; `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = "\_owner"; `type`: `string` = "address" }[] ; `name?`: `undefined` = "balanceOf"; `outputs?`: `undefined` ; `stateMutability`: `string` = "nonpayable"; `type`: `string` = "constructor" } \| \{ `anonymous?`: `undefined` = false; `inputs`: `never`[] = []; `name`: `string` = "AmountInvalid"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "error" } \| \{ `anonymous`: `boolean` = false; `inputs`: \{ `indexed`: `boolean` = false; `internalType`: `string` = "address"; `name`: `string` = "user"; `type`: `string` = "address" }[] ; `name`: `string` = "ApprovalsGranted"; `outputs?`: `undefined` ; `stateMutability?`: `undefined` = "view"; `type`: `string` = "event" } \| \{ `anonymous?`: `undefined` = false; `inputs`: \{ `internalType`: `string` = "address"; `name`: `string` = ""; `type`: `string` = "address" }[] ; `name`: `string` = "hasUserApprovedOperator"; `outputs`: \{ `internalType`: `string` = "bool"; `name`: `string` = ""; `type`: `string` = "bool" }[] ; `stateMutability`: `string` = "view"; `type`: `string` = "function" } \| \{ `anonymous?`: `undefined` = false; `inputs`: (\{ `components`: \{ `internalType`: `string` = "address"; `name`: `string` = "collection"; `type`: `string` = "address" }[] ; `internalType`: `string` = "struct ITransferManager.BatchTransferItem[]"; `name`: `string` = "items"; `type`: `string` = "tuple[]" } \| \{ `components?`: `undefined` ; `internalType`: `string` = "address"; `name`: `string` = "from"; `type`: `string` = "address" })[] ; `name`: `string` = "transferBatchItemsAcrossCollections"; `outputs`: `never`[] = []; `stateMutability`: `string` = "nonpayable"; `type`: `string` = "function" })[] - -#### Defined in - -node*modules/.pnpm/@hypercerts-org+contracts@1.1.2_bufferutil@4.0.8_ts-node@10.9.1*@types+node@18.18.7_typescrip_eax5b4m2ds4kxb2pavx44azaaq/node_modules/@hypercerts-org/contracts/dist/index.d.ts:3982 - ---- - -### TransferRestrictions - -• `Const` **TransferRestrictions**: `Object` - -Represents the possible transfer restrictions of a claim matching the hypercerts protocol. - -#### Type declaration - -| Name | Type | -| :---------------- | :--- | -| `AllowAll` | `0` | -| `DisallowAll` | `1` | -| `FromCreatorOnly` | `2` | - -#### Defined in - -[sdk/src/types/hypercerts.ts:9](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/hypercerts.ts#L9) - -[sdk/src/types/hypercerts.ts:15](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/types/hypercerts.ts#L15) - ---- - -### apis - -• `Const` **apis**: `Object` - -#### Index signature - -▪ [key: `string`]: `string` - -#### Defined in - -[sdk/src/constants.ts:13](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/constants.ts#L13) - ---- - -### deployments - -• `Const` **deployments**: \{ [key in SupportedChainIds]: Partial } - -#### Defined in - -[sdk/src/constants.ts:19](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/constants.ts#L19) - ---- - -### logger - -• `Const` **logger**: `Object` - -#### Type declaration - -| Name | Type | -| :------ | :-------------------------------------------------------------------------- | -| `debug` | (`message`: `string`, `label?`: `string`, ...`data`: `unknown`[]) => `void` | -| `error` | (`error`: `Error`, `label?`: `string`) => `void` | -| `info` | (`message`: `string`, `label?`: `string`, ...`data`: `unknown`[]) => `void` | -| `warn` | (`message`: `string`, `label?`: `string`, ...`data`: `unknown`[]) => `void` | - -#### Defined in - -[sdk/src/utils/logger.ts:24](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/logger.ts#L24) - -## Functions - -### formatHypercertData - -▸ **formatHypercertData**(`«destructured»`): `FormatResult` - -Formats input data to an object containing HypercertMetadata including appropriate labels - -#### Parameters - -| Name | Type | -| :----------------------- | :------------------------------------------------ | -| `«destructured»` | `Object` | -| › `contributors` | `string`[] | -| › `description` | `string` | -| › `excludedImpactScope` | `string`[] | -| › `excludedRights` | `string`[] | -| › `excludedWorkScope` | `string`[] | -| › `external_url?` | `string` | -| › `image` | `string` | -| › `impactScope` | `string`[] | -| › `impactTimeframeEnd` | `number` | -| › `impactTimeframeStart` | `number` | -| › `name` | `string` | -| › `properties?` | \{ `trait_type`: `string` ; `value`: `string` }[] | -| › `rights` | `string`[] | -| › `version` | `string` | -| › `workScope` | `string`[] | -| › `workTimeframeEnd` | `number` | -| › `workTimeframeStart` | `number` | - -#### Returns - -`FormatResult` - -#### Defined in - -[sdk/src/utils/formatter.ts:27](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/formatter.ts#L27) - ---- - -### getClaimStoredDataFromTxHash - -▸ **getClaimStoredDataFromTxHash**(`client`, `hash`): `Promise`<`ParserReturnType`\> - -Utility method to parse a hypercert mint transaction (createAllowlist, mintClaim) and get the ID of the minted claim - -#### Parameters - -| Name | Type | Description | -| :-------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `client` | `Object` | public client provided by viem | -| `client.account` | `undefined` | The Account of the Client. | -| `client.batch?` | `Object` | Flags for batch settings. | -| `client.batch.multicall?` | `boolean` \| \{ batchSize?: number \| undefined; wait?: number \| undefined; } | Toggle to enable `eth_call` multicall aggregation. | -| `client.cacheTime` | `number` | Time (in ms) that cached data will remain in memory. | -| `client.call` | (`parameters`: `CallParameters`<`undefined` \| `Chain`\>) => `Promise`<`CallReturnType`\> | Executes a new message call immediately without submitting a transaction to the network. - Docs: https://viem.sh/docs/actions/public/call - JSON-RPC Methods: [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const data = await client.call({ account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', }) ` | -| `client.ccipRead?` | `false` \| \{ `request?`: (`parameters`: `CcipRequestParameters`) => `Promise`<\`0x$\{string}\`\> } | [CCIP Read](https://eips.ethereum.org/EIPS/eip-3668) configuration. | -| `client.chain` | `undefined` \| `Chain` | Chain for the client. | -| `client.createBlockFilter` | () => `Promise`<\{ `id`: \`0x$\{string}\` ; `request`: `EIP1193RequestFn` ; `type`: `"block"` }\> | Creates a Filter to listen for new block hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges). - Docs: https://viem.sh/docs/actions/public/createBlockFilter - JSON-RPC Methods: [`eth_newBlockFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newBlockFilter) **`Example`** `ts import { createPublicClient, createBlockFilter, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await createBlockFilter(client) // { id: "0x345a6572337856574a76364e457a4366", type: 'block' } ` | -| `client.createContractEventFilter` | (`args`: `CreateContractEventFilterParameters`<`TAbi`, `TEventName`, `TArgs`, `TStrict`, `TFromBlock`, `TToBlock`\>) => `Promise`<`CreateContractEventFilterReturnType`<`TAbi`, `TEventName`, `TArgs`, `TStrict`, `TFromBlock`, `TToBlock`\>\> | Creates a Filter to retrieve event logs that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges) or [`getFilterLogs`](https://viem.sh/docs/actions/public/getFilterLogs). - Docs: https://viem.sh/docs/contract/createContractEventFilter **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createContractEventFilter({ abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']), }) ` | -| `client.createEventFilter` | (`args?`: `CreateEventFilterParameters`<`TAbiEvent`, `TAbiEvents`, `TStrict`, `TFromBlock`, `TToBlock`, `_EventName`, `_Args`\>) => `Promise`<\{ [K in keyof Filter<"event", TAbiEvents, \_EventName, \_Args, TStrict, TFromBlock, TToBlock\>]: Filter<"event", TAbiEvents, ... 4 more ..., TToBlock\>[K]; }\> | Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new events that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges). - Docs: https://viem.sh/docs/actions/public/createEventFilter - JSON-RPC Methods: [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createEventFilter({ address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2', }) ` | -| `client.createPendingTransactionFilter` | () => `Promise`<\{ `id`: \`0x$\{string}\` ; `request`: `EIP1193RequestFn` ; `type`: `"transaction"` }\> | Creates a Filter to listen for new pending transaction hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges). - Docs: https://viem.sh/docs/actions/public/createPendingTransactionFilter - JSON-RPC Methods: [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createPendingTransactionFilter() // { id: "0x345a6572337856574a76364e457a4366", type: 'transaction' } ` | -| `client.estimateContractGas` | (`args`: `EstimateContractGasParameters`<`abi`, `functionName`, `args`, `TChain`\>) => `Promise`<`bigint`\> | Estimates the gas required to successfully execute a contract write function call. - Docs: https://viem.sh/docs/contract/estimateContractGas **`Remarks`** Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`estimateGas` action](https://viem.sh/docs/actions/public/estimateGas) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const gas = await client.estimateContractGas({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint() public']), functionName: 'mint', account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', }) ` | -| `client.estimateFeesPerGas` | (`args?`: `EstimateFeesPerGasParameters`<`undefined` \| `Chain`, `TChainOverride`, `TType`\>) => `Promise`<`EstimateFeesPerGasReturnType`\> | Returns an estimate for the fees per gas for a transaction to be included in the next block. - Docs: https://viem.sh/docs/actions/public/estimateFeesPerGas **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const maxPriorityFeePerGas = await client.estimateFeesPerGas() // { maxFeePerGas: ..., maxPriorityFeePerGas: ... } ` | -| `client.estimateGas` | (`args`: `EstimateGasParameters`<`undefined` \| `Chain`\>) => `Promise`<`bigint`\> | Estimates the gas necessary to complete a transaction without submitting it to the network. - Docs: https://viem.sh/docs/actions/public/estimateGas - JSON-RPC Methods: [`eth_estimateGas`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_estimategas) **`Example`** `ts import { createPublicClient, http, parseEther } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const gasEstimate = await client.estimateGas({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: parseEther('1'), }) ` | -| `client.estimateMaxPriorityFeePerGas` | (`args?`: \{ `chain`: `null` \| `TChainOverride` }) => `Promise`<`bigint`\> | Returns an estimate for the max priority fee per gas (in wei) for a transaction to be included in the next block. - Docs: https://viem.sh/docs/actions/public/estimateMaxPriorityFeePerGas **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const maxPriorityFeePerGas = await client.estimateMaxPriorityFeePerGas() // 10000000n ` | -| `client.extend` | (`fn`: (`client`: `Client`<`Transport`, `undefined` \| `Chain`, `undefined`, `PublicRpcSchema`, `PublicActions`<`Transport`, `undefined` \| `Chain`\>\>) => `client`) => `Client`<`Transport`, `undefined` \| `Chain`, `undefined`, `PublicRpcSchema`, \{ [K in keyof client]: client[K]; } & `PublicActions`<`Transport`, `undefined` \| `Chain`\>\> | - | -| `client.getBalance` | (`args`: `GetBalanceParameters`) => `Promise`<`bigint`\> | Returns the balance of an address in wei. - Docs: https://viem.sh/docs/actions/public/getBalance - JSON-RPC Methods: [`eth_getBalance`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance) **`Remarks`** You can convert the balance to ether units with [`formatEther`](https://viem.sh/docs/utilities/formatEther). `ts const balance = await getBalance(client, { address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', blockTag: 'safe' }) const balanceAsEther = formatEther(balance) // "6.942" ` **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const balance = await client.getBalance({ address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', }) // 10000000000000000000000n (wei) ` | -| `client.getBlobBaseFee` | () => `Promise`<`bigint`\> | Returns the base fee per blob gas in wei. - Docs: https://viem.sh/docs/actions/public/getBlobBaseFee - JSON-RPC Methods: [`eth_blobBaseFee`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blobBaseFee) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { getBlobBaseFee } from 'viem/public' const client = createPublicClient({ chain: mainnet, transport: http(), }) const blobBaseFee = await client.getBlobBaseFee() ` | -| `client.getBlock` | (`args?`: `GetBlockParameters`<`TIncludeTransactions`, `TBlockTag`\>) => `Promise`<\{ number: TBlockTag extends "pending" ? null : bigint; nonce: TBlockTag extends "pending" ? null : \`0x$\{string}\`; hash: TBlockTag extends "pending" ? null : \`0x$\{string}\`; ... 22 more ...; transactions: TIncludeTransactions extends true ? (\{ ...; } \| ... 2 more ... \| \{ ...; })[] : \`0x$\{string}\`[]; }\> | Returns information about a block at a block number, hash, or tag. - Docs: https://viem.sh/docs/actions/public/getBlock - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/fetching-blocks - JSON-RPC Methods: - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) for `blockNumber` & `blockTag`. - Calls [`eth_getBlockByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash) for `blockHash`. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const block = await client.getBlock() ` | -| `client.getBlockNumber` | (`args?`: `GetBlockNumberParameters`) => `Promise`<`bigint`\> | Returns the number of the most recent block seen. - Docs: https://viem.sh/docs/actions/public/getBlockNumber - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/fetching-blocks - JSON-RPC Methods: [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const blockNumber = await client.getBlockNumber() // 69420n ` | -| `client.getBlockTransactionCount` | (`args?`: `GetBlockTransactionCountParameters`) => `Promise`<`number`\> | Returns the number of Transactions at a block number, hash, or tag. - Docs: https://viem.sh/docs/actions/public/getBlockTransactionCount - JSON-RPC Methods: - Calls [`eth_getBlockTransactionCountByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbynumber) for `blockNumber` & `blockTag`. - Calls [`eth_getBlockTransactionCountByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbyhash) for `blockHash`. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const count = await client.getBlockTransactionCount() ` | -| `client.getBytecode` | (`args`: `GetBytecodeParameters`) => `Promise`<`GetBytecodeReturnType`\> | Retrieves the bytecode at an address. - Docs: https://viem.sh/docs/contract/getBytecode - JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const code = await client.getBytecode({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', }) ` | -| `client.getChainId` | () => `Promise`<`number`\> | Returns the chain ID associated with the current network. - Docs: https://viem.sh/docs/actions/public/getChainId - JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const chainId = await client.getChainId() // 1 ` | -| `client.getContractEvents` | (`args`: `GetContractEventsParameters`<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`\>) => `Promise`<`GetContractEventsReturnType`<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`\>\> | Returns a list of event logs emitted by a contract. - Docs: https://viem.sh/docs/actions/public/getContractEvents - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { wagmiAbi } from './abi' const client = createPublicClient({ chain: mainnet, transport: http(), }) const logs = await client.getContractEvents(client, { address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: wagmiAbi, eventName: 'Transfer' }) ` | -| `client.getEnsAddress` | (`args`: \{ blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; coinType?: number \| undefined; gatewayUrls?: string[] \| undefined; name: string; strict?: boolean \| undefined; universalResolverAddress?: \`0x$\{string}\` \| undefined; }) => `Promise`<`GetEnsAddressReturnType`\> | Gets address for ENS name. - Docs: https://viem.sh/docs/ens/actions/getEnsAddress - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract. Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { normalize } from 'viem/ens' const client = createPublicClient({ chain: mainnet, transport: http(), }) const ensAddress = await client.getEnsAddress({ name: normalize('wevm.eth'), }) // '0xd2135CfB216b74109775236E36d4b433F1DF507B' ` | -| `client.getEnsAvatar` | (`args`: \{ name: string; blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; gatewayUrls?: string[] \| undefined; strict?: boolean \| undefined; universalResolverAddress?: \`0x$\{string}\` \| undefined; assetGatewayUrls?: AssetGatewayUrls \| undefined; }) => `Promise`<`GetEnsAvatarReturnType`\> | Gets the avatar of an ENS name. - Docs: https://viem.sh/docs/ens/actions/getEnsAvatar - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls [`getEnsText`](https://viem.sh/docs/ens/actions/getEnsText) with `key` set to `'avatar'`. Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { normalize } from 'viem/ens' const client = createPublicClient({ chain: mainnet, transport: http(), }) const ensAvatar = await client.getEnsAvatar({ name: normalize('wevm.eth'), }) // 'https://ipfs.io/ipfs/Qma8mnp6xV3J2cRNf3mTth5C8nV11CAnceVinc3y8jSbio' ` | -| `client.getEnsName` | (`args`: \{ blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; address: \`0x$\{string}\`; gatewayUrls?: string[] \| undefined; strict?: boolean \| undefined; universalResolverAddress?: \`0x$\{string}\` \| undefined; }) => `Promise`<`GetEnsNameReturnType`\> | Gets primary name for specified address. - Docs: https://viem.sh/docs/ens/actions/getEnsName - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls `reverse(bytes)` on ENS Universal Resolver Contract to "reverse resolve" the address to the primary ENS name. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const ensName = await client.getEnsName({ address: '0xd2135CfB216b74109775236E36d4b433F1DF507B', }) // 'wevm.eth' ` | -| `client.getEnsResolver` | (`args`: \{ blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; name: string; universalResolverAddress?: \`0x$\{string}\` \| undefined; }) => `Promise`<\`0x$\{string}\`\> | Gets resolver for ENS name. - Docs: https://viem.sh/docs/ens/actions/getEnsResolver - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls `findResolver(bytes)` on ENS Universal Resolver Contract to retrieve the resolver of an ENS name. Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { normalize } from 'viem/ens' const client = createPublicClient({ chain: mainnet, transport: http(), }) const resolverAddress = await client.getEnsResolver({ name: normalize('wevm.eth'), }) // '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41' ` | -| `client.getEnsText` | (`args`: \{ blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; name: string; gatewayUrls?: string[] \| undefined; key: string; strict?: boolean \| undefined; universalResolverAddress?: \`0x$\{string}\` \| undefined; }) => `Promise`<`GetEnsTextReturnType`\> | Gets a text record for specified ENS name. - Docs: https://viem.sh/docs/ens/actions/getEnsResolver - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract. Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { normalize } from 'viem/ens' const client = createPublicClient({ chain: mainnet, transport: http(), }) const twitterRecord = await client.getEnsText({ name: normalize('wevm.eth'), key: 'com.twitter', }) // 'wagmi_sh' ` | -| `client.getFeeHistory` | (`args`: `GetFeeHistoryParameters`) => `Promise`<`GetFeeHistoryReturnType`\> | Returns a collection of historical gas information. - Docs: https://viem.sh/docs/actions/public/getFeeHistory - JSON-RPC Methods: [`eth_feeHistory`](https://docs.alchemy.com/reference/eth-feehistory) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const feeHistory = await client.getFeeHistory({ blockCount: 4, rewardPercentiles: [25, 75], }) ` | -| `client.getFilterChanges` | (`args`: `GetFilterChangesParameters`<`TFilterType`, `TAbi`, `TEventName`, `TStrict`, `TFromBlock`, `TToBlock`\>) => `Promise`<`GetFilterChangesReturnType`<`TFilterType`, `TAbi`, `TEventName`, `TStrict`, `TFromBlock`, `TToBlock`\>\> | Returns a list of logs or hashes based on a [Filter](/docs/glossary/terms#filter) since the last time it was called. - Docs: https://viem.sh/docs/actions/public/getFilterChanges - JSON-RPC Methods: [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges) **`Remarks`** A Filter can be created from the following actions: - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter) - [`createContractEventFilter`](https://viem.sh/docs/contract/createContractEventFilter) - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter) - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter) Depending on the type of filter, the return value will be different: - If the filter was created with `createContractEventFilter` or `createEventFilter`, it returns a list of logs. - If the filter was created with `createPendingTransactionFilter`, it returns a list of transaction hashes. - If the filter was created with `createBlockFilter`, it returns a list of block hashes. **`Example`** `ts // Blocks import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createBlockFilter() const hashes = await client.getFilterChanges({ filter }) ` **`Example`** `ts // Contract Events import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createContractEventFilter({ address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']), eventName: 'Transfer', }) const logs = await client.getFilterChanges({ filter }) ` **`Example`** `ts // Raw Events import { createPublicClient, http, parseAbiItem } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createEventFilter({ address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'), }) const logs = await client.getFilterChanges({ filter }) ` **`Example`** `ts // Transactions import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createPendingTransactionFilter() const hashes = await client.getFilterChanges({ filter }) ` | -| `client.getFilterLogs` | (`args`: `GetFilterLogsParameters`<`TAbi`, `TEventName`, `TStrict`, `TFromBlock`, `TToBlock`\>) => `Promise`<`GetFilterLogsReturnType`<`TAbi`, `TEventName`, `TStrict`, `TFromBlock`, `TToBlock`\>\> | Returns a list of event logs since the filter was created. - Docs: https://viem.sh/docs/actions/public/getFilterLogs - JSON-RPC Methods: [`eth_getFilterLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterlogs) **`Remarks`** `getFilterLogs` is only compatible with **event filters**. **`Example`** `ts import { createPublicClient, http, parseAbiItem } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createEventFilter({ address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'), }) const logs = await client.getFilterLogs({ filter }) ` | -| `client.getGasPrice` | () => `Promise`<`bigint`\> | Returns the current price of gas (in wei). - Docs: https://viem.sh/docs/actions/public/getGasPrice - JSON-RPC Methods: [`eth_gasPrice`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gasprice) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const gasPrice = await client.getGasPrice() ` | -| `client.getLogs` | (`args?`: `GetLogsParameters`<`TAbiEvent`, `TAbiEvents`, `TStrict`, `TFromBlock`, `TToBlock`\>) => `Promise`<`GetLogsReturnType`<`TAbiEvent`, `TAbiEvents`, `TStrict`, `TFromBlock`, `TToBlock`\>\> | Returns a list of event logs matching the provided parameters. - Docs: https://viem.sh/docs/actions/public/getLogs - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/filters-and-logs/event-logs - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) **`Example`** `ts import { createPublicClient, http, parseAbiItem } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const logs = await client.getLogs() ` | -| `client.getProof` | (`args`: `GetProofParameters`) => `Promise`<`GetProofReturnType`\> | Returns the account and storage values of the specified account including the Merkle-proof. - Docs: https://viem.sh/docs/actions/public/getProof - JSON-RPC Methods: - Calls [`eth_getProof`](https://eips.ethereum.org/EIPS/eip-1186) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const block = await client.getProof({ address: '0x...', storageKeys: ['0x...'], }) ` | -| `client.getStorageAt` | (`args`: `GetStorageAtParameters`) => `Promise`<`GetStorageAtReturnType`\> | Returns the value from a storage slot at a given address. - Docs: https://viem.sh/docs/contract/getStorageAt - JSON-RPC Methods: [`eth_getStorageAt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getstorageat) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { getStorageAt } from 'viem/contract' const client = createPublicClient({ chain: mainnet, transport: http(), }) const code = await client.getStorageAt({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', slot: toHex(0), }) ` | -| `client.getTransaction` | (`args`: `GetTransactionParameters`<`TBlockTag`\>) => `Promise`<\{ type: "legacy"; to: \`0x$\{string}\` \| null; from: \`0x$\{string}\`; gas: bigint; nonce: number; value: bigint; gasPrice: bigint; maxFeePerBlobGas?: undefined; maxFeePerGas?: undefined; maxPriorityFeePerGas?: undefined; ... 12 more ...; transactionIndex: (TBlockTag extends "pending" ? true : false) extends true ? null :... \| \{ type: "eip2930"; to: \`0x$\{string}\` \| null; from: \`0x$\{string}\`; gas: bigint; nonce: number; value: bigint; gasPrice: bigint; maxFeePerBlobGas?: undefined; maxFeePerGas?: undefined; maxPriorityFeePerGas?: undefined; ... 12 more ...; transactionIndex: (TBlockTag extends "pending" ? true : false) extends true ? null ... \| \{ type: "eip1559"; to: \`0x$\{string}\` \| null; from: \`0x$\{string}\`; gas: bigint; nonce: number; value: bigint; gasPrice?: undefined; maxFeePerBlobGas?: undefined; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; ... 12 more ...; transactionIndex: (TBlockTag extends "pending" ? true : false) extends true ? null : nu... \| \{ type: "eip4844"; to: \`0x$\{string}\` \| null; from: \`0x$\{string}\`; gas: bigint; nonce: number; value: bigint; gasPrice?: undefined; maxFeePerBlobGas: bigint; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; ... 12 more ...; transactionIndex: (TBlockTag extends "pending" ? true : false) extends true ? null : number...\> | Returns information about a [Transaction](https://viem.sh/docs/glossary/terms#transaction) given a hash or block identifier. - Docs: https://viem.sh/docs/actions/public/getTransaction - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/fetching-transactions - JSON-RPC Methods: [`eth_getTransactionByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionByHash) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const transaction = await client.getTransaction({ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', }) ` | -| `client.getTransactionConfirmations` | (`args`: `GetTransactionConfirmationsParameters`<`undefined` \| `Chain`\>) => `Promise`<`bigint`\> | Returns the number of blocks passed (confirmations) since the transaction was processed on a block. - Docs: https://viem.sh/docs/actions/public/getTransactionConfirmations - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/fetching-transactions - JSON-RPC Methods: [`eth_getTransactionConfirmations`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionConfirmations) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const confirmations = await client.getTransactionConfirmations({ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', }) ` | -| `client.getTransactionCount` | (`args`: `GetTransactionCountParameters`) => `Promise`<`number`\> | Returns the number of [Transactions](https://viem.sh/docs/glossary/terms#transaction) an Account has broadcast / sent. - Docs: https://viem.sh/docs/actions/public/getTransactionCount - JSON-RPC Methods: [`eth_getTransactionCount`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactioncount) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const transactionCount = await client.getTransactionCount({ address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', }) ` | -| `client.getTransactionReceipt` | (`args`: `GetTransactionReceiptParameters`) => `Promise`<`TransactionReceipt`\> | Returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt) given a [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. - Docs: https://viem.sh/docs/actions/public/getTransactionReceipt - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/fetching-transactions - JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const transactionReceipt = await client.getTransactionReceipt({ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', }) ` | -| `client.key` | `string` | A key for the client. | -| `client.multicall` | (`args`: `MulticallParameters`<`contracts`, `allowFailure`\>) => `Promise`<`MulticallReturnType`<`contracts`, `allowFailure`\>\> | Similar to [`readContract`](https://viem.sh/docs/contract/readContract), but batches up multiple functions on a contract in a single RPC call via the [`multicall3` contract](https://github.com/mds1/multicall). - Docs: https://viem.sh/docs/contract/multicall **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const abi = parseAbi([ 'function balanceOf(address) view returns (uint256)', 'function totalSupply() view returns (uint256)', ]) const result = await client.multicall({ contracts: [ { address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi, functionName: 'balanceOf', args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'], }, { address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi, functionName: 'totalSupply', }, ], }) // [{ result: 424122n, status: 'success' }, { result: 1000000n, status: 'success' }] ` | -| `client.name` | `string` | A name for the client. | -| `client.pollingInterval` | `number` | Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. | -| `client.prepareTransactionRequest` | (`args`: `PrepareTransactionRequestParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`, `TAccountOverride`, `TRequest`\>) => `Promise`<\{ [K in keyof (UnionRequiredBy, "transactionRequest", TransactionRequest\>, "from"\> & (DeriveChain<...\> extends Chain ? \{ ...; } : \{ ...; }) & (DeriveAccount<...\> extends Account ? \{ ...; } : \{ ...; }), IsNever<...\> extends true ? un...\> | Prepares a transaction request for signing. - Docs: https://viem.sh/docs/actions/wallet/prepareTransactionRequest **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x0000000000000000000000000000000000000000', value: 1n, }) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ to: '0x0000000000000000000000000000000000000000', value: 1n, }) ` | -| `client.readContract` | (`args`: `ReadContractParameters`<`abi`, `functionName`, `args`\>) => `Promise`<`ReadContractReturnType`<`abi`, `functionName`, `args`\>\> | Calls a read-only function on a contract, and returns the response. - Docs: https://viem.sh/docs/contract/readContract - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/reading-contracts **`Remarks`** A "read-only" function (constant function) on a Solidity contract is denoted by a `view` or `pure` keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas. Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' import { readContract } from 'viem/contract' const client = createPublicClient({ chain: mainnet, transport: http(), }) const result = await client.readContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function balanceOf(address) view returns (uint256)']), functionName: 'balanceOf', args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'], }) // 424122n ` | -| `client.request` | `EIP1193RequestFn`<`PublicRpcSchema`\> | Request function wrapped with friendly error handling | -| `client.sendRawTransaction` | (`args`: `SendRawTransactionParameters`) => `Promise`<\`0x$\{string}\`\> | Sends a **signed** transaction to the network - Docs: https://viem.sh/docs/actions/wallet/sendRawTransaction - JSON-RPC Method: [`eth_sendRawTransaction`](https://ethereum.github.io/execution-apis/api-documentation/) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' import { sendRawTransaction } from 'viem/wallet' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const hash = await client.sendRawTransaction({ serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33' }) ` | -| `client.simulateContract` | (`args`: `SimulateContractParameters`<`abi`, `functionName`, `args`, `undefined` \| `Chain`, `chainOverride`, `accountOverride`\>) => `Promise`<`SimulateContractReturnType`<`abi`, `functionName`, `args`, `undefined` \| `Chain`, `undefined` \| `Account`, `chainOverride`, `accountOverride`\>\> | Simulates/validates a contract interaction. This is useful for retrieving **return data** and **revert reasons** of contract write functions. - Docs: https://viem.sh/docs/contract/simulateContract - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/writing-to-contracts **`Remarks`** This function does not require gas to execute and _**does not**_ change the state of the blockchain. It is almost identical to [`readContract`](https://viem.sh/docs/contract/readContract), but also supports contract write functions. Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const result = await client.simulateContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint(uint32) view returns (uint32)']), functionName: 'mint', args: ['69420'], account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', }) ` | -| `client.transport` | `TransportConfig`<`string`, `EIP1193RequestFn`\> & `Record`<`string`, `any`\> | The RPC transport | -| `client.type` | `string` | The type of client. | -| `client.uid` | `string` | A unique ID for the client. | -| `client.uninstallFilter` | (`args`: `UninstallFilterParameters`) => `Promise`<`boolean`\> | Destroys a Filter that was created from one of the following Actions: - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter) - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter) - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter) - Docs: https://viem.sh/docs/actions/public/uninstallFilter - JSON-RPC Methods: [`eth_uninstallFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_uninstallFilter) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { createPendingTransactionFilter, uninstallFilter } from 'viem/public' const filter = await client.createPendingTransactionFilter() const uninstalled = await client.uninstallFilter({ filter }) // true ` | -| `client.verifyMessage` | (`args`: `VerifyMessageParameters`) => `Promise`<`boolean`\> | - | -| `client.verifyTypedData` | (`args`: `VerifyTypedDataParameters`) => `Promise`<`boolean`\> | - | -| `client.waitForTransactionReceipt` | (`args`: `WaitForTransactionReceiptParameters`<`undefined` \| `Chain`\>) => `Promise`<`TransactionReceipt`\> | Waits for the [Transaction](https://viem.sh/docs/glossary/terms#transaction) to be included on a [Block](https://viem.sh/docs/glossary/terms#block) (one confirmation), and then returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt). If the Transaction reverts, then the action will throw an error. - Docs: https://viem.sh/docs/actions/public/waitForTransactionReceipt - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/sending-transactions - JSON-RPC Methods: - Polls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt) on each block until it has been processed. - If a Transaction has been replaced: - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) and extracts the transactions - Checks if one of the Transactions is a replacement - If so, calls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt). **`Remarks`** The `waitForTransactionReceipt` action additionally supports Replacement detection (e.g. sped up Transactions). Transactions can be replaced when a user modifies their transaction in their wallet (to speed up or cancel). Transactions are replaced when they are sent from the same nonce. There are 3 types of Transaction Replacement reasons: - `repriced`: The gas price has been modified (e.g. different `maxFeePerGas`) - `cancelled`: The Transaction has been cancelled (e.g. `value === 0n`) - `replaced`: The Transaction has been replaced (e.g. different `value` or `data`) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const transactionReceipt = await client.waitForTransactionReceipt({ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', }) ` | -| `client.watchBlockNumber` | (`args`: `WatchBlockNumberParameters`) => `WatchBlockNumberReturnType` | Watches and returns incoming block numbers. - Docs: https://viem.sh/docs/actions/public/watchBlockNumber - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/watching-blocks - JSON-RPC Methods: - When `poll: true`, calls [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) on a polling interval. - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newHeads"` event. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = await client.watchBlockNumber({ onBlockNumber: (blockNumber) => console.log(blockNumber), }) ` | -| `client.watchBlocks` | (`args`: `WatchBlocksParameters`<`Transport`, `undefined` \| `Chain`, `TIncludeTransactions`, `TBlockTag`\>) => `WatchBlocksReturnType` | Watches and returns information for incoming blocks. - Docs: https://viem.sh/docs/actions/public/watchBlocks - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/watching-blocks - JSON-RPC Methods: - When `poll: true`, calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getBlockByNumber) on a polling interval. - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newHeads"` event. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = await client.watchBlocks({ onBlock: (block) => console.log(block), }) ` | -| `client.watchContractEvent` | (`args`: `WatchContractEventParameters`<`TAbi`, `TEventName`, `TStrict`, `Transport`\>) => `WatchContractEventReturnType` | Watches and returns emitted contract event logs. - Docs: https://viem.sh/docs/contract/watchContractEvent **`Remarks`** This Action will batch up all the event logs found within the [`pollingInterval`](https://viem.sh/docs/contract/watchContractEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/contract/watchContractEvent#onLogs). `watchContractEvent` will attempt to create an [Event Filter](https://viem.sh/docs/contract/createContractEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchContractEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead. **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = client.watchContractEvent({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['event Transfer(address indexed from, address indexed to, uint256 value)']), eventName: 'Transfer', args: { from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b' }, onLogs: (logs) => console.log(logs), }) ` | -| `client.watchEvent` | (`args`: `WatchEventParameters`<`TAbiEvent`, `TAbiEvents`, `TStrict`, `Transport`\>) => `WatchEventReturnType` | Watches and returns emitted [Event Logs](https://viem.sh/docs/glossary/terms#event-log). - Docs: https://viem.sh/docs/actions/public/watchEvent - JSON-RPC Methods: - **RPC Provider supports `eth_newFilter`:** - Calls [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) to create a filter (called on initialize). - On a polling interval, it will call [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges). - **RPC Provider does not support `eth_newFilter`:** - Calls [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) for each block between the polling interval. **`Remarks`** This Action will batch up all the Event Logs found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/actions/public/watchEvent#onLogs). `watchEvent` will attempt to create an [Event Filter](https://viem.sh/docs/actions/public/createEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = client.watchEvent({ onLogs: (logs) => console.log(logs), }) ` | -| `client.watchPendingTransactions` | (`args`: `WatchPendingTransactionsParameters`<`Transport`\>) => `WatchPendingTransactionsReturnType` | Watches and returns pending transaction hashes. - Docs: https://viem.sh/docs/actions/public/watchPendingTransactions - JSON-RPC Methods: - When `poll: true` - Calls [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter) to initialize the filter. - Calls [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getFilterChanges) on a polling interval. - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newPendingTransactions"` event. **`Remarks`** This Action will batch up all the pending transactions found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchPendingTransactions#pollinginterval-optional), and invoke them via [`onTransactions`](https://viem.sh/docs/actions/public/watchPendingTransactions#ontransactions). **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = await client.watchPendingTransactions({ onTransactions: (hashes) => console.log(hashes), }) ` | -| `hash` | \`0x$\{string}\` | transaction hash returned from the transaction | - -#### Returns - -`Promise`<`ParserReturnType`\> - -returns a promise with the parsed data or errors - -**`Notice`** - -This method is a wrapper around basic viem utilties to parse ClaimStored(uint256 indexed claimID, string uri, uint256 totalUnits). - -#### Defined in - -[sdk/src/utils/txParser.ts:26](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/txParser.ts#L26) - ---- - -### getFromIPFS - -▸ **getFromIPFS**(`cidOrIpfsUri`, `timeout?`): `Promise`<`unknown`\> - -Fetches data from IPFS using either the DWeb IPFS, NFT Storage, or the Web3Up gateway. - -This function attempts to fetch data from all gateways at the same time and returns on the first on to resolve. -If the data cannot be fetched from any gateway, it throws a `StorageError`. - -#### Parameters - -| Name | Type | Default value | Description | -| :------------- | :------- | :------------ | :---------------------------------------- | -| `cidOrIpfsUri` | `string` | `undefined` | The CID or IPFS URI of the data to fetch. | -| `timeout` | `number` | `10000` | - | - -#### Returns - -`Promise`<`unknown`\> - -The data fetched from IPFS. - -**`Throws`** - -Will throw a `StoragjeError` if the data cannot be fetched from either gateway. - -**`Async`** - -#### Defined in - -[sdk/src/utils/fetchers.ts:17](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/fetchers.ts#L17) - ---- - -### getProofsFromAllowlist - -▸ **getProofsFromAllowlist**(`cidOrIpfsUri`, `account`): `Promise`<`undefined` \| \{ `proof`: `string`[] ; `root`: `string` = tree.root }\> - -This function retrieves proofs from an allowlist. - -It fetches a Merkle tree from IPFS using a given CID or IPFS URI, then iterates over the tree to find an account. -When the account is found, it generates a proof for that account and logs the account, index, and proof as debug. -It returns the proof and the root of the Merkle tree. - -#### Parameters - -| Name | Type | Description | -| :------------- | :--------------- | :------------------------------------------------- | -| `cidOrIpfsUri` | `string` | The CID or IPFS URI to fetch the Merkle tree from. | -| `account` | \`0x$\{string}\` | The account to find in the Merkle tree. | - -#### Returns - -`Promise`<`undefined` \| \{ `proof`: `string`[] ; `root`: `string` = tree.root }\> - -An object containing the proof for the account and the root of the Merkle tree. - -**`Throws`** - -Will throw an error if the Merkle tree cannot be fetched. - -**`Async`** - -#### Defined in - -[sdk/src/utils/allowlist.ts:43](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/allowlist.ts#L43) - ---- - -### graphql - -▸ **graphql**(`source`): `unknown` - -The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - -#### Parameters - -| Name | Type | -| :------- | :------- | -| `source` | `string` | - -#### Returns - -`unknown` - -**`Example`** - -```ts -const query = graphql( - ` - query GetUser($id: ID!) { - user(id: $id) { - name - } - } - `, -); -``` - -The query argument is unknown! -Please regenerate the types. - -#### Defined in - -[sdk/src/indexer/gql/gql.ts:32](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/gql.ts#L32) - -▸ **graphql**(`source`): typeof `documents`[``"query ClaimsByOwner($owner: Bytes = \"\", $orderDirection: OrderDirection, $first: Int, $skip: Int) {\n claims(\n where: {owner: $owner}\n skip: $skip\n first: $first\n orderDirection: $orderDirection\n ) {\n contract\n tokenID\n creator\n id\n owner\n totalUnits\n uri\n }\n}\n\nquery RecentClaims($orderDirection: OrderDirection, $first: Int, $skip: Int) {\n claims(orderDirection: $orderDirection, orderBy: creation, first: $first) {\n contract\n tokenID\n creator\n id\n owner\n totalUnits\n uri\n }\n}\n\nquery ClaimById($id: ID!) {\n claim(id: $id) {\n contract\n tokenID\n creator\n id\n owner\n totalUnits\n uri\n }\n}"``] - -The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - -#### Parameters - -| Name | Type | -| :------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `source` | `"query ClaimsByOwner($owner: Bytes = \"\", $orderDirection: OrderDirection, $first: Int, $skip: Int) {\n claims(\n where: {owner: $owner}\n skip: $skip\n first: $first\n orderDirection: $orderDirection\n ) {\n contract\n tokenID\n creator\n id\n owner\n totalUnits\n uri\n }\n}\n\nquery RecentClaims($orderDirection: OrderDirection, $first: Int, $skip: Int) {\n claims(orderDirection: $orderDirection, orderBy: creation, first: $first) {\n contract\n tokenID\n creator\n id\n owner\n totalUnits\n uri\n }\n}\n\nquery ClaimById($id: ID!) {\n claim(id: $id) {\n contract\n tokenID\n creator\n id\n owner\n totalUnits\n uri\n }\n}"` | - -#### Returns - -typeof `documents`[``"query ClaimsByOwner($owner: Bytes = \"\", $orderDirection: OrderDirection, $first: Int, $skip: Int) {\n claims(\n where: {owner: $owner}\n skip: $skip\n first: $first\n orderDirection: $orderDirection\n ) {\n contract\n tokenID\n creator\n id\n owner\n totalUnits\n uri\n }\n}\n\nquery RecentClaims($orderDirection: OrderDirection, $first: Int, $skip: Int) {\n claims(orderDirection: $orderDirection, orderBy: creation, first: $first) {\n contract\n tokenID\n creator\n id\n owner\n totalUnits\n uri\n }\n}\n\nquery ClaimById($id: ID!) {\n claim(id: $id) {\n contract\n tokenID\n creator\n id\n owner\n totalUnits\n uri\n }\n}"``] - -#### Defined in - -[sdk/src/indexer/gql/gql.ts:37](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/gql.ts#L37) - -▸ **graphql**(`source`): typeof `documents`[``"query ClaimTokensByOwner($owner: Bytes = \"\", $orderDirection: OrderDirection, $first: Int, $skip: Int) {\n claimTokens(\n where: {owner: $owner}\n skip: $skip\n first: $first\n orderDirection: $orderDirection\n ) {\n id\n owner\n tokenID\n units\n claim {\n id\n creation\n uri\n totalUnits\n }\n }\n}\n\nquery ClaimTokensByClaim($claimId: String!, $orderDirection: OrderDirection, $first: Int, $skip: Int) {\n claimTokens(\n where: {claim: $claimId}\n skip: $skip\n first: $first\n orderDirection: $orderDirection\n ) {\n id\n owner\n tokenID\n units\n }\n}\n\nquery ClaimTokenById($claimTokenId: ID!) {\n claimToken(id: $claimTokenId) {\n id\n owner\n tokenID\n units\n claim {\n id\n creation\n uri\n totalUnits\n }\n }\n}"``] - -The graphql function is used to parse GraphQL queries into a document that can be used by GraphQL clients. - -#### Parameters - -| Name | Type | -| :------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `source` | `"query ClaimTokensByOwner($owner: Bytes = \"\", $orderDirection: OrderDirection, $first: Int, $skip: Int) {\n claimTokens(\n where: {owner: $owner}\n skip: $skip\n first: $first\n orderDirection: $orderDirection\n ) {\n id\n owner\n tokenID\n units\n claim {\n id\n creation\n uri\n totalUnits\n }\n }\n}\n\nquery ClaimTokensByClaim($claimId: String!, $orderDirection: OrderDirection, $first: Int, $skip: Int) {\n claimTokens(\n where: {claim: $claimId}\n skip: $skip\n first: $first\n orderDirection: $orderDirection\n ) {\n id\n owner\n tokenID\n units\n }\n}\n\nquery ClaimTokenById($claimTokenId: ID!) {\n claimToken(id: $claimTokenId) {\n id\n owner\n tokenID\n units\n claim {\n id\n creation\n uri\n totalUnits\n }\n }\n}"` | - -#### Returns - -typeof `documents`[``"query ClaimTokensByOwner($owner: Bytes = \"\", $orderDirection: OrderDirection, $first: Int, $skip: Int) {\n claimTokens(\n where: {owner: $owner}\n skip: $skip\n first: $first\n orderDirection: $orderDirection\n ) {\n id\n owner\n tokenID\n units\n claim {\n id\n creation\n uri\n totalUnits\n }\n }\n}\n\nquery ClaimTokensByClaim($claimId: String!, $orderDirection: OrderDirection, $first: Int, $skip: Int) {\n claimTokens(\n where: {claim: $claimId}\n skip: $skip\n first: $first\n orderDirection: $orderDirection\n ) {\n id\n owner\n tokenID\n units\n }\n}\n\nquery ClaimTokenById($claimTokenId: ID!) {\n claimToken(id: $claimTokenId) {\n id\n owner\n tokenID\n units\n claim {\n id\n creation\n uri\n totalUnits\n }\n }\n}"``] - -#### Defined in - -[sdk/src/indexer/gql/gql.ts:41](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/gql.ts#L41) - ---- - -### handleContractError - -▸ **handleContractError**(`data`): [`ContractError`](classes/ContractError.md) - -#### Parameters - -| Name | Type | -| :----- | :--------------- | -| `data` | \`0x$\{string}\` | - -#### Returns - -[`ContractError`](classes/ContractError.md) - -#### Defined in - -[sdk/src/utils/errors.ts:39](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/errors.ts#L39) - ---- - -### handleSdkError - -▸ **handleSdkError**(`err`): `void` - -Method to catch errors and log them - -#### Parameters - -| Name | Type | Description | -| :---- | :---------------------------------------------------- | :-------------------------------------------- | -| `err` | [`HypercertsSdkError`](modules.md#hypercertssdkerror) | Error to handle defined in HypercertsSdkError | - -#### Returns - -`void` - -#### Defined in - -[sdk/src/utils/errors.ts:22](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/errors.ts#L22) - ---- - -### isFragmentReady - -▸ **isFragmentReady**<`TQuery`, `TFrag`\>(`queryNode`, `fragmentNode`, `data`): data is [TFrag] extends [Object] ? TKey extends string ? Object : never : never - -#### Type parameters - -| Name | -| :------- | -| `TQuery` | -| `TFrag` | - -#### Parameters - -| Name | Type | -| :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `queryNode` | `DocumentTypeDecoration`<`TQuery`, `any`\> | -| `fragmentNode` | `TypedDocumentNode`<`TFrag`, \{ `[key: string]`: `any`; }\> | -| `data` | `undefined` \| `null` \| [`Incremental`<`TFrag`\>] extends [\{ ` $fragmentName?`: `TKey` }] ? `TKey` extends `string` ? \{ ` $fragmentRefs?`: \{ [key in string]: Object } } : `never` : `never` | - -#### Returns - -data is [TFrag] extends [Object] ? TKey extends string ? Object : never : never - -#### Defined in - -[sdk/src/indexer/gql/fragment-masking.ts:51](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/fragment-masking.ts#L51) - ---- - -### makeFragmentData - -▸ **makeFragmentData**<`F`, `FT`\>(`data`, `_fragment`): [`FragmentType`](modules.md#fragmenttype)<`F`\> - -#### Type parameters - -| Name | Type | -| :--- | :---------------------------------------------- | -| `F` | extends `DocumentTypeDecoration`<`any`, `any`\> | -| `FT` | extends `any` | - -#### Parameters - -| Name | Type | -| :---------- | :--- | -| `data` | `FT` | -| `_fragment` | `F` | - -#### Returns - -[`FragmentType`](modules.md#fragmenttype)<`F`\> - -#### Defined in - -[sdk/src/indexer/gql/fragment-masking.ts:45](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/fragment-masking.ts#L45) - ---- - -### parseAllowListEntriesToMerkleTree - -▸ **parseAllowListEntriesToMerkleTree**(`allowList`): `StandardMerkleTree`<`string`[]\> - -#### Parameters - -| Name | Type | -| :---------- | :---------------------------------------------- | -| `allowList` | [`AllowlistEntry`](modules.md#allowlistentry)[] | - -#### Returns - -`StandardMerkleTree`<`string`[]\> - -#### Defined in - -[sdk/src/utils/allowlist.ts:6](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/allowlist.ts#L6) - ---- - -### parseClaimOrFractionId - -▸ **parseClaimOrFractionId**(`claimId`): `Object` - -#### Parameters - -| Name | Type | -| :-------- | :------- | -| `claimId` | `string` | - -#### Returns - -`Object` - -| Name | Type | -| :---------------- | :--------------- | -| `chainId` | `number` | -| `contractAddress` | \`0x$\{string}\` | -| `id` | `bigint` | - -#### Defined in - -[sdk/src/utils/parsing.ts:3](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/parsing.ts#L3) - ---- - -### publicClientToProvider - -▸ **publicClientToProvider**(`publicClient`): `undefined` \| `FallbackProvider` \| `JsonRpcProvider` - -This function converts a `PublicClient` instance to an ethers.js `Provider` to faciliate compatibility between ethers and viem. - -It extracts the chain and transport from the `PublicClient` and creates a network object. -If no chain is found in the `PublicClient`, it logs a warning and stops the signature request. -If the transport type is "fallback", it creates a `FallbackProvider` with multiple transports. -Otherwise, it creates a `JsonRpcProvider` with a single transport. - -Ref: https://viem.sh/docs/ethers-migration.html - -#### Parameters - -| Name | Type | Description | -| :-------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `publicClient` | `Object` | The `PublicClient` instance to convert. | -| `publicClient.account` | `undefined` | The Account of the Client. | -| `publicClient.batch?` | `Object` | Flags for batch settings. | -| `publicClient.batch.multicall?` | `boolean` \| \{ batchSize?: number \| undefined; wait?: number \| undefined; } | Toggle to enable `eth_call` multicall aggregation. | -| `publicClient.cacheTime` | `number` | Time (in ms) that cached data will remain in memory. | -| `publicClient.call` | (`parameters`: `CallParameters`<`undefined` \| `Chain`\>) => `Promise`<`CallReturnType`\> | Executes a new message call immediately without submitting a transaction to the network. - Docs: https://viem.sh/docs/actions/public/call - JSON-RPC Methods: [`eth_call`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_call) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const data = await client.call({ account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', data: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', }) ` | -| `publicClient.ccipRead?` | `false` \| \{ `request?`: (`parameters`: `CcipRequestParameters`) => `Promise`<\`0x$\{string}\`\> } | [CCIP Read](https://eips.ethereum.org/EIPS/eip-3668) configuration. | -| `publicClient.chain` | `undefined` \| `Chain` | Chain for the client. | -| `publicClient.createBlockFilter` | () => `Promise`<\{ `id`: \`0x$\{string}\` ; `request`: `EIP1193RequestFn` ; `type`: `"block"` }\> | Creates a Filter to listen for new block hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges). - Docs: https://viem.sh/docs/actions/public/createBlockFilter - JSON-RPC Methods: [`eth_newBlockFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newBlockFilter) **`Example`** `ts import { createPublicClient, createBlockFilter, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await createBlockFilter(client) // { id: "0x345a6572337856574a76364e457a4366", type: 'block' } ` | -| `publicClient.createContractEventFilter` | (`args`: `CreateContractEventFilterParameters`<`TAbi`, `TEventName`, `TArgs`, `TStrict`, `TFromBlock`, `TToBlock`\>) => `Promise`<`CreateContractEventFilterReturnType`<`TAbi`, `TEventName`, `TArgs`, `TStrict`, `TFromBlock`, `TToBlock`\>\> | Creates a Filter to retrieve event logs that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges) or [`getFilterLogs`](https://viem.sh/docs/actions/public/getFilterLogs). - Docs: https://viem.sh/docs/contract/createContractEventFilter **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createContractEventFilter({ abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']), }) ` | -| `publicClient.createEventFilter` | (`args?`: `CreateEventFilterParameters`<`TAbiEvent`, `TAbiEvents`, `TStrict`, `TFromBlock`, `TToBlock`, `_EventName`, `_Args`\>) => `Promise`<\{ [K in keyof Filter<"event", TAbiEvents, \_EventName, \_Args, TStrict, TFromBlock, TToBlock\>]: Filter<"event", TAbiEvents, ... 4 more ..., TToBlock\>[K]; }\> | Creates a [`Filter`](https://viem.sh/docs/glossary/types#filter) to listen for new events that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges). - Docs: https://viem.sh/docs/actions/public/createEventFilter - JSON-RPC Methods: [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createEventFilter({ address: '0xfba3912ca04dd458c843e2ee08967fc04f3579c2', }) ` | -| `publicClient.createPendingTransactionFilter` | () => `Promise`<\{ `id`: \`0x$\{string}\` ; `request`: `EIP1193RequestFn` ; `type`: `"transaction"` }\> | Creates a Filter to listen for new pending transaction hashes that can be used with [`getFilterChanges`](https://viem.sh/docs/actions/public/getFilterChanges). - Docs: https://viem.sh/docs/actions/public/createPendingTransactionFilter - JSON-RPC Methods: [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createPendingTransactionFilter() // { id: "0x345a6572337856574a76364e457a4366", type: 'transaction' } ` | -| `publicClient.estimateContractGas` | (`args`: `EstimateContractGasParameters`<`abi`, `functionName`, `args`, `TChain`\>) => `Promise`<`bigint`\> | Estimates the gas required to successfully execute a contract write function call. - Docs: https://viem.sh/docs/contract/estimateContractGas **`Remarks`** Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`estimateGas` action](https://viem.sh/docs/actions/public/estimateGas) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const gas = await client.estimateContractGas({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint() public']), functionName: 'mint', account: '0xf39fd6e51aad88f6f4ce6ab8827279cfffb92266', }) ` | -| `publicClient.estimateFeesPerGas` | (`args?`: `EstimateFeesPerGasParameters`<`undefined` \| `Chain`, `TChainOverride`, `TType`\>) => `Promise`<`EstimateFeesPerGasReturnType`\> | Returns an estimate for the fees per gas for a transaction to be included in the next block. - Docs: https://viem.sh/docs/actions/public/estimateFeesPerGas **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const maxPriorityFeePerGas = await client.estimateFeesPerGas() // { maxFeePerGas: ..., maxPriorityFeePerGas: ... } ` | -| `publicClient.estimateGas` | (`args`: `EstimateGasParameters`<`undefined` \| `Chain`\>) => `Promise`<`bigint`\> | Estimates the gas necessary to complete a transaction without submitting it to the network. - Docs: https://viem.sh/docs/actions/public/estimateGas - JSON-RPC Methods: [`eth_estimateGas`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_estimategas) **`Example`** `ts import { createPublicClient, http, parseEther } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const gasEstimate = await client.estimateGas({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: parseEther('1'), }) ` | -| `publicClient.estimateMaxPriorityFeePerGas` | (`args?`: \{ `chain`: `null` \| `TChainOverride` }) => `Promise`<`bigint`\> | Returns an estimate for the max priority fee per gas (in wei) for a transaction to be included in the next block. - Docs: https://viem.sh/docs/actions/public/estimateMaxPriorityFeePerGas **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const maxPriorityFeePerGas = await client.estimateMaxPriorityFeePerGas() // 10000000n ` | -| `publicClient.extend` | (`fn`: (`client`: `Client`<`Transport`, `undefined` \| `Chain`, `undefined`, `PublicRpcSchema`, `PublicActions`<`Transport`, `undefined` \| `Chain`\>\>) => `client`) => `Client`<`Transport`, `undefined` \| `Chain`, `undefined`, `PublicRpcSchema`, \{ [K in keyof client]: client[K]; } & `PublicActions`<`Transport`, `undefined` \| `Chain`\>\> | - | -| `publicClient.getBalance` | (`args`: `GetBalanceParameters`) => `Promise`<`bigint`\> | Returns the balance of an address in wei. - Docs: https://viem.sh/docs/actions/public/getBalance - JSON-RPC Methods: [`eth_getBalance`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getbalance) **`Remarks`** You can convert the balance to ether units with [`formatEther`](https://viem.sh/docs/utilities/formatEther). `ts const balance = await getBalance(client, { address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', blockTag: 'safe' }) const balanceAsEther = formatEther(balance) // "6.942" ` **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const balance = await client.getBalance({ address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', }) // 10000000000000000000000n (wei) ` | -| `publicClient.getBlobBaseFee` | () => `Promise`<`bigint`\> | Returns the base fee per blob gas in wei. - Docs: https://viem.sh/docs/actions/public/getBlobBaseFee - JSON-RPC Methods: [`eth_blobBaseFee`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blobBaseFee) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { getBlobBaseFee } from 'viem/public' const client = createPublicClient({ chain: mainnet, transport: http(), }) const blobBaseFee = await client.getBlobBaseFee() ` | -| `publicClient.getBlock` | (`args?`: `GetBlockParameters`<`TIncludeTransactions`, `TBlockTag`\>) => `Promise`<\{ number: TBlockTag extends "pending" ? null : bigint; nonce: TBlockTag extends "pending" ? null : \`0x$\{string}\`; hash: TBlockTag extends "pending" ? null : \`0x$\{string}\`; ... 22 more ...; transactions: TIncludeTransactions extends true ? (\{ ...; } \| ... 2 more ... \| \{ ...; })[] : \`0x$\{string}\`[]; }\> | Returns information about a block at a block number, hash, or tag. - Docs: https://viem.sh/docs/actions/public/getBlock - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/fetching-blocks - JSON-RPC Methods: - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) for `blockNumber` & `blockTag`. - Calls [`eth_getBlockByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbyhash) for `blockHash`. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const block = await client.getBlock() ` | -| `publicClient.getBlockNumber` | (`args?`: `GetBlockNumberParameters`) => `Promise`<`bigint`\> | Returns the number of the most recent block seen. - Docs: https://viem.sh/docs/actions/public/getBlockNumber - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/fetching-blocks - JSON-RPC Methods: [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const blockNumber = await client.getBlockNumber() // 69420n ` | -| `publicClient.getBlockTransactionCount` | (`args?`: `GetBlockTransactionCountParameters`) => `Promise`<`number`\> | Returns the number of Transactions at a block number, hash, or tag. - Docs: https://viem.sh/docs/actions/public/getBlockTransactionCount - JSON-RPC Methods: - Calls [`eth_getBlockTransactionCountByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbynumber) for `blockNumber` & `blockTag`. - Calls [`eth_getBlockTransactionCountByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblocktransactioncountbyhash) for `blockHash`. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const count = await client.getBlockTransactionCount() ` | -| `publicClient.getBytecode` | (`args`: `GetBytecodeParameters`) => `Promise`<`GetBytecodeReturnType`\> | Retrieves the bytecode at an address. - Docs: https://viem.sh/docs/contract/getBytecode - JSON-RPC Methods: [`eth_getCode`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getcode) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const code = await client.getBytecode({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', }) ` | -| `publicClient.getChainId` | () => `Promise`<`number`\> | Returns the chain ID associated with the current network. - Docs: https://viem.sh/docs/actions/public/getChainId - JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const chainId = await client.getChainId() // 1 ` | -| `publicClient.getContractEvents` | (`args`: `GetContractEventsParameters`<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`\>) => `Promise`<`GetContractEventsReturnType`<`abi`, `eventName`, `strict`, `fromBlock`, `toBlock`\>\> | Returns a list of event logs emitted by a contract. - Docs: https://viem.sh/docs/actions/public/getContractEvents - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { wagmiAbi } from './abi' const client = createPublicClient({ chain: mainnet, transport: http(), }) const logs = await client.getContractEvents(client, { address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: wagmiAbi, eventName: 'Transfer' }) ` | -| `publicClient.getEnsAddress` | (`args`: \{ blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; coinType?: number \| undefined; gatewayUrls?: string[] \| undefined; name: string; strict?: boolean \| undefined; universalResolverAddress?: \`0x$\{string}\` \| undefined; }) => `Promise`<`GetEnsAddressReturnType`\> | Gets address for ENS name. - Docs: https://viem.sh/docs/ens/actions/getEnsAddress - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract. Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { normalize } from 'viem/ens' const client = createPublicClient({ chain: mainnet, transport: http(), }) const ensAddress = await client.getEnsAddress({ name: normalize('wevm.eth'), }) // '0xd2135CfB216b74109775236E36d4b433F1DF507B' ` | -| `publicClient.getEnsAvatar` | (`args`: \{ name: string; blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; gatewayUrls?: string[] \| undefined; strict?: boolean \| undefined; universalResolverAddress?: \`0x$\{string}\` \| undefined; assetGatewayUrls?: AssetGatewayUrls \| undefined; }) => `Promise`<`GetEnsAvatarReturnType`\> | Gets the avatar of an ENS name. - Docs: https://viem.sh/docs/ens/actions/getEnsAvatar - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls [`getEnsText`](https://viem.sh/docs/ens/actions/getEnsText) with `key` set to `'avatar'`. Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { normalize } from 'viem/ens' const client = createPublicClient({ chain: mainnet, transport: http(), }) const ensAvatar = await client.getEnsAvatar({ name: normalize('wevm.eth'), }) // 'https://ipfs.io/ipfs/Qma8mnp6xV3J2cRNf3mTth5C8nV11CAnceVinc3y8jSbio' ` | -| `publicClient.getEnsName` | (`args`: \{ blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; address: \`0x$\{string}\`; gatewayUrls?: string[] \| undefined; strict?: boolean \| undefined; universalResolverAddress?: \`0x$\{string}\` \| undefined; }) => `Promise`<`GetEnsNameReturnType`\> | Gets primary name for specified address. - Docs: https://viem.sh/docs/ens/actions/getEnsName - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls `reverse(bytes)` on ENS Universal Resolver Contract to "reverse resolve" the address to the primary ENS name. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const ensName = await client.getEnsName({ address: '0xd2135CfB216b74109775236E36d4b433F1DF507B', }) // 'wevm.eth' ` | -| `publicClient.getEnsResolver` | (`args`: \{ blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; name: string; universalResolverAddress?: \`0x$\{string}\` \| undefined; }) => `Promise`<\`0x$\{string}\`\> | Gets resolver for ENS name. - Docs: https://viem.sh/docs/ens/actions/getEnsResolver - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls `findResolver(bytes)` on ENS Universal Resolver Contract to retrieve the resolver of an ENS name. Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { normalize } from 'viem/ens' const client = createPublicClient({ chain: mainnet, transport: http(), }) const resolverAddress = await client.getEnsResolver({ name: normalize('wevm.eth'), }) // '0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41' ` | -| `publicClient.getEnsText` | (`args`: \{ blockNumber?: bigint \| undefined; blockTag?: BlockTag \| undefined; name: string; gatewayUrls?: string[] \| undefined; key: string; strict?: boolean \| undefined; universalResolverAddress?: \`0x$\{string}\` \| undefined; }) => `Promise`<`GetEnsTextReturnType`\> | Gets a text record for specified ENS name. - Docs: https://viem.sh/docs/ens/actions/getEnsResolver - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/ens **`Remarks`** Calls `resolve(bytes, bytes)` on ENS Universal Resolver Contract. Since ENS names prohibit certain forbidden characters (e.g. underscore) and have other validation rules, you likely want to [normalize ENS names](https://docs.ens.domains/contract-api-reference/name-processing#normalising-names) with [UTS-46 normalization](https://unicode.org/reports/tr46) before passing them to `getEnsAddress`. You can use the built-in [`normalize`](https://viem.sh/docs/ens/utilities/normalize) function for this. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { normalize } from 'viem/ens' const client = createPublicClient({ chain: mainnet, transport: http(), }) const twitterRecord = await client.getEnsText({ name: normalize('wevm.eth'), key: 'com.twitter', }) // 'wagmi_sh' ` | -| `publicClient.getFeeHistory` | (`args`: `GetFeeHistoryParameters`) => `Promise`<`GetFeeHistoryReturnType`\> | Returns a collection of historical gas information. - Docs: https://viem.sh/docs/actions/public/getFeeHistory - JSON-RPC Methods: [`eth_feeHistory`](https://docs.alchemy.com/reference/eth-feehistory) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const feeHistory = await client.getFeeHistory({ blockCount: 4, rewardPercentiles: [25, 75], }) ` | -| `publicClient.getFilterChanges` | (`args`: `GetFilterChangesParameters`<`TFilterType`, `TAbi`, `TEventName`, `TStrict`, `TFromBlock`, `TToBlock`\>) => `Promise`<`GetFilterChangesReturnType`<`TFilterType`, `TAbi`, `TEventName`, `TStrict`, `TFromBlock`, `TToBlock`\>\> | Returns a list of logs or hashes based on a [Filter](/docs/glossary/terms#filter) since the last time it was called. - Docs: https://viem.sh/docs/actions/public/getFilterChanges - JSON-RPC Methods: [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges) **`Remarks`** A Filter can be created from the following actions: - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter) - [`createContractEventFilter`](https://viem.sh/docs/contract/createContractEventFilter) - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter) - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter) Depending on the type of filter, the return value will be different: - If the filter was created with `createContractEventFilter` or `createEventFilter`, it returns a list of logs. - If the filter was created with `createPendingTransactionFilter`, it returns a list of transaction hashes. - If the filter was created with `createBlockFilter`, it returns a list of block hashes. **`Example`** `ts // Blocks import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createBlockFilter() const hashes = await client.getFilterChanges({ filter }) ` **`Example`** `ts // Contract Events import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createContractEventFilter({ address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', abi: parseAbi(['event Transfer(address indexed, address indexed, uint256)']), eventName: 'Transfer', }) const logs = await client.getFilterChanges({ filter }) ` **`Example`** `ts // Raw Events import { createPublicClient, http, parseAbiItem } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createEventFilter({ address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'), }) const logs = await client.getFilterChanges({ filter }) ` **`Example`** `ts // Transactions import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createPendingTransactionFilter() const hashes = await client.getFilterChanges({ filter }) ` | -| `publicClient.getFilterLogs` | (`args`: `GetFilterLogsParameters`<`TAbi`, `TEventName`, `TStrict`, `TFromBlock`, `TToBlock`\>) => `Promise`<`GetFilterLogsReturnType`<`TAbi`, `TEventName`, `TStrict`, `TFromBlock`, `TToBlock`\>\> | Returns a list of event logs since the filter was created. - Docs: https://viem.sh/docs/actions/public/getFilterLogs - JSON-RPC Methods: [`eth_getFilterLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterlogs) **`Remarks`** `getFilterLogs` is only compatible with **event filters**. **`Example`** `ts import { createPublicClient, http, parseAbiItem } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const filter = await client.createEventFilter({ address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48', event: parseAbiItem('event Transfer(address indexed, address indexed, uint256)'), }) const logs = await client.getFilterLogs({ filter }) ` | -| `publicClient.getGasPrice` | () => `Promise`<`bigint`\> | Returns the current price of gas (in wei). - Docs: https://viem.sh/docs/actions/public/getGasPrice - JSON-RPC Methods: [`eth_gasPrice`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gasprice) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const gasPrice = await client.getGasPrice() ` | -| `publicClient.getLogs` | (`args?`: `GetLogsParameters`<`TAbiEvent`, `TAbiEvents`, `TStrict`, `TFromBlock`, `TToBlock`\>) => `Promise`<`GetLogsReturnType`<`TAbiEvent`, `TAbiEvents`, `TStrict`, `TFromBlock`, `TToBlock`\>\> | Returns a list of event logs matching the provided parameters. - Docs: https://viem.sh/docs/actions/public/getLogs - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/filters-and-logs/event-logs - JSON-RPC Methods: [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) **`Example`** `ts import { createPublicClient, http, parseAbiItem } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const logs = await client.getLogs() ` | -| `publicClient.getProof` | (`args`: `GetProofParameters`) => `Promise`<`GetProofReturnType`\> | Returns the account and storage values of the specified account including the Merkle-proof. - Docs: https://viem.sh/docs/actions/public/getProof - JSON-RPC Methods: - Calls [`eth_getProof`](https://eips.ethereum.org/EIPS/eip-1186) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const block = await client.getProof({ address: '0x...', storageKeys: ['0x...'], }) ` | -| `publicClient.getStorageAt` | (`args`: `GetStorageAtParameters`) => `Promise`<`GetStorageAtReturnType`\> | Returns the value from a storage slot at a given address. - Docs: https://viem.sh/docs/contract/getStorageAt - JSON-RPC Methods: [`eth_getStorageAt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getstorageat) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { getStorageAt } from 'viem/contract' const client = createPublicClient({ chain: mainnet, transport: http(), }) const code = await client.getStorageAt({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', slot: toHex(0), }) ` | -| `publicClient.getTransaction` | (`args`: `GetTransactionParameters`<`TBlockTag`\>) => `Promise`<\{ type: "legacy"; to: \`0x$\{string}\` \| null; from: \`0x$\{string}\`; gas: bigint; nonce: number; value: bigint; gasPrice: bigint; maxFeePerBlobGas?: undefined; maxFeePerGas?: undefined; maxPriorityFeePerGas?: undefined; ... 12 more ...; transactionIndex: (TBlockTag extends "pending" ? true : false) extends true ? null :... \| \{ type: "eip2930"; to: \`0x$\{string}\` \| null; from: \`0x$\{string}\`; gas: bigint; nonce: number; value: bigint; gasPrice: bigint; maxFeePerBlobGas?: undefined; maxFeePerGas?: undefined; maxPriorityFeePerGas?: undefined; ... 12 more ...; transactionIndex: (TBlockTag extends "pending" ? true : false) extends true ? null ... \| \{ type: "eip1559"; to: \`0x$\{string}\` \| null; from: \`0x$\{string}\`; gas: bigint; nonce: number; value: bigint; gasPrice?: undefined; maxFeePerBlobGas?: undefined; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; ... 12 more ...; transactionIndex: (TBlockTag extends "pending" ? true : false) extends true ? null : nu... \| \{ type: "eip4844"; to: \`0x$\{string}\` \| null; from: \`0x$\{string}\`; gas: bigint; nonce: number; value: bigint; gasPrice?: undefined; maxFeePerBlobGas: bigint; maxFeePerGas: bigint; maxPriorityFeePerGas: bigint; ... 12 more ...; transactionIndex: (TBlockTag extends "pending" ? true : false) extends true ? null : number...\> | Returns information about a [Transaction](https://viem.sh/docs/glossary/terms#transaction) given a hash or block identifier. - Docs: https://viem.sh/docs/actions/public/getTransaction - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/fetching-transactions - JSON-RPC Methods: [`eth_getTransactionByHash`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionByHash) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const transaction = await client.getTransaction({ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', }) ` | -| `publicClient.getTransactionConfirmations` | (`args`: `GetTransactionConfirmationsParameters`<`undefined` \| `Chain`\>) => `Promise`<`bigint`\> | Returns the number of blocks passed (confirmations) since the transaction was processed on a block. - Docs: https://viem.sh/docs/actions/public/getTransactionConfirmations - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/fetching-transactions - JSON-RPC Methods: [`eth_getTransactionConfirmations`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionConfirmations) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const confirmations = await client.getTransactionConfirmations({ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', }) ` | -| `publicClient.getTransactionCount` | (`args`: `GetTransactionCountParameters`) => `Promise`<`number`\> | Returns the number of [Transactions](https://viem.sh/docs/glossary/terms#transaction) an Account has broadcast / sent. - Docs: https://viem.sh/docs/actions/public/getTransactionCount - JSON-RPC Methods: [`eth_getTransactionCount`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_gettransactioncount) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const transactionCount = await client.getTransactionCount({ address: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', }) ` | -| `publicClient.getTransactionReceipt` | (`args`: `GetTransactionReceiptParameters`) => `Promise`<`TransactionReceipt`\> | Returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt) given a [Transaction](https://viem.sh/docs/glossary/terms#transaction) hash. - Docs: https://viem.sh/docs/actions/public/getTransactionReceipt - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/fetching-transactions - JSON-RPC Methods: [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const transactionReceipt = await client.getTransactionReceipt({ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', }) ` | -| `publicClient.key` | `string` | A key for the client. | -| `publicClient.multicall` | (`args`: `MulticallParameters`<`contracts`, `allowFailure`\>) => `Promise`<`MulticallReturnType`<`contracts`, `allowFailure`\>\> | Similar to [`readContract`](https://viem.sh/docs/contract/readContract), but batches up multiple functions on a contract in a single RPC call via the [`multicall3` contract](https://github.com/mds1/multicall). - Docs: https://viem.sh/docs/contract/multicall **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const abi = parseAbi([ 'function balanceOf(address) view returns (uint256)', 'function totalSupply() view returns (uint256)', ]) const result = await client.multicall({ contracts: [ { address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi, functionName: 'balanceOf', args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'], }, { address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi, functionName: 'totalSupply', }, ], }) // [{ result: 424122n, status: 'success' }, { result: 1000000n, status: 'success' }] ` | -| `publicClient.name` | `string` | A name for the client. | -| `publicClient.pollingInterval` | `number` | Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. | -| `publicClient.prepareTransactionRequest` | (`args`: `PrepareTransactionRequestParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`, `TAccountOverride`, `TRequest`\>) => `Promise`<\{ [K in keyof (UnionRequiredBy, "transactionRequest", TransactionRequest\>, "from"\> & (DeriveChain<...\> extends Chain ? \{ ...; } : \{ ...; }) & (DeriveAccount<...\> extends Account ? \{ ...; } : \{ ...; }), IsNever<...\> extends true ? un...\> | Prepares a transaction request for signing. - Docs: https://viem.sh/docs/actions/wallet/prepareTransactionRequest **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x0000000000000000000000000000000000000000', value: 1n, }) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ to: '0x0000000000000000000000000000000000000000', value: 1n, }) ` | -| `publicClient.readContract` | (`args`: `ReadContractParameters`<`abi`, `functionName`, `args`\>) => `Promise`<`ReadContractReturnType`<`abi`, `functionName`, `args`\>\> | Calls a read-only function on a contract, and returns the response. - Docs: https://viem.sh/docs/contract/readContract - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/reading-contracts **`Remarks`** A "read-only" function (constant function) on a Solidity contract is denoted by a `view` or `pure` keyword. They can only read the state of the contract, and cannot make any changes to it. Since read-only methods do not change the state of the contract, they do not require any gas to be executed, and can be called by any user without the need to pay for gas. Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' import { readContract } from 'viem/contract' const client = createPublicClient({ chain: mainnet, transport: http(), }) const result = await client.readContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function balanceOf(address) view returns (uint256)']), functionName: 'balanceOf', args: ['0xA0Cf798816D4b9b9866b5330EEa46a18382f251e'], }) // 424122n ` | -| `publicClient.request` | `EIP1193RequestFn`<`PublicRpcSchema`\> | Request function wrapped with friendly error handling | -| `publicClient.sendRawTransaction` | (`args`: `SendRawTransactionParameters`) => `Promise`<\`0x$\{string}\`\> | Sends a **signed** transaction to the network - Docs: https://viem.sh/docs/actions/wallet/sendRawTransaction - JSON-RPC Method: [`eth_sendRawTransaction`](https://ethereum.github.io/execution-apis/api-documentation/) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' import { sendRawTransaction } from 'viem/wallet' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const hash = await client.sendRawTransaction({ serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33' }) ` | -| `publicClient.simulateContract` | (`args`: `SimulateContractParameters`<`abi`, `functionName`, `args`, `undefined` \| `Chain`, `chainOverride`, `accountOverride`\>) => `Promise`<`SimulateContractReturnType`<`abi`, `functionName`, `args`, `undefined` \| `Chain`, `undefined` \| `Account`, `chainOverride`, `accountOverride`\>\> | Simulates/validates a contract interaction. This is useful for retrieving **return data** and **revert reasons** of contract write functions. - Docs: https://viem.sh/docs/contract/simulateContract - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/writing-to-contracts **`Remarks`** This function does not require gas to execute and _**does not**_ change the state of the blockchain. It is almost identical to [`readContract`](https://viem.sh/docs/contract/readContract), but also supports contract write functions. Internally, uses a [Public Client](https://viem.sh/docs/clients/public) to call the [`call` action](https://viem.sh/docs/actions/public/call) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const result = await client.simulateContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint(uint32) view returns (uint32)']), functionName: 'mint', args: ['69420'], account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', }) ` | -| `publicClient.transport` | `TransportConfig`<`string`, `EIP1193RequestFn`\> & `Record`<`string`, `any`\> | The RPC transport | -| `publicClient.type` | `string` | The type of client. | -| `publicClient.uid` | `string` | A unique ID for the client. | -| `publicClient.uninstallFilter` | (`args`: `UninstallFilterParameters`) => `Promise`<`boolean`\> | Destroys a Filter that was created from one of the following Actions: - [`createBlockFilter`](https://viem.sh/docs/actions/public/createBlockFilter) - [`createEventFilter`](https://viem.sh/docs/actions/public/createEventFilter) - [`createPendingTransactionFilter`](https://viem.sh/docs/actions/public/createPendingTransactionFilter) - Docs: https://viem.sh/docs/actions/public/uninstallFilter - JSON-RPC Methods: [`eth_uninstallFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_uninstallFilter) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' import { createPendingTransactionFilter, uninstallFilter } from 'viem/public' const filter = await client.createPendingTransactionFilter() const uninstalled = await client.uninstallFilter({ filter }) // true ` | -| `publicClient.verifyMessage` | (`args`: `VerifyMessageParameters`) => `Promise`<`boolean`\> | - | -| `publicClient.verifyTypedData` | (`args`: `VerifyTypedDataParameters`) => `Promise`<`boolean`\> | - | -| `publicClient.waitForTransactionReceipt` | (`args`: `WaitForTransactionReceiptParameters`<`undefined` \| `Chain`\>) => `Promise`<`TransactionReceipt`\> | Waits for the [Transaction](https://viem.sh/docs/glossary/terms#transaction) to be included on a [Block](https://viem.sh/docs/glossary/terms#block) (one confirmation), and then returns the [Transaction Receipt](https://viem.sh/docs/glossary/terms#transaction-receipt). If the Transaction reverts, then the action will throw an error. - Docs: https://viem.sh/docs/actions/public/waitForTransactionReceipt - Example: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/sending-transactions - JSON-RPC Methods: - Polls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt) on each block until it has been processed. - If a Transaction has been replaced: - Calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getblockbynumber) and extracts the transactions - Checks if one of the Transactions is a replacement - If so, calls [`eth_getTransactionReceipt`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getTransactionReceipt). **`Remarks`** The `waitForTransactionReceipt` action additionally supports Replacement detection (e.g. sped up Transactions). Transactions can be replaced when a user modifies their transaction in their wallet (to speed up or cancel). Transactions are replaced when they are sent from the same nonce. There are 3 types of Transaction Replacement reasons: - `repriced`: The gas price has been modified (e.g. different `maxFeePerGas`) - `cancelled`: The Transaction has been cancelled (e.g. `value === 0n`) - `replaced`: The Transaction has been replaced (e.g. different `value` or `data`) **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const transactionReceipt = await client.waitForTransactionReceipt({ hash: '0x4ca7ee652d57678f26e887c149ab0735f41de37bcad58c9f6d3ed5824f15b74d', }) ` | -| `publicClient.watchBlockNumber` | (`args`: `WatchBlockNumberParameters`) => `WatchBlockNumberReturnType` | Watches and returns incoming block numbers. - Docs: https://viem.sh/docs/actions/public/watchBlockNumber - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/watching-blocks - JSON-RPC Methods: - When `poll: true`, calls [`eth_blockNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_blocknumber) on a polling interval. - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newHeads"` event. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = await client.watchBlockNumber({ onBlockNumber: (blockNumber) => console.log(blockNumber), }) ` | -| `publicClient.watchBlocks` | (`args`: `WatchBlocksParameters`<`Transport`, `undefined` \| `Chain`, `TIncludeTransactions`, `TBlockTag`\>) => `WatchBlocksReturnType` | Watches and returns information for incoming blocks. - Docs: https://viem.sh/docs/actions/public/watchBlocks - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/blocks/watching-blocks - JSON-RPC Methods: - When `poll: true`, calls [`eth_getBlockByNumber`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getBlockByNumber) on a polling interval. - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newHeads"` event. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = await client.watchBlocks({ onBlock: (block) => console.log(block), }) ` | -| `publicClient.watchContractEvent` | (`args`: `WatchContractEventParameters`<`TAbi`, `TEventName`, `TStrict`, `Transport`\>) => `WatchContractEventReturnType` | Watches and returns emitted contract event logs. - Docs: https://viem.sh/docs/contract/watchContractEvent **`Remarks`** This Action will batch up all the event logs found within the [`pollingInterval`](https://viem.sh/docs/contract/watchContractEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/contract/watchContractEvent#onLogs). `watchContractEvent` will attempt to create an [Event Filter](https://viem.sh/docs/contract/createContractEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchContractEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead. **`Example`** `ts import { createPublicClient, http, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = client.watchContractEvent({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['event Transfer(address indexed from, address indexed to, uint256 value)']), eventName: 'Transfer', args: { from: '0xc961145a54C96E3aE9bAA048c4F4D6b04C13916b' }, onLogs: (logs) => console.log(logs), }) ` | -| `publicClient.watchEvent` | (`args`: `WatchEventParameters`<`TAbiEvent`, `TAbiEvents`, `TStrict`, `Transport`\>) => `WatchEventReturnType` | Watches and returns emitted [Event Logs](https://viem.sh/docs/glossary/terms#event-log). - Docs: https://viem.sh/docs/actions/public/watchEvent - JSON-RPC Methods: - **RPC Provider supports `eth_newFilter`:** - Calls [`eth_newFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newfilter) to create a filter (called on initialize). - On a polling interval, it will call [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getfilterchanges). - **RPC Provider does not support `eth_newFilter`:** - Calls [`eth_getLogs`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getlogs) for each block between the polling interval. **`Remarks`** This Action will batch up all the Event Logs found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchEvent#pollinginterval-optional), and invoke them via [`onLogs`](https://viem.sh/docs/actions/public/watchEvent#onLogs). `watchEvent` will attempt to create an [Event Filter](https://viem.sh/docs/actions/public/createEventFilter) and listen to changes to the Filter per polling interval, however, if the RPC Provider does not support Filters (e.g. `eth_newFilter`), then `watchEvent` will fall back to using [`getLogs`](https://viem.sh/docs/actions/public/getLogs) instead. **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = client.watchEvent({ onLogs: (logs) => console.log(logs), }) ` | -| `publicClient.watchPendingTransactions` | (`args`: `WatchPendingTransactionsParameters`<`Transport`\>) => `WatchPendingTransactionsReturnType` | Watches and returns pending transaction hashes. - Docs: https://viem.sh/docs/actions/public/watchPendingTransactions - JSON-RPC Methods: - When `poll: true` - Calls [`eth_newPendingTransactionFilter`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_newpendingtransactionfilter) to initialize the filter. - Calls [`eth_getFilterChanges`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_getFilterChanges) on a polling interval. - When `poll: false` & WebSocket Transport, uses a WebSocket subscription via [`eth_subscribe`](https://docs.alchemy.com/reference/eth-subscribe-polygon) and the `"newPendingTransactions"` event. **`Remarks`** This Action will batch up all the pending transactions found within the [`pollingInterval`](https://viem.sh/docs/actions/public/watchPendingTransactions#pollinginterval-optional), and invoke them via [`onTransactions`](https://viem.sh/docs/actions/public/watchPendingTransactions#ontransactions). **`Example`** `ts import { createPublicClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createPublicClient({ chain: mainnet, transport: http(), }) const unwatch = await client.watchPendingTransactions({ onTransactions: (hashes) => console.log(hashes), }) ` | - -#### Returns - -`undefined` \| `FallbackProvider` \| `JsonRpcProvider` - -An ethers.js `Provider` instance, or `undefined` if no chain is found in the `PublicClient`. - -#### Defined in - -[sdk/src/utils/adapters.ts:19](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/adapters.ts#L19) - ---- - -### uploadAllowlist - -▸ **uploadAllowlist**(`req`, `config?`): `Promise`<`ResponseData`<\{ `cid`: `string` }\>\> - -Uploads an allowlist to the API. - -#### Parameters - -| Name | Type | Description | -| :-------- | :------------------------------------------------------------ | :----------------------------------------------------------------------------------------------------------------- | -| `req` | `AllowListPostRequest` | The request body containing the allowlist and total units. The allowList should be a stringified Merkle tree dump. | -| `config?` | [`StorageConfigOverrides`](modules.md#storageconfigoverrides) | An optional configuration object. | - -#### Returns - -`Promise`<`ResponseData`<\{ `cid`: `string` }\>\> - -The response data from the API. - -#### Defined in - -[sdk/src/utils/apis.ts:52](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/apis.ts#L52) - ---- - -### uploadMetadata - -▸ **uploadMetadata**(`metadata`, `config?`): `Promise`<`ResponseData`<\{ `cid`: `string` }\>\> - -Uploads metadata to the API. - -#### Parameters - -| Name | Type | Description | -| :--------- | :------------------------------------------------------------ | :--------------------------------------------------------------------------------------- | -| `metadata` | [`HypercertMetadata`](interfaces/HypercertMetadata.md) | The metadata to upload. Should be an object that conforms to the HypercertMetadata type. | -| `config?` | [`StorageConfigOverrides`](modules.md#storageconfigoverrides) | An optional configuration object. | - -#### Returns - -`Promise`<`ResponseData`<\{ `cid`: `string` }\>\> - -The response data from the API. - -#### Defined in - -[sdk/src/utils/apis.ts:34](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/apis.ts#L34) - ---- - -### useFragment - -▸ **useFragment**<`TType`\>(`_documentNode`, `fragmentType`): `TType` - -#### Type parameters - -| Name | -| :------ | -| `TType` | - -#### Parameters - -| Name | Type | -| :-------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------- | -| `_documentNode` | `DocumentTypeDecoration`<`TType`, `any`\> | -| `fragmentType` | [`TType`] extends [\{ ` $fragmentName?`: `TKey` }] ? `TKey` extends `string` ? \{ ` $fragmentRefs?`: \{ [key in string]: TType } } : `never` : `never` | - -#### Returns - -`TType` - -#### Defined in - -[sdk/src/indexer/gql/fragment-masking.ts:18](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/fragment-masking.ts#L18) - -▸ **useFragment**<`TType`\>(`_documentNode`, `fragmentType`): `TType` \| `null` \| `undefined` - -#### Type parameters - -| Name | -| :------ | -| `TType` | - -#### Parameters - -| Name | Type | -| :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -| `_documentNode` | `DocumentTypeDecoration`<`TType`, `any`\> | -| `fragmentType` | `undefined` \| `null` \| [`TType`] extends [\{ ` $fragmentName?`: `TKey` }] ? `TKey` extends `string` ? \{ ` $fragmentRefs?`: \{ [key in string]: TType } } : `never` : `never` | - -#### Returns - -`TType` \| `null` \| `undefined` - -#### Defined in - -[sdk/src/indexer/gql/fragment-masking.ts:23](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/fragment-masking.ts#L23) - -▸ **useFragment**<`TType`\>(`_documentNode`, `fragmentType`): `ReadonlyArray`<`TType`\> - -#### Type parameters - -| Name | -| :------ | -| `TType` | - -#### Parameters - -| Name | Type | -| :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `_documentNode` | `DocumentTypeDecoration`<`TType`, `any`\> | -| `fragmentType` | readonly [`TType`] extends [\{ ` $fragmentName?`: `TKey` }] ? `TKey` extends `string` ? \{ ` $fragmentRefs?`: \{ [key in string]: TType } } : `never` : `never`[] | - -#### Returns - -`ReadonlyArray`<`TType`\> - -#### Defined in - -[sdk/src/indexer/gql/fragment-masking.ts:28](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/fragment-masking.ts#L28) - -▸ **useFragment**<`TType`\>(`_documentNode`, `fragmentType`): `ReadonlyArray`<`TType`\> \| `null` \| `undefined` - -#### Type parameters - -| Name | -| :------ | -| `TType` | - -#### Parameters - -| Name | Type | -| :-------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `_documentNode` | `DocumentTypeDecoration`<`TType`, `any`\> | -| `fragmentType` | `undefined` \| `null` \| readonly [`TType`] extends [\{ ` $fragmentName?`: `TKey` }] ? `TKey` extends `string` ? \{ ` $fragmentRefs?`: \{ [key in string]: TType } } : `never` : `never`[] | - -#### Returns - -`ReadonlyArray`<`TType`\> \| `null` \| `undefined` - -#### Defined in - -[sdk/src/indexer/gql/fragment-masking.ts:33](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/indexer/gql/fragment-masking.ts#L33) - ---- - -### validateAllowlist - -▸ **validateAllowlist**(`data`, `units`): `ValidationResult` - -Validates an array of allowlist entries. - -This function checks that the total units in the allowlist match the expected total units, that the total units are greater than 0, -and that all addresses in the allowlist are valid Ethereum addresses. It returns an object that includes a validity flag and any errors that occurred during validation. - -#### Parameters - -| Name | Type | Description | -| :------ | :---------------------------------------------- | :---------------------------------------------------------------------------------------------------------------- | -| `data` | [`AllowlistEntry`](modules.md#allowlistentry)[] | The allowlist entries to validate. Each entry should be an object that includes an address and a number of units. | -| `units` | `bigint` | The expected total units in the allowlist. | - -#### Returns - -`ValidationResult` - -An object that includes a validity flag and any errors that occurred during validation. The keys in the errors object are the names of the invalid properties, and the values are the error messages. - -#### Defined in - -[sdk/src/validator/index.ts:108](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/validator/index.ts#L108) - ---- - -### validateClaimData - -▸ **validateClaimData**(`data`): `ValidationResult` - -Validates Hypercert claim data. - -This function uses the AJV library to validate the claim data. It first retrieves the schema for the claim data, -then validates the data against the schema. If the schema is not found, it returns an error. If the data does not -conform to the schema, it returns the validation errors. If the data is valid, it returns a success message. - -#### Parameters - -| Name | Type | Description | -| :----- | :-------- | :------------------------------------------------------------------------------------------------- | -| `data` | `unknown` | The claim data to validate. This should be an object that conforms to the HypercertClaimdata type. | - -#### Returns - -`ValidationResult` - -An object that includes a validity flag and any errors that occurred during validation. - -#### Defined in - -[sdk/src/validator/index.ts:77](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/validator/index.ts#L77) - ---- - -### validateDuplicateEvaluationData - -▸ **validateDuplicateEvaluationData**(`data`): `ValidationResult` - -Validates duplicate evaluation data. - -This function uses the AJV library to validate the duplicate evaluation data. It first retrieves the schema for the duplicate evaluation data, -then validates the data against the schema. If the schema is not found, it returns an error. If the data does not -conform to the schema, it returns the validation errors. If the data is valid, it returns a success message. - -#### Parameters - -| Name | Type | Description | -| :----- | :--------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------- | -| `data` | [`DuplicateEvaluation`](interfaces/DuplicateEvaluation.md) | The duplicate evaluation data to validate. This should be an object that conforms to the DuplicateEvaluation type. | - -#### Returns - -`ValidationResult` - -An object that includes a validity flag and any errors that occurred during validation. - -#### Defined in - -[sdk/src/validator/index.ts:143](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/validator/index.ts#L143) - ---- - -### validateMetaData - -▸ **validateMetaData**(`data`): `ValidationResult` - -Validates Hypercert metadata. - -This function uses the AJV library to validate the metadata. It first retrieves the schema for the metadata, -then validates the data against the schema. If the schema is not found, it returns an error. If the data does not -conform to the schema, it returns the validation errors. If the data is valid, it returns a success message. - -#### Parameters - -| Name | Type | Description | -| :----- | :-------- | :---------------------------------------------------------------------------------------------- | -| `data` | `unknown` | The metadata to validate. This should be an object that conforms to the HypercertMetadata type. | - -#### Returns - -`ValidationResult` - -An object that includes a validity flag and any errors that occurred during validation. - -#### Defined in - -[sdk/src/validator/index.ts:46](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/validator/index.ts#L46) - ---- - -### validateSimpleTextEvaluationData - -▸ **validateSimpleTextEvaluationData**(`data`): `ValidationResult` - -Validates simple text evaluation data against a predefined schema. - -This function uses the AJV library to validate the simple text evaluation data. It first retrieves the schema for the simple text evaluation data, -then validates the data against the schema. If the schema is not found, it returns an error. If the data does not -conform to the schema, it returns the validation errors. If the data is valid, it returns a success message. - -#### Parameters - -| Name | Type | Description | -| :----- | :----------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------- | -| `data` | [`SimpleTextEvaluation`](interfaces/SimpleTextEvaluation.md) | The simple text evaluation data to validate. This should be an object that conforms to the SimpleTextEvaluation type. | - -#### Returns - -`ValidationResult` - -An object that includes a validity flag and any errors that occurred during validation. - -#### Defined in - -[sdk/src/validator/index.ts:173](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/validator/index.ts#L173) - ---- - -### verifyMerkleProof - -▸ **verifyMerkleProof**(`root`, `signerAddress`, `units`, `proof`): `void` - -Verifies a Merkle proof for a given root, signer address, units, and proof. - -This function first checks if the signer address is a valid Ethereum address. If it's not, it throws a `MintingError`. -It then verifies the Merkle proof using the `StandardMerkleTree.verify` method. If the verification fails, it throws a `MintingError`. - -#### Parameters - -| Name | Type | Description | -| :-------------- | :--------- | :----------------------------- | -| `root` | `string` | The root of the Merkle tree. | -| `signerAddress` | `string` | The signer's Ethereum address. | -| `units` | `bigint` | The number of units. | -| `proof` | `string`[] | The Merkle proof to verify. | - -#### Returns - -`void` - -**`Throws`** - -Will throw a `MintingError` if the signer address is invalid or if the Merkle proof verification fails. - -#### Defined in - -[sdk/src/validator/index.ts:205](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/validator/index.ts#L205) - ---- - -### verifyMerkleProofs - -▸ **verifyMerkleProofs**(`roots`, `signerAddress`, `units`, `proofs`): `void` - -Verifies multiple Merkle proofs for given roots, a signer address, units, and proofs. - -This function first checks if the lengths of the roots, units, and proofs arrays are equal. If they're not, it throws a `MintingError`. -It then iterates over the arrays and verifies each Merkle proof using the `verifyMerkleProof` function. If any verification fails, it throws a `MintingError`. - -#### Parameters - -| Name | Type | Description | -| :-------------- | :----------- | :----------------------------- | -| `roots` | `string`[] | The roots of the Merkle trees. | -| `signerAddress` | `string` | The signer's Ethereum address. | -| `units` | `bigint`[] | The numbers of units. | -| `proofs` | `string`[][] | The Merkle proofs to verify. | - -#### Returns - -`void` - -**`Throws`** - -Will throw a `MintingError` if the lengths of the input arrays are not equal or if any Merkle proof verification fails. - -#### Defined in - -[sdk/src/validator/index.ts:228](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/validator/index.ts#L228) - ---- - -### walletClientToSigner - -▸ **walletClientToSigner**(`walletClient`): `undefined` \| `Signer` & `TypedDataSigner` - -This function converts a `WalletClient` instance to an ethers.js `Signer` to faciliate compatibility between ethers and viem. - -It extracts the account, chain, and transport from the `WalletClient` and creates a network object. -If no chain is found in the `WalletClient`, it logs a warning and stops the signature request. -It then creates a `Web3Provider` with the transport and network, and gets a `Signer` from the provider using the account's address. - -Ref: https://viem.sh/docs/ethers-migration.html - -#### Parameters - -| Name | Type | Description | -| :--------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| `walletClient` | `Object` | The `WalletClient` instance to convert. | -| `walletClient.account` | `undefined` \| `Account` | The Account of the Client. | -| `walletClient.addChain` | (`args`: `AddChainParameters`) => `Promise`<`void`\> | Adds an EVM chain to the wallet. - Docs: https://viem.sh/docs/actions/wallet/addChain - JSON-RPC Methods: [`eth_addEthereumChain`](https://eips.ethereum.org/EIPS/eip-3085) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { optimism } from 'viem/chains' const client = createWalletClient({ transport: custom(window.ethereum), }) await client.addChain({ chain: optimism }) ` | -| `walletClient.batch?` | `Object` | Flags for batch settings. | -| `walletClient.batch.multicall?` | `boolean` \| \{ batchSize?: number \| undefined; wait?: number \| undefined; } | Toggle to enable `eth_call` multicall aggregation. | -| `walletClient.cacheTime` | `number` | Time (in ms) that cached data will remain in memory. | -| `walletClient.ccipRead?` | `false` \| \{ `request?`: (`parameters`: `CcipRequestParameters`) => `Promise`<\`0x$\{string}\`\> } | [CCIP Read](https://eips.ethereum.org/EIPS/eip-3668) configuration. | -| `walletClient.chain` | `undefined` \| `Chain` | Chain for the client. | -| `walletClient.deployContract` | (`args`: `DeployContractParameters`<`abi`, `undefined` \| `Chain`, `undefined` \| `Account`, `chainOverride`\>) => `Promise`<\`0x$\{string}\`\> | Deploys a contract to the network, given bytecode and constructor arguments. - Docs: https://viem.sh/docs/contract/deployContract - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/deploying-contracts **`Example`** `ts import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(), }) const hash = await client.deployContract({ abi: [], account: '0x…, bytecode: '0x608060405260405161083e38038061083e833981016040819052610...', }) ` | -| `walletClient.extend` | (`fn`: (`client`: `Client`<`Transport`, `undefined` \| `Chain`, `undefined` \| `Account`, `WalletRpcSchema`, `WalletActions`<`undefined` \| `Chain`, `undefined` \| `Account`\>\>) => `client`) => `Client`<`Transport`, `undefined` \| `Chain`, `undefined` \| `Account`, `WalletRpcSchema`, \{ [K in keyof client]: client[K]; } & `WalletActions`<`undefined` \| `Chain`, `undefined` \| `Account`\>\> | - | -| `walletClient.getAddresses` | () => `Promise`<`GetAddressesReturnType`\> | Returns a list of account addresses owned by the wallet or client. - Docs: https://viem.sh/docs/actions/wallet/getAddresses - JSON-RPC Methods: [`eth_accounts`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_accounts) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const accounts = await client.getAddresses() ` | -| `walletClient.getChainId` | () => `Promise`<`number`\> | Returns the chain ID associated with the current network. - Docs: https://viem.sh/docs/actions/public/getChainId - JSON-RPC Methods: [`eth_chainId`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_chainid) **`Example`** `ts import { createWalletClient, http } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const chainId = await client.getChainId() // 1 ` | -| `walletClient.getPermissions` | () => `Promise`<`GetPermissionsReturnType`\> | Gets the wallets current permissions. - Docs: https://viem.sh/docs/actions/wallet/getPermissions - JSON-RPC Methods: [`wallet_getPermissions`](https://eips.ethereum.org/EIPS/eip-2255) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const permissions = await client.getPermissions() ` | -| `walletClient.key` | `string` | A key for the client. | -| `walletClient.name` | `string` | A name for the client. | -| `walletClient.pollingInterval` | `number` | Frequency (in ms) for polling enabled actions & events. Defaults to 4_000 milliseconds. | -| `walletClient.prepareTransactionRequest` | (`args`: `PrepareTransactionRequestParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`, `TAccountOverride`, `TRequest`\>) => `Promise`<\{ [K in keyof (UnionRequiredBy, "transactionRequest", TransactionRequest\>, "from"\> & (DeriveChain<...\> extends Chain ? \{ ...; } : \{ ...; }) & (DeriveAccount<...\> extends Account ? \{ ...; } : \{ ...; }), IsNever<...\> extends true ? un...\> | Prepares a transaction request for signing. - Docs: https://viem.sh/docs/actions/wallet/prepareTransactionRequest **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x0000000000000000000000000000000000000000', value: 1n, }) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ to: '0x0000000000000000000000000000000000000000', value: 1n, }) ` | -| `walletClient.request` | `EIP1193RequestFn`<`WalletRpcSchema`\> | Request function wrapped with friendly error handling | -| `walletClient.requestAddresses` | () => `Promise`<`RequestAddressesReturnType`\> | Requests a list of accounts managed by a wallet. - Docs: https://viem.sh/docs/actions/wallet/requestAddresses - JSON-RPC Methods: [`eth_requestAccounts`](https://eips.ethereum.org/EIPS/eip-1102) Sends a request to the wallet, asking for permission to access the user's accounts. After the user accepts the request, it will return a list of accounts (addresses). This API can be useful for dapps that need to access the user's accounts in order to execute transactions or interact with smart contracts. **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const accounts = await client.requestAddresses() ` | -| `walletClient.requestPermissions` | (`args`: \{ [x: string]: Record; eth_accounts: Record; }) => `Promise`<`RequestPermissionsReturnType`\> | Requests permissions for a wallet. - Docs: https://viem.sh/docs/actions/wallet/requestPermissions - JSON-RPC Methods: [`wallet_requestPermissions`](https://eips.ethereum.org/EIPS/eip-2255) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const permissions = await client.requestPermissions({ eth_accounts: {} }) ` | -| `walletClient.sendRawTransaction` | (`args`: `SendRawTransactionParameters`) => `Promise`<\`0x$\{string}\`\> | Sends a **signed** transaction to the network - Docs: https://viem.sh/docs/actions/wallet/sendRawTransaction - JSON-RPC Method: [`eth_sendRawTransaction`](https://ethereum.github.io/execution-apis/api-documentation/) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' import { sendRawTransaction } from 'viem/wallet' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const hash = await client.sendRawTransaction({ serializedTransaction: '0x02f850018203118080825208808080c080a04012522854168b27e5dc3d5839bab5e6b39e1a0ffd343901ce1622e3d64b48f1a04e00902ae0502c4728cbf12156290df99c3ed7de85b1dbfe20b5c36931733a33' }) ` | -| `walletClient.sendTransaction` | (`args`: `SendTransactionParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`, `TRequest`\>) => `Promise`<\`0x$\{string}\`\> | Creates, signs, and sends a new transaction to the network. - Docs: https://viem.sh/docs/actions/wallet/sendTransaction - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/transactions/sending-transactions - JSON-RPC Methods: - JSON-RPC Accounts: [`eth_sendTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendtransaction) - Local Accounts: [`eth_sendRawTransaction`](https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const hash = await client.sendTransaction({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: 1000000000000000000n, }) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(), }) const hash = await client.sendTransaction({ to: '0x70997970c51812dc3a010c7d01b50e0d17dc79c8', value: 1000000000000000000n, }) ` | -| `walletClient.signMessage` | (`args`: `SignMessageParameters`<`undefined` \| `Account`\>) => `Promise`<\`0x$\{string}\`\> | Calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))`. - Docs: https://viem.sh/docs/actions/wallet/signMessage - JSON-RPC Methods: - JSON-RPC Accounts: [`personal_sign`](https://docs.metamask.io/guide/signing-data#personal-sign) - Local Accounts: Signs locally. No JSON-RPC request. With the calculated signature, you can: - use [`verifyMessage`](https://viem.sh/docs/utilities/verifyMessage) to verify the signature, - use [`recoverMessageAddress`](https://viem.sh/docs/utilities/recoverMessageAddress) to recover the signing address from a signature. **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const signature = await client.signMessage({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', message: 'hello world', }) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(), }) const signature = await client.signMessage({ message: 'hello world', }) ` | -| `walletClient.signTransaction` | (`args`: `SignTransactionParameters`<`undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`\>) => `Promise`<\`0x02$\{string}\` \| \`0x01$\{string}\` \| \`0x03$\{string}\` \| `TransactionSerializedLegacy`\> | Signs a transaction. - Docs: https://viem.sh/docs/actions/wallet/signTransaction - JSON-RPC Methods: - JSON-RPC Accounts: [`eth_signTransaction`](https://ethereum.github.io/execution-apis/api-documentation/) - Local Accounts: Signs locally. No JSON-RPC request. **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', to: '0x0000000000000000000000000000000000000000', value: 1n, }) const signature = await client.signTransaction(request) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: custom(window.ethereum), }) const request = await client.prepareTransactionRequest({ to: '0x0000000000000000000000000000000000000000', value: 1n, }) const signature = await client.signTransaction(request) ` | -| `walletClient.signTypedData` | (`args`: `SignTypedDataParameters`<`TTypedData`, `TPrimaryType`, `undefined` \| `Account`\>) => `Promise`<\`0x$\{string}\`\> | Signs typed data and calculates an Ethereum-specific signature in [EIP-191 format](https://eips.ethereum.org/EIPS/eip-191): `keccak256("\x19Ethereum Signed Message:\n" + len(message) + message))`. - Docs: https://viem.sh/docs/actions/wallet/signTypedData - JSON-RPC Methods: - JSON-RPC Accounts: [`eth_signTypedData_v4`](https://docs.metamask.io/guide/signing-data#signtypeddata-v4) - Local Accounts: Signs locally. No JSON-RPC request. **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const signature = await client.signTypedData({ account: '0xA0Cf798816D4b9b9866b5330EEa46a18382f251e', domain: { name: 'Ether Mail', version: '1', chainId: 1, verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', }, types: { Person: [ { name: 'name', type: 'string' }, { name: 'wallet', type: 'address' }, ], Mail: [ { name: 'from', type: 'Person' }, { name: 'to', type: 'Person' }, { name: 'contents', type: 'string' }, ], }, primaryType: 'Mail', message: { from: { name: 'Cow', wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', }, to: { name: 'Bob', wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', }, contents: 'Hello, Bob!', }, }) ` **`Example`** `ts // Account Hoisting import { createWalletClient, http } from 'viem' import { privateKeyToAccount } from 'viem/accounts' import { mainnet } from 'viem/chains' const client = createWalletClient({ account: privateKeyToAccount('0x…'), chain: mainnet, transport: http(), }) const signature = await client.signTypedData({ domain: { name: 'Ether Mail', version: '1', chainId: 1, verifyingContract: '0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC', }, types: { Person: [ { name: 'name', type: 'string' }, { name: 'wallet', type: 'address' }, ], Mail: [ { name: 'from', type: 'Person' }, { name: 'to', type: 'Person' }, { name: 'contents', type: 'string' }, ], }, primaryType: 'Mail', message: { from: { name: 'Cow', wallet: '0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826', }, to: { name: 'Bob', wallet: '0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB', }, contents: 'Hello, Bob!', }, }) ` | -| `walletClient.switchChain` | (`args`: `SwitchChainParameters`) => `Promise`<`void`\> | Switch the target chain in a wallet. - Docs: https://viem.sh/docs/actions/wallet/switchChain - JSON-RPC Methods: [`eth_switchEthereumChain`](https://eips.ethereum.org/EIPS/eip-3326) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet, optimism } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) await client.switchChain({ id: optimism.id }) ` | -| `walletClient.transport` | `TransportConfig`<`string`, `EIP1193RequestFn`\> & `Record`<`string`, `any`\> | The RPC transport | -| `walletClient.type` | `string` | The type of client. | -| `walletClient.uid` | `string` | A unique ID for the client. | -| `walletClient.watchAsset` | (`args`: `WatchAssetParams`) => `Promise`<`boolean`\> | Adds an EVM chain to the wallet. - Docs: https://viem.sh/docs/actions/wallet/watchAsset - JSON-RPC Methods: [`eth_switchEthereumChain`](https://eips.ethereum.org/EIPS/eip-747) **`Example`** `ts import { createWalletClient, custom } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const success = await client.watchAsset({ type: 'ERC20', options: { address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2', decimals: 18, symbol: 'WETH', }, }) ` | -| `walletClient.writeContract` | (`args`: `WriteContractParameters`<`abi`, `functionName`, `args`, `undefined` \| `Chain`, `undefined` \| `Account`, `TChainOverride`\>) => `Promise`<\`0x$\{string}\`\> | Executes a write function on a contract. - Docs: https://viem.sh/docs/contract/writeContract - Examples: https://stackblitz.com/github/wevm/viem/tree/main/examples/contracts/writing-to-contracts A "write" function on a Solidity contract modifies the state of the blockchain. These types of functions require gas to be executed, and hence a [Transaction](https://viem.sh/docs/glossary/terms) is needed to be broadcast in order to change the state. Internally, uses a [Wallet Client](https://viem.sh/docs/clients/wallet) to call the [`sendTransaction` action](https://viem.sh/docs/actions/wallet/sendTransaction) with [ABI-encoded `data`](https://viem.sh/docs/contract/encodeFunctionData). **Warning: The `write` internally sends a transaction – it does not validate if the contract write will succeed (the contract may throw an error). It is highly recommended to [simulate the contract write with `contract.simulate`](https://viem.sh/docs/contract/writeContract#usage) before you execute it.** **`Example`** `ts import { createWalletClient, custom, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const hash = await client.writeContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint(uint32 tokenId) nonpayable']), functionName: 'mint', args: [69420], }) ` **`Example`** `ts // With Validation import { createWalletClient, custom, parseAbi } from 'viem' import { mainnet } from 'viem/chains' const client = createWalletClient({ chain: mainnet, transport: custom(window.ethereum), }) const { request } = await client.simulateContract({ address: '0xFBA3912Ca04dd458c843e2EE08967fC04f3579c2', abi: parseAbi(['function mint(uint32 tokenId) nonpayable']), functionName: 'mint', args: [69420], } const hash = await client.writeContract(request) ` | - -#### Returns - -`undefined` \| `Signer` & `TypedDataSigner` - -An ethers.js `Signer` instance, or `undefined` if no chain is found in the `WalletClient`. - -#### Defined in - -[sdk/src/utils/adapters.ts:51](https://github.com/hypercerts-org/hypercerts/blob/473cc51/sdk/src/utils/adapters.ts#L51) diff --git a/docs/docs/developer/burning.md b/docs/docs/developer/burning.md deleted file mode 100644 index 331ebc52..00000000 --- a/docs/docs/developer/burning.md +++ /dev/null @@ -1,12 +0,0 @@ -# Burning - -> :construction: **NOTE**: This is a work-in-progress and may not be fully functioning yet. - -## Burning fraction tokens - -You can only burn fraction tokens that you own. Hypercert claims cannot be burned once minted. -You can get a list of all fraction tokens you own with [this query](./querying.md#claimtokensbyowner). - -```js -const txHash = await hypercerts.burnClaimFraction({ claimId }); -``` diff --git a/docs/docs/developer/config.md b/docs/docs/developer/config.md deleted file mode 100644 index 3689e557..00000000 --- a/docs/docs/developer/config.md +++ /dev/null @@ -1,96 +0,0 @@ -# Hypercert Client Configuration - -The client provides a high level interface that communicates with the Graph, IPFS and the evm. For easy setup we harmonised the configuration into a flow that allows for configuration with different levels of specificity. - -## Configuration - -### Setup - -The SDK allows for minimal configuration, explicit overrides and defining values in environment variables. We apply the following hierarchy: - -1. Overrides declared in `Partial` - -Based on the chainID we load the default config for the respected chain, if it's supported. - -We then process the rest of the overrides and possible environment variables to customise the default configuration. - -To get started quickly you can either: - -- initialize a new client by calling `new HypercertClient({chain: {id: 11155111})`. - -Using either of the options above will launch the client in `read only` mode using the defaults in [constants.ts](https://github.com/hypercerts-org/hypercerts/blob/main/sdk/src/constants.ts) - -### Read-only mode - -The SDK client will be in read-only mode if any of the following conditions are true: - -- The client was initialized without an operator. -- The client was initialized with an operator without signing abilities. -- The contract address is not set. - -If any of these conditions are true, the read-only property of the `HypercertClient` instance will be set to true, and a warning message will be logged indicating that the client is in read-only mode. - -### Defaults - -The [constants.ts](https://github.com/hypercerts-org/hypercerts/blob/main/sdk/src/constants.ts) file defines various defaults constants that are used throughout the Hypercert system. - -`DEPLOYMENTS`: This constant defines the deployments that are managed by the Hypercert system. Each Deployment object -contains information about a specific deployment, including the chain ID, chain name, contract address, and graph name. - -For example: - -```json -{ - "11155111": { - "addresses": { - "HypercertMinterUUPS": "0x1234567890abcdef1234567890abcdef12345678", - "TransferManager": "0x1234567890abcdef1234567890abcdef12345678", - "...": "...", - "StrategyHypercertFractionOffer": "0x1234567890abcdef1234567890abcdef12345678" - }, - "graphName": "hypercerts-sepola", - "graphUrl": "https://api.thegraph.com/subgraphs/name/hypercerts-admin/hypercerts-sepolia" - } -} -``` - -You can select which deployment to use by passing in a `chainId` configuration parameter. We also allow for `overrides` -when creating the SDK by passing configuration variables. - -### Client config properties - -HypercertClientConfig is a configuration object used when initializing a new instance of the HypercertClient. It allows -you to customize the client by setting your own providers or deployments. At it's simplest, you only need to provide -`chain.id` to initalize the client in `readonly` mode. - -| Field | Type | Description | -| --------------------------- | ------- | ---------------------------------------------------------------------------------------------- | -| `chain` | Object | Partial configuration for the blockchain network. | -| `contractAddress` | String | The address of the deployed contract. | -| `graphUrl` | String | The URL to the subgraph that indexes the contract events. Override for localized testing. | -| `graphName` | String | The name of the subgraph. | -| `easContractAddress` | String | The address of the EAS contract. | -| `publicClient` | Object | The PublicClient is inherently read-only and is used for reading data from the blockchain. | -| `walletClient` | Object | The WalletClient is used for signing and sending transactions. | -| `unsafeForceOverrideConfig` | Boolean | Boolean to force the use of overridden values. | -| `readOnly` | Boolean | Boolean to assert if the client is in read-only mode. | -| `readOnlyReason` | String | Reason for read-only mode. This is optional and can be used for logging or debugging purposes. | - -### Logging - -The logger for the SDK uses the log level based on the value of the LOG_LEVEL environment variable. The log level -determines which log messages are printed to the console. By default, the logger is configured to log messages with a -level of info or higher to the console. - -In your `.env` file: - -```bash -LOG_LEVEL="info" -``` - -The SDK logger supports four log levels: `error`, `warn`, `info`, and `debug`. - -- The `error` log level is used to log errors that occur in the SDK. -- The `warn` log level is used to log warnings that do not necessarily indicate an error, but may be important to investigate. -- The `info` log level is used to log general information about the SDK's state or behavior. -- The `debug` log level is used to log detailed information that is useful for debugging purposes. diff --git a/docs/docs/developer/errors.md b/docs/docs/developer/errors.md deleted file mode 100644 index 291bb9f0..00000000 --- a/docs/docs/developer/errors.md +++ /dev/null @@ -1,20 +0,0 @@ -# Errors in the SDK - -Generally, we follow the pattern of throwing on errors and letting those surface to the application. This allows for developers to handle any (un)expected errors in a manner they find suitable. - -### Handling Errors - -To support debugging we've implemented some custom errors. - -| Error | Description | Payload | -| ----------------------- | ---------------------------------------------------- | ---------------------------- | -| `ClientError` | An error that is caused by a problem with the client | `{ "key": "value" }` | -| `ContractError` | An error that is returned by the contract | \`{ "data": "BaseError | -| `FetchError` | Fails fetching a remote resource | `{ "key": "value" }` | -| `InvalidOrMissingError` | The provided value was undefined or empty | `{ "key": "value" }` | -| `MintingError` | Minting transaction failed | `{ "key": "value" }` | -| `StorageError` | Fails storing to a remote resource | `{ "key": "value" }` | -| `UnknownSchemaError` | Schema could not be loaded | `{ "schemaName": "string" }` | -| `MalformedDataError` | Data doesn't conform to expectations | `{ "key": "value" }` | -| `UnsupportedChainError` | This blockchain is not yet supported | \`{ "chainID": "string | -| `ConfigurationError` | The configuration was invalid | `{ "key": "value" }` | diff --git a/docs/docs/developer/index.md b/docs/docs/developer/index.md deleted file mode 100644 index 1baebcca..00000000 --- a/docs/docs/developer/index.md +++ /dev/null @@ -1,49 +0,0 @@ -# Developer Documentation for Hypercerts - -Welcome to the developer documentation for Hypercerts! This guide will provide you with all the information you need to get started with developing applications using Hypercerts. - -## API Documentation - -The API documentation section contains detailed information about the hypercerts SDK and contracts. You will find everything you need to integrate Hypercerts into your applications. - -## NPM packages - -We provide the following NPM packages for you to use in your applications: - -- [SDK](https://www.npmjs.com/package/@hypercerts-org/sdk) -- [Contracts](https://www.npmjs.com/package/@hypercerts-org/contracts) - -## Starter app - -The starter app repo contains a sample application that demonstrates how to use the Hypercerts SDK to create a simple web application based on Next.js, Chakra UI, and the Hypercerts SDK. - -[Starter app repository](https://github.com/hypercerts-org/hypercert-nextjs-chakra-starter) - ---- - -**NOTE** - -The starter app is a template to feel free to fork it and get started quickly. - ---- - -## Demo Apps - -In the demo apps repo, you will find a collection of sample applications that show the bare minimum to implement hypercerts. These apps serve as a starting point for your own development and can be used as a reference to understand how to implement the SDK. - -[Demo apps repository](https://github.com/hypercerts-org/demo-apps) - -## Issue Tracking - -If you encounter any issues or have questions while working with hypercerts, the issue tracking is the place to go. Here, you can find a list of known issues, report new issues, and participate in discussions with the hypercerts community. - -[Issues on GitHub](https://github.com/hypercerts-org/hypercerts/issues) - -## Quickstarts - -The quickstarts section provides step-by-step guides to help you quickly get up and running with Hypercerts. Whether you are a beginner or an experienced developer, these guides will walk you through the process of setting up your development environment and creating your first Hypercerts application. - -[Quickstart Javascript](./quickstart-javascript.md) -[Quickstart Solidity](./quickstart-solidity.md) - -We hope you find this developer documentation helpful in your journey with Hypercerts. Happy coding! diff --git a/docs/docs/developer/minting.md b/docs/docs/developer/minting.md deleted file mode 100644 index f826759b..00000000 --- a/docs/docs/developer/minting.md +++ /dev/null @@ -1,57 +0,0 @@ -# Minting - -## Token design - -Hypercerts are semi-fungible tokens. -Thus, each hypercert is represented on-chain by a group of fraction tokens, -each representing a fraction of ownership over the hypercert. -If you want to split your fraction token, or merge multiple tokens into one, -check out the section on [splitting and merging](./split-merge.md). - -## Minting your first hypercert - -To mint a hypercert you need to provide the `metadata`, total amount of `units` and the preferred `TransferRestrictions`. -The resulting hypercert will be wholly owned by the creator. - -```js -import { TransferRestrictions, formatHypercertData } from "@hypercerts-org/sdk" - -const { metadata } = formatHypercertData(...); -const totalUnits = 10000n; - -const txHash = await hypercerts.mintClaim({ - metadata, - totalUnits, - transferRestrictions: TransferRestrictions.FromCreatorOnly, -}); -``` - -> **Note** If you did not initialize your HypercertsClient with an `walletClient`, the client will run in [read-only mode](#read-only-mode) and this will fail. - -Let's see what happens under the hood: - -First, `mintClaim` checks that the client is not `read only` and that the operator is a `Signer`. If not, it throws an `InvalidOrMissingError`. - -Next, the function validates the provided metadata using the `validateMetaData` function. If the metadata is invalid, it throws a `MalformedDataError`. The function then stores the metadata on `IPFS` using the `storeMetadata` method and returns the `CID` for the metadata. - -Finally, we call the mintClaim function on the contract with the signer `address`, total `units`, `CID`, and `transfer restriction` as parameters. If `overrides` are provided, the function uses them to send the transaction. Otherwise, it sends the transaction without overrides. - -## Transfer restrictions - -When minting a Hypercert, you must pass in a `TransferRestriction` policy. For now there are only 3 implemented policies: - -```js -enum TransferRestrictions { - // Unrestricted - AllowAll, - // All transfers disabled after minting - DisallowAll, - // Only the original creator can transfer - FromCreatorOnly -} -``` - -## Reference - -See the [code](https://github.com/hypercerts-org/hypercerts/tree/main/sdk/src/client.ts) -for more details on how we implement minting. diff --git a/docs/docs/developer/querying.md b/docs/docs/developer/querying.md deleted file mode 100644 index 80439bfe..00000000 --- a/docs/docs/developer/querying.md +++ /dev/null @@ -1,273 +0,0 @@ -# Querying - -## Overview - -The `HypercertClient` provides a high-level interface for interacting with the Hypercert ecosystem. The HypercertClient -has three getter methods: `storage`, `indexer`, and `contract`. These methods return instances of the HypercertsStorage, -HypercertIndexer, and HypercertMinter classes, respectively. - -```js -const { - client: { storage }, -} = new HypercertClient({ chain: { id: 11155111 } }); -``` - -The `storage` is a utility class that provides methods for storing and retrieving Hypercert metadata off-chain on IPFS. It is used by the HypercertClient to store metadata when creating new Hypercerts. - -```js -const { - client: { indexer }, -} = new HypercertClient({ chain: { id: 11155111 } }); -``` - -The `indexer` is a utility class that provides methods for indexing and searching Hypercerts based on various criteria. -It is used by the HypercertClient to retrieve event-based data via the subgraph. - -```js -const { - client: { contract }, -} = new HypercertClient({ chain: { id: 11155111 } }); -``` - -Finally we have a `contract` that provides methods for interacting with the HypercertMinter smart contract. It is used -by the HypercertClient to create new Hypercerts and retrieve specific on-chain information. - -By providing instances of these classes through the `storage`, `indexer`, and `contract` getters, the HypercertClient allows developers to easily interact with the various components of the Hypercert system directly. -For example, a developer could use the storage instance to store metadata for a new Hypercert, the indexer instance to search for existing Hypercerts based on various criteria, and the contract instance to create new Hypercerts and retrieve existing Hypercerts from the contract. - -## Indexer - -For indexing purposes, we rely on the [Graph](https://thegraph.com/docs/en/) to index Hypercert events. To make the subgraph easily accessible with typed methods and object we provide a client that wraps [urql](https://formidable.com/open-source/urql/) into an opiniated set of queries. - -### Live graph playground - -To inspect the subgraph and explore queries, have a look at the Graph playground for Goerli testnet and Optimism mainnet: - -- [Goerli dashboard](https://thegraph.com/hosted-service/subgraph/hypercerts-admin/hypercerts-testnet) -- [Optimism dashboard](https://thegraph.com/hosted-service/subgraph/hypercerts-admin/hypercerts-optimism-mainnet) - -### Graph client - -Since the client is fully typed, it's easy to explore the functionalities using code completion in IDEs. - -Here's one example from our frontend where we let [react-query](https://www.npmjs.com/package/%2540tanstack/react-query) frequently update the call to the graph: - -```js -import { useHypercertClient } from "./hypercerts-client"; -import { useQuery } from "@tanstack/react-query"; - -export const useFractionsByOwner = (owner: `0x${string}`) => { - const { - client: { indexer }, - } = useHypercertClient(); - - return useQuery( - ["hypercerts", "fractions", "owner", owner], - () => indexer.fractionsByOwner(owner), - { enabled: !!owner, refetchInterval: 5000 }, - ); -}; -``` - -### Queries: Claims - -These tables show the input parameters and output fields for each of the GraphQL queries in [claims.graphql](https://github.com/hypercerts-org/hypercerts/blob/main/sdk/src/indexer/queries/claims.graphql). -A claim represents 1 Hypercert and all of the common data across all claim/fraction tokens. - -#### `ClaimsByOwner` - -The `ClaimsByOwner` query retrieves an array of claims that belong to a specific owner. - -##### Input - -The query takes the following input parameters: - -| Parameter | Type | Description | Default Value | -| ---------------- | ---------------- | -------------------------------------------------- | ------------- | -| `owner` | `Bytes` | The address of the owner whose claims to retrieve. | "" | -| `orderDirection` | `OrderDirection` | The direction to order the claims. | `asc` | -| `first` | `Int` | The number of claims to retrieve. | `100` | -| `skip` | `Int` | The number of claims to skip. | `0` | - -##### Output - -The query returns an array of claim objects that match the input parameters. Each claim object has the following fields: - -| Field | Type | Description | -| ------------ | -------- | ------------------------------ | -| `contract` | `Bytes` | The address of the contract. | -| `tokenID` | `String` | The token ID. | -| `creator` | `Bytes` | The address of the creator. | -| `id` | `ID` | The ID of the claim. | -| `owner` | `Bytes` | The address of the owner. | -| `totalUnits` | `BigInt` | The total number of units. | -| `uri` | `String` | The URI of the claim metadata. | - -#### `RecentClaims` - -The RecentClaims query retrieves an array of the most recent claims on the Hypercert platform. - -##### Input - -The query takes the following input parameters: - -| Parameter | Type | Description | Default Value | -| ---------------- | ---------------- | ---------------------------------- | ------------- | -| `orderDirection` | `OrderDirection` | The direction to order the claims. | `asc` | -| `first` | `Int` | The number of claims to retrieve. | `100` | -| `skip` | `Int` | The number of claims to skip. | `0` | - -##### Output - -The query returns an array of claim objects that match the input parameters. Each claim object has the following fields: - -| Field | Type | Description | -| ------------ | -------- | ------------------------------ | -| `contract` | `Bytes` | The address of the contract. | -| `tokenID` | `String` | The token ID. | -| `creator` | `Bytes` | The address of the creator. | -| `id` | `ID` | The ID of the claim. | -| `owner` | `Bytes` | The address of the owner. | -| `totalUnits` | `BigInt` | The total number of units. | -| `uri` | `String` | The URI of the claim metadata. | - -#### `ClaimByID` - -The ClaimById query retrieves a single claim by its ID on the Hypercert platform. - -##### Input - -The query takes the following input parameters: - -| Parameter | Type | Description | -| --------- | ----- | -------------------------------- | -| `id` | `ID!` | The ID of the claim to retrieve. | - -##### Output - -The query returns a claim object that matches the input parameter. The claim object has the following fields: - -| Field | Type | Description | -| ------------ | -------- | ------------------------------ | -| `contract` | `Bytes` | The address of the contract. | -| `tokenID` | `String` | The token ID. | -| `creator` | `Bytes` | The address of the creator. | -| `id` | `ID` | The ID of the claim. | -| `owner` | `Bytes` | The address of the owner. | -| `totalUnits` | `BigInt` | The total number of units. | -| `uri` | `String` | The URI of the claim metadata. | - -### Queries: Fractions - -These tables show the input parameters and output fields for each of the GraphQL queries in [fractions.graphql](https://github.com/hypercerts-org/hypercerts/blob/main/sdk/src/indexer/queries/fractions.graphql). -A claim token represents a fraction of ownership of a Hypercert. - -#### `ClaimTokensByOwner` - -The `ClaimTokensByOwner` query retrieves an array of claim tokens that belong to a specific owner on the Hypercert platform. - -##### Input - -The query takes the following input parameters: - -| Parameter | Type | Description | Default Value | -| ---------------- | ---------------- | -------------------------------------------------------------------- | ------------- | -| `owner` | `Bytes` | The address of the owner whose claim tokens to retrieve. | "" | -| `orderDirection` | `OrderDirection` | The direction to order the claim tokens. The default value is `asc`. | `asc` | -| `first` | `Int` | The number of claim tokens to retrieve. The default value is `100`. | `100` | -| `skip` | `Int` | The number of claim tokens to skip. The default value is `0`. | `0` | - -##### Output - -The query returns an array of claim token objects that match the input parameters. Each claim token object has the following fields: - -| Field | Type | Description | -| --------- | -------- | ------------------------------------------ | -| `id` | `ID` | The ID of the claim token. | -| `owner` | `Bytes` | The address of the owner. | -| `tokenID` | `String` | The token ID. | -| `units` | `BigInt` | The number of units. | -| `claim` | `Claim` | The claim associated with the claim token. | - -The Claim object has the following fields: - -| Field | Type | Description | -| ------------ | -------- | ------------------------------------ | -| `id` | `ID` | The ID of the claim. | -| `creation` | `Int` | The timestamp of the claim creation. | -| `uri` | `String` | The URI of the claim metadata. | -| `totalUnits` | `BigInt` | The total number of units. | - -#### `ClaimTokensByClaim` - -The `ClaimTokensByClaim` query retrieves an array of claim tokens that belong to a specific claim on the Hypercert platform. - -##### Input - -The query takes the following input parameters: - -| Parameter | Type | Description | Default Value | -| ---------------- | ---------------- | -------------------------------------------------------------------- | ------------- | -| `claimId` | `String!` | The ID of the claim whose claim tokens to retrieve. | None | -| `orderDirection` | `OrderDirection` | The direction to order the claim tokens. The default value is `asc`. | `asc` | -| `first` | `Int` | The number of claim tokens to retrieve. The default value is `100`. | `100` | -| `skip` | `Int` | The number of claim tokens to skip. The default value is `0`. | `0` | - -##### Output - -The query returns an array of claim token objects that match the input parameters. Each claim token object has the following fields: - -| Field | Type | Description | -| --------- | -------- | -------------------------- | -| `id` | `ID` | The ID of the claim token. | -| `owner` | `Bytes` | The address of the owner. | -| `tokenID` | `String` | The token ID. | -| `units` | `BigInt` | The number of units. | - -#### `ClaimTokenById` Query - -The `ClaimTokenById` query retrieves a single claim token by its ID on the Hypercert platform. - -##### Input - -The query takes the following input parameters: - -| Parameter | Type | Description | -| --------- | ----- | -------------------------------------- | -| `id` | `ID!` | The ID of the claim token to retrieve. | - -##### Output - -The query returns a claim token object that matches the input parameter. The claim token object has the following fields: - -| Field | Type | Description | -| --------- | -------- | ------------------------------------------ | -| `id` | `ID` | The ID of the claim token. | -| `owner` | `Bytes` | The address of the owner. | -| `tokenID` | `String` | The token ID. | -| `units` | `BigInt` | The number of units. | -| `claim` | `Claim` | The claim associated with the claim token. | - -The Claim object has the following fields: - -| Field | Type | Description | -| ------------ | -------- | ------------------------------------ | -| `id` | `ID` | The ID of the claim. | -| `creation` | `Int` | The timestamp of the claim creation. | -| `uri` | `String` | The URI of the claim metadata. | -| `totalUnits` | `BigInt` | The total number of units. | - -## Storage - -### Hypercert Metadata - -Currently, all metadata is stored off-chain in IPFS. Use the `storage` client to retrieve the metadata - -```js -const claimId = "0x822f17a9a5eecfd...85254363386255337"; -const { indexer, storage } = hypercertsClient; -// Get the on-chain claim -const claimById = await indexer.claimById(claimId); -// Get the off-chain metadata -const metadata = await storage.getMetadata(claimById.claim.uri); -``` diff --git a/docs/docs/developer/quickstart-javascript.md b/docs/docs/developer/quickstart-javascript.md deleted file mode 100644 index ba133de6..00000000 --- a/docs/docs/developer/quickstart-javascript.md +++ /dev/null @@ -1,93 +0,0 @@ -# Getting started with JavaScript - -The Hypercerts SDK makes it easy to integrate Hypercerts into your application or backend with JavaScript/TypeScript. - -## Installation - -Install the SDK using npm or yarn: - -```bash -npm install @hypercerts-org/sdk -# OR yarn add @hypercerts-org/sdk -``` - -## Initialize - -Import the SDK into your project and create a new instance of `HypercertClient` with your configuration options: - -```js -import { HypercertClient } from "@hypercerts-org/sdk"; -import { createWalletClient, custom } from "viem"; -import { mainnet } from "viem/chains"; - -const walletClient = createWalletClient({ - chain: mainnet, - transport: custom(window.ethereum), -}); - -// NOTE: you should replace this with your own JSON-RPC provider to the network -// This should have signing abilities and match the `chainId` passed into HypercertClient - -const client = new HypercertClient({ - chainId: 11155111, // Sepolia testnet - walletClient, -}); -``` - -Hypercerts is a multi-chain protocol. -See [here](./supported-networks.md) for a list of currently supported networks. - -> **Note** If there's no `walletClient` provided, the client will run in [read-only mode](#read-only-mode). - -## Make a Hypercert - -Use the client object to interact with the Hypercert network. For example, you can use the `client.mintClaim` method to create a new claim: - -```js -import { - formatHypercertData, - TransferRestrictions, -} from "@hypercerts-org/sdk"; - -// Validate and format your Hypercert metadata -const { data: metadata, valid, errors } = formatHypercertData({ - name, - ... -}) - -// Check on errors -if (!valid) { - return console.error(errors); -} - -// Set the total amount of units available -const totalUnits: bigint = 10000n - -// Define the transfer restriction -const transferRestrictions: TransferRestrictions = TransferRestrictions.FromCreatorOnly - -// Mint your Hypercert! -const tx = await client.mintClaim( - metadata, - totalUnits, - transferRestrictions, -); -``` - -For guidance on how to specify your metadata, see the [minting guide](../minting-guide/step-by-step.md). -This will validate the metadata, store claim metadata on IPFS, create a new hypercert on-chain, and return a transaction receipt. - -For more details, check out the [Minting Guide](./minting.md). - -## Query for Hypercerts - -You can also use the client to query the subgraph and retrieve which claims an address owns: - -```js -const claims = await client.indexer.fractionsByOwner(owner), -``` - -For more details, checkout the [Querying guide](./querying.md) -and our [Graph playground](https://thegraph.com/hosted-service/subgraph/hypercerts-admin/hypercerts-optimism-mainnet). - -That's it! With these simple steps, you can start using the Hypercert SDK in your own projects. diff --git a/docs/docs/developer/quickstart-solidity.md b/docs/docs/developer/quickstart-solidity.md deleted file mode 100644 index 409a1e9d..00000000 --- a/docs/docs/developer/quickstart-solidity.md +++ /dev/null @@ -1,41 +0,0 @@ -# Getting started with Solidity - -> :construction: **NOTE**: This is a work-in-progress and may not be fully functioning yet. - -If you need the Solidity contracts or interfaces exported from the SDK, -please reach out by [filing an issue](https://github.com/hypercerts-org/hypercerts/issues). - -## Hypercerts deployments - -Hypercerts is a multi-chain protocol and we want to support any network that wants to make positive impact. -We plan to support at most 1 canonical contract deployment per network. -For a complete list of deployments and their contract addresses, see [Supported Networks](./supported-networks.md). - -## Installing the Hypercert contracts - -```bash -npm install @hypercerts-org/contracts -# or yarn add @hypercerts-org/contracts -``` - -## Using the Solidity interface - -If you want to call the Hypercerts contract on your network directly from Solidity, -we export the interface/ABI for you to use from your contract. - -```js -import { IHypercertToken } from "@hypercerts-org/contracts/IHypercertMinter.sol"; - -contract MyContract { - IHypercertToken hypercerts; - - function initialize(address _addr) public virtual initializer { - hypercerts = IHypercertToken(_addr); - } - - function uri(uint256 tokenID) public view returns (string memory _uri) { - _uri = hypercerts.uri(tokenID); - } -} - -``` diff --git a/docs/docs/developer/split-merge.md b/docs/docs/developer/split-merge.md deleted file mode 100644 index 1335884f..00000000 --- a/docs/docs/developer/split-merge.md +++ /dev/null @@ -1,15 +0,0 @@ -# Split and Merge - -> :construction: **NOTE**: This is a work-in-progress and may not be fully functioning yet. - -## By Token Value - -### Split / merge token values - -```js -const { tokenIds } = await hypercerts.splitFractionUnits({ - fractionId, - units: [10n, 12n, 15n], -}); -const { tokenId } = await hypercerts.mergeFractionUnits({ fractionIds }); -``` diff --git a/docs/docs/developer/supported-networks.md b/docs/docs/developer/supported-networks.md deleted file mode 100644 index f12ece5f..00000000 --- a/docs/docs/developer/supported-networks.md +++ /dev/null @@ -1,14 +0,0 @@ -# Supported networks - -Hypercerts is developed in public and released under [dual MIT and Apache license](https://github.com/hypercerts-org/hypercerts/blob/main/LICENSE). The Hypercert Foundation currently rolled out on a select set of networks: `Sepolia` for testing, `Optimism` and `Celo` as the production deployment. - -We want to support every network that wants to support positive impact! -If you want to see Hypercerts deployed on another network, please reach out by [filing an issue](https://github.com/hypercerts-org/hypercerts/issues). - -## Overview - -| Network | HypercertMinter (UUPS Proxy) | Safe | -| -------- | -------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------- | -| Sepolia | [0xa16DFb32Eb140a6f3F2AC68f41dAd8c7e83C4941](https://goerli.etherscan.io/address/0xa16DFb32Eb140a6f3F2AC68f41dAd8c7e83C4941) | TBD | -| Celo | [0x16bA53B74c234C870c61EFC04cD418B8f2865959](https://celoscan.io/address/0x16bA53B74c234C870c61EFC04cD418B8f2865959) | TBD | -| Optimism | [0x822F17A9A5EeCFd66dBAFf7946a8071C265D1d07](https://optimistic.etherscan.io/address/0x822F17A9A5EeCFd66dBAFf7946a8071C265D1d07) | [0x560adA72a80b4707e493cA8c3B7B7528930E7Be5](https://optimistic.etherscan.io/address/0x560adA72a80b4707e493cA8c3B7B7528930E7Be5) | diff --git a/docs/docs/devops/deploy-proxy.md b/docs/docs/devops/deploy-proxy.md deleted file mode 100644 index 4ed58fc0..00000000 --- a/docs/docs/devops/deploy-proxy.md +++ /dev/null @@ -1,138 +0,0 @@ -# Deploy a new proxy contract - -This should be done only on rare occasions. For example, when: - -- We want to deploy to a new network -- We have updated the contract in a way that is _NOT_ backwards-compatible. - - For most upgrades, please use UUPS [upgrades](./upgrade.md). - -## Smart Contracts - -### Setup the `contracts/` environment - -Navigate to `contracts/`. Configure your `.env` file by following the instructions in the -[README](https://github.com/hypercerts-org/hypercerts/tree/main/contracts#setup). - -### Build and deploy the smart contracts - ---- - -**NOTE** - -While we use foundry for developement and testing, we use hardhat for deployment. This is because hardhat is more flexible and allows us to easily integrate with OpenZeppelin tools for upgradeable contracts. - ---- - -If you are deploying on a new network, configure `contracts/hardhat.config.ts` to support the new network under the `networks` key. - -```javascript - "sepolia": getChainConfig("sepolia"), -``` - -Build the contracts and deploy. Specify the network to match the key used in `hardhat.config.ts`. - -```sh -# Run in contracts/ -yarn build:hardhat -yarn hardhat deploy --network NETWORK -``` - -This will output the new proxy address. Update the root `README.md` with this new address. - -Now transfer ownership over the proxy contract to the multisig: - -```sh -yarn hardhat transfer-owner --network NETWORK --proxy PROXY_CONTRACT_ADDRESS --owner MULTISIG_ADDRESS -``` - -## Subgraph - -### Setup the `graph/` environment - -Navigate to `graph/`. Follow the instructions in the -[README](https://github.com/hypercerts-org/hypercerts/tree/main/graph#setup) -to get set up. - -### Deploy the subgraph - -Update `graph/networks.json` with the new proxy address. To speed up indexing, you set the `startBlock` to the block containing the contract creation. We can add multiple networks that are monitored by the same subgraph. For more details, see the [Graph documentation](https://thegraph.com/docs/en/deploying/deploying-a-subgraph-to-hosted/#deploying-the-subgraph-to-multiple-ethereum-networks). - -To separate test from production, we use a different subgraph for each network. This means that we need to deploy a new subgraph for each network; but we group the deployments in the scripts. - -- Create a new deploy script for the network in the `package.json` of the `graph/` directory. For example, if you are deploying to the `sepolia` network, you would add the following script: - -````json - "deploy:sepolia": "graph deploy --node https://api.thegraph.com/deploy/ --network sepolia hypercerts-admin/hypercerts-sepolia" - ``` - -* Add the deploy script to `deploy:test` or `deploy:prod` depending on whether you are deploying to a test or production network. - -* Now deploy the subgraph - -```sh -# Run in graph/ -yarn build -yarn deploy:test -```` - -## OpenZeppelin Defender - -### Create a new Supabase table - -Log into the [Supabase dashboard](https://app.supabase.com/). -We store all data in a single project, but use different tables for each network. -The table name should be suffixed by the network (e.g. `allowlistCache-goerli`). -If you are deploying to a new network, create a new table. You can copy the table schema and RLS policy from another pre-existing table. - -If you are deploying a new proxy contract to a network for which you already have another deployment, you'll have to make a judgement call as to whether you can reuse the existing table, whether you need to clear the existing table, or create another table. - -Note: We want to merge all the tables in this [issue](https://github.com/hypercerts-org/hypercerts/issues/477). - -### Update the OpenZeppelin Defender scripts - -Modify the Defender scripts to support the new network in `defender/src/networks.ts`. - -If the ABI of the contract has changed, make sure you also update `defender/src/HypercertMinterABI.ts`. - -Note: The entry point for deployment is in `defender/src/setup.ts`. - -### Setup the `defender/` environment - -Navigate to `defender/`. Follow the instructions in the -[README](https://github.com/hypercerts-org/hypercerts/tree/main/defender#setup) -to get set up. - -### Deploy defender scripts - -Deploy to OpenZeppelin Defender via - -```sh -# Run in defender/ -yarn deploy -``` - -## Hypercerts SDK - -TODO: Flesh this out - -Run the build in `contracts/`. - -(Soon to be deprecated) Publish `contracts/` to npm - -Configure the SDK to support the new network via the graphclient. - -Publish SDK to npm - -## Deploy the Dapp frontend - -Each frontend build is configured to run on a different network (e.g. `https://testnet.hypercerts.org`). You can use any CDN to serve the site (e.g. Netlify, Vercel, GitHub Pages, Cloudflare Pages, Fleek, Firebase Hosting). - -1. Configure your build environment with the environment variables specified in `frontend/.env.local.example`. - -2. Configure your builds to the following settings: - -- Build command: `yarn build:site` -- Build output directory: `/build` -- Root directory: `/` - -3. Configure the domain that you want for your build. diff --git a/docs/docs/devops/errors.md b/docs/docs/devops/errors.md deleted file mode 100644 index 05dc5b0c..00000000 --- a/docs/docs/devops/errors.md +++ /dev/null @@ -1,45 +0,0 @@ -# Errors - -## Deploying - -### Artifact for contract "HypercertMinter" not found - -#### Error message - -`Error HH700: Artifact for contract "HypercertMinter" not found.` - -#### Cause - -Attempting to deploy a contract with `npx hardhat deploy` before the contract has been compiled by hardhat. Contracts compiled by forge are currently not visible to hardhat (this could be a configuration problem). - -### insufficient funds for intrinsic transaction cost - -#### Error message - -`Error: insufficient funds for intrinsic transaction cost` - -#### Cause - -The environment variable `MNEMONIC` is not configured correctly. - -Alternatively, the wallet may not have enough funds for the selected network - -Causing pause twice - -Error: cannot estimate gas; transaction may fail or may require manual gas limit - -reason: 'execution reverted: Pausable: paused', - -#### Etherscan API - -Note: It can take between 5-10 minutes before a newly created etherscan API key becomes valid for queries to goerli. - -When using an etherscan API key that was too recently created, hardhat tasks using etherscan to verify transactions will exit with an error message: - -`Etherscan returned with message: NOTOK, reason: Invalid API Key` - -Despite this error the transaction may have succeeded, the hardhat task just can't confirm it. - -It is unknown if this is a problem for queries to mainnet as well. - -Metamask makes it very difficult to have multiple wallets. diff --git a/docs/docs/devops/index.md b/docs/docs/devops/index.md deleted file mode 100644 index 9b208595..00000000 --- a/docs/docs/devops/index.md +++ /dev/null @@ -1,18 +0,0 @@ -# DevOps - -We use this playbook to encapsulate our practices and current setup. - -## Setup dev environment - -- [Setup guide](./setup.md) -- [Plasmic setup](./plasmic.md) - -## Tasks - -- [Deploy new proxy contract](./deploy-proxy.md) -- [Upgrade contract](./upgrade.md) -- [Pause contract](./pause.md) - -## FAQ - -- [Common errors](./errors.md) diff --git a/docs/docs/devops/pause.md b/docs/docs/devops/pause.md deleted file mode 100644 index 2668f51e..00000000 --- a/docs/docs/devops/pause.md +++ /dev/null @@ -1,29 +0,0 @@ -# Pause / Unpause - -## Pause - -### Contract owned by an address - -Make sure you have set up your wallets and config from the [setup guide](./setup.md). - -To pause the contract, run the following, where `CONTRACT_ADDRESS` is the proxy address of the HypercertMinter, and `NETWORK` is one of the networks from `hardhat.config.ts`: - -```sh -yarn hardhat pause --network NETWORK --address CONTRACT_ADDRESS -``` - -### Contract owned by a multi-sig - -If we transferred ownership to a multisig, we can use -[OpenZeppelin Defender Admin](https://defender.openzeppelin.com/#/admin) -to propose a pause to be approved by the multisig. - -## Unpause - -Make sure you have set up your wallets and config from the [setup guide](./setup.md). - -To pause the contract, run the following, where `CONTRACT_ADDRESS` is the proxy address of the HypercertMinter, and `NETWORK` is one of the networks from `hardhat.config.ts`: - -```sh -yarn hardhat unpause --network NETWORK --address CONTRACT_ADDRESS -``` diff --git a/docs/docs/devops/plasmic.md b/docs/docs/devops/plasmic.md deleted file mode 100644 index 10e52f5b..00000000 --- a/docs/docs/devops/plasmic.md +++ /dev/null @@ -1,76 +0,0 @@ -# Plasmic setup - -## HypercertImage - -### Props - -hideImpact - -``` -$ctx.currentForm.impactTimeEnd === "indefinite" && ($ctx.currentForm.impactScopes.length === 0 || ($ctx.currentForm.impactScopes.length === 1 && $ctx.currentForm.impactScopes[0] === "all")) -``` - -color - -``` -$ctx.currentForm.backgroundColor -``` - -vectorart - -``` -$ctx.currentForm.backgroundVectorArt -``` - -### Slots - -logoImage Image URL - -``` -$ctx.currentForm.logoUrl -``` - -title Content - -``` -$ctx.currentForm.name -``` - -workPeriod Content - -``` -`${$ctx.currentForm.workTimeStart.format ? $ctx.currentForm.workTimeStart.format("YYYY-MM-DD") : $ctx.currentForm.workTimeStart} → ${$ctx.currentForm.workTimeEnd.format ? $ctx.currentForm.workTimeEnd.format("YYYY-MM-DD") : $ctx.currentForm.workTimeEnd}` -``` - -bannerImage Image URL - -``` -$ctx.currentForm.bannerUrl -``` - -impactPeriod Content - -``` -`${$ctx.currentForm.workTimeStart.format ? $ctx.currentForm.workTimeStart.format("YYYY-MM-DD") : $ctx.currentForm.workTimeStart} → ${$ctx.currentForm.impactTimeEnd.format ? $ctx.currentForm.impactTimeEnd.format("YYYY-MM-DD") : $ctx.currentForm.impactTimeEnd}` -``` - -#### workScopes: repeated ScopeChip - -Collection - -``` -$ctx.currentForm.workScopes.split(/[,\n]/).map(i => i.trim()).filter(i => !!i) -``` - -Element name: `currentWorkScope` -Index name: `currentIndex` -Color variant: `$ctx.currentForm.backgroundColor` -Content: `currentWorkScope` - -#### impactScopes: repeated ScopeChip - -Collection: `$ctx.currentForm.impactScopes` -Element name: `currentImpactScope` -Index name: `currentIndex` -Color variant: `$ctx.currentForm.backgroundColor` -Content: `currentImpactScope` diff --git a/docs/docs/devops/setup.md b/docs/docs/devops/setup.md deleted file mode 100644 index afb95296..00000000 --- a/docs/docs/devops/setup.md +++ /dev/null @@ -1,41 +0,0 @@ -# Setup - -## Pre-requisites - -1. Install [NodeJS](https://nodejs.org/en/) and [git](https://git-scm.com/) -2. Install [yarn](https://classic.yarnpkg.com/) - -```sh -npm install --global yarn -``` - -3. Clone the repository: - -``` -git clone git@github.com:hypercerts-org/hypercerts.git -cd hypercerts -``` - -4. Install dependancies: - -To install dependencies across all projects in the monorepo workspace: - -```sh -yarn install -``` - -## Setup your wallets - -We need 2 wallets: a multi-sig for administering the contracts, and a hot wallet for setting everything up. - -1. We use a [Gnosis Safe](https://app.safe.global/) multisig for managing and administering the contracts. Set one up with your desired confirmation threshold (e.g. 2 of 3). This wallet will not require any balance. -2. Separately, set up a wallet that we'll use in our developer scripts. - -- If you don't have one, you can goto `contracts/` and run `yarn hardhat generate-address`. -- Make sure there is enough balance in this account to deploy the contract and transfer ownership to the multisig - - [Goerli Faucet](https://goerlifaucet.com/) - - [Optimism Bridge](https://app.optimism.io/bridge/deposit) - -## Next Steps - -Depending on what you want to do (e.g. in `./sdk/` or `./frontend/`), there will be further setup instructions in the respective `README.md` file. diff --git a/docs/docs/devops/upgrade.md b/docs/docs/devops/upgrade.md deleted file mode 100644 index 820255e7..00000000 --- a/docs/docs/devops/upgrade.md +++ /dev/null @@ -1,35 +0,0 @@ -# Upgrading the contract - -## Validate upgrade - -Validate contract upgradeability against deployment. - -For example, for the `goerli` deployment: - -```sh -yarn hardhat validate-upgrade --network goerli --proxy PROXY_CONTRACT_ADDRESS -``` - -## Propose Upgrade - -Propose an upgrade via OpenZeppelin Defender. For more information, see this -[guide](https://docs.openzeppelin.com/defender/guide-upgrades) - -For example, for the `goerli` deployment: - -```sh -yarn build:hardhat -yarn hardhat propose-upgrade --network goerli --proxy PROXY_CONTRACT_ADDRESS --multisig OWNER_MULTISIG_ADDRESS -``` - -This will output an OpenZeppelin URL that multi-sig members can use to approve/reject the upgrade. - -## Publish to npm - -After you update the contracts, deploy the `contracts/` package to npm. - -TODO - -Update the dependencies in `frontend/package.json` and `sdk/package.json`. - -If the ABI of the contract has changed, make sure you also update `defender/src/HypercertMinterABI.ts`. diff --git a/docs/docs/faq.md b/docs/docs/faq.md deleted file mode 100644 index b26970a2..00000000 --- a/docs/docs/faq.md +++ /dev/null @@ -1,138 +0,0 @@ ---- -title: Frequently Asked Questions -id: faq ---- - -# FAQs - -### How do I create a hypercert? - -We've created a step-by-step guide in the documents, which you can find [here](minting-guide/minting-guide-start). - -### Who gets to claim my hypercert? - -There are currently two types of users who are eligible to claim your hypercert. - -1. You as the creator of the hypercert are eligible to claim your hypercert. For projects with an allow list, you are eligible to claim 50% of the total tokens. For projects with no allow list, you will receive 100% of the tokens automatically and can do whatever you like with them. - -2. Anyone on the hypercert's allow list will be eligible to claim your hypercert. The allow list is stored and the time of minting and allocates fractions of the hypercert to specific wallet addresses. These wallet addresses are then allowed to claim these fractions through a separate contract interaction. Creators often use allow lists be used to allocate fractions to previous funders and contributors. - -### How do I claim a hypercert? Can I claim all of the ones I’m eligible for at once? - -After you connect your wallet, you will see a dashboard of hypercerts that you can claim. You can either claim them individually or in a batch transaction. Note that if you perform the batch transaction you will automatically claim _all_ hypercerts you are allow-listed for. (You still pay a gas fee for each claim, however.) If you don't want to claim _all_ at once, then you should claim them one-by-one. - -### What token standard do hypercerts utilize? - -The interface supports both ERC-1155s and 721s. Our current implementation makes use of [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) (a semi-fungible token). - -### What are the required fields to generate a hypercert? - -There are six required fields: - -1. Set of contributors: An ordered list of all contributors, who claim to do or have done the work described by this hypercert. -2. Scope of work: A conjunction of potentially-negated work scope tags, where an empty string means “all”. -3. Time of work: A date range, from the start to the end of the work being claimed by this hypercert. -4. Scope of impact: A conjunction of potentially-negated impact scope tags, where an empty string means “all”. -5. Time of impact: Date ranges from the start to the end of the impact. -6. Rights of the owners: An unordered list of usage rights tags, which define the rights of the owners of this hypercert over the work being claimed by this hypercert. - -Hypercerts also need a name and description. - -### What should I put for my hypercert's work scope? - -For most projects, it's probably best just to use a single tag that is a short form of your project's name. Given that your project may create numerous hypercerts over time, having a work scope that represents the name of your project will make your claims in the "impact hyperspace" more continuous. - -If you choose to use more than one tag, remember that tags are [logically conjunctive](https://en.wikipedia.org/wiki/Logical_conjunction), e.g. `Planting trees` ∧ `Germany` means that the hypercert includes the planting of trees only in Germany, but not planting trees anywhere else or any other work in Germany that wasn't planting trees. - -### Are hypercerts the same as impact evaluations? - -No. A hypercert is a claim over a discrete piece of work and the impact that may result from that work. It has no opinion about the legitimacy or quality of the claim. - -An impact evaluation is an opinionated assessment about the legitimacy or quality of a claim. - -For example, a hypercert might represent "Planting trees in the Amazon in 2022". An impact evaluation might point to that hypercert and assert the percent of trees that survived, the amount of CO2 removed by the trees, or the income change among people living around the project. - -Over time, the expectation is that hypercerts that attract multiple, high quality, credibly neutral impact evaluations will be more relevant than ones that do not. - -### What can I do with my hypercert? - -The `rights` dimension specific what an owner can do with their hypercert. Currently, the only `right` that owners have is "Public Display". Over time, we hope the protocol can support various `rights` including transfers, intellectual property, tax-deductibility, carbon offsets, ESG reporting, and more. - -### How is a hypercert different than a POAP or Impact NFT? - -Hypercerts have some things in common with certain POAPs or Impact NFTs, but also a number of crucial differences. - -First, all POAPs and most Impact NFTs are implemented as non-fungible tokens (ERC-721s). Hypercerts are currently being implemented as semi-fungible tokens (ERC-1155s), meaning it is possible to own more than one unit or fraction of a given hypercert. This makes it easy and intuitive to display the share of hypercerts that a given owner has. - -Second, hypercerts have specific metadata requirements and interpretation logic. These include a standard schema for how the six required hypercert dimensions are defined and captured (i.e., work scopes, impact scopes, timeframes, contributors, etc) as well as logic for how to interpret different inputs (e.g., how to include or exclude certain work scopes, create an indefinite time period, etc). POAPs have a completely different schema. Although there is no standard schema for Impact NFTs, an Impact NFT project could choose to adopt the hypercert standard and token interface and thereby achieve compatibility. - -Third, the hypercerts token interface is intended to support several functions that are not possible out of the box with other token standards, chiefly, atomic split and merge capabilities. We also expect other protocols to work with hypercerts for the purposes of prospective and retrospective funding, contributor verification, and impact evaluation. - -For certain use cases, POAPs may be better suited for projects as hypercerts are focused on the funding aspect of impactful work. - -### Where can I purchase a hypercert? - -Currently, it is only possible to purchase a hypercert from a creator or project. This can be facilitated directly by the project or via a third-party marketplace like OpenSea. Currently, hypercerts cannot be resold on secondary markets. - -### What chain(s) is hypercerts running on? - -The hypercerts smart contracts have been deployed on Optimism and Goerli Testnet. We plan to support various EVM chains in the near future. - -### How do I bridge to Optimism? - -There are various bridging services including the official [Optimism Bridge](https://app.optimism.io/bridge/deposit). Note that bridging assets from Ethereum to Optimism will incur a gas fee. - -### How much gas will it cost to create or claim a hypercert? - -In our simulations, the gas fee for minting a hypercert on Ethereum Mainnet ranged from 2,707,282 to 7,515,075 gwei (0.0027 to 0.0075 ETH). Minting costs are significantly cheaper on Optimism (i.e., below 0.0005 ETH or less than $1). Claiming a hypercert should be below 0.0001 ETH or less than $0.10 on Optimism. - -### How do I create a hypercert from a multisig? - -If you are creating a hypercert on Optimism, then you will need an Optimism-based multisig. (Unfortunately, Safe wallets created on Ethereum won't work on Optimism.) - -### Have the smart contracts been audited? - -Yes. The auditor's security report is available [here](https://github.com/pashov/audits/blob/master/solo/Hypercerts-security-review.md). - -### How is the allow list generated? - -For Gitcoin projects, an allow list is generated from a snapshot of all of the on-chain funding received by the project. - -The queries used to generate the allow lists can be viewed here: - -- ETH Infra: https://dune.com/queries/1934656 -- Climate: https://dune.com/queries/1934689 -- OSS: https://dune.com/queries/1934969 - -Once the snapshot is taken, the formula assigns one fraction (rounded down) for every $1 (using the exchange rate at the time of the transaction) that a donor contributed to the project. It also provides a small buffer (of 5%) so that a transaction worth $0.999 or $0.951 remains eligible for one fraction. - -For example: - -- $5.60 donated --> 5 fractions -- $5.20 donated --> 5 fractions -- $0.96 donated --> 1 fraction -- $0.52 donated --> 0 fractions - -### Why am I not on the allow list even though I contributed to the project? - -If you contributed less than $1 DAI to a project, then you will not be eligible to claim a hypercert fraction. - -### I supported a project. Why I don't I see the hypercert in my dashboard? - -In order to your hypercert to appear as "claimable", the project needs to mint the hypercert first. If the project has not minted its hypercert yet, then you will not be able to claim it. We suggest you check back in a few days to see if the project has created the hypercert and is now claimable. - -If the project has created its hypercert, then please try the following solutions: -1. Confirm the wallet address is correct (some users have multiple wallet addresses and forget which one they donated with) -2. Check that your wallet is included in the Dune Dashboards for each Gitcoin Round - -- ETH Infra: https://dune.com/queries/1934656 -- Climate: https://dune.com/queries/1934689 -- OSS: https://dune.com/queries/1934969 - -3. Confirm you donated more than $1 DAI to the project. - -If the project has created its hypercert, and you have confirmed items 1-3, then please send us a DM over Twitter or Telegram with your wallet address and we will get back to you promptly. - -### How do I retire a hypercert? - -We don't yet have a frontend for retiring hypercerts but you can do this by interacting directly with the smart contract on Etherscan. diff --git a/docs/docs/further-resources.md b/docs/docs/further-resources.md deleted file mode 100644 index e5ff8ab1..00000000 --- a/docs/docs/further-resources.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Further Resources -id: further-resources ---- - -# Papers, Articles, Presentations - -## Writings - -* Feb 14, 2023, Whitepaper draft by [@hypercerts](http://twitter.com/hypercerts): [Hypercerts: A new primitive for impact funding systems (draft v0)](../static/pdf/hypercerts_whitepaper_v0.pdf) -* Aug 24, 2022, Blogpost by [@holkeb](https://twitter.com/holkeb): [Hypercerts: A new primitive for public goods funding](https://protocol.ai/blog/hypercert-new-primitive/) -* Jun 2022, Tech report (draft) by [@davidad](https://twitter.com/davidad): [Hypercerts; an Interoperable Datalayer for Impact-Funding Mechanisms](../static/pdf/hypercerts_Tech_Report_draft.pdf) - -## Talks - -#### Jun 24, 2022, Talk at [Funding the Commons](https://fundingthecommons.io/) by [@davidad](https://twitter.com/davidad): [Hypercerts: on-chain primitives for impact markets](https://youtu.be/2hOhOdCbBlU) - - - -#### Jun 23, 2022, Conversation between [@emiyazono](http://twitter.com/emiyazono) and [@owocki](http://twitter.com/owocki) at GreenPill Podcast: [Impact Certificates | Evan Miyazono, Head of Research at Protocol Labs | Green Pill #21](https://youtu.be/kyo5SxtSJ9U) - - - -#### Mar 4, 2022, Talk at [Funding the Commons](https://fundingthecommons.io/) by [@davidad](https://twitter.com/davidad): [Interoperable mechanisms for non-rival goods (Hypercerts)](https://youtu.be/acbBeGcevok) - - - - -## Other resources - -Overview of some previous writings on impact certificates, retrospective funding and impact markets: -* Christiano, Paul (2014) Certificates of impact, Rational Altruist, [https://rationalaltruist.com/2014/11/15/certificates-of-impact/](https://rationalaltruist.com/2014/11/15/certificates-of-impact/) -* Christiano, Paul & Katja Grace (2015) The Impact Purchase, [https://impactpurchase.org/why-certificates/](https://impactpurchase.org/why-certificates/) -* Optimism & Buterin, Vitalik (2021) Retroactive Public Goods Funding, [https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c](https://medium.com/ethereum-optimism/retroactive-public-goods-funding-33c9b7d00f0c) -* Cotton-Barratt, Owen (2021), Impact Certificates and Impact Markets, Funding the Commons November 2021, [https://youtu.be/ZiDV56o5M7Q](https://youtu.be/ZiDV56o5M7Q) -* Drescher, Denis (2022) Towards Impact Markets, [https://forum.effectivealtruism.org/posts/7kqL4G5badqjskYQs/toward-impact-markets-1](https://forum.effectivealtruism.org/posts/7kqL4G5badqjskYQs/toward-impact-markets-1) -* Ofer & Cotton-Barratt, Owen (2022) Impact markets may incentivize predictably net-negative projects, [https://forum.effectivealtruism.org/posts/74rz7b8fztCsKotL6](https://forum.effectivealtruism.org/posts/74rz7b8fztCsKotL6) diff --git a/docs/docs/implementation/glossary.md b/docs/docs/implementation/glossary.md deleted file mode 100644 index b35d4405..00000000 --- a/docs/docs/implementation/glossary.md +++ /dev/null @@ -1,139 +0,0 @@ ---- -title: Glossary -id: glossary -sidebar_position: 3 ---- - -# Glossary of Hypercerts Terms - -## Main Terms - -### Allowlist - -A list that determines how fractions of hypercerts will be allocated to new owners. The current implementation requires a project to specify an allowlist at the time of minting its hypercert. Based on allowlists, designated new owners are able to claim their fractions. - -### Claiming a fraction - -Transferring the ownership of a fraction of a hypercert to a (new) owner. Generally 'claiming' implies minting a new token that represents said fraction by the new owner. - -### Contributor - -An individual or organization that performs some or all of the work described in a hypercert. - -### Creating a hypercert - -Synonymous to minting a hypercert. - -### Fraction - -A token that represents a quantified proportion of a hypercert denominated in units. - -### Funder - -Individual, organization, or algorithm that funds work. There are generally two types: (1) **prospective** funders, who fund work _before_ it is done, and (2) **retrospective** funders, who fund work _after_ it is done. - -### Hypercert - -A token that (1) accounts for work by specified contributors that is supposed to be impactful, (2) represents the – potentially explicitly specified – impact of this work, and (3) assigns right over this work to its owners. If a hypercert is split into multiple fractions, the hypercert refers to the sum of all of its fractions. The term `hypercert` may also refer to an implementation of the hypercert interface and standard. - -### Hypercerts interface - -The hypercerts [contract interface](https://github.com/hypercerts-org/hypercerts/blob/main/contracts/src/protocol/interfaces/IHypercertToken.sol), which declares the required functionality for a hypercert token. The current interface includes functions for minting, burning, splitting, and merging of hypercert tokens. - -### Hypercerts implementation - -An implementation that builds on top of the hypercerts interface and conforms to the hypercerts standard. For instance, our initial implementation uses an [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) token. The first 128 bits of the 256-bit token ID identifies the hypercert, the latter 128 bits identifies the specific fraction. Other implementations are possible (e.g., based on ERC-721) as long as they also conform to the data standard and use the hypercerts interface to support capabilities like splitting and merging of values. - -### Hypercerts standard - -A data standard for hypercerts. It requires the following fields to be defined in the metadata of the token: (1) set of contributors, (2) scope of work, (3) time of work, (4) scope of impact, (5) time of impact, (6) rights. - -### Impact - -Value that is created or destroyed by work. It mostly refers to positive impact, i.e., value that is created. If work destroys value, it is referred to as negative impact. - -### Impact evaluation - -A claim that a specified impact has or will occur – potentially claiming which work was responsible for the impact. - -### Impact Funding System (IFS) - -A system of actors (contributors, evaluators, funders) that interact according to a set of rules (funding mechanisms, coordination mechanisms) to maximize the domain-specific impact. - -### Impact space - -A geometrical space representing all possible work with its associated impact and rights. The space is spanned by the six fields specified in the hypercerts data standard: (1) set of contributors, (2) scope of work, (3) time of work, (4) scope of impact, (5) time of impact, (6) rights. - -### Merging hypercerts - -An operation to combine two or more hypercerts, such that the resulting, merged hypercert covers the exact same region in the impact space that the individual hypercerts covered. - -### Minting a hypercert - -Creating a new record for a hypercert on a blockchain. The properties of the hypercert (e.g., its timeframe and scope of work) are retrievable via this record. - -### Project - -Work by one or more contributors to achieve a goal. A project does not always need to be represented by one hypercert; it can be represented by multiple hypercerts (e.g., one hypercert per phase or milestone of a project). A hypercert can also represent multiple projects or even parts of multiple projects. - -### Prospective funder - -Individual, organization, or algorithm that fund work before it is done. - -### Retrospective funder - -Individual, organization, or algorithm that fund work after it is done. - -### Rights - -An unordered list of usage rights tags, which define the rights of the owners of a hypercert over the work being claimed by a hypercert. One of the axis of the impact space and part of the required fields in the hypercerts data standard. - -### Set of contributors - -An ordered list of all contributors, who claim to do or have done the work described by a hypercert. One axis of the impact space and part of the required fields in the hypercerts data standard. - -### Scope of impact - -A conjunction of potentially-negated impact scope tags, where an empty string means “all”. One axis of the impact space and part of the required fields in the hypercerts data standard. - -### Scope of work - -A conjunction of potentially-negated work scope tags, where an empty string means “all”. One axis of the impact space and part of the required fields in the hypercerts data standard. - -### Splitting hypercerts - -An operation to split one hypercert into two or more separate hypercerts, such that the resulting, separated hypercerts cover the exact same region in the impact space that the previous hypercert covered. - -### Time of impact - -Date ranges from the start to the end of the impact being claimed by a hypercert. One axis of the impact space and part of the required fields in the hypercerts data standard. - -### Time of work - -A date range, from the start to the end of the work being claimed by a hypercert. One axis of the impact space and part of the required fields in the hypercerts data standard. - -### Unit - -The smallest possible fraction of a claim. Generally units are grouped in fractions. - -### Work - -Activities that produce impact. - -## Additional Impact Evaluation Terms - -### Auditor - -Individual, organization, or algorithm that evaluates the impact of work after it is done. - -### Beneficiaries - -People or objects that are impacted by work. - -### Evaluator - -Individual, organization, or algorithm that evaluates the impact of work. There are two types: Scouts evaluate the potential impact before it is done, auditors evaluate the impact after it is done. - -### Scout - -Individual, organization, or algorithm that evaluates the potential impact of work before it is done. diff --git a/docs/docs/implementation/metadata.md b/docs/docs/implementation/metadata.md deleted file mode 100644 index a2684229..00000000 --- a/docs/docs/implementation/metadata.md +++ /dev/null @@ -1,190 +0,0 @@ ---- -title: Metadata Standard -id: metadata -sidebar_position: 2 ---- - -# Hypercert Metadata Structure - -Hypercerts are represented as [ERC-1155](https://eips.ethereum.org/EIPS/eip-1155) tokens. All token instances of a hypercert must share the same ERC-1155 metadata. For sites like OpenSea to pull in off-chain metadata for ERC-1155 assets, your hypercert contract will need to return an IPFS URI that contains all necessary hypercert metadata. - -The hypercert metadata schema follows the [Enjin recommendation](https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1155.md#erc-1155-metadata-uri-json-schema) for ERC-1155 metadata. It also includes **six required dimensions** that are necessary to clearly and unambiguously identify the hypercert's impact claim. - -The following are standard ERC-1155 metadata fields. - -## ERC-1155 fields - -| Property | Description | -| -------- | -------- | -| `name` | Name or title of the hypercert. Given that a project may create numerous hypercerts over time, consider giving the hypercert a name that represents a discrete phase or output.| -| `description` | A human readable description of the hypercert. Markdown is supported. Additional external URLs can be added.| -| `image` | A URI pointing to a resource with mime type image/* that represents the hypercert's artwork, i.e., `ipfs://`. We recommend images at a width between 320 and 1080 pixels and aspect ratio between 1.91:1 and 4:5 inclusive.| -| `external_url` | [optional] A URL that can be displayed next to the hypercert on webpages like OpenSea and links users to a page that has more information about the project or impact claim.| -| `properties` | [optional] Additional properties (aka attributes) that may be helpful for discovery and curation of hypercerts. Marketplaces like OpenSea will display these properties in the same way as they display rarity traits of NFTs. | - -In order to perform hypercert-specific operations, including split and merge functions, and for your hypercert to robustly claim a set of coordinates in the impact space, there are six additional dimensions that must be included in your metadata. - -## Required Hypercert dimensions - -| Property | Description | -| -------- | -------- | -| `work_scope` | An *ordered list* of work scope tags. Work scopes may also be excluded from the claim. The `¬` prefix will be displayed next to any work scope that is explicitly excluded from the claim. | -| `work_timeframe` | Date range from the start to the end of the work in the form of a [UTC timestamp](https://www.utctime.net/utc-timestamp). | -| `impact_scope` | An *ordered list* of impact scope tags. Impact scopes may also be excluded from the claim. The `¬` prefix will be displayed next to any impact scope that is explicitly excluded from the claim. The default claim is to "all" impact, giving the owner rights to claim all potential impact created by the work that is represented by the hypercert. | -| `impact_timeframe` | Date range from the start to the end of the impact in the form of a [UTC timestamp](https://www.utctime.net/utc-timestamp). The default claim is from the start date of work until `indefinite` (i.e., the impact may occur at any point in time in the future).| -| `contributors` | An *ordered list* of all contributors. Contributors should be itemized as wallet addresses or ENS names, but may be names / pseudonyms. The default claim is to the wallet address that created the hypercert contract. A multisig wallet can be used to represent a group of contributors. | -| `rights` | An *unordered list* of usage rights tags. The default claim is solely to "public display" of the hypercert, i.e., all other rights remain with the contributors. | - -## Examples - -### Example 1: hypercert with minimal bounds - -Here is an example of hypercert dimensions for work on IPFS with minimal bounds: - -``` -"hypercert": { - "work_scope": { - "name": "Work Scope", - "value": ["IPFS"], - "excludes": [], - "display_value": "IPFS" - }, - "impact_scope": { - "name": "Impact Scope", - "value": ["All"], - "excludes": [], - "display_value": "All" - }, - "work_timeframe": { - "name": "Work Timeframe", - "value": [1380585600, 1388534399], - "display_value": "2013-10-01 -> 2013-12-31" - }, - "impact_timeframe": { - "name": "Impact Timeframe", - "value": [1380585600, 0], - "display_value": "2013-10-01 -> Indefinite" - }, - "contributors": { - "name": "Contributors", - "value": ["Protocol Labs"], - "display_value": "Protocol Labs" - }, - "rights": { - "name": "Rights", - "value": ["Public Display"], - "display_value": "Public Display" - } -} -```` - -### Example 2: hypercert with bounded impact claims -This hypercert is for a carbon removal project that provides a bounded impact scope. - - -``` -"hypercert": { - "work_scope": { - "name": "Work Scope", - "value": ["Protecting Trees in Amazon"], - "excludes": [], - "display_value": "Protecting Trees in Amazon" - }, - "impact_scope": { - "name": "Impact Scope", - "value": ["CO2 in Atmosphere"], - "excludes": [], - "display_value": "CO2 in Atmosphere" - }, - "work_timeframe": { - "name": "Work Timeframe", - "value": [1356998400, 1388534399], - "display_value": "2013-01-01 -> 2013-12-31" - }, - "impact_timeframe": { - "name": "Impact Timeframe", - "value": [1356998400, 0], - "display_value": "2013-01-01 -> Indefinite" - }, - "contributors": { - "name": "Contributors", - "value": ["0xa1fa1fa000000000000000000000000000000000", "Project Forest Conservation"], - "display_value": "0xa1f...000, Project Forest Conservation" - }, - "rights": { - "name": "Rights", - "value": ["Public Display"], - "display_value": "Public Display" - } -} -``` - -### Example 3: hypercert with excluded impact claims -Here is an example that explicitly excludes an impact scope to generate a more fine-grained claim. - - -``` -"hypercert": { - "work_scope": { - "name": "Work Scope", - "value": ["Protecting Trees in Amazon"], - "excludes": [], - "display_value": "Protecting Trees in Amazon" - }, - "impact_scope": { - "name": "Impact Scope", - "value": ["All"], - "excludes": ["CO2 in Atmosphere"], - "display_value": "All ∧ ¬CO2 in Atmosphere" - }, - "work_timeframe": { - "name": "Work Timeframe", - "value": [1356998400, 1388534399], - "display_value": "2013-01-01 -> 2013-12-31" - }, - "impact_timeframe": { - "name": "Impact Timeframe", - "value": [1356998400, 0], - "display_value": "2013-01-01 -> Indefinite" - }, - "contributors": { - "name": "Contributors", - "value": ["0xa1fa1fa000000000000000000000000000000000", "Project Forest Conservation"], - "display_value": "0xa1f...000, Project Forest Conservation" - }, - "rights": { - "name": "Rights", - "value": ["Public Display"], - "display_value": "Public Display" - } -} -``` - - -### Additional guidelines - -Here are some additional guidelines for defining hypercert dimensions. - -- For most hypercerts, the `work_scope` is best represented as the name of the project or activity. Other information contained in the hypercert, namely, the `contributors` and the `work_timeframe` should provide sufficient context to disambiguate multiple claims from the same project. -- Similarly, for most hypercerts, the `impact_scope` will be most clearly represented as "all" (with an indefinite upper bound on the `impact_timeframe` dimensions). This gives the hypercert creator and its owners the flexibility to make claims about impact that may not have been observable or well-understood when the hypercert was created. - -- It is recommended to browse the `impact_scope` and `work_scope` tags that have already been created and are in use by your or other projects. (We are building a catalog to be available at [hypercerts.org](https://hypercerts.org).) Picking established tags can make it easier for users to discover, curate, and interact with your hypercert. In the long-run, we expect different ontologies to emerge in domains like climate solutions, open source software, etc, and picking more established tags will help prevent overlapping or duplicate claims. -- Tags for work scopes and impact scopes are [logically conjunctive](https://en.wikipedia.org/wiki/Logical_conjunction), e.g. `Planting trees` ∧ `Germany` means that the hypercert includes the planting of trees only in Germany, but not planting trees anywhere else or any other work in Germany that wasn't planting trees. -- Scopes that are explicitly excluded from the hypercert claim are enumerated separately and displayed with the `¬` prefix in the tag. Excluded scopes are not currently displayed on hypercert artwork. -- The order of tags matters only for display purposes. The hypercert artwork will only display a limited number of tags in the `impact_scope` and `work_scope` arrays due to image size and stylistic constraints. -- A `contributor` can be identified using any human-readable string. The base case is to set the `contributors` to the wallet address used to create the hypercert. A multisig wallet can be used to represent a group of contributors. - - -### Assigning `rights` - -In version 1.0 of the protocol, only one `rights` tag will be enabled: - -> **Public Display**: owners of the hypercert have the right to publicly display and receive social utility from their hypercert. - -This means that any other rights regarding the work described by the hypercert either remain with the original contributors or are governed by other agreements. - -Additional `rights` including the potential for certain types of transfers to be explicitly enabled will be released in subsequent versions. - -## Optional hidden properties - -Creators may wish to add other fields in their metadata that are not a part of the hypercert claim and are not for display on third-party marketplaces like OpenSea. These can be added by creating a `hidden_properties` field in the metadata. diff --git a/docs/docs/implementation/token-standard.md b/docs/docs/implementation/token-standard.md deleted file mode 100644 index a767c670..00000000 --- a/docs/docs/implementation/token-standard.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: Token Standard -id: token-standard -sidebar_position: 1 ---- - -### Hypercerts as a semi-fungible token - -In order to make the token identifiable, traceable, and transferable, hypercerts are represented as [ERC-1155 tokens](https://eips.ethereum.org/EIPS/eip-1155). The ERC-1155 standard enables a single deployed contract to store many hypercerts, facilitating simpler creation, transfers, as well as splitting and merging of hypercerts within a single namespace. As a semi-fungible token, each unique token represents a fraction of ownership of a hypercert. Hypercerts are then represented as a group of tokens, where the total ownership sums to 100%. In order to easily identify which hypercert a token belongs to, we utilize the upper 128 bits of a 256-bit token ID to identify the hypercert. All tokens within the same hypercert group should share the same [ERC-1155 Metadata](https://eips.ethereum.org/EIPS/eip-1155#metadata). - -![hypercert id](../../static/img/hypercert_id.png) - -For illustrative purposes, let us assume that token IDs are just 2 bytes long, where the first byte represents the hypercert ID and the last byte represents which fraction of ownership. Alice could create a new hypercert token 0x2301, representing 100% of hypercert 0x23. If Alice wanted to transfer 20% to Bob, Alice could perform a split operation by minting token 0x2302 and transferring 20% of value to it, such that tokens 0x2301 and 0x2302 represent 80% and 20% ownership respectively of hypercert 0x23. Then Alice transfers token 0x2302 to Bob. Similarly, they could merge these 2 tokens together, back to form a token that represented 100% ownership. In this case, the value of 0x2301 would be transferred to 0x2302, and then 0x2301 is subsequently burned. - -Alice can also choose to split or merge hypercerts along some dimension of the impact space. For example, Alice may split hypercert 0x23 into two new hypercerts — 0x24 representing work done before the year 2000, and 0x25 representing work done after 2000. The original hypercert 0x23 is burned and the two new hypercerts store a reference to the previous hypercert. When the history of splits and merges are indexed, we can easily trace through the provenance of any individual hypercert. - -### Claim Data - -Hypercert claim data, such as scope of work and the contributor list, is encoded in JSON format into the [ERC-1155 Metadata](https://eips.ethereum.org/EIPS/eip-1155#metadata). Claim data can be stored on-chain alongside the token, or in off-chain storage such as IPFS. For details on the JSON schema and how off-chain storage can be utilized, see the [hypercerts-sdk repository](https://github.com/hypercerts-org/hypercerts/tree/main/sdk). - -When considering whether to store hypercert metadata on-chain or off-chain, we can consider the different trade-offs to the user experience and cost, which may differ depending on which blockchain is being used. Storing data off-chain saves on costs, but could lead to on-chain claims without the metadata. Storing data on-chain adds additional security that the claims will not be forgotten but can lead to higher gas fees. - -Beyond the standard fields of hypercerts that locate the hypercert in the impact space, additional fields can be added. This allows for different templates in different impact areas, such as AI safety or biodiversity, as different additional information will be useful. Importantly, however, all hypercerts will be located in a single impact space – the additional fields do not change that. - -### Multi-chain support - -We expect hypercerts to exist in a multi-chain ecosystem, where the local deployment can be used to support the unique funding systems of that community. In order to visualize a single global impact space, we index the different contract deployments across chains and surface any potential hypercert claim conflicts. Because different blockchains support different subsets of programming languages, we do expect different implementations of the hypercert protocol to exist. However, they must adhere to the same hypercert data model to be indexed into the impact space. - -In order to decide which deployments to index into the hypercerts impact space, decentralized governance institutions will be used to govern the list of contract addresses used across all blockchains. diff --git a/docs/docs/intro.md b/docs/docs/intro.md deleted file mode 100644 index 0c4d7ca3..00000000 --- a/docs/docs/intro.md +++ /dev/null @@ -1,58 +0,0 @@ ---- -title: What Are Hypercerts? -id: intro ---- - -# What are hypercerts? - -### Hypercerts are a new token standard for tracking and rewarding positive impact. - -Each hypercert represents a unique impact claim capturing the following information: - -- a scope of work and its corresponding scope of impact -- a set of time frames for both the work and its impact -- a set of contributors – the organization or people behind the work -- a set of rights you get by owning a hypercert - -The hypercert itself is an ERC-1155 semi-fungible token with the information above stored as metadata on IPFS. Here’s an example. - -### Hypercert example - -#### Graphic representation - -![hypercert design example](../static/img/hypercert_example.png) - -#### Supplementary information (metadata) - -- **Title of hypercert:** Invention of the InterPlanetary Filesystem (IPFS) -- **Description:** The InterPlanetary File System (IPFS) is a set of composable, peer-to-peer protocols for addressing, routing, and transferring content-addressed data in a decentralized file system. -- **Link:** ipns://ipfs.tech/ - -#### Hypercert dimensions (metadata) - -- **Set of contributors:** 0xb794f5ea0ba39494ce839613fffba74279579268 _(example Ethereum address)_ -- **Scope of work:** IPFS ∧ ¬ go-ipfs -- **Time of work:** 2013-01-01 --> 2013-12-31 -- **Scope of impact:** All -- **Time of impact:** 2013-01-01 --> indefinite -- **Rights:** Public display - -### Why should you care? - -We spend trillions of dollars every year on public goods via governmental agencies, foundations, private donations and corporate spendings; however, we don’t effectively track this work – leaving us in the dark, hoping that it actually has the intended positive impact. - -We believe we can do better: - -- We should start by tracking this work consistently – this is what hypercerts are for. -- We should evaluate how impactful that work was – this is what the open evaluation system of hypercerts supports. -- We should reward the work that was exceptionally impactful – this is what the public display of hypercerts and retrospective funding is for. - -Doing this would unfold powerful incentives. Retrospective funding 1) provides incentives for creators to take on public goods projects with a potentially high, but uncertain, impact, 2) enables feedback loops to learn from successes and failures, and 3) attracts more talent to the public goods sector by improving performance-based compensation. - -While we are excited about the prospects of retrospective funding, hypercerts do not impose any specific funding mechanisms, but start with tracking the work that is supposed to be impactful. As a database for many funding mechanisms this facilitates experimentation and interoperability between funding mechanisms. - -### Next - -Curious and want to learn more? Head over to the [whitepaper](whitepaper/whitepaper-intro.md) to dive deeper into the world of hypercerts. - -Or do you want to get started right away? Head to the [minting guide](minting-guide/minting-guide-start.md). diff --git a/docs/docs/minting-guide/gitcoin-round.md b/docs/docs/minting-guide/gitcoin-round.md deleted file mode 100644 index 1ad2310a..00000000 --- a/docs/docs/minting-guide/gitcoin-round.md +++ /dev/null @@ -1,166 +0,0 @@ ---- -title: Gitcoin Alpha Round Instructions -id: gitcoin-round -sidebar_position: 3 ---- - -# Gitcoin Alpha Round Instructions - -## Overview - -- all projects in the Gitcoin Alpha Round are invited to mint a hypercert for their work -- anyone who gave over $1 to a project is automatically allowlisted for that project’s hypercert -- 50% of each hypercert is distributed to the funders, 50% is kept by the project and can be transferred later -- each project has a custom URL to make minting super easy (the link is sent directly to each project) -- everything runs on Optimism (users only need to pay L2 gas costs) - -:::info -If your project participated in the Gitcoin Alpha Round, but you didn't get a message with a custom URL, please reach out to team[at]hypercert.org. -::: - -## Hypercerts x Gitcoin Alpha Round - -Now that Gitcoin’s Alpha Round has officially closed and the funding distribution is finalized, we are inviting all eligible projects that participated to mint a hypercert for their past work and to allocate fractions of their hypercert to a list of supporters. - -We’ve created a dApp that pulls all of the data required to mint your hypercert directly from Gitcoin’s Grant Protocol. You can fine-tune the properties, tweak your artwork, and review the distribution mechanism. Once you’re ready, hit the create button and your hypercert will be released into the ethers! - -Once your hypercert has been minted, the people who supported your project with a contribution of at least $1 DAI on Gitcoin’s Alpha Round will be able to connect and claim their fractions. - -A few important notes about the Alpha Round: - -- The total units of a hypercert is based on the total donations; each funder get awarded units proportional to their donations. -- Transfers will be restricted to one transfer from the project to the supporters. -- There will be no additional rights awarded to the funders except the right to "public display" their support for the project. - -## Instructions - -The following guidance is only for projects that receive a custom URL that pre-populates the hypercerts form based on their Gitcoin Grants' data. - -It explains the default settings in the form and recommends fields that the creator may choose to update or edit. - -:::note -Gitcoin Grant hypercerts are for retrospective work, i.e., they are intended to capture work that happened between Gitcoin Grants Round 15 (September 2022) and the Alpha Round (January 2023). Therefore, the work time period is always set to past dates. (You might need to adjust the name and description to also refer to past work only.) We are focusing solely on retrospective hypercerts for this round as part of broader efforts to promote retrospective funding; you can read more about it [in the whitepaper](whitepaper/retrospective-funding.md). -::: - -### General Fields - -#### Name of Hypercert - -This field is set by default to the name of your project on Gitcoin Grants. You can edit this to be more specific. Given that your project may create numerous hypercerts over time, consider giving each hypercert a name that represents a more discrete phase or output. - -#### Logo - -This field is set to the icon artwork provided for your project on Gitcoin Grants. If there was an error accessing your icon, you will see a generic icon. - -You can update this by providing a new URL and the hypercert artwork should update automatically. - -Logo images look best with an aspect ratio of 1.0 (square-shaped). - -#### Background Banner Image - -This field is set to the banner artwork provided for your project on Gitcoin Grants. If there was an error accessing your banner, you will see a generic Gitcoin banner. - -You can update this by providing a new URL and the hypercert artwork should update automatically. - -Banner images look best with an aspect ratio of 1.5 (e.g., 600 x 400 pixels). The dimensions should be at least 320 pixels wide and 214 pixels high to avoid stretching. - -#### Project Description - -This field is set by default to the description of your project on Gitcoin Grants. Review closely -- a long project description in your Gitcoin Grant description will be truncated. - -You may edit this to provide more details about your work and to remove information that is targeted solely at Gitcoin Grants users. This is also a good place to provide other links, such as Github repos or social media accounts, where the general public can learn more about the work. Please aim for a project description that is less than 500 characters. - -:::note -The project description should refer to **past work**, not future work that you would like to do with additional funding. -::: - -#### Link - -This field is set to the first external URL provided for your project on Gitcoin Grants. You can update this. - -### Hypercert Fields - -#### Work Scope - -This field is set by default to a **shortened version** of the name of your project on Gitcoin Grants. You may edit or add additional work scope tags. - -For most projects, it's probably best just to use a single tag that is a short form of your project's name. Given that your project may create numerous hypercerts over time, having a work scope that represents the name of your project will make your claims in the "impact hyperspace" more continuous. - -If you choose to use more than one tag, remember that tags are [logically conjunctive](https://en.wikipedia.org/wiki/Logical_conjunction), e.g. `Planting trees` ∧ `Germany` means that the hypercert includes the planting of trees only in Germany, but not planting trees anywhere else or any other work in Germany that wasn't planting trees. - -#### Work Start/End Dates - -The start date has been set by default to the `2022-09-22` for all projects on Gitcoin Grants. This date coincides with the end of Gitcoin Grants Round 15. - -The end date references the last update to your grant page on Gitcoin Grants. - -You may edit or update these fields, however, the end date may not extend beyond `2023-01-31` (the close of the funding round) as all hypercerts will be retrospective in this round. - -#### Set of Contributors - -This field is set by default to the wallet address that is set as the recipient address for receiving Gitcoin Grants funding. - -:::note -You should review this field closely and – if applicable – provide the addresses of additional contributors. -::: - -### Advanced Fields - -#### Impact Scope - -This field is set by default to `all`. - -Updates are currently disabled on the frontend because funding decisions on Gitcoin Grants were not specific to an impact scope or impact time period. - -#### Impact Start/End Dates - -This field is set by default to the work start date of `2022-09-22` (see above) and a work end date of `indefinite`. Updates are currently disabled on the frontend. - -#### Rights - -This field is set by default to `Public Display`, i.e., the owners are allowed to publicly display the hypercert and show their support of the work. - -Updates are currently disabled on the frontend. - -### Distribution - -#### Allowlist - -This field is set by default to a custom allowlist generated for each project based on the funding it received on the Gitcoin Grants Alpha Round. You should not need to update this field. If there is a problem with your allowlist, please contact us. - -50% of the hypercert will be allocated according to this allowlist. The other 50% will be kept by the project, i.e. it is allocated to the address that mints the hypercert. You will be able to transfer or sell these fractions later as long as they are owned by the minter. This means that they can only be transferred or sold once. - -The formula assigns one fraction (rounded down) for every $1 (using the exchange rate at the time of the transaction) that a donor contributed to the project. It also provides a small buffer (of 5%) so that a transaction worth $0.999 or $0.951 remains eligible for one fraction. - -For example: - -- $5.60 donated --> 5 fractions -- $5.20 donated --> 5 fractions -- $0.96 donated --> 1 fraction -- $0.52 donated --> 0 fractions - -The queries used to generate the allowlists can be viewed here: - -- ETH Infra: https://dune.com/queries/1934656 -- Climate: https://dune.com/queries/1934689 -- OSS: https://dune.com/queries/1934969 - -Donors who contributed to the matching pool for each round are also eligible to claim hypercerts. - -:::note -You are free to edit your allowlist. You can do this by following the step-by-step instructions [here](minting-guide/step-by-step.md). Just remember that you will need to upload the new allowlist in a CSV format to a storage site like [web3.storage](https://web3.storage) and then update the link in the allowlist field. Contact team[at]hypercerts.org if you need help. -::: - -### Confirmations - -#### Contributors' permission - -Every contributor needs to agree to have their contribution be represented by a hypercert. This is why the person minting the hypercert has to confirm to have the permission of all listed contributors. - -#### Terms & Conditions - -The terms & Conditions can be found [here](https://hypercerts.org/terms). - -### Final step: Click "Create" - -Make sure your Optimism wallet or multi-sig is connected. Click on "create" and wait for your hypercert to be created. Congratulations! diff --git a/docs/docs/minting-guide/minting-guide-start.md b/docs/docs/minting-guide/minting-guide-start.md deleted file mode 100644 index 146f6142..00000000 --- a/docs/docs/minting-guide/minting-guide-start.md +++ /dev/null @@ -1,43 +0,0 @@ ---- -title: Getting Started -id: minting-guide-start -sidebar_position: 1 ---- - -# Getting started - -### How to create a hypercert - -Creating a hypercert is similar to creating an NFT on sites like OpenSea or Zora. - -In this article, we’ll walk through the steps one by one and explain exactly what you need to do to create your first hypercert. - -There are typically two ways of creating a hypercert: -1. As a project affiliated with a specific funding network (e.g., Gitcoin Grants): In this case, you should receive a custom URL from the funding network that pre-populates most of your hypercert fields. You will still be able to change most of these, so you should review and adjust them as needed to better describe your hypercert. Guidance on how to do so (for Gitcoin Grants projects) is provided at the end of this doc. -2. As a project not affiliated with a specific funding network: In this case, you will be creating a hypercert from scratch and filling in each field on your own. Read on below. - -### Who can create a hypercert? - -Anyone doing work that is intended to have a positive impact can create a hypercert. Your hypercert can be as simple as "I did X on this date and want to claim all future impact from it". - -It can also represent something more, such as a phase in an ongoing team project, an invention or discovery, a research publication, or an important software release. - -Critically, if the work was done by more than one person, then each person should be listed as a contributor to the hypercert and approve the creation of the hypercert. - -*Note: In the future, the approval of each contributor will be verified on-chain.* - -### What do I need to create a hypercert? - -You will need to prepare all of the information required in the form builder (see **Step-by-step instructions for creating a hypercert** below). This includes important metadata, such as a description of the project and the dimensions of your impact claim, as well as a project artwork. You may also want to include an allowlist of wallets that are approved to claim one or more fractions of the hypercert. - -In addition to the information regarding the hypercert itself, you’ll need a crypto wallet to mint your hypercert. “Minting” a hypercert is the process of writing an impact claim to the blockchain. This establishes its immutable record of authenticity and ownership. - -Next, choose a blockchain on which to mint your hypercert. The hypercerts protocol is available on Ethereum, Goerli (testnet), and Optimism. Each of these blockchains has different gas fees associated with transactions on their networks. To reduce gas fees we recommend Optimism for most projects. - -Finally, go ahead and create your hypercert. - -### How much does it cost to create a hypercert? - -You will need enough Ethereum in your wallet to cover gas fees. In our simulations, the gas fee for minting a hypercert on Ethereum Mainnet ranged from 2,707,282 to 7,515,075 gwei (0.0027 to 0.0075 ETH). Minting costs are significantly cheaper on Optimism (i.e., below 0.0005 ETH or less than $1). - -The protocol currently does not offer gas-free or "lazy" minting. diff --git a/docs/docs/minting-guide/step-by-step.md b/docs/docs/minting-guide/step-by-step.md deleted file mode 100644 index 9f3b6303..00000000 --- a/docs/docs/minting-guide/step-by-step.md +++ /dev/null @@ -1,130 +0,0 @@ ---- -title: Step-by-step Instructions -id: step-by-step -sidebar_position: 2 ---- - -# Step-by-step instructions - -First, go to the [Create Hypercert](https://hypercerts.org/app/create) site with a wallet-enabled browser or follow the custom URL you received to access a prepopulated form. - -Although the site works on mobile, it is easier to use on desktop because the browser will display a dynamic preview of the hypercert while you fill out the Create form. - -Next, connect your wallet. You will be prompted to switch to the Ethereum or Optimism network. - -Once you've connected, you will see an empty form for creating a hypercert. - -### General fields - -#### Name of Hypercert - -Enter the name or title of the hypercert. This is the place to be verbose and specific about what the project is doing. You'll see on the preview when your title becomes too long. - -Given that a project may create numerous hypercerts over time, consider giving the hypercert a name that represents a discrete phase or output. - -Names are restricted to 100 characters but may include emojis (:smile:), accents (é), non-Latin scripts (表情), and other Unicode characters. - -#### Project Description - -Enter a human readable description of the hypercert. This is the place to share more details about the work and the team or individual behind the work. - -The description field supports [Markdown syntax](https://www.markdownguide.org/cheat-sheet/) and has a limit of 10,000 characters. - -In addition to the main link (see next field) you can add further links in the markdown to help others to understand the work of the project. - -#### Link - -A valid URL for the project, beginning with https:// - -This will be displayed next to the hypercert on webpages like OpenSea and should link users to a page that has more information about the project or impact claim. - -#### Logo - -An icon for the top left part of the card. This could be your project logo. It will be automatically masked to the shape of a circle. - -Logo images look best with an aspect ratio of 1.0 (square-shaped). - -The easiest way is to find an image you like in your web browser, right click "Copy Image Address", and paste it in the field. Images stored on IPFS should be referenced through a hosted URL service, e.g., `https://cloudflare-ipfs.com/ipfs/`. - -#### Background Banner Image - -A background image that will extend across the upper half of the artwork. This could be your project masthead or a unique piece of art. - -Banner images look best with an aspect ratio of 1.5 (e.g., 600 x 400 pixels). The dimensions should be at least 320 pixels wide and 214 pixels high to avoid stretching. - -Currently we don't support zoom / cropping, so you will need to test the look and feel on your own. - -The easiest way is to find an image you like in your web browser, right click "Copy Image Address", and paste it in the field. Images stored on IPFS should be referenced through a hosted URL service, e.g., `https://cloudflare-ipfs.com/ipfs/`. - -### Work Scope fields - -#### Work Scope - -One or multiple tags describe the work that the hypercert represents. This work scope will be used to identify the work that is included in the hypercerts and the work that is not included. - -Multiple tags are [logically conjunctive](https://en.wikipedia.org/wiki/Logical_conjunction), e.g. `Planting trees` ∧ `Germany` means that the hypercert includes the planting of trees only in Germany, but not planting trees anywhere else or any other work in Germany that wasn't planting trees. - -For most projects, it's probably best just to use a single tag that is a short form of your project's name. Given that your project may create numerous hypercerts over time, having a work scope that represents the name of your project will make your claims in the "impact hyperspace" more continuous. - -_Note: In the future, you will be able to specifically exclude work from the hypercert._ - -#### Start and End Date of Work - -The work time period defines when the work was done that the hypercert represents, i.e., only the work in this time period is included in the hypercert. - -The time period of work doesn't need to be the start and end date of a project, but it can be. One project can be split up into multiple hypercerts, e.g. all hypercerts can have the same `work scope`, but different time periods of work. Of course, the time periods are not allowed to overlap. - -### Impact scope fields - -#### Impact Scope - -The impact scope can be used to limit the impact that a hypercert represents, e.g. for the work scope `Planting trees` a hypercert can represent _only_ the impact on biodiversity by including the impact scope tag `Biodiversity`. This would exclude all other impacts, including the impact on CO2 in the atmosphere, which can be useful if that impact is already captured by a carbon credit. - -By default this is set to "`all`" and we strongly recommend keeping it that way. - -Just like the work scope, multiple impact scope tags are [logically conjunctive](https://en.wikipedia.org/wiki/Logical_conjunction). - -#### Start and End Date of Impact - -The impact time period is another way to limit the impact that a hypercert represents, e.g. inventing a new medical treatment has a positive impact over many years, but we might want to capture the positive impact separately for each year. - -By default the `impact start date` is the same as the `work start date` and the `impact end date` is "`indefinite`", i.e., the impact is not restricted time-wise. We strongly recommend keeping it that way. - -### Set of Contributors - -Provide a list of contributors, one per line, or comma-separated. - -The list should include _all_ contributors that performed the described work. - -Contributors are generally itemized as wallet addresses or ENS names, but can also be names / pseudonyms. Groups of contributors can be represented by a multisig or name of an organization. - -### Owners - -#### Allowlist - -The allowlist allocates fractions of the hypercert to specific wallet addresses. These wallet addresses are then allowed to claim these fractions afterwards. For example, it can be used to allocate fractions to previous funders and contributors. - -The allowlist is implemented as a CSV file specifying `index,address,price,fractions` headers. - -| index | address | price | fractions | -| ----- | ------------------------------------------ | ----- | --------- | -| 0 | 0x5dee7b340764c49a827c60d2b8729e49405fbefc | 0.0 | 100 | -| 1 | 0x1e2dbb9ca3f6d48e085384a821b7259abfdc7d65 | 0.0 | 50 | -| ... | ... | ... | ... | -| 999 | 0x436bad18642f45d3fa5fcaad0a2d81764a9cba85 | 0.0 | 1 | - -The `price` field is denominated in ETH. This should remain at 0.0 for all hypercerts, as primary sales are not currently supported through the app and the secondary sale/transfer of hypercerts is currently not allowed. - -You can store your allowlists on IPFS using [web3.storage](https://web3.storage/). - -:::note -If your allowlist is not properly formatted, you will be unable to mint your hypercert. If you do not include an allowlist, then the creator of the hypercert will receive 100% of the hypercert (set to a default of 10,000 units), which you can then sell or transfer to another wallet a maximum of one time. -::: - -#### Rights - -This field defines the rights that owners of the hypercert have over the work being claimed by this hypercert. - -By default this is set to `Public Display`, i.e., the owners are allowed to publicly display the hypercert and show their support of the work. - -_Note: In the future, additional rights can be included for different hypercerts._ diff --git a/docs/docs/whitepaper/evaluation.md b/docs/docs/whitepaper/evaluation.md deleted file mode 100644 index 0448c318..00000000 --- a/docs/docs/whitepaper/evaluation.md +++ /dev/null @@ -1,22 +0,0 @@ ---- -title: Open Impact Evaluations -id: evaluation -sidebar_position: 5 ---- - -A key design element is that hypercerts themselves do not make a claim about the size of the impact, but only account for the work that is supposed to be impactful. The figure below shows this contrast in a simplified illustration of the example that we introduced above. The open evaluation system allows multiple evaluations to point at the same area of the impact space that a hypercert claims. The evaluations can include self-evaluation from the contributors themselves. Funders observe these and make their funding decisions based on this richer set of information. - -![hypercert evaluations](../../static/img/hypercert_evaluations.png) - -The open evaluation system is also used to provide additional information, e.g. an evaluator or the project itself provides information about the health of the trees. This information can then be used transparently by other evaluators to evaluate the impact on CO2 in the atmosphere. - -An important feature is that the evaluations do not directly point at a hypercert, but rather at an area in the impact space. In practice this area will mostly be the exact same area that a hypercert claims, such that it can be considered an evaluation of the hypercert, but it does not have to. This feature ensures that, if hypercerts are merged or split, previous evaluations will continue to be linked appropriately. - -The form of evaluations can be standardized to simplify handling and comparing multiple evaluations from multiple evaluators. The open evaluation system allows for templates to be created and used by any evaluators. Similar to the emerging ontologies, these are not enforced centrally, but should emerge as useful standards – potentially steered by decentralized governance institutions. - -Important characteristics of the open evaluation system are: -- Evaluators can submit multiple evaluations of the same area in the impact space as more information becomes available -- Evaluations can challenge other evaluations -- Evaluation methodologies can evolve over time - -These features allow the whole evaluation system to be dynamically improved by each actor. The relevant incentives for this improvement will stem from the funders who will value the signals from some evaluators more than others and evaluators are able to build up reputation. diff --git a/docs/docs/whitepaper/hypercerts-intro.md b/docs/docs/whitepaper/hypercerts-intro.md deleted file mode 100644 index b775a33f..00000000 --- a/docs/docs/whitepaper/hypercerts-intro.md +++ /dev/null @@ -1,91 +0,0 @@ ---- -title: 'Hypercerts: a New Primitive for Impact Funding Systems' -id: hypercerts-intro -sidebar_position: 3 ---- - -### Defining hypercerts -A hypercert is a semi-fungible token that accounts for work that is supposed to be impactful and represents all or parts of that impact. A hypercert has the following fields (one for each dimension): -1. **Set of contributors:** An ordered list of all contributors, who claim to do or have done the work described by this hypercert. -2. **Scope of work:** A conjunction of potentially-negated work scope tags, where an empty string means “all”: -``` - ::= AND | " " - ::= | NOT -``` -3. **Time of work:** A date range, from the start to the end of the work being claimed by this hypercert. -4. **Scope of impact:** A conjunction of potentially-negated impact scope tags, where an empty string means “all”: -``` - ::= AND | " " - ::= | NOT -``` -5. **Time of impact:** Date ranges from the start to the end of the impact. -6. **Rights of the owners:** An unordered list of usage rights tags, which define the rights of the owners of this hypercert over the work being claimed by this hypercert. - -Implementing hypercerts as a semi-fungible token allows multiple contributors and funders to own parts of hypercerts. For instance the original contributors can award 10% of a hypercert to a funder, while keeping 90%, which they can award to other funders later. This is why hypercerts are fractionalizable. - -### Examples -In the simplest cases of hypercerts, the scope of work and impact as well as the time of impact are not restricted and no rights are transferred to owners of the hypercerts, i.e. the hypercerts just define the who (set of contributors) and when (time of work) of the claimed work. Scope of work and impact would be set to all, time of impact to “indefinite” and the rights to only “public display of support”. The latter is always included as the hypercert is a public record, such that owners will always automatically display their support of the work. - -Take for example hypercert 1 below: It represents all work that contributor 1 has performed in 2013 with all the impact that the work had from the beginning of the work; the hypercert doesn’t give any additional rights to the owners of the hypercert. - -The other fields – except the rights field – can be used to limit the work or impact that is represented by the hypercert. Hypercert 2 limits this to the work on IPFS in 2013, i.e. any other work besides IPFS that contributor 1 performed is not included. Hypercert 3 limits it even further as it excludes a specific aspect of IPFS, the go-ipfs implementation. - -| | **Hypercert 1** | **Hypercert 2** | **Hypercert 3** | -|-------------------------|---------------------------|---------------------------|---------------------------| -| **Set of contributors** | Contributor 1 | Contributor 1 | Contributor 1 | -| **Scope of work** | all | IPFS | IPFS ∧ ¬ go-ipfs | -| **Time of work** | 2013-01-01 to 2013-12-31 | 2013-01-01 to 2013-12-31 | 2013-01-01 to 2013-12-31 | -| **Scope of impact** | all | all | all | -| **Time of impact** | 2013-01-01 → indefinite | 2013-01-01 → indefinite | 2013-01-01 → 2013-12-31 | -| **Rights** | Public display of support | Public display of support | Public display of support | - -In the table below we illustrate a use case for limiting the scope of impact. Suppose contributor 1 protects trees in a certain area. This work has positive effects on the CO2 in the atmosphere and could turn into carbon credits; however, the trees have additional positive impacts, such as protecting biodiversity. Instead of including all positive impacts in one hypercert (hypercert 4), the impact can be split between the impact on CO2 in the atmosphere (hypercert 5) and all other positive impacts (hypercert 6). If funders are willing to pay for biodiversity, this would be a new income opportunity. And it would account for the additional positive impact that other methods of reducing CO2 might not have, like industrial carbon capture. Importantly, negative impacts can not be excluded from a hypercert. - -| | **Hypercert 4** | **Hypercert 5** | **Hypercert 6** | -|-------------------------|----------------------------|----------------------------|----------------------------| -| **Set of contributors** | Contributor 1 | Contributor 1 | Contributor 1 | -| **Scope of work** | Protecting trees in area X | Protecting trees in area X | Protecting trees in area X | -| **Time of work** | 2013-01-01 to 2013-12-31 | 2013-01-01 to 2013-12-31 | 2013-01-01 to 2013-12-31 | -| **Scope of impact** | all | CO2 in atmosphere | all ∧ ¬ CO2 in atmosphere | -| **Time of impact** | 2013-01-01 → indefinite | 2013-01-01 → indefinite | 2013-01-01 → indefinite | -| **Rights** | Public display of support | Public display of support | Public display of support | - -Importantly a hypercert does not specify the “size” of the impact, e.g. a hypercert does not state “5 tons of CO2 removed from the atmosphere.” Instead the hypercert only defines the work, e.g. “200 trees protected” (scope of work) in 2022 (time of work). The size of the impact is then left to the evaluations of the “CO2 in the atmosphere” (scope of impact) in 2022 (time of impact) that point towards the covered region of the hypercert. For instance: This allows a self evaluation to claim that 5 tons of CO2 were removed in a given year as well as one or multiple evaluations from independent auditors to confirm or challenge how much CO2 has been removed. An evaluator could detect that some of the trees were not healthy and hence only 4 tons of CO2 were removed. Allowing for multiple evaluation is a defining characteristic of the open evaluation system. - -### Functions of hypercerts - -#### 1. Identifiability -Hypercerts clearly define the work that is supposed to be impactful by creating a record of who (set of contributors) claims to do or have done what (scope of work) in what time period (time of work). They also allow the creation of multiple records of the same work to identify separate impacts that this work had or will have (scope of impact) over specified time periods (time of impact). - -#### 2. Traceability -As these records are public and logically monotonic (immutable, except to split or merge hypercerts), records are durable and permanent. - -#### 3. Transferability -The records are a digital object that can be owned and ownership can be transferred (under specific conditions). As hypercerts can be created as fractionalizable, it is also possible to transfer only a specified fraction of the hypercert. Each hypercert defines the rights over the defined work that owners have, such as rights to retrospective rewards, rights to public display of the support (“bragging rights”) or rights to passive income from intellectual property. - -:::note Transferability restrictions - -Hypercerts are generally transferable. However, there are use cases, in which minters of hypercerts want to restrict how their hypercerts can be transferred. The protocol allows the minter to restrict who can transfer the hypercert and/or to whom the hypercert can be transferred. For instance, by specifying that only the original owner can transfer the hypercert, any future owner is prohibited from selling it, i.e. a secondary market would not exist for this hypercert. - -::: - -### Merging hypercerts -Besides the fungible dimension, hypercerts can be merged and split on any of the six dimensions as shown in box 1. Let us take the hypercert 1 from the section "Hypercerts definition" and focus only on two of the dimensions, scope of work and time of work. These two dimensions create a simplified impact space. The figure below shows how work on IPFS (InterPlanetary File System) could have been minted over time in separate hypercerts, one for each quarter of work. - -![minting hypercerts example](../../static/img/creating.png) - -We created five hypercerts, one for each quarter of work. As the resulting work of all of these together is IPFS 0.1, the merged hypercert in total is more meaningful and more valuable than just the five individual hypercerts. In this case the proverb is true, the whole is greater than the sum of its parts. Hence, we want to merge them as shown in the next figure. - -![merging hypercerts example](../../static/img/merging.png) - -### Splitting hypercerts -Conversely, splitting can increase the meaningfulness and value of hypercerts as well. We can split the work on IPFS 0.1 into the conceptual work “invention of IPFS” and the implementation via “go-ipfs 0.1” as shown in the next figure. - -![splitting hypercerts examples](../../static/img/splitting.png) - -Other use cases are where multiple contributors want to combine their work on the same scope of work (merging) or disentangle their work (splitting). Ultimately, splitting and merging allows users to repackage the digital representation of their work and impact. - -Importantly, splitting and merging are the only operations that are permitted to change hypercerts. Once an area in the impact space is claimed, it can not be unclaimed. This ensures that claims are never forgotten. - -### Retiring hypercerts -While a claim in the impact space can not be unclaimed, it can be retired. Retiring a hypercert means that owners can not transfer and sell it anymore. This way owners prove that they are the final buyers of the impact. Technically retiring hypercerts means that they are sent to a specific null address, which ensures that the retired hypercerts are recorded and traceable. diff --git a/docs/docs/whitepaper/ifs.md b/docs/docs/whitepaper/ifs.md deleted file mode 100644 index e996b393..00000000 --- a/docs/docs/whitepaper/ifs.md +++ /dev/null @@ -1,98 +0,0 @@ ---- -title: The Need for Interoperable Impact Funding Systems (IFSs) -id: ifs ---- - -# The Need for Interoperable Impact Funding Systems (IFSs) - -### An IFS consists of -- **Actors:** Contributors, funders, evaluators, and beneficiaries -- **Funding mechanisms:** Grants, bounties, retrospective funding, etc. -- **Coordination mechanisms:** Roadmapping, communication forums, etc. -- **A goal:** Maximize the domain-specific positive value created (impact) - -The goal will be specific to the impact area, e.g. prevent existential risks from artificial intelligence (AI) would be the goal for the impact area “AI safety.” To achieve these goals, skilled contributors must work with high effort on promising projects. Additionally, for those projects that create impact continuously, sufficient income streams are necessary to cover both their ongoing operating expenses and contributors’ upside incentives. - -#### Actors in IFSs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TypeSubtypeDescription
ContributorsPeople or organizations who do the work
FundersProspective fundersPeople or organizations who fund work before it is done
Retrospective fundersPeople or organizations who fund work after it is done
EvaluatorsScoutsPeople or organizations who evaluate the potential impact of work before it is done
AuditorsPeople or organizations who evaluate the impact of work after it is done
BeneficiariesPeople or objects that are impacted by the work
- -### Guiding questions for designing IFSs -1. **Projects:** How can we improve the chances that the most promising projects are worked on? -2. **Talent & resources:** How can we attract top talent to contribute to the most promising projects and provide them with the necessary resources? -3. **Effort:** How can we reward contributors for their impact on outcomes? -4. **Sustainable income:** How can we create recurring income streams and financial sustainability for impactful projects? - -Markets have been proven very powerful in answering these questions if they are directed towards maximizing profits. As we are directing systems towards maximizing impact, these answers become more challenging. In particular, in an IFS we are facing coordination and incentive problems in funding impact, such as the free-rider problem. - -### Example dynamics between actors in an IFS -In order for impact funding systems to be most effective, they should be interoperable regarding (1) funding mechanisms, (2) funding sources and (3) evaluations. In the diagram below you see a potential dynamic between the actors of an IFS. In that scenario hypercerts can account for the prospective funding (steps 2-3) as well as for the retrospective funding (steps 8-9) from different funders. Evaluations are made public and can be discovered through the hypercerts for all funders (steps 5-7). Retrospective funders can reward not only the contributors but also the prospective funders (steps 10-11). - -```mermaid -sequenceDiagram - autonumber - participant Beneficiaries - participant Contributors - participant Prospective funders - participant Retrospective funders - participant Evaluators - Contributors ->> Contributors: Mint hypercerts - Prospective funders ->> Contributors: Award funding - Contributors ->> Prospective funders: Award fractions of
the hypercert - Contributors ->> Beneficiaries: Create impact - Retrospective funders ->> Evaluators: Fund evaluation - Evaluators ->> Beneficiaries: Evaluate impact on beneficiaries - Evaluators ->> Retrospective funders: Make evaluations public,
esp. for retrospective
funders - Retrospective funders ->> Contributors: Award funding - Contributors ->> Retrospective funders: Award fractions of hypercerts - opt - Retrospective funders ->> Prospective funders: Award funding - Prospective funders ->> Retrospective funders: Transfer fractions
of hypercert - end -``` - -### Hypercerts as a data layer for IFSs -By serving as a single, open, shared, decentralized database hypercerts lower the transaction costs to coordinate and fund impactful work together. This is important because the optimal funding decisions of a single funder depends on the funding decision of all other funders. For instance, some work is only impactful if a minimum funding is provided: The impact is non-linear in the funding amount, e.g. half a bridge is not half as impactful as a full bridge. Other work might be over-funded, i.e. the impact of an additional dollar is basically zero. Ultimately, funders want to find the highest impact for each additional dollar spend (cf. S-process as in Critch, 2021). Today multi-funder coordination on impact funding is prohibitively expensive, leading to suboptimal efficiency in impact capital allocation. Through hypercerts the funding becomes more transparent and the credits for funding impactful work can be easily shared. Coordinating funding becomes easier. - -Hypercerts don’t solve this coordination problem by themselves, but build the basis for different decision and funding mechanisms as shown below. Quadratic voting, bargaining solutions, DAO-style votes, milestone bounties, and simple unconditional grants all have their strengths, among others. Hypercerts do not lock in any particular decision-making scheme for funders. - -![Hypercerts as a data layer for an IFS](../../static/img/hypercert_data_layer.png) - -Looking farther into the future: If a large majority of funding across an entire IFS ends up flowing through hypercerts, funders have created the transparency that enables each of them to make the best decisions given the funding decision of everyone else. diff --git a/docs/docs/whitepaper/impact-space.md b/docs/docs/whitepaper/impact-space.md deleted file mode 100644 index a48ed942..00000000 --- a/docs/docs/whitepaper/impact-space.md +++ /dev/null @@ -1,33 +0,0 @@ ---- -title: A Consistent Impact Space -id: impact-space -sidebar_position: 4 ---- - -Every hypercert represents a claim in the impact space, which itself represents all possible claims. Above we illustrated the impact space with two dimensions, scope and time of work. The complete impact space is spanned by the six dimensions introduced in the definition of hypercerts. - -### Consistency of the impact space - -Every point in the impact space should either be claimed or not be claimed. No point must be claimed twice, or equivalently: -- If the impact of some work is represented in one hypercert, it must not be part of any other hypercert. -- Hypercerts must not overlap with each other. - -The table below shows two hypercerts that were illustrated in the section on "Hypercerts operations", but now with all six fields. The two hypercerts can represent the exact same work by the same contributor, but they do not overlap because of the difference in the time of work. - -| | **Hypercert 7** | **Hypercert 8** | -|-------------------------|--------------------------|--------------------------| -| **Set of contributors** | Contributor 1 | Contributor 1 | -| **Scope of work** | IPFS | IPFS | -| **Time of work** | 2013-10-01 to 2013-12-31 | 2014-01-01 to 2014-03-31 | -| **Scope of impact** | all | all | -| **Time of impact** | 2013-10-01 → indefinite | 2014-01-01 → indefinite | -| **Rights** | None | None | - -The consistency of the impact space is crucial as it ensures that no rights to an impact claim are sold twice. If for example someone owns the right to retrospective rewards for the impact of some work, the owners must be identifiable unambiguously. - -Because users can create hypercerts with arbitrary data on any chain, on which a hypercert contract is deployed, we provide ways to help users detect collisions in the impact space. For example, if one hypercert on Ethereum points to the work on “IPFS”, and another hypercert on Filecoin points to the work on “https://github.com/ipfs/go-ipfs” both with the same contributor and time of work, which of these overlapping hypercerts is the correct one to support? To surface such overlapping hypercerts, the hypercerts protocol and SDK will support mechanisms to index, search, and visualize neighbors in the impact space. With these tools evaluators can quickly detect potential conflicts and submit the results as evaluations to help disambiguate proper credit and attribution. - -### Emerging ontologies -Common ontologies for the scope of work and scope of impact are useful to create transparency and improve discoverability. Such ontologies need to be created from the practices and should be adapted over time. They are like emerging norms, instead of fixed rules. However, some larger players or a group of smaller players could enforce certain ontologies, e.g. if multiple funders agree that they only fund projects that follow a specified ontology. - -As some ontologies might be more useful than others, we would ideally see a consensus emerge between participants and experts in each impact area. Decentralized governance institutions can help facilitate this; however, further details on the design are out of the scope of this paper and are left for future work. diff --git a/docs/docs/whitepaper/retrospective-funding.md b/docs/docs/whitepaper/retrospective-funding.md deleted file mode 100644 index 84e4ecf0..00000000 --- a/docs/docs/whitepaper/retrospective-funding.md +++ /dev/null @@ -1,41 +0,0 @@ ---- -title: Retrospective Impact Funding -id: retrospective-funding -sidebar_position: 6 ---- - -### Introducing retrospective funding - -While hypercerts do not impose any specific funding mechanisms, they are especially useful for retrospective funding. The core idea, from the perspective of contributors building impactful goods, is this: if you can reasonably expect to get funded retrospectively for your work once you produce a positive impact, then you can work now, in expectation of a probabilistic future cash flow. In another conception, you are effectively “borrowing” money from this anticipated future cash flow to fund the work in the first place; the expectation of future funding “retro-causes” the impactful work. Retrospective funding may be able to 1) provide incentives for contributors to take on impactful goods projects with a potentially high, but uncertain, impact and 2) create a more efficient IFS by back-propagating signals on what outcomes were impactful post-hoc. - -In addition, contributors are able to receive fair compensation by providing outsized impact that will be highly valued. It incentivizes you to create a positive impact, beyond your intrinsic motivation. This does not mean that the most successful contributors to impactful goods automatically have potential upside comparable to some for-profit startup founders (or that they should), just that their potential upside does depend on how much funders later value their past work. This will attract more talent to the impact sector by improving performance-based compensation. - -The crucial aspect for this to work: funders need to retrospectively fund impact, and send credible signals that they will do so in the future. Based on these signals contributors form expectations about future retrospective rewards and can start working today to receive them in the future. - -Hypercerts facilitate retrospective funding as the impact claims are identifiable, traceable and transferable. Contributors can sell parts of their hypercerts to prospective funders to receive the necessary funding for their project (“activity” in the figure below). The project delivers impact to a larger group (“beneficiaries”), which retrospectively buys the hypercerts from the prospective funder, and from the contributors if they retained some fraction of their hypercerts (the latter is not represented in the figure). - -![Retrospective funding with hypercerts](../../static/img/retrospective_funding.png) - -### Increasing rewards - -Retrospective funding allows us to increase rewards as more impact is created because impact is easier to observe, measure and prove retrospectively. Increasing rewards – as shown in the next figure – incentivizes contributors to put in their highest effort to produce impact and enables contributors to be rewarded for their talent. Moreover, prospective funders are incentivized to select, fund and support the projects with the highest expected impact, if they also receive retrospective rewards. - -![Increasing rewards](../../static/img/increasing_rewards.png) - -Note that retrospective funding should not be used in cases where a significant negative impact is possible since a nongovernmental, permissionless framework can not impose retrospective penalties for negative externalities. See Ofer & Cotton-Barratt (2022) for a discussion of this limitation of retrospective funding. - -In some cases we do not expect the retrospective evaluation to be any different than the prospective evaluation, i.e. there is no uncertainty resolved over time as the impact of an activity is already “known” prospectively. In these cases retrospective funding would only complicate the funding mechanism and funding via grants or milestone bounties would be preferable. Retrospective funding is preferable only if uncertainty is resolved over time. - -### Impact evaluations - -The relevance of impact evaluations will depend on how much their signals influence the funding decisions of retrospective funders (see the potential dynamics in the section on "IFSs"). This is a critical difference to many impact reports today: If a project was funded by a grant, the funders as well as the project want to receive a positive evaluation. If, however, the funding decisions of the retrospective funders are outstanding, they are interested in truthful signals about the impact. Hence, funders value improvements in evaluation methodologies and can fund independent evaluators. Evaluators in turn would build up a reputation for their evaluation methodologies and improve the strength of their signals to retrospective funders. - -Impact evaluators can take on a range of forms ranging forms, such as -- Voting by relevant communities or beneficiaries -- Expert panels -- Professional evaluators similar to financial rating agencies -- Automatic monitoring and data collection by sensors and oracles - -The most useful form or combinations thereof will depend on the specific requirements of the impact area. For a generalized framework on impact evaluators see Protocol Labs (2023). - -While retrospective funding makes impact evaluations financially relevant for funders and contributors, hypercerts enable to pre-commit funding for those evaluations: As impact claims are never forgotten, any actor can at any time commit funding to a future evaluation of these claims. diff --git a/docs/docs/whitepaper/whitepaper-intro.md b/docs/docs/whitepaper/whitepaper-intro.md deleted file mode 100644 index 4d4648ba..00000000 --- a/docs/docs/whitepaper/whitepaper-intro.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: Introduction -id: whitepaper-intro ---- - -# Vision & Whitepaper - -:::note - -If you prefer to read the draft whitepaper (v0) as a pdf, you can find it [here](../../static/pdf/hypercerts_whitepaper_v0.pdf). The content is mostly identical to the following pages. - -::: - -#### The world faces unprecedented challenges, from climate change to safe artificial intelligence, that require billions to trillions of dollars of public goods funding. - -High-upside/high-uncertainty endeavors are often overlooked due to the absence of strong incentives to pursue them in the dominant public goods funding framework of at-cost grants or even a milestone-bounty framework (which directly exposes small contributors to aversive risk levels). Yet these should be pursued when the expected positive value is very high, as it often is. New impact funding mechanisms can address this. One such mechanism is retrospective funding, which rewards projects based on the impact they create after the impact is observable. If projects can reasonably expect such retrospective rewards, they are incentivized to maximize their impact and – together with prospective funders – take risky bets when the expected positive value is high. - -#### In order for Impact Funding Systems (IFSs) to be most effective, they should be interoperable regarding (1) funding mechanisms, (2) funding sources, and (3) evaluations. - -Quadratic voting, bargaining solutions, DAO-style votes, milestone bounties, and simple unconditional grants all have their strengths, among others. We do not wish to lock in any particular decision-making scheme for funders. Without mechanisms like these, multi-funder coordination on impact funding is prohibitively expensive, leading to suboptimal efficiency in impact capital allocation. Funders should be able to easily collaborate with other funders or to intentionally fund different projects to diversify the funded approaches. Evaluators should be able to evaluate the same impact with different methodologies – potentially with conflicting results, to foster rigor and progress of evaluation methodologies. - -#### Hypercerts create this interoperability by serving as a single, open, shared, decentralized database for impact funding mechanisms. - -A single hypercert is a semi-fungible token that accounts for work that is supposed to be impactful and whose ownership is fractionizable and transferable (under specific conditions). Hypercerts do not impose any specific funding mechanisms but provide baseline invariant guarantees such that claims will not be forgotten as different mechanisms come into and out of fashion. This is also why hypercerts are especially useful for any retrospective funding mechanisms – funding can be applied to claims of the past. diff --git a/docs/docusaurus.config.js b/docs/docusaurus.config.js deleted file mode 100644 index 810246db..00000000 --- a/docs/docusaurus.config.js +++ /dev/null @@ -1,148 +0,0 @@ -import { themes } from "prism-react-renderer"; - -export default async function createConfigAsync() { - // Use a dynamic import instead of require('esm-lib') - const mdx_mermaid = await import("mdx-mermaid"); - - return { - title: "Hypercerts", - tagline: "Accounting and rewarding impact with hypercerts", - url: "https://hypercerts-org.github.io/", - baseUrl: "/docs/", - onBrokenLinks: "log", - onBrokenMarkdownLinks: "warn", - favicon: "img/favicon.ico", - trailingSlash: false, - - // GitHub pages deployment config. - // If you aren't using GitHub pages, you don't need these. - organizationName: "Hypercerts Foundation", // Usually your GitHub org/user name. - projectName: "hypercerts", // Usually your repo name. - - // Even if you don't use internalization, you can use this field to set useful - // metadata like html lang. For example, if your site is Chinese, you may want - // to replace "en" with "zh-Hans". - i18n: { - defaultLocale: "en", - locales: ["en"], - }, - - plugins: [ - [ - "docusaurus-plugin-typedoc", - { - // TypeDoc options - entryPoints: ["../sdk/src/index.ts"], - tsconfig: "../sdk/tsconfig.json", - - // Plugin options - out: "developer/api/sdk", - sidebar: { - categoryLabel: "API SDK", - collapsed: false, - position: 0, - fullNames: true, - }, - }, - ], - ], - - presets: [ - [ - "classic", - /** @type {import('@docusaurus/preset-classic').Options} */ - { - blog: false, // Optional: disable the blog plugin - docs: { - routeBasePath: "/", // Serve the docs at the site's root - sidebarPath: "./sidebars.js", - // Please change this to your repo. - // Remove this to remove the "edit this page" links. - remarkPlugins: [mdx_mermaid], - editUrl: "https://github.com/hypercerts-org/hypercerts", - }, - theme: { - customCss: "./src/css/custom.css", - }, - }, - ], - ], - - markdown: { - mermaid: true, - format: "detect", - }, - themes: ["@docusaurus/theme-mermaid"], - themeConfig: { - algolia: { - // The application ID provided by Algolia - appId: "KEI1L137BU", - - // Public API key: it is safe to commit it - apiKey: "3c28007b9532f79a8f326cc2a07f1721", - - indexName: "hypercerts", - - insights: true, - }, - docs: { - sidebar: { - hideable: true, - autoCollapseCategories: false, - }, - }, - navbar: { - title: "hypercerts", - items: [ - { - type: "doc", - docId: "intro", - position: "left", - label: "Docs", - }, - { - type: "doc", - docId: "about", - position: "right", - label: "About", - }, - { - type: "dropdown", - label: "Community", - position: "right", - items: [ - { - label: "Twitter", - href: "https://twitter.com/hypercerts", - }, - { - label: "Telegram Group", - href: "https://t.me/+YF9AYb6zCv1mNDJi", - }, - ], - }, - { - href: "https://github.com/hypercerts-org/hypercerts", - label: "GitHub", - position: "right", - }, - { - type: "docsVersionDropdown", - position: "right", - }, - ], - }, - footer: { - style: "dark", - copyright: `Copyright © 2023 Hypercerts Foundation. Built with Docusaurus.`, - }, - prism: { - theme: themes.github, - darkTheme: themes.dracula, - }, - mermaid: { - theme: { light: "neutral", dark: "dark" }, - }, - }, - }; -} diff --git a/docs/package.json b/docs/package.json deleted file mode 100644 index 44464921..00000000 --- a/docs/package.json +++ /dev/null @@ -1,56 +0,0 @@ -{ - "name": "@hypercerts-org/docs", - "version": "1.1.0", - "license": "Apache-2.0", - "private": false, - "scripts": { - "docusaurus": "docusaurus", - "start": "docusaurus start", - "build": "docusaurus build", - "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy", - "clear": "docusaurus clear", - "serve": "docusaurus serve", - "version:new": "docusaurus docs:version", - "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids", - "typecheck": "tsc" - }, - "dependencies": { - "@docusaurus/core": "^3.0.0", - "@docusaurus/preset-classic": "^3.0.0", - "@docusaurus/theme-mermaid": "^3.0.0", - "@mdx-js/react": "^3.0.0", - "clsx": "^1.2.1", - "docusaurus-plugin-remote-content": "^3.1.0", - "docusaurus-plugin-typedoc": "^0.21.0", - "mdx-mermaid": "^2.0.0", - "mermaid": "^9.3.0", - "prism-react-renderer": "^2.1.0", - "react": "^18.2.0", - "react-dom": "^18.2.0" - }, - "devDependencies": { - "@docusaurus/eslint-plugin": "^3.0.0", - "@docusaurus/module-type-aliases": "^3.0.0", - "@docusaurus/tsconfig": "3.0.0", - "@docusaurus/types": "3.0.0", - "typescript": "^5.0.0" - }, - "browserslist": { - "production": [ - ">0.5%", - "not dead", - "not op_mini all" - ], - "development": [ - "last 1 chrome version", - "last 1 firefox version", - "last 1 safari version" - ] - }, - "engines": { - "node": ">=18.0" - }, - "packageManager": "pnpm@9.2.0+sha256.94fab213df221c55b6956b14a2264c21c6203cca9f0b3b95ff2fe9b84b120390" -} diff --git a/docs/sidebars.js b/docs/sidebars.js deleted file mode 100644 index 9b098caa..00000000 --- a/docs/sidebars.js +++ /dev/null @@ -1,180 +0,0 @@ -/** - * Creating a sidebar enables you to: - - create an ordered group of docs - - render a sidebar for each doc of that group - - provide next/previous navigation - - The sidebars can be generated from the filesystem, or explicitly defined here. - - Create as many sidebars as you want. - */ - -// @ts-check - -/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ -const sidebars = { - mySidebar: [ - { - type: "category", - label: "Announcements", - collapsed: true, - items: [ - { - type: "autogenerated", - dirName: "announcements", - }, - ], - }, - { - type: "doc", - id: "intro", - }, - { - type: "category", - label: "Vision & Whitepaper", - collapsed: true, - items: [ - { - type: "doc", - id: "whitepaper/whitepaper-intro", - }, - { - type: "doc", - id: "whitepaper/ifs", - }, - { - type: "doc", - id: "whitepaper/hypercerts-intro", - }, - { - type: "doc", - id: "whitepaper/impact-space", - }, - { - type: "doc", - id: "whitepaper/retrospective-funding", - }, - ], - }, - { - type: "category", - label: "Developer Guide", - collapsed: true, - items: [ - { - type: "doc", - id: "developer/quickstart-javascript", - }, - { - type: "doc", - id: "developer/quickstart-solidity", - }, - { - type: "doc", - id: "developer/minting", - }, - { - type: "doc", - id: "developer/allowlists", - }, - { - type: "doc", - id: "developer/querying", - }, - { - type: "doc", - id: "developer/split-merge", - }, - { - type: "doc", - id: "developer/burning", - }, - { - type: "doc", - id: "developer/supported-networks", - }, - { - type: "doc", - id: "devops/index", - }, - { - type: "category", - label: "API Reference", - collapsed: true, - items: [ - { - type: "category", - label: "Contracts", - collapsed: true, - items: [ - { - type: "autogenerated", - dirName: "developer/api/contracts", - }, - ], - }, - { - type: "category", - label: "SDK", - collapsed: true, - items: [ - { - type: "autogenerated", - dirName: "developer/api/sdk", - }, - ], - }, - ], - }, - ], - }, - { - type: "category", - label: "Minting Guide", - collapsed: true, - items: [ - { - type: "doc", - id: "minting-guide/minting-guide-start", - }, - { - type: "doc", - id: "minting-guide/step-by-step", - }, - { - type: "doc", - id: "minting-guide/gitcoin-round", - }, - ], - }, - { - type: "category", - label: "Implementation", - collapsed: true, - items: [ - { - type: "doc", - id: "implementation/token-standard", - }, - { - type: "doc", - id: "implementation/metadata", - }, - { - type: "doc", - id: "implementation/glossary", - }, - ], - }, - { - type: "doc", - id: "faq", - }, - { - type: "doc", - id: "further-resources", - }, - ], -}; - -module.exports = sidebars; diff --git a/docs/src/components/homepage/homeNavBoxes.js b/docs/src/components/homepage/homeNavBoxes.js deleted file mode 100644 index dab34160..00000000 --- a/docs/src/components/homepage/homeNavBoxes.js +++ /dev/null @@ -1,96 +0,0 @@ -import React from "react"; -import clsx from "clsx"; -import styles from "./homeNavBoxes.module.css"; - -const FeatureList = [ - { - title: "Introduction", - icon: "img/icons/hypercerts_logo_green.png", - items: [ - { url: "intro", text: "What are hypercerts?" }, - { url: "about", text: "About the Hypercerts Foundation" }, - { url: "faq", text: "Frequently Asked Questions" }, - { url: "further-resources", text: "Further Resources" }, - ], - }, - { - title: "Vision & Whitepaper", - icon: "img/icons/hypercerts_logo_beige.png", - items: [ - { url: "whitepaper/whitepaper-intro", text: "Introduction" }, - { url: "whitepaper/ifs", text: "Impact Funding Systems (IFSs)" }, - { - url: "whitepaper/hypercerts-intro", - text: "Hypercerts: a New Primitive", - }, - { url: "whitepaper/impact-space", text: "A Consistent Impact Space" }, - { url: "whitepaper/evaluations", text: "Open Impact Evaluations" }, - { - url: "whitepaper/retrospective-funding", - text: "Retrospective Impact Funding", - }, - ], - }, - { - title: "Minting Guide", - icon: "img/icons/hypercerts_logo_red.png", - items: [ - { url: "minting-guide/minting-guide-start", text: "Getting Started" }, - { url: "minting-guide/step-by-step", text: "Step-by-step Instructions" }, - { - url: "minting-guide/gitcoin-round", - text: "Gitcoin Alpha Round Instructions", - }, - ], - }, - { - title: "Developers", - icon: "img/icons/hypercerts_logo_yellow.png", - items: [ - { url: "developer", text: "Developer docs" }, - { url: "implementation/token-standard", text: "Token Standard" }, - { url: "implementation/metadata", text: "Metadata Standard" }, - { url: "implementation/glossary", text: "Glossary" }, - ], - }, -]; - -function FeatureItem({ url, text }) { - return ( -
  • - - {text} - -
  • - ); -} - -function Feature({ title, icon, items }) { - return ( -
    -
    - -

    {title}

    -
    -
      - {items.map((props, idx) => ( - - ))} -
    -
    -
    -
    - ); -} - -export default function HomepageFeatures() { - return ( -
    -
      - {FeatureList.map((props, idx) => ( - - ))} -
    -
    - ); -} diff --git a/docs/src/components/homepage/homeNavBoxes.module.css b/docs/src/components/homepage/homeNavBoxes.module.css deleted file mode 100644 index beb95f39..00000000 --- a/docs/src/components/homepage/homeNavBoxes.module.css +++ /dev/null @@ -1,121 +0,0 @@ -.features { - display: flex; - align-items: center; - padding: 2rem 0; - width: 100%; -} - -.featureSvg { - height: 200px; - width: 200px; -} - - -.grid3col{ - display: grid; - grid-template-columns: repeat(4,minmax(0,1fr)); - gap:20px; - margin: 0 auto; - padding: 0; -} -@media screen and (max-width: 1680px) { - .grid3col{ - display: grid; - grid-template-columns: repeat(2,minmax(0,1fr)); - gap:20px; - margin: 0 auto; - } -} -@media screen and (max-width: 1450px) { - .grid3col{ - display: grid; - grid-template-columns: repeat(2,minmax(0,1fr)); - gap:20px; - margin: 0 auto; - } -} -@media screen and (max-width: 1180px) { - .grid3col{ - display: grid; - grid-template-columns: repeat(2,minmax(0,1fr)); - gap:20px; - margin: 0 auto; - } -} -@media screen and (max-width: 768px) { - .grid3col{ - display: grid; - grid-template-columns: repeat(1,minmax(0,1fr)); - gap:10px 0px; - margin: 0 auto; - } -} - - -.listContainer{ - min-height: 13rem; -} -@media screen and (max-width: 768px) { - .listContainer{ - min-height: 3rem; - padding-bottom: 1rem; - } -} -.listContainer li{ - list-style-type: none; - position: relative; -} - -.listContainer li:before{ - --ifm-menu-link-sublist-icon: url('data:image/svg+xml;utf8,'); - background: var(--ifm-menu-link-sublist-icon) 50% / 1.25rem 1.25rem; - transform: rotate(90deg); - content: ''; - position: absolute; - height: 1.25rem; - width: 1.25rem; - left: -1.5rem; - top: 0.5rem; - } - -.homecard{ - background-color: #1c1f26; - width: 320px; - padding: 8px; - position: relative; - display: block; - border-radius: 16px; - border: 1px solid #a8b3cf33; -} - -html[data-theme='light'] .homecard{ - background-color: #fff; - border: 1px solid #a8b3cf; - color: #000; -} - - -.homecard h2{ - margin: 8px 16px; - min-height: 2.4rem; - font-size: 1.25rem; - line-height: 1.4; -} - -html[data-theme='light'] .homecard a{ - color: #000; -} -.homecard a{ - color: white; - text-decoration: underline; - line-height: 2rem;; -} -html[data-theme='light'] .homeIcon{ - filter: brightness(0.5); -} -.homeIcon{ - width: 28px; - height: 28px; - border-radius: 0!important; - margin: 12px 0 4px 16px; -} diff --git a/docs/src/css/custom.css b/docs/src/css/custom.css deleted file mode 100644 index 79b49a61..00000000 --- a/docs/src/css/custom.css +++ /dev/null @@ -1,44 +0,0 @@ -/** - * Any CSS included here will be global. The classic template - * bundles Infima by default. Infima is a CSS framework designed to - * work well for content-centric websites. - */ - -/* You can override the default Infima variables here. */ -:root { - --ifm-color-primary: #2e8555; - --ifm-color-primary-dark: #29784c; - --ifm-color-primary-darker: #277148; - --ifm-color-primary-darkest: #205d3b; - --ifm-color-primary-light: #33925d; - --ifm-color-primary-lighter: #359962; - --ifm-color-primary-lightest: #3cad6e; - --ifm-code-font-size: 95%; - --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); -} - -/* For readability concerns, you should choose a lighter palette in dark mode. */ -[data-theme="dark"] { - --ifm-color-primary: #25c2a0; - --ifm-color-primary-dark: #21af90; - --ifm-color-primary-darker: #1fa588; - --ifm-color-primary-darkest: #1a8870; - --ifm-color-primary-light: #29d5b0; - --ifm-color-primary-lighter: #32d8b4; - --ifm-color-primary-lightest: #4fddbf; - --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); -} - -iframe.slides { - aspect-ratio: 1.687; - width: 100%; - height: auto; -} - -svg[id*=mermaid]{ - height: auto !important; -} - -dt { - margin-top: 20px; -} diff --git a/docs/src/pages/index.js b/docs/src/pages/index.js deleted file mode 100644 index 7a8e73c8..00000000 --- a/docs/src/pages/index.js +++ /dev/null @@ -1,36 +0,0 @@ -import React from 'react'; -import clsx from 'clsx'; -import Layout from '@theme/Layout'; -import Link from '@docusaurus/Link'; -import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; -import styles from './video.module.css'; -import HomeNavBoxes from '../components/homepage/homeNavBoxes'; -import { Redirect } from '@docusaurus/router'; - -function HomepageHeader() { - const { siteConfig } = useDocusaurusContext(); - return ( - -
    -
    -

    hypercerts docs

    -
    -
    - ); -} - -export default function Home() { - const { siteConfig } = useDocusaurusContext(); - - // return ; - return ( - - -
    - -
    -
    - ); -} diff --git a/docs/src/pages/index.module.css b/docs/src/pages/index.module.css deleted file mode 100644 index 6fe64b96..00000000 --- a/docs/src/pages/index.module.css +++ /dev/null @@ -1,25 +0,0 @@ -/** - * CSS files with the .module.css suffix will be treated as CSS modules - * and scoped locally. - */ - -.heroBanner { - padding: 4rem 0; - text-align: center; - position: relative; - overflow: hidden; -} - -@media screen and (max-width: 966px) { - .heroBanner { - padding: 2rem; - } -} - - - -.buttons { - display: flex; - align-items: center; - justify-content: center; -} diff --git a/docs/src/pages/video.module.css b/docs/src/pages/video.module.css deleted file mode 100644 index 186711d2..00000000 --- a/docs/src/pages/video.module.css +++ /dev/null @@ -1,17 +0,0 @@ -/** - * CSS files with the .module.css suffix will be treated as CSS modules - * and scoped locally. - */ - -.heroBanner { - padding: 2rem 0 0 0; - text-align: center; - position: relative; - overflow: hidden; -} - -@media screen and (max-width: 966px) { - .heroBanner { - padding: 2rem; - } -} diff --git a/docs/static/.nojekyll b/docs/static/.nojekyll deleted file mode 100644 index e69de29b..00000000 diff --git a/docs/static/img/creating.png b/docs/static/img/creating.png deleted file mode 100644 index 17807cd3c2541cc4dbfa780c4ed9476b62eff03d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6616 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 diff --git a/docs/static/img/docusaurus.png b/docs/static/img/docusaurus.png deleted file mode 100644 index f458149e3c8f53335f28fbc162ae67f55575c881..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5142 zcma)=cTf{R(}xj7f`AaDml%oxrAm_`5IRVc-jPtHML-0kDIiip57LWD@4bW~(nB|) z34|^sbOZqj<;8ct`Tl-)=Jw`pZtiw=e$UR_Mn2b8rM$y@hlq%XQe90+?|Mf68-Ux_ zzTBiDn~3P%oVt>{f$z+YC7A)8ak`PktoIXDkpXod+*gQW4fxTWh!EyR9`L|fi4YlH z{IyM;2-~t3s~J-KF~r-Z)FWquQCfG*TQy6w*9#k2zUWV-+tCNvjrtl9(o}V>-)N!) ziZgEgV>EG+b(j@ex!dx5@@nGZim*UfFe<+e;(xL|j-Pxg(PCsTL~f^br)4{n5?OU@ z*pjt{4tG{qBcDSa3;yKlopENd6Yth=+h9)*lkjQ0NwgOOP+5Xf?SEh$x6@l@ZoHoYGc5~d2>pO43s3R|*yZw9yX^kEyUV2Zw1%J4o`X!BX>CwJ zI8rh1-NLH^x1LnaPGki_t#4PEz$ad+hO^$MZ2 ziwt&AR}7_yq-9Pfn}k3`k~dKCbOsHjvWjnLsP1{)rzE8ERxayy?~{Qz zHneZ2gWT3P|H)fmp>vA78a{0&2kk3H1j|n59y{z@$?jmk9yptqCO%* zD2!3GHNEgPX=&Ibw?oU1>RSxw3;hhbOV77-BiL%qQb1(4J|k=Y{dani#g>=Mr?Uyd z)1v~ZXO_LT-*RcG%;i|Wy)MvnBrshlQoPxoO*82pKnFSGNKWrb?$S$4x+24tUdpb= zr$c3K25wQNUku5VG@A=`$K7%?N*K+NUJ(%%)m0Vhwis*iokN#atyu(BbK?+J+=H z!kaHkFGk+qz`uVgAc600d#i}WSs|mtlkuwPvFp) z1{Z%nt|NwDEKj1(dhQ}GRvIj4W?ipD76jZI!PGjd&~AXwLK*98QMwN&+dQN1ML(6< z@+{1`=aIc z9Buqm97vy3RML|NsM@A>Nw2=sY_3Ckk|s;tdn>rf-@Ke1m!%F(9(3>V%L?w#O&>yn z(*VIm;%bgezYB;xRq4?rY})aTRm>+RL&*%2-B%m; zLtxLTBS=G!bC$q;FQ|K3{nrj1fUp`43Qs&V!b%rTVfxlDGsIt3}n4p;1%Llj5ePpI^R} zl$Jhx@E}aetLO!;q+JH@hmelqg-f}8U=XnQ+~$9RHGUDOoR*fR{io*)KtYig%OR|08ygwX%UqtW81b@z0*`csGluzh_lBP=ls#1bwW4^BTl)hd|IIfa zhg|*M%$yt@AP{JD8y!7kCtTmu{`YWw7T1}Xlr;YJTU1mOdaAMD172T8Mw#UaJa1>V zQ6CD0wy9NEwUsor-+y)yc|Vv|H^WENyoa^fWWX zwJz@xTHtfdhF5>*T70(VFGX#8DU<^Z4Gez7vn&4E<1=rdNb_pj@0?Qz?}k;I6qz@| zYdWfcA4tmI@bL5JcXuoOWp?ROVe*&o-T!><4Ie9@ypDc!^X&41u(dFc$K$;Tv$c*o zT1#8mGWI8xj|Hq+)#h5JToW#jXJ73cpG-UE^tsRf4gKw>&%Z9A>q8eFGC zG@Iv(?40^HFuC_-%@u`HLx@*ReU5KC9NZ)bkS|ZWVy|_{BOnlK)(Gc+eYiFpMX>!# zG08xle)tntYZ9b!J8|4H&jaV3oO(-iFqB=d}hGKk0 z%j)johTZhTBE|B-xdinS&8MD=XE2ktMUX8z#eaqyU?jL~PXEKv!^) zeJ~h#R{@O93#A4KC`8@k8N$T3H8EV^E2 z+FWxb6opZnX-av5ojt@`l3TvSZtYLQqjps{v;ig5fDo^}{VP=L0|uiRB@4ww$Eh!CC;75L%7|4}xN+E)3K&^qwJizphcnn=#f<&Np$`Ny%S)1*YJ`#@b_n4q zi%3iZw8(I)Dzp0yY}&?<-`CzYM5Rp+@AZg?cn00DGhf=4|dBF8BO~2`M_My>pGtJwNt4OuQm+dkEVP4 z_f*)ZaG6@t4-!}fViGNd%E|2%ylnzr#x@C!CrZSitkHQ}?_;BKAIk|uW4Zv?_npjk z*f)ztC$Cj6O<_{K=dPwO)Z{I=o9z*lp?~wmeTTP^DMP*=<-CS z2FjPA5KC!wh2A)UzD-^v95}^^tT<4DG17#wa^C^Q`@f@=jLL_c3y8@>vXDJd6~KP( zurtqU1^(rnc=f5s($#IxlkpnU=ATr0jW`)TBlF5$sEwHLR_5VPTGiO?rSW9*ND`bYN*OX&?=>!@61{Z4)@E;VI9 zvz%NmR*tl>p-`xSPx$}4YcdRc{_9k)>4Jh&*TSISYu+Y!so!0JaFENVY3l1n*Fe3_ zRyPJ(CaQ-cNP^!3u-X6j&W5|vC1KU!-*8qCcT_rQN^&yqJ{C(T*`(!A=))=n%*-zp_ewRvYQoJBS7b~ zQlpFPqZXKCXUY3RT{%UFB`I-nJcW0M>1^*+v)AxD13~5#kfSkpWys^#*hu)tcd|VW zEbVTi`dbaM&U485c)8QG#2I#E#h)4Dz8zy8CLaq^W#kXdo0LH=ALhK{m_8N@Bj=Um zTmQOO*ID(;Xm}0kk`5nCInvbW9rs0pEw>zlO`ZzIGkB7e1Afs9<0Z(uS2g*BUMhp> z?XdMh^k}k<72>}p`Gxal3y7-QX&L{&Gf6-TKsE35Pv%1 z;bJcxPO+A9rPGsUs=rX(9^vydg2q`rU~otOJ37zb{Z{|)bAS!v3PQ5?l$+LkpGNJq zzXDLcS$vMy|9sIidXq$NE6A-^v@)Gs_x_3wYxF%y*_e{B6FvN-enGst&nq0z8Hl0< z*p6ZXC*su`M{y|Fv(Vih_F|83=)A6ay-v_&ph1Fqqcro{oeu99Y0*FVvRFmbFa@gs zJ*g%Gik{Sb+_zNNf?Qy7PTf@S*dTGt#O%a9WN1KVNj`q$1Qoiwd|y&_v?}bR#>fdP zSlMy2#KzRq4%?ywXh1w;U&=gKH%L~*m-l%D4Cl?*riF2~r*}ic9_{JYMAwcczTE`!Z z^KfriRf|_YcQ4b8NKi?9N7<4;PvvQQ}*4YxemKK3U-7i}ap8{T7=7`e>PN7BG-Ej;Uti2$o=4T#VPb zm1kISgGzj*b?Q^MSiLxj26ypcLY#RmTPp+1>9zDth7O?w9)onA%xqpXoKA-`Jh8cZ zGE(7763S3qHTKNOtXAUA$H;uhGv75UuBkyyD;eZxzIn6;Ye7JpRQ{-6>)ioiXj4Mr zUzfB1KxvI{ZsNj&UA`+|)~n}96q%_xKV~rs?k=#*r*7%Xs^Hm*0~x>VhuOJh<2tcb zKbO9e-w3zbekha5!N@JhQm7;_X+J!|P?WhssrMv5fnQh$v*986uWGGtS}^szWaJ*W z6fLVt?OpPMD+-_(3x8Ra^sX~PT1t5S6bfk@Jb~f-V)jHRul#Hqu;0(+ER7Z(Z4MTR z+iG>bu+BW2SNh|RAGR2-mN5D1sTcb-rLTha*@1@>P~u;|#2N{^AC1hxMQ|(sp3gTa zDO-E8Yn@S7u=a?iZ!&&Qf2KKKk7IT`HjO`U*j1~Df9Uxz$~@otSCK;)lbLSmBuIj% zPl&YEoRwsk$8~Az>>djrdtp`PX z`Pu#IITS7lw07vx>YE<4pQ!&Z^7L?{Uox`CJnGjYLh1XN^tt#zY*0}tA*a=V)rf=&-kLgD|;t1D|ORVY}8 F{0H{b<4^zq diff --git a/docs/static/img/favicon.ico b/docs/static/img/favicon.ico deleted file mode 100644 index 576d606a2afa84404d8fbc627efe115c31950ac1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 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 H4}Jd!<{(Qx diff --git a/docs/static/img/hypercert_data_layer.png b/docs/static/img/hypercert_data_layer.png deleted file mode 100644 index 6978885fb12df9bcdc87ea6017a3f5f7d3a23ffd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 140253 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 z

      JrX_jhZ7>mDIqlan=51pm^`f`9cRIz|&D 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 z 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 diff --git a/docs/static/img/hypercert_example.png b/docs/static/img/hypercert_example.png deleted file mode 100644 index be9b915510146686c2247c8e264fc8baa6940904..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 166342 zcmeFYWl$x}vNnpl!vKRW90qrHcXwU5ySuyF;O_1YgS)#s4DK?(z+B#U@3YU|aleQg zC*pqp&RVM@y0S8#%6c*@dv!;3go2znA{-7J2nYzGq=bkP2neX&=g|TK^(kTJxq1Wv zA+_;T(QsA*x&iDR?MyAKO#sdw_9g%mcMDSx5cl=sEKNr|&ZO#{`ba&n-L&sPb5(A$ z6W7;(q*pSR?#1qc6bUkB5|FmHuXy2(Km9)5I{xg-OK*23TTypo%;YXAxAq}V`F%t` zyWO0=zkeLwzf=8w>Bu~KE4<~s;ywJo|ZXh5VjT^pO6uk*)leLhjeKE!38a`riEddcD1M zmC4+QU0%0%#9gjmSwiT(bBNjD;)GEBYuqngdhvPb#nSkZ*m8rO|3xbw+UU_v0vLvB z%W?e%7ez$QJ^hV8jW+6f2(!{fI}#}K3b$f;;eak4bsoYi`o@}iW4rP0cx@ZQech`~ zYhT|h{_*(zt(CA%-2)}?4;`OHU)yBUDuQsr!cJFAxcB~zCH?QG$7jMJR4U5wdYX2F1x^xfwW|ERK^@KXn|ZXrFnc zXvzq5w``tyHh<_4!^kxliuFzw3k+5Y2?%8xiV2n) zM`jrwch=G222Dn;Aw^=N%1~(Z>`}N*^P#F9e*D-!wtOYAefopLSvvbZG5WsK_O86x zVt(>vzZI^zj8Dmj-TmrJTC$IP^^02`&S*HMD?ZXI40{Yg`dvG15T{4e#<4ML$%_5O z1%v$Q8#+D4~*H?^6~dB8!|5t)IwmT&ac_MU+Q-J)jqEyI>r+)GgHA{d&D zi`Gm9IA6jiMqFSC$HE$YB03<_IpnuJin}V@9^+w|L)4_%SrERTcWeS{O69joUVX0G z+Y^;LvhX5`-aFEot>FnEW|IWixUlVZ3RE zvON-nizX$Fj){x5F?{6XfgKdjbH`keKANNZ9g2=_--m?|#YE2pq9#i@pcrso(m}Km zy|jpRGvrN1mgpI87rSql(M^f+tu)z{WL<8U$QV2+e8e4jS8`xMS!suhYa}o$n#(x) zDWmeHbiIwiXcdG_lU7BgeKW!~=&1|O=#v*2i`4*8F=*d@(%jvv;!3E>BiVphQXDrp zc8d8^fA1nv77a^p=$*?}pmYa=7E-MsN$Qm5ltD$@T3pHgy%Z+0%zqkD<*IxDO20B1V`PEVHP9ec%}QYLT(1azT3XkF7c6wXW?o` zH9@W+5c(iHuPP*+6QY5WEK@{&it|ifmxHE2U-mJ5v(%2CvsTH3nV*an}+H z`+9SwI|)xfGCMy5dQBskv}{dgYQ7^yk@-q=2&}jcFVKeh<>;JP*gPHhJQ}iqWyi(6q*oDz zAv&5O0sRpX-h6g&!GK$jWrmO%7KtN(GK;HWo!8e|bW~8Xk8>PA`kg?tL8>d06V_ge z)Tojo$r9xIKCMwf0Sqh|NLvfNdovpedt1bM$Fx9~?_4N=;5CCpf;2k zknb)VFe5>~jn@u!K&NAW#a7ao0z-a-`ra;$ZSz<&f#&2Do=c@O(|_IIZ%@2)i^5#t zxY9-JbcLka{slNm_7x71?GAQGKsF`M1lAj8*OZN7n};Wyjp$ZT<(en0KAj!lfr5fm zE#UCt1c2Y5+9xoTh1bhlT(+%4MgSAu#9PoPCj4Sdm2RKSRF&_Yf3n-QrKtinZCjfP zzXm2b%+m?F_K0=}dsNF-&Yj?{V_=V!<}bi1yWf`v&(J`b3M2T%-xv=B+5mJcM5GKD zEl43%9}o=FAe&M!GfHVtgs!Bck7>i1EYj1j>kpf#StVStOOF+8u!{k(9*=)G5<>0C zlcGY5H}RK3`K(o;oT>D%c0vQP0mX>mVGNSSEH}O+Ss0_o!MF7eUVCb-=r@RADl9ly zkl0o2+*JN;yy_{|IN^*;s!x$)^3e-m?1~Urj8I3&=9a2zUP@I2jxw1`GE^OE;i05s zL@A;W>f06Sp(O7@kAki(j%!I|H)azQy+NJNAWex*AmrZSreTO2nxJmMpuI?Qxy7PT z5by=s?1@?Zp6Q{0f#GRaCe6Fw_<;UI*|4j1iUDZEytYg~$#;M)P1RSF8mIBSnQ;hW z`Wy7(4uLqae6Qu77>i1d9mqq7`~o;sUJti28hPJ(Ac8O}g!rKvaGTn})krOJ!vYfu zB{Ix0py`N&;L?R8O$5REeKRv**Ew z6D^C0`X_(wF7rAwgGs<`(E<)?^$JAD^nL!hg zJTE53g)1a~4>!+hD(Fx{x5p;awZX$AN{yK}Zo$exZ-~ovU`6yRVIZ&qRkMjLneIH{ z7|HI^%H3T<$LBAXv!E4=32J`9q;~*Wswj8Cju;3vkVwCjIZA^xb`O~ai`qaP!oLNd`yMCKp}P)o)bY`lS~8qiMkB;OUuvomF$g&56ZS*|8{7tvfT`}^F{ z`h$bOY0ZLsX;A!OrJJzr(vR03NVdupCP3<+{Ked~XBRx56Qf&^t_<41+xnL!4iyjD zHcP0n1hgYhQN*-ANbv^cIyhH8rN7>T=D9mJX3xGFR0B&TS2{%);+P7|6Hc$X0|J7!PUED%4ZA{9UO?1#IsnK9+SPAP(csuNm4gO6Z& zq;r{9oT%=Nw|Jbn}q;{UK3W$8KvyAQ9$N z=nCa-Fj*lKxpnwB=g}n&89TV&1O!r*!-!10w_z!MME0u(EH_mS-77|VM{p#Hk?=1` zM7Q3E@`M{ILT?s~Vk%K8EVzWs49f2gOc=+kURME(f*qq%T(LMAG%Uy1#*xXR!?6SU zE(Gtve7#ykX1^$V!9w@aR>OaMAI1iDm23RD67V5HHQYbAn&UGP#! z1;pUONdR6JW`=3fB|cRLLlAOYuy8MVk-!q|(J!ee5AzoWjczdIUV6FYsQBnw+`GP8 zwI^9vqa#;754cg%bNiF7V$kHh(FY=^f(-2Y3jZ6(RVW!!hqbtdZ-3Ih{m{{|8Vz9p zKiq~+yt0fDIENcYciG-%64KG-5>{u-#*s+{XBHqwl7Rl%Sb|G3K1Uo%FK4KyL`WxQ zcR2OCHy;F>B{}8>+SBkikv@dkp=Y=99Q5helKZjyXH0eKM@7?X<-vv&epfe&N>X+?T#lfMD& zz~EUegIh%S`qoth_DF+Rn5Ic3#ltdQwJz;c)`IBTO&3r-6x~%*a<9>CL_E(;hy{mH zxMbp_LFix^rT)3l?avGTwuEKV+J<;RO&Jkcw!jxcQhjQo?{qr#SptK?B?5%IV~`17 zMbB+vQ0U|YtD=q1!x`}4IidLom>jDf5Lh0%6YS|E!h7)*P^o3P5{)en0Bi9A$WP~e z*|(mG`Z!dXfef%k*W(U;GlDE!Ybo4n?}iiRX`@!8_~8tsUtqWOj2zpykus#VVSgY+ zUq#xdswciX!XU%ID~+Bh`5%EWfmF%~d`JI2+jZgylM*b37hpbWE8tOy8}eap`IVeq zE^scPi%7Tw6g<>f=YCAnc_<{@E0BF+E~M8F0ed}9LR|k5ppe_Wb>Od1zpIEm!d}h! zETf|NCCF|#kk)`V=9^^IMgNpQ07PZX;-DT1l+GF2M3-i7@XNwA8I$IBxRZkWVt5Bv z)c4!Dv3dA>7J;~~%uxbOEJ~7&oO;DWr{pSZ5F3?`Y?b&66?5s@c9^@tVbcDP>$A0J zl_}UQ^_3aqBNyE2wix2;uF< zQ6o&^ZGR6DnbfLwKSl$p74=93Fk&=s(G|qA2!3;;c#qoZr*g00%TE*>tcazk+s5*h zofn7zQGX8(gVR@bl?Xvnlveh;l57c&HY*AH5v$(67Rc)q0NNefj0Fg z&;Zl?(j0UL6^L~P`e%#L2WIs-lh_c%Qq%Sk_C=E$@yh|0>O?#tyHP$F!Y-YmBc<}Y z*p^j)DJHR~7-ZhT?x~qfI$r^E+QA`e4u-dIz)_mKq_lYgu=ZQ#Bws|y&+`L5z!t?(~2MUYu7p%juRRWbSW3v z1i53YNnUQVIF*U8nZkt@o4iAkDwz=gYdRJc(Rxnt`!_3t(Ic(A3*KgA0e`_mZH+mG z+n6rI^)U%I);`R~G{~cqjpkYAj+fr#fm+n*hXpd1bY{Au2v!ZodHf;~g0(3eT>GLJ z(QypfEYyZzq2;=QsIPqGhN%xU}L7HUxg!OmOW=~0qf|Gu9 zN*^QC-QBVoBeAG-EpQaRqd@VH$y+~(LbfK!2IthE(ExtgYF~qagj`ww0JeB|$gf{< zb!4aDg6tWFJ;^s2q{0A5fddb}@(%)_qHq{6S6#Yn87=sEXupPnTvBN0TLO1w8H)TF z^A2A)27}gREt~AxzLJIc&mTQ^#WFfQ28P7M6&RBiNTi`nV309@^nw0P)G?-{IU+%0 z-Q=EmRy{*;>RQ@f%`RK_pS4R(;r^{=m#Be-QAk@WK1q}xe1JcM+nft+td(VH*e;h= zV43I_|A%Hs#IX9e^Zw6ojKuJ;NWC62iBLXUFJxr_=hh&6iqHzA%i-!TI=deoAX2}p zDlLASVbnE?U#>zy!I!UTtMNa`J&$1Ez!!oU0Us=NXEsSqG|35q=TRcjaYuhMGXCgB z9#<2fUKNS_-Rv)bN*I=nx{ygTYXflOLz?=7=?}5p$)6e&4S1YG6oZu+jw$JXAaoQU z{Kn5d=WO{+*7TCwL>+Mr{xCeg1Ep3y&pLN!`ymz7X4p!*(>#NYGwGX2$uW5`hVgH5 zni}q@_YEO&rt^ff?>d62KQdVehPFXqAcEP^1Le@()hcw!_D67C3O3`Fc7!hPG!LP}AkTH_v#j^BCJdq_q z@Utl{%yz3EIJ=PU!$a$8#t-(~b>xV=Y|d?fU6Kmd7(H-=mA=)x^Bq7<6X(##6r7Z9 z=9B?O{J{FQBfbcwCVdlT0pj8)u`Ff*E}S|1Eg#PIRucc2IfEib|CN)hFCr6+Y{IeJ zvaNcyTbpHBzKesOy;D0{Lp}|M;=AY>xB!!wNAp`q>`Wf~*@D!tIax`lX0jo^{|lxa z$y)2{N}&%kAaVAE0({XqteI%O3ZGI%5jVBzM{53%9*WO=)_G2@Y0hfY^YL9;~GfW`KSa&QgzHV9Y3*NRcPU zDcF#P)RRsQjD&^@|!FB7=U_I-DmnV2yw zg>9q>x6u#@YUUwh>IGK$k)7(mI+hC+>Hst&0qOi4yKoMJL^~%&-!fz5kWaHoIbG&d z(Uxx>7-7UD9LIOrEUBX8U-$d<58rVx6(a_otftjl}ZrB7=F< zu)-?&S~lj8mzDKddBEzgs0`Tc=b#XC*e0ZpiV1Jk7Q8DduNx~(v3Nr zO|>un#Ii~~$3lCEt`V1KA1@%okMrLSaBv}le--H1ALQzqo=NAnbW}QHm|EWcz9Jc0 zGJUoo6TZH$66IdTdEb(yalyjYyyeqWLu)X^cA%em&vDfrC;Clml&^_7JE$ z@RUiB&fI|Bw-&JE2pI&Aw<&XBWG0SSD1O6y6Bu!E*IR!cxUF1%8?63M7r< zU?7%Xg1p}{GWaN?^bpo@P1P(#K#d%Eq`FO*_v?^zFK1-s1*w|D_jNc9?sYr9Aq#Ym zdJ6U3I2FG-03Ew~1T7rl17vuS(+aPKI-wD~ho;O9_(v@_)=6k@zVmogz?4s8VD{_+nl) z%RqJDWL$;gS?Z>OOD605DVH5(5DRDQS=pNgWDlWq@Ja0=w%yczNRmb%GI*vXn^WYY zq6);yQK`C|uzK@kPj423;F(>(;dBWntC=D=4hxJrs&VJX_xY3x+j5zHK1O6J zlV95d3+tZf*_tDl1f|s-3zX_Bcf(=)a}$X|6@{gP7UawVq1;`?d04Gm{d0ytsvd^4 z$c8er(1y%Lx^*eOK`A7~o;a)(T+2vAOs8XuN*O@xW0Dk|1-WdV?Vw$e3CRuoHuv2ljfv-YQ*-q@B*~$7~184?tMdT{QGpw*EI4L|Ouiw)egG#|AxG)F{m>M`WiLdVYH%d^0EGn;vM}k zxx$qaxj$;CRKs86D|=GQxFahHLd5haSGhFIZL80jP+AlCG6B&nRWQVCX99~5l*l}P zAbDxuwO!@*IRt83WvYoN+a9Otk1btC_>&?^e*tWU8VN5Ku-+Jipfxo7`V0=qHt0Uk zgr>ILs-kYt$uYE4B3jZMNvOC5`QDP)as(=Vh;a2k31H6abwqowX5!g2JbC*vSbGA; z;%d2zKbz&<*3RoFCqy%L|1@)^=}}DELBkrDJohF1;* z*5MMQHHvW$*J}Px%H0cg`+b>i(LXH;vukUMez~cV$_r{fbSEUUh4c%cH0I!_K#Iy< zUr$!SyJcx1o^bC4LCXPnPjdkrkst+dfv}$f3-nqYgl$FE?}X+ry-KzHbN*nQ&==cCAZp=&8a>#OCY2iHyXiJhALKolY)ihV>QcvV;N6>f`d2({- zGk>i?;e^~GwMw9_mhd1ZeN?ROS_-xPrTve>0!z*l1a&A||H-P$5KxxV7W@J74Ht%T zrhUe|QFz>LV}vyc9#W&N{Ahn{0bxo=V_#mfxdaVuhnx{bc&KqK4@a%aoA?4Q6nixTKXSKp!Md`vsvAROh#x7~T@;0Pn73agFMJ zFLQztE~v#JBC-@=8-C>y<-CDd)k{Mr_Q2C*CYD97DQiZ^DL3)WfjtWHhY-E0nLY#h zR>}#D*5h}U*$G>m$SCzAaMgUZr23%gkFOu_!FrD-F?Jm>}G0#^pR z>QJD|J0GT6tb|T90Bhd*YMerM(q7^Un3;DSaXH-fqO%Zi!N5oA5dzIeg9%kYjl9<- zNMCK%RA}-e+kh6eMwsB^(r%6OGDB#BM*BWJ7Rc)|sa}4Du2jZsM~ai$=hjJi9a^32 zBTfaZaljS!vN-niwA7ck8T@*i-#bW|cS1`pwJW+99}CmR&N)JBHKw9k9r2}l3RQ?S#KTd2vHEsNm4?7=Sg691vYcuH$ zhB>t)8a}&k7+vnVkhvm}C6gcI#hjCcaRWMd8LS4(&Vtqrnt^ems|N-|zb#iYt6q|~ z#BdWWcb*e!nb)!ow|AXHyms(TI%gT;2ov2mE;&+$By^F`viAU=!?HxzrDDqf|2ghO zH%Qqnhbbk6F6E7=QFz{K(!$neRkK`$lM62?F6Z8K;2nl74C^~|0s@=*^YdKyA@Nv0pA2;YfmOcl^sP8O?kzRYpnmN6Sss&KzGA6HxvSI24z z&=gqJWM13*Bdx^<`KTsxCG>Jk7LA}+Alsd*sU0d?fnU?`ox>n_Y-cW|JY2aeX}Sp_ z-b6ec3`=Yx>oK_|LvZBa}LmE0N8&D7cpv*Ew4nXNaSdpl83;2p6MfY(jTwE?hwM$h?{fa>>eKr^;=KBHQd}o?Jz=szl2dfj#xy2=aJPqIO zw@Y?E22k7h%!FuB)S~=USDRsHt)Mi~Nmrxo>2^EPkn#V)HgxNi0D4wF#PeGEKK+o+ z)8o_K*jCpK7d6whRaCOTlN*4H@8`Vkh2Fn@Bn471ZQ7-5?_Wh%!mJV&XsNE(Y4sy` zM(Nl3!z+s{3L*h2RfvlDW0N2@K7aYE}ZzL<{(hm;Dq#EbaSU0UD`se2CW~l?RQKbB@2^W z`7{&C{nlJV<6CS72FBZSP#PaCyoWxltZkW_NZqaF;ygja(`P5YmLoln&GwPy7hdG? z71Vct=L!{PXW3Ah>c|+VGb`B(NjfDI`83oKiwJACdG>8GYOR5Qd<#XmJVVL(&F&`` zNql_G-r4>&%ENqDn!T0K@3Edvr?c!5h0Hzu#Yh3>UZkfUyG7_r2>uLtlb}!{-tBiR zTuR~4ZnT5XZNZ8*MCQ1XPnZS}k&If`4`-?__`I_YOC@$|CDYbM8n|7ki+D1C!^A3( zCy8M3LKrd14N4qQ&j!gk1-I{wx9{eJhK(zb?nA{y$@#wA2fF7LzlhW z$yl0Gxpo_$x#_f;ZhhWdHMLN5{iFToU6w&tXNPXmRr%DMsbacaoUc#P#=B28Yl1|c zI0qoFe5cLMN4+|t9{XPQCBT$Cv%eBosJ)5Pw3P2P>XE$gO^BxS>g!+wCTLg!bs2&R zenNs(-G@+}HpNcM)zWkflSsm4bV=tfMoxQ-gJ;Cj^8H~-LZ{&&MWy@I+E`^<7V9w% zmQu5Q_8=b{&$8YC%4VQ9Cp=g&H8b#b^{B${qis36h!M2f$p6S#`lE zTW70F|Baa_#G9M==try(g9h&@^3yWNJ4kI2H<&}w3uHRBOU+p?Jb1BW&j+MdSgMx) z9!aDtBDA1t0(JDnQ|ep_mxPPl^y`xX^6O*rt&Hv2=0&OOvWxMni-iHxUULpavhrf+ zi?&bpN1W&4g}U-9evBwQ-m^z*x2=GW_&x?ff#>29_uImk#XpO?J_{kv+BPFRSagYgC+Y{Y^bkZ};WJX!u2mnvDUXu!U5?Vz8Sgb-Z|A~yYsOW)%A+y< z#`0A&Bj7#I;(g|-K2`D00gCW_kJx2kMR8`*pJ9=mH1Gy9nSx1`O93Zm7U~ujS5hxY z{MGmxobN&h^k|BGB667NI~{zQg9=~&-3&+vsJ`x8}$zh6!Ixl>~$QLU6qUFNiaT+&UL?r3p zfT07A^g*MBuao8CV*drAj}S#2i$WBO>b9q7mUtLG?%83RH|+TeJXkBjLT!UG@3bXd zYH&!#RTQCHNC3nqP3-$5jgeYn;!Sm}*I98#)Gf`Q9{x)0DNO{J@ImHD2Ah4C{V~~% z-7a}Npr|Gp9|Zy9Y2aX-jyjL;fsVcAZaOM+b_Pi-N>m7@npWBu*%CI;E`P5SVo^u*4WDbpdGBgXSxe_3;JwZE=3RkJ5)qqs^dV zu^!3!g0Anoem7n%YQEl+(r_aIPgo-_*kD4P0^MgEJ0r2m{Gfp|y(!xd->rHVDNdJ4 zFnPf|TLPlaOG++4zjF)xNg~Q@poX-7ec`$B728RM^t20@R<*N@amwNYvB*%pgW}+T z2!&7XKEA(-U2cEhSV-GJ)_ix&#{F>4{@fwvY4N!eOhZ!F}INLbTm=+lv6SCv@+r} zCg$gZ<8kNu1h6r21_In|tZkjR+v6XLVQOKk4!Y|lkc@8;%4=f+HD=V(UH$jQk`&%i{_ z#6kM?KwRIx-3*sLbA|_5oju!UL7IwCPzc7J@b}r7m#KfQdfdBH(#$HzT zU+}h0|778l4|;c?Jv}2G1HFw6{l8l{Ig7e}g8b8=|D%PI%IAhUdL!RCW3smGM7@6ql4$_?N|B6qs4q*#B+yN%nte zI$N0jH(CGT+h09@Pv_qq`859*?tf_i*WCYB{?w9{wllIY z=KA}Tlaqmo(U^sa7RbQCOv_@zXh_RpV#r8qWNKn!Y|6~c4m4r^Hz-M4Cug9ok;z|B zpWt*BpEy7cP6kdU24-4TV>T9A7FI@fT0@|*AuTf#6PqzJGb@|1>AyqBJ6e2ZCD8ic zz4{Bv_!El7gdNCa`k5D;z`wjKxtfWi(`PFF1^66aWOEee4em!a4|Aa zGca;7{F}a=v4yF}|Cjb(s|UdIkC;nXIDL-q@wez7OG??q;UBGkG_5WEUP}PL->ZTP zX!MUMI00QvjQ{rY6YC#cM&>|UGn3Eq@y~qyFS*74As1LV4NW*W*^Ov{9BihvEXHg= zS|GbAC+%m81<1t8Y+_`{`Jd=ccBam5Kt~fnvrisBx%$k{zqtZX{v%RU|Eca~Zt_Hw$f5h+q()GV|{f`*Dk5Tp zDElKuFft9p4Z{X&^tslJYebN-k3mxlqF`{tN`YxO@^Oe+B*TpKdDq2cA=!hhIfE8* zg!ZeYba z{to8`XZd3y+#6=1vwD?UP|e>q#|rf8@5SHN_2Di%nssnh%@ny*AjIL$*JAHH#VU_! z%>cmEPZq*8-&VkUSKG7i<)c2 zl^_OYxnJrN&gPu?b$xs4F+s*ptqr}XO9I=GA`bx+v+&9{^PR@83&%MkC>scIye~W% zKrUwJ<4qTCqw_GLiE}F%i`DI|_+kq`R+bqTLL0)Q*Hmk6!mYQ~1vPzojq>gMbixE% z+O~5E&s;Oq^Da%^8m2TW6Kk71mHLRwtJ{s$)jKQBRvj6QS86d2E9u<& z^je+c8CT$0%^TA;+(oHTBXRY`!21g%8=7%!M}%T969lkiEfgaZqk7Ef0=Mh^?RXWh z#Yn;UGuB6=;`*{P#iDKTsWfe?jTg_G_0I5C+^6Sf4YR3suX&_nXe-8`ccP$XczV4~ zCH=xhYWD^WrtY@gu~NP@KVf*{hT(O2?SxjyH{_Ul!sax2lGn$>7CyNcc@k8Qk0&|yX8kKQHx3Y~vHht&!axl+gHdsTDJ;}3U{>^b}an<&Rn zgGyy+Rf210#2C(@>KSj>H9>vr{MpzW)<$N0m5@f&eNADBNBhO!8AbbEk3GEZ4Yzo8 zuSpai37oSkY%QLVMLBt+ivB!!3RQ{^-;*sYLCW*rk1g++hdJDMYU4Y*0SH@HbH7aN zMDKXttN-z1?^;mThezGEtMcwN_(O@p@}X+R)KN_AOpuhdbvYesBX{MBX?@wZND$ae zi7Hb5Ix_`!?Nyl#tgP+hg6=aQ>WtD`iYn%Ev3cj*cL!;?M}od)o{e1_=kI?S(Ry|&~Zo0z>UD6z0(XDFcow4(F?%kGK%zJS} z8d#CTs;kSCA?xwwE@M{N52%FB zm-aj$qu1D2*7|Kfc;YDO8!c(Oa&lZ(-7S?L7+JLlE!|0{^`~Wn`thBT1q!rS;Pi}f zW6KX7p4CXNRvoqP-Y0M_{J?hQlH2U6h@J1fn>?s_UDT|8O9dP}*(x`~9AF(E8Ffyk${^VkB&vEZ?!hetQBiyTvx;Y{ixr9R>d8{44 z*t~UMPYMD)lD82soOkKpo8TK2p20TJB8hYgZceT1B_Z^4Lo?g>ggXUoV&jF1EydVm z!@BbANcqjN3~wffvczy+J(Gr!^qCJD*Bdb9l4vz^Fsx21+s726jYxC=S$TgI`^i60 z6nf+*Zksy(oNpqi8fr?TYQA;OIdk_bv%P3qE*p053>9=qQp!mDXzo7e!5yd==VmR53~#z~e?6ValMd=LXc8i# z)IPY^daRjw#N-}`JxHUJsy|fn8mTEQ4-NA<>i(vvs#3~Ycp80R8#UD8w9)BvgcsWU zyy4`ZB~jbWb~*q=K(Z`~G(-imq!Sf{KX05FT<2C+3$GwoW=*QF%4x;ZLwy9dYTyM9 z-L2eDk-v9+-5%@I_hG-;iMYWM5X(+c^r6p#y~fp1kvw;3C(wCr4PfkL1iPA<_dr<8 zEbY_By;e_VDLc_T-|zr5Lm%OYTfGrD*%)NNTJZL*16;3n_*JQmK3^Ptzs|<8l8l9( zKgj0|pok(9#Qr3dn7-rODO$oQW|@~~6FsvB*iwUPyDhBZ$J`v%K71&bqwiC`?c$uH za~bIxI^Bm^g?r8o4dcR+F)R*|rmqJkltD@-uo#kdNn4Qvz0k?VRXg9^lOulWZqP0K zO9!L(tFXLV9*cr(f|(2^d?ZaN<$WK~WflL*n854U40*|yM=OpYFsIVlP%?WmQIb2$7rRMJ6YT;I+d}sZp4!7v}wD3e(ja&gF7qMf29?c6Xt~m%2CU{ybJ9c!n*Oz4o$Yy zpNJRl&9$sG?5tkR@wo0sM|x0n~#LTAMP8kY>h6x zRSqnN2-!`B=oSqO||BN$7x+@+wz`W}0% z2@A046v#^VHZ|q9xn@I*PEztz8gDI0Do#Y%TO?(Iz}5HlrbkU zsgsqAJ+$;YTmZ2jUWIrUD*-N5=wxesT}#g2r=whkN0*^;puYLxq*X7((h>{hkZA z@!UO28R>ecS<$#|Es~7xSBN}1>-$3AeFxWhiKCsGa%)3hYdTYAYPT$t(<>ekKj^@# zQKFZs+F!HX>w=+rB-8YSE&mg*<(v+FQHb~5hdmlB6grWEK^;A1t*_m<-iIwwDca0w zybB;5Yi1pgHDwh(z|#-}-pMw8Eqa()cyw3V_;@_V-@1q2ec!x8A@zY3?8esPd+yK_ z^;6WHqEtgNt{PC9Ii~6VE_*&}Wf>(}mrrwIH$q5Q}VVp#%(zf-D>>8jiT1p5?|}Mmi`2eQ*p+ zc;=~%C0^;4<2)#lGsr!*Z_<#l3cVQHbbBs4Yp;JtoUbZ={aG+N)|k9zD9M47Ksw?% z;2gT#{o?~@n|*#T2+|ofIW(2ozKbxtQiEz{vq4_SGS~_k$z#NmUceLAR5IRvlj;H} zO_JRf0lm~xeq1v>EtUErh7MiG`8$(xf$O;f9((F|Fw7^Up3rE23M%EhYJ(hX zJC$ToFsbC6v!X~QLNeb&UR|<>7Cy;#4vVbo!YftP~ab1lg^vI&Wv|AB&NE zlas8~2rO}``3Y3#I9zSTpUD+hRxH_yhhH@_vP95Z9{W2f(*@@nSo?i&NdjpQo^ZR4 z?g+n}Po4iT8sPR^;pQim`lt!_EDqDp>4mzA2x;tHlH9jW3r=*BEPB1RtOJ#iC9#T0 zJL{61Xot`xB(Wk2>a$o6EtV}1<#gW%VXC8xF+q8K5VEEiv;joZ!E?jFhW%=&IAOOy zOTt4o0Ji8brcd<>DIUsQeSf;Kx>e^2KZLkK;S8aJ;@3`K=5YT>yZ-ckPS5)5%6rZi z%PgkM)z(ECv11SrM3Im^K2fAtMV*Idnv=X?LyWF?8NP4O{)5u%=zD-L+lBxi_p79OtEy^7`B_8C-2 z{#*(5=47xl*N#IcTgWDCW-cep6`Kj_sJ~F?%~Eu+eSUtktOQg*L^==MNKKl-QCicH zsUq2nVlIFGu{MJW>WpgawzI6s(p?ZB*gug&#c<-@zh#`(cVGN8S#l3qc#B~qwLg&a z%Y85zvO9VmmQ0dCxTOvuQXYHOR)i0FOkq8^q?tn$$Lwk<`!y8paQ*|q26J;Z>^o1j zhMrD9$lDukG}R2^F6?^+F1uGGBXT9cUh+rjGtn~9`lI{o(`1@+Q{B=L>$29BZSJ#T z>jz{@twp}>hL7z}x1}+)jYFj1`HV=}S@-5;*I^;5rt3Wqf`ZC;J+BT=9V+rhNCzAz z8AFwWlw&AG9BLsd%<3;v7+M(SxdXQnIVP)2Bc@;3WH;JbO3Xcahy$-*x(;~td+#%G zmuGSc%aM?a`V-2_J=X8rd{4hzo92>Ih7#8Do%NhfW0xq5Bv^*)#R%?n`-YlPL>WVf5E&)a=VsO9&*W6piGLA>6N z+UBR9xPz`g#;wXcYbgy?8`Rw_{qZ~oK2MU;iXxb4($bB%bn_a`s9JVNp5n{x*dYCM zb?b>QwVsZ$nN>-KeFGI1WQrY{;MmW6fzV;Y{DA*p=w> zWyse_e=cp>!Mhk9`Dk#0dxXyw!IXQZMO;Fic9m@;^8dgRY#oe{w5EQOQ(NV+*nLpCXEbjB<6N0bwe5HdYl9^A4mn1l^ObPn=`7vkrIJtV^UV z))rYO>p2*i;RB_1%T-QSPhW{xF$$WGUysz=eeO&re(%QbJd)S#sl5l)_j=gN#w!0qZoIYdtL5=75^ic z&Cge41E?_WO>CW&bK7!0;eD$gIxSSl!DV5!F+BoVfdEf$-1l!2Qfj_IF`KSDV$?U zxu6&q-E6(=Mx(A?MOUM-v!j$+%pIv4y-3dd_Gr`+!y%L6-7sxsmFP#vbg&2$Is2uu z13EfOMMDcPrkqG>+R_G?N{pO7dTkB*EePMZ$YEuHSOBTWC*|cH5Jwp7E;#DUHxegg zttq6L_!CkR2c0lB*+b7G&O%TVbEyssO8#46R+K$Uqq^%=OU^&j}o^yH*&?;;SQ-V9P zXu4C#38NIWLbgI&R)KG)bd2PokVYS;p_o_@bU_S4$*(zbWk9#GIofL)qhAWWUCzPm zY=KV6!jR6!o_fks-{(-+ih4ULToyzsdgi?JP^3T}MmZacUhbrKX&M=lK zotmwtujUmyfK6J%vqH>#>!fqW6`=T8SGEl9d~>fQRdCe#%^{zhmBBL$5&bRK%=1gc z6ca5(|5D^KV@N6Q)s=1CussrrB~LCn)+}}Lmyw&bn#tu3 z1%O!vcr|Z14hFX~UdKzryoIoi?vFuRC-E%2&+RgS2(K;~vc1aRPA}V7xx*9UdEK1DE1oj010H; zet3vA@GBfbYUTj%8@ekhC#0*;Y;A2}q=R6Ld&HYG7&2>7Fvw@>$xS-f;_(dYFl&K8 z^P48IsNrWYXY2wWLL;g1U%iZc3aO!$VR38QJBfHt-QDXK^~0Lz6Ox9$WnptnYng*O z_+(L?NZN%4Fold!l~y@F9@oZgvpX~?LN=Zt<IIVii&9_rv%W! z;b8O>hph6!?97_$NQIx@Z7?$knU$$TQBTZTxd{C@ey>icVNnj9E6&RHWPjTN4?HDe z;f<4llDE0BvdU+rUUvQBQZ0CD#8qJmnfE2?1#-_^BxCTxP5X|RyYE<+aJ`N7N4Jt6 zXQKvmAl!0JGQ|dw7#m9c*BsWCo~z#HvH2=)g|oyPOs+D>NwBNUSyCSxabwSE186DhlMzFz zXl|nw{vQCTKvusZm{CMHj+iVLOqL6BN(_QmJ2+DvayahU@AsHE#b!BWo{{D`K^U@J zE_wd;+nB4*}znk=|`@|45vJtj}VmR0i0g49?n4$j`_vADD`24&u@K+u_T5B=)q2)*9^xXiwvXA=>j=@epGSd0L&yNqnR%iVl}? z4A0OxJhPWie&}JX!pTGpfVFCoAZI+(GxzB5`&=vAEC3mV^Cyr9oiVo7qLr>Dk3oID z?I6ct<((@=1C?;gbUG&pLym_%`~9}1(YO}2x(3I?7{E75x&!E}P|lgCV<_x0w9)58 z2~2(97-PB!#0?Q$5geshE-w%f?(T1DPo+2XXRl)z0uEP?v~p(B8d0NQ`Oa$tZbvsMXRi(nq-`@Efq<79+y`SS#NGQCNZXEpJ-;&8I$RZyex_H1hN7Xrxa;U zjwM`7Sge*L$0~Y>qJZ`D8?r-;n3A$)p9J#>FTeIGw@;rDDxW9}h_jS5POzmRPcuwb z(-5N&>uWAAF7bkpI8X2cA5ZCOBovg!V9Js*$;jdao8%N}Mqx@OlL@=c22+#-K|r{e z;zuF-;}K;_#^DHG6x+?Fa=Nr4h@xt*OZDDf7@~ZiG|#!1E;w$sB)dIf=yQyZ9QJ!m zQ6RR4B&=zZa^mC%nsDFP7vzC$r%2cLo+@Lxx_*cf&F!DKU;X6g{^3V^7_W%@C6LgSRVDF#qV6NVAtXhbxcFq+O;0H!Qjs3K3(7CWwzE4{?#K)`}_69Z`7Lr7arXs3cy zli>|L!`ykWcHp^5M@u?kL%4=Tx-6?mFAQoku}$UHz#|==1ucEac9mPbDmlke36%!I z{rZM595J6S38RSpc0-b-y^OzY4>iH|tMU7|yPIq3d6#V((Q z4NRu=H_T?c=HlX-x2&N-0S4*r2H&352 zo=k|wBc45bLXo9tPvPm1Ni;=8A!;0vm7t>u``w=P^Bbu5n<>j`B#o(zSX^L~5N9x+ z&$xU3wBny@LC+>EA6!%91zITx0>Ust*9ATRwkTQ6rbuB((}XNbQGUS1)iqg~)x{Qy z>9vm^`6NlgVY|m3_XJTy5Jlw2BZu`Cn-@$TTRbf5%`M`2Or|rIS67sIL6N6qXq3;yN)_qThv^q+xelGXhm;7> zXtJ1$C*KZyYx}b42jBYvTiRa)qM>VIjdd{07iaph-PYrCc#MWqD8U$m(i+e634##M z4^Y03?+4XBs-cN2iAmF#vM2_Oh0b$SHGf$3l2*14O*n8w?_L}3-ar@B9l$=jK{&%V z>M;t=Vn*`fB%yKeW*I1r^~67%Yjc&Wny^VJ#caA@Je`pyN4DE_y@|vrhJTUtqBEaP zlJl&?doHY#J`HO~_i^PI+l0pnJz&WsjUoKB{E~kRaqx-s-lt0%WJMy*X)mb(lp_) z-x0@gB@tP{p#+5@m`?~-3z9Oc^qUU}R}UUi0QdKIL{Y?aGC@?e7lNenW)De1Ru-7j zw7g$yOT?=<=~ipRQ;1f0HP1N=LKd?n`{ND~i$Tz%2$Uv29IG^<)@Y?LSn{&04mhnD zPbYYRPZ1}W&7L@pN%9=u4;f8oWQQZ0%`MtjTwY!iMImA=yX}tk-5oYh@k>h}n#-47 zrm#83JZ61JP}-+VGXkv{M-^u;+ zXT-;YvqsF>{EW-S>U=OKf!l+(>Sr6<>SQ;o@8bFq)|&MG*|UEo{>@K*!~?J;A4V!~ zx6!|B;#(`~B$FsT57_qUM~*k?h^wxvRhrn8_2CEcOTkXOcUVi)%Q55p}um2_{FVJ+^?`BMtgI`-Elvs>X zi0|WR&1gJkK3|ZeDVzO<>=3ixZm?F+XiUW~Lx&-=%S!_BxV^b0FLJzb#Pxe0Bc4xC z!fRL8;M&?oRcW?sm6JR;H)(ySnfkIa?}#`6gZOME!; zhN^9fgz8I#e3*FX6wY@V}A6RcSLFkm*G@aUzN zI3ABAaZH})l*WQFcrS1qRL{xkJ1U;<*Oj1I-{+B2{C22n*ONyXL6f1ltn|tZ2X?F-4~LB~(1>V%x6~^B zr#0wjazZ_v*A9|ry~O~OrewXjWip;Jn=csUW7eDd&a-aE$o9SJf%j;85Y%Z7xHHWC zgQzRnb$F01JS8v0@P~MttFN3FImg3}`Fw#fWhElzq}}jAy;v>hyp0datQD)n(IX^Rqt+{q6EIpN_A#G|%{vUK;=x5XWut@v3J7EJ+j+0Wv z=K7848@C=Wba0HfAvb94GoMuwhMUcrBuhRAFZuqQx-!s?tWe2_sx z?@aliQi|zxP8dYo-ggBS_FVnmAaZeAA4#1s6NC~drAlxr3wd4Us!CIZxeWsaAy+`) z5ltsdW;60MC)poKEad-m$`0f+2}1U{Z0g7PS=B~B8o=QE!#2z`&kX3gD` zCs3BmXH$aEW4qZ9?+)mq#H*LFp-Mj0?rF`I03{Z`tN@f!)y#`J+SFDfH4Wq9;Ujj3 z9iz(yo4Z@G!vU{u(U+sg%U+{_;opvtRrB`P$#}dwAvg`i0N`%o}g;lRxv*e9!m) z5A3soXf(p}gG#JAOUaU$B#rA+PR}!t_IL%*SpN(s7qCUbD5~( zP~9wj)w8~<*z0sGyK^^;rjEN48Q zF@11>x0s{ylJ#fbVE6PXsw{vKD+(QsnO zV-2SE?k}$%GM&$Pe)F8o<{po-qs57|G&xmPVpJuD!Wz6VU^<=RMIogvNDoJj$0Our zr3>NAxv3TGma7%Y^N0@z;@uG|iqUw&<%37;k^^{}kspFm9MTwx6T-Zr$|atuG$HDq zb&V!QPKi>QzzgvMpX9J(d%wmeDZWUZl4U8o&3(Uss@KPF$kwsH zQybjz=&j}9%de3f53KK=H_+EN%JhTp`;RU1-TjRtr<~N&vV;?CqZi0KJ9O;({HcHA z-{e31bN?QX9z1jsUws3?0rHt=+!;{P$j6@^5|h@8g@k>Z=HR@9e#n zWyz<0>$mvxf9X5<<=_0Lln9>Z5st=;$5RlY$Wji69dVkrl}jhhADfb8$IEuZ=Qb($ zqVUGWdh8htxYkeTeXcv%Jzcwt#d{eF%2a;^cXh~R0D%heUT{g$I6@n`#8*Wlb3*?y-# zajxB9370c2A3fr&&wQ3V%@{8i*vX9XVu2|OY+j&6pfuRLfF!9x@uH+KB`WZlEM|D( zA*JQX_KwkP%HncG5QY^rc8pm+c|y5Q@S9K{L#c#tzTm;TUggPKZ!!-jm^A0^{+2RN zD|n<%stJ~+1VYZ)jr#Z8R>`ziUVaC*Fg$tdEwnZ0n%dL0aHLIYY8g#pv~0;Lqk z{f?x*Pg|On+oGJp)TSJ{tQG8h-($91A%PI=oezT=4Gjs=7x2=UlX|5l=%>C_i@+_?r z@~45N}})B^;R# zee`2|?9*|{8RZx&;c%IK_GGj7Z z5ClO*KdZTdLKV)4Fvx^+rp(ioP~>#XT-7x-ln}ISE1Y3VoW8)f>KsX_PwrNtPW7ZF z?Lflr1c#@e=xPdL;v~lR1Lm^@rYtGSqTgM@kzka8WTH5o6{J0^#A*GcY7JlMX&|== zP<39y^F*zU({8}6Kz7aGFlEVfGOJ2-t?j?2=`ifljp*bZtvVGvw^)=f9Fvs$^@dUu zi>qrcUw)bKYE_l-8bKu~#o@qlyJf%Iusa-xvlK51882pxr(<@9J$ah3oX#0PxPW;? zW^&Tq4!b+Be)COik`P$XZu=ffRbVj=xxKkzx84wjKC|VLAdEP~X|HpFSW`JP>QtN4 zQgL35Qp_)wj3!g!!;$=WMB7@=x2DpSsuIfy#$#ry1(W%V(RjpRzvuq0u8b@Ux-OK^ zHP>FXt)pB8&nj**#&V2fj1iX06;Tx7Db0Sn2C8!6G>y@LrYsA>XiVS-*u11HQ-m72 zv7n5tyjoi#wycEbQ5b;&A(~AI{eV0#>xKzU#}139ea5o|$6d{DA2wh(X;bE6s*WV6 zI&Exl0?*dAb3B<51X1Pfw&TQ3CSUUYUqs}~1l83|pLi&JK59cywr87tcjc4U<1v5r zKl{)5#((t>oyBRbwfyoYKgkdN*iY~aZ@ophTH-~~Svs0EhCDu^Hhccy``^ol|IpX* z>cjKi^Wk{pZ~V~T<}dy?f30pf*j4WRXcN~3C}2#wc&|_hg*jRtdKfr^F0>4&flgcZ zi~@yXxw;@)EZ8TNT;=VXPax0nv_g3Tp@va_ABK#*NqyKVcH1pko-vtBF#3=8 zu1a7%TWQMbC?p(DST2{`-QBWX-=hUQQP`qr z#dvz%d8v)kv`SDF#{^$_+&_C(!Ev=`S~X@Jv%09@o5N;9o~9IeQH^Eeby{1cCZuCQ zGz^dGIj3rW)(VBG4A1K7lI7(kPoBTUcDF{S1|NlVGaDkhUHD6C+W=Hk&yOczU@J$;Jg6-J&WF`Lc0GSXN^;e^HVlAC95Im%-8a~4eX z>l9APS3d7!W1K;O&ec%Hu{D7bQ#edY(&a_lwGijD^IPNi~BnTsBvjx#;+)B!| zf-D1FU^UQYb$Dd`QxGVJObJn^3ArIYI?(xayFs|Z+phQ8wxo8vReD;)aw-z-bcQHR zNm&$3Co`fTA}jKKiMG?QvZpybXt~nUO*rA-oazxb?Vmc$RR=$RVKYlkG?guuyeODV zrftT$>$vN9%{_(+XmnjbA+?A&l%gmU1k(xE7uSS-z_Z(1!f`};h$%K(yrNP8ON*Q& zNwKBH7maA2&3=zjLNpmOnNAsxCKc6Dd3YiOvoX87J0!~q5DEoGd6c3kt7g9#sr7X0 zd(;TJ7Q88&jwSJt#d5)TJ|i=aIJU`%&>?yS1jY8)0 z8MDQl@o2<)z2@%jjv`I5g=s@|WgQN*)0fP;J=0u~D>@He0bVUQq_s~`mf*p7JjDWe zUQ(nPei-uL@gok0J=@z`1Yy2h;fEn5kd-x8TGhr24mbf7`7+4FQS<(RvdO4N>g@DieM|lOV`-3 z<>xvSnnsCg*yBrNkUg)zO?;of{B8dc-~6wC2Vi(~%I-~R`E-w*!?zwq=qldDVo z@%VEVT@1ZRe>_5uBL44Be1eaD>{roR@%ZYBz+p#t+T(*?_(iPm?)mv&{}{f~edAYu zUQy&EX-t|_VjrXNl<8zn5QG?GE2XFAz)@$!Z`|gW1KhT!H!J*%6Jy>SDupS@@|00DW*m*kimVkX5}a$27nE{CzvFSk>6QNP zCneNv;=DATmpsdNrX1uFEodh`$( zjYu|ow(BhhSS}arZtsxXV3cC<_$B6#9x+*5;`?K4QMK36sx|_mh<69>pFG7F2*MDR zWUQY&Lqny{u$(cuxMVzE5Y1);qYzK)N>tsH6^^N^eWvSmYedl2U`@&PP)UN$F0Pm_ zmLzeEa!N7X1MTwVmx+%t@n%QlRmx;G(p)^eCh{ZlB;~j}u)W`4(u{yg`cc(|6itZT zwHmT*=apt%s@jg&UK=mBJE{R|ssl1F*xuZsO3?Eu;e3usQqtsz63|6Safm6hlH)N( zDa~XuV>X?UXE}LUfCoxx6jc#ck!P${mB6_vOO8oQS(Jq13Df10Q7|HnkEBV`>)NcG z9&6{C!8VF{L$$4bS+Zj@>oEw!5#eaWVZU*zIKe`s!$%Lks}qcIJ!sds4%&=h`=od2 zHrcVr`L=KQF#qnK_%LA*wAU1;DgXH6ALrZt$G^@`ed<#biv{6q*6-r_JNT!xCYVmS z$uoZHBfr9LeBzV5=g~vv(`gH91isH#eCSL0*gyFdKJ)x(T~Rdf*4jc2Lsq05;{$n~ z5rz?y>5M3NP|JMyRO%oV?3J>tL|=r>Tu7h>%b8AZ8~8LJ2||-aL{i{GyMEv zOCcF}o_#OXwrcyv7}Bh2J2ainDawMvlvSUtN*uVO+$q(ynQ>ayG__zAZm0&mv-%x7 zR8wN^{I4E!AL;(CoCKrT#!#zP>a#EyyiEa!7 zyx*~$O&R+>o2O6k4W!2-$?-sTJdz%c9CjP>IK~zwo|3BgVzpwtTH?)T=%|u}^hObQ zUY&=iYN9oYGAoI9N3CQ_?g=iO1#D z1L8C$$A4V z{iq6XC&WO2K>x)UsQ$ktEXo%=p)_tS4Q*>4VN zZC8Qk!WtGx^9-#u)A6k8c-*#Km;Rie3H|AHF{amf*zHd2(!{z%q2sxqfmqtE&rS&2 zc=fibCZ#kbv+;~H&#FqLQN%mn|9*H;mo=JtkUw`W>t ztP;{dGkJK$W`7_EL#B_e@D@`7Q55@_B2CHi6dP(hPf?^P>-Czz^SE5C$kUX~?F}}| z32LFJyvXpRYSm+{!4@TDmXReHyThLKZbx#6DUt*!P3`T1jsmIP|QQ*y{gsUY7n-Q+&s353R$FhR^x1JzLffmp;9Zc0@svHQR zS&POwa7~*esDE$RI`!+^rklnovO*NI#RYL1lb3mg3tPzYoH&gu*l)QcDRRQ;v@%*! zAl3keBF~BABT7|x^n5-i%kv5vw2&7iR%vF_F=6{;yyARRXQLu;K)R?c9n=i33%U!;%Q4cQYejp4-L4e`=}aTm8=o|6#E@`@`u z8_zMOq%cLl5oYgN-2+CQ7~5VUinzk%^m?ed9(xBZO<1WA@$oNKJotilvVDF__Usl_mXumR2NYC_Xwhg)<|$^6A7Dk{ zizYcH>~>p}SmyH?d75x@TZy&LW-~693vQl0BR(A4G^f^@Q8eO^9^3U{rPs%^_QC{R z7WjFI$x^Z`CCw7zBqmNOHbQzhQf4`#K!+Zq#f<5EhVKRBzGi%Vi9ee$y}pKUgf@oq z7*iY*JmnDvA-OG4kq4m%fsce95(cQiLjn(_Yq50CNBKV5^H547+CzD|(&W}2C=FUw zKWkNW(QdyKD2-JLBMP);Hd}H?4&>HgL@-*l)pvQ8lV%D2bc#P25k?VlmQmQUS_@UC zow6uN(-dP$mWw%l7*^U6rl2eeCZnj998Igfh0{4@S#o!OhcP9y`3$8sxh*=$Rn_k~ zC_Ok(TBXJ&7omFn9s7M0CzBarG-kWGJzEhc(=Y#^ZG}thfTLN7V4jo_xt(oY9`D!v zt}o*UzVE+fIv(?p-}pHH<=^=sKJn~^i+4OGn9V*Xhx7CKFS)&CcXP*=z4{Km^IQHn z?|bDHKK;gLdEbZs7~?EI!IQ;RFM2_%pe7w21|g%-guoBUvxMzoM^@yHc5ts~ye+0M zZL4gj6|VHFXFVn%J2*$gVX91$ev>62*0WHjY)+;hm1 zR+rW~nxod$%j2}?+EB09(ia>#)sO7!R}A$&-1~2gyK#y=Jgr&ImfY{wWTwPuziRAg zsdN&gYTBs65v%vUlROaaKK@CjyOcte>;r`&LPa5uUwZ}dbgMg?ZK^KN(R_>-1r+g- zWWB{?1;K2_V!j}Yk8JPPmA6`Rf{itVp3ic&`D1*eoMNGYUes@s6VD&Ou+_ z8f(#IS5(0njgYQum2C|t4V`aLxY8Wxf%ch>XKW9fs^r;LBw%H$3PMa(R-GzKFq;yF z6XN}W?agh~&ZsD`S&Fh1hq<%{v|=1Zgp)A>95y?$JmX@uBuNvpW6ag%Bli0(`{TaW zg4Rr@6Z}!gVS6A?;ucZG_WKmN1yeo2sJc?lo)N;jxVWY?hV}a9M9nPx;e-@>`irCKzM*)Z1_K>6=@8tvEctsS;k}@jo}F`_EKGXAIeT zL$cnYMfk|;pXJwHf1UTe@(M3Me8l&D%eV5~fAfFBwD;hMc8inf>2)WNUJsEpOUd#K ztv%+mC07>@h|?qc!@l-_Pl@`rC-va=W#ddAv_6O0ZNArueb`=smM9rim$__&L3Nh< zUVWl)ugb2)=4(7`Hl4#kh_ke3P&=AUzh#RnhSQ_sI3>}p%%v+t)0ST<#d*mnM<=tl zKC5+G*sA~7B$|-NJG|0VC9zuYf`Hssnfl9@AA`~q@d31u1)3B=Mj`XnHH*s&l&9F- z-m$;E!=^dmDB|j+YszEH_UUcaVa3;sFBdE(OV)RHq;XvH!c}d!Dx;d4if!TfK1E^h zyZ|hec~Ns!sc>7V3Iqxix^nQUyiHjprD+HlCuaaC7^-okv@DDXC~`6{XIfPAG$%Lw3OPea4F=kFFo!DdDr9`837x2t|r2 z4W%hLWGTlYBMd|4t0h@cut^f8^96+k?fIn1vF>(U-Q8}tCCDNc%OzRhaX1_)i?SBk zsSdxAPT0zIHr&=+GAOK4TH{9}_P0+@yyrGTM{sctuT4P?(L`e;}N5a72as{dA7KgY`-VjY$y&%i?Nup>rNZ^K40|}U&;0V`a?WD z>|5@YOQLqUvHf$bALdt-w4A&3bHX5EG@5dC`H(D2IK+GMJa?LG`G7y*9-Cj>#u{R~a%f_r@ zh9XpChaI6Q@O+PSrg-qmE7kh6V6vQ>&%8x)j9JX51Q!ePBIow`Q;1VMtC)_bgsU03 zG2A?Rj?Htt*10I#vsSFamWI-n_?|~f$@0M!g68(wGboChb1pSAp<-GT)`F)fwMKi2 zFp3DH2=RQBg(A&}vkY@gnJt$@qY*aGdH&fqkT@m7Fj~zSO%@#18?wWZ@qC6K_{=U> zC<~quiYzBR9?835o z7z;#`F<}@|rUkn<-=;7*i_2?FQSkbHM;Q2|$$`k%_~E2Yd?{5ygVtE~X^I2^!RmrS zD=r_uLU~9jFs&ql*eY3T(wzHew@l^}ma7%}?Y0)$a`#oG;ajQ08OM>5Gom_{Fo>|m zP!xHW4;k>ty;inG295mOa$3g&#O*s)KUM;N{*Qb!s#i^B8C_g3Ud}n*+>!4O6vvod zoDj^Wj4oCcZ}(r&;F>(=@a#E7oK&Zdr-+sdqUDn9+x?dIANs%-^TF5N#nWH=7{mUQ zE>Fukt%zK2%5BZvhy|rZM!LJl_dI6P1sBU}(ky0o*j8asb0%7sODuia$a9KE1C0o` zS)w2g(`2Cidm^YVXKTz|YS*d$!fBa!nrA3E)CyddG*3_EBHPwXsz<+*)7~XLVGBDj z;Qh5{2UTZsB6j0)gBx+CtSrb)!E`iX6YnslYC!np`BVJKm~a$Qnv(5i&1yQ~>d_hd8b&Dh`EP-a!vUgLZCi#g-*gx&py_!w6*g}Tmmt7d~& zyj&}lAbW`+&^}&~k;e%rzsDG9qc80d`T?V8#AqCWr%CHZnxqBE=15i=Bnp{dUg1X( z#*`e^Yj$^c1WAT2a+HE}zh(aZ_i+90S9t5Azs50+5o0*s-c~R}pz(u$kU|u$lI=wm1m0SLqv75wya1gs9I!R%1-mxh~R6FIE@|7N`-5WrXxnt1h7C8W|C?T6Jmv=*%tL!3Wk>ak3Q05h5gFd_;E4A>C}*ZFh`T3!=pW z(HbSR!gRkSR$303ZNKL_t)gkkl$>Cs2#q7;=zIYQ`Zeb8a^`gh9k?GUM{%A;;r^V{)us zr5w{^U!X&4Z7URiQn96^N9A#?sH^>82fW&T&H0&x;u#Fs+VhGJhnnRvpU&AHwq!-# zg_F`(0_)pZ2Yl#x$}TQ^TA|ir??VD}PjlHhe5};Wy~>%0)0Fvmf>s_@su@+KW#R?g zZ?`OF3zqXa;nfl;O77o$Lb^Xt8q4K7-hmDSCT7Ipeob+R(HM+q)M&(NwZPbt+nXE6 zGJ?7Xo27Q)9L4y`IA~Co!Wcs3AqEcX9i`G(DlK0>42i~Lf-u7Rm2R(ZEXnr3;r0fM zMJpjr6O8s4U#tk`3$i@Nw?LM0_e$<0q4yCd!8xE4ITrywGl2m$dpzM+gwpeA6Dg{y`%>)Jkguo#I zB2MgZ<4HU3y_O%=KIiOxZVwpBT}5K1r~7u_bIxAj`+wi>JAaI<8$91bYM-j9sIuIp z@Q#kCo_m`0Yj06iHMVWtRlO;xHW|4QNKfNO5q=b+XA?pu(6pGQrOXS;yr5~DPJgyt zu)=}FU2Tv#2Db@Td4aM5B|s<(R?)VQ7B#bb zPmv@cwy8;ra$h2f#WrreXsktue77Oz62?#6r%^4VJ7;)Bg-vtHO@^r}46fZ-89|xn z&{&em7!?F8*K2onXq(5otx8LIDzxp-K)9lH*De(QD z_$2?;|Ms^bihBoHaf{n4cv9W-o(OixiP$b!WnI#&8+`3EPNu|B!a7?~c3P>}`CaWW z!fJb9onEDol%jXb7^rIl-Bk9!<3ZWp_V|!-QqTye;cBfxN@~*(Mj^B54AZ#NX4Nq2%?5um;^O*}a<#by zz;^Qh%V;~-ghi0IHPw1a5|5ZoXQZ1o zVDWs9x-9oi(bCn39dfv%ctqPals!4_Nk8<_(W&b;YFp~o`Qh5OaS^vc9@Rdfu+g19 z?w{S^-s#yBX;WJ@=#%ez4^K^}eEPRP&r5gj@O>Zu7*$A#X*1Efpj%kL=PMt!x^qR;5EsE`EEC5*nx!Hwbn{^oi$RS{Q%Qgs!%f- z9}#$hc;sY~z<7jOkuFzUTwS9)#qrn;Z$#+RdVVs;VZ4BSzC1MOl(xU7>NO z(@JQP$(U7{QWZHG$=(6!-Ya9ATp)#@X-aAeHr;1Z`#ydYGM&zx)Y!Dpw(ifVN{XgI z7*}nijKH^D2V3qg! zy`rk?eKgwM29<3C8BsJM&o@Kd!f@mP7IaY-Xr<9XK%~ceh_JO(b?J&HtHPPY`v^#} z?^ipybLX2jNA$0+)*a)pz*inW=70M8KSi-#^X$n7zJtECh(jpxymb(*a-*I3E zApG>m0o_d<;Y)+Jfgh|51V!>v!;`sC!FRxt)A%rMNIG#)?mK&C-E7_FY(2%YU z-U#KiP1#kOcOGS_BsvTTlf-QfO^az<5$xrg4{4ejB?VPk;wed}JnEvr6M}F&rp$AS zrs4SH7##*&Utd$z757fh5CSeAyu~I@@kfD6?5#J{ZHw}pr#6ftl-Ag$aznqyx_Eez zGQE4o&BZxw=Hl{OFpmU;v?$|T8QWll=)mfASyJVtTZom!)2>O}_k5!17^@^zQBY(B zRaN0@SBZ2qog;;ySQRX87Fc7Pq+me_wOhQl5~Jy=vV?WTnAvK{bUx=QP4}Uq15}e# zqHCbG2r2RXfX#Y^?h=tjmNGh;a&mUY`P&b^>Eb|63_GTJXbs!#WBffjOgGpO#}uV&N4R+KfM5RX z=Xb3ODvtP``}YC(`sF2`JwM0m7N_4|EZ&ht+ke3C%#UsjvHEepL(sXUUjfu#jC)I< z?1xMS`D&WB;byZS@&m^4geZtQjkM~4ZP@MdJA7haKIntlx5bfSC^?9O%8x-6klkP5 z?O^llIRtJ6JnU|2*WWm|KF< zXpE^E8UxA?I6j`De2>M&6*706S0SDE)>?s4&{&s(+eS*GFvRmbwC}FyrES<`8>*th zvx3NvX>uor1zJ*;C4rU%o==`-2qTEbW74WbX`iF{2oRiKoKrUqr?VqyYR)en)6^wF z91=|?RGZZKdXa=-gwT@p%{6fn6U340Yb#O$Pm^s@>U_ie5xY|Z`f;@DyJ=5u$I%`;Ts_i$zg z75K!bC+INb&4r`Kf8^O``OBaD6a0hU{XM>Vb;%#5IYUaxv!{1w(WzJZZt%$sO!!N~{%w6YYT8umgx6 zl#AMf_T7OiV0h}sb}{hXDb(y33EKs@ZX4G5#zl174qU=8ZYg?}ul=&ij?r-7cpfkYp0C@wCU&yHzFA-XXfGXDn`dAP}giWDOt8bD#_hDCs?7n zlw6Gxf=CC*R?w6NiN^C3p4L=NO_rtP=^B~Dj&4>pc)lVKg0?K#T;DJ`nj?gu$Q)c| zTY_Z}2x)t_knM)Qcl;Qfrl7i#&oCKbkkn00x>!33S!rCtPX!KbDHXDHKj$PFLA!mg zdwy6YB`s|)S`O=M!+16)&$8XE_^{M=>y-C`kg_Q;4zISWZ8CLDaa}{4FqzHRtkyJn ziWKhVQP;I&!Gs~n#PMYEq96zYq!8qr6l2=m-wEs7EK!uOTHWkp#MTaNrM>4|@0qf8 z(8%e&A&bGdX<^$!Q$Yo!OSc$njZhv^sy~(+Eb@ImdiM^-SniBR{3{=NnbsJ7^-I6c zCqMiO0N?u^-@(T}{ECYjOU372dySv|-QVLgU;PT-`mPuF{#Rb%`(A#TuU%a5&t83% zpZW4vD7yOhclzOLy_@7Xw}8E!&KaN|_ZYl>vdz)Ex|7bJnn!S(`Y3iM#bvsrY)U5a zg!x#r&ek+-v!j#kLKppou%~78^ zLej0@dylVa&~?cunXt%KyAPM?YR^S)5$)F#ZBN|B_FJ3n4wScj(52kJ5C)487SBqg zak53NERB*xlOv8NQ!XFAO)?qLng$)lgySjerXZ|qO4%|$J;7qRzPZA*6?JB5iju4q z#IqyPwjvzIMA3xxVnLIouH9HjS}oDa!;>2Ad3e4@82GepOP*yc){bTDNrjY>JkRj8 zhp>{iY4Kv8G|NbW5uVhn*BgwL#8F6VA;;oRMnpO!hBwWH!;Y3u9Y?Frvwd9e~F=y$K;*q`NIkl4wLxWW8B} z``W6LB&ssQ&@!4$$)usm3$$axV%wIit`Mmt@B-rL1fvyx93!HbD$Ow28jL|GK^R0X zz)}|Owd$mf{t0XccX9!W!&;Qv9M)UGitZHEv<_@h)x{s3uV5|jxpRmAvsfLW}V2!B{Wx#*ih79bWmj@3*}LIq%u$Y#$Xm zEIQrBl{Zzvk>@iCVpc^uz>Dr+JoX@_)4yKsZ5=(Bh#cZAyVq5*ZSSzO-AQRWKgNp! z9zT2=TQ~S|%vF&wfBGJ)<(fOs-NRliX^NCL-*_Ek3`rch-ZS4PFB_)gh_UBUXKPH` za&y_8C_RbR9`n%{&kvmQplMvwaapifFA=T9)0)8dT^v*?%Az3j181Z+4asy&nmM?O z=X+FD={EB)0_~G;)_-=yT`!XQ|7Y#iMiTtRS9Ex*?L-v2oS5 zX+c=9hNfnynpWpEGd*93S&OP4z;uopA4M$k_%z4@) zjuX7Vr)mw2X=&?Ma2PHLF9Rqn+=6$IDYSauHJl`cD+HN zcLcM6F_t}q2kUC)l@K(oCEaY8&E{Me&IzHqgrl_#RY`tziSS*5ZZw}0O{Od#)--wUN_>+EMZR&m^b^nl z+uP?>_b>-a#_h$7{EU#6W8nH#dLu?1K<|{roY1_n&_jYay*_-nhBsCNGJm zlilL-Gr#hyeERpkh(8^7b>)`UTJpN)r@!)5q%o;55ns2wHRo_ydkY@7J!&j9E0HY-*~u z9>#sG-D%eHpt1Q7MB=_T(=(m-YS`j3nlO41|3dmL|N_)HC7mmg>K-*dZ;QZ*IQ{H0*z%w$ z!99>^X9@eG{@9cizxBpjWKBI75+x_coyQPl9AQTZWoriC#5OcxtR-t2e(oDz=ZF5K zkKk*~#P_}l&%yHQTdxl<)}pTgi(3|z{^^h{N0$CDZa=`<#d~`T>|scvn+WYbV0ly0 zq%GrU%<*{6O}gCC!1@zgad5h|!~Zh4mF&h6y$wbRxpxfo^rpk)*dBw>`wYB8`SGsB z0z=UhjKY{jzTR<62PYYZi|(KnsGp$N`iP|*Y+e%K(qBSQ3(NfY7*A==A3a8x7PQ8T zM?}*(p%hesrcBp(fsf}0gbhf~(prP^ePkS?`~aym>(vTROXf#MXav>T-9R2KZZK_) zX9S+vV=1*#NY6w29!N=1R0Kki<^{^r_?}OZW@z6-`5v2WgHRIXY1e@!1uBdK0HU~HNsjdVX#^5>Mgf+waT5$(Hd&Es02aiPPTcD z*#?h%59tNi);c+^uJOhRIt=hPE$DzSj)-PQ+*R>4CDsL3;$x{J|j1&skTjWtNy z%{HXod$_j}m9Th0NU=(ZqJTWjsLox%XTHf9kEVpD5$o$KR~E|t;I|w3Zf%y^K%kUZ zV_9$3j3#52H#MSh4}?Nsg(IQ`en?)Vy#tcn0QW!$zlCvjhXVFBMRnD1bF&~mnqqyQ zCd-MV06+9;g}W6Ln+FVa1O_nl>lRv~*ZGaf)Y&qg^0=ECn>b8FTzS)!?`Pj$!g)e@Q2a6?A3cly1 zml%a1j}{9arrA6GxpmX@%V^kwx(*UC$Ywcgt)%_i^D>*p|8XqEdGLF38dU=!%{vmezM(! z#K7mf|8w)Ua(b8_kv&0v>g&crie4e}0n}&5*d5*|ECSO(WTr<)L`lNMqsLfd(O!tv zile)C@Ri`|;)1Hl-2+h@WNSE<0eNNdrz7wr>vWAOO0-gFtRNkv(fw5_2kOE*|+4XrUmaY9o!7%B05pSo_a7N>doo{P=~KI8d} zrmk2m7c@nI6fUkSf$8ZHwW&!jF7a#ExzEwMX3;6bfYp(P&IvRg}x78w?Ag zIKe1Inr9d+o2uj}o??_i`wq}EKRRK4=akJ`7d(D^!S!2j@#d>vpxKm+Mq^rQsG162 zYr@1QnoiyK-Ztb#K~+>VwL57#>8Zgq-M?#xgWSH4r7?(FP+cqtj3BG7@lTGJo}RF| zymTA{WA~Hf?p7#7f9~PzZcW{|jZ7-6wB2CW>DRvYQOcc6`_IL8vlr6cKDNVXV+~Sk z+NPn*a*obUvD20!%~-FOG);vx0);|K;rPgPLnAEFc+6xJu(&#>kL{%?KpRaY*k<*g7wUzgm;qJ1B2uTf!l z4ewL3?1A0sz%?KSooT(3!A^RBRla5v#7yHcd6l!NvQ8El@^ZyNGOb^3IRw`5gbkD1 zl>O~XA;ql?c=z>eKMB{#D)E=kfUMhprDyd&Ki2MyGSCD(7oo`~tFUs3nLfWR#2ugMhelW5%o13Lzw;BUd@D ztYvw5K{84(O+^sS!S~3nb4EdgjuWg>7^x6`hy`xW&+)X6H8q}8XeB6%nn3#?1XbH$ zl|Y6*wye-rVM3qD-81~W!Big0#S-f)d~3U8n;X82XGdh|iuKwRSz2E^J7d$J!P&Dy zMZH;K@{&Nhz=;ZcyeOb73M$jOU_un2Fcd|Bu$C~6!IO+-i)akjZ$0GgZ@i8WaC|gp z^Y{TKO;N2SEla#OVKyJLUN5;^uTgd54t2gJ@B%!~BZ?A4=fkziEsnIt4gNe$6vZ^w zVueRz8i(e@Knt6T3!+iN{Pcvy%?))~4MIbG-nHAkIy{fDWr7y4THyIHahSO0+ZeK|8*~s*RuxU#qPxq55f-IAJRvZ7+3B?s ze;T40WAYWEa!wO-n0W1!1S3FN>0Ax=us8kyb}qVU=5|*TJA#$_;$OLX%+2)`94x$h zmH_4&k)(^Z8%$a(ipf14_&v4%-FLMzRx*bIZ)x6)?4IELM)-ug+I{U*`( zz#Y!+`sl{~g2-U#c*|qkJ3$w1O<)=#FJM#ULk;~Pbl#6J_d(JU>1;~EF%h?tgRz3i z(Ggx4a&>WuKoG^NR}tVF{Cvqv;G8hEzpCx?IxMu8!OfeI~P+gKM`9 zi>oWgpA|7$3Kul6mbR`~S2bEVRHTX{Mo|D(GCew?+H7cRP+HQq4M>IO`$(aj)~Y0U z9;R-QzR&dZ7(aHygq@LirjRNi8g!GG{cMaCS7MDQjnQYg%p=7c4g$=OwiQ-}9KA9%A1HkAWJWkX1~?b=tAQuuL%Qih}HjJB$|=lc}0 zrf5pqs)C{+Fi@2hH`X#gIc2?CQRD@*25AhcxA~f`f@>=Y=6TL!G)4y=P3^cL5=$6H zWa)aJUhO0{Bg_u6uaqVVe7q>c7(7|2XPIY=rvd4D#e6bDYqxN&>zX62$u}#isz&ROQIw!&38l4&rXjn&c9bg5wJ2yI zxPJR>$5`mJMI*tN&}1psn>D62_~{C*3H`UbkSh#^Enr+lFw^A+4#3lBVgd_ojD4wuY9Ls;&wAfGXWkhOk&&QyGKuwX5s$ zBXsQaao1C7$goVFeu}BFWH$>oiv^~scEYFoh)EZ+F%ICqS}%zw6P7nu$kq^QA1xJC zQ?cztG%iwz_I<)AM0pOWS(g>7>m{ab-Egpng0yW-dU?tC6lSxH%ay(cRMYjNdGyPWyfxnC3KKa+^j#Ty}T;%4#Lz=Q2{PgF)_`7`R z;?WR=)iXHnrIf8i+K=q^{`tTRO<#)~sOe%Cc-Z@H4M?%``ilNg(+*r?l%}C6R!qY& zQ#o;thhcne5SpMnVbcS=+kW!xpbS&o;xi2Y{&qm(e=>KWA3feK{Eca8O-tfOEbD9- zcoi0OPzR+OxlOU~}xb&psOkZ;y(a#!E2 zbbuVsKq_P)iRLp@B~Zdr<~iwVfwlsrq~j?F;p%G|vpZ>PtzGTAu}*(979}K2U9s*u z{FKyqfln01grhO7_GpWW(ZsdlUOjq5wpe1@246UCgOLJjUAgIeG(t$p^5zCxH+WJw z8=7)xLuoCl6$s;EukCJARkX@cab@5U1Oc<784^d@THjofU#w6TpdnPAYt9C&a@9Pi zr)Q*DO0h{DEM7Pt`quJ!aenT+(^8?e^B!v@36G{UMMaUO&^p_hvViRt90b0n5w&A4 zv~BG^{N3}N6CPsV6Z(-=orYsw1I7-Z`fcVk_nNL|#7 z5)WSmnAVcSGfGpFS*HO@rQBdOiqT3^6q&pI7=tkT*VoNn_A&YGAiCIWIJ$cWVH;M< z8${qyZZbRse&W;OG=AUn+0z>d+VX?aTE6b=FF5#{Sm&YT+L12)40t>^?ka19YtEXYTG;_XaV7AY}4+vS_Cvr+cifE*EzP+pSSNsLsir?xn!AU_>&2< zr|&VFjCu6NTeL-vt}9pDZd(vOR!O8(jK>qKF)SB1&a2wlr<}{kxYHmYr0QG)mZqy# z_kw^VjF_IDV1Y*u9`NXmxA3)ccC)g^?-mw=!BdjPG+3o*g`>QTgaG+}vjLz-u-77Iqni22De>1sn&6mAo04H8S>dH9}2`A|1yHzZST zlaP{7YeL_5bwx^1wGHWV#m%F0v{Kl*K?ygUjN=5IOlYm8Y8$GiLKGFEYN)LsFG_-B zOm0C1F^ghFJR0HozALD0TheqxU6%U>X$DbxB$d%@Fj+5MImoRc{hJ& zfY2<3ATSCq86krNQyVTHJR-fmK{qu@C=i|OVg=Ikn9OEmo0K$7ckRANfshJe9OAGQ z4lmhucu+s^nMNK`Ny?(6EK*jN4(!c(L(tT_PBI}ZR<$&(BXw!*QM5HiD$efSrEXiw z&3gCR%kHGTV8`L|6frwKCK@HKCf@YqjO|HpC-2B!O}cxnD^nBc z0AKr5rs66%1` z)O$ljzcEAh{?3wK{kwG`3D4)`{&OTpM@a3lyuM+1e$HySWHugwF>IDMXk)te0ogSW zD~#48vpL~pLetiSzR&XVilB9ei`F5yP}?S4t%)aNl=d7jhW+cd`+Ie?F{u<*DXdnY zH8u#4p3i(f11V{@DXSud z5hO9mWQ_DZiZo-hOv&>SS};XJwa&4|I?I~u5Sdtvg4R`I5C;jFakMQ9G);-`X|&d~ z#&nzpcAkE*t816E)>4*rr^#BhaEo-^wxnf_F)fpsD>W#MA)d{!2t4Uyq+vXnkW406 zEQ{5W^=3s`=Co~tFitj*VjswmfK`&|3(qh+Jz=w2BI^cOHHf05Dsnb?N?o^T-y=$5 zX5$H)Y|X{Rg{v^K7GW&P(v>VQ&{@Sn1Nfn*ovjqumEI}sp*^3_^BDyRB{i$fn$Y*L zO+#Hb1flN;WqHnMG= zl?-fXT{=$;P?HC8ip6!JF+4%r-s@+!l&Fq_YOU?c9dW~suITX=uCm`S(G6`Sl2%D( zPu<0vPk6kzK^uXGAS(*aW)p-pEN-q*wsnhuRBkbKd_JbfCsaaGbtREE=jV8x?^P%V zHJ6EYozY3CsNQFFj6uZ3Y3tX zKKCLzj!}U}T9mBQlsJfKn~E}BQLNXPyhJp$>ozlOSJWAE=k76CQE>6_0a_Te*61)q zhdxD9yTz{y?ijPhdxF%8FpQBx(Ka=0TRFmDSrZD4EowH!HEI-b^4znGrgPe5MpKlS zQjl&kipqiWl>o1Mr?GBG)^sJA!gi~qg;rRqb&B$8WYctYLyp&>uqZ2Ni=0hSG72J! zyryhQ=4U6Qt2I?oxnuW$J3Yp>HPiPZXunzB3buK&OjuWeh3 z)rxq%;otn|xANcrd;c!)fBrr}PfvdB?YH=ke&Vn5+RatZxv)L`$sx;ND+h=}c#PPG zI{NGYvG=|TA$BCUZEK{J8l`WBS}Wi=3@2;Jk?!g_CvXj1KwlV zmTg1ghi*aJLdeDbw7g?T^aiBjAh@EeL>RZI80iLdk{)4YcUF*oj67X_2Fq#1CD|v*`3Si9iJ} zJpHLH-%K3r?1xyyeF)$HrPz}ol$5;o_#vuo`RIpULHDGE|?|KJDs*5~i@_8V{V zwFeK-THh+Y{DY+iOSMVKE-v}L7hm8%`;i~!Pk!v9L_sk4RoCkkf8}rf1fP5T^__uw z>j@Q7_6A>Kx44QeZER;Dll#zvl>0V@?iwn$vds1&?M`1pYohUl<2!eVCljPrJ7U=O zYf9xF-YAM_t)cDTE+o5JoGn0H?6hXbt4O@qS*^OO_HHrj4fUiD48P5Tl$)oRo}QrN zh$=6;51P2u$u_w0^oD4?>Vlo~W3UJdL8N@jtu)fx7;HD-*vmG~2O76%6f?!D_d){7NQmZQ2la04__5hNp~$0y`vK@^7Mt2Jesp|{rnrTd zhT8XNjM>rQqBy1~OO)6yx)LFs1Hej!)Y_4~I#A8kd|8s4<2**<^vXw&RL}y1rVH_BIYBayC>Y8pD=m$8PqdR z5#PJZ{OPBNPiDlE3CfQsj79h%cmZf1qdcr15Km^PC`JY$jd7^Rrf#rROH($kE?#TG z*$fp&6zhz7ol-A0#7I`_8>iNqcGt>by1_4M8#J&765xLG7kv=F5IeT*c8N4f;Q1kw zWW-{9L)+F!AsHnJWnB?Q5n&inH;wyBvOoA9&SZp;y+v1aykNJftH^i$-`0`@F*l0~ z@OtaK_1r_%! zWgH~Fo;da2?KHACOcJ|zE6QnMK@>5W%?Zbo-D_%k0b)8oVrz^WScU;d_wKP-uSvUl zX|d~%GP_VjKV4VbmQ9m0_F}9xPV*fMCGBun)l1}A=*Uz8Kky00F{*7@-7FEE|8NL- z=9|KPwu`2?jZ~ttuHrmUZm@$mkTB>WIi)}a9;5k`vZ*nqrFFCy{J>{^e2i&akz=Ve zf@UX;jHWZ<>6A22nN22KK0e1bjiYv{?Z(7ARt|>Y1`I05TwM50|)vlN`z7vr7%(;{eYwCj6BO|+LkczI69s4)U$VJ z+J@J^{58_m8u8$5PR{Od_nGH-_PP69u5MVB1*@xT-g@H=&Q8y$ijvjM0<+v;(*oPp z*ipcHKK>E(Y=R#rv~^2f)qq0zK4+sbS_q2#4YJUqstcAy3bf4M^&INmFHpCV`_^Kr zn$`6+ZBb&H25TDPBtmG%;@+&+1invOH?&nrz1m>P8e7+_&M!$HUmLa-+eY@XVnwn@QzLEo)NL9cnKkprX38f_lE|vbI6Rsn5J&YtK3OjIH>$` zxni?glf*Gc$Hx?TL0)8-w!xZq&)q)cmh{|Owrk)BgMhZKnI==Js&Jf&vO;-~OvaS9 zB^ZyWZdM2b`6gw0G$#rIR;wk`$qeQDv}J{o5*5Dq%%}RTxnc)z8EU(`|CPfi@75hK zXnYj{Pe^|C)qla<5BcD`-|LF*dOx&MeBk-#`L_4J#Kc;Dz6;1Yk+^kpp&A<15@L&A&r|}V#O+{@QeC3e@$zF5ZUNa6) zYO*Is2yUO^q}ZSKqy*uJSdD$>%b+!v`|#G?Vb3yUt778u9O(1I6gbWNVkE>#<+%DV>!8d#`X0z%SV^g zY2ku7LSnRHdUlHNed?wm@&j%zFWjO_r#CCLlQ@)=L{ig)9(Cg$J}I?(Kb0g*5~{lC z_E&{fZtxZ+3CVau-8N)-4#uMCPQ-ynI7+C}ymKZfROlmufM_(PvMrONIZr?P3^pyO z>WYhOO*l%p_w2LWyZ;=~ctmXt>#F4Odd>C44b8;@@{;W0n$5#U)R$L`q@dB3Pzz*P zVakH5$B$T@Us5lYl&cg|x15}wak*Y&efQkem)FSI5lVW{v{Xe&mgQ{LIdyGO+C6vC zXiPYn;3WxGX)0sc6eVSCkX`_u&+*ewGkfkC#&_?cCu98Sgz$Jqa6Cgs0r7Z*YGGv? zM$bIO3m^Fi@zF8OVu|m&b{o%kls0R-&bBR+d254I%B@BHWNTmU+WP5*Ti*L#;xKq3Yxj*u5BV>D;>Y=4e(7fkh1|ikjkT0*Nn=`)Fd_CM zH_0_^=R}Z0&#qv2I_tR>w!1Rj6%?%*O(q?^m8E`ggsV1MJG25ZWY~0*GS3y@Bv)Qbvo0?Ww8ex#W z#tTEdFv1H$wC@unG4XT;#&Y$>BObr`fGpiW_Z)ei=IrbaXY&)tO0L#Rq*cVxgw^GO z&7+6dx~8dW>awCPD@@aNfO~ffQJzm2hD1^1l7Fq!o~4q*o}*`t8tSHYoaBz*VS%=7yEc~tZ+s_b7(n_SK@{K_rO7b(G~yGlyv!?4-Q(-u_&RT1U896xxk>r{_q@n|_^@jj z*~PW{`l=AnT0^88^;ln}Ssm zs}x}pJ19<3c5Guwki^I!KnDSLPR_V<=PrTvsEd;P!3Av;;EhMztk=B$jn{blwQtaD zQtF~`ny~L{vcNm|}8P6tMTwh|Xp{Z-?v_Q43(@i~zjsif?R<5NuD+KLqbx_hrjRskX{6mmE7 zYqvRP?{9zW``-6?4bvQ7Tkkz(Rg)JvZB>#h&DeJl*|^y-Zui*PAbsF&wdTX^JKCnD z+wa-zw&=Q`Zc3!FxW^|x{qw)%`LBM))b~97^4Dx1?irpRF}sd_-|_U_x7e{y%jC${ zl~SQ~hRij2RgzUj?1YJnyxB}h?@!pSvoaKt$z$ED$%>rkej6XSAsmfJGHJSnNcUif zEQfgKW4Kqd_9xsoY$y;8*Gp%7H6WWV1;Ca{E{RqT4l8D}g$1eQ0~*n}$x z0wy!FTrQ#uZX8is#s3$-^TVHtb2|H(yyv*}Ka*RDmzg%aRyG_*5b1MfO7bti{uTf8 zpZ>2HWBI)w|8}(4y(plW)_n2)J^$d}{$uW%n$7c;|MtK9FZj>@!GFjXcXw}&eVucB zdVb;`{SW_`fBaAWCw}pCPo7*p;*HV4VdHLG1a?<>Nu5{t;7>~`ahV`|u~gtN!k>T?4_Ad1`@ zT{3%nWRG5)(3DCj#^ifHECNZm!gI->k|(JbFLTqxYuDV_;fLcmRbD(GGO18PGN%l! z^ZYLIjGNm#25TwHitWcoin?O;{+7P$*grj^k~Gg|igMY~Uai^f_FOHN^qVc?eoK~k z9mh>{()9*F=NWmPV~rsXU<-Y==u-%(j^m=NDyfm0){9=m@jBwD1!pjL=HM->Ir zFvbpF3Yx`&vZ}ehyXF1+&mw>vi3%R=1%A8d%Rl-9)*s$cHZ^h_dHDJ}whs?Hf4b+> zr+b#m6|ySnT`Z7IQL!#7wx1rzTmYAhH%g%Ef~sx7$MK%G2DIk0FTX@o6`OvK-u39) zE1J5Fo$)wf`++bUbe7Qti>@MjBFi$0EJp=Fy=-Y$3-81@ur3pF^a>);V>xVH(xyZ=Mf;`X2%L19{Xs!~GD?E=A z^E_e99OHx1Js{Hf>HNebq+->qad`TnN4SF~Oq^Ycr<0--Aq7*%>w27KjBzyWf~qQ_ z0tJ6T@k2pLN2e?>M*O+O>I!n_uh}D1e z_rsA{aQLRu^6Axb<~JA~!o}?S`;m_u=lPQ_zT_YNXa5y{?{|Ke-~Hi_$n@K$ig7lS z-vc$@^&Nlt^Plm5{EL6afAdfNN49-OCRKv@gyZN$o|D!t3dLy_+GHhlRxvrl&U8_F zBF+$s@o6N4oxyZfFxH{8qFJ=8+m_F6?#PtJ0Z-d!vOJ^E zn(bHL;l8^k`|<;`cYO2BH}v-p1nUUS6YxxUK79T;KmOxC;$b$3Adxn3|BGKR+<(OF zo{5RF)HRiB>vN+4??0--%(bRnf4# zx@I#z(>-sK+bzlA-Xaf#aKRNhVOayBDB~R0d-^VR`^ra3+xq5;hLX+Zo@t7S#ZCr- z%vr5hY##5?E~aBw*Vhd5M3v`wW9j#iELfx@kNsvBWq2=)`!C{e-lA~5zVTlEx0f)L zaF!gp(we{i_G|v@|Ng(@C)aoUTR;2}fAmLx%zyCj{(Jo14}WwauFtfJGnj)j%{l(; zum6(&<$wR*`161E=ltm}f5yk5LkSU&m&YUxdFtNJI`CNM#DzKlpf?jHINH4CTCaJY zcDUeAux=qiDw;OJSyWjjY~CTK?F6HdI-&v1JQI9^WP~$^G2qf17DObMg@90!x{mYV zuG`~`O+k;Gr6Eg}s})sM(k0iEL>73{t#^`HAUMZJ&YP`*C9h7Th^@CD}MH~zeM}!V)I&Y z{n=*>^Nbw~ZQJs6{|T&(oPjerTR1E%0jV`v*&s888%C5$;f*@Ruh(^h)QZVET#D*} z$oTasHCae?vV6)YU#sf0BM4Ab1&hU!tLrQ3ykMSYCO5L{JHEUB$d^C<5}#-B82<3c zZrrB`@DQDEQc+bE%k`Q$c(S@=7$$BO3-@KuN_sPYnAwyUwzlCNJ4NZP%@MOHvA=%0t9N=8V)g-Zw8i-m7E zgt?w2xOijOJUmd8C9Bm6GtG3nT^uLoHFG~P%u#MBLUhA9?@vou7r(cu?O=83W@sp>j*=d1tt?}zgn@sOn^Ul!h1p!63vT)MI4*%6jE11H5RAi(4u zowsCF&A1Y)0aeqmyt<;On|Ps+?B9o*JnCbp+XY2cA(h5jgBiN$ z)pib%2u>n#MO})xQF%sD78F&9)EYuk8uT4w-w~`in-QzHXh^wa<22B1W04j<5D1h~ zQ;D3d8}P|oagzSMRYuRo5+S?^Prpcr2;tSpL7ZRAXGzD02=~M5bfYSUU>QOzXtvC_ zy?e(rO{li!@z>u_mnFA9_?&s1`0lG;lM6|nm$dKSvFZ0LvK%QD417On)Oi-?$3=zp9;FneRMeAazFA2rP)|F){pxGB3YJaFyZ7&y%!J6|DN1HJ zgR?j!t&)8Ev!8SG`DX;J_~vInM0vjH97ymi+J!{{U{TG1jnL zuj$4C^{embashe8e!oZN3I{ZcngFaug~ zaiQiyY+erO9Z3;Gk~?N9XSKM7MaDN@{hB6ZJNZDI=MZ9os7R|Q zaSCZX!h2pMRfIE#%gYRl!_4Lq>V5iwWRi6iDyPvkUV>WIREw6N&pkC{>_-83YKi_{vSOpluNZB=PSI-JY@Ukm-Nnf*Tr-XY(-9 z?RK%t46qbAHh6|GA0LQ^*{(cu?VJ-DPaSc1bAWVoBZs#!lK!m(5dktNj0{)_x0Db( z`(UssrpI}YEHXA9?~z(@eRIR?JX1d~Znv~eL$h9SzumK1EeS)>~>qcaWP+RwL)u6-}MYbPg&RW<3LeWOw&mB_(Z7`{btAh<44@n6MnY^XJe9r z5Xd}FJmFhb#e(tak-^8A_cV=hiK}FU%c%JNc3sDiPIV$gtgK0Fh2+qU>VQ-iq*kC} zu;|$L2p_m>ZtzOta@agPko&ajkVL@Hx!FGOCU@k#8&4JH&uYho@|6RF<*d?odEg)nrA^cDqFv1v<;oT4~mK6=!I6 zW|~KAh&63Q$2@Sd_yH0@nfNag5PH zynaDBhkb_^*5LE+F#g^pv-T)FWt($dEg@6PQsR?m{TKx=lKG%%BE>$D!p^5lUPw?W z%~a<{Gr}p(FTT+y)%1zi84!p})2`R#Wx=rT)8;hF<3uW?N-63^Ls6FW-JYo*8N6d5 zb4F(g!XGKG3#`Wy6OL?=jy!;Ws@&NOao} zyd)6lwmY=8}){L`deRD%z=6u>dakIW<-0kVMPcb1voJZzRf$lNaTwwQUP`Prgpkv;E#qt=D?%z(g+y`{K2JUTpu_1Qb}ZhGRs-~?vL?O((m@{pP$)1Jko78eEjOyT;1KF ztYh=|%=q|#8G6Qk&-?f9VH~->Ua@=HpeKVfGo3Y1*S!1i8DX_x)Ah7%&Co|uR<`f3 z!^p7TV>L8&%~f4-RksLZ**-q<^S}Bl=BF)v*Toq6MN7ytn&pCVwh|MU9dPysXfoMIlFPg%Z2!%Tb3^s66c`r^AdR; zR3={ly~RZ=&AAj#N^!w^JsBF#=Gy|=<&x!kjV>x?q0qA@n>=$VNgQgVR@6;PQC0*M z#|GjEcsW;hznx^hKtllM7KVShq{6 zqN3}1-0W#o&MwTS_a&Tx48!F^^^`vRHk0`XO**8ro@z zW;=qEH0^@HdFnjJJU()FcSHZQ#Tkc?n)Uh`KaV`@cdW0k=pUYOyN+C^2ZW4rBC90L za!K1PBbX<3pTjWXtYexdvb1y)-lfQu1Q(YYsUyIAKXeEsPS#bam}i3=r(}W=(cGgo zT7^iRI&9nz@1yr;X|@vK95M*%vf^gBM0|WiH5C#;o5zR5`1pvK4PXE4=WITG#5jku zhJL$4NXV?``P*+15_VIdShdX0TZGE+*0EeIsTT_#9-qjnk~tWbR}0KMQXm+r9NYJh z0xzfM4c`p|5ZG*<@W$ZwyEH!y^!rVWFb9;9bly|dE#6x4TtlAYoIw>W!PuyT$TP}C z4UaumI?(Eb%hVd{+_5kY^Mn{j+VzTV^Nf-)sl%pgNGIK^b+IU$eUCSm*_h}!n=R|2 z!8!|>zz*gW&oq_=5sQ9!8Q^=WBFC+SIGnH#m;l9Uy(ZT=-WrB+hwTEo$jR%PD@~PGlzB;0 zM(4$7MrM0}T3<@Yj_J8?EL}o)4c z;2kz*tDK7EA=>3g6gywIh2!@3RsVZ@+0Xs*0sm4Wan=(nrRnaU`1$Ui62_UOC}^*) zQA$%*ny2r+N=lvZHF_}gE$0G1_(mo1!Q@_s$DVm1DPz?&S`|F;;FZ3DmJ@a zJQ-9Kqn#02W4fLhk9QUYm~kYpE2eo&sTnbhK}-|PYK6Xt*-m$t^^X12v7b6JsmXOt zRn#o11+$Ilwb6`c2jnv`ec;7BFuY3IJj?`-MOcZmQWahpHU!eY%|@3}9xCWDo9hD3 z{fe!5w#`fwFqsvsudXQDHiB#pNIU|;$0O`eN*Y?_3;!kyW0Gu8! zFHY_9Q5JO@jF0_4c2Bilv%0SY#F!v@VOC(kUiD@g8!uUvnt98YqX=#g!MOm`hZrOA_ zj>y23Dy3$4kMzj`t~FOzSMi?O?(t=T6beNIA{p=b!B2j|*!M^R{dU85zy4L!JC8F$ z3flFO&0`#|cx!R9!)b;0Q0k2R!y_L)|B|f-{4IHFU)T<>Z$uN#&UZ8VL-wja6O%0EwLq`JzT=3cO1cI!RU*Y@eP`)$jk-Pq_fyTuRA& z@E8|6-pNg9rD^h-rf4ph4ksP(W!HL6wBmeTd&ZFczU;4~jrYu+dalnD=R5@|FTLDn zXh$KV`2B!v44DR{X;*7*KYLG6H%BtrX;~C+PL*dg>ovtH9udU0C*%=?eR67XX(9-( zkLcg0dw$FH_tK+q_@_L3jggYFDiO(2eGKOGK9aQvF=7RcUNq4yK#r-E7(Kci4Hxm??EF@xh?;94`dM#qIal_YoU;n2D$HLGA)B*HA~p zz%UF)bA&iR(bb_iN8M{xmMrQfntr@R1W!?x@j;D1$SCkvaiotFQ06(;>ovK~;#U6S zBVpCX*c}%|`gu{{1Th_0E1sVo8M;2|dWjw2Fpsp0`1j@z@LG{KC0Pgz_m9Y7#*Pz{ znR$12ODO`+-+ayeKm7~3=O@O^1~ty8vS64euC7*0#-v%biT9XEDva4;XM>$BWl=y; zP_EYaEMxip9ZpNGKDd6W;# z!$gtg1T8Vs7+s#hlWCPyJdulRrNAqREOM4tSFEZfVo?(El4h}Dn#?hYSRC=S;&O~g zLXn>Rc}S;CpO$y+VhIBF+bw3AxoXyUE$H^UWJ8Yk)-Vh>>tdXecUTvpO;ui?h#7Js z(~(6T1Wi#h&jyd6SuYUIGWSEuTsu!B5HAO@r&wa^9ou0`rxdx$D6%pFn4M*`6N4Qt zj;)8`^+APjRtN_{~o>HHC#HxleJI#=eV}wf?bGSH8yk084GN+vVY_H#j zv(#q=7SMG`o@Y^3)b)6iG`~UMR16^02%6;*XDs75File&0bOuB}U#*K23q3eQ{K>z%V7BKF1 zbn_fhd*Kv6C1aFyWFRXEnK}lbcH2z^R||D?PzDj>eMA7KBvsQej6;-6A&(3TluTfp z2-I1(3zmzPOl3$x3SbSG5SLX#=j_J`A3Pa~TxVz%kHj+FtYMn*&XH9mHYH`)#I>~o zoU;^}=JvDC*gihTQ^-7li=dx*ie`hW+grQ~Na1++?puOO5SWLLES%%pfBt_m_8oql zsKybMNrH(5Y`@up6l|V0hlZX!%gD2gsT*j@lHG2H%rw>*o_AZqcFXqT14Y}?{qk4r z_Iu1~!DjQszN+xv^SgiVC+vUqi7A(qzJlZqn@x1Z&C^7Y7Yt@b0q3wiV|xq#>`B{ATv!}R>&+v_}Hk`+>MDl@vuzRoB>YrW*!?heg>Uq+pnbA9mSyJ&3g%z=hb=3n{UQ*IQIo zv|%RLjpvjE?CT-|oVNo`$rua%@_QAp0PjE$zooKoMw*G&W8k-dGvdW>UUthNaea%j zq~GqC$KkkK&|0ERz*UM&=IBh5ayCI1BHSuYRWRB9je3 z2XG#Yl3ZO~<7enTJwRQu-S4@%y<;8*tc2^l#3K3bm%l)6GGSVTSX^-@Yj zfW5N_XQ_&Uw#XuHBZ2LOlsND3`#vH=Rs1}eQjxQ8d{7IW#<$!MuY zNze*e<_Ka$4=%doM3FI@Da!MfOLo&e7QtW)9>^ALRHmR}T$m3OWc0z}P?Sx}W4B{@ zb4B<3gqiU{#*T>OiS)hyfdddTk|0RR>VhGJC`s4ffv_5!t)1KZ8 z6e_38N~*kKG84TWsS%xoCP5pPrHm?BXw-r{gp zh2taW)gvMBQXz6)xK%t(FBW7~4Pl}{^4#xPuh&>J#~aMVqp0vvdZm0g>9)nGK#7#} z8%O(*9wxFprW_cPMoK5sMvxqTFQhnHdB@~pJAs2@ftFekQsnyW`ies7c(hE$4C@?9 zYrM0}v&Ea4y2z-jk{lmLl~N>Vc)$r@oDs|Bc)!@$qO^{DX%`<^(>U?Xul|Mu^1ocP z;5_4QkIIM&3@Lbc_(ZNWKltKHx}l?+dggh?7(*rkb~ZHR?52U*L75dP`YUG*VaA7le2fmU*Cc`ApNidxvUj#B8wMP%P_svHHN%{R5srR+RCCF~uWZvuGLJ zoC@gS`%!7`tdbqLBuI&!Cv@s4g^brtP;tZ{lJP+!s8Q_G3n-;b2Ax=N5plk|Uafd{ zeNCxzWFT@e)FFvP9+OP8Qqc{U=V+Or-6>{9ND&_-L0~^UAg@>Wv=@-aq-iMf;@Cr! zdBM>7#KfSQinKb3`@<0me9r6djb86$_XLHEch9L|TU(26RYqKnR?0$t)CKYn^3Coe_vh%Zv4zX&C8;7!WE`#DfZg zRkLDmI#g9K^wKmR}UBbbM z!xZw6-*s@l5%4m8T(wxTy1Jq)t3(bvEcBvIHg<@bvRRN<)iKM7*VC1Y4)mfEUDPPo zA-4l=U0?pCw@12fxfOrI$A>q&WB*ntMmU?3C!T;RE848UsU3d5$0m7*JR4W(EHXv2 zJY(nwtaaxilo#5-1Vca5Lmv6N2Zh9$eCLp?s_UBi=9*b5tQ;tclEHh%rzgUuM`%H* zYi2tl+)Q59=&Nh)-rq6)^=aRm*|K4pXPg(uO}YpmOq6X^O>^v|cb`6Df^1o-IRF4407*naRHwPUAL*;^TyJL;!dH;+izE<~Ne--7I z!5_8rLc~Z|g2#;$!p8BFSMlM0eRqR&j!$2IOPCDVA(1-7kyceTI2jncWhJ6=L?BT9 zaBGKDM~+y*IL7dC?1hvlrJ}k(i zBQ>ikuHU_9eSJ-q=O-9V>QWAt(rVGttX8O^NCiv$ZFTeYQC~#eqU>jc^MoSf@A}sz zQzQOPWtwty&_+TRhX+_XeaIxIDe@exRa8JERfLe2=^PixPjL#bJf>5mBl(e=pcIQQ ze}Gyq$!uUTI`;SXJnfzdqd^Oa%@wPwD|$1dWwb``_IvC&G46J8^dL_xDE5`9!`JC#8ajmh7^w$!Cu-7FTBRXI47SArqH(eYIw}Tr!R$yKav$mb}REBAl!- zN3C`In%?;YTnbq4k2ZD};!?|RJFIuOx{OOeA@DBE1w)ANabq#V#Pc<=m>eY!4te^6$*N5$(D;aaV-jDU1QB0QJifYX=zPaH#isPchfx3bvv$CE4G_w+&nQ4dxSO2{Y+zI^ceUVRTLC$%QTO; zc{(bjyoe(KpDqKfVq|?kP1q1(62v&LeS9RicxRMlK~@x4XVC~2<%0d(qcV+@GBTD0 zF)dnL8m&SQ1TAp_vZ|t9txLEhF8ppq6u;sk#9e%aTh4DbwlDDkTr`M5{qno#~fD82_v zui!#c9sYHyZFno9&c}t6639$Z7bRIy(Dxlo=J=Y1q(4RoiabYY%{=@9@r`q(dR1x4tTp+cCgwkt&N|^N;;;`+G>K z5D1jgN#s8wfVk7PPpOPjL7JI{8%!vu%+fqB!Rg2(yD z;H?)m(>P(L2{VlB9v{d;fMK8;XFh!XfoU8g(Jpw*G*e_1+2ClGOH82=NY=O4Z1y|a z+Z9R(_Rm|IJX+90nycqpM443ZnBWPY7>y`=~+PX-yl4xoc%vJqTwrU~amqLNs=@H{=-vtBK@|MV$pU!_E$sPc+u zF>|%J#!JC+xuSo5qG($BuEQI1gnEfXQ4~N`lIO9=7g^5zw~uHQ86JvLlc1}L(s(>D zx|v0@#7y(C=R0h3!y#?i$7>+VHFZ^?@&X9#ce^9vQY4ksVN~bm3Hp)c>W+==(Fd)p z;BNs*a9Va9qFvtnm^0FqOrV+rpk;D1qq7t`V^Oq}SwS}sOx~P^)-On70$z93hxnb8 zO4}|LEZ5h_JdZOtA(0|>A3nWkQfU^81+vI+N~G<$IG(v*7JI}CxY}=k5r<6SR~2eI z90A+Ev2wlw7^m*(1&ioSDMWZn9`QW|IL)1dPTJ+kB32bmmf@zEe&6GqO-aV71c%6f zD9e&8%VGgG=3?0vLO6@DkH=DhN`R6Bq(l&kjGG_+0Jk66e)lco)N@s6(?$G)eq4qNDy zN^&~QEfx#zZf?o)?3kL;O%vV+3;{)S7kXbz#Sd_G34O=c|Kcxb+6uGTP_*??v+HIPPgKF7 zvl#0WudzT~wv5K|#k&s-lO+>^VeGjoTV$3|Ng&IZhn`{EG3`1s0>TB9P=rGR7tvJs zbX^sB!PEUccAlxK`gA5wHOT`y%UI}=O}~jd0jZd+N&MxM2PcxyQpI?vJkPQ7#MF4cq41X8jWMwC0?c#ZG@PkTMS8l*NCjK0RuoMW^_Pi(Akxd_MI0}bbxm2vkMXbc zSeK)N@CIk$`wH7xgHI@P!e~*?9qy|A&F$)21zlX!;McF`TT+KN{_OmFx)?hY8u}^D zt&}FKG;N+U^#jw;C74FL8wdNd>Sz{O~W+JxM@ZPV#j;vNK=U6&CLyURpCQm-*v>4}DWI5yG6K04Fh%*LR zc;=zU7=u=V&p!K%U-mzbg>#nUWE5l~bsk`{xIWwnEi^ z@H;&RTdG)0^@ zDoNG0tk-K+%O&1<9v|+R=85%cO_|5&cOhf;UX~0I7eSyYMDdjB9FD^M5CZ1o6Fq?` zQ^$?FwHB=B*BNt17Cdp_^vPw#CmgG6ZnZXdsNkk7JC>QBnHUEEdQ4XtQXs)4+1IWOfE! z<}|A%GS`USkln6%*l%DOG5bAPp0j>;$23oLpB`~TPnZnGd&2DT#$%nqr5W(p4>)7+ z)-vw4kw+mso9!l=bG$`w2kbmCc0JQD(c78z^_tDck5Oe(WGvS!#sr{o!jqLH>$^L~ zeqi^!No)#^S%oM3Y^*OD$wHNMZo-Oy%yc}RPXjvBG|OcK#}hEKVHkSMG$B%lEmUF+ zR~56J@xgO_dxy#k#(6%@pqJ$W>pkNfWsj=)!{7et%dE7QckU~ksg_HM zx<)8p zHy#w?Y(^^kDaL(kg*czhOG#c92zA)dpQ{$cF*r1)1L$Kihd!{Oks)W4@p8sX_8vbw`mT%bf|AVh%xb-4nx{zJ3xU>WOgQ>^imBXEMc%EBDaifU zQ(i5x&STTE+FOScu^7k@@Uy|q5iBI7#5hZRwZwSKkACa7@IEm1BUkGivLC)@xmsYh zJG#ebcKaR9T9)mCTITrRQ98pohs9&9i_BZ+la<)htXgzR!610DEXO&|I8H387BvS3 z98FncM4*0mO;(i=N*@AsUB^XOrs(I1s%cqWt$Dh?XB>LeVN7&nr=(^fob>*+EI`1{ z%{Z;7udk!DG1DxnX!qUk_snL-IU8^D#F01_a{@(KV7$RQ7xNK~NefLP-@9noPJ0Lr zAAF>fUBGG1q34{Dzg`449ykr*B87k>yqH6vVv-acYm*e0)WlRQCvPy;(dvq;d`0g@ z_HIfMF46M3xLTvj5>Ff%$Ru74BD$lb)--KPRur+reQD1<`Nj_-oG`~C{070VIB9i7cq?}2H+R*?Upi_w{aK!zPxEb$Kvy+cQR2suzUy(; z#wElt!6Gsglq%55GdqX1E;$7QrtA6o7r$V3p2f{A^JK|OL6sK_PdjeE{G8c-V%zW0 zmWaozO8Q-QR4oYW$%15_ChFCac|RgNge-$x6M~J)zJoPgMr{0nEi9$LDoM3$BkgN; zNEuMG#a4M7FSH9(o^yM3g%;2cBi0&jZtqYsvJ|{`)K!U2%bM95vLrD(bo|aoC4&t< zjUd9Y8_p&Z5swmr^{LZ~Y+h?EDm^IN)ZV_mMi+r4&~!1OAdXUA`HWkS3NjG<^`F~v0s z6DWbTo}#L`|MnyMUC(D%?+{Im8wM6PD~5eXd9|XxzM^Payzo5lH|VA$NceDbjVd)y z_m9}g(QUUB%>pwUnwwjOeaG@@$vn-}%N4tAN3~j`f=2(~JZE!NnWOk$?EhzzOm3*sV(!HX#UlSp!%GilHD@)lp_WUB>O%k!_l zV!zp7rtzo`5+bF6ix5X!B1Aw_0O1{3>So5>HimSjG03u9Fxe3oOloY;X1oVh>j6d+ z-kL9-yW7O!$?-ao>lh(^z^}bjE4)-o9Ok(`ur~undYUYHv_~0OTwhZ*O+vGYql?NX zxU!Inx~VAY`Ut-GyVG+Cd|RTPdqSNbU2T7B4Hx{s`nZ3U2T90va^rlTsv@!qWL2=N z3c6i~9mmKAI7GcC#HrRADHT>mXukE)l4^oSWI3WJF;X3ww7~_KEOl0}$p$Qeyspv? z!lzg}byQk7<4`h-?>Uf_Ipi@SokJMtA)Ptlse}|50$CkR33fD56_Kb_CR5~1jSqp( z62L|Pby-n-R^S5|Gh>WpKXf#0OYjllDD&b-ts_ybya-I*Vw_LV@A!R51k>XtvT(=f znmX`G=6S|jOO+RqHkRUQyiA%?=Na~Uf^pz` z_IX1tHQ)Z~E3$UYh>u2x;CMgL@An{|Iaf60|PRTCAZad1Ic7Z;D`xJNH{9eowk{$UA$jSKAZ#G7O3EtoaZhFr z!QWx&C6pN<*NA>5EUW*2zUIHm$7qEdrc3hXD=L3vKR}>fw)nDS97fDA9#e}CGAt<| z*P4LD*l4GnLvo-gMYCLE=BTs%znOc}CCReuO7A<dg9K7RiLY&x_l5PJ~goI^}Qpg)ZabB{D7KY#kf zx8Huprt6rUM<_|r)J*e?n`fe$5Y8i>CXOWRA0=&7@WY>eK!wE3%?*7&FuNH_L$_M7 z*=~9G`6rAqR87UI?KnIVG6{e#kS67xcTfaqE%BY(O>D=h1(PjgPkrSfwM3{zeA&W0~fe3 zqLB-X{N>2uQh%@5u@}kNBBu~n9dEi)Nu2ZD&N*aBDcaSF)y)=Jl%y%3r%0@`<}NKG z45<}e*P@H!D$zl_15A19)RfSNwtE}siei$zEX}L(h@(o@s(!!4ZbjrZ<1VJjwkmzo<|$BK#&3_AdVwS z2+G1R^nD&V#2n|&qLEH1(bNrvF&v#=AUb*6AyQJnky5|b_oqa_K!)6))J7OXZcKY#x{yN?fSzPZWs zPOVvW9pNxRqgks8OW^j~Z`oT|bsKC-xYLL<3dWg_PY0rPpfq~bP?{3A-}7mjct~&@ zdz4b>x}s}WP&J$m2ZZ&=DA)_j;fEio)*ai;Epy*fZPpxro~XaOr><(c^@gAR{5?g} zFbzFrRdO6ol&g-CL{*lg7@6jYeSgRfx{!lm*P_HGPw)#Iws>M z7w!QPsZs{d*cp)oaX1m@IlHCm5-|)Y3CF{cO}8SFP*NeH&o@;eKxj}3p)&31{x{#T z+wU<-Gxv+PUdRioR0xr+srl~je#f8w?T_f~8V(2k=J&tn&;QTAaa_hNO{q~;3nC(`ifBD{ zp6CyUv)2Noibi}2Y)0pFP%~b9G@(+J_kuLBW{B^BTxR&p{aJ-2Z zTlaM39=ZtJFF9w=)>5&gK$xOneRs$D?haKI1aZ{?AqhGcvL@)9=G)XHrIxPeIdwu_ zL%YAW@cu_Nqsz}z9w*X5Gy7s;7k|B*!{;6&06Ex9SNqHyTwJpsGfWeQzQ+cSOCi(kV$2t!QW>qeQ0%;)5aUE~81Ns~S)RARzt6yS3AlNtsw)x+ z>m7Ab5oVj0Xh2eec^Xky3DHVOV#u#m#l&HMU>+t`rsAk_w%q1si*pW^{PyfKQ*lFvsAh@jK6@Us69TT-EIL3*2c0?Dkv%{uHS=L#> zL7*%R&HXKwglsBM66-wms$(1{R9%xqp5vEIgB>mHdV}i+>e68Qfzl;xYw$7f-FLrX za30y#xKdM86(Bi1JP~7LRn!@s+4sz+o_QFU#|b-)R7HVZ;5j;_d;(hZ+iO+hQ(#K| z!e=pUgZGx`@?Ib%IN1qfGH;Ey-+BmYhUv@_FXLKH1hH*0J13Qwrkq;CIdoV)SxUt zP7+kvP}Ow?Q9PYchmo|dE~beW7TI50Nz-4sqf9SN3-XY1*ISq`zq7yMed2SEx!94@ zt9-im9DCx`v4;$yNeG12RI4?rteD1uXftZ?ynssyL~t+#1T#u2v?%b)C?OODu`nEd z`iZ;smKZ`FE1(%gLWsCngAFbwnpMZ{)FT&owM=;sasiwxO}%P3J?$|r>r!U}Rkxyu z;77~qyF2Q(AQr$Eu#TKV7B9uSP+?~h!Fw%kJ?h zlkK3TTkO<9V7d;~lvP17maIkU*P)@nn&lU2qBI zJ*WMS)#iqI_M~y*8I_YqRYIN-wCB?#q}ifG$tU}Sm!Pz!Tu$*RW~PRIdzHRSi+vWs zy$>zFzA(l0qVAGfz;m=rg0N&+b*p8pP*(WmPIOM!70aeq8bi~xNRy*gQi5>1LOq<& z$BD41UpP>%D_HsuY-V3;ZZ9+H^mg13Yl9ea;eAhf@N3@ZyN~_a=KdPrxM)z{eQx^v z{Y1P#mgR)qmDv)UWjr3UENY=diIi=&GG)!{+@C0xZ=h~#qIci}$J3GR-7W6%>4Fy( zDxa84RWXbcZPzR^#5`s=TRzX!Ia6i_9?P6HC_&Y=dExbRz*L6&Z@^y_W_G+aS(==x@!tR8 zcMgI>M4#n(TG7@GkJFK;49#}S`0;_llr)<)(=emjhU5c2<(Y1Z?gE_`GT}nN2#C(- zK*>ZVyg^QDmY`fjMa4Xh$R}B(Wda&r1Z^c;tS&#o}nTE96O{wPK|jrhcH2 zhW;U2uti$-04n<*8(A_%w`ii4C74zeN^$ZbyBp7pkA-hM%88r1J05=g5qFVTrb{Do zj+YNHj}*G1#YdM_5J}*Cz*-9;)5}y=zP!AY<(nD9JL85|1z2!)mp#vc<#H!bGT)Jt z0HGD8ZMpgGJ8r-I23=KztPQ#tEnMaJ)s=Poa&8eIV?_8skw6&9s;#hn_S%Qw*qsh+?rsoTWlORUAhTOeq=Zrm zDf9A9UNSlJYrdqG?N-(;>%{SkYjK+z`G>-Vw zfC8q|3Fl^X-B8@#vik6W_U@KBINY(Pt_#!x0m@zMj1r0AaK!J9tfFEZM#gz2El_b4 zW9AR1gb|W%yU8jBQ*!s4?+`^cFx`B}EQ z*scj$(cRoov>ipa;=laQ|BMj|GdkQfvc2C@R3)>w=+baFKB1)GxZg3Kdh9qd9S5Qf z#IUHJBm@b?((TU4Wuwc|;I-=&*3LQlN?e_xlRzbb9eP6aY`?k7yBqQ-=M3FH@2)}& z)J09H4TB$ZnC?;CLT=8NY@eF!-lTLBLs7Z>lWPNjk zX;(}MFX>>@=ixKrHGDUH zT`PJCYq*YbUm{S1^_f|Er2zRwcbs@T0(fIHPOrg2pDD^$%#N3-5?|kTU;kV#zq1Rl zNK&;erYNw}h?}PDZcFL1lu#iOjH2J~P)jtuO$j&84C=(~?R_2vNJUX*HAsp9KhGB& zpIkc9Bm`0$s;XvxI3QC_Fm7+Q%+WKA6EX>EZP(Ps2b+fkGLIqQFkm zMF&0gr%dm%j)U6+(6$X@I^m)~nKHx77oq;VJCQ`fc)>Bc9H`hdRBgj%d&6|xlcsEG z4KZdTOp27IB-lXQ4Y+=ml&JUDt5fJs}b_!Z1a5 z`Q0Z0C`D0K>^}aCyqdwD>zPRTgmpTdXf|E8tRMSD_Q*1pSoS#yT3yi(NBq)J3vo_9 zzT(}a^gL>~o+ez(q8GKp^%&t!3FJhBbS+H8KX*XN6F$9(zGm-M3UF3^X z8AH=HXk!+c&ht!Jrk6GFTztcQhkQJt&I_aWNM7PIl&|+Jx9=6JcVIT3E5zb8G5!3r ztqpRtgt~ZXOu2sCXP*1!ZN5h|;uT;geS!0kUe0`l_`=QQmk4Xu&HsX7RE43|3R4u! z<4Ev%!K6a|3`HdnK46v)xLM#LesV+~=+-NC`-rLPMfbXgMI$-S)3Q&?J?VBuQ&;q-Q`R`ANC?Y_LV+Del#qP$;RBDKKIJ{i zk^m8x8R2;9vCdM|1*@*hpqwT1EF_N!;9}%7_9y{v9Qfh?Jy96R?T33Fe)H>sd)PHpE08aA#gGfWa2c9_>j=LKvxxrBV|+3wQWu@zFD)n+i-f=VG2cZBlgoS zOX8fvdq+%;qy#F#@!=CGf(?$RzDI`0;o%YC^WlE~_y{que|jWYPxOI$j#v`AhmW`z zh!Zq*&Di%m{QLttBu)oQkT42CS=0>ughAk!@lz@!6pFiVzrp#eBzgMrM|4qOw5D7D zdlUZIw3V_o*xH#G!V-2HFK9_Fp51(%jQv2{b__leCJRg8(7Aanq(LAU{Cw2}UCC>C z4ib1}pm;}Fk9eUeJ2y^J@P;}4m zmY;3DpB+OgNxW%M52xI9HRab8*!1~-e-keGIX*)AOtF5ah$o|w$0_@om3%IG=~V&z z%uPdlu1KaYSdqVU^SPQ$zbW$R75L}Nwfki^e2%7*psNy9W~}6V8WGMtYp~-o{}=fv zm!iNgIK`wj>$^Lo&k;1nXq>gIHe2St&x;KyS*Cc13tw8MytnLitRU>XKg5_q4p&7{$kMS*wj z*}H%0i7DZ=#4q#i_3aHY2Bu?=j0xwmp0g+n^Efh16S}OZwBhjdl<9CWYfEK{#5r;F z`^@LvY?#Iocl4|&7|4}G$H;uxOwAPZt|Fr@N-U>sFEUj$0P$TM5H#{+-w;86XWTGArd4|3MyUVX2X3MA3p6!Qwc0WI1#}SbPyQe2)NK~?*Uzji~W*LE?EK25Sx9-Ke)A%EWLwxth|=;QMWOiCJ6VUv5)5ygvD`T5F`uZyO*K&7v!WLMGY>7u`YvaoVsqf`_135{_p`^)g+lwYnaGs1#Fx9x7bExUq+#)y zJJRPsKA%-Dyeh_=qv>D1&lmf{^v?4xnLnAOk%Yt)6|3!*q9_UHpTp(jlrI0M7_i3! z_OPd0qL@TkWLS1gD6R7NNh)MfpbE3hJ+t9qwc23EnY0v2+mEc8meC0Q{QdXz$J~L+ zMg3yunIFIZGj<#)w9d2Mh3D(185wfakN0`|t(3}3$qo^CCYYM#g z_-RJPgr6-EK~-1TT#<6;Yn0^a@qx6ABVr0jEvf1XV~Q*Xiy*DXk24}Arg>tVX9|(` zBvVz8w5C{fq$E&M6A_#aJ?pzW%I%t`he!6i9V8DTASJYS8_G>flnY{0WwlL`;C!C% z`f0@Njt~>4-Jap`36&DI9|)60XhXHxQs3So%bMc$ma^%Py5Q!+Jwi&1(%jtL;!~ts ztti_Tkzm!WKh30=aPGEXWG10~xMvQY zqAIaI18IVF{OSMvSN4DYfy0kKfptV5sYQVYX0aUq7uE|>=GprKzj+zjDlQVqw7Ad| z8G!G+qw3mcNRyPTRGoJPatRJta{su3pz?{vha(kCg9TGOo8&yqBr z0@`&3;MIp$oB{I!j0aI@?2>lzhTD-MSc?idcD>!K^LQWz@E(*zl{vv-wcT<$9`hz# z$~}lk5IAX^E64Z6Yr;k4~9`;C5PRB@r^=5;2i>qvL z#LeDPw+%uFyq&XwC}uZamb^*kair{L(uWPsyZn3hfw3QPv!iJ`e2j$X*=$zK(}=e= zGij~E&Jzeh)znPZ0*bb48SRwEDlujVdxF*r;ccG|#(eZQB~{X#bVAi7DMcayKTd?% z660cdwsuLL0Qay%#Z2rve*8q5XQUGJPkRhmO)?%%Y`?v~ungL^!#^AlH*1>PTgtYk zDoggC9#Pt$P?^V2Rru4mNC5-G@km(}%%_3*ct8Z7AOnevP^@%~t0a@R zsI$vaNHB_~sdJ3|@>!Kvk!G*cdCv7IbE&hWaCQ!ZrZWvk*CPsr^)}Co&oyspHsn=y zq0U7&U1($C9nh?JWeT`{NLu{F&1TK!!+nn3SvprKUc=MlB^Xc$ec@uJD`MDRDq>Bm zlH@#UKM=OtDLMytt&+DmZM61{!lLjyS&UuxV~ra9qYSWTuOLgnkU-z8Y4BqI-<>Tq)4J& zcN~w$d~;6$B@)JYW&^`v&w7h1FF}({?;PK4r|Mlq8o= zK|zGYjvT0)5>c0k(9%{FT1e(;qKpEy8yREZMjM8C#Bp(Rs9x zxM0x%q)afL&~7AI$H&7b7&B02KONCNGCf$l(Fmn^`0+>7k{H?c;FVy0eBzr`$L`Yu z-~ad%;e2X9AcAFlw3rm}$3wnRBzTO0dV9n0=~I4O%o4OH0!5qW;$=~=rodW@EH$!U zx`UY240ToGoL$_IVj2CtQb}E1P-&SfNFkYLOI;O|Wl0@P&X$axMr0_?B~C^>N5fur zA%NbP6;qs;gMBwz_gUE>-j05kMTIIf>-$?oSu8VJUJgtX&tORT>{%8mUPcu1s%!dM zS?cQ_P~0@gha+NkznFdYwZWEO`}|*e->EQ&kbyDjzZ1geVx?B%-}M^lRiRIx6H_cp zRzWrwL?xDB%J^onD6W)^ItIctF+M(Ve}BghKmUx6>5^&I?@!A~3+i>p>}H&IluO)- z76Row52qbc8>}f86@()hk=g~Gx$n4=nQE2M6VZT3Q`B;K^7^u4rZ48IQ5v@zsU57w04JWi#%--UI!$bu! zX1i>Jx~LH;@$vM)jgt()G5+uq{hxj$ggle3NQB27$pws&R9X?|f&F36H{bo9##Btj ziFul^Lw}K}O;7tp{GT{}ddl-_Az%#5GAoSgZpHq1LKli}ZtwW{&p(2I&1Oaa@RXSl zMsw(UqMeB*N0|#Hh%7VEn2<_PHx00J>MOw&W2*o(f+%zkU6FdyN3vemJ_@C`y>1vD-1(?zxJ)Tatbf(Rf`kiC% zwKbTlnQtOv1e44^nDA<3aMfAAn7f{>rO5|G%;DRMVg8M%;B%9J^ce_DTGzXFhrGyT7UYi7TbF^vOtlhL8GcOWG$MxqcD zMYivT;7GwUo{q$j=eJ7b?j@zj*q<0qM~sxzWezyhOG?H_AcYLT8T%8#Te_~z{Dzc> zF`%`=Ie!5Pd2i|ML{tLj9mDa2?MK{cV17Cfk0ZMue&*qapDA48rfJc)E0Ro<>l$5| zoGOtLakk(bN^6G0k-6_tN-zxryN3r(ZsKqL=^t`~R239$jgdOvP^8As4(StBkc_7j zUIfzQ*nfN=E$WTgIXsadB}KbJngV4Eb=wgTv^RI$eES`$swuh^tJ{0LHpr%>s9MI| z9^I6*WrcQ$^fx!GfBPF;$T@TKI6{p1`y#Qr-9k}OG#&NbJzg1_n>%#fB7~x;YS!yD z&Rd+bOnnaUoQ@}4KTtWr)BXuN&%}9NG~l@qYGd$=CR!~u>*eM8e7a9B;vTQ)c|sr^ zL?ehQ&&j#UBYdXDEF2uAXxfIdtWf3u`uBhEDNss7tt#ZgjC_$Sd)3~&2%(e<07q$> z%?6>Ch?7?>(2G&y(($GcFLzkA#A|_ZG(EF+cRkZQ;gUyvX)bYn&li#aP*+fu)J=<>@+LdloYhsY zSM>dWbkD$cS(Ow=ix)swQ7D~{>2*c7-O_X&{W#&gW7V}Nr7$LE$_W9{XJbTZ3RbHX z{WxTYnhYt`+RAQCnNs?CP+a0Hj#S@SfJ zhM5>6rY;H7Owm-_e)tAE&WtHT>kFlE*0I(#qw-j9@gXdy&>ZwR_I+M1#(Ugi$A+;=#5sqP?tm`~qFHANS`*2ZsiA9%QH4P~Q#$iCM{`Y_U zLnP(+9U`@^D5c4mJf2e%&-rK9#WxpHiIAFRy9KF`XWF|+pJ`{VI;6#p8NAQniE}D3 zyqj?RRl6-AGI#bk<#EF=%rn2Vv-@ioLg8c1y!y%rc=4+?f?x4^AtC=Ah4@9WGBaL# z$6RZw&6=?vAq48SVRDvkyUmtdZ4faR$!VGpQqVLtex6Yg;<6|j<|(J{A_%iZFI-y} zJUS*SpBQQdDytVl@W_}*A;aNyX|lNh!8i;^5=~K%oI|9D4iP_31m`hDL0MIt#))JE z-OVbK!a|^OiKjT_C7DaOkQEQ5QZ$=xSrEcE|LH&B4yPQLsRYVLRE$U;IUWw!al*$y z-DNdItP6^+#aoN=fz5h_s|3^7Q?)C!(K#awk@?2nBYi;lnRGnj#v$*BCd+BJ<8<63 zrkUg&vz;IYy!W^m7>5z%6AgyB6zqQdnd#vvJNbmjj9l-T#|aTL-#EG%oMo5?lyi8S zwbjN4#^J~~oM@Vc+0LkxwZuX|t4d-a=)I*~uQS1Jak-w&KJz>wLO@@I!(N+^VvH!G zmx39WbnR!6z)Dv1eq>rK<)$$B7&A{}N#<5sQPmAaQPB5&20f*i3-9?$1|l{(q>!|_ zL85X2zG|D_1Yn*MAhw%aXoeRm2ULiKT0B8 z$m5Jc|A!sne|3=#5$Upn?Jxg&|Bm^r3kV-cb@>;)j9eC}XY&39VEb+mkivny0c2DDgG#cGj_<7E< zuv1Q6wo*`b4O(laaYm?&2rQN~WZMtKX~rc_d$*wwiZDz>qtHTT>v2j%@0f?4=x0n@ zVN98i%t2zhh9S6I3;=5yE?j6G=%nAHG}SnPx=SWD|=IxM(>( zKH&Q!g_4xo5WS^x0OLR$zu-&3Y-g~6=Kc;+_l&U~0LuwSx*{qoHi#}RPC`^{2jpGHlwB(2(W6IoK?}@=- zw9dw_uyoVQ=d6=?)HFqx-Idl+6cwT{8As|IrmiTPmJst2R-FsH6sXm|{L>$v)f4$b zaM5F*X2<>Ql5YWX_p zijp};{6*oMa(sAv zr{n&r*L-oqd^u@9Z~5&wGWR{vdlaBuLPYSDdMR8M&jR3=P4C562~yE*)|rRv9o|~% z&4!|`IPDJzA96CaTvm8OP)-54>7dk1{Xo~$n6hMcIfVh4ir^GMayH0zFGnl8)@?>s6Bn!3$7 zVW%U7HdIYVf9la%u)6<%2npvrRkzBE9v^YuF%KhM&=jWRlq{~F2nnLnnRaFhOkHIT zML$q&SID}-d5^i-aP!;W;$qgTuRh%2XOGl|^7a<%0zwye>uSnzQWdlK7n?7PIsDj`NJ9d=(OTRm_rBB%@HLnXsf>6?@#8(+i50Pmyhq6E{j%*s;;wiF-CNX_z05#-!nQ#Kh2DGrk@7-4q=!J#Lm zfYORi7R+WQZ5ryf#eaOl`#{^Y$dq_|dPD%*?V53aB#ss(z#qn}0bW4plg+ZW&1Q=o zCr*b`-oCq#ZwvuuW{#)axfNAOQW_~FRo9`5g5hxwNTim`ANS}4ejM5T^b^s|6on=_ zn+votthQUm{gIQ6tZp|5J0qVgPnDzEu4zomq`(2f3$##J=MX;7b}bSKL15|@r3+FJ znAHlY1jTkuIeBCNeY0k^5mOZ0{r!JJe*eJfaffLeN*ky)D~hh+@Y6>Cnyw>+gjr&G zf^$?wg)2(N;{l@#Bte`#l~TFjDS?(btwgUnN}DN$sLaugF)e$i%$SWaqJ+%z>NA_+ zS{Hd4d8Ug&EG-nebA@YUiHjb8ZalRjx|qX3gQxB~W)jo!L|TYvEZ6_}s#fcN`KLd; z4ywHFQXP?y60NGxLS^{FMVi1eS5q|GHAwZ`)n35^&RIhj@Xk_frFh=@i7U{0S~j)b z*_?DM&+y^&5?XKx(|kQAyxKx8QS0fIc2@i<7sdOJc`prKyfYfO{I{5pqa}9L8w1>R zXpy*LWxP^dy>ayY8tJd}uo2(*p4+m+8C zq?hmgIZEpFZzv%bf>bswNCes#`rR(OsC*6|L<&^h@J+L(Zd=s4VZYCEuoxnbyB+mv zMYCB`))mov=Ap;M$ZEaL%dB|@zqdAQO!f2|x#?Sd^9Tuutbe=*g%A#Z(CW1(;Zf~+l!&yov=vD64 zM9O0vJI`P}?Iydx=6<5+I-2_phuuRyjw_YBXY#^uo<^dbFRm)rk0_wISy2XopDgii zg{o_ag7Ui$tiQR(TgMb!&Jauqy;%99^T-rQ&NEIkWmPincg)j}0r`tkDaA;=>L{hg ze*ZHkdm;r-9HzXSSCVnR&+jdG>^uTtndN4)MsgN64TLMxN${Q!1EZah5uEjOO^2Bh z$28|+DP>k_Ef(-~rm_G4AOJ~3K~!-eGD}*QnImF^dNxX&!!Z|LLslnb^@EUd!IBC} zp()Vx$zAAXY9Y%NRhhZsF%U=;N>gf+e+Nrq%K7?MtN-Jl|8TKFiI*4rIV~cPn4_bX zC56)DY}6}wj#jjrHA1ONcKvI=Zo0(9a}Hg5G4nmke$V#2%iU;!WQ!Ct(dnFSLDu(O z#u2YdlUTZ5IoPaQHTq3aye^F5jW$<&)j|AoY#s5=-?0?lRF`jV1TTuI`249MePwlg zkFOvPQ|1F-72dD?Zl8;0{y;|W@za!v`^#8CJda!R?=_H_3#EP;hWetze|rnOd(N$c;~4%8_L53+m2694;ZB&!R~M%q?C_+A6_jnwI1UtZpk8%&BZ$^#rHAtf=W|CG z1M@f$e5Ag+1uZ!3cU0Y)^?HN1Q%A0qotr~8aChFV@FGHk!rI>7)5Y1v5@#eV@ks`kJ+`i$nRqCbgMSADgN{`e(IU+ zfOj^tc)g`R9#Fv%oyECqFbd8RgQw6MM4o+zWl<+ZJ{8NtntW}LOirx;F zPn8sz)hm=DN=eH<6?%JzLe6i{-qqQ&oju0wL?B#yU&1 zd0ty~4ciZQIOo|E4cdC9TJ!MfBX*uCOhMDO1aI?_Ynu7?!?)RfT$Q+KWF7_%rvvNF z8eJIX$s%K><&AbG`asb(%=1JH5!2OFyP0Stc7ggALS2x+YUSDLebvk@X2H?vx<1{&^AEKRJiG| zhsjdc>n!jePZV{->h2r-YzZMztybAg;xaU-a9M5B%Ro{J?_4Hzg@m7G`iCb9opGBn z=1Ey~w?$};>qnXo_o%i-1wm01wCgo~bjY&c{&&B{yTJUgqg4facgjVlDHmOF;kiDlVYUJPEbA0@iA^Z!n z;0!`XYnsi9dA6jO^}FY&GI8ZMkaCF;i!pb)St4~s7UhL+kEGg@1u?xKe0Z;FAfRRL>CLEr%YA`}ybuq6L2g^5-grux% ziYkLomI2=7HRXBUy8x-hwO5+wn}Cv%6eDBbGaR!{@p;C0F7WA1q)jp^ON~N!A!kEe z&r@G_nCYvEF0TsIdvQAH)#HIIDf{f~_8pUmcuPzZSGe)dFZZsNUp8>Qn_UMd_x8v#Y2~!kE$QoZ$ z;(TBnC!~~g>kWl5-~%CecDqNWaX^=bR%WJhEDOq}rj&|#cfd{~b{MkUtI%w=TWVvF zF`<#fejtuh{yBQb)Mo@`eYd9FtTQH6%AEH#T3RRYKCnL?GQYPf(1pn?>cY_7-{v^1 zl$#496=|3;A;WbJkB^H?6MXXcl+a~Kx7pIPE4-96s|{_@FzJL|breN~3<4PvVI1*K zJGAp0cRT+0-~KPgKbV(+RY8BsF0?lUTqM%AVw&v8leo*6ckln#`%;`mBG3kp4lYH zVd~i*4>YTFzTu~5eQpvW|LmkB#IQsqo&R%s@fj6}E5NxVECBjim*{OnSydd5M~34O zXEXOgNO>70DHfTdDd^T~y7g+wD0Ga&z}WZ8a_vI(7tdqVD~Zta#h(l2kSqzoN;dS^ zZ0{4-KI5FRrppptm1u1;ajC3u)0AT{mRCDdsxDF8Ja^wIzMx0s015zSnVdxx1-h=# z+MN63rF+UmeHH>y&OVz7cN%dnDvP~OAl`JX>6JYY-sPpgfsl*zQhR-kntZ=Aef#~r zivv!dmzBN5`KA}^&2;q`>3oiN7vkOJ-oYJxIB5^PMGC<*kHjZW9B0bS4OLY#_7k(wlppS>+m8Li zCzKM{{z$;*nf0;9^&`nUqSm-+#Ev7$Wan2Z69~onn-A1=%i+gQBs}H1#-C0Z<|7iq zIfT@>X~G9jsRVJeqCXt)!O=D?VYW<1N7vT4Vc_(CA1DTkNP=M=iOZNEPBS9pag4W9 zp5w+veXs!B?L3lVAoz&4Iz#hki^3vkzey+axU)-G9h zOJQu=+(naf`(9qi;<+ZA88RZnysE0Ap}?g`f7}y7fSAxJ?;oOox@l14;7bXFkZ^Op zVGhHX@d#(>T1e=Nwf40_;XDF33)-(2AVM%=NeNn60sdL|zHk|IQBZdsUY!44AdR5Z zEy_JZvgNs7PF$knS)#dFTK5>!1wDDmaRZ#S%+^xX`7R`7F5c(#*$XeADNs*+HZUl8 zC3AbOHSZ|~-poB;@g&6i=B;N&=c{V{W`vx?yGyWZC4>-f10&8~{rYiSDGtv4@QbmB z3&c{t;jUkI)tCPkmu@;G?36|Ox$AxYoLsW>()%|RV?*X8>%0_=0)$eORfR5!Oo&=W z6Degztsf;s|9s;}k<-u3cQ6x$8ya3mg2nI|$@+~|>idru6G z)Bb?-p1P@V-ocoS2J?Qv$^jW8O;e-l0($~&itME8hl?X@{P>8n0aIuyW0>X~-!9r3 z)3r>GPg$27LY7rUm=8y=17VzyQqgrSA$UBI>UK*ZB;(^FAPEAnetC_^{_%;F1cg+n zIWYf!ti5TEB-xdw_uR!+caJ5PDt3`w%z6E!@Xv1?h#1}16834$f`^acXP9I&w0dAI}WE~%2hKZMN<*IPhJ-yJPw*s2l}Vv9%i*->ie8P zEp+>R>YP!W_xt63JRg$jk%WK)%A(A}qEB7uFeOV+WvEQafe|l4z1iU1L|K$L=UM1d z3Yx0oIfrmAQ8T$2SauV$;L1W-Zz!!rjRAb%tS6#Q&xKOg?hSQab3Po>^AS@Q?VQ6_ zWr`q@RSiwei+b(GBbQ|0h2Oh84vXm@BMvQ^4K+H>HUvvjTw1}+o(?MsvZ+einOxrI zu~kXFKAC!ztBuI)a<*bg%nLP12?kS_Z1#$}q9`jcign(wlxDGJ6m#uIq5g_U;mQd4 zuNB?Z0jl2k88bAJ;>G`xRj#`FxnJ*5-(oggFEeL01tCIdSDkv|MT@LQto-f96vs1- z0}?_aesh@=E_QkHrZij$XfOCOi7{2~8f;mnthD@UdUZ3-OqVE^LsQSD<)9?QXT2pUYKK=R6jKR?~HC=a3 zYN)crSi>|qtSKlqE&a<8V=UGE7X8B>`)!oe7eB;l%@f~ z(4C2WheXBQ{e6l6A4by0(x_p`3nb6}$4><3xeE$)*Ct7mO7@9X8&3N}nhJwsIHpu$ zZy@v|`=`%XpsMSH(TbwpwA8x|=N~`gUGlCSyrV8k9%6~Jicu2mb$EJ0X+v;H*6q(d zv710^%%+0LGd%CH5BF>ycZ9L$(4G0PZP~qlN07*7yJhG*p8oJXMOCrI;$6>V4Z5lb z(}Yrn!WxYC_-P_Ik5#b29i5ysLj=g;GuBZi1EI$7MU zql;W3uv5SG!(ET)f1O13=Cpnbm4C%6LD1bq+|=3L_(s^Ft|?ZpLL}5R_Wr6n{@M`| zBD$LhckPvaVeZJ4T+BUY{LzicfIF{C6Ue00l~dDlFRbECRAw`nDKfPMrY;l3t1R+& zpGP>Q(W|9^780c^CZCYBVADuplP7Ep$)J3Vt1C?{hQ^k}kN4P31C^z!Du%-m6&LX8 za(m~8A$XtZKZfV$FLeFD$8Ww#ykJ{km0}o2hU1yKZg{x6!<>2!$|WBKmlJ8Th+*h@ zR8_EhxJzle&LxSo4=@EZic(vgo9M@p&BKm*yJ70Prw+*VWjHeD&CO0ot6_naidd0cXgxPNe z5a&}cX^4!cGuk+HBwHVqm-7 zVZGwah^>+@hSeHBO-$p&X1if@F2y-*+jPymzv83MOZ{@wWGq$~x(=5)=^IsIl%|V) zCK{}&p-#%mCi^r86)MA8oY)YUTw}(Asm$_YA8C7 zYm3XGW{ygh>!q7oqp3zGE%h`p4s%AAT3YiNlbt)F^_VVt4HYC}bZ`^h!C}g@Jv7Fo zWl>Wm|At!wS-FlaSAT&jrrz2>-r&7|iTkzWt(mLs-WzSRy1riOrhAs#`Gc=O7Aud4 zwefj=Bcd{nOHxYp{TVk-iK(#E*b5vWUx8KTwnAm9j1EbbT;JbeO0$|ARCX-803`BC zGCX$_mxJDxB~w~RAd*a+$lkqna7=CbeIZ|w(2t0lqg>>=ahO>$(}=xi z9B|HYI-iLlve~r6VWe$ac6WEE{fXl=P(D7eHJ0P2Ct?i52;K333PMpQDXR|wQoGj|bE_QU6q7p|BK2W4n&2n4g~vDN01ekdkq&MTuf`Np4Ly zpp2ou-=sz7xnon8_z?Nw`#&N|V+xDw2ZrMTzds^Wn5JSc$v9?X3~ke3jiK5!D4U!O zcWsLw8eTL|B$cT~VcIPgVHhVyZSm2gt1=nN=jExKM$TcRk0Vn^a^b_5r?g}@n!EdZ zOi|!tz!U{T*IklSG!#WeT{ReE82!l0%QN_x?ti1PQqoXy4t=^?^YxjTUlFiHk`$lM zXEX|(txHo~P7A)F>#6I8vp+4Jj-9!&COa%kRK=EaVRYPpFt5JyMnJatoH zstRRwQf@`b%b<(#@hu%eZZO^J2;ytZ_081ZuVu2W#*-PkSa)Q9F>q5Za%r`~K$ZvR zFUUgFwg*+pXF>=R=oGE4G?8R56MDzK*X)ih_HK(t)1P{Z#B^j5$yrya zP^S@5uu2ogiT#%(I4GNjr>7^1qNIIjQC2aHBVu%-&;98WQ=`~eiwhC2gywF84<2{! zFe13)iE-$Yym+@msse8`x-b-F!X@zm9ie-APM-K7VZSI%6%?v%Xx?w>pPmVBL{N!Q z5fz2Ncsetv9&wT8;f|td>4qcG8rsJVadb@k6J7%Z%n+8zWa`HxUk<`h=j=NYj;gaG zp_G<~j~{R$5?=Pyn}*%p9sTi?qSIZX%P|ef8>6UbH(L(-6Wi^U>3pJz9;V2P9#B3K zI>o2sA(`MP=nhY*RSFSz+M~5W7s)=et{SRl3)T=t*uMXm7Ge_EHZ8tOYQrWP^c3*o zFN2K*^0%nGfDbEl{^O<5-Cc1(;Y zWpsKb=9-{2P1Dl%{Q?lGRq75obt3pcj1gOwNd%(6E*+Czr@LLA09lXotK$30X+bHb zjiov|tkFmfQR!^3!?FQiZ)0XW(I~aF{$<@z+7dS=?xn;OFO(KBvvbw8gV{R4LNSlc z2`d`94(-O|{G^jUUyQlJK<5vwQz_9x%szW+~HQuFMwe2v=K)cI6_xD;H-zJn!WfFC!J~2NMD?(vE-KDHenC|w)x!e_)Sbs!P0aTp zlAcqH#uhb2T~Ti~Xy=ICh*--+pg)}%`jNYze2a3P?#Dk9cN-qR`M}}(KPNBXwx;N7 zsxB~=Dp3i&V68B*f&qi^5F_gD0lDbIc)?qCjQH#}*}~t=UyIeNj+0E$zYK zOHEtcaqiFTc02qyay%TUAMXhRfR#@hN7;RhCXdDFNCpGr^pq?xQ>vS zjjtP7YKUQR$uszTH+Q%a7?;9+Ar@YFQ)sBmg3rf8`cvxC8S9u7WaF+x zB;qGW9h1pSa1N_tUTB-;Xp1@7cww7F!8RqE$9s;?2ZrN`DLBj~d4$-q0OwJMo@ra5 zjUrAC6(b?Qet&?$VT+RL-5tZJBb>SvBkw)RISk3iVnX95Pg5t1_W1IG>jtzDWE`my zEtauAVx}`PrSxPisbTRJ>UM+ph&y#8RKXF3A$7(|I3JF1PLVlvS)+|bH!aP(2igzs z@t+T%M#kC_m0*mbEDE$O(K*=D4--H9?%xSMq)Dl@#J+~UqeNqZ2MM4x@7}-5A)pa! zR1!E;8$3Pb`+Mr9X8*%ylr7l4yQ6=4fqtaE-x0jSznp3AHmJhTJ-ws_?53f6-cy?b zbKlZGy`ZDQ77d?%{1I&p56u>*9KDG&b&HHWQG{l*#fL!KY$>XeZhu5u%jWTpa30_o zm`**>yDV?d_M@b!Xl7O^fmRAe6&4&=&$sUa(bgh@za+*q?dN+vgk6%5qTMaGQ)V>0(wB zV?QK|zL~VY(8^XEyeuac5yDj=Nmy1O5)Ws@D9XA{y6ROSmDRkfSy4=K5uH7TuNGXw zl_KuaAWA-P$m6y`Jc-1;T<|p=?2Yg;CD$y6n;#Kn=Etg~)1TjO%81rW~IonFj-^U7Cv134tA{d=56;tOF<|T$?5F^KS$2>-+#EBAPH16DkwRoe6 zTCv@<*xd#%0UaY#*VDe7p)`E^lb=zR6`z0jfjBy%M0|{33MdS!D)FZ?Qkt~g@A?#T z9-%*;L7gB7x~U)}xX{{??chvlYRHMA;kqk*@D) zLV7djFFz2XP`3^4aAI&1ejF2MG)MJ|Fh1Z zBzlMP9%8)2^JIojQItVpwmxRD*W60X1ElLm>b9l} zA<@ZR$zavI#pYV&bmb<+1+Tm@I`&z_&8gayeQ-k@?RU5io-s39^=L&~=*ONzQ)GMMa5rghKA$-O!)0m!qjv5>kDG4`Zsie+@ zNVr@(BMI;~N>OTswMAx!q)l!J5l>`v6G16VS)r?P!CRG5iLM94yiijs&kfXD(Dheh zmGi+RF^dwiNzTlS(LpGtfUAq;HDmDU_%Ip@i;pg&$Z3%kQRup&C`#_`?{VWuKY5I3 z%oJ&xhRt?MS(W_p`#(`NHFP7x%fL$skA1`Oc;w}LPF9nuBz8mE9cV@DCN`#|eB80w zZ8?@F&el?Dn|P~!!W-c<^mNlm@PVeTp{mi+GggM;VT1OL>D(haRXQ_AMfrd`bxh+# z)QaM6!~MfMzWnJE${2Rr9esDkNrEE8CnvJ9Z76JkdO8tf#2bSj20HH(+eIQ;62^OB ziwL5Hh@sk4$*?9mf=-IDvMjMx!SVS8?dJ~I(0~64hK`_9Aq+;N{6q|z)6*xyIDrJt zFHZ?t5TCpnMvDrb;e5j4!A(p!+;j5i1>x}Y1fyr;4JUuZ$%t~o!B6NAbGI3jPq0yx zRY_CUoKHuZ<{iW7Oj8t8O+|M;XAk6r``2|twcXHnJ+A90v2=RM3du_mT%K*M5_fwX zK|+T1)XI-0i-qPUZWe@P%GtI^><{GDsQeYYcte`c+v(S|tl36Q5h_h_?BU&RWxuwf zZOH{Lj1u{{+p)Fwy4cKK41gEK)9FN47L4PNoSh^tc;?SPe&Bwyy+9I+6#4QqT|aXE zeB}OT@6*WzXlpQKnQbQnF$!Z0jNUVPNADbC47hly;5z4lEK5m!tzuhO&5gBu*ly4g z>H9s!-G-vAZuD~h{eLYTb&78$D#df(bC^651Q{G%5!2EjJA8oHajg@k8g(`UxrI_@Dftbd z{MsHeWA>t!RA#lh7mQEK4qur}-vKvtOhb>UTXyds8DA2l5@ICANWIyz`|u%|rNqEA z^nCc~-=LCv`SSsqia1W3_Af+<*y*TOQOcCdg4|L}faSD{BMQO!wIHl|9 z0;iV)MxX%v;0Vq$3_W(&qVBgCE5u$Wnx?kcszw=uJD%aCXR0-!%OWGdM9FrWE3{sz z6j-Z4mleDBAMkz0{?ik7+wgFIj}C#u(-+FB#+1U;ozMc-3;R+Miza#mjTOPfiK%b- zBJThIAOJ~3K~x*ilBT`TopWM{!c9GKNOZy&0@HK9Ff{x*d4V9{M^Ed)h~lIZ-Y)tg z>XC$dVy&UvZ9ysa&o7j9#a-Pp$up<(5!DoI?l$--?Kh$ecpp&HMDUJQ3ZhES$2_&E zD<}`N))-^xPUkcsu8U|kI=|>6t{aOu1=?ye$GhLqwN}zkSy6oStu*wi*HM1gPS;YJwLoW^W)*jAQ6Qj z%(-H(^(SfENBFSY@!$Ub*VqvG-Sn?~^Q)iHw)Ow7A(j`Of-njE({F#v{!c$JoqOy! zrcrKn03kvXgkSya=lt@!pYpidQ56N&%nP=dV4M6SB!k*O<&4u$@bb$0ugNQ@wL6Wt!?mhPhV&r6R)z?9~j3W zsVw`B_Td3t*ZF}trX`-$3D0h73b8ytKQrwQ)I~vI3gXL=ep4U@_WNg;93={OIAvQz zVe`1dd(Ze~Ps~nQ?wDZ@fwMVq-ltgd-G_HLH_`16*laFUyd=*C6$7s8h~Bf=ZMl1R zK&;_dd`Xh&!qS~jxPE{Ta76lH#Oh=>schOESd{`bLq8yYv=BV#JRl?F99=?>G&b>E)U2!y}?K z{gQ;*V$a@*j#9zvwO-{SfaKRGtrE$uOIiWBw29ol=& zhdnXMLU}E#nxd?jx*n3*cv>KjiAHKAv7OG-p0cdj-rX?`6GK1XPDhHUD5ap&ZceUT zbp^6aaCK8>Cc~Vf9Iq>z(yv8lI$4^QPUG>|R}?a(Zj88RLBq`uybdT*SIpk@#T6FO zDFs5_Tb6wd7kqb)d6CR)DAa3tE^=wL^(ygG7na7RlPjJ(j8fS280AF_uVk}2cW@E| zS{1KMadbX>3YD-aF(zSnb&Kro`MYm_!gJsAyB~hwkIzq>UAXc?xQMxAF?qK@rBZ~b zL1+q{EE8UxhW~vX@FIj*9KJL%jP%DNW(-7=%UJG+HSp8-ANVhS{~!4H_?SkXm?wld zzlK?HlrOk!)RJI@HG4uqQy7k?p6|Z-z)$}EZ`ltczy1Du{`~yHSt7R_iMQx-Z@a{; zEQIo|L4}BpLMYAZ-V;a-1mI=?r*qze1{mzls#}mjA&z#2vNiK zn-3I5@$$ouXj3o&-S?kx)^PvRZ;2r!HUkL*oesxzzZe5Vf_S0|RChaU5XSu(BZBXH zj^mhMDQzi~#)pWCk#^fA1>W<4a|!-Daysr)aY94zIHefQ9e3Lu)oz2+g02d7@7^&L z8r6?%hlbl4%#5XvZswiE((ige9o;d)`lBvwUS)tKZ!rxM)YCib6yOu`?f zFe043e5T(Y5(Ykwc>;-8u_;-_8AMsix=E?y+NQ*h+)3NyM^02wDn+&3VK*(O@keY? zP`!Uh-^<`A@9xlcz(4P)O^GfXgB#hF1=bqmkP5Cgi5_OPnZHGmEG~UAVdGs&9Kuoki(o*(H)N zO>%M5RfRDYZS1O6>o?1p$)STjq;ZWm5)tIqVr`{BHj&nD!eQZjCd;lKR) z*ZlhDKc}sdK{IQL+fCNQD>O;u6+#OTeBiV{@%Zg~YNe>^nuovpC0{-q`QQHeUy@vM zr7)BQPfXp`Yfbd5a+GW9HxbIS!&f$$@5sd=Eo5xX2FI{}qO2OWyB)SD8M9zwe*eZ= zFgA5TTC-`Ilq~S@NU_->{Ydrcz`>2&DT6i;T)>nSWnIx9PZ%FlL4JD4ZdZn~-JvE= z)C0z93Y{MC@~ zHzW}ik*Vu&lfwo==RSrCc0k2StBNbje?W~VHi`V zud|9Y1cu`gRh4YZmO?8I{zPzT_n}vc*-YW0nteG!Sm44%RXf88neC$`qUYR{7-@oG zl!+h#s}@4=nh>8^0{VLUthja|ThqC&qg&L)lVDe2k3FF--f*eCRzZn;rNYRi2cLoL z<-aSI1<;bqCU5I^_1wS5@E1y)x^niq&V@)fY>DDs)9^q4>Q}tq?)b;w{~NtTM45}r zyj*ya2z1AuqOcdf^i67+njH+}?Nns-H5c^MqAaI#1jgu>Ux-N*y#n~J|Koq+?|=St ziq)ny-WY#g?9N{od>vV^)+LD*7`kM}efPM_m}|NpbWt#Qw;1BE4osB`|9Y)#6m{*D zsU_XGB7&VF#zm%0dATRGCPqPwMOjT-mlVb_3=_loM7i6h$%TtbOIGf2RaK=}8>I*$ zN$ofWVpE}P!T!rLMPUgpu-$GcHw}H)<0aj9K6q>ZLuA?~=PGBReYe9Z&EbbBT_mk? z{CFDjr{@FaG%=R2-Lw={iSI_H7%A$SFgawJP{uGiN6{(n>kVOaoPYcgHF>7vk$PKG zKkPWa95Ep-&x&YGt!xrYRBHLAm0F#l!W#~EE5)Rwd&d+7b-Q7V9=mM`=W|K~(FWrq zh@!V(vm95W82cej2r6+}BT1Iqv<>~?h&y-qF)<=0bwbCOR9>IQw)FjDYXgcMp_g*I= zEE;b~Bd3Y*w;w+M!aw}m?-+F?lDqR8J;m4$ly!;HtF(fu*FQ@|SH*1CI5R6`^>gKQg2tQDht+l7e}3Wd<71-HNE%-q z!teg{C!(wx8eKJ2J{;PB-Ojkc6UGD-I#8M?H)EoD`)e|bTIL!vO9 zj%g97bxKb06QUIDeac2VK0oF0Q_%YkXVL-hh7o)uI8WI$w2zMrrxX24q~2|)+m_*Y z;{38tA)*JMv{X&Wc<#_jbANx&>2yM-WZ7Cb4VAY{g(8}~fz8kj1SDoPoy62M zX@f|%iq$3^{4rvU#R^ylT@9wF8HbUwZg_bAj?@0g{`n;*QzS*Iwt9(TS4yFE;?R~x zr>19NKxFQ%z$RJ*;XIyElcunivMBMvC;tVV*iB_!Gjx5jEmf<=DKn{zEii?p*|aDW zFMs+o5|Zgqr3(5uE`h@KQjl)CUAV%~ZnsERLW?yc;}>&)8B5idesfJzlPizNH=G%SWjW$qf*C?n zq7?k}-6OyF?mNodLB67Pi7ZN+C`o9L^+gw)DpSyO?iTDE!S03gvE$uOKBR|L(&2L$ z2EPCDB^9Bs85*xdG?(idCfP_df zd+ug&k*>0G3xzH$8&jgkj@~BYrm-9Fk|2o?Bze|G;qLt-)%`ZvpN<0(14UVYA1~(J zfEy-M5bk$d4*LTbLuo4{L|mm8_$x-Pa}5_F5 z;grH##kNZEHleU7MI!HtW{#_h5W10bKP*NvqEm`UwcT+3{7i_E%{T8E_D4cDQoXyU zJqJ$y2)mYQw}mf9?%uy6nk4B?Or6}iDUE1FvPuvPIzct3o*^b~bR=`yW2!d=nnE-u zGc8uA-Z?^u?6zCbit{+6d#EZIPp4!(suCC27)@1Hm?D{dO(7uKa5^3dd55*tHJ*S= z{+HQxa&@C$ws$Oiw6#;%?OuA0TUY9KMSTPLZfp2_Nan}Jtj=0>v(UbDZnw~)ykX}9U-M0FaJSv?aCgVHsxcQS+VXxQ zYAL=}6uHX<>* zxN!yRsFeU@3XyU2$&0nr7>WGHU;T>4n*0E&1xlE)KA8`tD7*{E4EF|-Dbn^<$!G~C~aCw8_bijYVzi`#s_aJe zwx+t@Br4hDIG>N%REezeO5e362_at*pfe+t)#8XPAJsl3&m_4P+mTk?{bp#0%)@IIhI!#W8eWFM?N443~ z1kI@}2tHCYH996NIEW<9@i0)K7`qOyk_1_WWU9V>_rTa4IqwgIAc!#pll&8gy|BBx z!$+`PV5%}@a(O;37xeXOsL{3l7X^#;ivFjQAL}w#NWb8U( zQ6z(y)x@$)8w$)kZQd-aFsbX+lGLwS8$4i!Nc54(B%rS-D=0@^zC2-Tn*u;*X2A?~ zYMbTavIwDM4pmSJQHG+b2yQ}rpbCabhs87e!eWi=_s=wKOS{<+t;G~2RS1b@nVsii z2#h&152a|f8(auTmatbOw#i9`#rH;QeGyPx@hES)%C)h}TCKJgeqQ3*Uz7jEsFZB$ zk~y}#mTX*Oysw7px1j-b<8&tZ!JDPRip#_1Mfh|)@Z6noOvFN8jawICN_s6L!mcRz z_0NC7FMswOb!D-lS%+iJZ`}a3HvH|k-}2+>z&IPntO{@9l2*(6Bj1EUDZYPs;s5&W zZwc0--&&?A1sMt@1iBdb%^!Zx z_fJnuA$7e0xpGlcv$2{8S|SCC;$`5QpMJx3=-Jd2Mk#vd`SJPb66Ygwt)RHUtJQj< znXlX8GNP!ArB#7(S2GO*-uXn~$=$8aCMnBwgQD1Mu$vaAQl~Rt_OeJRux^@?M@WoB z@3C4_juBUvP*@0&{V|zwmzxdEZc7{|KA%ot64lB`GOh{3$S6V#VA_`YZbP>};7=U} zh_nB0)adiTpbTdnC~ZOgcn?!#3ZA;I62bp)Bz6Nq0^`)B3^)(ks>B9$`tDIlVg4+=k%B1d``-@X+k8@fBv#i^>{gPEC8!%jOFy> zC;X`c5vC!V`=~sjrRs}O8lz0Y{dI~{@=B=hH;50oVdU=qj??jkb^{89)0x@468y|f z)!6qqf$hf+DeKV|$?F$E+tiHMqNFA%5qNiV8jli_z6X+bg}t!D)Z4{& zy)IMgYB6+c%Dp}{*RF>O1x=Z}XzTK;9M+`|e#0&7?ajWt*%e>>6V$S>(Mn;P7F||I zX$YCgc+peOi*s3`KVGJZ|Km5m;a~s!NB)=p{Ga(|dzaI6bE3i;%Tn;+;g0vaE#IGx zh_ay4c6JyhnoYARKC6PCyU;#UPPAOQVTB+*GL1t5`?F;672ja-AV@cR5d>GK#lSDW z`x`2)v+=XJII=BJt6~)4pZ@*#{PxR_sM*JOtuI`e;`q!-3@BVTqMhe(+Vi`Ac;Ve{ z$9La+14{EWjESpx8{aH%VfdFQp|!WK)|$F*iKl_yO$?KQY;3NtUMH^nF*IhkrGEF0 zkQXTP%~4o`HJZL3(%~E?vndMd`yH z40@b8;*V1*OnG9Kkcw2uUKVpVs($j0QbJ}`(@2C{w{o;H$*9W5w5o({AX`9dS-OUezn56jfcNB@W9%AK{xGo)~pNX+Heaek)m*SN6;g*% z8pBdKjllL)Up6?zpRf8x^(28Q)Vyk494Z_%U zoIXDjyNSwJs=A^mO9D`0P*s5|vble0(IGOOJ5JAg{4k(G^4+zz;O^afw!3=-gI77I zamro;B6Np6$CoEUUf>u~!HPz48anDMD3I)7qP4n8kY2n%)M9~+ppw1gI1;_jp^piV z6_rE}^`y|dmU7!BYTi5r%Ef6=$whFWvj4JHt0lc!(F%24?(Zq;2CE9H?>^An zKX5pmQOa=t?mb1>fGOBLJko5oIo~m{3zW`oh$i>(8B5kK;7>hn7$8KBFMCYqaRj_t zFVJ(GR3d3(tBR)GF!p^iUm7Q>!X^uVjEx(mFiJ2Iaec?wozY0bjxn5>IGj(M`ZL<3 zTIoYz9kqG2TzW;Wl(hxqx-!d^f!X@ByAlalog$XU@YRP+gw@9XhSMuw%Y$I0+q#aZ zk(*9<-XKJsVwShN9c5i7zkwSgwuL+^c;Yv|{a4&P(&lBL$aPZi<7P{VCiWx! z;e_jZrt?6(X;udaD>{`*=I#4EahNbM5+}#`cuaiUY(Asb9jLlYDQb4xlJrp7As|*G zMpG6A*4kw`d3AW@Nx%VrditEQxnlC4xK53JD`Y+i8I+4qmy4}vR7v&cVq9*QwUx(u zk8pc}zKXEV53T7O(I~uDtEH}76jt+NuQkyqHuv`wRhfN%FNbYal?=l`2mz5uQ`a<` zHoc(paOfGb$ArmnTa<_`3W}csO7raDIN_^uuTL=rBs7l}UmaV<)XO2zwh*wZvA5Flp%>UmnwYZJtLF9fZqHw`gHrgOidL<+<4 z#PgqjK%LUTb@l_p%K;gu%W_LXg6cFY*32z?LS13NY8|Jg70ssQ!Pe-znnA~uD5ES| z7Z_WibD@{D%T~V0j4cwBna6>IKqU_n879Jzb{{rsN-;Py-#z-0Cz#2*wkm12Te_|z zW}4nK4ODea)ie}U#ocz74yOEBw9*SxqM{%e!K;|=xfrRcDy4m-<@B}l)w=jzVTf8? ztC?nX7V0axI5%ZgspR4`I;62z+}KMYldqT674ZF4sA8$yvi$n0$c5QcFn1hUQ`9x4 zEO6tL4LS0|9n)vNn6GR8_~}P}-Ti{cc5|^(T)jsvQ0C>xIV7 z);Y!%A2oHQrnD5BnyRVMKGOFc#u$ns$;&0gg|Q-~K9}<({`1A}hEGFnmDS~qssB(^UR}d75cDQL7yN)|s zp_-C71SEuIAv>qj*s7pu8qVi4N@;Y8q)2ejFi7$@yGtbY?h| zixILgod>FqO)^@(Su(9VbgeQ3Fh@Wu^{U{l#RuFB+e$0cloVpIE~%SzGOu6f(rwD+ z?PsiW&8%JfXo$RyqE|kmTp;e6YeV^!-^VNNue!#H)orMSyk?u}F{!-trY1UvNJ?&% zka@RpZO^ID#^NQSy(c)IyZ|bj3bhZHPbiULNCxKGdCK17e)5R82|wFN#-vP&!9z?B zwbPoisA%hkNhN;h@#!TQ*JSSnLi#RrSyI(C-SJ2%hDK|=RUAKk!VMGKc9WBm6ANJX z@PJZ^cITyu^LLOCVKVKgbR1Lp|dB?{%7&O1NXE9&JX98$gV zhZUm;3aX-_X&TrM9Nd6W0&!wupvZi}VF=hL$>TV(Of`#P)s0uTvMHo=asktnDPwQ+ zsqtwHGG-PIl9?Ul9mXfs<6(bTme#Uh!yuoV(vz>mq7%&pu7w@*awD!jo2*hbazxVXH_Wvo`epJ+uWOv3?^>GOHd#Z?c=sAVUxi}K zKDVVUP%@-RKwcO5wX{Z1=zc;93#Gkmf#v4AmK&()>JU+{_+)GI{TW^{V_>?g@xd?f zLkwXhUB9qlj6n3sU9RtXv_MT9uXsP6LD?TNds7+02!FNd_8ziK7@(@u`sG25ai)ll-9|&4FjwzD8MB%$LhoL8U zm%5`Oc^V|eUrBqvB^iL9RCW>su_+?HKleEXh$|j7M2Y~Vhf^)swq^71Na#9_`#nWd(QG%2=RWO&GEcU! zMe;3n?&2x3cGb&^+U<6W5=D496GRa!1Jks69(2NgH#Lk7H%>I$4WJm0r^WZ06-0j5Z}uOUu|$}?C09%awKld^H~tIPs(!I%G0eV| z=dVwVTZ~ua^(uVLVSNkZozq`ur5ciB&b4}dILyfixwAD@MZ4WmRu!VnvLuk)330=q z5V%_ZsTIpZD@DC+u9t+XKNr_27*`~M>ubD5b=IAtnoejulq{8#eaF*=x04y z=_zHt#bQpfNF%W^25aoq5kD7YW9f5oWIA2?kCjf7_7p(DZv{? zV=}B(6lFGKPtSoHMoz~A-88WM_{jG0o~p{0qDCW=M_gDSq{3L#=n12PkN1>yg*65< zcYEF^39Anr_Xm#q1NcBulqt}%s)@=_)*E*B@6g)5DTl8@>NdTRi+yYqyqlIph3Esr zxx>f6_TfIo(!G1TUd5?cf=4G4=0R=>f=MA?&<7#pbSB2R8dlI?kJi~`mjXl!u3^}ilBze`ZBD~xfuBk- z^vYeP{gs@!tP=F+QUV2U@OWRfEmxrUb>5j;Eu-FodF2W`S6ZP$Ob^s6b(*}6(79Q> zsW&_v^fE!qf_=d{fjAeq5RuZnCaA5`Bo=pZjcpoK6%x;IoE8W`m~k?_;8b%Z6iEpP z8in?OqP7%u#jV0a*1?aWR<<) z7`mt%k&Ez?$9q2QpZW8-zo_coifID$;IeC*y@EP!y@lSk*^$@$?JGLjO7J-P#HpP} z)|eg;ouPt@AR=Fv!qDut1c9zZ8Vlys;Wrgx^DGx4{ppkzI@(Zg zHcaEd)D6jG->3w6C{UHf`G5<8Dl2yPJH|tooWZIJah~Ttd{1?ph;4@%>29!gkYA+9EMB#(pV`0vHrkQ1mt~Cs@K9_2MU+mY;%( zFr7MV+tA+K(I3y0MS; zETf59qhgBTiYjI|kd!Xm)HOv>()B%Vn%FrKyh0M}BskQdGYp1LF-MadlY!3pm~hwG zxlk@HeVW8~jv+0o1<>P!j&L?f#MQJLrg6ee6J=qkGNvouW3zZgX3FV$md}&6n+9~d z!IU*23rreHCKa-|le%=`0=7*2@Tu!DB-g?#qx0*+d4COp7R6hRYHvGlX>F*QmQWPLzN0G2 zi&9M1?nLQpirL3k1hkJ7O|?j(uXc@V6_L!*N9tlsufTmEDENc^J7b>&sGUl_)(67wW?DKm76+@VkHKOV=^2Op(-L_>-gwoCaiDube^U z4fUaV!{y<1!T(yHY%=pDmim<+h4=m{;z->9T-F$jHuUE{b?TX6u-qH7SHa|A3WRst z)&5rq-Y1AjX;h3U5(lB(Y?y+_Pc9K5PCdinOmrUGR+zeEV=VnRrp0Ou=piuQp_S8^{B7m(c0>e^tBr{ZE zjOZA%TsezhB809dD%gH}hl+vj%L{h4{#?a1sSM#%4qT?%UHqw%he4XA0$~h^4w)Gy zcyck!-Kf?eY5Z^M1{56jFK851OhTC61j5S;Iz+4@aqV+bulUIDvQO#KfFGyqJ)|xe zpPH?nvVf|v6lF;a0pm!opEU2-sv?jMgt}=tA5V!sN8+Bx5U%`MSnV$6MZX&d%DSeX zM#|)Z!h~lXrzY7xv@Fvhv#4abH9xowF2JQ$1r;~#&A^EBa?mot8OdBNK>AuB>r zTBuLgAe!01d_&l`-x&8|F$Q)Sa_v_T1KJnl!PI#9+p2jcMy-QYfvPBy$f9u^8yk6Z zl3LnM4E=IJK6OjQq>V=3b+}$fFbYaZxV*iIU78e(wIHn#Du=Z|q-(D!!8wN#62`Yz z_>}PR<434i5WimGI|J$zIHnro!??b_fwe+T5w7dt4m~sh;cW!<9foc|xV#}J4~>F2 zT@mXvQ8lMD&45jWv-UDVv9@kZat!2BP;!D+Rsc#U3vrNhhSr2BW$4ENwulWoPE(a| z$%bo^T)Sv!*Qc#58%1!#0UDBF$F(oEj%nr7O~mM|!_W^1euDRtfTqA00tqmPfK)Op zuWh-aH7LnRpk;V0w81)CSS90C0aYbBo$H}P0kJ|LfQrOeO_MBwT|eM*IWPCmTs6BA1rHyZs-wwT$D>VIC%cUkz;yXNs_ZYC-YIIek+}2s#2>rP=``4aV&SjmxzN3EIgf2HP#f9HJbNwC~jFYuET8q!e6Vh*f!1MKrAHROZm$z4pAs}BS zlv7t1aKS$oZsE_^G68T)t=qyxc_os~w?~j|p;)!ivk9oZEW@Owbx<)=^WY;?*;qBe zE^>2j`n%@pL8(+1rCdj?HH@`TYC>T#83KRlp5^p3PdOSXyaD90}yiRh|ju{AYq|H8HI$w}S52}U?Z9ACg!8zRViLTbx zE)cTD0`BH@!n7=TIo9Ew(nthE5+~kq81VMzpC$cP0huH%`uOn)nWcxxqlcanrd|vR zb4#y^F_D>}tio^{Kv0Mw$o;Uy5v&8#!|?>C4c=bgfSjezO#~OEM;nZS(h46wJRyew z|8_=q9N-QEu3uh&Btz9%BBmCl#QpSbg0$R_GSpPy2Zk;}&(oy9F{A4{iCRk1)5XG3 zp;~Uq^1hx{d70hJN+3Utc(eyZ6_BZISIS(>bsb^|$SF0OCa;#^y{v45Qr!GGuk2mg zq9JLvXx@-)8jOolpqSpV{qjx^xYOG&!=Cr)h}=rZ8i`2^5t$3_C|d5&(zcnmiW!C( zzy0o$B%QVk2CrT0Lcq)U4TTxT7qC?gigG6bYknqT266^SA*x+-6%3^`+|WTAkxR|o zPp=!Hgr^Q~enKn^(lw=dwruh}G$`+!X7@h0dS4ZW8Y9Y~4r@rkI)~(^W+2NeKpl{N z-RX#->+tpY1;f)L6zPTCz|5NuK;;5;o=^^*u!`%?9zy__k#dGHg7&+mfN^)dXn_E;Z*H+|Xz+`#Rbf>D`pr(CB%qTHJISnX+J4oQ?_4N!DGBh!A zkts-w3DaeQQVPy!xNJZtgW+gVazU6pa!fL)onI&ygi&yZIVD(@%8`}G#Cq3Z=zC1b zyKAE0+m0Y_=3-mBaGRx2zwY{a z0gT?P3Vbsf+UiW_%|HYAUp{}v=f}qtImx_hgD_&w_~Va1f=EG!fOyc$!@uwGHp5?> z`X2xE>t8`H!0_f;ko1Ub-__=X+I&p@>jmoR0s7-33K4#JdqZTPC(L;j_DBw9BBZ7p8T9{$*ppPpawUthjr%vq+&%}q+X&MP;k z5W1^(kk3hbNo-|ThbD^AIf1D&=UUBgb27+ioSvTGFBin%(dP_hDzBILMlwTQxUc!x zEqs94MBshpr78s`g<&{?4h(38>-hrjW%xKCgWn3W_vlVXVCZr9^=BkbC@H|bdZ~UC zA&nz0!J~u(Wi0ez0H*}her|U>0GAP*q9_3_SLEwhkGaCwpw^fo<1M%Zc)M!ZX(KVK zbKi$j4cCZbxe|y%6EXl zSR$0`U{R1`lvW@J#07Em)r_*beW^wuZK8|mn~U)F2c$hg>rR7q2DfZ<|AlWE4NJ88 zeH6~7*}(5~LwObBqh;rUFkU9G(6OaG+9fpr5 z#KQPL|NB29#=PJ#2|y}@fByX+!2dw_{^=2FaUSrd7l&r3wtg0XzfK5~$M?Ve0ak0c z!x2x1BmUus&-nWMf*+s1;>Yt@Y`dh^`(nR2-nk6R*sU;>&q#w^5Pw`4(>P-2dl`Ok zn-?aZ!O(Yjdwxc^TtGP^hqxq2x70hX#uWWFp*$XhPYVVa1#2ywu`&aINY5^BFW{76 zwZ-9hte-LCa5_mlaOyqHPco<#yM6$^AHoX;pJBXdE2 z7|@?ih)lS?zRLTXH)_Jh4r{a)DjUS11^`)=-3*2+EsuaK$MRg~1Fmx@DdF|!v;4VI zHR4Br{vah4YTu#jJLETy(GpDWFgyyo;q~Q3s%>k~8w2&=chMAKg0eC@wp>+PdAiI>0bmM!6A7HAA zlN-AqH#QDxBziA@`HJJy1MED!s|g$jtuTE0i0?l<;fL2({QHkT;u2GhJQwCcX$Av# zVNCNU;G+!woY@?nQjB8jHU_1l97~M`@4F5qBuwK7lmw-;5VGdaDbJmB1yTh4Itg{^ zIN)H7ME8^oWwc1DyhqF;K~web#=;0ehKa}13CbGi><~y81u1$Ud1)0eK}`YryC)bP zpt-;(h3oSxC}k8b2z9!FA@3mib*ACUwgM9!q(n-$pHZ#S(CJbl!3Jtr-u_% z-vJe#HmI~Axx7H%|OUgsT;M- zs8C@|wpffREZEr$hCK{G$_SUM0FS7Jhp9!dv^v-LR=c@4L3UWb`B-z4)pl3XK)0DO zwCw?Ij1G6e*}OAY?Asa}4#BSN!C=J6LlNP>{q7%7G~I1y%s4scES$42TGwncUZYZI zmmX0cmO_MIUS9C0FTV&gAQj}3McY4bjTPSntl@9_RSM(v>nk3=e}dLpCf0nL(J32) z^cUY!!vFmr|ABw_;WK{s>3j5b;5H*D#VE1K_C@posr5urD$D~nf?_~gCVZ+%>{;<~UIM1?4(N|39Qqz{oN#%&R37u8F18*DKnejdKGzgqES2H1Q8g8Q zN=b$_SyF+c;%&9dD{`@@)tGZU9#Bfbc)3Vlb(!2Z`jRX>2r!UCLJAY2sf4_1Mvfjx z89GA(1nMx8vy`BT1HAVzTyWB2lHx3O*;ESjT+!BN(`Rf;S-5}Jyk`YHQ3$~W|Kp{X| z17|yg5YP_;lv3c#aKiyb8Dwp$L1XPLc7XuP(592>90VUDT;~wstGZ*IAuv|&i&`K# z+*YM@3njZFBjcUJZ40*E9{-o23-J>Cx92`|M>YAe0_ew51&5a^T&@EtQD4Qnfv#vA>{ebU-9ti z5z1(xTit#0@&F!;!Tpx(@CzAY6g&ctj2nX_8*@ z!fL3CEU5+_UQH0-stG4yHJi-vZkvtPDnI5n1u2EY@rdXHqWAT_lFD+{(TB|7P!?!TDGE?x71#B#EdZ3!aMt4T^;t+q zj07NFHR5#wVnDoHz)>~=Fk^asL5v9$g`rz=O+2BM)1oqJv&jnZ4b+D|!A>(2q$jhLu)N5Fb5mS>j zh}RLt2hk;SHU88#nrS`x8*l!GU~=nj+nZbO^@ynf_ifT9mwps&daC?x)yMZc5N+_~ zQt|Fu9ZU#gKzADI?$b)V_O;=iicHZ?1F&vi1%%gW!vFIx|AKRf^6>lWj#GPY`uzxH zZe@6PEWPiYB%c5BjN^xgHDGeC##^PyY|f~edUF+2i0~yRJpc4({Qj3;@T(6W@%_UI zr@lvL%+e!|(}c_G8NdE-zkT=p12Ui~AQ)zJApGj_2_Yr?%b$NlVp_NpbjM^tseq;c zJPx27!A-ACD-Aac2w+Shpc@A1;SC*p4A4fV;D!`TWog71FkY|1%dO@K${FT7A%1sU zP=`z3(P|j2k?Wu+juV3SNXR%HPB;t)Jb(QHP8k{`B(Zv#qYnbcDGZkhu6GEJ9dHSP z+#EgP6wvhpl-7u)Acn9V;8bT_J56r^^otUj8LrC5io(sJyR_PB!fk&X5JN!lesQ`{ z^R?}|J>Tc50ICp1o0m4kM%@HLDj7&}{fshm35Ve@Ajg1Qf&Jt8jNx#=@o<2@j*BA6 zCPp??k<SNde##5WSL~I0~X4ktQ$II2h$}scHf_-RU}NOaMxCkyOGPzZ4VB&u{qtcfVeGPo*Lbc`w0h9ENK1{WJB|=! zU5AIh!^g)5oDK)P{rL;rX@GTZ`2fG6g;**VMTB2}`h=Jh{_Ur~09x-w;Oi$p2Cy@r z&H~rCxyMRf2-#U!=ir6`_AnrhBNRw1t~n#-h)@SssW6TTP_A1xKJ_|+tzLZBG((Pv zV6A-bvzOP-rJw*f90nj~gmDC?0z<`RHke*}S%b%Grnlv0T2 zt4P(9^qChXN4=M9)p?eNySzR_Yd_Xx8G?=7)=9cFed>Lnt-)a!FkMH)7;0ilb04=D z*vfFGYIW}tA!`9x&9~+9S#FqItXok3T&>=9g*2b)2>?zS*6m^^HszW;0r_sZ2^(ap zVUrDHXd$xAm_E`dnlUlM2ahj)!tbBIqANguj`+L(`R{S{5za`zl;~a`8Jnn=d20I) zA3x#8uP->~vX|ciuNXt>0It#W&j1v>XRls~o8Tt}X!0BWu4Hq zu9vYYDVkKo&76jJ6gh&;BEJew21mR|7q=z_s<0_-EeaUg87O0LJzrp!Aj_&|DvW8G zpi9AUJVN;kCRdQu_5jQPvX;b$!@~*J^96C5Fg!khjK%c)EY%VwHT)>Seu%ho#BI* zQ%^P+brPnovq&j}t%k7%qo0s{fawRYCOm!j3HCVP@_I%IQ4&JB4!IPV`3fwTxRF~i zt)RbU#@gsR?=>Q6UqNq}fHh-UZ7rv3v;Tb_@4f`2Mx1}EikNRMk{zfs3uv7y3UQyk zxKX*$cD>BZxQ2k2%NbwKZ+IR@jA?bjX=`QC4Iag*rShgG3yF8l+%_WVr{`z+t>IfbSk3ad4e50BX=6%`rc76;+RFWHf&B^n`!?N6Li=* z6d!=8Kp6+v0-o~&8x76OG?;tYX^!J6BET)gk_;VVrJN~bKoUZnLpe|2pWon-P%atB zVp=F6)Nt2|8dVzF8c>!}r4Ylq4t6+TJYR*e!4j>MeOMF>B_<5nfDJ))7MwDS?U2ia zlCliAr%Bp1MxirDglR;M5$SS;Dg`kmq^O~dUMt@AxVR3~RC{Kc*m)nU*sSxm*x?bL&TLv6j4Dc!^i7X<=GgCZsjAwaEL* zGGt*GbOxIYpFRCx7S%Jo%fHz4?0Mx=P|9-b|8zhGFr|z!Uhwtp6@U2UXZ-!=&-m5T z2e|r>-0_Gn1G1;n3HHk`2#blgh|V@<&=`RkQnPzMrCzgXn&gVlu03ZNKL_t)n42;gNugEdN z^^#<9d3{5vYKl~o1QZCRo^H(5LmheypFd(cpGEvnBuobYDsy!^W!W@YaE(3%9EJmq z4=0SHaBxwN=F4BY%03!mY*>IVUc>%Q&JR>(8wP>@RXThBgLTizJSm#qe~(G+j~Z;7~A_ zReD$wQc5V1H@09>gicv#CiqU;IVmP^OrQcNE1-O(G?W#WqqYv$*EgZyX)QMPx*p_| z*XSQ?_rmSyigpXhTurH+?ze>-w2FY%P*Ls;w`fzY^1TF#-E@t1zqjvgvOrhiuM-}> ze?ns5-~aq0o_(lXgzXV*rVjBkyZWsOrCXB>e-fX+oJ8t=d+5-0=&Y4v`-0_>76Y8AF16h~wDd36ZP92AE*X>)yq_fO z@NmHS`5Ae-Zl?S>CHTt~2hYIZM0SLg*)T7@w(DW6L-a!Z8monr3Ir)wDx%&H`hF10 zY?9>R>2d{ffgKa_-#wtSM(n`^*xtfG7GFh#6g|RogifI@zG7YWmkYFW=nn%@N(hr! zqjjkT5HY$SAR4CK^H`q|+w~ylP)KqF(=~0%qs4UGC?DFvtp?yC!8_imj9Ms6Q*tRW z7AT|TTI4M3gXJEiCB|s}RBd8p%_u0ip3iW7kN$YTcpaMnRR(iL@@0LtiX8J7%x+bB z*v`u0mlDpGGjt|6Z84e*P6hqxB<7pzWswJ_l%ce#&#T&C5>kvvIV~F_a{)uaR1#rM z2?IM!Rtzk;A`e20;^=c7CO^R#4G_uw#Iy`Fozd_)Re71TIMiR$kuI{Hy}p*PK?mMa zr?wesG@s>5sbcN>V48X1+x&00OH(WJZ;q$4$b7Dl$Lk2CB)ERTUadOf`9Rt(b`jboHQz0dDA_wBEEb+K|iDKFm$TQd3D71J?~A z^sni#OLaaa=_Pb_nYb=T)VbK;+jz>B%CJh#o1QB-MS04gDFUZ{p|4AjA1yAQLK;85 zzT&^W{DQ>%ZYs1amMd*~r%SZfid097lMTo-bs_3VsY zDn;S~I*-C)?QNq*S*QO6K+0v2aK#kS)q$L1M)4lw^D9acR)gv+bZ?PK;@BAs`+Nm= z1|dXD=c|ChwL&+@eLzZ-7NiN9GgK-v0G;)m^%y=~E-*^rbUKN)R7)T$6+mYoIofF7 z6$3>p*y91#7_bj;#=v!*fVp?9j9YE|dP;SPP&AO${+Yio6=jzEKy5Tq1@KTKgWRM* z0MMDCGb5SG%&mQ22H|ix)HYSS&PYssQ3Q87qCcL*S!OKU_n**z_W{N@gv*FLdFWhl zEDGvr0CfgM329E%HKtUCMJWY&lF!u5;g(JNMUsQ73Wg+*(i#bi?TbPw8G$l#jL0Dh zq{nC|XN4;=a~z`dlZhExRfBhy>5@_kTC4gzHA`n3*}mbIw0&Em&0@TruJ9c~ZnFsI zvW=a^?!n(3$FWNtzCVGXJC(64K$qt;++lz=YFGTVK0BG77Oc_NGgNtg2sPwk*Ol9_ z&vm0wGCqpcfD)p=aZVmQZnVXFzC%6Yl{!VTT?f|>HKuwy@S{>I(ca1tdDkAI-DvK% z9YdR+{nj*H|2;(+4t6(;eCQ(6XvGrs{pXh#_>>mg=Dm1m1qdvpc{A!|1p37O7R^#~ifZjQzNw9%M zspUCPwfdbdR|N0T9|qWA5XD6TqQR1Yz1(j~p+5{@0><+N>?6YU3O`GXp;9o$AdDVL=`Dj`=lCZk*a##m$-ncXuNm;yD{>a87nyp^ zX$=EF9kwYaDKP!fQY6DQ zx}#gzOhI=PGTgKk+C7UmEQC#aF{XNCr%f>8#{6)nU$_~(-MHdfAPz57p^`Jg)#Jmj zKFws$S}nv z7;B}^OLxrMDT7i5e?07@S$NksNO!^U_pRYe^?dO_RRGYAE>?&a>>V?~r-U&C9E^E? z5K0VFDPRPEd;-M`e1F(zzqgwRE%yVV#<-+h!x<&rK$i>-8Dq{E4o8gX4CEvLl32-P ziV&v>t|oIVcG+5$Dk6j_Kyg6|L0Ubzz*q-+>=E8BKuq8)28vlbO1VH?Jp5omy~EIT zh~tD(V}|1SDyD%_Kt|eAX$mMQ!wfxKZxPN{;)@SzKoQu}6*(Z$JKo90RCA*og%M zKe>c_xqwR%>Vo$RHgb{3GDBG-3%S;S7P~ObD6`#UovKOckhDZ9Ss5s5>!6kNj1>qa zW$7O?mI9AUK`t5A8045_q16U4B`_CgMe}g2p-0iyQpF&6PU zZ=&M&xn*=CS6ZA|dl}QLHDqisivS@6 z>*KYsIVT`SXk%)wV1gnbO&;gV6+C)rPgpH7B%{GG!ps}MDDgsI zAYQK$xAQo_5F<`u(T~r@h*)jMR6|WwWfW&x7dJFq>b<pB!aE&B3O z#1@@XmbM17ND;FzIdaaDR#TNFxh7*13v0x*q?UC8PB%j=RflA1wivffcmi;{B;BTK zr7T06dju~2MrDg_r2LKTl(+gs0^@qVid&7=c%9`0Oz-C1ZYst1FhHBH9Rs+t0(ft} zqO?URH-7ELY1hX8EOFh8-Qrs{Vq*k{RFNSU}FqY&dZ>tG#<>s<% zd|VhtYs4s(t~Cakg>+`90nM~c_|_syv~{Gd*2A?g^R8B@?Q!M;9M*o{a%^o|4Rqf! zj5~h+(r_RbIa+m-T%XT)`2OiOGHACu@J>&7!{FKIh3{ylt^xEkY?8;gU6Afv&zsET z24hJ#LLdOIBhYD()qfSDLw8=2+UrG9ZCKuIoMQltk{&X)Nyi%ybmK>MN@1{er%S%| z#H5tu*!Mc29304~jYW?(uQPrF0Twsi( z6Nl>vl?Cz`lW2ieXP}1;sT6PyP*6xg?4isBJOxlrAO`wOpyPmW>cBw;Dbw3UuCFGf zB8yQjf;sFDCqzFYOdf_55DRjVL}OTk45|FIu^^>E1#mHePZrt`k`lb=;qZXztzj8ZEVFZ$s$`cEgNbJz?whbGACFYgU(uv*Xz;;l~C8&3AP1X zslreh2tBQuWNNa|nmNfV=_-m5azgiT0u^BT`V0!PVX;=wy@TmHOj)emU0~#yN4$G7 zX%`8!obsj!=2$mVhg2nJWV9^wA=Zisuvyh;BdLl*_6uYPBni|xr$vE*!YG`YI+RdK z76nL=@KiLLf!QGY8jQj|0CT@$-Qo^tV-co3_@#(z4c2Uzvqt{67!Upm!Hck!3%1%! zW}!ailxn)~DoEcOFm}{{Ta^XwfxVl)=QYTJ=?v~C>Ne6b{xgX z!KReth?@(P*60ogu)l(9PS$iCQBZ>;rvm)y1G4v3fnudnE}{>Ik6@+HI|nuz!|?zU zEa-BT-m!6*{Dhn%Pzq8E$i4_dkQrvm$Y8`0!4V)b;GFSxxnQszq7rZp5t_sawV~g2 zT?gYNl{kmkv>n8DY*N())7GO-s$BzWwMq*8&|?}$>7mw#u25~g)oa$?I3|kOqv$m# zb?#%&63RkrdqP=*&N*>iUIJnkn0V2uhFVHqVye}uOLA{VBPJ20j8wDrCM{J>Fu!(I zvbgJ-YLat?A(AY#>j-TejFuD4l4VyECSBG9zCCOe~jD9iMth z=vc1Nrf*B_>5y-RY+FJZZR!^n8rC?o$G~PD{fJ7N!Lcug7*x?8i$zF36i#UZK!_OKU zKGa@m_LH+ zXyT4&w{zMEWK%&qj9aN0t@92dg|6=rCNBxR^Q1~)N$=ny4$k@HtLs25xvgP!kyEbM6jO#x*J$cV57Fo_Tx3s09DH(j-Dk`?GXfnj@x0!AD? zjI#g;F-2L2imv8~jF|Isk!;pTN^<{1g#g&DgZF-+^lj3v!8hyPrp_Z;PHY8$%c^m% z-C)IbQ6hI1;Jvtdsi5}CeHIE8H?Wl39xpc)?`_9*U*Ro+|AyxaNWRhZcE#z_<5C*8 zQ9YZwo#@U@dp88*cB_d=0{A{0ZWj)s+sJd?4(x8a*L+8nz$BIE)8X9_=RKpz=1&Ua z^Q8=yzFbbbSvF9wp^9)Rdak1)oujC>P@BF&qz2O85={qwhM2 zovK@^)*7nokXS6=nKLL#prXHCq}L0;4n4ROj9;FCt4Db1Q7&&lk;NjFgb*U4_vlX# z&`Klw5%3-eK`LXGnxjlX7Sxbn85sHwa0b(B0mlTB7^xQ>uj_h10psNYRit7|A)>QZ zhK(^U4BvHVD+@r3VP#m*dP38gYfc;OkgE6ZF6-pPm{O7>cB2~7#;ne+3LGM4*iaB1 ztxAb)l0ro*SXgI}Gb4E+gE0gpP?WTWs4&uX0$D9`L=6P*VSPcd1bysKVv;O8<6w-& z^>PvD(cvH%&s^YKhmb`5L0J?aCwR+{vnjCluWxTCuOs+jfKs&4iZE|)y?tL}9^8zV3p5~! zxI67Ks=SLb5RXbK$GXWEtr5=?jI$DS8nWO#3yYMgeh<|z zWdshL$jqh*CoV3XQ4^e1y8C}DpHO6X_CdWu$(?1$NU@;^c+<+=LM3&u~>wz zo)+r;$GIS+Y5~{s^+p?L%?KfE)f`LzT~!S~LsfMQY73*Ns%oH}9T+!lhxKdrcEER( zOrU)Y6f$t^w%M1>nzqG4zGoS}bFAjA^KE<^F+3c%E@a}yq_LHw?Ts1KRIRO)t?fml zFfaw-4DkIOV>x>8e(F!}wk|e*k_+hU!4JdsYiPF@%tKLbTO4b(`gAzKsVWbn0zknq zU`RoAJ-o7b`rm&8whAf9kt?K(RI-52iC~n1GZwv(>ceWiNh$`fH(qJZAybU_<)<%l zn+!q<&#cF=PYiA#j@Dz#0Z002KBQ&*EkDn4RVeM zenP2AjE(LW1Y=Ys%hioQt#@?s0Td&+v(UpJF4KD4&!d;9c`$PH;4GSHFe8nzfe)>7 zE3FMo?=Xb`U8DtKGl4ZBk=!rYd%3=IyFd{RAD(b|JHsk1!%I@{xB04p%2hqDW`ZsX z-WHh6P^n>c@_XX^`N>z!P^z((-f8vKH_r>r>!!FN+9g`v`6l4qto80`c1r1I$VBvK|gdDhF*Td&5k{43?@zf8f_snOYKVQ_f$n*W8#9} z|NJw;+ZA{`H1xCe+AauzMnlP1k(CTa4l=lK&LYLsa4;$num*b;X9WO$IAEM6D0WEW z1lRQyVOW+3dhHB4*TL5XEscJW@R24MW#KWdt%>slK3EhVkPAb{3^oe-VL%BH)AcHL z(RtFJ#nPNrsObyaq=zLIMk#Pk(6K;ig`^nM*Jq(zfuI$tRh<@R7gxKqHi9A)6$LNa zSZYtLG!N7mHUhz|Ldm5C!Mmmd$#5i?1;TQ>{vAw;ZTk!%sOvjRfm#)e#dyj#YkGhifS<&)Zt1E4Z#l$_XVF zSZ!dmkhtB4Q3^@&b(`SR{2NsUxeO4sf{StzVgd~9 zh0nM(HtbQ4t3vs&RBiKD`P$6ZbXS$o+9&R7lX#aVij9P2*6)Tf$ZlrLB0+2cc{q~1Nzqk$?d2@7S+zG4X?J-t_Lb6aLX8ic&D}MUv7m(IK=l0f{Zy#r7 zeFp=%$ZgrQW33@-p*O1$`DYwAYRAy_EB>zxfCky&;XY} zXum@{2mf|~8za=mlk{eNfT@xuf2r`FQlPa#*LO%cBVH$IIUEnN;HOku3oB@-otKy- zQnzBZ67jZ>nlr_^t`n0)b!OcT)pw-^i7|?bs;3Syh*)D$auQ`lN+4P}zx$PDi4ns( zgu;&9>=Gkd=_8jA5K@A(7H+VZ{3PPH%6Ohzi>m1>6N!tIa;>04L;}Rf!wgqyy2l)5 zsWq%Nh%vy_JU*>!#$PUL`;buSCtU_D+G< zup4F#?G2E_Cy`v;(6Dw8?WIY5hw_ZAP4+g;i}CvNGrD6BHCLj{-*~wH2Y&Hx6JY>{ z?!Fj})-{XUfg3mOFWv^{Enm+~KRh!~c?tL0(ccET%d7X*-pH+_t@iZZetCiG9o*2p z)5oFv8oqu18Y_6G5D-en*Vi}v^z#?cIf(t3zM(nh6}i1xoaacK-Nw?s1sx@67QMkR z^zfrcOcBcnt+H#WWY}Rq3K3i~a!44{S&pZjgX?=awx%ppvf4XkAEC|xJUEF4uXfoI z87dd#^H@&^BGc1GgS0}*X#uk@r%0wH5ktgeAvwJJ*}oE-do72DoBi&IjTW}?2XmPXH)J&5tsTUO-eAOTx_?;l{bfH~L`)&LeQJOKXPy zhrMd@T2~+NBA!i=fvj8j2t4auNQp&r@#Al3exUc@r@ykn+PMqIRyOImoIoe zpTSozhL61r4&PFX)D5X%L3g&j> zj50$fAoi=Be&Z8}2|gtlt))ehqTnj$^H&|%&5N*regIQtf=(M4B199ROafb9&Pn^OLg1Cr$dwJUcn{{&H?JF%HU@gi;JKQvgKMLxiSu5fe0DvHrtM0rjcwa3 zrACIhSCDYyj_Dop0J4#E1<1cz(l|@rn<}Bffh$;b0wJ ze||xKIzU_f&Ow0j?Kinyn^P|Ma=qfmuU|3dv}&C1TAaV-bEM{AL)$88_u^)f#jkrf z;yRAfE3KO??ODZ4D7hfU1m_%lnQD(w$YcIG%70r6qb;n?;3>$k=%JI7TuQ)YL`gCr zvqKM7gz$C&MTtHyDT0Hqj!5Q7XeS#g@p^@Is1>$p)C==~vlSjGS+s%=%X{B&x~bLVul8i44EjunP9u50 zRIF+VSe-Y`^%zKtt#=2d(F%Enh0jF^PUL2`001BWNklYL~H5gkSJtMh%qdGP8*0h zEvGdif=YnOgg5}IC<*RlYE%tqb-T1)u+@!tN4e0v7~fk~S@;aj+y&}T)5Mtr8~3Ky zxoXIj@uhgHw3y{I<^<5VB`LDUzso2wjPRYuibG4FX->+(ys3la;mY1L8V}s+0M-*TvXQUjf2T zFE4n0dtF-`i`BR0Xc6H$jkn;PDhoPaM*P>ggPtxm=YIQ$X8@NNm$X!RuUE?Vz|mq= zq?mxyadZ5-w>+-jSK&O4__zQ3!@W`EV(yqyosOmgN(K1P-LGWvEd=E4ziFxV<&8!F zFJImO0xr*AVc%ZRJBNdF7@R;zOwGO8W+O66E(oQ-2ak*Q7(>JqBXZp^se1O2GEmWy z8tU$~y;u3tH(K%gt=Pl@a~d$#3dNyaSd3X{XyPCsCe;hFUckq;1WZSq=h>8vDFh$=6MHEW47RBficcXR8dV+nB&S< zvJ@>~K<(sxa?Z$80F4Q0P|!1luN~kl^B;cqE~RBnQERr_47{nmV?6dSh7hiKxtj`F zwCbA1yugA&LeT}rT4=+FJ}$9f0Kh3DbB2vTu?#i@B;gDLjGPOsbqFy)8-p0cPCob0 zmDcq%wpS&sDbiHsb*PqQ6o~+eS!iYkO<$L89*&h%)VkMJ?JG4k3*8!K3xJqG4=o^K zi_x7I;J0yl*D^+s2o|aU=~@3be{ehoc*U5)2t?XYispBg7aJs&Xlc6FPXOK1gh_AL zYN_7ul*U^C^x`_e7^Bdz+Ck+`mz$M>8xFwhWw9XN>oCy!?cBeiiCVMNLIQt&Kp-HL zg3EQpFPG~AfL5f0?V#2+4Kr6{X<2Q?n;ej4Fz`A_LWVVW%3QkhetBtSwSBU!?ys3t zGvHWZ;slOzis5!}um?HS*mUT%H5EcY*LBd&Ab1a_v?MvWD*yTV6=kr9UizJyJf=esjz`vbAMCkes!B;9=j6xbCQATK^Ww8zcrHBq# zXF@hrdRG|6Y2+*myqVdXi>Q5WM$>jz+6P+RU$xY>0uD(AM7las=#DM7KCp`Du9ZwS zcy(9qN(CUUIK#&QfNl~fXmd1CxJL@RQ;oH(UNpU)F;?d89XH$FkkRxRRMlW&#^){m z^0I_F5-B+u%v@i_efu20b6)42pXE-Ini*n0J~+AA%Q`RTMg~&=6|WXtQNYlRew}G;mCZkzVj%c{uIu4gu$WTqHVDQ>E>DW!`VPVS znh;Ej_O!4pPR>YMA(tZWF^hA{CUJ(Pj-YD_#r6cqTV>CkiTZ2_m(%pN4T1lkz4!f< zWNFTXp2*Cq?mlPc-q-dD34@Uqv3~#`kbplQX~ic%h?PM?d_ZfhcJYE=zxU3ZuByxk zK15_@WLEW=v6oNCW7)oU?o6NV>Z-_yC!QZ7h=<^~1;}xnKfAQY0fD9*~TQoXGi<3f;(CjcV2AlrA z0dF@*iZAhUlBxI(85h){9vV%CVhp&21?Bi1$0I6ccR_I^xj@m)s*$VE!{C>^?Rfk3 zE53hxhkWdiZ%^=VPw*`v-WDvk8=ginBW4v8lmcdjIO<9%K(wWTb7e~Q* z2;!GJ_#RO{)YVK#lt)aKGK|r#aomTfvszjgaL$_lkhDv#hz-(Jw3-m8_n|>B->O z{T^QLG^pP)CwIGXv=*@1gWgu8ta}$;3CFf$Not-`i|)GK5M#vld}3J^ltbaEoU>i~ z1U9?J4l)H}s1PD4qa~3$Ed&?}EKR2gCM6dQL0SDGhoG?< z$PB!v$(i;A6Tr)vCdBlF6M6B$c7Wb*D51V<>C`s48r7~b-r2{2d>8xe3B27#b07y} zK(4qKzKFRSf@l)<8ZMd{^oRFLNi;5G%~$r8!yqzE2lD$9xG#Xk^hoW>NQOeHE>d)w z3g`vJp<3qQI22a;<#EY>mg&9C-$A1t&FV+%bRUlg^1uHRatfxV;tnOsyx^tb`y(eo zu6v3A^@o`Q8RK&$otU(S}CZ7V191cK0Y8)@cjNwxw*DHs~!e5>XV4D zE;po<@bUam5d;fjX5bGimKacI*Zj2ghQbBMzNtDYB+H2_qfM$6vy>Lx?rM%+jk)VG zEPfQ^N3d>o@6k5YyX9qBwWuCD2&AbMP~Y7cHFsj)H;p_OX~-9W^!<}SmKrE|?aSA) zT4Y+Xkzce~V-=(FsEH7=Ch+dJ&?c3d;?Q6V|9n~yYfGt_mwFZ6I}~bQ0hS}!-YKi# z0sy6iXot^wvq^xIUWSx(L1_+hMT)u1DPBvY-EyriOAe5mDqGc}Qm?HzT3Zqq`Al-Q zgQQDl5n&RSoG4ymlEb*Bm+S|+7$-4dH*m$2rtv-$hCDOqpFNxjy0`gi*Vv`%Oa$`qL4&i!`AcK-pt=#$YNyJEZa7hm0Ht6eV*AW@qZ zhV*Eo)>fR{9e%;SH~!5EdknANpS)O_2_xq+ROAL;89#IT`){Bd~iua>)cL_)_A;gIN`D~ba3@Ys{T(Irt@b7> zJ({K^{Xa1T?3S07GEl6W?j!*pW8{={(w8+oxutunG&wTsloEt2-Gi}9#_jPyObO5D z6U*&p%n_v>5=C=RQ<*vyU1Bclikvf2x*?~8K-vkXMVFMR02CSJ%Zd~N@}YvOylEh& z+F*)yyyS?~AbM=Wqr@$t7!$rA1h6-0Rk)T*;-&d@CIc1QynX)VED1hBb^`EqeFu36W$m+7QJviO3R) zXG~aOtavB|j+db0HL0P~YB^&B0HuI;l_MYfZpjYR=uN8n47lBH05kUIHlz}yjn(gA zdY)j3DSX%xhZ)Cn10Q)4_;~*#WG{jQ*ji7W<){ePKMmeb*pN!}OP!ntGCpDhV<(g3%F6 zE~b<#5MiXlWY=p#ISw4pO$ApXL%XGpe>5i1`l31%($m7t%RDDVnQciahSuce{lKzn ze%48Valw$19~2hZRMkWG^<^>nDY3yP#aDhaY&Xy+3@-Xa7~oFkK|53BkXqQKCKP|d z(Y?+detnJF@BQ|Ha9eaS_z53a@MCH6)%B9+-m>&Qqq{X93Y$bYXYi3n`%og+vKpLF z7;!J)M{>R)V^olg?)WDsGz{1}O@v`V{5aGWlM9v*Au&QeHk6<&hL8dfqmGR^16da- zeeW35N^w~sMIYwqcE@2?@J3QEo-K>a%R^*Lh7K0#nd*?_pq)ms}9y zqCu4*fMUWznz*okJgr-I$=U6p4kvO++!?$Cg#hH${pKw{seK-wbUbS}LyS6t+k`AB zj1FrU19+Pdgh=Co3gg&x2^K9kP0TkVbLsHpuJvMrO4ZhNZK~1$3$bLuY8it0P+t#X z*2xFz>mX)W)S50L#6{&JVawPTbJPP`Op>3%>bD(6{Sb|Tmeep~4;=fUpUG3bvW=f1jP#RJ_wJNsgf>kMlsjjsSpQty zEmo^0h*a@Xh}cV3DfIn@%mv4D2k%)!J|{bXu09!`qL58qy@XEVo|e1hMMpxzO9iJ- z4E=*CBP1yF60_(;FbJ_|fG_=mEd=Gmk{wWyLbK)!g^{1Tb)q_L-JVN387{IxWmI#G&z^U(^Yl*hd@cIF`4RhqoD_!*F(Tb{KOuG?#M{~oV1#u! zC!z8@Wa5NVgx)y|{}a7boN7!iZ5oDV(|~ z{0R50_r_GH*N~iimAFwwj@|C zY8}bXU8j*0us-f)2&6@;Ft>P|8U+;G=MZB7#EnrNak~EGgda3K05VYOW?1CBhz>^v zC+dC-F(_s1zG7JxY?huJL(n2&hsFKz0GEs-XXPc^&kdGhT;E?j%)i#e7`0f6r~geB z0y5>F1RyS}9vEioE`R*M7OQB; zxYAjdYLc_wA4G_0(e61#+}9P~b~VB&r6~I&Ml8#sDdzjpc1_D6I1;1m#)2VteSH0N zpCz?1hprPOuBbZVio|KG&#Xn!(Lubc5J7z^qrCcgudvjjOfX@>@H~CV;W0kaNM)QU_}B zD7g&#ijp%@3=NNs6cE2<;FmXWirBWNE>)^UAs5TrD(X!jhenAf#Z2$38hw9!`;Nej zFfK&2Xl+G(0GgoWA{%P@Qt3jWIPO>aK}K1b630WEoRAX2vVdYhAmI7&Y)ds!p@J7 zG~(S2qO|8|Nvj@&$BwupEGgm0S=Ej2Z#cGH?LhzjyXMmoL5z{0T7#(21Y2-tF3m6E zc<#2`RG;9G0%BB|aNc#9*0AqvpJ$Dh-8QCQPbQb`K1nnh@EQ$=%qa}$Vt9-=Zsq9B z$niE}iZm1zBb&D|@N*u*WntUwq;WQrKeZ_P2?jv@GyLs|@P5DEF8##v?&a@@!(Iac zOLVlDbL`!Zu);PW&$pR!t9DB&KP5TweK5b zP2eRW1wz6N5FPzX&fTO$XpqF}&};?S*$>vAcUx9S2q=aDGBNPnAo(!sssJpDE4R7}-i90K+C#jp3 zzE4JAQMHw2n`tprW&=b82_&NF8HG{IFCiv{S}Md6zAJ7i;S7cKytXiTkU5VJjJSO_ zvLP@jCs+zYRvHV{)J>3cGt*+In0~G)$1y4&+WbVe-@oa>TNv0`yJ_eILQr1z?d=WE zZ{H9t)`y|cOS20FkZw1G5Reb`&**B!K8l8-G4L1!K=q9WyAISE+xkCgc8tPgh%+aN zo_!nKg)&PzN#XSaTo)eVG@d_AjMYdSdaN&O6ES!){6nZ~?azH^nkfDO2Hu}?XkBO4 zM)fU&-dIKJ-iUOx80zViReUjzUj+U?Tg_QPx97cRm@>`OM1SIQlDF#g!-Zt%w|MUbNsdZ9yvM9`0phh^AMX)~Z z$fcAAMJaBb-mSCAebDx z6op^Pp*(I8ZtiFG4F&V^m8HASdDq0wDITR@ARyHftJ_1;fH(Q#a2g$^^%^~umUDst zt|nMJd1aE-0+&fYt+2~cK)<~Gu=vd>^WnvaKK@KK!=c;Kpb}i{w|7T>&y3l>E%Gz=iGnv0A2l!B!l1(7w`K7Cm>#6bigo0LSKCHn>nbgr zfUO9p41})_WFqYQff%&wZ3?L>MDd9+L}vNgiz0cqug3jk@H4B*4p3Dekz(JuG>){m z1x~Ox z(4k!2BF1DWjQpYZLlH)ZgysIQn4XI9@6M|7yoe$IbO_`T$J*&3rKXadxX#p!(5Z8E zWdz0L6Re3G)k$&z?FCfX3^;4lx&d>ip`j&Rj7zj(uTXD}ry6WGni?)J-itZ>#J#v+ z2apvl$p!R>_ZfY;%!(6vEod9U0L__D{fTpP2*bo_6h{%df*wwWI5bhP0LbqjI(}B_ zlAPhhvyuITThp1A)urH;6uYL&&+o6xsUxQ=p^ghW743Fu&yZgqZ8DnO(ArwgBHNGR zB+M~kx!)ji;JIxGEMs;FGw^XhzTCB7Ku|mzfwXuFpd;zJpfF?KpNREd2irYtDG4cI zz2C6?{!P2Cy+D?rYyr7g`cB)E5l)!c0PR8=ZX6?)Lx2QqQox5`SrP&T9J^BC!i2?k zRarnco0myL=J0@QNy)bW6hoRkq#+`2na#SjABY(^S`Sk|mttV1g zI>t-`(nD5bk%Hm$!UegeEvJOtB9}r8YX5i$QEM&|^*jzo>%rLR%6W7i4Aez%{QezF z24cM1SVYd~ST5)#GJ)pTGqjIkZ(H=KjSG0epZyFUkn{hSZ%@$MZHP3#s;G2PkWc=+ zgHgQw=iL$nZt23B^87QsJbUO^<$9rrBSW@~a1psfpKSo?1;6*?IV|8meSqF?&Y|w& z64MpCp?mJ0EdAPjsRDY1Yb%YZu%n6A6#fzDH(JA$=iGz@lK z5>N#4{6JoHQe9W&ALo7VGHRC&9b!Zzps-k%SY_5>0NB0CGVHA0#MHg~L@e}CrGd($ zwSv#WhP$8Vs}{LlxP4waiarBDCX3i^6f7t5LWuK4tIy2KTi`Li^JE4rL~?4bJs#Q2hW_9LwL zBsOsyY5Asfq;Ow{1K?9?hYvWd9n$IN+9x`6;wZO-g+hnDPRl2^`6d?}D*Av)VW2Rg zx#W5LF&qW_wg9DcA7VEWuB&3>`Qte_PPJqN8#73BfffRR52crp0AVX84IU3_AsJ*x z@^X~1#zssQYfG;fqb|(8nd8_RabMKfrX0sORfvXO0i?^L5Ky=%T!PZ4NOJCSb$4@U zXQvCJ(T1qGy9q0VfKPm6001BWNkl|4 z-2ROb*F~c@Vw{9$)(K}d@1PhFf_Zz&3*oE?Bzd+3|}5Y zlE&+wQ9F2zu_?LqG1$e-R~{&fsOQ5isqJ3Q2uU^X!5=cS@=J2C-eiikBDVw*5ofeRgTz}V){IdT;N0jagn>h>2IPv} zF6#>UzC#vZ{qlxf7>HT%|Da2`Js&_Rh*51CnOXNOIcsOlmbhZ3^y1k!M4+s9c1a44 zw4yug(`X3p9pOEyP{WmHmb{=VP54VC2eWn+h6Y>S@(+To;@LU_jnfDafMV zJy~}v%s6sx$s84QXy$`~)P7NbBWG=tVgv<7Ov>&!c!#{*kPB;<4^5F^d(J7C73ck? z^swp*N8HTVDFiLZG}7b9x@oz^v*5*7NczOd#bTrq`OVAB)14ngl4L@Vr|C+ReUYg&1NOIplQR37(4bk1E%pg~2lo{vn*# zSA}0((W1h@*ZTz*(k(UU^VfX&E32!_45iu; zI)7xp?QIK*lu(3Get!b@715l<$QC#$TDDnj3Fd1wi7z5iqpaoqKnN$z&7s7d?t`-c+#TTvVz{JHZ5Tu`k{^hU?c4m+dVlk-?{Ap{q6H(@b99qPEU?g zU=;IJ2r(jj6yW`avLqlx#6=_OYtjXYAiBsYO_2$$n@=&AjU^j|(v_ZNKk$5h*zv=v zNHorPAYHg6Tcnku9>t}w7G73NSM2^F0FnLGN$Zemn?&-X`=-_E1tEp6NeRww=Nv1IxtDH2&+V02y!s+wv2(T)8@UhYbsY10^II* zY|p2%U52Gm7$m^77w~-r#fbI3suVXDYsJ}hnd9C>EN?I^N{8EP#+dK=C?FNZ74wnX z%@~F+(&NXDYacMe4?bR9I@=&@-5o3jhbar&d$mzeNO*0+!lnvC_VnH8Hps!~Xq65a?jg*Bh4m9nbBl0h5+)(Q?mB{#%Z0 zruMevgW8n({EQT%nh!x2d-PGjcLx=cT&O_lV&T)L8L~ixbf$^bttXv9hI5t<0z*mS zVX|%W9fduhd}Qp*2q`HyFvNy|`J%&y|Hhbf#08zYQIT`kLl-UF75+P<3>{e?)HMxF z$-J>23ZAEXT^0CglP-G!{kon2otNF_i=REvyXyaE0e|cWzrJ0jH^0=V$i)&8=R-zV zAm4WcqhCSJVVA_J7|JCZmv!ub>;1#5*eeS+O?$}&@p*tAcVJE0Auh?NWIz!?SdxPr z`ibjD-@Y)i!fTN=oHNqFC@Fv&6h;?Nnhd~ku$zo?u`aZ3=ADgVjhZ<$NKYaua{y3H ze~VO)wMEqDfED+o5RgLbj#t$%yIwgPdn4)Ygzu@Bdm66+o%u2DdnU}SORMp)x&4gMIu@cBsh@U%T<1gsU8F8) z%5gw)L0l5jdKTdyfqszkgRh+%Gqci?RYmqNIBPVO>^8j6l)ALN@!qdD}UtDr*rw ziqea|+*@oqO&n&g8WVS5lw)tpm36&=gSzXHRPPBj%Wq5uQf+@Vqlqyg=iS{m8ik%> z(tU^t9tKuI{rN#Vqh(#efB#**eCy86Wc=)41#;ura2;GxXkIH5?TdDG2P1$g7734hwMMEOv!xAwpN+&G|yWJBh1jw$rXx^WMYZFLhg|w)` zENDO{1wv$9BIbL59NhBbxcYlEc2+fB*Y~BFb_yrtvTICxjEGU8G7(YQTGr>FJR(qX zx3n}zJB7EkqZZ?N6X2{CTwFqTCmRv+SCUW9esErG3aH=H&>IWAU=r9DS+StJXOzN- z%VJ)a)6G{Hych6e1xiM+?%-2USAHxJZpAC>(k}klEMO9>9?<$Lw zA9%3I>wmvoezB;p#4m6CWc>-<@fAOq3#x5K$#(L%g`{)5@zxzu5?Vg7IuH{1i}!V6SE+EQQ0*L zx96V=w-87s{m#8CmkkfC0g*>O+5w=9sDKm#@Y`lA1M>w*(R`TMF+NP6Bf6}w-))Rh z@n{o-urPvQ$q>w+N@)Lpx zN;UMkBFW>m&@WA6l7wSk`JY#8N5(U$n$=vC&gYMW<%Tln>+l*!=ZbGu;J;- zI2rl)L}XZOfqYk}a9LEz*4*`EX4TTU0bv!FlhNi-b#QoT9Wi&_kSM4NlFM!DvEGc5#R%I z4KEoCSA5u4X%KtXFM3VAv+`Wfi-JxQOAu$FjVuiLQR!0x3lgO(KEy9%~7&44k8QkJ(>Tlj-B&(uiJBb z@X~^k5A&GlY$Ac+e!uH7@i=f;Y&<=Sv4zez-u!&gRZ4}!e#KFl1p5B58_eUMNx1Hx z!Z;?=*?Ej!0B$KI(DOhx-fETOR<&2EHf)hLKGG%rL^x*gxi5VgcSe->`;@TE2geOB0Ut+ zP;7`Mx)P1jMn4iCRyA!z@h7GT2A#64IS2KIH&dtS^}&qtv4LYil7c{~JE*ndWma}9 zh)MO_lPqBz->1wl{_P36FMUkKZu#}5e!EcreCJ2qMg{im`(3FCj7*SfXgZS~g;<6&TIAgxhui@JIaxXw#nmSpj zu%;z&#nY;zzZJyl7h7Y!`-J7bM4QIKZ2>Jw6Rr)@Ps^fkD;rHJmjM^8-A?ssZJ*KZ zH?nD9o4(Zm?) zO^#nI3b{blnXg+5F#*Wx$1C@B^pH61bo@agBS)C%guB%!^l}`U;_|kf)Nj#>sCK3* zGmbH-{pZw;1TxIlL>T0D5|kP8P(E*st*0@&XkZrrYNAsolcsm15%U+reaO1$8XYf% zK_m!KjnOOIri;`LFDR04_T156pgfaOOk#atiC*KRM+OQb+^=B(nHDae zsnh0^h>Gn>X2f4^t!UBZh$fQ=ldjW)=Y`jHKr$ozvRoeo@&f*Fj0bu_EvwgukE{n% zT}0rbYcQci)#ksFZZsq7O4G|`@A>6+Ci#otcy353;XrP~SQAvFgd=aQLmi5Ioyu63 zYRg}IK_N3yvDYu9AjaV6Y0fV~IyTD%gSsxb0;H5R0Pi=WHHD!lTrpM1CW0&(%aR}= zfKo!V)P%h6mY!@9<)Z*=8Xz>HPe3TT)=v7!E|G2xKwDO9H%v(~G`psq@6@)$Yq%)& zw1#N=nD5Fh_dH`EWvT?y>lLP*K&aM{R10*n38SL|PjiFB%GIm#7O6$(N3HYc}9|a2SGw+A`83a0E@BmDVSAEZ1Mp26af2Do6x%uYX#8M0?Y zdwuzY@=NFa*CpK{n7Bbo(QAAZgg?AHSf|@uG8=`=QFTTEf}9Sb;hZh3WAyuN7j!f9DwW2bE+)beI`P-r`||dqX5tfY;dgC?y;3yWm_H;|xb}sv)h~3tGS%1HiWYUE zb0>SrL?;citdkuY z2{D)usBo{16o5TDBlPo*ZS)ZJ-Q}T1&tuWX)ZO}4;*%b6Hv2ZOOT-ZZ>366`Dsxc- z4x)&0TB7!VXS3}K(V1FQidUoy_`pdUoFtX#=NJc7UQ6rJ%y61fJdJeop3n9Abv@=> zyNmMu398*Rej@WtULPp+H)}D~=%WL4b1rbza?vozy4dInM>J08C=5AI0s_U&kisdJ zh)(Jkm73q~cV!*sqhY0WEJfk-&fOfy^!mu@`wajJ7c6lB&AM}tEi+}%7&}+p@D` zU%)2Af#xSlK}7rG<5a$u{z(I7Jwo(?!L#Jj2a0r{H-2+_0OI%NF$xvC?$% zrZ`MmlHz;50NdCh47C|F^PTej1L3wd`pfVx-1_}f#=}^M2YQJU_ct$> zuw6|jmgj-^>-+20_D3e?4!^E962#)x3!4kv+B?9C<1!DC`0 zE1x>EAp}!!Y`fz2A$I(%=vF)zHvT0wBN^G%7lQ`Q>G%)^!;52x$dViJzT@?Dn%cys z4IBk{tgUDaf(+7_905#?HqKOJ&;kJKw)LGIyn{kS3=vXx$Zc&LWzakrdK*`AK?CPS zQfr86p%e4j5F{%SyOIZf+%%C-zQIIW`h>(qiLqwwymPjkK zUc}PwKk6G}fjYnii{=tH!V|^DG^k!NW5E_cimjq(WN`VW{wP3-2utb^D0A};Zgs}4 zyEk!<%Yx`AiR|_x?YqmxVZ094A!m0sn)$kp(MZA4uqU2yyz$XHxjwwYJ6S)t+}%cb za_#ryBTS-qu=;Cy{Fi;MS3Qwg<6_7KSW7u*nR+(-5dgd7#?$qCz~Mp!bzMxfLTOhdK8~RF^Sq9tBhn022TKK-qNby}aEu)uEKu zz7a-~8oA&Y4sqz1*EC{sT9tpZDXW5ailcc#Id>P@!CInm#ir|j&&pw@RlO}JsNqh| zS-W22*)rFzwog>^{%SCas@Ii8$NEK6KT=GsfglU%>@s1WgXV1x`m@{pCMyo5_;LJl zS0!Cr8q?ri6GG)}_laNiFqYs9vK@q+Q2~Rg649lv&S~4({!HO!<~?9?FCKiq1rHeg zOv(F@nj;gShRD~XZ5LZI;AVo7v!1*usor{`y#(metB$xNY%GgwmDlUIa&fko7<1?9 z(r#An$yv2W7=yUZv@3B2?CS8uA3Ngv)7+xUN-UNn5a9CO;d0;A z>yvs6v~5GB(#WQq`1zklUj{Uzi}vSi7WX(3GCL)c-^fy{P6Gp=b!(w}7wkK-xf9j* zBVxGmkr8i;cEGs{0zTv8zVxn`%8V3M-^91uxIv!qRC2Rp`)o2UC&@3h>fblge)uGI zejaPQQ>au7an6COxnEoECwD15_S_#hZafR#hm<;oNN!vo-j^*rX^F1;pl+z`t_M|q zr9W;>4Yw>>_}ZvfvGgr#2b^N-aL73tQJ2`adz!1x-ppb2vxJjT6cOn|6NAPo8Sdvh zBLDq0DiHL%b#x;hsm#Dd9Hw}=CF&Qn78zcZ&G`#z}J(x4J+7Mh49zcjOAs~SF z47w%9<(2lGwMNc%5GgIK=3wS&Q?DhO@)0%5ZqL9iwz|=tB3A>Waf-?9YqaQw27ywA zRLI@M6+6ByCZM>eDCbRn7dB9e{bt9wi5Dm1@C0m{xA_-@1`&HW-okVxDip8v&Z6` z?naEU6If)DUATk94v%Dv1TLz(m&_=8M*8&~#cBI#vQnc9T$!z#VrPCrvyh|~s2Cd78QSws0}~)TR=^C(E5DnD_cu`s@K@0U9ycA?EnBEUVpgG0I1{S`Bxsi$>BrO|~<> z+mxaqgds)^nykD$KZZ*+sTPYNA$Z8kd-uuG ziQ_F99yrqT`t_Az-_3?9WhRy z@kdPm9?c|0(*=s+x+&`6Ju!4HgIKJ?V-bDUnEL*}JEp+I9@ec(wH6dX5E+F9H8hc6 z-m%&p!W3`hk{Y^X)v##_N})XQpY4I>41qr6aaqh_lZOqg3+f$Sql!hsn)F@B8SXo+ z)U7U5RuEg15;Yjb?v+3YY=>pi*mZ(2PG%1BBuyTuYZrl^F)Aj`+o7*lm*V8!<5bN1 zvRCwAj-f^QR1=-1T&wI4R);ovTTdY4AjWF7!w$93UCb)$ft*2AsT9&*w zgE-|%ZU5V;UQK`9;$pxO;ix9=BFGF6Olr0Ih45aQ(#2z#-v9R$`|?8O*khIr|J@GA zwjC2BIJ2uK7su=dL(W#ip;MzjQ6%?f0+@ z{+-R+L4Z<&INPLgrV4q(n0{l)G&T0JEY7Zxzwg=&k)!bSxqMj4(d5hFow8n*;w@`X zDbd6YrAr4ne9D`)s>PzFBb8TsU%Fh^U^2{J3oisP!WuE8I{MLxi|pVC_r)klMjpa04TNjy z;h02Z7;`7HNf7Jww20?#A0S&e26WD}_N zdBz?bq$EZujVYmqpbAe`_#f)fh6_PblNwhzwl05-V9=VcItfs}59)U*&qE=q7#nDp zy!`K4iD(b&p=QQyBkjjIzk&3ULwO}@oV-KXlr)aiJ!8Byj6uC~!@x71-gEtaObx@# zz;Pg?@#i!Zi&RTEZn%wnV*gtUo;-KN$L(bv+2}|=5%OQ4$xUWk7_uKozrLTMS57=x zBc7v1uDFA!eorji84UoC6_W}zlDwr&Q=>}tPEAH?8uctM|J`&(1?h+d7!!lW%(5y! z_kII2y-=>!?a~v1_Y5WiEoqeSh>X0N$?(GC=fVO?b=n#OFr_A-7{(eLv*ToiNobPw zkxE1_A24a@ykVLQyYNFMW{Nt%70a+RS{GCE&7ekKQ)^7Jh4qk<9D?pWoPmsopJRv? zmRSZ>Dg|mql$pW1ibulRs;^^^gn!1PnWC2_>pgo<)N2%NdB=7iqv*8`x7*Mdw!4n# zQshaL$&tF9s}c>k1&#Ny=j73hJKC=! zH&9y&gL#KUWk0}gy4?%w;zgRd@n`Q{3b&=#D^G?2%N^LEuLo-aq3l_|_+^>KH4J=L zZr-l$CU6_?n&@1|q1M^$+0u!_#pk0zGE5GpkU@EeQx{V)U)i(XH{mSEuEkf}!#F6& z#IX_DXLppxY`o^j4YX8>RF`vlz3wQtMOPtJEZjUCO6C!}xAzZIBn=d@!H|WJQs}Cy z3(4@@$r1x)%MHGp$toTTZ%gVX>+j<&KyBm|;qG_906!0eTXN$#ow`J?JcaoSR32(O zjDumEtk`S2FP;a&y4asl7qTIF*D@ES9V9L@Zvx+IF{?6RfFN7t9iJU2;P~V138k(9 zP|;6k7_d2v#TeV+AbZjG@4DTg8Kuw(0}%7q^?oHh5EE)tQS}GWZauYbw|?BA<2@1j z(TV#6Rl9h>g~&DGYgkeZtSM^FR{pT#%m`~5{T?RuOmjV(7I;1L>3Yi5&WMx{?Yomw zP=wV8BLydy#F}tv(=HRG2xn<3`DN|o z97olVJy}O0!9itmp>-bxLA@`8i-vIzWmc$wd|?#yFipoE2*GhkG1Av)8v3g5MU~iI z?oIr`Orr$Re}>vLa49WXC@#9(YS`|QF4kseS!NHNlqMLcjfYrb1h~7e$!;u}C7J3^ zF<$>cf}dn$q^Naat6lf1Osk)5*W`|1uTO)QgnuTTxB;X#ruCi_AL3w=Vc3Lm7{A{< zC1g-vI>n!bucBTL#ODW;5#sm zjpFjBT848G&?Al{c9|+1CYw9DFdn}8brd(|qJjGLL=?^-4i*8@A11$X6&B?VI_i;_ z)|)>zq+j08lY+8?DvmO`o53xiXv{hDl1;_!)vQLhS29I}cNuzZpXsy;tDE)C3=!#vYGQ+q$5EG~n(ZWkz}umDe68Dwrj+X0gLUj=6X@Uv>b*u)tJA=J9pSkX zu3ZHdbD``OkmN)VO#0^oDcge{D-gm^0Iz;dZ7!-Q{P6FUo9wY*d;fG>y9s%FzRx9o zfU%sQp$QI}I~a95d(WVCQOw*@qh(t8_JWJ%B{GUJ=z@V|i|6OAO;d& z(Gx}kaFNUI@+xX5e}5v}mbOK&k>w)Yq&vttF1{^XjAuGFQvHA}+kyC4n;G}SVHif2 zQwfXf7~Bbjgbj?mZ282-G1S5yr|Z;)6xFbAj!lZzH)!naMB3FxZ%i2`&0GFdf3Lc#HEM!2e$#)+vIr zD}`;jtqn6hg=tFVV237{qCl;H3YW=Wq<;ZiLn?13KQ<*PW@zw|98bM_G`xDgmpJQn z4!2Z=h28cObpb~ZrbY#<-KpRH$|T)ynRP~Yi*Gl(7GWd?H0qhwrC2-NYJg4{aRM5D zo@9Og;{Dc^luf(@s8@r3a6{;ek>+h`1{3gv`#I9w@#F?KJ=a~#E_*~B!>LObkyqPn zGJz$UYkZBMIpfF-Vx`ga7zd1$w3Ab~ZThJ|f~8svMZf9P=9^WWa%%F6zXSRv-`n@$7MLot8iOS;FEdCWv3ljjav z%m+493Y-=x5+|v(ksXE=H}|fI3Q5F+a*?0A9vY11kk2*bb5^6tdC6Fp>ZPTcn9+Pq zZFugW7I`GDBX;(rr9)_#g+6%gDkw1C?h;!^PeFwxqnZDxs^lqo`6Z=N0N%28yDxntpU` z4(l?O`07jhsY`bGccd>&DTV95_sN~{!#^XPWrO%)Eg9-V)Rjs;5}u~_?e>ufAn>kv zaJ>@@!>CKm1?&aC`@)aI$6(2>6sa-q=_l^Z7d@~{5_&o8xe7F<0^5D!3vYW*E~bVq zWHiHpzvpHoGk~v`(XbbWS42aB|Mc}8_D`DT`seu-dte;e6f1LMXz<84P+l2HVmV$t!m)4XvV{=qVkyr1pK#GHWJ z*Dv_>pa0dVgZQ)#i=aFY^-c)?AqD%oC6L47!PoR3__`hrphlX`-=B#0wF^q%1t`?V zBlmjOhB6qo$^e0n1AJt}`|UOV(~@_uF`Umo4?lM`>NwH&u3D)ny7(0!?ZJl+8$(0* zanAg!2I*DzXez;QTgUt669@RpJFOkokPuB>rByTD%BH;Rwo3?|+0m>ihi;3`OJ=#G ztLP|SmumQ|DWkK@+%4C<(84>G)k!Jb7ANT)m)u05EhA-eoBQz;shn7)Pm<$oUqEOs zekT|{`=g1Bj{-33^_TOX_o)};1zSHkt%-4KFRy>?s)^h)CIc#U`}zg1gj-cJfFcNw zH0m7O(%BW>YidHVFK}>-BEyN?AH98j$L;I8Q#sLTMx0qz%#8B;2bQmIgLYgd;=4e` zH%~Lse&Qfkhq~WC5Y}`ul^G~$-X)yQIDn5+c)A0GZL1)kF;&o^Y> z(02h#h;O-gF|bNe^?;lw6R% zZ%AM7qo)TtjY=F|_RC+g)DW;4JO!*|tbnQkqvDzX?6 zAM2EoZ19;ysyDixJ4|Sd8@ViI`S%ZmWdW_Kq^w1JyzVk_VY?|2a1kEw9v3#1X1FaQ zG;~o5TJY%{F@{k(>^E!q`$v0yFZ5{!UZLa1QiVturOu;Dmxk|$w?nD1A)FF)JQ9;$ ziDHET$%6D)9Lz$t;WOzQyLAlV91Z^>H5UZP)-fEq!k2w~^kf9n9hl@IdD0*f=2lo{ zYTK!LT&Q1~(@|B(Hh5>DXnA#PyL}KJiLPI|@DumaprDCq!MGU0hH2 zB1JRvsCSFIrX_@wMn;M_)`NQ}WipxZHo9}82N!Z4o^Oa4!01a{{Dp) z+`kV#Dz7#+Blzm;3ru#J(v@yqQAfkXLDDLV&jZ7OJ=Ls^ zy$a%5<{H9I{dlePgi?QPmAz03C;&X3f*#T>NLrz zD8@jE3%p^%9mK%@Xqic)FO~c9=*8w{qB~LTIx5xWI8H8VGks|&uv2~N1|eZgT`-o1 zaQ?ug`T|~S;U9YhgB07y7LpOUU8=w`&Mj?|%37Vy-r%yEa+RjTg6?_Dmd=h*S z9g?5vavG)!$1h=qO)(tU6>tEmolE_GI{I8}DaY5WzpeIM^re+Cz0Vo;zlxx$+q)n(PyvoocA``;r0 z%6=f!`@VK_HMBrH_q2CxdT<2wL2zlz-d?gTytV`6!Uk~l{Z^%&eU7T)6Pf&6)Hl<0 zsEqQlBc#~*vcROsa&`f@fe)QL~T`M$y>|2Ec$%o$yitZy8J7hFXUrUWtS8 zrowcE1v1%Y_Rp$<5kWHC`$~d29-tQx)P>brS0HLaL$&gwpG4-z@%H-Kiya#AzFspS z+DXt!{B-~guK3o}jY@M9aJvG$ABeZLccX=s66Sw~IOwBxtW``gJeJesXSAjGaFObI$%n+6H<;7(WJp_*YAI`%u$*{ajs@^&BNZ)7A% z4klMJCPC=s)8r0ug-)-H!e{C2b`c8Ts2em*6PT{WG)2LDae3Fk)O24jOt{Ph%uQzk zZ)>ZDKs{QBPWNy%5(;ZN*$)hw1N-~QtC3pYY2@^1QoRn5271QKj*c~rE*|0_!OI8=&IMuVvDl%3@TEQA zEjSO8wd4pFkA_gypofbZnpDlb6{9do8E2fk-+zM}z+hgk*FANy%7~7g;O4o2!HtJK z>Z^a(yd6l7+vR~d-l$qeLj8?^!F>Eu5>vcG0jKazIXz(X)-X!E+t^=~QyUd&U$;M9j z7Yl)$zktzr9s^{;(>|qrw0iG&cR~j`Qxk}g!@}LqsaQJ5c^~(Ct?asJCxbD)u@Sw3 zz)w)&7>?`h4Y=;BoViVxIkW5D1*bdFIP`=6OZ`5A7H!@R6FbEVoHf+exqY@U_*$Yr zpwStd&|D0?8qGNbHPe)qXn~W4zn-vZU7dqH4X-^Elj&ykg{)@8`KhoKM)zgc>5XJ` z%^!?e-21DeMYkD5vzn8mAg&3RI?L*8#_VPG2`wG_brb5Fur8XaJ3MCbG6h^w;-1Od+ zXhi35Uz(o{>FT+5AGnD@jk4AW(Vf4m4hy6TF9bKTa4uNCyg8McI81Q#-W#dW`=t9di+DbRHOEOivsF?~vW@UW5e$w}OJck&QMS6`C!rO|S~ zkNDw`n?{{Z#ysGM0dCv}9OkcGeL3vfS3$twhA6{(3(m*Y)1~Hh+q}@!go-q>jzH7$ za`xP&(_uFRVA`K6A3MUL5Yox8pL&E-7k%lqY9Y*RTaRIHP~S)X*b$bci?lF?1&j$L z9^Serz85e88}>S~9%M|Yc6e>103m1h=saXjyCM6H2T&aMp3ZVvHRvd;NEPVLNdf zyepOfavc4=`vsJYa7um6YD0HIgyhW0E!zg5!aH;4PY&y!B#Uz4t1#0U#8h^5iV^pk zv%$yJB8+A~wXIX^J z{no!~AN+-jB>!4`BY3-~ZZ!qTWxJlF_7J9-h{gc zAcO!|f`qVA)YdO=_FZ=Szb2t=^tx-IhD@mk{=RHWsdee89)59C&GyCHrOFA|9KJ8< zm52?ij_d09(KzEa({im-BxxWI$i$&8hdS6rGg2R<#-687E-}d^Jp0|mutXGHW|dtJ zy_n)l{C4d3yV+H}XS#p{4R^1wM%lL3tz$}_m?z(QZ8}TkI-<(Qo$+%+TvKyUn|CL4 zy7yZGx1;N9Ssk9%#o=TVGr?^webOl=NP5I~sBMiY_*B=4A6G||i61v_OE1TYV#Q@$ z`$;^hMo#1I0GC`PwbGz?2}{!AVh~Jl$;tkU3Il3qUnWa4t){9lV%CF)1)Q@M7djE5 ztep2m;xle^aZowQtWSG zR?p$MEK{+)O7@+QQkt$uCGwle5sW*k6sB>EZtic*MN1}zAh~oD`;37G*Q(mB$0aq` zX)wmO`vNTEH3&6+D)jGsAW!#$yk7hI+TomUJ-tT1cPno1pW#rS!5Rp=A6OnY`+K3` zzVkibnLB+sRa2hB^rd^4l8=n#q|hYiMmE=;p8hcSZa5Z4#h8he7oYBTw-~}T4of`* z*YASndPGA=YyoFRdffWGOBitbadF>&KlyQkb4IE-ou^HF!bhD|YUH=|6WxuEjC5rh z?y*(5;0K-(de6m|iv}vj*$`)Tqdpl-$MbA` zDD8k6zdAvFZmN_DZp$raH6UFu1N8j_uRxh#2cSH69doDVVTj+E4sxOwS~HotCuZ<* zVEOWXNy0x3P$xc$Z5 zHHEvD-6o|JPeLDcb{l!YZ5m)1(W~b7Y(LeYj=bqkCWLUU6O*$M{6(P~sbKEj&1RBS zC%t)L{0fEz8Pp&|Ey5<*I4TZ+*(R^-*s_04}D zW5tR(uCQaea7!bZ9^12TZIeD)C}e0!71AB_hvMN$b}|;&_T`=7kGvhq@*uK+KaCu( zsvn#pcBbxq%5n45zp@|tcVg^D;uCdtFf_k{WgG@elQgW}H4_81mq1I9Ptmg8sX8iZ@AoLXaQCKyc|=#xOA)?PatXTN2iIMHB${Xhs& zgBD*|>z*FaYluKU%5zJJqYX}H3-W&GY|$cN6)*l_O()U)EYG;70l-B0+p{RHaw z_dv75C=ajpi{-gvdB2~Qe}dkTx9Bl{=o1aG*COW>8ZL~o9az6SrbBg%YdU#pT){P% zxc5L)Ij&#d&#wzKJJ7Rio4RC}0OW0V-RQJ57+%&_{jmk7sW|vARt_DdXG_T$UW8nq zKJyey;*WlfDZf4L=NS33GW?>)n>u%g*HPsd8vg1Z=V97pCP3pv|2RJ9i~LW;=S zhJX9l{~Nyl-QVHYzx+%5NB`o#Xey+JGs<~dxB^b=`zrf^m=akiuBs9-Rp>JVSGu!YExo$@`~!N4=~CX}$F&^vRE6ssYo+onEDY8-zizrvGAK zI)q{QDCcTH?pm=?ye97or5^^T0G**lOo4df;G?tY)Fk}J@v$j{6yy1Ir_X~6K~1Wd z7w3ZYew*T#`FJGtIV%*LP zyty|B?6f*!1P=W zrbv_QTl@hn8(B|qsJ(yB8R+`~y7ZbLBIM)H*y(1tLk)wv90v!~vVV@> z{`PNG{Ul0KfB%a=M@&g^@4Lz*x9{Kk-!BCpfA>fH;XnOP)MJ3=?e>T@nfo^~=T7 zL&E|2{Nvwa|M+MG|HrStVtu>~<0Az4HXdq!wd#Pp(-QN!~Od8bI&~|#HL*jYAO}4(nq2f zX|hn_nXpgW*C9Cc!?JZy3N?|4b^Jy*Y0^duAtvM$%NN9}bKDilx{9RUSJGM8&}EN(zv)Th{f{v7M~9smGj zMZv}2ya#P06{&`|3EUEC?O19@S3IOhB1v%r*HC7Xx*n+SLD5n%7Er6YCT-EMYY(r* zJ9T`=Z5T|pWUf($L=@$SbB~+lPNVJ>Zg`B2h{H%Ez;K(lBigQV-v$Yb%qiEjpeFT} zpEraLXpGGiOO$AXbs|Mzu;^*cHBELxjWLzt**$537TOu$L=($~k{y9(T1aHl5rw-( zF}U5gkIB#m|57~Lfut&sWu@)xinSKdc#ADRLZUqcMnHJwRgH3kk2t=zFb!H{9peQ) z-*q7?GUUJ>nlwFE`=fY!PF}MtFAa_?dM*oc7{xF$0I?n;iNueM5qefg2l8w?pkc9} zr@OoH+W++LV3x~B6$(L6Yc428idD_*hv)vAB2DD* zXjWjGCY-tfSx-PurCO?@Ve7Oc%Z=k4X#K>)a#_k(!pd8@Zcf8Ufs;Le+J6t_v-lYTZR4O(WXh}Sq8-3y(ni41!SykEYK%1s))S|r&MiHm_why{&qOeK0 z^5aif{_#hycz^w${s=9d#_HXB*n0AmxAJ9rdN6YR74%Gu^G|*J$tT!bT;c;Z_0~;{ zT)hg<^#JPg%IMQiKf~U_B7g2nzj+Tm6BE4B>zF3?S5~ol=MJn|jSpNRo5j%OOX!`N zf|gA3O~Es5809kV{9+z~+;u0jN4a1$=d(tRx{QXU!~%#_t7B(=9$QbI!mL*L_f4eJ7`l8Jy^|A2 zWHK=}#drVb{{`E!Vt}OYy14US{woLoy(@>;|K0x>IMBxVuLJ}O-+qhr`wwE{>$xr- z{^i5q@4ImA5B~sF*W0#3`_#w&+!B_5_z`BU#_%^)#n6?@7`l9kB?8g5i~t{X3={h+ zD_FaCA7;7C=aQOCqA)g!u^Ts7@M=?UY+>w#X%LME!*;NTXESzCgY(^rA;tc#1%;w* z16v3&c>(9UJ@bmTo)8F);h>?2eS;AbnY*3`&vB9L$~9>%w9_JKIt9ca5zd)j@Dq)3+8={`4uVZwr5NrK6gQ&XpzOq@jK8~6{E;oY_2#4 zVZ3EhyOsq>R(Lxgjo76)riF!XzC&eeE4E`-_xAAo_UC|q3w_hm0Dz&(m$4fJQ~)?w zUBmE|S-6G?S=As(1V*`n>h3PThn~$KUFhb4p+qh6vix-QgE`G+6l3&L@*@Xa?UZEfQGty?VP2`#SMWm}Xs zACi_DASi8ZV(xEWqIPi55?HKi6$@W~jm@V|Fm>}L zy2r+1g*6;9J~Xz_+IYV;6^`2fJw2q;kKKRc;Ug@6|3mCET-(O-k9Sbo+{EQy|GI%k z2G3xYt9W|*cH6mR*X!7P`~>CAO~)0o7HUJmqJF0%gG zn+-I7E~j9{M3HC=TVo1yfEvo4w&4JhLkY?r#47&2j}+ zwF=L1pahe|uGe8#Yy5XIeSJK;vg>s``Q)!CZ*B2GPIh%6H#mq?A zc_-wBK7Eu@EPek2HXlFX3=>&Zk?QV7y1ScKaDC6i=Hn;WdiLzd&s)2955?6rD8cc# z`Fm_WdW2fB*kZ8)pA{U{M1udUesF+iw?9X{SmXrpL?(kwZ!f2T5lMnsD&yH_w_#Q) z{5|No9FqBb%kw3>x{%7}84T9uI2~S!rXiW{3R=Y*mzGW=mCr-ZWZJkXu*)bG*#=4o z8-s{m03igW^$qMUF2;&7j%niIhaWcP5+TrYS#%8z#omKaD&x^dAH%BEfJ0@P(3ahKvvniRoWK`(YWrpeYKIqW%KG)s^E|Bh(}^QIlYmmE&VYFnEj zv3SMWcU|6Ee&pXC$~11zIcA#@GvQP;HLl&=f~~jtcbj)}S_|IeU4*m*)$ke1TiY19 zb`?Dn6Cjd=`oRI7fAIxpFnFGa-Ni+A+)E~rA09^i;D7~E!$5g!8`<7o$SO0%t88t< z_dNb3yGKU@FDVaO&z`d&5)A0@>@0>ZUxb=W!L=+LtgT`GtFPg^E^NcV+P!-izH$Xh zLSwDSP1##A--YS7--enTrFSu&^``DSEZ@jof0yA&_3|)hRoUZod(@)t1Aq1O`AERet9Qonl zwx3ts+egpjBt~YhKvq@Mi$%(HpM|-abChX8f0o$m@ zKYut_>CLL_4gy&+l&608H~UBYV7aLN`TLNOmov9q|)ps2|*3L_&yKedgWx#v9PPv*NYe&agyY!0%bAdyaE;M_U%PEGP# z7dO^n*K15Tx#^Ns6_{C3BlWIm5X zCIcC_vS9=(!wb-hLa& zumOS)RJONK-Pvu7PbSl%myyV1*gxr`1A(gRNMtgs*c8b<)TGY;K72OMvRh7NSKfag z-D6|yU5<=k_IJOFy-UZm0?AHB&nvBO@OPUk0NT}1F@51-|*c|)U8+bwD zX@AqPxiB&sUo4V@OiyndGixX-qibj=)*)5e+zc#uSmQx;XODk&-^_H-s>ycpda=YO zfS$>svb&3ewKe`vX>%iXFS}M}wmWSmNvgY>6Z69>+uz^xQs@g$0xjKMM{l^;TUl<< zYkfyohdtST&=u~l+1{5_hFn|~7^b(a#D~W`VO#{JP zI@ZbYl$(-kJB()8!Ars4(bYRSiPgLJc(6NIU4?$>5=t8zktT#f%OYuXYq(Th=PVD; zae{W>MANg^IoB`@(1&5{r&vLt)Nh&KlA^|>D$Poz{ZTpcTp$hcn3u9?xo)5Uced%y zvi$~CY2f@hOuzM3fZ>vWLfHOvcecQ2z7Xp^3k<;Ylm!K@pwml|C1IbhsHza`m}S!@ zD>!!e^CkQpU9zU3J5snX%4KZNJ%?Sd^K3QOA3y3Q(rJFABtc*eJLIDOMAgWWx!kGX z0FhU=zdwe*?ys)482iXzH1c@Ql_N z7-b3xTvkIGQ@}CZvz?&mC4z|&6uopY*s)_--0QE?*WXp(1*I{DfNNRUc=(7P!xNb_ z3Zo+}*+xG686hZdZK1NW(-Ih#fA|3p|MDT8eengJ{q1k7H&R^IiPEE4#Zf+8Y4u zE-s?Dwid~f73BK*8Vks@IvRIFOq9tpdO^d7cIK=_(X<$bUESHm-V$p-2{$<3^RRN~ z4j%mFLp=QOLp=WE(-wUGB;)Q{fjpxqHh}BKI=wo5(jWw#nS<>DuWbk7TLLzX5Ly#d z5L7z(5-AmjF|vVnkn8VfoXJv&6={OwH}xrcCMH|53t3gsKQn`al~qvRhhv&}^wCEc zf9*A7dV1j6HZ~qU!rszS1JcNMb@XT_$#N`cd5(i;w{N3sXbAa{5#)!4UYzmv_Hvj7 zV7%RjAAW@4E0;kC!P@-?sP69a;F9dhp?_w&BblS;Fe;Ozv}SISBw^yU*YNbS+dR{q z`|>Lor7|*oy)cSJEdBUntZQ-f+Epew7_^DIj&sI`B(eAIdma|P{T7w&ZD^?!^1~yL zRW%NGoaV%(su(zb4hJhM0fouI)7!T(e&YrTW210w8~e*E*m(Gmf8YG@(5bOy-}m8p z?x7IInb)l2GW=4|>CUk%#>5bjg9S{CL^dPl^8;}&Y`he4-s=K>*^4CxKJvfh9QE=|o zt&UWBDFVTr!|-B4&^H$6?s9sIf83j+~N&LJidS;W`e}GzhG0S{Bn$ z|1bJG(cg;-pV&5&gpg$nT)e>V8~&5&?cvCoS4`hJvBbdQW;=+Y&~nhNSSG!rV@+Y#rAqsJ)M-;Y=R%^#5;8D?F1 zK8-245lIR}ciwMH>xzB$VfqG<-=UNl3;LdWIHYx|~t^xpJT0deB>*Px}6F>MXAT#jYxE#L1L@3L8uZ~Vp$T=?bB zS>r^LYdOl}gOgMN6exj`NOb#;{dI(}Ky( zT6HBwhMG)*`aWv=am6o1)1c>aM`n(cQkdm3%xV?2{e8H$4Fc8_ArXRfPY)9yi3NNI z^>T^-OjZ;mySiE?R8*h`05ZM3F$;0CQbi(@hFPhgUM#|~EJ%`sR6dVfe?LG7j8X}% z-RQ2;GnuxViEA^}wEDpTjB**SX(H3pi&S?3$y|>8O;b>@YBgSjWZ9Swy{Ti&cU{yD z4q};lGM9s0H;%<)q(Qf#Q7WOjx5xO?l7#HQ0Fs#u7k7zXMzI7foo;EUh>qV$7Nk)w zqh2h+s@LIJHuP);J(H6>8?No|#~`3|q0k~WR6jU~(f3mMd<#xVDMe{x6Q1kv_eMaF z?&*e}%|g#)&U8$5Z5vMAfZml8g72D@3M5$;!hfZ{52I8@B9j(^@4A)^#|Y-6fU#i> zR37xK016ysV}Itr>p2drY7KfWD~y2cdmhYkg~`cvY6p$V5PBZW3e#W^G07dnV14jW zJc_p3;ry!^n`pqUR3R%0lL|cL_#XBheaD4Wuf1@?Jnj26%Vj8ugbOfN(EXfC1leG zlQ8M5liM{-CJ`to=!P#+Nobu7EFrE-NN}uBgmD2Il$tj8@4$q*-(F**`>Et~O2Lu|c6?=uXHzUv(dot=Hta3RUEAVC?Xk0MMrf%@=W zmwWwnJ}`P9L=witaBT;QmN;AB4S95;207e;JjW4+bur401w|9|B0WFAUj<=lrp2@q z1OzYFwg5?jBr8JRtM7Wk-mB|4!YcOE_u;vYu*L7W9#gFog^ya6Fz%}#T23i~ifSF= zWFNks%rkd59tFjDmIWoDo<8tWpTe%!p(c}JGQ|j<(@YoYbY{dlcVt1&Zw20D0dE&BN(*#l2N#oQr$1&<4lEfCKz--sGENDqx7_GxG3}Gbf@Yp2_3XGm@Lz2aa zn=o>{CvKA4PLNrMfEm~+LtOuUTpF|En<=HjHdDtm#WfuSf-<7o!CjjrVX~n2>RAl~ zR}tAR^Mhj)HR*Jd!(~Q|f<&34I}nj1VK^NPgNvZd$h8?|M}&qd4H^$bbsbU9gRIDc z7ASME5SCfAX>ab_xcKl~PZ-t6vCN3Us))_h6}FyS+h*%k#Cr|9_ynn(@h(0=uxZ%5 zqv~wzPxW@KY7J^KDYT%*vQbkge(c(gIMw>#sICgsP=)VvP2$c6087{c^<74O7kSDM zrfpzb!U|K=_u)IPP>4j5C1LQ6=ZM3-ecy-gdBWi%q0*RoL$l(?D9PLo-Z_=V|ZO%w1s1~%r-`oyT5y%`@5$-J$o z8yHRTRLxj}XNbg}ZW;Bh!ACJNmOFCSMj^+re6~`cxqgOf+9ZzPxX@6-f?@4si*iREJ_wP zX}t+?=FV-dt00BXtYX^U)*nabF@d%^a>9oqFc1+e1C>iGG-i7BUYMx~4hcT8|=p zK}zs`G=AWrd%6%VQnPlv?1=pE5eQ(tOtnL7_DQ+&N8gx5&UK3{6(Dg^I>&MFB=V><7SKBBPBIx4sb@c zq8%~ikCeF)!39o7gk4u8;Z}&DYEkFY&R%}ZR*p4Ripg5bczPE3x;5{2qQP(3J>3+w zwv7p^rLy^4ZS3RMCbN%eiA6^URC?&e&`zEEk-&e6`H{~`6*Wzod<^=rLOXG^iX4>z z(SjTr`2vMrLEbDrXoaJzaYvX&2JOInRDT$vSrI(G5Q#umGOc*cB1s9q==6EH7HFqg zsnRSlH1d#u)6i7k|EWJ~3CLl>^Qt(>9-)n2!2n(9l8LGB*^>%FQ~BHRRbGLWUp6eP zrONs9S(nyH25qe7I zdj#J^FDf}B{dBp8KG-?fBXVhdG*wkhuK5?;`Md%2#dVPArsThZUAAxG&fkR5S>XQG z9`5}a%LDW+6}foAWlPC{-m!NlA1=k8cOU}UxQkoe+zA_ikL zRNT`Fo7kfs)ZmprUg=yX^D!x!nodP{AUFPi?IDBbBq^4vZ=oZ=Hp67?rp7CNrN9%KPT&lf;A)BX$(^gWoNZ~fXO^Lto9V%CLhG6(sb zlJ^Bo7U6wW!eJ}5y%Z*>ECwwQtE}q+&T_SVYD7ZA1hX9PQl}K{Dc0G(JkSltnBrEg zpBu?56(rGA86fT9Q7WgrRs$$#q_XIjddQX~2xI1jYrpKVzmtC%6Zc2;sF~SFp_n~_ z#^%k(jH+#8nNUS&QUj?nvn|uBP_pBBKw1B!6Da-FKn14qQ+B*^!XXllOvc^wt79fw zvKpXvv03e!K$1bx);b;R=Y38g)7R)BcOfF;c02D6ORJ4>?!OVYEzPUZd2~D82>~nr z$b?Dvva=s8NVTHBMFEYREK%vJA~j_8pVLTdO}j?D(f?-ws_GRv=JYl5t(sIgYmSEZ zfx85UemLMZJRNPI1RC4YFAq+U2GREDGP_!t>1v|-8z-yjEYkz!8{pp89@Zmgqd7(v zp910>wnq;N{@RNQSfoa!L#x^H#Z;=`->FQ}Gxc5fwJofAo7-x6G~cl&LE!v9iC+~6 z=Bv*^c?I=KT#KRA#D>yp_&N#TtBs+$&-OyTVGrT)5N1*&|A~5lc(9dbJjkdG@mBy5 zilRxoT^So}%^ea|_}R7lKnZR_U%&mc3>8eA_0LAtX;y9=^wz>Lwbu0xNVgWs$P%-0 z5c~Vh5+xuHJK|*n(sK27AF2vAoTXzAvgG3J{o_gfg*#A~5_~@9k+rQe@x^>$6PSkg z48e_Snd#3OeErRnj?CY!$RYHP#GZ+H)!G?Uc} zM%tjnzd)}a#%w5cbFVQu+Vyjjw= zpJ(D5fI_(zHR`z4-w#4$!j`-<_6Ke31l(5oDRjT$FMzu1)x*m722EIuvpGv`5Ekv= zmCFige=2RG9q%akBdmI$FjaCvIL*-=>%>$s#K`?_7c?`s^rB+?e5Qy|;}fP03!=#j z2y@L{9Y=t~81Y!Dx#bv&VSj%){z;?r{@9gnLq-ddx7TUGpUBE8x4$uYwQ}MLh9TR+ zfDf{Ba<{^{h$nU_lJT&2{3P1M!i%6}OBFY9pNX#F{ZFP=J%U9eC(WdDiC!Mt45?VIO^n^t>YF6#P;24_( zdV^SCNR2j{$aGX^|uC+ZGuguuR!Pvza!cPMPKu#T~Q!@G9D2{EkNx1l^u z>WA+L^yxHJCow?W^+PPu;D^Ge(Rn#zeoWK$`cnCV$4w#>tjahVpk-h@)->C<2YiW^ z^EBWTbyfo(xxKub-G|L00pGxmk@@WpGL!KqVG#Kj8nVpw@zz*c=wyokh$|m6vbVi} z6&6`rxHf9LY`d0`b*S~Ug^Dano)XtVxQY^09}G4L=>(=6s$JTamO~k8?p~|nOETL! zvi>tGh_jS@6n(;VnA1~@ach0FkNoJG(fGG>HsiP zszv-T-(1LZyvdeC;RZ&3(vX5t$_C%417is^5PgZc*TJ0Y|H0>Rf&;-@8aJ_Hq>tzh zR!@)R79Vfs^@y-!j=sEY2)rnvP2g;QySp=vsqXC|n$y=1SiyAq%&@b(9#C%v9-3^h zdY#$Tz}Nqltn)Wu?FZ&CaR?3zIpA1&0;B?#Z*;WR?Ma`r)({}E@OoZct-Y~VX(n@X zliA@LEJ_4;;R3h$$x|-Sp^4Xb)kjE^1QG^S=YG3Sv5Td!p>(yZ^xzJ&tjlK=B(!H` zY(HB^YJ~jf=gQ7tp|fnuC|?JidcO}~{BIzlGQ-8-;)q`|LSxXP!?ZWh**3bEJu@z- zLP8#vU(v&Tn+h`ns};Y>nm4fsokEDN&XH0Z`Nr-FdKjSPRvx3HA|wOifF?xUeHYS_DBb_dYS4u3sYVgRgRW zle!YY0*}mob{c5r|3XVqM!I+#-|8l-AsKdt=0?J=wea898dL`}G9dgN8d}rWfhtMP z3MTd_>Fjd(IJs#&Br6$r^9(@?rV0F)Y}F6wadE1f5Bzc$1b$nuv(x#3mSLZPTp7cs zEmeR4W`+z5nC6Bcz^Zyw+6?Gh$)j4Zndu}^m{qwPY$F;u?=$@e#@A7?UEVq8<|kxleT%#|dQiwHvKs^YJs0;PaE^a#&J zKe}>zQA(R9FR&m<(&t%8PmEh}y}9Tv(+kdqY*{8E8}$x17UBpZl0n6bd=zs{anA3I z)*4GUUU-dZGo?V#=2QJlz=W=~XgI(xVU?q@7xcj#>p4?B6q>@9_S%mx^!3YrNP^uJ zi2AAR;mHS|4KdfmhnpfN&qhC?$;p6q42feBIJU1X--slXKMuND0sM8jjKI~$CaZc| zRc`q?zXP_0eCr>YZbUBy1&?E%a;mrlpj3rHl>EGHkR*~(d%rDIYwX_@?ug-IMN{ht zht|SkHt5Lrrbo**=&1AGP0Jtd+K1vDyPr_A!Q$Y%w((uQJlw!u%H$~?K}dC_iaXI;Rh7>3YZe8^ zDuv5vzHGsjjubXd38ooOEr($Y1-A;hZ1>Z4TaKB~*vexxOC}OsXRE z-;srvPcylEa4i=Oo74?*J{Ic3qz!9t^b1Kptrgr z=kRD=DxoEo-)}dZQkKwI@dQzY3)xYnA0SRJLGy{Yt?HYbLyNPHcNA{GmQb`>OPobZ zl6e!!et-n2hsm*$^aope*Im`XSR_|eML&BU`LcBL)1N#?sxl#5l`#k{`08YKormodCY@719%U47*F1sW;Gi*zO7PvUN?c>tq!xZwMPoHP*N38yY75#X=+h`NFE|D zVO|`^G_^vnafeQW&x{iIAk+u4S(w$yw@&(wv;AK-)H#eo}^TIRbz8$n^hdj;_p~;E^9mw*wlNZ?D>{q%ltGay8?*|fN z*sG0+aXSA;9=>Kzy-v7|t3gz+D%AvFW^9NpN9`D_q{hQ7;=}=P> zK##0>3&WDj0=6mRr&st8^8Dk@bpuxgKTpOn|EWDk%?#7$8w&trECeS}6 zUff6n{g}t`$qP&q2TyoSnexjCLnPF~_ICMyx;(aQ(*A(ZHjEP7e~#7Qs&SiryFUlV zLH94H^H;UmaK`Fst?Foyo$kR#R)~5SEt~sO@ZU_IQv2`<729q^1hEsPCP>LLM zVUfM_Z6cRi2_%?D9=cJ!cKsfP#P;Qu{TBXxl`~PM#Q9^}bB;rJ#@cM)=2s?!y? z2O&WF{7u{O3lv9t*?QLLq;ATkvDQIuv7^x9L_Trc9vr@?gTA?wSYfT$dfvacz^r6 zC9w%FWPZfP;rmoqJU=BSI80Y@cVeNA_<4OMRawRG_{Fj%>U;*JZkKYw<~Phn+u!TD z>i)`QKsyOVqg1m2P!qjiYyUu!qnw=lm;P`{d6{C4@q0IljM+BKXkdq3iiUk31NbbZ z+cII0F5Or85@1dOyg_}elvAK%eqLKXu_s$q@Y~Wz?B3?_3>6|JlI^7)b_DwCgF5C78bQ@^D2d#pBgg zwbNZSB!u~Z^^-gl?4sdLwB9T1F}sIXO&{W1h-Ea!sk*ThtXTyEE)-Nd5Tx^Ex>C!f zz7=NE9FvDBL;UF!4%1ND#uX!OAiLIZa_}~VffPLm7^4o3gDv*NmtA2n@ki??df3GN z_iS=viO8WQ_ZwWmsHUf6cwo%3DKu{)D!WnJ4cDcoAd}IZW7JN^&jCYPX-QvGqu*V2 zq5YwT&}0ylx&*S9%f0Ha1ylmhe~2(fPzyF3mJ$a)@YZ3f)4<5YSseTYQ<0cgiQnQoC`O^{4d!eHi&cYQGBSEyb)E&3Ssz$nj+ zjAb!8`=QViR-%bCEH~YHp7m&q&>Tscd^25xZpkGf!PQ8MVDdOAc(EPx-V?S9Z`CoW zO_X%pvcTSH8f8G_s(*Qgua+w*FiQPJs(Jd+HH-ν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
    1. 948bLPL(g{K@#uJ=#5ZOz5aa&%MwrOw4 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%0D$#=`w%^KoB&ABu+ls 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

      Szo`-pj2UyLw673i#~*%x*fRC{{AYke;Tjk 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 MI7`#BCX0Oj4`!HZd;kCd diff --git a/docs/static/img/icons/beige.svg b/docs/static/img/icons/beige.svg deleted file mode 100644 index 65376c72..00000000 --- a/docs/static/img/icons/beige.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/static/img/icons/github-mark.png b/docs/static/img/icons/github-mark.png deleted file mode 100644 index 6cb3b705d018006a2bd4200ea94c9d5fb98b6f76..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6393 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 Hu0mjfZ$b4` diff --git a/docs/static/img/icons/green.svg b/docs/static/img/icons/green.svg deleted file mode 100644 index d23f2ee0..00000000 --- a/docs/static/img/icons/green.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/static/img/icons/hypercerts_logo_beige.png b/docs/static/img/icons/hypercerts_logo_beige.png deleted file mode 100644 index eac7eefb785c1c8dc18d285e0cfef2349b7e6958..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26553 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 Dw2)Cc diff --git a/docs/static/img/icons/hypercerts_logo_yellow.png b/docs/static/img/icons/hypercerts_logo_yellow.png deleted file mode 100644 index c83726fb771e8aff3ac8a909536fd38d5c751d82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27098 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 z - - diff --git a/docs/static/img/icons/yellow.svg b/docs/static/img/icons/yellow.svg deleted file mode 100644 index cbe666e7..00000000 --- a/docs/static/img/icons/yellow.svg +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/docs/static/img/increasing_rewards.png b/docs/static/img/increasing_rewards.png deleted file mode 100644 index 6d6e6ca0ecb09bb5e0926ce438689b04a7664b78..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9721 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 diff --git a/docs/static/img/logo.svg b/docs/static/img/logo.svg deleted file mode 100644 index 9db6d0d0..00000000 --- a/docs/static/img/logo.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/docs/static/img/merging.png b/docs/static/img/merging.png deleted file mode 100644 index 4ae1679f7790fdab68900e077d9a2a1c9ba53855..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7467 zcmdUUcTiJbyDlg{0qLL=fglQkN|D||kR~EX7o~Zp1=Qt*LS+5{fWLMfr6FLM&)p$kL+-EZIQ>{>eq1fawhtzW=9sH z`VUa-nP0k?A^H#c{x<_-2+)YM)wc#|+nPu0Ea(Rv?XDhK4+Zeef6vp1vX9$YT3XT> z1|xz?Bl{LnnYZ;(wF6uZrAj{!e#S73b|>%(trB}FQcC!x5iuQ6EY`b4!`$vZJ)OT838so!lJ^cHO)rNc*e>+eLw%!jzCMluBw}i;eR{L3UZfnbz-K_%EQ1kmctwY7RSwPo_ zh=>(u(LHxPXO@=%ZtP}zGq!A6P;%=*l!;mK*-|*WD}qcMr#jg%YOAe%G_y~2d=#*Z z&J91(lx%8kCZW~TFy-L#qMMm0;00l@#s!JE`V@j9J|n5*arqd^wKe)`d8Qika89C?MHk5r zzP@Dug@a9OlGzvQH2I!}TzOf?QeThLdt+3kE#o;N!{$kJ2?0?6kGO;sjrAj_<0EtJ zF1=`~r^);{?ge>!t`kS&f_%!q>8A!%4^B?*bVlXo0C^}<(w*A^aWGT)D8c)^D0ZRf zS&@qK9r_Fam4GjloI8M#?>49_baynZr;#(S0;|EnB%;7&K3b5cN@wIhch1B+6Rr0v zkOsXS0lmC*GY&|wU@)E13v`gcg!1^e#)x04c6*;sG#g_kLj{J=KvqFji%ge>@`=}l zhT5}wx3g%ZZ3q%^+0a0h6D{}KZ)+rTHsO`tW4D`h%<|m;Ha0dHHea5ui-BH@H!^6| zNv<@sNra>^7)n)|S09GH%#!}+$R8;i3lB@WT~s59D3QGgR)nfZ9KAUfcM$|Z8>~e# z2?39@sFQX3LJCufDXogftPy9`JG9r>s_3HAL)%nNxvt0U6=m_M^2x%jIwRj#V}2$- z(3*<&7kP-vKHxMh$=khDkvh_o(I6t~8gF3c6#FmZ0Kk5oPTyK1HZoZ8&Nt6=XH|F)QrBg=xAFdQVyLu7iFF}=MY;S#L(#pt`R;_huWUIvIgj$0A^q#rSvA_z zbFcP(PSio;(Y2sOTzwmOgNi3AowUC=&vYgc z(w+UUwf1i^SO>-m5FuNZ1Nj?j_YLO9Dp{>3Jbnk$i%EpkZ;=)i$|c1jN}wLgwl`o58W>PFb*FK@AL*+2HP zI0nON!zlzXORiL55=76cXMnPyH#&Sq(QQdg!hp*`$1%fu@&$LI05;Mg+s!vRcH1cV zVCALN)CtZl4q=0K`v(6{;RoA}ry3m(esMNUvHIczHYRJ=sGuEmfPD5Bf2F{!CqvLI zo)mh=0cYMIN^kn@y?9(4tKfIP;kB!87@MOG_v^p2ot;IiiZf0avz0|bNou1he$XOT zZ>=;!l%OHGrL^3lEs~>028Yl%pcs%&%g-9XJ{m{Lvy2e{(%>1)Bt<)X-nh-;>@+2c znEq)X;VPvA3~Pz>-3vI|v>7$NfZ~g3Uk-zkQGSn7B6kWNpj-@^^#-f%(J6nf?LS=} z$e+ojP)?6WmzG=wm)r*ON{gJcm!3`OHAH)4ZT2MbBgiBT&GJ#xI)BDpcfPj$HU7Ob zA(oe?{TiSaHT8NJd0_f`=T1pfR7>7wdq;|PovHf6=izX&!eOMW*4IYxF3%1 zhURIUj{aHhK4D{9Iy@|g)>6*AW+D(r`}xpM;emg`{k$BxW^Lb722)tJA2}E_yU}fb zA?vOv8Qk$nDd=W-AWqaZeSMsMzI21r@nHk!X2Ev%-PxD^K1|bGelU*}{7q6CSue}& z36ol@hvkjQo*{3%}oOjvKyKRd8YbDc>t_)!QS>{J1ABdNmSM3~vkD!GAoP2S*l^xt(=> zWad)4r(_H*VtbL`&R2IG1=fJxzr%)^tZ;pK!%;_$I90JeWIv)&VA0_rw7Yg=L4fC|2Hlv5 z)%3>3j+)HG#NmWf+;>ZAj;}Tqp4K%`Ngk3gRa)MMNCr!e6;mdCXw^&W0HRYp z%`@JNi>g!fUwJ%N7D*pB0it}Av$+}DvWO~qj(t0zUq3QCG-doZFFkHsX|9RNGq=7h zyg5?NeuwS#jd8Fp#Ah=}`i6g~d5EOdN;59bl{5Cmw+q|Mmqcej6AGg9+qwhkb*l^(;e|Tz7$nE9^$~%(>K)X~3HB(yze%ZYtHqQY z{AmfG06EIz+5uvo0ARoH@-&cLS1f7JX&uW~oOY#j(|r^vd;*(iTG?G4-s90F8GJQ9 z-rp!;lfN0V?xOh~JxOrRM&9$kj&6~KA5GniZc=f{Tyj1L7)Pn8wjJsrOQ=k^@O07B z0LoUuKev`sgq@a8k@Q*^<_+S!9r68#qSt(C+I!*uWHbLyjPcv)@&!f4`IcBLcJx}y z@jjW5F!Gg}L-zKqrl+QU96gQqa;3_WABu{K-*p>9iB7dqXOuN6Y>Zy3e1Vv1X_=zt zcFEo9DN$`(x$9kQLLghoi^AyGx?e6YxwBD0jU~PRc5L}CV)$=+iT#CR z{k6f>;i3{ROxYutOqb|4y_&9a`xa{-Uti05znQWoD#aZ-$G$|(-sR|AHH-(`Wd?m$ z^x<4bH2t1&7ZnU2^YinMeunN2>W$tmZ#DyS|E4OOu!@!%;XmcJjb?u#G&@cbqHq0D zJB~GIh@ncf>>JVi&E)jh*w|EQyazC1|A(so?A^Zu=J}Um<|12R$M#2OBj3zN_XrpQ zxGJ}AhAM<9I`PA^VavH8YwTM?P6@`THLl`Ww#}iHP0v=%q>tZt!wt+*sLFTRi=IZC z%Hyj;UjGk<-XK!S%UX<}W;a~5i-5N6ko8qwmBSJ0XOukZAuWv53S3tI9jMSHx}j3z zkh8pfLttyV1u-Oy4s3=V2Ed*!pB|INRGWs`F}CyC^~~PI?@p%H0}oFYM0qn_RO2}; zU?~E_u31~hBEHkjR=5TT{wtP2hc#ht{YA;^F>+15hqi5C*j5X9E$QpPTZ33(VCH3! znkAzT%BFTyl&8SajAuN2g%X*=v`B~Zokk&(nJ%qc@2&)=J(Ux|N0o(vQOAclFMwXMBv;odHwB>HR9#zJ z8%UMGxgEwcM^SkL*S1xwo2fE+bYPLncGakB31{_%>I~1^%f1&O!$3T$?ufy>_VVRF z3IAS%Z@~xQ6)CQ;gPb6zD@$DU#BfrS$F`_t+dgprFTay-mMX~OLE%XOr$>9?;Q;XT zfDf@*3}(jy=}%(2Ce)|v`v*E}wUmDQF*iWOyV-k6RMB1$^z*Zy1cEt%>V0&sU7`GU z@zvEK*=e%Ajsuc#shl1Ie5|F^MG~{nhSF|N-158bfI_C9A>}(;f8j}{tx6D^=3t=T zwBAz3%)7`8D!G)j{^{~DqhpBvoQPt)F1-rM!-ku{U)l_+{YRIMtz5fC>tR+E#$;4vBfNJ||;WBtPs{qK`#ew7MU(DBz-u~!z zm-%ACimvQ{_+20vL9^u*lzjc~aCo!17Lgz1wi-jns|4Y=mVKMIn; zHNi4FL$Whu(6hk;I7a2(O4hR@Q#Hxu@TA}`G6!K+6pLjo^*fPOq+ylF2PC<7f{{cn zwP1;U>!L--2~avykmQr&CZQC}OB7iCW}ae0=G5rN?~fm<__|@lhsz>7@-RRN5-k7m zNS6U{;Jc}3Qv`WaXEANb$Fw!O#=DEqh0hsA5-cbhJ}TYpnETKJr!7!}t9DY7nrG*$ zhu*(lTwScQA{2N(fqtBL{+>Q_MTY%_?5$soZBvd4rTQ3kop`*z;X`T) z%U^;$KMd7@f9^8YKDrs$KR}LS6S9nEbGGBs9br0bR55_19S-qiSLtGnALellq~zB~ zw824B%y0$53&G(Z5ox^QDkk=`3h`AvvSYbdRJL@nf%#q3z?OA!gfkG zOt_s|vg?Te6ZCxW7##ZvY>9s4YrO=-#L*|wN5O14V?PK0yYVHT7$d~y;PqGBcO)CD9sx^T+P1Ru zgv%`Hv`DkDii5f(D9Yfgp)Wz2gph{q)> zNq1N^RvZ0!_djQ{MBY+j3(F(Bo%|r6omXzk8XHH4jpgPqk@9$+W^Ex{o#Va4*AVYM z`aa$-*!awZ`68C?G|~TO)9J9fEP|)1>{!lRUj|Av}pui%~aw49KM zN-pM>w%5<=tV~-aVE+&I(%5fiJ`D92xe;eLFf0U3T|{gqfI}W4*}>Z0 zP>AZNDgQNEGeGM@LPgjeq{L}zmYcvub;BB+f^?p^+`xz_MN}2uWEoPbhiN$udaOa+ zG3BD=&=~dbsP!4~{zU>b$Qq77;zlFzD*J;&i6pngi*lHj{2;Jib28L})RcU@lb0^s zdT(9?$iWVI+d%_8_d4}oKpTY<+HAp>I6 zXWW~WD>NgJJBTzVpwXiK)9P^JPG|#wTDqvp zaJ5-~PVe^tCJ&DWsFCnzbsQht-JW~&9u9cxMR2QMytk+G(Gs)n((YU+X!Z1cfCaIz zihRCy?z>F;R>Lv~U5rGcZ*&#QKdS7M4v+40rus_np5Q@|#f*e)TV0>cNzl7}6vJHo z5OU@>)|lnDPKY-@mr1m4Z5uRj&!aVX5PJaVq4&tRyLqk4*_n@<0UFkIUwqx&xgh?$ z;rOBA7Cm&Tsk$S*^R;gI8|4OQ-n4@(V7 z5$@`xy)+(=;I;J5#i&QG#6&B9ycHYBv=}z&4DBoA&6oSB+S-h@?_BGCVb%%aBHigC z7rUG45*)@a*hS9Hf8Zt6aXNLzk4;ywNuh4}6@4A*Hty3O%VjBNu3U*!@{2DeHMwy( z@|SaAWa0w^EFMK>^)x<>?Jwe+_xa9)PerSR1{0b?YQ)m{w~AS^*#P|hH2{RWs7@md z{^yU8M@%k5LDEDZV!UE33?~QIOhaLA^qTainqk|2i?=beOOhNVi2>{zQqfcFU@p9( zyEPZg=hyHnE1?@K)u11wrt+%d=*%Dj!(x?UvUrdJDzUF%YJ#sk2pepHt|weo>LNcM zw=!!{PK+EE#=(64m>MUB`LU_MJcJyVnxy@3atZGu6o`P@jW!qA6O`k&^ zG@8p>?@S4SuW&3trIt<&dFOu<9cMc)X~0pwMn1)eo(ni#$uzb=sDpDSuVn_jlXAUp zsq{Qz6JqEiNA0|V1w(QcO=O(r8D*+Z`2 zsU6CS`e663^|IqF2~S+DH8XKxe%a1^_tfW@u|<9Erals07T~jTdglkUJuq9T%L!C= zjN-1`w3ei93Xfo8bB%(>Cx)AVAFuE4)PH(33H7D!H?6Eoz{-wy#_Xul+*r!9v@_V+ zlu0t>7QwnN%0jTAvA*s0zix{}{?xORTPqvfxl(6dQUc-inCO1aSsBd?NnWe7w12$p z1i@w2Z(94rhH_%1FEGbPb2!mk)toEfx58fNhZPw8l7}lB)1i`cLn@u6oBps6vIeJU zl_fE-Fhbd=Tf7(tKO}zJT}>+mi^>q@KLFPLS$gZSST$d_lNjnEso3B z?K=E!`kPiP9h)KXPaoK)Sn|A%=Jl z`aIwF-~0aI#pRiqv-jEO-s@iXy4Ma;9rDd-MK%J*s@Z2435q3Ue?>5{oXF zh3(y=LVmix{{frC8j(I+1ktz2mE-)q7;D5h74r9+a@XYhI`G=IH}1v!F0L-7W`WXi*~Q-UD#PJR?b0)kg=#BXTSWWhsHINK zlKGIU+rsqeqc(lF`SnSj3T0*GC_5=^h0D5ar|r@F7OJw%!F0D#o=UOn9)y6-kmxq) z)MA6nZbNOZ9Wn!vHry*XQ{guo<3mbGWADwrc{;;0=G*ZVZyx!HJiF|vt^ePrVZ+xj z(cqbG_Httbm9p{@bQWc!R-|Bq8w_c%7PV+;8)w~|oiA%@vTPnd+NsUqAhH1#Q%Wsjm;HtyW^|mP4i<;LKLwgls zGoxSYCBy>0Az&6Z{L~8;$P9J@8s_~E-J-eW8T)&$M_QX}O^s;&#ma{|lW%=e!B`r^W2+tdnv{C z$;6ER_5u4-i(N~T2?Jef0fBAx!UUy|-s zzzOB*Y>%O7*raWcAbwip<3WQ@_m)Muu#c^1pq%%`V8p*Yg&*b;CgF~FkCrN5UP#nl z{Tn*utkap{YAm75!>;}rx(PRdvz*z%-LESG|5!(JPDiuSKnhGf|j&1-Q8hQH5r zo&1P=dt7*;1Kd1fCAC~|^^HNa13KNwwX19|8-iTxjaOwOTbJ?o*O#Yt+2@s5Pg-OawM=P!!Wk_9q;boKi>{mr)PB7?W`Mdi^HSn7a6Xm zeDp~(L|xvqR~go@3*x)Te^E`&J-Y3Wh0y3m6GAVC|M(x6>q2YJ;!h^~hkl*Ra^;(0 zC(VEH5$s3Xmc^W^XZv^V!7NOD#xajTdU6UNB=Kn%xxXS+kEC2r$ zSPNFrg&2|-TqgBz4}J~ZOC~ZVLTRY_feUXBbcB)ZdvXGh8eS%)A{; zd)u!nPq+tw+?bKt-zR#q_C`A=MQ*X#t9I9JV=#SFCXy_cg}_aC0lo@>22&Yzj|lle5y3orXmwpFGR}Vx}I;%9Hdf z%2KvC%Vpw&?{t=kmv^4WdSBu^+--qI*nOn-i>>WJMWlzWZu$e@&;5M&%Udk3e$HdF z_i<|_*9@G%Ed0}$Er5D=Z*2(SXRx{GafT|80nAUS`6Y%eVZ0fl4m-5&kqyMXXNi|EEBk-5?Z8)&8=9$Ee|&h+)X zl86H_Jtdqob2mHn3OoDIS$ zUxuH(kN6IqX38VajR~#Mvuc`2ARk+w-PS-gBD`mPnN+jpsJ8KI&2=Xna6i2u|7}(6 zGet!?oB9h6mR9sV;nv<1@TT>yjmTx<3p~DJxOLiGMOhk z4H01eoxgPUlXjFdU6w8!hlw77uy3X%bR7V%(Enw%3FNp5Yq`5tXr6-4hCUo{N9!JM z?W0D4c zMJ9;e&-zH2Lb!_TA4$LMOttV^*i1gOzDpuK*bW!RG4`XKSZ-2$R#yiyH*~!fvAtjR zDK(b`Hq~0F^yF#pyW!x!ydAEZagiUgU;@w25OTCk7Mi*{lDB$wBw<#btH+NB^_l05 zUX~o=SMv`aWXS#Ax1kQX)XA}`&@he!W4Ye2W_xUqPcAGR#9_m_sfg~efItDa&=!!7 zSdO0QHuv}f+uHW9O6=g-foRG4rTMVFM!Sp zw@i3UE#hLSN9!2XPQhLH2l2SyzJ2T4^B&FqDbJW!tU^T`Ryf|jQWeguTAchmhK|H17NPX-A{`vGEoCuKC%$T z048?V9IKQ^qj)8uot#<^DIh^DUB;-@7hpn3qSSaegWM~uMu9_xLtbg zc9XfD7jgTL1gn69MQ~}R9Q`jx@;rmbRM=mH2-sNn zXwT4>_VQS$5NBk#Ysgp%Ic*HYx5y>wzU2x=R-W@Z=q;P?6#^XKg5s;+o9i_)ep?M+ z{%51c{M4N;{Iy}O)rEc&aM7lPn$@XG&YmEP`@z9M-`OBcf@=@=Dc$nJZ=(A#ke1xt z{VJzog@{RA6TzS2cg_DpoYk0xZ%v(CR^Lnd{i(w+8miCzae1qsFFv{_^G22hIeV z6hX)v?)77#eTljKuvncd#&lifb0j!Na~qlrr^ya;*$cIK{#^8`fqz4s1$o|7;8Ta! zzZG*k%QKSgV=z%6vfFM?d1gMs>D_duYPf7#Xb7OP56tf#nO{^JL#@zwFetXCeCs+J zqv3G5>GxS#tHsS~=W_VYGmXYy@YFAfv zau;1LyQKkWIhOclr+dF?C5=42zrWA)w7DNE;jk&ljN>ZraNKBaTvzadV83IRHD!c| z#%Dp9D6;*XPh2Og9LZUJ=G~}T*zc_PygqssJ`dL>pj_BZDoZ_lPFfl-6v^Tt7ZT7? z?hqMQM~Ps8C=!($(@{Ok=Fjg`J}Knd<(nf#MAd(M`xS{j>=bgV@eX&bKAvbe3S5C< zQR(d^N-A)OsAt#COh>Z~^mp-gB`L=S$cK2TK+A5KaBDZ|_ZHvp{haQdDOLyVWbL!o zl&o(!lA=uQ##LJ3zxSq`HK;ukeign$>LKhYPG%>qZJl-9eqXPQHT)u#FOGLgs=Vt%4vGh*_Caj{mrsg^w z0|>;B)sXYkFSp)jq%AvLZ=tvCzYY)!yWpM*`^en`$sE>MgE`rdf^Do>VUw|xBBKOX z--Y8Yb~;c$MimCpbs%GC$=Mq(|{MThev5hc7_GNn-H=?%=qqa(9{MUiqEh3btcsKh*aCG&*(4Xv&#&nfu+chW@(~i-T~F z7$jDsqQJ%6uL4w8&s`Sbl2D}1uqzn*+zZ*>#e5`VJ zBB5+>P6fO-lj2kS|En7of4BBRV>Co@8hr(d$@`Q?^bJe-Q~OeVVbR%#Onc;Zk_%8Icw)NtWHJN<<*ycN8Bosf{Y5(IYoCiywjCw8 zkD*z!1PBJg1`-GB)h`?&Zd1vz@>?%0Ts=6Cn76~n}htE~}%dzWP zP5;l2UzHeKr%=3dPa%R5i%St29c*oFCC|D1K-H%00zHVFV1eV&38A@Q#b=&v(IYj) zWbQmVn43OLqS{&dewhSS`s(*}6mpPqKd*JZIrGh7$Nth*K2ss0bz@mF`W^7Z2iZq# zk6)X=G$Emv2U$|_*=7)Q%U~AoDUR%haS4(DBPif?URQ`6oCe+yU}hb|U02Uk@y_80 z{v~XwobB=5_jLgn>9Dl^U2lo)cVj?r>jR5(R#@cUcSUyI;aSNRkGh3qyU`9D%tA7@fjZWo)DdAao zowq+?P4)T_Ok5MJdif}C*(cJ2TrR6{V$I}AnC7QO%aIg+gqPW(?~O zlTIbC*a6|GD;!60V3g+V$dgY0yl99G_FdE(s>5|Ofl6TN#A z7nzDETEBz!`wic7RaLK?XnzY(fjQsYuI48rfTthK{%TqHrJo174V!i$b<(=_R>OY~ zpVVoIgJd+{yZg26HF~a9ZDO~c%g19$F>5W zNJiC}NR*Ei(qiW<$@nN(aGQIIA0M1!^{+&sS2YkD*}#;3?upnOD`l>XzKq5xeFdK6 zDjgKdENK0XLXs{!YMN5{o55ydL!j2YI*{?imljfu6N^?n;!JBznftH)@CYoycI~^F4Q$_HU83)+=Op7ctCZ!OeK`$8g58kaP~i#CI))tAXEW)%}`W zipU&@2=FlZ?*w6IY=x?TMkO-gncY^usM*S@KLkG#O5EQ;?gHmr9-dfUT)OaKM`v-L zu%PFxrLO+=wZG_S(Mh-vZMZwA&=J_u7d_~$25@~;kA>03bH|qt8R7J5M)-N&aIyQE zs~GC%YLs`7fKF^>%svt(s_?&!5s#;?cH~0!L%RIYckSAZ7^;HRFG0J8E)KMkF={cZ zf3g^DOAQwG%d+rh=9-Pea&_K*^zRb{H-R2Y)QwaZ6m-8pzxsP49=fM0Jli9~N=g(@ zm>Y(~6<~LD!+0WIP}OwuXVvQ>qWjy{&k2FbdWLD9oQdL#E``s>ft~!A`r}+?b8A_~ zyGoqWJzJ?xA5Ge`5_^(Iey17hEy`qQBCPz9XXt+w+veO{2EzJXe}cxpMIYf~@Y|K= zP5Uc(0-_-=sH!`%2w|kfG!F3shl{}EtcH?Do@b^F?j5!i5tIq8`$1KpgS z*}qTrIe;FI%{g(2?H?GlPQ|!?eBC_s$G{=?!j`!;lm1VGnt@Q@UDxAAPj(_G8AzW7 zKt8TFHkOw5@{gKJ6CQL^dRa(u{Ep-f&KQKp@GP2h*tV`zx09h|urF3lV82`Cs=zIw zmso(00)`W`e?`iW*KB~T*F{L^_QY;NwC-LVOkeWJ&CPY(615mL_CSCh+% zPqH(=riNENq`+9qnGFD!H7r&RBF+yZB95$16!3%|rxUts#dx4MwQ@c6lq)zuj4 zmtZEjAS&xn@^idxNkY0Htm)nLpU!!gU( zFw?*LN@f}sleINw?CWGSDNmn4iBMLZKQxT5vaR2jBqpkIm;+>BMYey)<+%)S9d~09 z%PmW{l__JcQu!#>@xk@!^U151$0X-5jgG-s$XadR4t>`<_Ux0m5-N|qWCQzruJ=Cs zJ;t?G{kOif1=iI2j*)~RCLsmj3HeZYdg4sB_J@X>S-{qHtQ42KdXyUTW`?9@|A*QP zgsI<6rjW(WKnC)+(;?adCCyjOII8$+KY2G{(CS zwSkEH@nWU_RvEvj6kXiYFT&P@F?m1ekw=!q^<3l6;D-= zoEH0`vvf#BpWWboJO3wLL`9avFO&6jhOP! z1+ViS#j$Xkhcirsl`>2me=0+(z@HKpy%-&9@lWtZD53uVkM~-{1b*}52Hhl$`QCK$ z@bx{36$4N78mfL?@Fe~leOkiczD0ny@}2k{Ztq963gUCN+AXf(W6}$Kv<|?tJ`RO_JR31qwV2c-SsUT$voYR0dAV6&i5 zQTGA7agYFadG=BvTIZsOTVlLLr!y;e0z##eB^oSj3h0-?v}XFKlzR+eGvM<%}XoA$UvRYO8r# zc=X^>2-dI|FC&F7Or(B2J@$Dngs9+3Qj5+p2hhDp(l97=^yYE zIqkMzwb)+n_NIO%H)zff5MI}Q!@^3n(*VR$)AGFd+GQ(oenJ~33Xo6ec3wBP+|&9) z_v%TdvR#!}y1tg1fONe<5~nHz16o3OlqoSuCZOPe2z$(Biyzb9j#Bt;gb1$8lNMkQ zUh+eM>aQX=LFW(^lWdPXJ*zqHOQXB-0y#=XVN@@pc_G2TIqoTdY`s zYO(*;B9r>t`R|c*H`CmsfvFTl{1)MjK65x&bDvEVa?$2Gi9P*WVCVu0xWUpQ&tVH~ zyXe^(#=Cbd+0J+Sk|>gybLVMk&ke0VhW}#}0^(@{7WQ#rgfC#-v67nBlpLSA8fZOL zp5p|unpb%+hO0P>P~{DjiwGRUSG4GGI|ZRWK(DD(>!0Dk5hdp?WV?1_F3Zw8f0iGC zvCYBX#Lch4`$_fJ!7+6}jA|pvcV8|@3r;Nl14YRHv`Qvj6aByvqC3Ol9(c3th8Oxh|IT8w4lC)2l zZORHb3p>pc;7nA_o9SHiA8X|_{7sWjj6ok@eS{STeQ=j=CAklb&aB+Q`#~l!mI-Wj zgOoCKJ5_jiAFLMwLV3RzJG02w^(j$b*R{>Li=F!_inkhzUiq3od85_Mc3B>{bL!+p ztp^26Ed4||?3|L0gh@Lc<`ih@ox;)hv00}qRdiBz{@!(aSie6y>I2RP=_^fqAUFP# zo9QdvkTK0_unzq-d_>gR5599j)X&;zS#8OH!tT2EjZ5Lhj%`g$U7z&~y&XaUJ*VaK zA2vhF@I+IA?|(a(P`Q*ShOB*h>Zw<8_+ypLy*NhzBRSVm?ab&A07Y5kjX#k{cM9Bx zZgZ_wF>FYiOFG|1@hz}iNse* z7$*xZY&0)Zf^^vJ!fk#Z01i4aaFwv`Nu^deM@H3L$&(t7SmIRLhUi^fxaa5>DEd!m zQ|j90}_e=CGa*PxP9WKD?^x&ki&7IbhGU|m-bWNMo;JlIO4QxJa1!DWqT z*@K+6w%i$TO@!6>xvp6*PK4`hOCNa{ftTlmH+i{Q z(%r024twpGyIw@%H4wWdHox=sUKwc#1kRJKH}Be3|}lZAzUIm5Z&6#CMzw`yQ%k9E_!@tGgQ_$jY-G z348$(c-c`+qylkVe%*+%K0ahk$?Pp3Qs9FJKPwT^1uD4YOfkh$E@*mrlxh8g(TF8w ztkpd{JDBC&g5NTO*m~aqEE#xi6%95eKQ*^=`daTn<%NydfW%<&AMuSqXFH)1*tQRg z#6s42{Vm-^kTAbrm%#U1l@YVu?G(*LJx*zZBK+Jp@aFtipqvnIOjWDSzD(5kg~9fm z+oF#_HQ=(TQxK=)dEl}bl@63-4U{H7=fY*}+@O^bKgvG-{#k7Ezon6Y3GYMWXBm8N z!W%>UT?SL_X<|r}<;Njl7yk=0%I_m*iJOz|6fmIC;|#rT+i)0%@GNYoYcUb0z2Y!v zsxyHCWsw167SL=F0~#MJs^t!7)BO09#_6ymDrFTd>Sy|fm1beT7#XKd{l${<6_c+g zA`0?Y-Zt80bMCv^=>{G`+kTuBo2fB}eo{}KXk}4wVEkH13yg8}Jpvo$<{Pn;{6?0!VkFn8d&yT`N4|YG$ zPNI(GbEa5^%%hk};|`2$njx(BK+9&{P3tDNBHEddY2nl|59kM!S)_}2Aubb0G~RvG z)%8K63Q#r#EL+0z)?+awk)z$$-|c3ILJF0goT|Rq*&P}rbCP^L2X}uM_GJk#H(gDE z&W@IGU?NCGIj^y3C=NNIV2C!)mdAJBIQcq1RlPnZzSD-WdLFwP1yD{RC#q6b1G- zc=0T4(e7(B=mFCc6C25NH6 z6Ij+@4!%d?txdIB#4|?=Ga-}GIe53}_Mdcv-@uGagc?f19Q*rUO(mH|Q&a4-+MClb zUGIA>H$aK_yg+l7Js%*~cPFx@A!{69zDq=L*B8@^QO z9{23q-nwNwLvO_UznhM*CqCEb!YH{1i^=$cq zLPEF5C7M621i?Nru4hy?rrFgTnhmBoG11ZZ_kaWJLWguev<7Z!IxEg{v6XEqS1WcM zVViw0HM$QV(eoP~w7_OB@s@NMRD{FYVS_q*xnc9sHa zGZ5*n2T%xDc9{?>)|`H7`=FG4J@_n{8$O=w>|+t+Gkqu5-<$7qCc^pZ*|dtAlEe1C zP`PE({>vM3{%1m*^w+|v-$h`_{hLIR3Ha}%GFklpjELRt&+TfW;=QL*hPTt}O>8ZnN_f^7k+i*Y* zj~7gGq@lhuTWOX^>yyp7NS$f(;__ZwxIz-#Ca^Y#@SeeHrf0}$ZVnh)qk4uG_Qe3D z{z=8&SFh$l(|8$i4vKc(=x6rD4}UIqNYS>E zG>H*neOc}BlfUAXC2g6U$A{l;lpHn^1YTI&q-#>X$hAY;jk#Y7QoZ&#dOUeGcrgb@ zKdiq9a?NyUyZ(AH?{zOyMP@;9t@h-ztJ$iKXXJC9nLmRD#Ng?4??*pbd?2N{$!veR zc@&^%LT+kU2{e8i z^a96QruiC~y8jXmOLB7BhWEQ=vDC@3uUA-Yw=xTnlZD=;eVII`TKCWCd{;-i}hFBfDt<)5A ztE6PUzT410^vdy_m{CRd>4)M)V zF(we}4o>^guRF5zoL*=ViO2_3vBY~P7x`QKx9{p-i-`<0AN4O@VIeKV#G3M=^)-jX zwDiRp5=R|isVmWDhDU#R6BXW~RY66{xC1^DnvTl1%Ul)L(xWBCVo0g~%>PXrNI)$- zHNOZrxf&P_ja!{`ZEpkinc3!;RkQZGim$Rmi%Lrov*m_WMrJDasW+0!d1KN0VQI5G zl<31_C+V@*39!L69rxTIxIKM?qZ-iG|4)~YP~%zAn; zEVjofa<6dFT&V3y#}76+VuXBcrBb@roh3g=$axoF?>mgwc&d4z>a>7|cFlS)&?-7# z*!E33dJEs~wc{x{^Hm|y3qL-{$gCj!F6{Y&>g>b>-APzE(FfV_h_k7SyGAeSGj)XD zl+aYz=-Lsv*IY}qpJQ@l-H_~@w3YG1oMo<4KYs)Dgn6?%;GzlVn37)qkLXDj@e#2k z`iuO>@R!0dhP%RhfH1x$>UJCQbdQ`?LxmbS@^!2+nNVJq@+qsVW&G~lwq51~N1ZZ% zwELx5fKA}MEs7)IUdQ7cU*V|(hA>1iFq2gMpbQopepwDfr}$ru*U$Le5cJFnn5c0n zMksGxp*Uv^Lvtqo(N+#=KBfqH$Cy4DO^G0tVCrnxq5{7mv>i3<(XXvee*G!yDY&^2 z?D8kIG<2#a15vHQ32Okz;;sNq$L7zuqqo^7vrQFCA~b`f(2TZ?*h0T4VaJ81`9V=D z)GAKT^ySJU9)&cZD+WF7Mf>$8yzZgjU(dDHM*do5|LLxw$Zs!lb=%;JSpr|O0o8qY z)_Sqnv7zXm@x5Hzju%&+_jBch@#FXsN-^ANAxA0Dv;9NS(;Omb#s{_Lx!ChYKwDBt zz_5Iz#N8)C!eq!e)#VSUC`8*l;g!q;oq~kt1%=M=ep2YR{dKFri^`jEadE#&QQT;* zBN_eVx&oa<=al8PlQGdn5`AXD;V6_#=V&z^w%rA!PJ$`9e6Se%Ow9bBv5y)M$H#x$ zEptiwCD?Bgu*N6V6`3huXDp%mxcqbP;;Uqg%Vb_FGGQS~8hIOmp4quhDJ5c#R?xR^ z>t{wX1(uEXjQkhYBoc-q{-UK;eyg{M{*F`q1gQ9n23L4|pVut?N}u+I&}&kn0)~lc zY1M=d&Zm!JT6!#CS4?C7eK0Xf^*ZM$^}N<&K4FMw8D^Sz6sxk}#p5$pk)EJKn)n~! zpVFWI6X6}4Dc2~+IbNBGJg(!W7kRozPiSP`n_FJjk_WxFoNwWA9}w;?xj%@vZQo=P z0DLlnRfX>wBf1UuCTwkS=@0A#V}-FM@+r(T&cK2CjHsQ0fW9=9OMPOpWL#&LVGMa6 zOL1M>PwfQgK$Dr|;BtVG_1Z7cixhakn3&^2qWGjZD7p&hUjrla9GR}m_A~I1d}qS6 zhL_7SXmpt!dEQt`&xC+_f%es}z|%x)>iE!U{-3@jZj4jX(52WE;DYp65>hO>ba5pZ z1SS5!U)aCl(3M*&6pLFou?hlKeeRnPX;?dT#4*DLj2+_{R2}F!H>7Pl`LF@PSpq%r zcau}OM?ZlZJu2eHa#=6k{EF5nM~PU~Z*VRmdfYEU@eCJHF@7Z$5fk#P4<^*_*&URT^q4&OJ=A1+<;3e zLyIhu1$2R1+F1iR2dn{g3X*~PxMX=vW__9jv%)`7e&0(JYg&53n%=1Z2D`BIU&&tS zumTPOet2szj`HdhzsBO%c-+|-3cjH)!3v7`fVS}%LyWgkS49>$UjU4bf~{Qtt+z%U za4{*7iNOEpiPnDceljhLcq#mL*zFr5nlE6sCEd*%pr6aN;#tp-dD+H!P1VTfS)nf%z|y5N#ZN!+&XO&d zMVm!DQ^+gUni?4koJY_B6o|Sz)l9)ZfU&D&wwCHvJPlVu%o&}?BooW~p?JMU_f^Yl zJ(9|NWgb2Yh}5L}^*7~^%CYE1%h*(92{WpS!GuH81+R(wM6NgMl1zZjP-*h=sVPu_ z5t|==ffTQvwVw-TZwUrw?x(gBIxEH-N7q;aI^()R;>&MZY=1xlYo1)A?J<$ET5IWa z4ZVuPo0y6V6zZgLnF(pPgwTahR=24|dnPSi4fA)t-zwS*s{TNucaOk-V(IMr^BX5sq{Vf1>}b|J#ex{fG!+&CC!<1)DQxFOh4~9 zLAbym6M5ueS>KMB%ONrc#x@*Ua`n$uT!n_-co{5K`Bord$=Ue9Zc&DxVtizylgMrm{;iBvq9f`BS?gn+I9e*g(@k7c-3a8Z$3hsC)e&CKY(%3THlA74|%{oN>W&Dez{i534+VJc0Ei+kP7Te!|ca z0%hoC74?ZdOJ1S}8(jYipk)s1L_Qd`3{&vY)IDyRwU${;$xnJ1Bh};T#hzF97nDKj#menOS;%|8lp8MnQ-alMT)>$_=Gcb<7 ze(%ge;AqY!LY0<)YWX%Ekf$Xn?{@t>D`Y7+<*;0Xg*?(TFedyio&ZO@5{FJOZLx=P zLrog3!?IH3(N+X!bzY_}u{Pun&NNk3Rl(vtg1vKsxD&DKI$7E|uZb}P#Pys)2lct# zx|;Csw^latsyJe%*nby1rAuq!g%rFF5t-yr7-I2t$Bj?^Yl4}2))uY9td9|3==QsK zAQ*(oPvdA{y-?8`c0>C-dPzoZlVM_76bl3CpP_t4q@4R=L|eYA@aY~@wT6pYt#+NT(oCjmtN}KaTl5!tjNz9Cvol*+ zURPFpW+NlwKe!yy)t{bB8L-9ZXM&ug4nsaz_Z_g3d$`iw~*qq=ot+4%b3fI2!|d@GE@=OYv_$E|x*|AZ8Fl~mBE;|%o=`lbRET}qk%7OO#M}4ZA z+P#ce4P}J^pw?;Hyd?a)^B(szws6>G3axF$2-4-bXXqEN7T##Yc;=H^qig>!LhbWRs6JOS z;3UC^@K}m{CwM&g%GVzev>KfOGrSoIYhY+t-NSU49N8D)Oa;b#u(P4 zItOLJRt|e!Gy*vAD?5NOIJbG!YdPRVrMr*=Z`n7}kGY|&s)J7ubQAI}>pnmd<>Jn_ zEr~11NbKOeM)S27ZfNi0xsk&O7$P7D7<3Gm-}}A(gKlQ^qeSZF%TxZW19>#UyZuB% zH>a}tu7`B%C6Jpkp_09O`lsF>WOX6++0ZAVwOq{|kja@qyUGDQtpKcvtrP+6tv!%2 zvv|8lQb1y7F94i%4mL3b^&6SHNX#-owE^rnJy()6z}k19HqyEt z^1jxycX<9stip>(leSm%D_3i!xkQM)>3D}Tr*5ZIVGqYHGQ~V8=|bpm1(sI^&2yU$ zDZ)+cn3X<&;X^fKn5B!QP7zU}?L^9c5_$1u3x7)cWEWo>^G371A(4c*51elfvemA@ zXEV2+OzL%d=I};OTR-0xE2WcuNa0V>#Xfcly3GmGM?B`k%y?5C6#fzsKM;X*yMk5f z@D%jxT6`l2&mBN#!rqt9mMH%9@Wxi!h=u^a(~SqeW}9C=&_=%6D1EFtR`f-Y)Oz*f zQ0IB`D6oIS0-)+Y|0A5sKw;qyi^zQA4%Sw|Fp1Z-G?Ana&SwL;%Y;>9UHEMVAjtu%xJs38v40G|GJj(Su4Xu1qDoh;PB;S%)oiB+Kc+9b4AFOty(Sj&lZY1GrC-If9_$w zZg-WMJlE8AN?rW^%p+i8$n^0n?X1J!i`G7XaJoe`^gBZ}z1B`CETL8O^|};r8m3hx zwCp&*@}j?eY^5tglfKK1E}4wSehOkfC!cPvc~(KH?lu7{qTY<2mr>_P{CS!!?AS;l z<{9^8eqqgES9mRV*`>;^S7!-uE{$mt)I~5U^?w8l9wI0CeK&x78cYPBBH4qj8}Mv2 z+jjW5x8sou54>a3OP4ooBf*&Ms*pcRM_x@>#xefJAe+tZkzl?Hbclg(rkA5jXwIC28@@zgk12&qetS_f=FBCQC z`9@{|sJg|NP$K^Et#Bw)K;X-#$B9Lf!k`P^tdc-ss=37171?#O_-M-}YTmt zuPk+DGF*aKybI_x99NF@3h`pS9t@?gjnBYhq8O_NYGPVpAbl>gZ;V-K@ntH_GeEaF zqX!QFExV-(g;?xuF86$f0#;sQj|LhJW;7LCtn0e0z5jaADhxjJ#$cUsVM2W#{G1WW zgmW*c>*ot=Q=}fDQmdXT8LeXdg|U^uL56Ma2OrbB=bu(n>~dH^O$_Ks`wp%QZ+Z9j z-m7rhb**V>(*|s%kq>+lr1LZ$`7Uu#m3?dNb~bx?lH9t7IGEq{>lDA6VTci4@#`#W zx&C=?JjTSCfg4RNvg3Q%L3151$%@09VS^vA1a`hFD?a}s5;Z@;S7 z`0sbf7XkROcUckIQfV{dqn~~OSK#N8l9D@5jX*p4n#%h7C`r*& zrjVGP`1s`HLpB&HppunKRsJ)RgQ7%Mf8Lo%a_WS~i7Vwk}7vo)+jf zpH+mjh_7EO(b~*6xENS(22JyStti|+Be;rA`8Z^mr^!QW_LF53Qy~p^`;`)Sg76T_ z7CSHXG&lM&Glt`OPpT;!`m1$m`juY0VWv*`#O>#B=U5=P;Q+d9^7^&d05szrY7#Up zMn^V*C=*8hbyuK$ai@PPJ{_g>Pe|TOg3v>`mhv{2B#M3^?3=c>HjMhw9~G2*?v&9~ ziG%{yLCb<86OfNz^Ql_5&Fzw+1aTIW1uu>fFv{adBs>((A8YKK?a*Tpj@{VG6%GTK zrLDp|n}X3xs-)r+Lax>eu}B4R0bmgJkJUXQ$DKqiv?R+ap14*VYyZ6_^oWU{9I9FC zb+E`bGn^!p8g}K{yTyFq3jzFMdp=W($R&}uA8U30uDY@^6!##ht zUnc#i(hxUzGVH{x%99w_wtD=F4=0s|C*KEY+3K);2GTUvo&ER7r4RgZL+3488t*Zm zK5>ne1N}ifmi>Op5=A4>zq(ODvDQOU>0?-NKO)N2lkK%_b?++&qPpMRJ#+!gl8!D_ zr1d}{f4f^>^?Ebkbd~>eC)qSVkhjD%g>GdGo%=M093M~CNZL@g?Imu1Ia%u!xo)RZ zi9KJ4Rg9ElBrdeaj8@}wXN2{3oNS$t<4=FpjK&WYRujHB89M;TRO2F1iIra6P+|KT zb}W_m4B_rHxEaX4Ep0;`{eeb`0)Ifp2o(O>HJnKs4c+29@A9m5F2 zLK;1)++VQ>uXAR|37BM_18de3Rv429o}R4Xy~YxJ%;*5!r1o4OC_QHOeJQNW*Jnir zaE?;NVjQ~8|NP|&Q4&ub>WRNQMsb*dHG?u-8Vkl~(0?>-2u6P6s`iUz08eR3o;_-d z;s0&c8yC6jcDRs;S+W7`#JuEexc~$Jg%YX=?h3+VIWF+_T#ec_+2hd zknriGDO_mFCchH`?wEJ4HbQ4n`v6EKe&aILBBg(bW0tl^TQ357GOM;c0ILAdGgkqw(hFl372bp1hLE(PC}1V;R+-zz)HSHIxvo5l$Gh{4w{x%XP0VH~&Lr6W z7E33kbLVqv3XyWcH+3B*nZ#tlf`JqjLj+lGlIxDJ@Y`%dxNipmYxbE5g>e?X<20+V zzFM=eDGhO&D_&gQgOVbL>U4Wm*Qa}$#HL3E4K zOemoF2xB=@G^C)C{n9zy+dGSOnWz$05fx&_p+B7x9(D5@TgTE|-<;wtpkR6O6<6V~ zPz4Ee^37KP_r#NSYifboNFxPjssK?niAqPH(qp8i5Dude zBXk+naUYDyj>m4Ns8Hz?!FQb$1EK#QRZiIeimb56kb>sSEx-bn@W7oJLBM^*lA(hP zSzBmb_LlvV-LdSW``ZpdSOJeM0 zjbtaX@5b0lBTJ=1m}Fmvu@l1B6WOwqt&}At`%d4P zE2(W{DQTncFYWHM|J1; z#^Yf&^24_5i_=aVz1u%-jx-Dkq{90IKJe<4&Iv^9nU_0=9#t6yP&h;VtaA47xf+1zM6ib zg-;y7LDcQXl0?7nZN>Wn+R;M3Ye&!71b&PeS?k)+UKkaXvsjLF;?&Z!&dZZrBMVCt zC<&+3aCCH>9!qyh+qlSbKk!}+{Apk-E{f=J4A~Cip`VKkP}J{Vk@F)+!0}}i)|s;F z>hl29pP04LSk@-?i-`ej90?|!`+pa@VHo9UOYNg+`A5r{0&|w<`P}0wA#mqpG?|=4NO%J=BCj)=y@Q zaE(E^;DGPts{bYew(B$jPeBH*)bdlE zQ=oH!sD&(u(Pb`EHlNeU{IE6mS$^}JUX$O^dNGuv94nK%o*VmbFYAf}!MQW1v)k5y z;XY-C>${@3@YeQka*rPgg-8RdJq}cE$BI#4d5wA1zPl*(P{o6xr&DL#iEFQBk6X&; z17WV75YU(#GTAX4&O3ZwgG^OXok0OV^_Ct0MxdZgZ%fPA%O>2Xd1jEh#L&=Ty{@}s z?<(6{A<`aKXargdekus6-3y%jtL!>c5<8vb8|Tl*JdRc9UZ(aYDAz9KGgh73Z=HW} zGM%V7y9HT+nK%?;C(Z31$@wR;?oj^ODn6;@F8}>e6j~2_G}sFmqFK^BW!9~Xu2q`f zlFXzu#!LXxk6sI?T+3jm&A567JV;FX=f_w4lkRpCHyb$&qoBuA9rf~YDaYr`B+Vy4 z9O5ng+wv_$K4+=q3ILSdi#`g=$pJGR{XFcU#Z1%J-f>C#-|Onze0T`q-??<8(~0YW zL||WC1T9newEQm9l@_}ETDPpH@F$cWQM-$wC3$3Zf;8yj^EDfko4^i>7OC!y0>WT5I@Qb6}D>dIDOJowfO5ZGWDaw)U@9)Ez;)w&|mog0odqda z<`?xm%VSh)#xtG^n5L8wVsTLva0Z)@EVotxaySFi*vrUxT%n(e_-_rYyE7MLefg_* zLAiG- zo-W7%K5V;gp>HX@2D4RWd;21@l36U)jN{-%#Yz5+03fa=N2XkW?3vGA zk|g#5aokA?-jYtl3X^+M?K|Lnri=w2w+#vUf$&NBFDeFQQA3PfKl_J590iL$1S*93 z@Pn&}9?}tWQ4dQuZ*H#QkR%EPl)L&i(xcb=20u?mXfKV+4YWJ2aJt7xR4Zbs3t{x{ zz~l>nBKeU02gzBEJQKPO4PO$4cn7>*&NENIR%SWx zt50{$A`8XL`7)lxG!yp=w?mjCX&%D$XIo2h^>yB6q`T9CVx*p?DH=&TTj~7x(eRyM zGwyVs9?tO1en8nrfa)?8@?kZonFMeQ`tis8Z!C;C{rVAcSKQ^yJl?)~gj>}%Um|N~V$OvFzkF9FQOQ^;^qf9fS!5(rmbB2?4QU_IMic`?Y?XI0pB@(xQC1YHc^r2;Fw@osB;pI=bQrz7rLhR$wTPqi(*c zx;2ZS=@N@wq{KW8KX$m*KWu|LMBJebCzoTw4xuY(Pd=9(^psL7Y9F7^xN%=z(d(zl z-_xn?>zPY)?8=XpU)+mLzD9kgjzZ6fDCd|+(X5GjC$kWt^#_7xdGs4Klky$mXOyPH z-i<}FysA;G_~j?=sdmG6VGL!Xmk*3}(QF8X)>vJ^*1qX9Q-n&OM`W5f_tf;{!Fa^k zRQyW)>aSN595l%K+j(yFPJ^i5uS;pQIGxn2+bPwicvLtf7@;HDnB}jN-qu9lc6uvx zBqb6#&}W<(b-F5L{ZOI#Pe&8UVy2FNrkngu`#zfgeZr=~WtQCrh&i_Q(+|4hYwS9J zLU)R|$OUX{$!R9sBje*K)MQ4&hi$jXp(5Wvs+^N)TDx1lioy&`q|ageDRU>V0i96=r767Q!*vEDfT+bM_6ZO*t0q#_vh{_*TSL_*S;>Az{sb-anoOv(qq*)mEKB{XH=`4X(ew|1(ij2&gWL zhZxu6jaFy6K7$pSj29c`rorfu4(2cuZW@&O-3YDsR*MRvuk3rJ95FL9Gqd9$1gx?k zkUnsK3-Wb_?M1n2GtB#Uq-E&Ti?UP8+|P5cY^qbig~mI@?>7W$XUH0(g4N$fVs?&l zG2{j`@Y+N{0sJ0$VuXq0!qzqH)@D(bSdpV^L-QbLi6{|+B7=ktqIOvn@VU7_kb4Nj zpVa1Z)M14;)R!&@L5-)3k@GO~n=>Q5yi(VSXe---bkljvBb;@8KdZLF2wx1FMYTey z9a0h_G>&5nDoitCIE`y(q@ua^LI$DOg=97h44>rqj(NIH4QCQ_EC+}-dd+u{lw|#k zlO_au@9Y$m2Wj@s#_bv4@-(cqgg);_7`tVm9rwCqn&{be63uSa;>M^Y^1g?H_^|6a z&W?^y_A)~kGWyECZUdeAwZ+jpPf(%@2lbU_m#O+r^kcH*;4U&raf|jxTL+i(azajT zy6Hk8WCz8kMuof{xluV3&xd6~X_Wu9*;IV{Y$?02i1r zYDU$@Ex;=+EImqP)qbyX5gL;=DlYorXh|m)l2uYx<~{W`IA(E#uCs&S^o!4(hRZ*! z&VgF5L|rC}a?MA0v$L;Bvz!ky%1D{Q3MZBBKVGzG<6YeJi&A{YHzv8hv~+LwaQkMMpd* z22tlZ>~LJk9nEQ6*(H*zkkM)+h@a42S|(5h%LQ=7G(QLx(GPBE@-6)vKPlhnwU|b{ zxPv~madFFHlkzbIqpkAT7G*#)VIOm%;pSZnVZ3*#&qkOb8F~6l$SA8U=KKtQ-Rhie zzqf)icwU6o`-;4~Kg_KATKF$whEos)he`YOmAv;4xKXL^XpP70BcMhp;iS*=3%x6=ZbND)^pGFv+LB4pZ9?@t+vo}8RSmEN|k|a>DMpX7=KY38Wg*!6x9{I-?X^> zSK^Ayyj0s2p}C{_aHz>~FMtiM!Z@l?6~GJxgyg|>#!V?>F$Bxp4i}|H|LdGlq8|!n)`2@p#YhH9+&1T zrLcmPykxeQ#oRyg zQ{zvpZ#n!{p`h!nLYzsm!0?-LkCx0}?JT*zJ0(Xq|FkR^)b*(zvpoMvQZNl?V+KfD}_ zON{MQu)f4YOgw99*-%mrEd=WUDiO!EN#wai)!?%LiHx?&_&{0$qMGpV>$4g_W)PnX zM)v)Ht6)VJ-~3%qOTgrum$&-UX7bBLnE3DXyf>pi|ACH)m<18-wO|@*iI!X8Azcr_ zl);~^cW>#l=mtxc8Si%c5=+%DGn568j|r8O{=0qY5*GE7WijH2H}^i>KMKnIOI(&Wv0x|=FixK_@{fs2>i5vkbTXPMVs|IxT`yF1zi-fmbOd)p$ z0+2}L^iu9%k@5Rl@B{Qu954ZJLFyDEFi8`>oo>&?_qHoy%DGps&k)PXRakoBt%55? zHv07C@cuV)Wu0HteQv^Rh3VT>QZ6h`O3>v_&i0aO;8V$St93A-5a-u6Hf9G#RLPjm z4Q+Q%^zFErSph&gQ0Z7E^h1rS4i+U!5BuX^5jMZd!%tl6tFOrY9t%loJw4oB2+A(K zA(L?o^;Et%?A4V_%Gi;MgAJ8DiOG)4BXC?u`gWDJGd^5^4EDp(!C?k~l_zHZSqeI; zgBQ<_c^#C*2%QVkO^l%_VsdPm>O z;~AThgX}szRg4F&160%Mvv)-LR;)nhKhwFOHR(?>%)W13RqwXj>>D@q{flIV!KLdz z^A?ZhTf$UQFdqt^5p<)eF^@|94_D8{=;kiU_Y7srI)%mYwPHuCMg6$L2N^AN&XjXB ziNO}&eRt>0OKuq#nP}dq8-0D5@{tIcjNm{;>z#4NB3bu1^s0&kPCcHPYVt!g<6LGA9t>0Q2+n{ diff --git a/docs/static/img/splitting.png b/docs/static/img/splitting.png deleted file mode 100644 index 19c15a313569e73f6a52ed80a3fe78be49afcee4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11673 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 - Easy to Use - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/static/img/undraw_docusaurus_react.svg b/docs/static/img/undraw_docusaurus_react.svg deleted file mode 100644 index 94b5cf08..00000000 --- a/docs/static/img/undraw_docusaurus_react.svg +++ /dev/null @@ -1,170 +0,0 @@ - - Powered by React - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/static/img/undraw_docusaurus_tree.svg b/docs/static/img/undraw_docusaurus_tree.svg deleted file mode 100644 index d9161d33..00000000 --- a/docs/static/img/undraw_docusaurus_tree.svg +++ /dev/null @@ -1,40 +0,0 @@ - - Focus on What Matters - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/docs/static/pdf/hypercerts_Tech_Report_draft.pdf b/docs/static/pdf/hypercerts_Tech_Report_draft.pdf deleted file mode 100644 index 3f5f6fc349c17e4841c3ab835e16221c32004dfd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 209344 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 diff --git a/docs/static/pdf/hypercerts_slides_FtC202203.pdf b/docs/static/pdf/hypercerts_slides_FtC202203.pdf deleted file mode 100644 index 0ea059ce0f1a5e1a50aeda026e32e5070675fbd4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 599063 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 z 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 foE-dFuY?hp9C3kKGI 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%0AE?bUkRuxH6^@h}|oppX9Sxb`+sY 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∋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