pay-lobster 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -371
- package/dist/agent.d.ts +19 -11
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +282 -50
- package/dist/agent.js.map +1 -1
- package/dist/contracts.d.ts +19 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +58 -0
- package/dist/contracts.js.map +1 -0
- package/lib/agent.ts +313 -50
- package/lib/contracts.ts +58 -0
- package/lib/forge-std/.gitattributes +1 -0
- package/lib/forge-std/.github/CODEOWNERS +1 -0
- package/lib/forge-std/.github/dependabot.yml +6 -0
- package/lib/forge-std/.github/workflows/ci.yml +125 -0
- package/lib/forge-std/.github/workflows/sync.yml +36 -0
- package/lib/forge-std/CONTRIBUTING.md +193 -0
- package/lib/forge-std/LICENSE-APACHE +203 -0
- package/lib/forge-std/LICENSE-MIT +25 -0
- package/lib/forge-std/README.md +268 -0
- package/lib/forge-std/RELEASE_CHECKLIST.md +12 -0
- package/lib/forge-std/foundry.toml +18 -0
- package/lib/forge-std/package.json +16 -0
- package/lib/forge-std/scripts/vm.py +636 -0
- package/lib/forge-std/src/Base.sol +48 -0
- package/lib/forge-std/src/Config.sol +60 -0
- package/lib/forge-std/src/LibVariable.sol +477 -0
- package/lib/forge-std/src/Script.sol +28 -0
- package/lib/forge-std/src/StdAssertions.sol +779 -0
- package/lib/forge-std/src/StdChains.sol +303 -0
- package/lib/forge-std/src/StdCheats.sol +825 -0
- package/lib/forge-std/src/StdConfig.sol +632 -0
- package/lib/forge-std/src/StdConstants.sol +30 -0
- package/lib/forge-std/src/StdError.sol +15 -0
- package/lib/forge-std/src/StdInvariant.sol +120 -0
- package/lib/forge-std/src/StdJson.sol +275 -0
- package/lib/forge-std/src/StdMath.sol +47 -0
- package/lib/forge-std/src/StdStorage.sol +475 -0
- package/lib/forge-std/src/StdStyle.sol +333 -0
- package/lib/forge-std/src/StdToml.sol +275 -0
- package/lib/forge-std/src/StdUtils.sol +200 -0
- package/lib/forge-std/src/Test.sol +32 -0
- package/lib/forge-std/src/Vm.sol +2503 -0
- package/lib/forge-std/src/console.sol +1551 -0
- package/lib/forge-std/src/console2.sol +4 -0
- package/lib/forge-std/src/interfaces/IERC1155.sol +105 -0
- package/lib/forge-std/src/interfaces/IERC165.sol +12 -0
- package/lib/forge-std/src/interfaces/IERC20.sol +43 -0
- package/lib/forge-std/src/interfaces/IERC4626.sol +190 -0
- package/lib/forge-std/src/interfaces/IERC6909.sol +72 -0
- package/lib/forge-std/src/interfaces/IERC721.sol +164 -0
- package/lib/forge-std/src/interfaces/IERC7540.sol +144 -0
- package/lib/forge-std/src/interfaces/IERC7575.sol +241 -0
- package/lib/forge-std/src/interfaces/IMulticall3.sol +68 -0
- package/lib/forge-std/src/safeconsole.sol +13248 -0
- package/lib/forge-std/test/CommonBase.t.sol +44 -0
- package/lib/forge-std/test/Config.t.sol +381 -0
- package/lib/forge-std/test/LibVariable.t.sol +452 -0
- package/lib/forge-std/test/StdAssertions.t.sol +141 -0
- package/lib/forge-std/test/StdChains.t.sol +227 -0
- package/lib/forge-std/test/StdCheats.t.sol +638 -0
- package/lib/forge-std/test/StdConstants.t.sol +38 -0
- package/lib/forge-std/test/StdError.t.sol +119 -0
- package/lib/forge-std/test/StdJson.t.sol +49 -0
- package/lib/forge-std/test/StdMath.t.sol +202 -0
- package/lib/forge-std/test/StdStorage.t.sol +485 -0
- package/lib/forge-std/test/StdStyle.t.sol +110 -0
- package/lib/forge-std/test/StdToml.t.sol +49 -0
- package/lib/forge-std/test/StdUtils.t.sol +342 -0
- package/lib/forge-std/test/Vm.t.sol +18 -0
- package/lib/forge-std/test/compilation/CompilationScript.sol +8 -0
- package/lib/forge-std/test/compilation/CompilationScriptBase.sol +8 -0
- package/lib/forge-std/test/compilation/CompilationTest.sol +8 -0
- package/lib/forge-std/test/compilation/CompilationTestBase.sol +8 -0
- package/lib/forge-std/test/fixtures/broadcast.log.json +187 -0
- package/lib/forge-std/test/fixtures/config.toml +81 -0
- package/lib/forge-std/test/fixtures/test.json +8 -0
- package/lib/forge-std/test/fixtures/test.toml +6 -0
- package/lib/openzeppelin-contracts/.changeset/config.json +12 -0
- package/lib/openzeppelin-contracts/.codecov.yml +12 -0
- package/lib/openzeppelin-contracts/.editorconfig +21 -0
- package/lib/openzeppelin-contracts/.eslintrc +20 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/bug_report.md +21 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/config.yml +4 -0
- package/lib/openzeppelin-contracts/.github/ISSUE_TEMPLATE/feature_request.md +14 -0
- package/lib/openzeppelin-contracts/.github/PULL_REQUEST_TEMPLATE.md +20 -0
- package/lib/openzeppelin-contracts/.github/actions/gas-compare/action.yml +49 -0
- package/lib/openzeppelin-contracts/.github/actions/setup/action.yml +21 -0
- package/lib/openzeppelin-contracts/.github/actions/storage-layout/action.yml +55 -0
- package/lib/openzeppelin-contracts/.github/workflows/actionlint.yml +18 -0
- package/lib/openzeppelin-contracts/.github/workflows/changeset.yml +28 -0
- package/lib/openzeppelin-contracts/.github/workflows/checks.yml +118 -0
- package/lib/openzeppelin-contracts/.github/workflows/docs.yml +19 -0
- package/lib/openzeppelin-contracts/.github/workflows/formal-verification.yml +68 -0
- package/lib/openzeppelin-contracts/.github/workflows/release-cycle.yml +214 -0
- package/lib/openzeppelin-contracts/.github/workflows/upgradeable.yml +34 -0
- package/lib/openzeppelin-contracts/.gitmodules +7 -0
- package/lib/openzeppelin-contracts/.mocharc.js +4 -0
- package/lib/openzeppelin-contracts/.prettierrc +15 -0
- package/lib/openzeppelin-contracts/.solcover.js +13 -0
- package/lib/openzeppelin-contracts/CHANGELOG.md +972 -0
- package/lib/openzeppelin-contracts/CODE_OF_CONDUCT.md +73 -0
- package/lib/openzeppelin-contracts/CONTRIBUTING.md +36 -0
- package/lib/openzeppelin-contracts/GUIDELINES.md +148 -0
- package/lib/openzeppelin-contracts/LICENSE +22 -0
- package/lib/openzeppelin-contracts/README.md +107 -0
- package/lib/openzeppelin-contracts/RELEASING.md +45 -0
- package/lib/openzeppelin-contracts/SECURITY.md +42 -0
- package/lib/openzeppelin-contracts/audits/2017-03.md +292 -0
- package/lib/openzeppelin-contracts/audits/2018-10.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2022-10-Checkpoints.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2022-10-ERC4626.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2023-05-v4.9.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/2023-10-v5.0.pdf +0 -0
- package/lib/openzeppelin-contracts/audits/README.md +17 -0
- package/lib/openzeppelin-contracts/certora/Makefile +54 -0
- package/lib/openzeppelin-contracts/certora/README.md +60 -0
- package/lib/openzeppelin-contracts/certora/diff/access_manager_AccessManager.sol.patch +97 -0
- package/lib/openzeppelin-contracts/certora/harnesses/AccessControlDefaultAdminRulesHarness.sol +46 -0
- package/lib/openzeppelin-contracts/certora/harnesses/AccessControlHarness.sol +6 -0
- package/lib/openzeppelin-contracts/certora/harnesses/DoubleEndedQueueHarness.sol +58 -0
- package/lib/openzeppelin-contracts/certora/harnesses/ERC20FlashMintHarness.sol +36 -0
- package/lib/openzeppelin-contracts/certora/harnesses/ERC20PermitHarness.sol +16 -0
- package/lib/openzeppelin-contracts/certora/harnesses/ERC20WrapperHarness.sol +34 -0
- package/lib/openzeppelin-contracts/certora/harnesses/ERC3156FlashBorrowerHarness.sol +13 -0
- package/lib/openzeppelin-contracts/certora/harnesses/ERC721Harness.sol +33 -0
- package/lib/openzeppelin-contracts/certora/harnesses/ERC721ReceiverHarness.sol +11 -0
- package/lib/openzeppelin-contracts/certora/harnesses/EnumerableMapHarness.sol +55 -0
- package/lib/openzeppelin-contracts/certora/harnesses/EnumerableSetHarness.sol +35 -0
- package/lib/openzeppelin-contracts/certora/harnesses/InitializableHarness.sol +23 -0
- package/lib/openzeppelin-contracts/certora/harnesses/Ownable2StepHarness.sol +10 -0
- package/lib/openzeppelin-contracts/certora/harnesses/OwnableHarness.sol +10 -0
- package/lib/openzeppelin-contracts/certora/harnesses/PausableHarness.sol +18 -0
- package/lib/openzeppelin-contracts/certora/harnesses/TimelockControllerHarness.sol +13 -0
- package/lib/openzeppelin-contracts/certora/reports/2021-10.pdf +0 -0
- package/lib/openzeppelin-contracts/certora/reports/2022-03.pdf +0 -0
- package/lib/openzeppelin-contracts/certora/reports/2022-05.pdf +0 -0
- package/lib/openzeppelin-contracts/certora/run.js +160 -0
- package/lib/openzeppelin-contracts/certora/specs/AccessControl.spec +119 -0
- package/lib/openzeppelin-contracts/certora/specs/AccessControlDefaultAdminRules.spec +464 -0
- package/lib/openzeppelin-contracts/certora/specs/DoubleEndedQueue.spec +300 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC20.spec +352 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC20FlashMint.spec +55 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC20Wrapper.spec +198 -0
- package/lib/openzeppelin-contracts/certora/specs/ERC721.spec +679 -0
- package/lib/openzeppelin-contracts/certora/specs/EnumerableMap.spec +333 -0
- package/lib/openzeppelin-contracts/certora/specs/EnumerableSet.spec +246 -0
- package/lib/openzeppelin-contracts/certora/specs/Initializable.spec +165 -0
- package/lib/openzeppelin-contracts/certora/specs/Ownable.spec +77 -0
- package/lib/openzeppelin-contracts/certora/specs/Ownable2Step.spec +108 -0
- package/lib/openzeppelin-contracts/certora/specs/Pausable.spec +96 -0
- package/lib/openzeppelin-contracts/certora/specs/TimelockController.spec +274 -0
- package/lib/openzeppelin-contracts/certora/specs/helpers/helpers.spec +7 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IAccessControl.spec +8 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IAccessControlDefaultAdminRules.spec +36 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC20.spec +11 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC2612.spec +5 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashBorrower.spec +3 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC3156FlashLender.spec +5 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC5313.spec +3 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC721.spec +17 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IERC721Receiver.spec +3 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IOwnable.spec +5 -0
- package/lib/openzeppelin-contracts/certora/specs/methods/IOwnable2Step.spec +7 -0
- package/lib/openzeppelin-contracts/certora/specs.json +86 -0
- package/lib/openzeppelin-contracts/contracts/access/AccessControl.sol +209 -0
- package/lib/openzeppelin-contracts/contracts/access/IAccessControl.sol +98 -0
- package/lib/openzeppelin-contracts/contracts/access/Ownable.sol +100 -0
- package/lib/openzeppelin-contracts/contracts/access/Ownable2Step.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/access/README.adoc +43 -0
- package/lib/openzeppelin-contracts/contracts/access/extensions/AccessControlDefaultAdminRules.sol +396 -0
- package/lib/openzeppelin-contracts/contracts/access/extensions/AccessControlEnumerable.sol +70 -0
- package/lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlDefaultAdminRules.sol +192 -0
- package/lib/openzeppelin-contracts/contracts/access/extensions/IAccessControlEnumerable.sol +31 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/AccessManaged.sol +113 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/AccessManager.sol +730 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/AuthorityUtils.sol +32 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/IAccessManaged.sol +32 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/IAccessManager.sol +392 -0
- package/lib/openzeppelin-contracts/contracts/access/manager/IAuthority.sol +14 -0
- package/lib/openzeppelin-contracts/contracts/finance/README.adoc +14 -0
- package/lib/openzeppelin-contracts/contracts/finance/VestingWallet.sol +154 -0
- package/lib/openzeppelin-contracts/contracts/governance/Governor.sol +850 -0
- package/lib/openzeppelin-contracts/contracts/governance/IGovernor.sol +427 -0
- package/lib/openzeppelin-contracts/contracts/governance/README.adoc +167 -0
- package/lib/openzeppelin-contracts/contracts/governance/TimelockController.sol +472 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorCountingSimple.sol +100 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorPreventLateQuorum.sol +102 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorSettings.sol +112 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorStorage.sol +115 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockAccess.sol +346 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockCompound.sol +167 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorTimelockControl.sol +173 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotes.sol +64 -0
- package/lib/openzeppelin-contracts/contracts/governance/extensions/GovernorVotesQuorumFraction.sol +110 -0
- package/lib/openzeppelin-contracts/contracts/governance/utils/IVotes.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/governance/utils/Votes.sol +251 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1155.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1155MetadataURI.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1155Receiver.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1271.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1363.sol +80 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Receiver.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1363Spender.sol +29 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC165.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Implementer.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1820Registry.sol +112 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC1967.sol +24 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC20.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC20Metadata.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC2309.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC2612.sol +8 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC2981.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC3156.sol +7 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashBorrower.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC3156FlashLender.sol +41 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC4626.sol +230 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC4906.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC5267.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC5313.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC5805.sol +9 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC6372.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC721.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC721Enumerable.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC721Metadata.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC721Receiver.sol +6 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC777.sol +200 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC777Recipient.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/IERC777Sender.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/README.adoc +82 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC1822.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/interfaces/draft-IERC6093.sol +161 -0
- package/lib/openzeppelin-contracts/contracts/metatx/ERC2771Context.sol +75 -0
- package/lib/openzeppelin-contracts/contracts/metatx/ERC2771Forwarder.sol +370 -0
- package/lib/openzeppelin-contracts/contracts/metatx/README.adoc +12 -0
- package/lib/openzeppelin-contracts/contracts/mocks/AccessManagedTarget.sol +34 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ArraysMock.sol +51 -0
- package/lib/openzeppelin-contracts/contracts/mocks/AuthorityMock.sol +69 -0
- package/lib/openzeppelin-contracts/contracts/mocks/CallReceiverMock.sol +73 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ContextMock.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/mocks/DummyImplementation.sol +65 -0
- package/lib/openzeppelin-contracts/contracts/mocks/EIP712Verifier.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC1271WalletMock.sol +24 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165InterfacesSupported.sol +58 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MaliciousData.sol +12 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165MissingData.sol +7 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165NotSupported.sol +5 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC165/ERC165ReturnBomb.sol +18 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC2771ContextMock.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ERC3156FlashBorrowerMock.sol +53 -0
- package/lib/openzeppelin-contracts/contracts/mocks/EtherReceiverMock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/InitializableMock.sol +130 -0
- package/lib/openzeppelin-contracts/contracts/mocks/MulticallTest.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/mocks/MultipleInheritanceInitializableMocks.sol +131 -0
- package/lib/openzeppelin-contracts/contracts/mocks/PausableMock.sol +31 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ReentrancyAttack.sol +12 -0
- package/lib/openzeppelin-contracts/contracts/mocks/ReentrancyMock.sol +50 -0
- package/lib/openzeppelin-contracts/contracts/mocks/RegressionImplementation.sol +61 -0
- package/lib/openzeppelin-contracts/contracts/mocks/SingleInheritanceInitializableMocks.sol +49 -0
- package/lib/openzeppelin-contracts/contracts/mocks/Stateless.sol +36 -0
- package/lib/openzeppelin-contracts/contracts/mocks/StorageSlotMock.sol +77 -0
- package/lib/openzeppelin-contracts/contracts/mocks/TimelockReentrant.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/mocks/UpgradeableBeaconMock.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/mocks/VotesMock.sol +42 -0
- package/lib/openzeppelin-contracts/contracts/mocks/compound/CompTimelock.sol +174 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/ERC20WithAutoMinerReward.sol +22 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/ERC4626Fees.sol +103 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/MyContractOwnable.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyGovernor.sol +81 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyToken.sol +21 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenTimestampBased.sol +32 -0
- package/lib/openzeppelin-contracts/contracts/mocks/docs/governance/MyTokenWrapped.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorMock.sol +14 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorPreventLateQuorumMock.sol +46 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorStorageMock.sol +79 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockAccessMock.sol +70 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockCompoundMock.sol +69 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorTimelockControlMock.sol +69 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorVoteMock.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/mocks/governance/GovernorWithParamsMock.sol +51 -0
- package/lib/openzeppelin-contracts/contracts/mocks/proxy/BadBeacon.sol +11 -0
- package/lib/openzeppelin-contracts/contracts/mocks/proxy/ClashingImplementation.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/mocks/proxy/UUPSUpgradeableMock.sol +35 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC1155ReceiverMock.sol +74 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ApprovalMock.sol +10 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20DecimalsMock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ExcessDecimalsMock.sol +9 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20FlashMintMock.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ForceApproveMock.sol +13 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20Mock.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20MulticallMock.sol +8 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20NoReturnMock.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20Reentrant.sol +39 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20ReturnFalseMock.sol +19 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC20VotesLegacyMock.sol +253 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626LimitsMock.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626Mock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4626OffsetMock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC4646FeesMock.sol +40 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveEnumerableMock.sol +42 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ConsecutiveMock.sol +61 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721ReceiverMock.sol +47 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/ERC721URIStorageMock.sol +17 -0
- package/lib/openzeppelin-contracts/contracts/mocks/token/VotesTimestamp.sol +29 -0
- package/lib/openzeppelin-contracts/contracts/package.json +32 -0
- package/lib/openzeppelin-contracts/contracts/proxy/Clones.sol +95 -0
- package/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Proxy.sol +40 -0
- package/lib/openzeppelin-contracts/contracts/proxy/ERC1967/ERC1967Utils.sol +193 -0
- package/lib/openzeppelin-contracts/contracts/proxy/Proxy.sol +69 -0
- package/lib/openzeppelin-contracts/contracts/proxy/README.adoc +87 -0
- package/lib/openzeppelin-contracts/contracts/proxy/beacon/BeaconProxy.sol +57 -0
- package/lib/openzeppelin-contracts/contracts/proxy/beacon/IBeacon.sol +16 -0
- package/lib/openzeppelin-contracts/contracts/proxy/beacon/UpgradeableBeacon.sol +70 -0
- package/lib/openzeppelin-contracts/contracts/proxy/transparent/ProxyAdmin.sol +45 -0
- package/lib/openzeppelin-contracts/contracts/proxy/transparent/TransparentUpgradeableProxy.sol +116 -0
- package/lib/openzeppelin-contracts/contracts/proxy/utils/Initializable.sol +228 -0
- package/lib/openzeppelin-contracts/contracts/proxy/utils/UUPSUpgradeable.sol +147 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/ERC1155.sol +468 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155.sol +128 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/IERC1155Receiver.sol +59 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/README.adoc +41 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Burnable.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Pausable.sol +38 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155Supply.sol +87 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/ERC1155URIStorage.sol +61 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/extensions/IERC1155MetadataURI.sol +20 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC1155/utils/ERC1155Holder.sol +42 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/ERC20.sol +316 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/IERC20.sol +79 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/README.adoc +67 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Burnable.sol +39 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Capped.sol +56 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20FlashMint.sol +134 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Pausable.sol +33 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Permit.sol +83 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Votes.sol +83 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC20Wrapper.sol +86 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/ERC4626.sol +286 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Metadata.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/extensions/IERC20Permit.sol +90 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC20/utils/SafeERC20.sol +118 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/ERC721.sol +483 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721.sol +135 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/IERC721Receiver.sol +28 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/README.adoc +67 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Burnable.sol +26 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Consecutive.sol +176 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Enumerable.sol +172 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Pausable.sol +37 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Royalty.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721URIStorage.sol +61 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Votes.sol +47 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/ERC721Wrapper.sol +102 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Enumerable.sol +29 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/extensions/IERC721Metadata.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/token/ERC721/utils/ERC721Holder.sol +24 -0
- package/lib/openzeppelin-contracts/contracts/token/common/ERC2981.sol +137 -0
- package/lib/openzeppelin-contracts/contracts/token/common/README.adoc +10 -0
- package/lib/openzeppelin-contracts/contracts/utils/Address.sol +159 -0
- package/lib/openzeppelin-contracts/contracts/utils/Arrays.sol +127 -0
- package/lib/openzeppelin-contracts/contracts/utils/Base64.sol +90 -0
- package/lib/openzeppelin-contracts/contracts/utils/Context.sol +24 -0
- package/lib/openzeppelin-contracts/contracts/utils/Create2.sol +96 -0
- package/lib/openzeppelin-contracts/contracts/utils/Multicall.sol +23 -0
- package/lib/openzeppelin-contracts/contracts/utils/Nonces.sol +46 -0
- package/lib/openzeppelin-contracts/contracts/utils/Pausable.sol +119 -0
- package/lib/openzeppelin-contracts/contracts/utils/README.adoc +88 -0
- package/lib/openzeppelin-contracts/contracts/utils/ReentrancyGuard.sol +84 -0
- package/lib/openzeppelin-contracts/contracts/utils/ShortStrings.sol +123 -0
- package/lib/openzeppelin-contracts/contracts/utils/StorageSlot.sol +135 -0
- package/lib/openzeppelin-contracts/contracts/utils/Strings.sol +94 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/ECDSA.sol +174 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/EIP712.sol +160 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/MerkleProof.sol +232 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/MessageHashUtils.sol +86 -0
- package/lib/openzeppelin-contracts/contracts/utils/cryptography/SignatureChecker.sol +48 -0
- package/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165.sol +27 -0
- package/lib/openzeppelin-contracts/contracts/utils/introspection/ERC165Checker.sol +124 -0
- package/lib/openzeppelin-contracts/contracts/utils/introspection/IERC165.sol +25 -0
- package/lib/openzeppelin-contracts/contracts/utils/math/Math.sol +415 -0
- package/lib/openzeppelin-contracts/contracts/utils/math/SafeCast.sol +1153 -0
- package/lib/openzeppelin-contracts/contracts/utils/math/SignedMath.sol +43 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/BitMaps.sol +60 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/Checkpoints.sol +603 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/DoubleEndedQueue.sol +169 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableMap.sol +533 -0
- package/lib/openzeppelin-contracts/contracts/utils/structs/EnumerableSet.sol +378 -0
- package/lib/openzeppelin-contracts/contracts/utils/types/Time.sol +130 -0
- package/lib/openzeppelin-contracts/contracts/vendor/compound/ICompoundTimelock.sol +86 -0
- package/lib/openzeppelin-contracts/contracts/vendor/compound/LICENSE +11 -0
- package/lib/openzeppelin-contracts/docs/README.md +16 -0
- package/lib/openzeppelin-contracts/docs/antora.yml +7 -0
- package/lib/openzeppelin-contracts/docs/config.js +21 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3a.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-3b.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack-6.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-attack.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-deposit.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-mint.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-linear.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglog.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/erc4626-rate-loglogext.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-exec.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/images/tally-vote.png +0 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/nav.adoc +23 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/access-control.adoc +204 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/backwards-compatibility.adoc +48 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/crowdsales.adoc +11 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/drafts.adoc +19 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc1155.adoc +145 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20-supply.adoc +71 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc20.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc4626.adoc +214 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/erc721.adoc +79 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/extending-contracts.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/faq.adoc +13 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/governance.adoc +240 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/index.adoc +79 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/tokens.adoc +31 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/upgradeable.adoc +77 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/utilities.adoc +185 -0
- package/lib/openzeppelin-contracts/docs/modules/ROOT/pages/wizard.adoc +15 -0
- package/lib/openzeppelin-contracts/docs/templates/contract.hbs +111 -0
- package/lib/openzeppelin-contracts/docs/templates/helpers.js +46 -0
- package/lib/openzeppelin-contracts/docs/templates/page.hbs +4 -0
- package/lib/openzeppelin-contracts/docs/templates/properties.js +64 -0
- package/lib/openzeppelin-contracts/foundry.toml +10 -0
- package/lib/openzeppelin-contracts/hardhat/env-artifacts.js +24 -0
- package/lib/openzeppelin-contracts/hardhat/env-contract.js +25 -0
- package/lib/openzeppelin-contracts/hardhat/ignore-unreachable-warnings.js +45 -0
- package/lib/openzeppelin-contracts/hardhat/skip-foundry-tests.js +6 -0
- package/lib/openzeppelin-contracts/hardhat/task-test-get-files.js +25 -0
- package/lib/openzeppelin-contracts/hardhat.config.js +131 -0
- package/lib/openzeppelin-contracts/lib/erc4626-tests/ERC4626.prop.sol +404 -0
- package/lib/openzeppelin-contracts/lib/erc4626-tests/ERC4626.test.sol +349 -0
- package/lib/openzeppelin-contracts/lib/erc4626-tests/LICENSE +661 -0
- package/lib/openzeppelin-contracts/lib/erc4626-tests/README.md +116 -0
- package/lib/openzeppelin-contracts/lib/forge-std/.github/workflows/ci.yml +92 -0
- package/lib/openzeppelin-contracts/lib/forge-std/.gitmodules +3 -0
- package/lib/openzeppelin-contracts/lib/forge-std/LICENSE-APACHE +203 -0
- package/lib/openzeppelin-contracts/lib/forge-std/LICENSE-MIT +25 -0
- package/lib/openzeppelin-contracts/lib/forge-std/README.md +250 -0
- package/lib/openzeppelin-contracts/lib/forge-std/foundry.toml +21 -0
- package/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/LICENSE +674 -0
- package/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/Makefile +14 -0
- package/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/default.nix +4 -0
- package/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/demo/demo.sol +222 -0
- package/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/package.json +15 -0
- package/lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/test.sol +469 -0
- package/lib/openzeppelin-contracts/lib/forge-std/package.json +16 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/Base.sol +31 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/Script.sol +26 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/StdAssertions.sol +209 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/StdChains.sol +189 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/StdCheats.sol +565 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/StdError.sol +15 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/StdJson.sol +179 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/StdMath.sol +43 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/StdStorage.sol +327 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/StdUtils.sol +123 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/Test.sol +28 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/Vm.sol +385 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/console.sol +1533 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/console2.sol +1546 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC1155.sol +105 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC165.sol +12 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC20.sol +43 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC4626.sol +190 -0
- package/lib/openzeppelin-contracts/lib/forge-std/src/interfaces/IERC721.sol +164 -0
- package/lib/openzeppelin-contracts/lib/forge-std/test/StdAssertions.t.sol +587 -0
- package/lib/openzeppelin-contracts/lib/forge-std/test/StdChains.t.sol +123 -0
- package/lib/openzeppelin-contracts/lib/forge-std/test/StdCheats.t.sol +305 -0
- package/lib/openzeppelin-contracts/lib/forge-std/test/StdError.t.sol +118 -0
- package/lib/openzeppelin-contracts/lib/forge-std/test/StdMath.t.sol +197 -0
- package/lib/openzeppelin-contracts/lib/forge-std/test/StdStorage.t.sol +283 -0
- package/lib/openzeppelin-contracts/lib/forge-std/test/StdUtils.t.sol +191 -0
- package/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScript.sol +10 -0
- package/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationScriptBase.sol +10 -0
- package/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTest.sol +10 -0
- package/lib/openzeppelin-contracts/lib/forge-std/test/compilation/CompilationTestBase.sol +10 -0
- package/lib/openzeppelin-contracts/lib/forge-std/test/fixtures/broadcast.log.json +187 -0
- package/lib/openzeppelin-contracts/logo.svg +15 -0
- package/lib/openzeppelin-contracts/netlify.toml +3 -0
- package/lib/openzeppelin-contracts/package-lock.json +16544 -0
- package/lib/openzeppelin-contracts/package.json +96 -0
- package/lib/openzeppelin-contracts/remappings.txt +1 -0
- package/lib/openzeppelin-contracts/renovate.json +4 -0
- package/lib/openzeppelin-contracts/requirements.txt +1 -0
- package/lib/openzeppelin-contracts/scripts/checks/compare-layout.js +20 -0
- package/lib/openzeppelin-contracts/scripts/checks/compareGasReports.js +243 -0
- package/lib/openzeppelin-contracts/scripts/checks/extract-layout.js +38 -0
- package/lib/openzeppelin-contracts/scripts/checks/generation.sh +6 -0
- package/lib/openzeppelin-contracts/scripts/checks/inheritance-ordering.js +54 -0
- package/lib/openzeppelin-contracts/scripts/gen-nav.js +41 -0
- package/lib/openzeppelin-contracts/scripts/generate/format-lines.js +16 -0
- package/lib/openzeppelin-contracts/scripts/generate/run.js +49 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.js +247 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.opts.js +17 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/Checkpoints.t.js +146 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableMap.js +283 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/EnumerableSet.js +250 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/SafeCast.js +126 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/StorageSlot.js +78 -0
- package/lib/openzeppelin-contracts/scripts/generate/templates/conversion.js +30 -0
- package/lib/openzeppelin-contracts/scripts/git-user-config.sh +6 -0
- package/lib/openzeppelin-contracts/scripts/helpers.js +37 -0
- package/lib/openzeppelin-contracts/scripts/prepack.sh +23 -0
- package/lib/openzeppelin-contracts/scripts/prepare-docs.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/format-changelog.js +33 -0
- package/lib/openzeppelin-contracts/scripts/release/synchronize-versions.js +15 -0
- package/lib/openzeppelin-contracts/scripts/release/update-comment.js +34 -0
- package/lib/openzeppelin-contracts/scripts/release/version.sh +11 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/exit-prerelease.sh +8 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/github-release.js +48 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/integrity-check.sh +20 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/pack.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/publish.sh +26 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/rerun.js +7 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/set-changesets-pr-title.js +17 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/start.sh +35 -0
- package/lib/openzeppelin-contracts/scripts/release/workflow/state.js +112 -0
- package/lib/openzeppelin-contracts/scripts/remove-ignored-artifacts.js +45 -0
- package/lib/openzeppelin-contracts/scripts/solhint-custom/index.js +84 -0
- package/lib/openzeppelin-contracts/scripts/solhint-custom/package.json +5 -0
- package/lib/openzeppelin-contracts/scripts/update-docs-branch.js +65 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/README.md +21 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/patch-apply.sh +19 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/patch-save.sh +18 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/transpile-onto.sh +54 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/transpile.sh +47 -0
- package/lib/openzeppelin-contracts/scripts/upgradeable/upgradeable.patch +360 -0
- package/lib/openzeppelin-contracts/slither.config.json +5 -0
- package/lib/openzeppelin-contracts/solhint.config.js +20 -0
- package/lib/openzeppelin-contracts/test/TESTING.md +3 -0
- package/lib/openzeppelin-contracts/test/access/AccessControl.behavior.js +909 -0
- package/lib/openzeppelin-contracts/test/access/AccessControl.test.js +12 -0
- package/lib/openzeppelin-contracts/test/access/Ownable.test.js +72 -0
- package/lib/openzeppelin-contracts/test/access/Ownable2Step.test.js +70 -0
- package/lib/openzeppelin-contracts/test/access/extensions/AccessControlDefaultAdminRules.test.js +26 -0
- package/lib/openzeppelin-contracts/test/access/extensions/AccessControlEnumerable.test.js +17 -0
- package/lib/openzeppelin-contracts/test/access/manager/AccessManaged.test.js +142 -0
- package/lib/openzeppelin-contracts/test/access/manager/AccessManager.behavior.js +711 -0
- package/lib/openzeppelin-contracts/test/access/manager/AccessManager.test.js +2683 -0
- package/lib/openzeppelin-contracts/test/access/manager/AuthorityUtils.test.js +91 -0
- package/lib/openzeppelin-contracts/test/finance/VestingWallet.behavior.js +59 -0
- package/lib/openzeppelin-contracts/test/finance/VestingWallet.test.js +69 -0
- package/lib/openzeppelin-contracts/test/governance/Governor.t.sol +55 -0
- package/lib/openzeppelin-contracts/test/governance/Governor.test.js +1024 -0
- package/lib/openzeppelin-contracts/test/governance/TimelockController.test.js +1286 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorERC721.test.js +116 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorPreventLateQuorum.test.js +195 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorStorage.test.js +150 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockAccess.test.js +777 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockCompound.test.js +441 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorTimelockControl.test.js +515 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorVotesQuorumFraction.test.js +167 -0
- package/lib/openzeppelin-contracts/test/governance/extensions/GovernorWithParams.test.js +277 -0
- package/lib/openzeppelin-contracts/test/governance/utils/EIP6372.behavior.js +23 -0
- package/lib/openzeppelin-contracts/test/governance/utils/Votes.behavior.js +360 -0
- package/lib/openzeppelin-contracts/test/governance/utils/Votes.test.js +92 -0
- package/lib/openzeppelin-contracts/test/helpers/access-manager.js +69 -0
- package/lib/openzeppelin-contracts/test/helpers/account.js +14 -0
- package/lib/openzeppelin-contracts/test/helpers/chainid.js +10 -0
- package/lib/openzeppelin-contracts/test/helpers/constants.js +7 -0
- package/lib/openzeppelin-contracts/test/helpers/create.js +22 -0
- package/lib/openzeppelin-contracts/test/helpers/customError.js +43 -0
- package/lib/openzeppelin-contracts/test/helpers/eip712.js +67 -0
- package/lib/openzeppelin-contracts/test/helpers/enums.js +11 -0
- package/lib/openzeppelin-contracts/test/helpers/erc1967.js +43 -0
- package/lib/openzeppelin-contracts/test/helpers/governance.js +253 -0
- package/lib/openzeppelin-contracts/test/helpers/iterate.js +16 -0
- package/lib/openzeppelin-contracts/test/helpers/math.js +11 -0
- package/lib/openzeppelin-contracts/test/helpers/methods.js +5 -0
- package/lib/openzeppelin-contracts/test/helpers/sign.js +63 -0
- package/lib/openzeppelin-contracts/test/helpers/time.js +17 -0
- package/lib/openzeppelin-contracts/test/helpers/txpool.js +38 -0
- package/lib/openzeppelin-contracts/test/metatx/ERC2771Context.test.js +134 -0
- package/lib/openzeppelin-contracts/test/metatx/ERC2771Forwarder.t.sol +165 -0
- package/lib/openzeppelin-contracts/test/metatx/ERC2771Forwarder.test.js +541 -0
- package/lib/openzeppelin-contracts/test/proxy/Clones.behaviour.js +136 -0
- package/lib/openzeppelin-contracts/test/proxy/Clones.test.js +62 -0
- package/lib/openzeppelin-contracts/test/proxy/ERC1967/ERC1967Proxy.test.js +12 -0
- package/lib/openzeppelin-contracts/test/proxy/ERC1967/ERC1967Utils.test.js +172 -0
- package/lib/openzeppelin-contracts/test/proxy/Proxy.behaviour.js +182 -0
- package/lib/openzeppelin-contracts/test/proxy/beacon/BeaconProxy.test.js +152 -0
- package/lib/openzeppelin-contracts/test/proxy/beacon/UpgradeableBeacon.test.js +54 -0
- package/lib/openzeppelin-contracts/test/proxy/transparent/ProxyAdmin.test.js +103 -0
- package/lib/openzeppelin-contracts/test/proxy/transparent/TransparentUpgradeableProxy.behaviour.js +413 -0
- package/lib/openzeppelin-contracts/test/proxy/transparent/TransparentUpgradeableProxy.test.js +24 -0
- package/lib/openzeppelin-contracts/test/proxy/utils/Initializable.test.js +220 -0
- package/lib/openzeppelin-contracts/test/proxy/utils/UUPSUpgradeable.test.js +131 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/ERC1155.behavior.js +905 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/ERC1155.test.js +252 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Burnable.test.js +71 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Pausable.test.js +113 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155Supply.test.js +116 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/extensions/ERC1155URIStorage.test.js +66 -0
- package/lib/openzeppelin-contracts/test/token/ERC1155/utils/ERC1155Holder.test.js +64 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/ERC20.behavior.js +340 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/ERC20.test.js +202 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Burnable.behavior.js +116 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Burnable.test.js +20 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Capped.behavior.js +31 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Capped.test.js +24 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20FlashMint.test.js +210 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Pausable.test.js +136 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Permit.test.js +118 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Votes.test.js +593 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC20Wrapper.test.js +211 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.t.sol +41 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/extensions/ERC4626.test.js +1109 -0
- package/lib/openzeppelin-contracts/test/token/ERC20/utils/SafeERC20.test.js +240 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/ERC721.behavior.js +978 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/ERC721.test.js +15 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/ERC721Enumerable.test.js +20 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Burnable.test.js +82 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Consecutive.t.sol +181 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Consecutive.test.js +221 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Pausable.test.js +90 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Royalty.test.js +47 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721URIStorage.test.js +114 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Votes.test.js +183 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/extensions/ERC721Wrapper.test.js +289 -0
- package/lib/openzeppelin-contracts/test/token/ERC721/utils/ERC721Holder.test.js +22 -0
- package/lib/openzeppelin-contracts/test/token/common/ERC2981.behavior.js +169 -0
- package/lib/openzeppelin-contracts/test/utils/Address.test.js +340 -0
- package/lib/openzeppelin-contracts/test/utils/Arrays.test.js +123 -0
- package/lib/openzeppelin-contracts/test/utils/Base64.test.js +33 -0
- package/lib/openzeppelin-contracts/test/utils/Context.behavior.js +42 -0
- package/lib/openzeppelin-contracts/test/utils/Context.test.js +17 -0
- package/lib/openzeppelin-contracts/test/utils/Create2.test.js +102 -0
- package/lib/openzeppelin-contracts/test/utils/Multicall.test.js +69 -0
- package/lib/openzeppelin-contracts/test/utils/Nonces.test.js +71 -0
- package/lib/openzeppelin-contracts/test/utils/Pausable.test.js +86 -0
- package/lib/openzeppelin-contracts/test/utils/ReentrancyGuard.test.js +44 -0
- package/lib/openzeppelin-contracts/test/utils/ShortStrings.t.sol +55 -0
- package/lib/openzeppelin-contracts/test/utils/ShortStrings.test.js +55 -0
- package/lib/openzeppelin-contracts/test/utils/StorageSlot.test.js +210 -0
- package/lib/openzeppelin-contracts/test/utils/Strings.test.js +153 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/ECDSA.test.js +245 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/EIP712.test.js +111 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/MerkleProof.test.js +207 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/MessageHashUtils.test.js +55 -0
- package/lib/openzeppelin-contracts/test/utils/cryptography/SignatureChecker.test.js +87 -0
- package/lib/openzeppelin-contracts/test/utils/introspection/ERC165.test.js +11 -0
- package/lib/openzeppelin-contracts/test/utils/introspection/ERC165Checker.test.js +300 -0
- package/lib/openzeppelin-contracts/test/utils/introspection/SupportsInterface.behavior.js +144 -0
- package/lib/openzeppelin-contracts/test/utils/math/Math.t.sol +216 -0
- package/lib/openzeppelin-contracts/test/utils/math/Math.test.js +469 -0
- package/lib/openzeppelin-contracts/test/utils/math/SafeCast.test.js +161 -0
- package/lib/openzeppelin-contracts/test/utils/math/SignedMath.test.js +95 -0
- package/lib/openzeppelin-contracts/test/utils/structs/BitMap.test.js +145 -0
- package/lib/openzeppelin-contracts/test/utils/structs/Checkpoints.t.sol +332 -0
- package/lib/openzeppelin-contracts/test/utils/structs/Checkpoints.test.js +158 -0
- package/lib/openzeppelin-contracts/test/utils/structs/DoubleEndedQueue.test.js +99 -0
- package/lib/openzeppelin-contracts/test/utils/structs/EnumerableMap.behavior.js +178 -0
- package/lib/openzeppelin-contracts/test/utils/structs/EnumerableMap.test.js +149 -0
- package/lib/openzeppelin-contracts/test/utils/structs/EnumerableSet.behavior.js +129 -0
- package/lib/openzeppelin-contracts/test/utils/structs/EnumerableSet.test.js +79 -0
- package/lib/openzeppelin-contracts/test/utils/types/Time.test.js +140 -0
- package/package.json +10 -4
package/README.md
CHANGED
|
@@ -1,401 +1,66 @@
|
|
|
1
|
-
|
|
1
|
+
## Foundry
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Foundry is a blazing fast, portable and modular toolkit for Ethereum application development written in Rust.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Foundry consists of:
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
- **Forge**: Ethereum testing framework (like Truffle, Hardhat and DappTools).
|
|
8
|
+
- **Cast**: Swiss army knife for interacting with EVM smart contracts, sending transactions and getting chain data.
|
|
9
|
+
- **Anvil**: Local Ethereum node, akin to Ganache, Hardhat Network.
|
|
10
|
+
- **Chisel**: Fast, utilitarian, and verbose solidity REPL.
|
|
8
11
|
|
|
9
|
-
|
|
12
|
+
## Documentation
|
|
10
13
|
|
|
11
|
-
|
|
12
|
-
|---------|--------------|---------------------|
|
|
13
|
-
| **AI Developer** | "My agent needs to pay for APIs" | One-line wallet setup, auto-pay |
|
|
14
|
-
| **Agent Builder** | "How do I monetize my agent?" | Accept payments, tips, subscriptions |
|
|
15
|
-
| **Business** | "I don't trust AI agents" | Escrow + trust scores verify reliability |
|
|
16
|
-
| **Freelancer** | "Clients don't pay on time" | Smart escrow auto-releases on milestones |
|
|
17
|
-
| **API Provider** | "I want per-request pricing" | x402 micropayments ($0.001/call) |
|
|
14
|
+
https://book.getfoundry.sh/
|
|
18
15
|
|
|
19
|
-
|
|
16
|
+
## Usage
|
|
20
17
|
|
|
21
|
-
|
|
18
|
+
### Build
|
|
22
19
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
- **Escrow as a Service** — Pre-built templates for any industry
|
|
26
|
-
- **Agent-to-Agent Commerce** — Autonomous payments between bots with trust verification
|
|
27
|
-
- **Multi-Chain Support** — Ethereum, Polygon, Avalanche, Arbitrum, Base
|
|
28
|
-
|
|
29
|
-
## Features
|
|
30
|
-
|
|
31
|
-
### 🆔 ERC-8004 Trustless Agents (NEW)
|
|
32
|
-
- 🪪 **On-Chain Identity** — NFT-based agent registration
|
|
33
|
-
- ⭐ **Reputation System** — Feedback & ratings after transactions
|
|
34
|
-
- 🔍 **Agent Discovery** — Find trusted agents by capability
|
|
35
|
-
- ✅ **Trust Verification** — Verify agents before paying them
|
|
36
|
-
- 📊 **Payment Safety** — Risk-based payment limits by trust score
|
|
37
|
-
- 🤝 **Post-Transaction Feedback** — Build reputation through use
|
|
38
|
-
|
|
39
|
-
### 🔐 x402 Payment Protocol (NEW)
|
|
40
|
-
- 💳 **HTTP-Native Payments** — `402 Payment Required` → automatic USDC payment
|
|
41
|
-
- 🤖 **Agent Commerce** — Bots pay bots for API calls, data, services
|
|
42
|
-
- 🧾 **Payment Receipts** — On-chain proof of payment
|
|
43
|
-
- 🔄 **Automatic Retry** — Handle payment challenges seamlessly
|
|
44
|
-
- 📊 **Usage Tracking** — Track spend by endpoint, recipient, time
|
|
45
|
-
|
|
46
|
-
### 🏦 Escrow as a Service (NEW)
|
|
47
|
-
- 🏠 **Real Estate** — Earnest money, security deposits, rent
|
|
48
|
-
- 💼 **Freelance** — Milestone payments, hourly billing
|
|
49
|
-
- 🛒 **Commerce** — Buyer protection, marketplace escrow
|
|
50
|
-
- 🤝 **P2P** — Peer-to-peer trades with trusted release
|
|
51
|
-
- ⚙️ **Custom** — Build your own with condition DSL
|
|
52
|
-
|
|
53
|
-
### Core Wallet Operations
|
|
54
|
-
- 💰 **Check USDC balances** across multiple chains
|
|
55
|
-
- 📤 **Send USDC** to any address or contact name
|
|
56
|
-
- 📥 **Receive USDC** with generated addresses
|
|
57
|
-
- 🌉 **Cross-chain transfers** via Circle's CCTP
|
|
58
|
-
- 🤖 **Agent-to-agent payments** for autonomous commerce
|
|
59
|
-
|
|
60
|
-
### Invoicing & Billing
|
|
61
|
-
- 📄 **Invoice Creation** — Professional invoices with line items, tax
|
|
62
|
-
- 📧 **Invoice Delivery** — Send via email, Telegram, etc.
|
|
63
|
-
- ✅ **Payment Tracking** — Draft → Sent → Viewed → Paid lifecycle
|
|
64
|
-
- 🔗 **Payment Links** — EIP-681 style payment request URLs
|
|
65
|
-
- ⏰ **Overdue Detection** — Automatic status updates
|
|
66
|
-
|
|
67
|
-
### Recurring Payments
|
|
68
|
-
- 🔄 **Subscriptions** — Daily, weekly, biweekly, monthly, quarterly, yearly
|
|
69
|
-
- ⏸️ **Flexible Control** — Pause, resume, cancel anytime
|
|
70
|
-
- 📊 **Payment History** — Full execution history with tx hashes
|
|
71
|
-
|
|
72
|
-
### Address Book
|
|
73
|
-
- 👥 **Contacts** — Store names with multiple chain addresses
|
|
74
|
-
- 🏷️ **Tags & Search** — Organize and find contacts
|
|
75
|
-
- 🎯 **Name Resolution** — Send to "Alice" instead of 0x addresses
|
|
76
|
-
- 📋 **Import/Export** — CSV support for bulk operations
|
|
77
|
-
|
|
78
|
-
### Security & Approvals
|
|
79
|
-
- 🛡️ **Approval Policies** — Require approval for large transactions
|
|
80
|
-
- 👥 **Multi-Approver** — Configurable number of required approvals
|
|
81
|
-
- 💵 **Daily Limits** — Auto-trigger approval when limit exceeded
|
|
82
|
-
- ⏰ **Timeout Handling** — Auto-cancel or auto-approve on expiry
|
|
83
|
-
|
|
84
|
-
### Notifications
|
|
85
|
-
- 🔔 **Real-Time Alerts** — Incoming payments, large outgoing, etc.
|
|
86
|
-
- 🌐 **Webhook Support** — POST to external URLs with HMAC signatures
|
|
87
|
-
- 💬 **Clawdbot Integration** — Notifications via Telegram, etc.
|
|
88
|
-
- ⏱️ **Rate Limiting** — Configurable cooldowns to prevent spam
|
|
89
|
-
|
|
90
|
-
### Analytics & Reporting
|
|
91
|
-
- 📊 **Daily Summaries** — Sent, received, net per day
|
|
92
|
-
- 📈 **Category Breakdown** — Spending analysis by category
|
|
93
|
-
- 👤 **Contact Analysis** — Volume by contact, top recipients
|
|
94
|
-
- 🔗 **Chain Distribution** — Activity breakdown across chains
|
|
95
|
-
- 📤 **CSV Export** — Export transactions for accounting
|
|
96
|
-
|
|
97
|
-
### Tip Jar / Creator Economy
|
|
98
|
-
- 💰 **Tip Jars** — Let your community tip you in USDC
|
|
99
|
-
- 🏆 **Leaderboards** — Top tippers weekly/monthly/all-time
|
|
100
|
-
- 🎉 **Real-Time Notifications** — Get notified instantly on tips
|
|
101
|
-
- 🤖 **Agent-to-Agent Tips** — Clawdbots can tip each other
|
|
102
|
-
|
|
103
|
-
### Real Estate Escrow
|
|
104
|
-
- 🏠 **Earnest Money** — Hold deposits with condition-based release
|
|
105
|
-
- 🔑 **Security Deposits** — Rental deposits with move-out inspection
|
|
106
|
-
- 📋 **Conditions** — Inspection, financing, title, custom conditions
|
|
107
|
-
- ✍️ **Multi-Party Approval** — Buyer + seller sign-off for release
|
|
108
|
-
- 📄 **Document Tracking** — Attach contracts, inspection reports
|
|
109
|
-
|
|
110
|
-
## Quick Start
|
|
111
|
-
|
|
112
|
-
### 1. Get Circle Credentials
|
|
113
|
-
|
|
114
|
-
Sign up at [console.circle.com](https://console.circle.com) and create:
|
|
115
|
-
- API Key (Keys → Create a key → API key → Standard Key)
|
|
116
|
-
- Entity Secret
|
|
117
|
-
|
|
118
|
-
### 2. Set Environment Variables
|
|
119
|
-
|
|
120
|
-
```bash
|
|
121
|
-
export CIRCLE_API_KEY="your-api-key"
|
|
122
|
-
export CIRCLE_ENTITY_SECRET="your-entity-secret"
|
|
20
|
+
```shell
|
|
21
|
+
$ forge build
|
|
123
22
|
```
|
|
124
23
|
|
|
125
|
-
###
|
|
24
|
+
### Test
|
|
126
25
|
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
npm install
|
|
130
|
-
npm run setup
|
|
26
|
+
```shell
|
|
27
|
+
$ forge test
|
|
131
28
|
```
|
|
132
29
|
|
|
133
|
-
###
|
|
134
|
-
|
|
135
|
-
```bash
|
|
136
|
-
# Check balance
|
|
137
|
-
npm run balance
|
|
138
|
-
|
|
139
|
-
# Send USDC
|
|
140
|
-
npx ts-node scripts/usdc-cli.ts send 10 to 0x1234...
|
|
141
|
-
|
|
142
|
-
# Get receive address
|
|
143
|
-
npm run receive
|
|
30
|
+
### Format
|
|
144
31
|
|
|
145
|
-
|
|
146
|
-
|
|
32
|
+
```shell
|
|
33
|
+
$ forge fmt
|
|
147
34
|
```
|
|
148
35
|
|
|
149
|
-
|
|
36
|
+
### Gas Snapshots
|
|
150
37
|
|
|
38
|
+
```shell
|
|
39
|
+
$ forge snapshot
|
|
151
40
|
```
|
|
152
|
-
lobster-pay/
|
|
153
|
-
├── SKILL.md # OpenClaw skill documentation
|
|
154
|
-
├── README.md # This file
|
|
155
|
-
├── package.json # Dependencies
|
|
156
|
-
├── lib/
|
|
157
|
-
│ ├── circle-client.ts # Circle Programmable Wallets API client
|
|
158
|
-
│ ├── x402-client.ts # x402 payment protocol client
|
|
159
|
-
│ ├── x402-server.ts # x402 payment verification middleware
|
|
160
|
-
│ ├── escrow.ts # Escrow management & multi-party release
|
|
161
|
-
│ ├── escrow-templates.ts # Pre-built escrow templates
|
|
162
|
-
│ ├── condition-builder.ts # Flexible condition DSL
|
|
163
|
-
│ └── erc8004/ # ERC-8004 Trustless Agents
|
|
164
|
-
│ ├── index.ts # Main client & helpers
|
|
165
|
-
│ ├── identity.ts # Identity Registry (agent registration)
|
|
166
|
-
│ ├── reputation.ts # Reputation Registry (feedback)
|
|
167
|
-
│ ├── discovery.ts # Agent discovery service
|
|
168
|
-
│ └── constants.ts # Contract addresses & types
|
|
169
|
-
│ ├── invoices.ts # Invoice & recurring payment management
|
|
170
|
-
│ ├── contacts.ts # Address book & contact resolution
|
|
171
|
-
│ ├── approvals.ts # Multi-sig style approval workflows
|
|
172
|
-
│ ├── notifications.ts # Real-time alerts & webhooks
|
|
173
|
-
│ └── analytics.ts # Transaction analytics & reporting
|
|
174
|
-
├── scripts/
|
|
175
|
-
│ └── usdc-cli.ts # CLI tool for testing
|
|
176
|
-
├── docs/
|
|
177
|
-
│ ├── erc8004-integration.md # ERC-8004 Trustless Agents guide
|
|
178
|
-
│ ├── x402-integration.md # x402 protocol documentation
|
|
179
|
-
│ ├── x402-quickstart.md # Quick start guide
|
|
180
|
-
│ ├── escrow-templates.md # Escrow template reference
|
|
181
|
-
│ └── ARCHITECTURE.md # Technical architecture
|
|
182
|
-
├── examples/
|
|
183
|
-
│ ├── x402-client-example.ts
|
|
184
|
-
│ └── x402-server-example.ts
|
|
185
|
-
└── data/ # Local data storage (created at runtime)
|
|
186
|
-
```
|
|
187
|
-
|
|
188
|
-
## Supported Networks (Testnet)
|
|
189
|
-
|
|
190
|
-
| Network | Chain ID | USDC Contract |
|
|
191
|
-
|---------|----------|---------------|
|
|
192
|
-
| Ethereum Sepolia | ETH-SEPOLIA | Circle managed |
|
|
193
|
-
| Polygon Amoy | MATIC-AMOY | Circle managed |
|
|
194
|
-
| Avalanche Fuji | AVAX-FUJI | Circle managed |
|
|
195
|
-
| Arbitrum Sepolia | ARB-SEPOLIA | Circle managed |
|
|
196
|
-
|
|
197
|
-
## API Overview
|
|
198
41
|
|
|
199
|
-
###
|
|
42
|
+
### Anvil
|
|
200
43
|
|
|
201
|
-
```
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
const client = new CircleClient({
|
|
205
|
-
apiKey: process.env.CIRCLE_API_KEY!,
|
|
206
|
-
entitySecret: process.env.CIRCLE_ENTITY_SECRET!,
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
// Get balances
|
|
210
|
-
const balances = await client.getAllUSDCBalances();
|
|
211
|
-
|
|
212
|
-
// Send USDC
|
|
213
|
-
const tx = await client.sendUSDC({
|
|
214
|
-
fromWalletId: 'wallet-id',
|
|
215
|
-
toAddress: '0x...',
|
|
216
|
-
amount: '100',
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
// Bridge via CCTP
|
|
220
|
-
const bridge = await client.bridgeUSDC({
|
|
221
|
-
fromWalletId: 'wallet-id',
|
|
222
|
-
toAddress: '0x...',
|
|
223
|
-
fromChain: 'ETH-SEPOLIA',
|
|
224
|
-
toChain: 'AVAX-FUJI',
|
|
225
|
-
amount: '50',
|
|
226
|
-
});
|
|
44
|
+
```shell
|
|
45
|
+
$ anvil
|
|
227
46
|
```
|
|
228
47
|
|
|
229
|
-
###
|
|
48
|
+
### Deploy
|
|
230
49
|
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
const invoices = new InvoiceManager();
|
|
235
|
-
|
|
236
|
-
// Create invoice
|
|
237
|
-
const invoice = await invoices.create({
|
|
238
|
-
from: { name: 'My Business', walletAddress: '0x...' },
|
|
239
|
-
to: { name: 'Client Corp', email: 'billing@client.com' },
|
|
240
|
-
items: [
|
|
241
|
-
{ description: 'Web Development', quantity: 1, unitPrice: '500' },
|
|
242
|
-
{ description: 'Hosting (monthly)', quantity: 3, unitPrice: '50' },
|
|
243
|
-
],
|
|
244
|
-
taxRate: 8.25,
|
|
245
|
-
dueDate: '2026-03-01',
|
|
246
|
-
});
|
|
247
|
-
|
|
248
|
-
// Track payments
|
|
249
|
-
await invoices.markPaid(invoice.id, '0xtxhash...');
|
|
50
|
+
```shell
|
|
51
|
+
$ forge script script/Counter.s.sol:CounterScript --rpc-url <your_rpc_url> --private-key <your_private_key>
|
|
250
52
|
```
|
|
251
53
|
|
|
252
|
-
###
|
|
253
|
-
|
|
254
|
-
```typescript
|
|
255
|
-
import { ContactManager } from './lib/contacts';
|
|
54
|
+
### Cast
|
|
256
55
|
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
// Add contact
|
|
260
|
-
await contacts.add({
|
|
261
|
-
name: 'Alice Smith',
|
|
262
|
-
alias: 'alice',
|
|
263
|
-
addresses: [
|
|
264
|
-
{ chain: 'ETH-SEPOLIA', address: '0x...' },
|
|
265
|
-
{ chain: 'AVAX-FUJI', address: '0x...' },
|
|
266
|
-
],
|
|
267
|
-
tags: ['vendor', 'priority'],
|
|
268
|
-
});
|
|
269
|
-
|
|
270
|
-
// Resolve recipient (by name or address)
|
|
271
|
-
const recipient = await contacts.resolveRecipient('alice', 'ETH-SEPOLIA');
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
### ApprovalManager
|
|
275
|
-
|
|
276
|
-
```typescript
|
|
277
|
-
import { ApprovalManager } from './lib/approvals';
|
|
278
|
-
|
|
279
|
-
const approvals = new ApprovalManager();
|
|
280
|
-
|
|
281
|
-
// Create policy
|
|
282
|
-
await approvals.createPolicy({
|
|
283
|
-
name: 'Large Transactions',
|
|
284
|
-
conditions: { minAmount: '1000' },
|
|
285
|
-
approvers: ['owner-session-id'],
|
|
286
|
-
requiredApprovals: 1,
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
// Submit for approval
|
|
290
|
-
const pending = await approvals.submitForApproval({
|
|
291
|
-
type: 'send',
|
|
292
|
-
fromWalletId: '...',
|
|
293
|
-
toAddress: '0x...',
|
|
294
|
-
amount: '5000',
|
|
295
|
-
chain: 'ETH-SEPOLIA',
|
|
296
|
-
requestedBy: 'agent',
|
|
297
|
-
});
|
|
298
|
-
|
|
299
|
-
// Approve
|
|
300
|
-
await approvals.decide(pending.id, 'owner-session-id', 'approve');
|
|
301
|
-
```
|
|
302
|
-
|
|
303
|
-
### x402Client
|
|
304
|
-
|
|
305
|
-
```typescript
|
|
306
|
-
import { X402Client } from './lib/x402-client';
|
|
307
|
-
|
|
308
|
-
const x402 = new X402Client({
|
|
309
|
-
circleClient,
|
|
310
|
-
walletId: 'your-wallet-id',
|
|
311
|
-
chain: 'ETH-SEPOLIA',
|
|
312
|
-
});
|
|
313
|
-
|
|
314
|
-
// Make a paid API call (auto-handles 402 responses)
|
|
315
|
-
const response = await x402.fetch('https://api.example.com/premium-data', {
|
|
316
|
-
method: 'GET',
|
|
317
|
-
maxPayment: '1.00', // Max USDC willing to pay
|
|
318
|
-
});
|
|
319
|
-
|
|
320
|
-
// Check payment history
|
|
321
|
-
const receipts = x402.getPaymentReceipts();
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
### ERC8004Client (Trustless Agents)
|
|
325
|
-
|
|
326
|
-
```typescript
|
|
327
|
-
import { createERC8004Client } from './lib/erc8004';
|
|
328
|
-
|
|
329
|
-
const erc8004 = createERC8004Client('BASE-SEPOLIA', privateKey, {
|
|
330
|
-
paymentAddress: '0x...',
|
|
331
|
-
x402Endpoint: 'https://my-agent.com/x402',
|
|
332
|
-
});
|
|
333
|
-
|
|
334
|
-
// Register your agent
|
|
335
|
-
const agentId = await erc8004.registerAgent({
|
|
336
|
-
name: 'My Pay Lobster',
|
|
337
|
-
description: 'AI agent accepting USDC payments',
|
|
338
|
-
capabilities: ['payments', 'escrow', 'invoicing'],
|
|
339
|
-
});
|
|
340
|
-
|
|
341
|
-
// Verify another agent before paying
|
|
342
|
-
const verification = await erc8004.verifyAgent(targetAgentId);
|
|
343
|
-
if (verification.verified && verification.recommendation === 'safe') {
|
|
344
|
-
// Proceed with payment
|
|
345
|
-
}
|
|
346
|
-
|
|
347
|
-
// Check payment safety
|
|
348
|
-
const safety = await erc8004.isPaymentSafe(targetAgentId, 500);
|
|
349
|
-
// => { safe: true, maxRecommendedAmount: 1000, trustScore: 82 }
|
|
350
|
-
|
|
351
|
-
// Post feedback after transaction
|
|
352
|
-
await erc8004.postPaymentSuccess(targetAgentId, txHash, '100');
|
|
56
|
+
```shell
|
|
57
|
+
$ cast <subcommand>
|
|
353
58
|
```
|
|
354
59
|
|
|
355
|
-
###
|
|
356
|
-
|
|
357
|
-
```typescript
|
|
358
|
-
import { EscrowManager } from './lib/escrow';
|
|
359
|
-
import { EscrowTemplates } from './lib/escrow-templates';
|
|
60
|
+
### Help
|
|
360
61
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
EscrowTemplates.freelance.milestone({
|
|
366
|
-
client: '0xClient...',
|
|
367
|
-
freelancer: '0xFreelancer...',
|
|
368
|
-
milestones: [
|
|
369
|
-
{ name: 'Design', amount: '500' },
|
|
370
|
-
{ name: 'Development', amount: '1500' },
|
|
371
|
-
{ name: 'Launch', amount: '500' },
|
|
372
|
-
],
|
|
373
|
-
})
|
|
374
|
-
);
|
|
375
|
-
|
|
376
|
-
// Or build custom conditions
|
|
377
|
-
import { ConditionBuilder } from './lib/condition-builder';
|
|
378
|
-
|
|
379
|
-
const conditions = new ConditionBuilder()
|
|
380
|
-
.requireSignatures(['buyer', 'seller'])
|
|
381
|
-
.requireDocument('inspection_report')
|
|
382
|
-
.addTimelock(7 * 24 * 60 * 60 * 1000) // 7 days
|
|
383
|
-
.build();
|
|
384
|
-
|
|
385
|
-
const customEscrow = await escrow.create({
|
|
386
|
-
buyer: '0x...',
|
|
387
|
-
seller: '0x...',
|
|
388
|
-
amount: '10000',
|
|
389
|
-
conditions,
|
|
390
|
-
});
|
|
62
|
+
```shell
|
|
63
|
+
$ forge --help
|
|
64
|
+
$ anvil --help
|
|
65
|
+
$ cast --help
|
|
391
66
|
```
|
|
392
|
-
|
|
393
|
-
## Testnet Faucets
|
|
394
|
-
|
|
395
|
-
Get testnet USDC:
|
|
396
|
-
- **Circle Faucet**: https://faucet.circle.com/
|
|
397
|
-
- **Sepolia ETH**: https://sepoliafaucet.com/
|
|
398
|
-
|
|
399
|
-
## License
|
|
400
|
-
|
|
401
|
-
MIT - Built with ❤️ for Circle USDC Hackathon 2026
|
package/dist/agent.d.ts
CHANGED
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* LobsterAgent - Main class for Pay Lobster SDK
|
|
3
|
+
* Now with REAL on-chain contracts! 🦞
|
|
3
4
|
*/
|
|
4
5
|
import type { LobsterConfig, Wallet, Transfer, Escrow, TrustScore, Agent, TransferOptions, EscrowOptions, DiscoverOptions, AutonomousConfig } from './types';
|
|
5
6
|
export declare class LobsterAgent {
|
|
6
7
|
private config;
|
|
7
8
|
private wallet?;
|
|
9
|
+
private signer?;
|
|
10
|
+
private provider?;
|
|
8
11
|
private autonomousConfig?;
|
|
9
12
|
constructor(config?: LobsterConfig);
|
|
10
13
|
/**
|
|
@@ -23,12 +26,17 @@ export declare class LobsterAgent {
|
|
|
23
26
|
* Get current USDC balance
|
|
24
27
|
*/
|
|
25
28
|
getBalance(): Promise<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Get ETH balance (needed for gas)
|
|
31
|
+
*/
|
|
32
|
+
getEthBalance(): Promise<string>;
|
|
26
33
|
/**
|
|
27
34
|
* Get deposit address
|
|
28
35
|
*/
|
|
29
36
|
getDepositAddress(): Promise<string>;
|
|
30
37
|
/**
|
|
31
38
|
* Transfer USDC to another address
|
|
39
|
+
* REAL implementation with on-chain signing! 🦞
|
|
32
40
|
*/
|
|
33
41
|
transfer(options: TransferOptions): Promise<Transfer>;
|
|
34
42
|
/**
|
|
@@ -36,31 +44,31 @@ export declare class LobsterAgent {
|
|
|
36
44
|
*/
|
|
37
45
|
send(to: string, amount: number | string): Promise<Transfer>;
|
|
38
46
|
/**
|
|
39
|
-
* Create an escrow
|
|
47
|
+
* Create an escrow - REAL on-chain! 🦞
|
|
40
48
|
*/
|
|
41
49
|
createEscrow(options: EscrowOptions): Promise<Escrow>;
|
|
42
50
|
/**
|
|
43
|
-
* Release escrow funds
|
|
51
|
+
* Release escrow funds - REAL on-chain! 🦞
|
|
44
52
|
*/
|
|
45
53
|
releaseEscrow(escrowId: string, options?: {
|
|
46
54
|
amount?: string;
|
|
47
55
|
}): Promise<void>;
|
|
48
56
|
/**
|
|
49
|
-
* Refund escrow
|
|
57
|
+
* Refund escrow - REAL on-chain! 🦞
|
|
50
58
|
*/
|
|
51
59
|
refundEscrow(escrowId: string): Promise<void>;
|
|
52
60
|
/**
|
|
53
|
-
* Dispute escrow
|
|
61
|
+
* Dispute escrow - REAL on-chain! 🦞
|
|
54
62
|
*/
|
|
55
63
|
disputeEscrow(escrowId: string, options: {
|
|
56
64
|
reason: string;
|
|
57
65
|
}): Promise<void>;
|
|
58
66
|
/**
|
|
59
|
-
* Get trust score for an address
|
|
67
|
+
* Get trust score for an address - REAL on-chain! 🦞
|
|
60
68
|
*/
|
|
61
69
|
getTrustScore(address: string): Promise<TrustScore>;
|
|
62
70
|
/**
|
|
63
|
-
* Rate an agent
|
|
71
|
+
* Rate an agent - REAL on-chain! 🦞
|
|
64
72
|
*/
|
|
65
73
|
rateAgent(options: {
|
|
66
74
|
agent: string;
|
|
@@ -69,11 +77,11 @@ export declare class LobsterAgent {
|
|
|
69
77
|
transactionId?: string;
|
|
70
78
|
}): Promise<void>;
|
|
71
79
|
/**
|
|
72
|
-
* Get agent ratings
|
|
80
|
+
* Get agent ratings - REAL on-chain! 🦞
|
|
73
81
|
*/
|
|
74
82
|
getAgentRatings(address: string): Promise<any[]>;
|
|
75
83
|
/**
|
|
76
|
-
* Register agent in on-chain registry
|
|
84
|
+
* Register agent in on-chain registry - REAL! 🦞
|
|
77
85
|
*/
|
|
78
86
|
registerAgent(options: {
|
|
79
87
|
name: string;
|
|
@@ -82,11 +90,11 @@ export declare class LobsterAgent {
|
|
|
82
90
|
metadata?: Record<string, any>;
|
|
83
91
|
}): Promise<void>;
|
|
84
92
|
/**
|
|
85
|
-
* Discover agents
|
|
93
|
+
* Discover agents - REAL on-chain! 🦞
|
|
86
94
|
*/
|
|
87
95
|
discoverAgents(options: DiscoverOptions): Promise<Agent[]>;
|
|
88
96
|
/**
|
|
89
|
-
* Get agent details
|
|
97
|
+
* Get agent details - REAL on-chain! 🦞
|
|
90
98
|
*/
|
|
91
99
|
getAgent(address: string): Promise<Agent | null>;
|
|
92
100
|
/**
|
|
@@ -121,7 +129,7 @@ export declare class LobsterAgent {
|
|
|
121
129
|
*/
|
|
122
130
|
getTransfer(id: string): Promise<Transfer | null>;
|
|
123
131
|
/**
|
|
124
|
-
* List transfer history
|
|
132
|
+
* List transfer history - queries USDC Transfer events! 🦞
|
|
125
133
|
*/
|
|
126
134
|
listTransfers(options?: {
|
|
127
135
|
limit?: number;
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../lib/agent.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../lib/agent.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EACV,aAAa,EACb,MAAM,EACN,QAAQ,EACR,MAAM,EACN,UAAU,EACV,KAAK,EACL,eAAe,EACf,aAAa,EACb,eAAe,EACf,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAMjB,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAgB;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAyB;IAC1C,OAAO,CAAC,gBAAgB,CAAC,CAAmB;gBAEhC,MAAM,GAAE,aAAkB;IAQtC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBjC;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC;IAKrC;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAgBlC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC;IAuBnC;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAsBtC;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1C;;;OAGG;IACG,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqD3D;;OAEG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIlE;;OAEG;IACG,YAAY,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IA2C3D;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnF;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUnD;;OAEG;IACG,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjF;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBzD;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAUpH;;OAEG;IACG,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAiBtD;;OAEG;IACG,aAAa,CAAC,OAAO,EAAE;QAC3B,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAChC,GAAG,OAAO,CAAC,IAAI,CAAC;IAajB;;OAEG;IACG,cAAc,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAmChE;;OAEG;IACG,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IA8BtD;;OAEG;IACH,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAIjD;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,GAAG,CAAC;IAKzF;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI;IAI5E;;OAEG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,OAAO,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,CAAC;IAW9F;;OAEG;IACG,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAIvD;;OAEG;IACG,aAAa,CAAC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;CAgD3G"}
|