From e99074aad9df9aaff9a34be9859174e98065cfae Mon Sep 17 00:00:00 2001 From: Biokes <106444765+Biokes@users.noreply.github.com> Date: Mon, 15 Dec 2025 17:51:10 +0100 Subject: [PATCH 1/4] [dev_contract] FIXES: change hardhat keystore vars --- contract/hardhat.config.ts | 2 +- contract/pnpm-lock.yaml | 16 ++++++++-------- contract/scripts/verifier.ts | 11 +++++++++++ 3 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 contract/scripts/verifier.ts diff --git a/contract/hardhat.config.ts b/contract/hardhat.config.ts index 15fec3f..07c0bf9 100644 --- a/contract/hardhat.config.ts +++ b/contract/hardhat.config.ts @@ -24,7 +24,7 @@ export default defineConfig({ type: "http", chainId: 8453, url: configVariable("BASE_RPC_URL"), - accounts: [configVariable("BASE_PRIVATE_KEY")] + accounts: [configVariable("BASE_NAME_WALLET_PRIVATE_KEY")] } }, verify: { diff --git a/contract/pnpm-lock.yaml b/contract/pnpm-lock.yaml index c369607..24ba5c5 100644 --- a/contract/pnpm-lock.yaml +++ b/contract/pnpm-lock.yaml @@ -34,7 +34,7 @@ importers: version: 10.0.10 '@types/node': specifier: ^22.8.5 - version: 22.19.2 + version: 22.19.3 chai: specifier: ^5.1.2 version: 5.3.3 @@ -504,8 +504,8 @@ packages: '@types/mocha@10.0.10': resolution: {integrity: sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==} - '@types/node@22.19.2': - resolution: {integrity: sha512-LPM2G3Syo1GLzXLGJAKdqoU35XvrWzGJ21/7sgZTUpbkBaOasTj8tjwn6w+hCkqaa1TfJ/w67rJSwYItlJ2mYw==} + '@types/node@22.19.3': + resolution: {integrity: sha512-1N9SBnWYOJTrNZCdh/yJE+t910Y128BoyY+zBLWhL3r0TYzlTmFdXrPwHL9DyFZmlEXNQQolTZh3KHV31QDhyA==} '@types/node@22.7.5': resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} @@ -718,8 +718,8 @@ packages: resolution: {integrity: sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==} engines: {node: '>=14.0.0'} - fast-equals@5.3.4: - resolution: {integrity: sha512-d+yU9iNQbbC098NOuMlAIth/g+owbpX/uuOkH/DQcC2fMMyjOlX292Op29DrUKq388m4UUyOdWakUH/msGypOg==} + fast-equals@5.4.0: + resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==} engines: {node: '>=6.0.0'} find-replace@3.0.0: @@ -1599,7 +1599,7 @@ snapshots: debug: 4.4.3(supports-color@8.1.1) env-paths: 2.2.1 ethereum-cryptography: 2.2.1 - fast-equals: 5.3.4 + fast-equals: 5.4.0 json-stream-stringify: 3.1.6 rfdc: 1.4.1 undici: 6.22.0 @@ -1721,7 +1721,7 @@ snapshots: '@types/mocha@10.0.10': {} - '@types/node@22.19.2': + '@types/node@22.19.3': dependencies: undici-types: 6.21.0 @@ -1946,7 +1946,7 @@ snapshots: - bufferutil - utf-8-validate - fast-equals@5.3.4: {} + fast-equals@5.4.0: {} find-replace@3.0.0: dependencies: diff --git a/contract/scripts/verifier.ts b/contract/scripts/verifier.ts new file mode 100644 index 0000000..f35a55f --- /dev/null +++ b/contract/scripts/verifier.ts @@ -0,0 +1,11 @@ + import hre from "hardhat"; + import { verifyContract } from "@nomicfoundation/hardhat-verify/verify"; + + await verifyContract( + { + address: "", + constructorArgs: [], + provider: "etherscan", + }, + hre, + ); \ No newline at end of file From 5ae7039c037945f5f66c721a5b39a326029e1425 Mon Sep 17 00:00:00 2001 From: Biokes <106444765+Biokes@users.noreply.github.com> Date: Mon, 15 Dec 2025 18:24:59 +0100 Subject: [PATCH 2/4] [dev_contract] update: added mainnet forking and dryruning tx functio to knwo deployment cost --- contract/hardhat.config.ts | 7 + .../artifacts/PingPongModule#PingPong.json | 913 ++++++++ ...239cc89d0ab808faab4e7912cd4bb4c911e24.json | 51 + .../deployments/chain-8453/journal.jsonl | 4 + contract/pnpm-lock.yaml | 1919 +++++++++++++++++ contract/scripts/txDryrunning.ts | 26 + 6 files changed, 2920 insertions(+) create mode 100644 contract/ignition/deployments/chain-8453/artifacts/PingPongModule#PingPong.json create mode 100644 contract/ignition/deployments/chain-8453/build-info/solc-0_8_28-a0e239cc89d0ab808faab4e7912cd4bb4c911e24.json create mode 100644 contract/ignition/deployments/chain-8453/journal.jsonl create mode 100644 contract/scripts/txDryrunning.ts diff --git a/contract/hardhat.config.ts b/contract/hardhat.config.ts index 07c0bf9..9120c76 100644 --- a/contract/hardhat.config.ts +++ b/contract/hardhat.config.ts @@ -25,6 +25,13 @@ export default defineConfig({ chainId: 8453, url: configVariable("BASE_RPC_URL"), accounts: [configVariable("BASE_NAME_WALLET_PRIVATE_KEY")] + }, + baseFork: { + type: "edr-simulated", + forking: { + url: configVariable("BASE_RPC_URL"), + blockNumber: 19000000 + } } }, verify: { diff --git a/contract/ignition/deployments/chain-8453/artifacts/PingPongModule#PingPong.json b/contract/ignition/deployments/chain-8453/artifacts/PingPongModule#PingPong.json new file mode 100644 index 0000000..7b46726 --- /dev/null +++ b/contract/ignition/deployments/chain-8453/artifacts/PingPongModule#PingPong.json @@ -0,0 +1,913 @@ +{ + "_format": "hh3-artifact-1", + "contractName": "PingPong", + "sourceName": "contracts/PingPong.sol", + "abi": [ + { + "inputs": [], + "stateMutability": "nonpayable", + "type": "constructor" + }, + { + "inputs": [], + "name": "CannotJoinOwnGame", + "type": "error" + }, + { + "inputs": [], + "name": "GameExpired", + "type": "error" + }, + { + "inputs": [], + "name": "GameNotFound", + "type": "error" + }, + { + "inputs": [], + "name": "GameplayPaused", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientBalance", + "type": "error" + }, + { + "inputs": [], + "name": "InsufficientPowerups", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidAmount", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidPowerupType", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidStatus", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidStatusTransition", + "type": "error" + }, + { + "inputs": [], + "name": "InvalidWinner", + "type": "error" + }, + { + "inputs": [], + "name": "NotGameParticipant", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "owner", + "type": "address" + } + ], + "name": "OwnableInvalidOwner", + "type": "error" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "account", + "type": "address" + } + ], + "name": "OwnableUnauthorizedAccount", + "type": "error" + }, + { + "inputs": [], + "name": "Player2NotJoined", + "type": "error" + }, + { + "inputs": [], + "name": "Player2SlotNotEmpty", + "type": "error" + }, + { + "inputs": [], + "name": "PlayerGamesLimitExceeded", + "type": "error" + }, + { + "inputs": [], + "name": "ReentrancyGuardReentrantCall", + "type": "error" + }, + { + "inputs": [], + "name": "TransferFailed", + "type": "error" + }, + { + "inputs": [], + "name": "Unauthorized", + "type": "error" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + } + ], + "name": "FeeWithdrawn", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "address", + "name": "player1", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stakeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "createdAt", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "status", + "type": "uint8" + } + ], + "name": "GameCreated", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "address", + "name": "winner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "loser", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "winnerAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "devFeeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "completedAt", + "type": "uint64" + } + ], + "name": "GameEnded", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "address", + "name": "player2", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "stakeAmount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + } + ], + "name": "GameJoined", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "previousOwner", + "type": "address" + }, + { + "indexed": true, + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "OwnershipTransferred", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "powerupType", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "countGranted", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "totalCount", + "type": "uint64" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + } + ], + "name": "PowerupGranted", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "address", + "name": "player", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint8", + "name": "powerupType", + "type": "uint8" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + } + ], + "name": "PowerupUsed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "address", + "name": "player", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + } + ], + "name": "RefundClaimed", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": true, + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + }, + { + "indexed": true, + "internalType": "address", + "name": "player", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint256", + "name": "amount", + "type": "uint256" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + } + ], + "name": "TimeoutRefund", + "type": "event" + }, + { + "anonymous": false, + "inputs": [ + { + "indexed": false, + "internalType": "bool", + "name": "paused", + "type": "bool" + }, + { + "indexed": true, + "internalType": "address", + "name": "toggledBy", + "type": "address" + }, + { + "indexed": false, + "internalType": "uint64", + "name": "timestamp", + "type": "uint64" + } + ], + "name": "VaultPauseToggled", + "type": "event" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + } + ], + "name": "claimTimeoutRefund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "createGame", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "devFeeVault", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "winner", + "type": "address" + } + ], + "name": "endGame", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "player", + "type": "address" + } + ], + "name": "getAllPowerups", + "outputs": [ + { + "internalType": "uint64", + "name": "padStretch", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "multiball", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "shield", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getDevFees", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + } + ], + "name": "getGame", + "outputs": [ + { + "components": [ + { + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + }, + { + "internalType": "address", + "name": "player1", + "type": "address" + }, + { + "internalType": "address", + "name": "player2", + "type": "address" + }, + { + "internalType": "uint256", + "name": "stakeAmount", + "type": "uint256" + }, + { + "internalType": "uint256", + "name": "escrowBalance", + "type": "uint256" + }, + { + "internalType": "uint8", + "name": "status", + "type": "uint8" + }, + { + "internalType": "address", + "name": "winner", + "type": "address" + }, + { + "internalType": "uint64", + "name": "createdAt", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "completedAt", + "type": "uint64" + } + ], + "internalType": "struct PingPong.GameSession", + "name": "", + "type": "tuple" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + } + ], + "name": "getGameEscrow", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + } + ], + "name": "getGameStatus", + "outputs": [ + { + "internalType": "uint8", + "name": "", + "type": "uint8" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "player", + "type": "address" + } + ], + "name": "getPlayerGameCount", + "outputs": [ + { + "internalType": "uint256", + "name": "", + "type": "uint256" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "player", + "type": "address" + } + ], + "name": "getPlayerGames", + "outputs": [ + { + "internalType": "uint64[]", + "name": "", + "type": "uint64[]" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "player", + "type": "address" + }, + { + "internalType": "uint8", + "name": "powerupType", + "type": "uint8" + } + ], + "name": "getPowerupCount", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "getTotalGames", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "recipient", + "type": "address" + }, + { + "internalType": "uint8", + "name": "powerupType", + "type": "uint8" + } + ], + "name": "grantPowerup", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "name": "inventories", + "outputs": [ + { + "internalType": "uint64", + "name": "padStretchCount", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "multiballCount", + "type": "uint64" + }, + { + "internalType": "uint64", + "name": "shieldCount", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + } + ], + "name": "isGameExists", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "isVaultPaused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + } + ], + "name": "joinGame", + "outputs": [], + "stateMutability": "payable", + "type": "function" + }, + { + "inputs": [], + "name": "owner", + "outputs": [ + { + "internalType": "address", + "name": "", + "type": "address" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "paused", + "outputs": [ + { + "internalType": "bool", + "name": "", + "type": "bool" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [], + "name": "renounceOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + } + ], + "name": "requestRefund", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "togglePause", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "totalGames", + "outputs": [ + { + "internalType": "uint64", + "name": "", + "type": "uint64" + } + ], + "stateMutability": "view", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "address", + "name": "newOwner", + "type": "address" + } + ], + "name": "transferOwnership", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [ + { + "internalType": "uint64", + "name": "gameId", + "type": "uint64" + }, + { + "internalType": "uint8", + "name": "powerupType", + "type": "uint8" + } + ], + "name": "usePowerup", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "inputs": [], + "name": "withdrawDevFees", + "outputs": [], + "stateMutability": "nonpayable", + "type": "function" + }, + { + "stateMutability": "payable", + "type": "receive" + } + ], + "bytecode": "0x6080604052348015600e575f5ffd5b5060015f553380603757604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b603e816060565b5060018054600160a01b600160e01b03191690556003805460ff1916905560b1565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b612234806100be5f395ff3fe608060405260043610610198575f3560e01c8063715018a6116100e7578063c4ae316811610087578063ec20ee2611610062578063ec20ee2614610577578063f25764b514610596578063f2fde38b146105ca578063f90c5eea146105e9575f5ffd5b8063c4ae316814610525578063cf79510b14610539578063db06587d14610558575f5ffd5b80637fcf64fe116100c25780637fcf64fe1461049a5780638da5cb5b146104b95780639017006e146104e0578063abb9763c146104f4575f5ffd5b8063715018a61461042a5780637255d7291461043e57806376c719dd14610446575f5ffd5b80632c4e591b116101525780635bd4349b1161012d5780635bd4349b146103425780635c975abb14610366578063698aa65c1461037f5780636f5de156146103f3575f5ffd5b80632c4e591b146102c35780633dc558cf146103015780634904190314610316575f5ffd5b8063098401f5146101ee5780630da590d4146102165780630f2948551461022c578063102901151461024b578063129daf841461026a57806317abc28914610296575f5ffd5b366101ea5760405162461bcd60e51b815260206004820152601f60248201527f5573652063726561746547616d65282920746f2070617274696369706174650060448201526064015b60405180910390fd5b5f5ffd5b3480156101f9575f5ffd5b5060035460ff165b60405190151581526020015b60405180910390f35b348015610221575f5ffd5b5061022a6105fc565b005b348015610237575f5ffd5b5061022a610246366004611f63565b610704565b348015610256575f5ffd5b5061022a610265366004611f93565b61090c565b348015610275575f5ffd5b50610289610284366004611fda565b610bea565b60405161020d9190611ff3565b3480156102a1575f5ffd5b506102b56102b0366004611f63565b610c84565b60405190815260200161020d565b3480156102ce575f5ffd5b506001546102e990600160a01b90046001600160401b031681565b6040516001600160401b03909116815260200161020d565b34801561030c575f5ffd5b506102b560025481565b348015610321575f5ffd5b50610335610330366004611f63565b610cdd565b60405161020d919061203e565b34801561034d575f5ffd5b50600154600160a01b90046001600160401b03166102e9565b348015610371575f5ffd5b506003546102019060ff1681565b34801561038a575f5ffd5b506103c9610399366004611fda565b60066020525f90815260409020546001600160401b0380821691600160401b8104821691600160801b9091041683565b604080516001600160401b039485168152928416602084015292169181019190915260600161020d565b3480156103fe575f5ffd5b5061020161040d366004611f63565b6001600160401b03165f9081526005602052604090205460ff1690565b348015610435575f5ffd5b5061022a610e01565b61022a610e12565b348015610451575f5ffd5b506103c9610460366004611fda565b6001600160a01b03165f908152600660205260409020546001600160401b0380821692600160401b8304821692600160801b900490911690565b3480156104a5575f5ffd5b506102e96104b4366004612101565b61119e565b3480156104c4575f5ffd5b506001546040516001600160a01b03909116815260200161020d565b3480156104eb575f5ffd5b506002546102b5565b3480156104ff575f5ffd5b5061051361050e366004611f63565b611224565b60405160ff909116815260200161020d565b348015610530575f5ffd5b5061022a611281565b348015610544575f5ffd5b5061022a610553366004612101565b6112e8565b348015610563575f5ffd5b5061022a61057236600461211b565b6114d8565b348015610582575f5ffd5b5061022a610591366004611f63565b6117e8565b3480156105a1575f5ffd5b506102b56105b0366004611fda565b6001600160a01b03165f9081526007602052604090205490565b3480156105d5575f5ffd5b5061022a6105e4366004611fda565b611b92565b61022a6105f7366004611f63565b611bcc565b610604611df6565b61060c611e23565b6002545f8190036106305760405163162908e360e11b815260040160405180910390fd5b5f60028190556001546040516001600160a01b039091169083908381818185875af1925050503d805f8114610680576040519150601f19603f3d011682016040523d82523d5f602084013e610685565b606091505b50509050806106a7576040516312171d8360e31b815260040160405180910390fd5b600154604080518481526001600160401b03421660208201526001600160a01b03909216917fc6918492d588315653c34b7c4dbca12386a4d32dd57de8c3d242b504f4cf5293910160405180910390a2505061070260015f55565b565b60035460ff1615610728576040516386fad90560e01b815260040160405180910390fd5b610730611e23565b6001600160401b0381165f90815260056020526040902054819060ff1661076a576040516309b3c62760e21b815260040160405180910390fd5b6001600160401b0382165f9081526004602081905260409091209081015460ff166001146107ab576040516307a92f1960e51b815260040160405180910390fd5b8054600160401b90046001600160a01b031633146107db576040516282b42960e81b815260040160405180910390fd5b60038101545f8190036108015760405163162908e360e11b815260040160405180910390fd5b6004808301546108169160ff90911690611e4b565b5f600383018190556004808401805460ff1916909117905560058301805467ffffffffffffffff1916426001600160401b0316179055604051339083908381818185875af1925050503d805f8114610889576040519150601f19603f3d011682016040523d82523d5f602084013e61088e565b606091505b50509050806108b0576040516312171d8360e31b815260040160405180910390fd5b6005830154604080518481526001600160401b03928316602082015233928816917f6f7b439c90436071faa627b840014fd7c34c566593df29fd6143115d3e580a4c910160405180910390a35050505061090960015f55565b50565b60035460ff1615610930576040516386fad90560e01b815260040160405180910390fd5b610938611e23565b6001600160401b0382165f90815260056020526040902054829060ff16610972576040516309b3c62760e21b815260040160405180910390fd5b6001600160401b0383165f9081526004602052604090208054600160401b90046001600160a01b031633148015906109b7575060018101546001600160a01b03163314155b156109d55760405163753f25d760e11b815260040160405180910390fd5b600481015460ff166002146109fd576040516307a92f1960e51b815260040160405180910390fd5b60018360ff161080610a12575060038360ff16115b15610a3057604051631d47131560e31b815260040160405180910390fd5b335f9081526006602052604090205f1960ff851601610ab35780546001600160401b03165f03610a735760405163596d23cf60e01b815260040160405180910390fd5b80546001600160401b0316815f610a8983612157565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050610b8f565b60011960ff851601610b0e578054600160401b90046001600160401b03165f03610af05760405163596d23cf60e01b815260040160405180910390fd5b8054600160401b90046001600160401b0316816008610a8983612157565b60021960ff851601610b8f578054600160801b90046001600160401b03165f03610b4b5760405163596d23cf60e01b815260040160405180910390fd5b8054600160801b90046001600160401b0316816010610b6983612157565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6040805160ff861681526001600160401b0342811660208301523392908816917f9ee251bdc5d8f10aee078ec083e44fdcdbe23411b225b131d6e4f80a30c23015910160405180910390a3505050610be660015f55565b5050565b6001600160a01b0381165f90815260076020908152604091829020805483518184028101840190945280845260609392830182828015610c7857602002820191905f5260205f20905f905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411610c355790505b50505050509050919050565b6001600160401b0381165f90815260056020526040812054829060ff16610cbe576040516309b3c62760e21b815260040160405180910390fd5b50506001600160401b03165f9081526004602052604090206003015490565b60408051610120810182525f8082526020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905260e0830182905261010083018290526001600160401b0385168252600590529190912054829060ff16610d5c576040516309b3c62760e21b815260040160405180910390fd5b50506001600160401b039081165f9081526004602081815260409283902083516101208101855281548087168252600160401b90046001600160a01b0390811693820193909352600182015483169481019490945260028101546060850152600381015460808501529182015460ff811660a085015261010080820490921660c0850152600160a81b9004841660e08401526005909101549092169181019190915290565b610e09611df6565b6107025f611ef7565b60035460ff1615610e36576040516386fad90560e01b815260040160405180910390fd5b610e3e611e23565b345f03610e5e5760405163162908e360e11b815260040160405180910390fd5b5f6001601481819054906101000a90046001600160401b0316610e8090612178565b91906101000a8154816001600160401b0302191690836001600160401b0316021790559050604051806101200160405280826001600160401b03168152602001336001600160a01b031681526020015f6001600160a01b03168152602001348152602001348152602001600160ff1681526020015f6001600160a01b03168152602001426001600160401b031681526020015f6001600160401b031681525060045f836001600160401b03166001600160401b031681526020019081526020015f205f820151815f015f6101000a8154816001600160401b0302191690836001600160401b031602179055506020820151815f0160086101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151816001015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550606082015181600201556080820151816003015560a0820151816004015f6101000a81548160ff021916908360ff16021790555060c08201518160040160016101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e08201518160040160156101000a8154816001600160401b0302191690836001600160401b03160217905550610100820151816005015f6101000a8154816001600160401b0302191690836001600160401b03160217905550905050600160055f836001600160401b03166001600160401b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555061271060075f336001600160a01b03166001600160a01b031681526020019081526020015f20805490501061110557604051631003ffcb60e21b815260040160405180910390fd5b335f818152600760209081526040808320805460018082018355918552938390206004850401805460039095166008026101000a6001600160401b0381810219909616888716918202179091558251348152429095169385019390935290830152907f0dd77ad99d1c61a1e1104c233fe44286e0d2b45d88fc815d273988ce7d753b539060600160405180910390a35061070260015f55565b6001600160a01b0382165f9081526006602052604081205f1960ff8416016111d157546001600160401b0316905061121e565b60011960ff8416016111f55754600160401b90046001600160401b0316905061121e565b60021960ff8416016112195754600160801b90046001600160401b0316905061121e565b5f9150505b92915050565b6001600160401b0381165f90815260056020526040812054829060ff1661125e576040516309b3c62760e21b815260040160405180910390fd5b50506001600160401b03165f908152600460208190526040909120015460ff1690565b611289611df6565b6003805460ff8082161560ff1990921682179092556040805191909216151581526001600160401b034216602082015233917f86e564d44bf348b378b995e337f646d2e5730ce397b2fffe198e2c28a20df6b7910160405180910390a2565b6112f0611df6565b60018160ff161080611305575060038160ff16115b1561132357604051631d47131560e31b815260040160405180910390fd5b6001600160a01b03821661134a5760405163162908e360e11b815260040160405180910390fd5b6001600160a01b0382165f90815260066020526040812090805f1960ff8516016113b35782546001600160401b0316915081835f61138783612178565b82546101009290920a6001600160401b0381810219909316918316021790915584541691506114729050565b60011960ff851601611423578254600160401b90046001600160401b03169150818360086113e083612178565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050825f0160089054906101000a90046001600160401b03169050611472565b8254600160801b90046001600160401b031691508183601061144483612178565b82546101009290920a6001600160401b038181021990931691831602179091558454600160801b9004169150505b6040805160ff86168152600160208201526001600160401b03838116828401524216606082015290516001600160a01b038716917fcac74dc7a0c7838c42a2bbdcd01f4d60038158e6b598fce2f77186d2cc6220fb919081900360800190a25050505050565b6114e0611df6565b60035460ff1615611504576040516386fad90560e01b815260040160405180910390fd5b61150c611e23565b6001600160401b0382165f90815260056020526040902054829060ff16611546576040516309b3c62760e21b815260040160405180910390fd5b6001600160401b0383165f9081526004602081905260409091209081015460ff16600214611587576040516307a92f1960e51b815260040160405180910390fd5b60018101546001600160a01b03166115b25760405163e0f4a4a160e01b815260040160405180910390fd5b80546001600160a01b03848116600160401b90920416148015906115e6575060018101546001600160a01b03848116911614155b15611604576040516393a5f3c760e01b815260040160405180910390fd5b80600301545f0361162857604051631e9acf1760e31b815260040160405180910390fd5b600481015461163b9060ff166003611e4b565b60038101545f606461164e6005846121a2565b61165891906121b9565b90505f61166582846121d8565b90508160025f82825461167891906121eb565b90915550505f60038581018290556004860180546001600160a81b0319166101006001600160a01b038b81169182029290921790931790915560058701805467ffffffffffffffff1916426001600160401b03161790558654600160401b900416146116f5578454600160401b90046001600160a01b0316611704565b60018501546001600160a01b03165b90505f876001600160a01b0316836040515f6040518083038185875af1925050503d805f811461174f576040519150601f19603f3d011682016040523d82523d5f602084013e611754565b606091505b5050905080611776576040516312171d8360e31b815260040160405180910390fd5b600586015460408051858152602081018790526001600160401b039283168183015290516001600160a01b0385811693908c1692908d16917f2cd48d90bb27d8ba2b0c977c16bc101d1a2bc0072b6cfbf4ccd2868dc2c5297d9181900360600190a450505050505050610be660015f55565b6117f0611e23565b6001600160401b0381165f90815260056020526040902054819060ff1661182a576040516309b3c62760e21b815260040160405180910390fd5b60035460ff161561184e576040516386fad90560e01b815260040160405180910390fd5b6001600160401b0382165f90815260046020526040902080546001820154336001600160a01b03600160401b90930483168114929190911614811582611892575080155b156118af576040516282b42960e81b815260040160405180910390fd5b600483015460ff165f190161192357816118db576040516282b42960e81b815260040160405180910390fd5b60048301546118fe9062093a8090600160a81b90046001600160401b03166121eb565b42101561191e5760405163373fe3f360e21b815260040160405180910390fd5b61196f565b600483015460ff16600119016119565760048301546118fe9062093a8090600160a81b90046001600160401b03166121eb565b6040516307a92f1960e51b815260040160405180910390fd5b60038301545f8190036119955760405163162908e360e11b815260040160405180910390fd5b5f60038501556004808501805460ff1916909117905560058401805467ffffffffffffffff1916426001600160401b031617905560018401546001600160a01b031615611ac357600284015484546040515f91600160401b90046001600160a01b03169083908381818185875af1925050503d805f8114611a31576040519150601f19603f3d011682016040523d82523d5f602084013e611a36565b606091505b505060018701546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f8114611a89576040519150601f19603f3d011682016040523d82523d5f602084013e611a8e565b606091505b50509050811580611a9d575080155b15611abb576040516312171d8360e31b815260040160405180910390fd5b505050611b3c565b83546040515f91600160401b90046001600160a01b03169083908381818185875af1925050503d805f8114611b13576040519150601f19603f3d011682016040523d82523d5f602084013e611b18565b606091505b5050905080611b3a576040516312171d8360e31b815260040160405180910390fd5b505b604080518281526001600160401b0342811660208301523392908916917fde03c4ef6e0e64172e80ae98ef3d521fd8ef6c2c181131609a12e2c37e89f642910160405180910390a3505050505061090960015f55565b611b9a611df6565b6001600160a01b038116611bc357604051631e4fbdf760e01b81525f60048201526024016101e1565b61090981611ef7565b60035460ff1615611bf0576040516386fad90560e01b815260040160405180910390fd5b611bf8611e23565b6001600160401b0381165f90815260056020526040902054819060ff16611c32576040516309b3c62760e21b815260040160405180910390fd5b6001600160401b0382165f9081526004602081905260409091209081015460ff16600114611c73576040516307a92f1960e51b815260040160405180910390fd5b8054600160401b90046001600160a01b03163303611ca45760405163106a317d60e01b815260040160405180910390fd5b60018101546001600160a01b031615611cd0576040516302ae90bb60e31b815260040160405180910390fd5b80600201543414611cf45760405163162908e360e11b815260040160405180910390fd5b6001810180546001600160a01b031916331790556003810180543491905f90611d1e9084906121eb565b909155505060048101805460ff19166002179055335f9081526007602052604090205461271011611d6257604051631003ffcb60e21b815260040160405180910390fd5b335f8181526007602090815260408083208054600181018255908452928290206004840401805460039094166008026101000a6001600160401b0381810219909516898616918202179091558151348152429094169284019290925290917f2dc491190943a680b1825d2c1d50dbcedf88ed55f769142cf969caa884b66cdf910160405180910390a3505061090960015f55565b6001546001600160a01b031633146107025760405163118cdaa760e01b81523360048201526024016101e1565b60025f5403611e4557604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f60ff83166001148015611e62575060ff82166002145b80611e7e575060ff83166001148015611e7e575060ff82166004145b80611e9a575060ff83166002148015611e9a575060ff82166003145b80611eb6575060ff83166002148015611eb6575060ff82166004145b80611ed2575060ff83166001148015611ed2575060ff82166004145b905080611ef25760405163088bd32360e11b815260040160405180910390fd5b505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80356001600160401b0381168114611f5e575f5ffd5b919050565b5f60208284031215611f73575f5ffd5b611f7c82611f48565b9392505050565b803560ff81168114611f5e575f5ffd5b5f5f60408385031215611fa4575f5ffd5b611fad83611f48565b9150611fbb60208401611f83565b90509250929050565b80356001600160a01b0381168114611f5e575f5ffd5b5f60208284031215611fea575f5ffd5b611f7c82611fc4565b602080825282518282018190525f918401906040840190835b818110156120335783516001600160401b031683526020938401939092019160010161200c565b509095945050505050565b81516001600160401b031681526020808301516001600160a01b03169082015260408083015161012083019161207e908401826001600160a01b03169052565b50606083015160608301526080830151608083015260a08301516120a760a084018260ff169052565b5060c08301516120c260c08401826001600160a01b03169052565b5060e08301516120dd60e08401826001600160401b03169052565b506101008301516120fa6101008401826001600160401b03169052565b5092915050565b5f5f60408385031215612112575f5ffd5b611fad83611fc4565b5f5f6040838503121561212c575f5ffd5b61213583611f48565b9150611fbb60208401611fc4565b634e487b7160e01b5f52601160045260245ffd5b5f6001600160401b0382168061216f5761216f612143565b5f190192915050565b5f6001600160401b0382166001600160401b03810361219957612199612143565b60010192915050565b808202811582820484141761121e5761121e612143565b5f826121d357634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561121e5761121e612143565b8082018082111561121e5761121e61214356fea264697066735822122010d993ac83d1f5b992840a958edcd787ff454876bda2b749c24f287d4c933b3464736f6c634300081c0033", + "deployedBytecode": "0x608060405260043610610198575f3560e01c8063715018a6116100e7578063c4ae316811610087578063ec20ee2611610062578063ec20ee2614610577578063f25764b514610596578063f2fde38b146105ca578063f90c5eea146105e9575f5ffd5b8063c4ae316814610525578063cf79510b14610539578063db06587d14610558575f5ffd5b80637fcf64fe116100c25780637fcf64fe1461049a5780638da5cb5b146104b95780639017006e146104e0578063abb9763c146104f4575f5ffd5b8063715018a61461042a5780637255d7291461043e57806376c719dd14610446575f5ffd5b80632c4e591b116101525780635bd4349b1161012d5780635bd4349b146103425780635c975abb14610366578063698aa65c1461037f5780636f5de156146103f3575f5ffd5b80632c4e591b146102c35780633dc558cf146103015780634904190314610316575f5ffd5b8063098401f5146101ee5780630da590d4146102165780630f2948551461022c578063102901151461024b578063129daf841461026a57806317abc28914610296575f5ffd5b366101ea5760405162461bcd60e51b815260206004820152601f60248201527f5573652063726561746547616d65282920746f2070617274696369706174650060448201526064015b60405180910390fd5b5f5ffd5b3480156101f9575f5ffd5b5060035460ff165b60405190151581526020015b60405180910390f35b348015610221575f5ffd5b5061022a6105fc565b005b348015610237575f5ffd5b5061022a610246366004611f63565b610704565b348015610256575f5ffd5b5061022a610265366004611f93565b61090c565b348015610275575f5ffd5b50610289610284366004611fda565b610bea565b60405161020d9190611ff3565b3480156102a1575f5ffd5b506102b56102b0366004611f63565b610c84565b60405190815260200161020d565b3480156102ce575f5ffd5b506001546102e990600160a01b90046001600160401b031681565b6040516001600160401b03909116815260200161020d565b34801561030c575f5ffd5b506102b560025481565b348015610321575f5ffd5b50610335610330366004611f63565b610cdd565b60405161020d919061203e565b34801561034d575f5ffd5b50600154600160a01b90046001600160401b03166102e9565b348015610371575f5ffd5b506003546102019060ff1681565b34801561038a575f5ffd5b506103c9610399366004611fda565b60066020525f90815260409020546001600160401b0380821691600160401b8104821691600160801b9091041683565b604080516001600160401b039485168152928416602084015292169181019190915260600161020d565b3480156103fe575f5ffd5b5061020161040d366004611f63565b6001600160401b03165f9081526005602052604090205460ff1690565b348015610435575f5ffd5b5061022a610e01565b61022a610e12565b348015610451575f5ffd5b506103c9610460366004611fda565b6001600160a01b03165f908152600660205260409020546001600160401b0380821692600160401b8304821692600160801b900490911690565b3480156104a5575f5ffd5b506102e96104b4366004612101565b61119e565b3480156104c4575f5ffd5b506001546040516001600160a01b03909116815260200161020d565b3480156104eb575f5ffd5b506002546102b5565b3480156104ff575f5ffd5b5061051361050e366004611f63565b611224565b60405160ff909116815260200161020d565b348015610530575f5ffd5b5061022a611281565b348015610544575f5ffd5b5061022a610553366004612101565b6112e8565b348015610563575f5ffd5b5061022a61057236600461211b565b6114d8565b348015610582575f5ffd5b5061022a610591366004611f63565b6117e8565b3480156105a1575f5ffd5b506102b56105b0366004611fda565b6001600160a01b03165f9081526007602052604090205490565b3480156105d5575f5ffd5b5061022a6105e4366004611fda565b611b92565b61022a6105f7366004611f63565b611bcc565b610604611df6565b61060c611e23565b6002545f8190036106305760405163162908e360e11b815260040160405180910390fd5b5f60028190556001546040516001600160a01b039091169083908381818185875af1925050503d805f8114610680576040519150601f19603f3d011682016040523d82523d5f602084013e610685565b606091505b50509050806106a7576040516312171d8360e31b815260040160405180910390fd5b600154604080518481526001600160401b03421660208201526001600160a01b03909216917fc6918492d588315653c34b7c4dbca12386a4d32dd57de8c3d242b504f4cf5293910160405180910390a2505061070260015f55565b565b60035460ff1615610728576040516386fad90560e01b815260040160405180910390fd5b610730611e23565b6001600160401b0381165f90815260056020526040902054819060ff1661076a576040516309b3c62760e21b815260040160405180910390fd5b6001600160401b0382165f9081526004602081905260409091209081015460ff166001146107ab576040516307a92f1960e51b815260040160405180910390fd5b8054600160401b90046001600160a01b031633146107db576040516282b42960e81b815260040160405180910390fd5b60038101545f8190036108015760405163162908e360e11b815260040160405180910390fd5b6004808301546108169160ff90911690611e4b565b5f600383018190556004808401805460ff1916909117905560058301805467ffffffffffffffff1916426001600160401b0316179055604051339083908381818185875af1925050503d805f8114610889576040519150601f19603f3d011682016040523d82523d5f602084013e61088e565b606091505b50509050806108b0576040516312171d8360e31b815260040160405180910390fd5b6005830154604080518481526001600160401b03928316602082015233928816917f6f7b439c90436071faa627b840014fd7c34c566593df29fd6143115d3e580a4c910160405180910390a35050505061090960015f55565b50565b60035460ff1615610930576040516386fad90560e01b815260040160405180910390fd5b610938611e23565b6001600160401b0382165f90815260056020526040902054829060ff16610972576040516309b3c62760e21b815260040160405180910390fd5b6001600160401b0383165f9081526004602052604090208054600160401b90046001600160a01b031633148015906109b7575060018101546001600160a01b03163314155b156109d55760405163753f25d760e11b815260040160405180910390fd5b600481015460ff166002146109fd576040516307a92f1960e51b815260040160405180910390fd5b60018360ff161080610a12575060038360ff16115b15610a3057604051631d47131560e31b815260040160405180910390fd5b335f9081526006602052604090205f1960ff851601610ab35780546001600160401b03165f03610a735760405163596d23cf60e01b815260040160405180910390fd5b80546001600160401b0316815f610a8983612157565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050610b8f565b60011960ff851601610b0e578054600160401b90046001600160401b03165f03610af05760405163596d23cf60e01b815260040160405180910390fd5b8054600160401b90046001600160401b0316816008610a8983612157565b60021960ff851601610b8f578054600160801b90046001600160401b03165f03610b4b5760405163596d23cf60e01b815260040160405180910390fd5b8054600160801b90046001600160401b0316816010610b6983612157565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6040805160ff861681526001600160401b0342811660208301523392908816917f9ee251bdc5d8f10aee078ec083e44fdcdbe23411b225b131d6e4f80a30c23015910160405180910390a3505050610be660015f55565b5050565b6001600160a01b0381165f90815260076020908152604091829020805483518184028101840190945280845260609392830182828015610c7857602002820191905f5260205f20905f905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411610c355790505b50505050509050919050565b6001600160401b0381165f90815260056020526040812054829060ff16610cbe576040516309b3c62760e21b815260040160405180910390fd5b50506001600160401b03165f9081526004602052604090206003015490565b60408051610120810182525f8082526020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905260e0830182905261010083018290526001600160401b0385168252600590529190912054829060ff16610d5c576040516309b3c62760e21b815260040160405180910390fd5b50506001600160401b039081165f9081526004602081815260409283902083516101208101855281548087168252600160401b90046001600160a01b0390811693820193909352600182015483169481019490945260028101546060850152600381015460808501529182015460ff811660a085015261010080820490921660c0850152600160a81b9004841660e08401526005909101549092169181019190915290565b610e09611df6565b6107025f611ef7565b60035460ff1615610e36576040516386fad90560e01b815260040160405180910390fd5b610e3e611e23565b345f03610e5e5760405163162908e360e11b815260040160405180910390fd5b5f6001601481819054906101000a90046001600160401b0316610e8090612178565b91906101000a8154816001600160401b0302191690836001600160401b0316021790559050604051806101200160405280826001600160401b03168152602001336001600160a01b031681526020015f6001600160a01b03168152602001348152602001348152602001600160ff1681526020015f6001600160a01b03168152602001426001600160401b031681526020015f6001600160401b031681525060045f836001600160401b03166001600160401b031681526020019081526020015f205f820151815f015f6101000a8154816001600160401b0302191690836001600160401b031602179055506020820151815f0160086101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151816001015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550606082015181600201556080820151816003015560a0820151816004015f6101000a81548160ff021916908360ff16021790555060c08201518160040160016101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e08201518160040160156101000a8154816001600160401b0302191690836001600160401b03160217905550610100820151816005015f6101000a8154816001600160401b0302191690836001600160401b03160217905550905050600160055f836001600160401b03166001600160401b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555061271060075f336001600160a01b03166001600160a01b031681526020019081526020015f20805490501061110557604051631003ffcb60e21b815260040160405180910390fd5b335f818152600760209081526040808320805460018082018355918552938390206004850401805460039095166008026101000a6001600160401b0381810219909616888716918202179091558251348152429095169385019390935290830152907f0dd77ad99d1c61a1e1104c233fe44286e0d2b45d88fc815d273988ce7d753b539060600160405180910390a35061070260015f55565b6001600160a01b0382165f9081526006602052604081205f1960ff8416016111d157546001600160401b0316905061121e565b60011960ff8416016111f55754600160401b90046001600160401b0316905061121e565b60021960ff8416016112195754600160801b90046001600160401b0316905061121e565b5f9150505b92915050565b6001600160401b0381165f90815260056020526040812054829060ff1661125e576040516309b3c62760e21b815260040160405180910390fd5b50506001600160401b03165f908152600460208190526040909120015460ff1690565b611289611df6565b6003805460ff8082161560ff1990921682179092556040805191909216151581526001600160401b034216602082015233917f86e564d44bf348b378b995e337f646d2e5730ce397b2fffe198e2c28a20df6b7910160405180910390a2565b6112f0611df6565b60018160ff161080611305575060038160ff16115b1561132357604051631d47131560e31b815260040160405180910390fd5b6001600160a01b03821661134a5760405163162908e360e11b815260040160405180910390fd5b6001600160a01b0382165f90815260066020526040812090805f1960ff8516016113b35782546001600160401b0316915081835f61138783612178565b82546101009290920a6001600160401b0381810219909316918316021790915584541691506114729050565b60011960ff851601611423578254600160401b90046001600160401b03169150818360086113e083612178565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050825f0160089054906101000a90046001600160401b03169050611472565b8254600160801b90046001600160401b031691508183601061144483612178565b82546101009290920a6001600160401b038181021990931691831602179091558454600160801b9004169150505b6040805160ff86168152600160208201526001600160401b03838116828401524216606082015290516001600160a01b038716917fcac74dc7a0c7838c42a2bbdcd01f4d60038158e6b598fce2f77186d2cc6220fb919081900360800190a25050505050565b6114e0611df6565b60035460ff1615611504576040516386fad90560e01b815260040160405180910390fd5b61150c611e23565b6001600160401b0382165f90815260056020526040902054829060ff16611546576040516309b3c62760e21b815260040160405180910390fd5b6001600160401b0383165f9081526004602081905260409091209081015460ff16600214611587576040516307a92f1960e51b815260040160405180910390fd5b60018101546001600160a01b03166115b25760405163e0f4a4a160e01b815260040160405180910390fd5b80546001600160a01b03848116600160401b90920416148015906115e6575060018101546001600160a01b03848116911614155b15611604576040516393a5f3c760e01b815260040160405180910390fd5b80600301545f0361162857604051631e9acf1760e31b815260040160405180910390fd5b600481015461163b9060ff166003611e4b565b60038101545f606461164e6005846121a2565b61165891906121b9565b90505f61166582846121d8565b90508160025f82825461167891906121eb565b90915550505f60038581018290556004860180546001600160a81b0319166101006001600160a01b038b81169182029290921790931790915560058701805467ffffffffffffffff1916426001600160401b03161790558654600160401b900416146116f5578454600160401b90046001600160a01b0316611704565b60018501546001600160a01b03165b90505f876001600160a01b0316836040515f6040518083038185875af1925050503d805f811461174f576040519150601f19603f3d011682016040523d82523d5f602084013e611754565b606091505b5050905080611776576040516312171d8360e31b815260040160405180910390fd5b600586015460408051858152602081018790526001600160401b039283168183015290516001600160a01b0385811693908c1692908d16917f2cd48d90bb27d8ba2b0c977c16bc101d1a2bc0072b6cfbf4ccd2868dc2c5297d9181900360600190a450505050505050610be660015f55565b6117f0611e23565b6001600160401b0381165f90815260056020526040902054819060ff1661182a576040516309b3c62760e21b815260040160405180910390fd5b60035460ff161561184e576040516386fad90560e01b815260040160405180910390fd5b6001600160401b0382165f90815260046020526040902080546001820154336001600160a01b03600160401b90930483168114929190911614811582611892575080155b156118af576040516282b42960e81b815260040160405180910390fd5b600483015460ff165f190161192357816118db576040516282b42960e81b815260040160405180910390fd5b60048301546118fe9062093a8090600160a81b90046001600160401b03166121eb565b42101561191e5760405163373fe3f360e21b815260040160405180910390fd5b61196f565b600483015460ff16600119016119565760048301546118fe9062093a8090600160a81b90046001600160401b03166121eb565b6040516307a92f1960e51b815260040160405180910390fd5b60038301545f8190036119955760405163162908e360e11b815260040160405180910390fd5b5f60038501556004808501805460ff1916909117905560058401805467ffffffffffffffff1916426001600160401b031617905560018401546001600160a01b031615611ac357600284015484546040515f91600160401b90046001600160a01b03169083908381818185875af1925050503d805f8114611a31576040519150601f19603f3d011682016040523d82523d5f602084013e611a36565b606091505b505060018701546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f8114611a89576040519150601f19603f3d011682016040523d82523d5f602084013e611a8e565b606091505b50509050811580611a9d575080155b15611abb576040516312171d8360e31b815260040160405180910390fd5b505050611b3c565b83546040515f91600160401b90046001600160a01b03169083908381818185875af1925050503d805f8114611b13576040519150601f19603f3d011682016040523d82523d5f602084013e611b18565b606091505b5050905080611b3a576040516312171d8360e31b815260040160405180910390fd5b505b604080518281526001600160401b0342811660208301523392908916917fde03c4ef6e0e64172e80ae98ef3d521fd8ef6c2c181131609a12e2c37e89f642910160405180910390a3505050505061090960015f55565b611b9a611df6565b6001600160a01b038116611bc357604051631e4fbdf760e01b81525f60048201526024016101e1565b61090981611ef7565b60035460ff1615611bf0576040516386fad90560e01b815260040160405180910390fd5b611bf8611e23565b6001600160401b0381165f90815260056020526040902054819060ff16611c32576040516309b3c62760e21b815260040160405180910390fd5b6001600160401b0382165f9081526004602081905260409091209081015460ff16600114611c73576040516307a92f1960e51b815260040160405180910390fd5b8054600160401b90046001600160a01b03163303611ca45760405163106a317d60e01b815260040160405180910390fd5b60018101546001600160a01b031615611cd0576040516302ae90bb60e31b815260040160405180910390fd5b80600201543414611cf45760405163162908e360e11b815260040160405180910390fd5b6001810180546001600160a01b031916331790556003810180543491905f90611d1e9084906121eb565b909155505060048101805460ff19166002179055335f9081526007602052604090205461271011611d6257604051631003ffcb60e21b815260040160405180910390fd5b335f8181526007602090815260408083208054600181018255908452928290206004840401805460039094166008026101000a6001600160401b0381810219909516898616918202179091558151348152429094169284019290925290917f2dc491190943a680b1825d2c1d50dbcedf88ed55f769142cf969caa884b66cdf910160405180910390a3505061090960015f55565b6001546001600160a01b031633146107025760405163118cdaa760e01b81523360048201526024016101e1565b60025f5403611e4557604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f60ff83166001148015611e62575060ff82166002145b80611e7e575060ff83166001148015611e7e575060ff82166004145b80611e9a575060ff83166002148015611e9a575060ff82166003145b80611eb6575060ff83166002148015611eb6575060ff82166004145b80611ed2575060ff83166001148015611ed2575060ff82166004145b905080611ef25760405163088bd32360e11b815260040160405180910390fd5b505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80356001600160401b0381168114611f5e575f5ffd5b919050565b5f60208284031215611f73575f5ffd5b611f7c82611f48565b9392505050565b803560ff81168114611f5e575f5ffd5b5f5f60408385031215611fa4575f5ffd5b611fad83611f48565b9150611fbb60208401611f83565b90509250929050565b80356001600160a01b0381168114611f5e575f5ffd5b5f60208284031215611fea575f5ffd5b611f7c82611fc4565b602080825282518282018190525f918401906040840190835b818110156120335783516001600160401b031683526020938401939092019160010161200c565b509095945050505050565b81516001600160401b031681526020808301516001600160a01b03169082015260408083015161012083019161207e908401826001600160a01b03169052565b50606083015160608301526080830151608083015260a08301516120a760a084018260ff169052565b5060c08301516120c260c08401826001600160a01b03169052565b5060e08301516120dd60e08401826001600160401b03169052565b506101008301516120fa6101008401826001600160401b03169052565b5092915050565b5f5f60408385031215612112575f5ffd5b611fad83611fc4565b5f5f6040838503121561212c575f5ffd5b61213583611f48565b9150611fbb60208401611fc4565b634e487b7160e01b5f52601160045260245ffd5b5f6001600160401b0382168061216f5761216f612143565b5f190192915050565b5f6001600160401b0382166001600160401b03810361219957612199612143565b60010192915050565b808202811582820484141761121e5761121e612143565b5f826121d357634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561121e5761121e612143565b8082018082111561121e5761121e61214356fea264697066735822122010d993ac83d1f5b992840a958edcd787ff454876bda2b749c24f287d4c933b3464736f6c634300081c0033", + "linkReferences": {}, + "deployedLinkReferences": {}, + "immutableReferences": {}, + "inputSourceName": "project/contracts/PingPong.sol", + "buildInfoId": "solc-0_8_28-a0e239cc89d0ab808faab4e7912cd4bb4c911e24" +} \ No newline at end of file diff --git a/contract/ignition/deployments/chain-8453/build-info/solc-0_8_28-a0e239cc89d0ab808faab4e7912cd4bb4c911e24.json b/contract/ignition/deployments/chain-8453/build-info/solc-0_8_28-a0e239cc89d0ab808faab4e7912cd4bb4c911e24.json new file mode 100644 index 0000000..2c34722 --- /dev/null +++ b/contract/ignition/deployments/chain-8453/build-info/solc-0_8_28-a0e239cc89d0ab808faab4e7912cd4bb4c911e24.json @@ -0,0 +1,51 @@ +{ + "_format": "hh3-sol-build-info-1", + "id": "solc-0_8_28-a0e239cc89d0ab808faab4e7912cd4bb4c911e24", + "solcVersion": "0.8.28", + "solcLongVersion": "0.8.28+commit.7893614a", + "userSourceNameMap": { + "contracts/PingPong.sol": "project/contracts/PingPong.sol" + }, + "input": { + "language": "Solidity", + "settings": { + "evmVersion": "cancun", + "optimizer": { + "enabled": true, + "runs": 200 + }, + "outputSelection": { + "*": { + "": [ + "ast" + ], + "*": [ + "abi", + "evm.bytecode", + "evm.deployedBytecode", + "evm.methodIdentifiers", + "metadata" + ] + } + }, + "remappings": [ + "project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/", + "project/:@openzeppelin/contracts/=npm/@openzeppelin/contracts@5.4.0/" + ] + }, + "sources": { + "npm/@openzeppelin/contracts@5.4.0/access/Ownable.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.0) (access/Ownable.sol)\n\npragma solidity ^0.8.20;\n\nimport {Context} from \"../utils/Context.sol\";\n\n/**\n * @dev Contract module which provides a basic access control mechanism, where\n * there is an account (an owner) that can be granted exclusive access to\n * specific functions.\n *\n * The initial owner is set to the address provided by the deployer. This can\n * later be changed with {transferOwnership}.\n *\n * This module is used through inheritance. It will make available the modifier\n * `onlyOwner`, which can be applied to your functions to restrict their use to\n * the owner.\n */\nabstract contract Ownable is Context {\n address private _owner;\n\n /**\n * @dev The caller account is not authorized to perform an operation.\n */\n error OwnableUnauthorizedAccount(address account);\n\n /**\n * @dev The owner is not a valid owner account. (eg. `address(0)`)\n */\n error OwnableInvalidOwner(address owner);\n\n event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n /**\n * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n */\n constructor(address initialOwner) {\n if (initialOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(initialOwner);\n }\n\n /**\n * @dev Throws if called by any account other than the owner.\n */\n modifier onlyOwner() {\n _checkOwner();\n _;\n }\n\n /**\n * @dev Returns the address of the current owner.\n */\n function owner() public view virtual returns (address) {\n return _owner;\n }\n\n /**\n * @dev Throws if the sender is not the owner.\n */\n function _checkOwner() internal view virtual {\n if (owner() != _msgSender()) {\n revert OwnableUnauthorizedAccount(_msgSender());\n }\n }\n\n /**\n * @dev Leaves the contract without owner. It will not be possible to call\n * `onlyOwner` functions. Can only be called by the current owner.\n *\n * NOTE: Renouncing ownership will leave the contract without an owner,\n * thereby disabling any functionality that is only available to the owner.\n */\n function renounceOwnership() public virtual onlyOwner {\n _transferOwnership(address(0));\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Can only be called by the current owner.\n */\n function transferOwnership(address newOwner) public virtual onlyOwner {\n if (newOwner == address(0)) {\n revert OwnableInvalidOwner(address(0));\n }\n _transferOwnership(newOwner);\n }\n\n /**\n * @dev Transfers ownership of the contract to a new account (`newOwner`).\n * Internal function without access restriction.\n */\n function _transferOwnership(address newOwner) internal virtual {\n address oldOwner = _owner;\n _owner = newOwner;\n emit OwnershipTransferred(oldOwner, newOwner);\n }\n}\n" + }, + "npm/@openzeppelin/contracts@5.4.0/utils/Context.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.0.1) (utils/Context.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Provides information about the current execution context, including the\n * sender of the transaction and its data. While these are generally available\n * via msg.sender and msg.data, they should not be accessed in such a direct\n * manner, since when dealing with meta-transactions the account sending and\n * paying for execution may not be the actual sender (as far as an application\n * is concerned).\n *\n * This contract is only required for intermediate, library-like contracts.\n */\nabstract contract Context {\n function _msgSender() internal view virtual returns (address) {\n return msg.sender;\n }\n\n function _msgData() internal view virtual returns (bytes calldata) {\n return msg.data;\n }\n\n function _contextSuffixLength() internal view virtual returns (uint256) {\n return 0;\n }\n}\n" + }, + "npm/@openzeppelin/contracts@5.4.0/utils/ReentrancyGuard.sol": { + "content": "// SPDX-License-Identifier: MIT\n// OpenZeppelin Contracts (last updated v5.1.0) (utils/ReentrancyGuard.sol)\n\npragma solidity ^0.8.20;\n\n/**\n * @dev Contract module that helps prevent reentrant calls to a function.\n *\n * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier\n * available, which can be applied to functions to make sure there are no nested\n * (reentrant) calls to them.\n *\n * Note that because there is a single `nonReentrant` guard, functions marked as\n * `nonReentrant` may not call one another. This can be worked around by making\n * those functions `private`, and then adding `external` `nonReentrant` entry\n * points to them.\n *\n * TIP: If EIP-1153 (transient storage) is available on the chain you're deploying at,\n * consider using {ReentrancyGuardTransient} instead.\n *\n * TIP: If you would like to learn more about reentrancy and alternative ways\n * to protect against it, check out our blog post\n * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].\n */\nabstract contract ReentrancyGuard {\n // Booleans are more expensive than uint256 or any type that takes up a full\n // word because each write operation emits an extra SLOAD to first read the\n // slot's contents, replace the bits taken up by the boolean, and then write\n // back. This is the compiler's defense against contract upgrades and\n // pointer aliasing, and it cannot be disabled.\n\n // The values being non-zero value makes deployment a bit more expensive,\n // but in exchange the refund on every call to nonReentrant will be lower in\n // amount. Since refunds are capped to a percentage of the total\n // transaction's gas, it is best to keep them low in cases like this one, to\n // increase the likelihood of the full refund coming into effect.\n uint256 private constant NOT_ENTERED = 1;\n uint256 private constant ENTERED = 2;\n\n uint256 private _status;\n\n /**\n * @dev Unauthorized reentrant call.\n */\n error ReentrancyGuardReentrantCall();\n\n constructor() {\n _status = NOT_ENTERED;\n }\n\n /**\n * @dev Prevents a contract from calling itself, directly or indirectly.\n * Calling a `nonReentrant` function from another `nonReentrant`\n * function is not supported. It is possible to prevent this from happening\n * by making the `nonReentrant` function external, and making it call a\n * `private` function that does the actual work.\n */\n modifier nonReentrant() {\n _nonReentrantBefore();\n _;\n _nonReentrantAfter();\n }\n\n function _nonReentrantBefore() private {\n // On the first call to nonReentrant, _status will be NOT_ENTERED\n if (_status == ENTERED) {\n revert ReentrancyGuardReentrantCall();\n }\n\n // Any calls to nonReentrant after this point will fail\n _status = ENTERED;\n }\n\n function _nonReentrantAfter() private {\n // By storing the original value once again, a refund is triggered (see\n // https://eips.ethereum.org/EIPS/eip-2200)\n _status = NOT_ENTERED;\n }\n\n /**\n * @dev Returns true if the reentrancy guard is currently set to \"entered\", which indicates there is a\n * `nonReentrant` function in the call stack.\n */\n function _reentrancyGuardEntered() internal view returns (bool) {\n return _status == ENTERED;\n }\n}\n" + }, + "project/contracts/PingPong.sol": { + "content": "// SPDX-License-Identifier: MIT\r\npragma solidity ^0.8.19;\r\n\r\nimport \"@openzeppelin/contracts/utils/ReentrancyGuard.sol\";\r\nimport \"@openzeppelin/contracts/access/Ownable.sol\";\r\n\r\ncontract PingPong is ReentrancyGuard, Ownable {\r\n\r\n uint8 private constant WAITING_STATUS = 1;\r\n uint8 private constant ACTIVE_STATUS = 2;\r\n uint8 private constant ENDED_STATUS = 3;\r\n uint8 private constant CANCELLED_STATUS = 4;\r\n\r\n uint8 private constant POWERUP_PAD_STRETCH = 1;\r\n uint8 private constant POWERUP_MULTIBALL = 2;\r\n uint8 private constant POWERUP_SHIELD = 3;\r\n\r\n uint256 private constant DEV_FEE_PERCENTAGE = 5;\r\n uint256 private constant GAME_TIMEOUT = 7 days;\r\n uint256 private constant MAX_PLAYER_GAMES = 10000;\r\n\r\n error GameplayPaused();\r\n error InvalidAmount();\r\n error Unauthorized();\r\n error Player2SlotNotEmpty();\r\n error CannotJoinOwnGame();\r\n error InvalidStatusTransition();\r\n error InsufficientBalance();\r\n error InvalidStatus();\r\n error Player2NotJoined();\r\n error InvalidPowerupType();\r\n error GameNotFound();\r\n error InsufficientPowerups();\r\n error TransferFailed();\r\n error GameExpired();\r\n error NotGameParticipant();\r\n error InvalidWinner();\r\n error PlayerGamesLimitExceeded();\r\n\r\n struct GameSession {\r\n uint64 gameId;\r\n address player1;\r\n address player2;\r\n uint256 stakeAmount;\r\n uint256 escrowBalance;\r\n uint8 status;\r\n address winner;\r\n uint64 createdAt;\r\n uint64 completedAt;\r\n }\r\n\r\n struct PowerupInventory {\r\n uint64 padStretchCount;\r\n uint64 multiballCount;\r\n uint64 shieldCount;\r\n }\r\n\r\n event GameCreated(\r\n uint64 indexed gameId,\r\n address indexed player1,\r\n uint256 stakeAmount,\r\n uint64 createdAt,\r\n uint8 status\r\n );\r\n\r\n event GameJoined(\r\n uint64 indexed gameId,\r\n address indexed player2,\r\n uint256 stakeAmount,\r\n uint64 timestamp\r\n );\r\n\r\n event GameEnded(\r\n uint64 indexed gameId,\r\n address indexed winner,\r\n address indexed loser,\r\n uint256 winnerAmount,\r\n uint256 devFeeAmount,\r\n uint64 completedAt\r\n );\r\n\r\n event RefundClaimed(\r\n uint64 indexed gameId,\r\n address indexed player,\r\n uint256 amount,\r\n uint64 timestamp\r\n );\r\n\r\n event TimeoutRefund(\r\n uint64 indexed gameId,\r\n address indexed player,\r\n uint256 amount,\r\n uint64 timestamp\r\n );\r\n\r\n event PowerupUsed(\r\n uint64 indexed gameId,\r\n address indexed player,\r\n uint8 powerupType,\r\n uint64 timestamp\r\n );\r\n\r\n event PowerupGranted(\r\n address indexed recipient,\r\n uint8 powerupType,\r\n uint64 countGranted,\r\n uint64 totalCount,\r\n uint64 timestamp\r\n );\r\n\r\n event VaultPauseToggled(\r\n bool paused,\r\n address indexed toggledBy,\r\n uint64 timestamp\r\n );\r\n\r\n event FeeWithdrawn(\r\n address indexed recipient,\r\n uint256 amount,\r\n uint64 timestamp\r\n );\r\n\r\n // ============ State Variables ============\r\n uint64 public totalGames;\r\n uint256 public devFeeVault;\r\n bool public paused;\r\n\r\n mapping(uint64 => GameSession) private games;\r\n mapping(uint64 => bool) private gameExists;\r\n mapping(address => PowerupInventory) public inventories;\r\n mapping(address => uint64[]) private playerGames;\r\n\r\n modifier notPaused() {\r\n if (paused) revert GameplayPaused();\r\n _;\r\n }\r\n\r\n modifier onlyGameExists(uint64 gameId) {\r\n if (!gameExists[gameId]) revert GameNotFound();\r\n _;\r\n }\r\n\r\n function validateStatusTransition(uint8 current, uint8 next) internal pure {\r\n bool valid = (current == WAITING_STATUS && next == ACTIVE_STATUS) ||\r\n (current == WAITING_STATUS && next == CANCELLED_STATUS) ||\r\n (current == ACTIVE_STATUS && next == ENDED_STATUS) ||\r\n (current == ACTIVE_STATUS && next == CANCELLED_STATUS) ||\r\n (current == WAITING_STATUS && next == CANCELLED_STATUS);\r\n if (!valid) revert InvalidStatusTransition();\r\n }\r\n\r\n constructor() Ownable(msg.sender) {\r\n totalGames = 0;\r\n paused = false;\r\n }\r\n\r\n function createGame() external payable notPaused nonReentrant {\r\n if (msg.value == 0) revert InvalidAmount();\r\n\r\n uint64 gameId = ++totalGames;\r\n\r\n games[gameId] = GameSession({\r\n gameId: gameId,\r\n player1: msg.sender,\r\n player2: address(0),\r\n stakeAmount: msg.value,\r\n escrowBalance: msg.value,\r\n status: WAITING_STATUS,\r\n winner: address(0),\r\n createdAt: uint64(block.timestamp),\r\n completedAt: 0\r\n });\r\n\r\n gameExists[gameId] = true;\r\n \r\n if (playerGames[msg.sender].length >= MAX_PLAYER_GAMES) {\r\n revert PlayerGamesLimitExceeded();\r\n }\r\n playerGames[msg.sender].push(gameId);\r\n\r\n emit GameCreated(\r\n gameId,\r\n msg.sender,\r\n msg.value,\r\n uint64(block.timestamp),\r\n WAITING_STATUS\r\n );\r\n }\r\n\r\n function joinGame(uint64 gameId)\r\n external\r\n payable\r\n notPaused\r\n nonReentrant\r\n onlyGameExists(gameId)\r\n {\r\n GameSession storage game = games[gameId];\r\n\r\n if (game.status != WAITING_STATUS) revert InvalidStatus();\r\n if (msg.sender == game.player1) revert CannotJoinOwnGame();\r\n if (game.player2 != address(0)) revert Player2SlotNotEmpty();\r\n if (msg.value != game.stakeAmount) revert InvalidAmount();\r\n\r\n game.player2 = msg.sender;\r\n game.escrowBalance += msg.value;\r\n game.status = ACTIVE_STATUS;\r\n\r\n if (playerGames[msg.sender].length >= MAX_PLAYER_GAMES) {\r\n revert PlayerGamesLimitExceeded();\r\n }\r\n playerGames[msg.sender].push(gameId);\r\n\r\n emit GameJoined(gameId, msg.sender, msg.value, uint64(block.timestamp));\r\n }\r\n\r\n function endGame(uint64 gameId, address winner)\r\n external\r\n onlyOwner\r\n notPaused\r\n nonReentrant\r\n onlyGameExists(gameId)\r\n {\r\n GameSession storage game = games[gameId];\r\n\r\n if (game.status != ACTIVE_STATUS) revert InvalidStatus();\r\n if (game.player2 == address(0)) revert Player2NotJoined();\r\n if (winner != game.player1 && winner != game.player2) revert InvalidWinner();\r\n if (game.escrowBalance == 0) revert InsufficientBalance();\r\n\r\n validateStatusTransition(game.status, ENDED_STATUS);\r\n\r\n uint256 totalBalance = game.escrowBalance;\r\n uint256 devFee = (totalBalance * DEV_FEE_PERCENTAGE) / 100;\r\n uint256 winnerAmount = totalBalance - devFee;\r\n\r\n devFeeVault += devFee;\r\n game.escrowBalance = 0;\r\n game.status = ENDED_STATUS;\r\n game.winner = winner;\r\n game.completedAt = uint64(block.timestamp);\r\n\r\n address loser = winner == game.player1 ? game.player2 : game.player1;\r\n\r\n (bool success, ) = winner.call{value: winnerAmount}(\"\");\r\n if (!success) revert TransferFailed();\r\n\r\n emit GameEnded(gameId, winner, loser, winnerAmount, devFee, game.completedAt);\r\n }\r\n\r\n function requestRefund(uint64 gameId)\r\n external\r\n notPaused\r\n nonReentrant\r\n onlyGameExists(gameId)\r\n {\r\n GameSession storage game = games[gameId];\r\n\r\n if (game.status != WAITING_STATUS) revert InvalidStatus();\r\n if (msg.sender != game.player1) revert Unauthorized();\r\n\r\n uint256 refundAmount = game.escrowBalance;\r\n if (refundAmount == 0) revert InvalidAmount();\r\n\r\n validateStatusTransition(game.status, CANCELLED_STATUS);\r\n\r\n game.escrowBalance = 0;\r\n game.status = CANCELLED_STATUS;\r\n game.completedAt = uint64(block.timestamp);\r\n\r\n (bool success, ) = msg.sender.call{value: refundAmount}(\"\");\r\n if (!success) revert TransferFailed();\r\n\r\n emit RefundClaimed(gameId, msg.sender, refundAmount, game.completedAt);\r\n }\r\n\r\n function claimTimeoutRefund(uint64 gameId)\r\n external\r\n nonReentrant\r\n onlyGameExists(gameId)\r\n notPaused\r\n {\r\n GameSession storage game = games[gameId];\r\n\r\n bool isPlayer1 = msg.sender == game.player1;\r\n bool isPlayer2 = msg.sender == game.player2;\r\n if (!isPlayer1 && !isPlayer2) revert Unauthorized();\r\n\r\n if (game.status == WAITING_STATUS) {\r\n if (!isPlayer1) revert Unauthorized();\r\n if (block.timestamp < game.createdAt + GAME_TIMEOUT) {\r\n revert GameExpired();\r\n }\r\n }\r\n else if (game.status == ACTIVE_STATUS) {\r\n if (block.timestamp < game.createdAt + GAME_TIMEOUT) {\r\n revert GameExpired();\r\n }\r\n } else {\r\n revert InvalidStatus();\r\n }\r\n\r\n uint256 refundAmount = game.escrowBalance;\r\n if (refundAmount == 0) revert InvalidAmount();\r\n\r\n game.escrowBalance = 0;\r\n game.status = CANCELLED_STATUS;\r\n game.completedAt = uint64(block.timestamp);\r\n\r\n if (game.player2 != address(0)) {\r\n uint256 playerRefund = game.stakeAmount;\r\n (bool success1, ) = game.player1.call{value: playerRefund}(\"\");\r\n (bool success2, ) = game.player2.call{value: playerRefund}(\"\");\r\n if (!success1 || !success2) revert TransferFailed();\r\n } else {\r\n (bool success, ) = game.player1.call{value: refundAmount}(\"\");\r\n if (!success) revert TransferFailed();\r\n }\r\n\r\n emit TimeoutRefund(gameId, msg.sender, refundAmount, uint64(block.timestamp));\r\n }\r\n\r\n function grantPowerup(address recipient, uint8 powerupType) external onlyOwner{\r\n if (powerupType < 1 || powerupType > 3) revert InvalidPowerupType();\r\n if (recipient == address(0)) revert InvalidAmount();\r\n\r\n PowerupInventory storage inventory = inventories[recipient];\r\n uint64 oldCount;\r\n uint64 newCount;\r\n\r\n if (powerupType == POWERUP_PAD_STRETCH) {\r\n oldCount = inventory.padStretchCount;\r\n inventory.padStretchCount++;\r\n newCount = inventory.padStretchCount;\r\n } else if (powerupType == POWERUP_MULTIBALL) {\r\n oldCount = inventory.multiballCount;\r\n inventory.multiballCount++;\r\n newCount = inventory.multiballCount;\r\n } else {\r\n oldCount = inventory.shieldCount;\r\n inventory.shieldCount++;\r\n newCount = inventory.shieldCount;\r\n }\r\n\r\n emit PowerupGranted(\r\n recipient,\r\n powerupType,\r\n 1, // delta granted\r\n newCount, // total count\r\n uint64(block.timestamp)\r\n );\r\n }\r\n\r\n function usePowerup(uint64 gameId, uint8 powerupType)\r\n external\r\n notPaused\r\n nonReentrant\r\n onlyGameExists(gameId)\r\n {\r\n GameSession storage game = games[gameId];\r\n if (msg.sender != game.player1 && msg.sender != game.player2) {\r\n revert NotGameParticipant();\r\n }\r\n if (game.status != ACTIVE_STATUS) revert InvalidStatus();\r\n if (powerupType < 1 || powerupType > 3) revert InvalidPowerupType();\r\n\r\n PowerupInventory storage inventory = inventories[msg.sender];\r\n\r\n if (powerupType == POWERUP_PAD_STRETCH) {\r\n if (inventory.padStretchCount == 0) revert InsufficientPowerups();\r\n inventory.padStretchCount--;\r\n } else if (powerupType == POWERUP_MULTIBALL) {\r\n if (inventory.multiballCount == 0) revert InsufficientPowerups();\r\n inventory.multiballCount--;\r\n } else if (powerupType == POWERUP_SHIELD) {\r\n if (inventory.shieldCount == 0) revert InsufficientPowerups();\r\n inventory.shieldCount--;\r\n }\r\n\r\n emit PowerupUsed(gameId, msg.sender, powerupType, uint64(block.timestamp));\r\n }\r\n\r\n function withdrawDevFees() external onlyOwner nonReentrant {\r\n uint256 feeAmount = devFeeVault;\r\n if (feeAmount == 0) revert InvalidAmount();\r\n devFeeVault = 0;\r\n (bool success, ) = owner().call{value: feeAmount}(\"\");\r\n if (!success) revert TransferFailed();\r\n emit FeeWithdrawn(owner(), feeAmount, uint64(block.timestamp));\r\n }\r\n\r\n function togglePause() external onlyOwner {\r\n paused = !paused;\r\n emit VaultPauseToggled(paused, msg.sender, uint64(block.timestamp));\r\n }\r\n\r\n // ============ View Functions ============\r\n function getGame(uint64 gameId)\r\n external\r\n view\r\n onlyGameExists(gameId)\r\n returns (GameSession memory)\r\n {\r\n return games[gameId];\r\n }\r\n\r\n function getGameStatus(uint64 gameId)\r\n external\r\n view\r\n onlyGameExists(gameId)\r\n returns (uint8)\r\n {\r\n return games[gameId].status;\r\n }\r\n\r\n function getGameEscrow(uint64 gameId)\r\n external\r\n view\r\n onlyGameExists(gameId)\r\n returns (uint256)\r\n {\r\n return games[gameId].escrowBalance;\r\n }\r\n\r\n function getDevFees() external view returns (uint256) {\r\n return devFeeVault;\r\n }\r\n\r\n function isVaultPaused() external view returns (bool) {\r\n return paused;\r\n }\r\n\r\n function getTotalGames() external view returns (uint64) {\r\n return totalGames;\r\n }\r\n\r\n function getPowerupCount(address player, uint8 powerupType)\r\n public\r\n view\r\n returns (uint64)\r\n {\r\n PowerupInventory storage inventory = inventories[player];\r\n\r\n if (powerupType == POWERUP_PAD_STRETCH) {\r\n return inventory.padStretchCount;\r\n } else if (powerupType == POWERUP_MULTIBALL) {\r\n return inventory.multiballCount;\r\n } else if (powerupType == POWERUP_SHIELD) {\r\n return inventory.shieldCount;\r\n }\r\n return 0;\r\n }\r\n\r\n function getAllPowerups(address player)\r\n external\r\n view\r\n returns (\r\n uint64 padStretch,\r\n uint64 multiball,\r\n uint64 shield\r\n )\r\n {\r\n PowerupInventory storage inventory = inventories[player];\r\n return (\r\n inventory.padStretchCount,\r\n inventory.multiballCount,\r\n inventory.shieldCount\r\n );\r\n }\r\n\r\n function getPlayerGames(address player)\r\n external\r\n view\r\n returns (uint64[] memory)\r\n {\r\n return playerGames[player];\r\n }\r\n\r\n function getPlayerGameCount(address player)\r\n external\r\n view\r\n returns (uint256)\r\n {\r\n return playerGames[player].length;\r\n }\r\n\r\n function isGameExists(uint64 gameId) external view returns (bool) {\r\n return gameExists[gameId];\r\n }\r\n\r\n // ============ Receive Function ============\r\n receive() external payable {\r\n revert(\"Use createGame() to participate\");\r\n }\r\n}" + } + } + } +} \ No newline at end of file diff --git a/contract/ignition/deployments/chain-8453/journal.jsonl b/contract/ignition/deployments/chain-8453/journal.jsonl new file mode 100644 index 0000000..4a3ff40 --- /dev/null +++ b/contract/ignition/deployments/chain-8453/journal.jsonl @@ -0,0 +1,4 @@ + +{"chainId":8453,"type":"DEPLOYMENT_INITIALIZE"} +{"artifactId":"PingPongModule#PingPong","constructorArgs":[],"contractName":"PingPong","dependencies":[],"from":"0x595a9e286585399b6179ca7956d0796e30333434","futureId":"PingPongModule#PingPong","futureType":"NAMED_ARTIFACT_CONTRACT_DEPLOYMENT","libraries":{},"strategy":"basic","strategyConfig":{},"type":"DEPLOYMENT_EXECUTION_STATE_INITIALIZE","value":{"_kind":"bigint","value":"0"}} +{"futureId":"PingPongModule#PingPong","networkInteraction":{"data":"0x6080604052348015600e575f5ffd5b5060015f553380603757604051631e4fbdf760e01b81525f600482015260240160405180910390fd5b603e816060565b5060018054600160a01b600160e01b03191690556003805460ff1916905560b1565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b612234806100be5f395ff3fe608060405260043610610198575f3560e01c8063715018a6116100e7578063c4ae316811610087578063ec20ee2611610062578063ec20ee2614610577578063f25764b514610596578063f2fde38b146105ca578063f90c5eea146105e9575f5ffd5b8063c4ae316814610525578063cf79510b14610539578063db06587d14610558575f5ffd5b80637fcf64fe116100c25780637fcf64fe1461049a5780638da5cb5b146104b95780639017006e146104e0578063abb9763c146104f4575f5ffd5b8063715018a61461042a5780637255d7291461043e57806376c719dd14610446575f5ffd5b80632c4e591b116101525780635bd4349b1161012d5780635bd4349b146103425780635c975abb14610366578063698aa65c1461037f5780636f5de156146103f3575f5ffd5b80632c4e591b146102c35780633dc558cf146103015780634904190314610316575f5ffd5b8063098401f5146101ee5780630da590d4146102165780630f2948551461022c578063102901151461024b578063129daf841461026a57806317abc28914610296575f5ffd5b366101ea5760405162461bcd60e51b815260206004820152601f60248201527f5573652063726561746547616d65282920746f2070617274696369706174650060448201526064015b60405180910390fd5b5f5ffd5b3480156101f9575f5ffd5b5060035460ff165b60405190151581526020015b60405180910390f35b348015610221575f5ffd5b5061022a6105fc565b005b348015610237575f5ffd5b5061022a610246366004611f63565b610704565b348015610256575f5ffd5b5061022a610265366004611f93565b61090c565b348015610275575f5ffd5b50610289610284366004611fda565b610bea565b60405161020d9190611ff3565b3480156102a1575f5ffd5b506102b56102b0366004611f63565b610c84565b60405190815260200161020d565b3480156102ce575f5ffd5b506001546102e990600160a01b90046001600160401b031681565b6040516001600160401b03909116815260200161020d565b34801561030c575f5ffd5b506102b560025481565b348015610321575f5ffd5b50610335610330366004611f63565b610cdd565b60405161020d919061203e565b34801561034d575f5ffd5b50600154600160a01b90046001600160401b03166102e9565b348015610371575f5ffd5b506003546102019060ff1681565b34801561038a575f5ffd5b506103c9610399366004611fda565b60066020525f90815260409020546001600160401b0380821691600160401b8104821691600160801b9091041683565b604080516001600160401b039485168152928416602084015292169181019190915260600161020d565b3480156103fe575f5ffd5b5061020161040d366004611f63565b6001600160401b03165f9081526005602052604090205460ff1690565b348015610435575f5ffd5b5061022a610e01565b61022a610e12565b348015610451575f5ffd5b506103c9610460366004611fda565b6001600160a01b03165f908152600660205260409020546001600160401b0380821692600160401b8304821692600160801b900490911690565b3480156104a5575f5ffd5b506102e96104b4366004612101565b61119e565b3480156104c4575f5ffd5b506001546040516001600160a01b03909116815260200161020d565b3480156104eb575f5ffd5b506002546102b5565b3480156104ff575f5ffd5b5061051361050e366004611f63565b611224565b60405160ff909116815260200161020d565b348015610530575f5ffd5b5061022a611281565b348015610544575f5ffd5b5061022a610553366004612101565b6112e8565b348015610563575f5ffd5b5061022a61057236600461211b565b6114d8565b348015610582575f5ffd5b5061022a610591366004611f63565b6117e8565b3480156105a1575f5ffd5b506102b56105b0366004611fda565b6001600160a01b03165f9081526007602052604090205490565b3480156105d5575f5ffd5b5061022a6105e4366004611fda565b611b92565b61022a6105f7366004611f63565b611bcc565b610604611df6565b61060c611e23565b6002545f8190036106305760405163162908e360e11b815260040160405180910390fd5b5f60028190556001546040516001600160a01b039091169083908381818185875af1925050503d805f8114610680576040519150601f19603f3d011682016040523d82523d5f602084013e610685565b606091505b50509050806106a7576040516312171d8360e31b815260040160405180910390fd5b600154604080518481526001600160401b03421660208201526001600160a01b03909216917fc6918492d588315653c34b7c4dbca12386a4d32dd57de8c3d242b504f4cf5293910160405180910390a2505061070260015f55565b565b60035460ff1615610728576040516386fad90560e01b815260040160405180910390fd5b610730611e23565b6001600160401b0381165f90815260056020526040902054819060ff1661076a576040516309b3c62760e21b815260040160405180910390fd5b6001600160401b0382165f9081526004602081905260409091209081015460ff166001146107ab576040516307a92f1960e51b815260040160405180910390fd5b8054600160401b90046001600160a01b031633146107db576040516282b42960e81b815260040160405180910390fd5b60038101545f8190036108015760405163162908e360e11b815260040160405180910390fd5b6004808301546108169160ff90911690611e4b565b5f600383018190556004808401805460ff1916909117905560058301805467ffffffffffffffff1916426001600160401b0316179055604051339083908381818185875af1925050503d805f8114610889576040519150601f19603f3d011682016040523d82523d5f602084013e61088e565b606091505b50509050806108b0576040516312171d8360e31b815260040160405180910390fd5b6005830154604080518481526001600160401b03928316602082015233928816917f6f7b439c90436071faa627b840014fd7c34c566593df29fd6143115d3e580a4c910160405180910390a35050505061090960015f55565b50565b60035460ff1615610930576040516386fad90560e01b815260040160405180910390fd5b610938611e23565b6001600160401b0382165f90815260056020526040902054829060ff16610972576040516309b3c62760e21b815260040160405180910390fd5b6001600160401b0383165f9081526004602052604090208054600160401b90046001600160a01b031633148015906109b7575060018101546001600160a01b03163314155b156109d55760405163753f25d760e11b815260040160405180910390fd5b600481015460ff166002146109fd576040516307a92f1960e51b815260040160405180910390fd5b60018360ff161080610a12575060038360ff16115b15610a3057604051631d47131560e31b815260040160405180910390fd5b335f9081526006602052604090205f1960ff851601610ab35780546001600160401b03165f03610a735760405163596d23cf60e01b815260040160405180910390fd5b80546001600160401b0316815f610a8983612157565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050610b8f565b60011960ff851601610b0e578054600160401b90046001600160401b03165f03610af05760405163596d23cf60e01b815260040160405180910390fd5b8054600160401b90046001600160401b0316816008610a8983612157565b60021960ff851601610b8f578054600160801b90046001600160401b03165f03610b4b5760405163596d23cf60e01b815260040160405180910390fd5b8054600160801b90046001600160401b0316816010610b6983612157565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b6040805160ff861681526001600160401b0342811660208301523392908816917f9ee251bdc5d8f10aee078ec083e44fdcdbe23411b225b131d6e4f80a30c23015910160405180910390a3505050610be660015f55565b5050565b6001600160a01b0381165f90815260076020908152604091829020805483518184028101840190945280845260609392830182828015610c7857602002820191905f5260205f20905f905b82829054906101000a90046001600160401b03166001600160401b031681526020019060080190602082600701049283019260010382029150808411610c355790505b50505050509050919050565b6001600160401b0381165f90815260056020526040812054829060ff16610cbe576040516309b3c62760e21b815260040160405180910390fd5b50506001600160401b03165f9081526004602052604090206003015490565b60408051610120810182525f8082526020808301829052828401829052606083018290526080830182905260a0830182905260c0830182905260e0830182905261010083018290526001600160401b0385168252600590529190912054829060ff16610d5c576040516309b3c62760e21b815260040160405180910390fd5b50506001600160401b039081165f9081526004602081815260409283902083516101208101855281548087168252600160401b90046001600160a01b0390811693820193909352600182015483169481019490945260028101546060850152600381015460808501529182015460ff811660a085015261010080820490921660c0850152600160a81b9004841660e08401526005909101549092169181019190915290565b610e09611df6565b6107025f611ef7565b60035460ff1615610e36576040516386fad90560e01b815260040160405180910390fd5b610e3e611e23565b345f03610e5e5760405163162908e360e11b815260040160405180910390fd5b5f6001601481819054906101000a90046001600160401b0316610e8090612178565b91906101000a8154816001600160401b0302191690836001600160401b0316021790559050604051806101200160405280826001600160401b03168152602001336001600160a01b031681526020015f6001600160a01b03168152602001348152602001348152602001600160ff1681526020015f6001600160a01b03168152602001426001600160401b031681526020015f6001600160401b031681525060045f836001600160401b03166001600160401b031681526020019081526020015f205f820151815f015f6101000a8154816001600160401b0302191690836001600160401b031602179055506020820151815f0160086101000a8154816001600160a01b0302191690836001600160a01b031602179055506040820151816001015f6101000a8154816001600160a01b0302191690836001600160a01b03160217905550606082015181600201556080820151816003015560a0820151816004015f6101000a81548160ff021916908360ff16021790555060c08201518160040160016101000a8154816001600160a01b0302191690836001600160a01b0316021790555060e08201518160040160156101000a8154816001600160401b0302191690836001600160401b03160217905550610100820151816005015f6101000a8154816001600160401b0302191690836001600160401b03160217905550905050600160055f836001600160401b03166001600160401b031681526020019081526020015f205f6101000a81548160ff02191690831515021790555061271060075f336001600160a01b03166001600160a01b031681526020019081526020015f20805490501061110557604051631003ffcb60e21b815260040160405180910390fd5b335f818152600760209081526040808320805460018082018355918552938390206004850401805460039095166008026101000a6001600160401b0381810219909616888716918202179091558251348152429095169385019390935290830152907f0dd77ad99d1c61a1e1104c233fe44286e0d2b45d88fc815d273988ce7d753b539060600160405180910390a35061070260015f55565b6001600160a01b0382165f9081526006602052604081205f1960ff8416016111d157546001600160401b0316905061121e565b60011960ff8416016111f55754600160401b90046001600160401b0316905061121e565b60021960ff8416016112195754600160801b90046001600160401b0316905061121e565b5f9150505b92915050565b6001600160401b0381165f90815260056020526040812054829060ff1661125e576040516309b3c62760e21b815260040160405180910390fd5b50506001600160401b03165f908152600460208190526040909120015460ff1690565b611289611df6565b6003805460ff8082161560ff1990921682179092556040805191909216151581526001600160401b034216602082015233917f86e564d44bf348b378b995e337f646d2e5730ce397b2fffe198e2c28a20df6b7910160405180910390a2565b6112f0611df6565b60018160ff161080611305575060038160ff16115b1561132357604051631d47131560e31b815260040160405180910390fd5b6001600160a01b03821661134a5760405163162908e360e11b815260040160405180910390fd5b6001600160a01b0382165f90815260066020526040812090805f1960ff8516016113b35782546001600160401b0316915081835f61138783612178565b82546101009290920a6001600160401b0381810219909316918316021790915584541691506114729050565b60011960ff851601611423578254600160401b90046001600160401b03169150818360086113e083612178565b91906101000a8154816001600160401b0302191690836001600160401b0316021790555050825f0160089054906101000a90046001600160401b03169050611472565b8254600160801b90046001600160401b031691508183601061144483612178565b82546101009290920a6001600160401b038181021990931691831602179091558454600160801b9004169150505b6040805160ff86168152600160208201526001600160401b03838116828401524216606082015290516001600160a01b038716917fcac74dc7a0c7838c42a2bbdcd01f4d60038158e6b598fce2f77186d2cc6220fb919081900360800190a25050505050565b6114e0611df6565b60035460ff1615611504576040516386fad90560e01b815260040160405180910390fd5b61150c611e23565b6001600160401b0382165f90815260056020526040902054829060ff16611546576040516309b3c62760e21b815260040160405180910390fd5b6001600160401b0383165f9081526004602081905260409091209081015460ff16600214611587576040516307a92f1960e51b815260040160405180910390fd5b60018101546001600160a01b03166115b25760405163e0f4a4a160e01b815260040160405180910390fd5b80546001600160a01b03848116600160401b90920416148015906115e6575060018101546001600160a01b03848116911614155b15611604576040516393a5f3c760e01b815260040160405180910390fd5b80600301545f0361162857604051631e9acf1760e31b815260040160405180910390fd5b600481015461163b9060ff166003611e4b565b60038101545f606461164e6005846121a2565b61165891906121b9565b90505f61166582846121d8565b90508160025f82825461167891906121eb565b90915550505f60038581018290556004860180546001600160a81b0319166101006001600160a01b038b81169182029290921790931790915560058701805467ffffffffffffffff1916426001600160401b03161790558654600160401b900416146116f5578454600160401b90046001600160a01b0316611704565b60018501546001600160a01b03165b90505f876001600160a01b0316836040515f6040518083038185875af1925050503d805f811461174f576040519150601f19603f3d011682016040523d82523d5f602084013e611754565b606091505b5050905080611776576040516312171d8360e31b815260040160405180910390fd5b600586015460408051858152602081018790526001600160401b039283168183015290516001600160a01b0385811693908c1692908d16917f2cd48d90bb27d8ba2b0c977c16bc101d1a2bc0072b6cfbf4ccd2868dc2c5297d9181900360600190a450505050505050610be660015f55565b6117f0611e23565b6001600160401b0381165f90815260056020526040902054819060ff1661182a576040516309b3c62760e21b815260040160405180910390fd5b60035460ff161561184e576040516386fad90560e01b815260040160405180910390fd5b6001600160401b0382165f90815260046020526040902080546001820154336001600160a01b03600160401b90930483168114929190911614811582611892575080155b156118af576040516282b42960e81b815260040160405180910390fd5b600483015460ff165f190161192357816118db576040516282b42960e81b815260040160405180910390fd5b60048301546118fe9062093a8090600160a81b90046001600160401b03166121eb565b42101561191e5760405163373fe3f360e21b815260040160405180910390fd5b61196f565b600483015460ff16600119016119565760048301546118fe9062093a8090600160a81b90046001600160401b03166121eb565b6040516307a92f1960e51b815260040160405180910390fd5b60038301545f8190036119955760405163162908e360e11b815260040160405180910390fd5b5f60038501556004808501805460ff1916909117905560058401805467ffffffffffffffff1916426001600160401b031617905560018401546001600160a01b031615611ac357600284015484546040515f91600160401b90046001600160a01b03169083908381818185875af1925050503d805f8114611a31576040519150601f19603f3d011682016040523d82523d5f602084013e611a36565b606091505b505060018701546040519192505f916001600160a01b039091169084908381818185875af1925050503d805f8114611a89576040519150601f19603f3d011682016040523d82523d5f602084013e611a8e565b606091505b50509050811580611a9d575080155b15611abb576040516312171d8360e31b815260040160405180910390fd5b505050611b3c565b83546040515f91600160401b90046001600160a01b03169083908381818185875af1925050503d805f8114611b13576040519150601f19603f3d011682016040523d82523d5f602084013e611b18565b606091505b5050905080611b3a576040516312171d8360e31b815260040160405180910390fd5b505b604080518281526001600160401b0342811660208301523392908916917fde03c4ef6e0e64172e80ae98ef3d521fd8ef6c2c181131609a12e2c37e89f642910160405180910390a3505050505061090960015f55565b611b9a611df6565b6001600160a01b038116611bc357604051631e4fbdf760e01b81525f60048201526024016101e1565b61090981611ef7565b60035460ff1615611bf0576040516386fad90560e01b815260040160405180910390fd5b611bf8611e23565b6001600160401b0381165f90815260056020526040902054819060ff16611c32576040516309b3c62760e21b815260040160405180910390fd5b6001600160401b0382165f9081526004602081905260409091209081015460ff16600114611c73576040516307a92f1960e51b815260040160405180910390fd5b8054600160401b90046001600160a01b03163303611ca45760405163106a317d60e01b815260040160405180910390fd5b60018101546001600160a01b031615611cd0576040516302ae90bb60e31b815260040160405180910390fd5b80600201543414611cf45760405163162908e360e11b815260040160405180910390fd5b6001810180546001600160a01b031916331790556003810180543491905f90611d1e9084906121eb565b909155505060048101805460ff19166002179055335f9081526007602052604090205461271011611d6257604051631003ffcb60e21b815260040160405180910390fd5b335f8181526007602090815260408083208054600181018255908452928290206004840401805460039094166008026101000a6001600160401b0381810219909516898616918202179091558151348152429094169284019290925290917f2dc491190943a680b1825d2c1d50dbcedf88ed55f769142cf969caa884b66cdf910160405180910390a3505061090960015f55565b6001546001600160a01b031633146107025760405163118cdaa760e01b81523360048201526024016101e1565b60025f5403611e4557604051633ee5aeb560e01b815260040160405180910390fd5b60025f55565b5f60ff83166001148015611e62575060ff82166002145b80611e7e575060ff83166001148015611e7e575060ff82166004145b80611e9a575060ff83166002148015611e9a575060ff82166003145b80611eb6575060ff83166002148015611eb6575060ff82166004145b80611ed2575060ff83166001148015611ed2575060ff82166004145b905080611ef25760405163088bd32360e11b815260040160405180910390fd5b505050565b600180546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a35050565b80356001600160401b0381168114611f5e575f5ffd5b919050565b5f60208284031215611f73575f5ffd5b611f7c82611f48565b9392505050565b803560ff81168114611f5e575f5ffd5b5f5f60408385031215611fa4575f5ffd5b611fad83611f48565b9150611fbb60208401611f83565b90509250929050565b80356001600160a01b0381168114611f5e575f5ffd5b5f60208284031215611fea575f5ffd5b611f7c82611fc4565b602080825282518282018190525f918401906040840190835b818110156120335783516001600160401b031683526020938401939092019160010161200c565b509095945050505050565b81516001600160401b031681526020808301516001600160a01b03169082015260408083015161012083019161207e908401826001600160a01b03169052565b50606083015160608301526080830151608083015260a08301516120a760a084018260ff169052565b5060c08301516120c260c08401826001600160a01b03169052565b5060e08301516120dd60e08401826001600160401b03169052565b506101008301516120fa6101008401826001600160401b03169052565b5092915050565b5f5f60408385031215612112575f5ffd5b611fad83611fc4565b5f5f6040838503121561212c575f5ffd5b61213583611f48565b9150611fbb60208401611fc4565b634e487b7160e01b5f52601160045260245ffd5b5f6001600160401b0382168061216f5761216f612143565b5f190192915050565b5f6001600160401b0382166001600160401b03810361219957612199612143565b60010192915050565b808202811582820484141761121e5761121e612143565b5f826121d357634e487b7160e01b5f52601260045260245ffd5b500490565b8181038181111561121e5761121e612143565b8082018082111561121e5761121e61214356fea264697066735822122010d993ac83d1f5b992840a958edcd787ff454876bda2b749c24f287d4c933b3464736f6c634300081c0033","id":1,"type":"ONCHAIN_INTERACTION","value":{"_kind":"bigint","value":"0"}},"type":"NETWORK_INTERACTION_REQUEST"} \ No newline at end of file diff --git a/contract/pnpm-lock.yaml b/contract/pnpm-lock.yaml index 24ba5c5..cf5d2e8 100644 --- a/contract/pnpm-lock.yaml +++ b/contract/pnpm-lock.yaml @@ -7,6 +7,10 @@ settings: importers: .: + dependencies: + '@openzeppelin/contracts': + specifier: ^5.4.0 + version: 5.4.0 devDependencies: '@nomicfoundation/hardhat-ethers': specifier: ^4.0.2 @@ -23,6 +27,9 @@ importers: '@nomicfoundation/hardhat-verify': specifier: ^3.0.8 version: 3.0.8(hardhat@3.1.0) + '@openzeppelin/hardhat-upgrades': + specifier: ^3.9.1 + version: 3.9.1(@nomicfoundation/hardhat-ethers@4.0.3(hardhat@3.1.0))(@nomicfoundation/hardhat-verify@3.0.8(hardhat@3.1.0))(ethers@6.16.0)(hardhat@3.1.0) '@types/chai': specifier: ^4.2.0 version: 4.3.20 @@ -59,6 +66,139 @@ packages: '@adraffy/ens-normalize@1.10.1': resolution: {integrity: sha512-96Z2IP3mYmF1Xg2cDm8f1gWGf/HUVedQ3FMifV4kG/PQ4yEP51xDtRAEfhVNt5f/uzpNkZHwWQuUcu6D6K+Ekw==} + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@1.2.2': + resolution: {integrity: sha512-Nr1QJIbW/afYYGzYvrF70LtaHrIRtd4TNAglX8BvlfxJLZ45SAmueIKYl5tWoNBPzp65ymXGFK0Bb1vZUpuc9g==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@1.2.2': + resolution: {integrity: sha512-H8PjG5WJ4wz0UXAFXeJjWCW1vkvIJ3qUUD+rGRwJ2/hj+xT58Qle2MTql/2MGzkU+1JLAFuR6aJpLAjHwhmwwg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-lambda@3.950.0': + resolution: {integrity: sha512-4Sqxci8y2ltSfPz/hClpKaUeY8uSM+WrZvzH2EPBDX0b3TecozoPu5zXJ/Jb0TEbm5lRWmtYoIB+QG2Wvkti9g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sso@3.948.0': + resolution: {integrity: sha512-iWjchXy8bIAVBUsKnbfKYXRwhLgRg3EqCQ5FTr3JbR+QR75rZm4ZOYXlvHGztVTmtAZ+PQVA1Y4zO7v7N87C0A==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/core@3.947.0': + resolution: {integrity: sha512-Khq4zHhuAkvCFuFbgcy3GrZTzfSX7ZIjIcW1zRDxXRLZKRtuhnZdonqTUfaWi5K42/4OmxkYNpsO7X7trQOeHw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-env@3.947.0': + resolution: {integrity: sha512-VR2V6dRELmzwAsCpK4GqxUi6UW5WNhAXS9F9AzWi5jvijwJo3nH92YNJUP4quMpgFZxJHEWyXLWgPjh9u0zYOA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-http@3.947.0': + resolution: {integrity: sha512-inF09lh9SlHj63Vmr5d+LmwPXZc2IbK8lAruhOr3KLsZAIHEgHgGPXWDC2ukTEMzg0pkexQ6FOhXXad6klK4RA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-ini@3.948.0': + resolution: {integrity: sha512-Cl//Qh88e8HBL7yYkJNpF5eq76IO6rq8GsatKcfVBm7RFVxCqYEPSSBtkHdbtNwQdRQqAMXc6E/lEB/CZUDxnA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-login@3.948.0': + resolution: {integrity: sha512-gcKO2b6eeTuZGp3Vvgr/9OxajMrD3W+FZ2FCyJox363ZgMoYJsyNid1vuZrEuAGkx0jvveLXfwiVS0UXyPkgtw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-node@3.948.0': + resolution: {integrity: sha512-ep5vRLnrRdcsP17Ef31sNN4g8Nqk/4JBydcUJuFRbGuyQtrZZrVT81UeH2xhz6d0BK6ejafDB9+ZpBjXuWT5/Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-process@3.947.0': + resolution: {integrity: sha512-WpanFbHe08SP1hAJNeDdBDVz9SGgMu/gc0XJ9u3uNpW99nKZjDpvPRAdW7WLA4K6essMjxWkguIGNOpij6Do2Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-sso@3.948.0': + resolution: {integrity: sha512-gqLhX1L+zb/ZDnnYbILQqJ46j735StfWV5PbDjxRzBKS7GzsiYoaf6MyHseEopmWrez5zl5l6aWzig7UpzSeQQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.948.0': + resolution: {integrity: sha512-MvYQlXVoJyfF3/SmnNzOVEtANRAiJIObEUYYyjTqKZTmcRIVVky0tPuG26XnB8LmTYgtESwJIZJj/Eyyc9WURQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-host-header@3.936.0': + resolution: {integrity: sha512-tAaObaAnsP1XnLGndfkGWFuzrJYuk9W0b/nLvol66t8FZExIAf/WdkT2NNAWOYxljVs++oHnyHBCxIlaHrzSiw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-logger@3.936.0': + resolution: {integrity: sha512-aPSJ12d3a3Ea5nyEnLbijCaaYJT2QjQ9iW+zGh5QcZYXmOGWbKVyPSxmVOboZQG+c1M8t6d2O7tqrwzIq8L8qw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.948.0': + resolution: {integrity: sha512-Qa8Zj+EAqA0VlAVvxpRnpBpIWJI9KUwaioY1vkeNVwXPlNaz9y9zCKVM9iU9OZ5HXpoUg6TnhATAHXHAE8+QsQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-user-agent@3.947.0': + resolution: {integrity: sha512-7rpKV8YNgCP2R4F9RjWZFcD2R+SO/0R4VHIbY9iZJdH2MzzJ8ZG7h8dZ2m8QkQd1fjx4wrFJGGPJUTYXPV3baA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/nested-clients@3.948.0': + resolution: {integrity: sha512-zcbJfBsB6h254o3NuoEkf0+UY1GpE9ioiQdENWv7odo69s8iaGBEQ4BDpsIMqcuiiUXw1uKIVNxCB1gUGYz8lw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/region-config-resolver@3.936.0': + resolution: {integrity: sha512-wOKhzzWsshXGduxO4pqSiNyL9oUtk4BEvjWm9aaq6Hmfdoydq6v6t0rAGHWPjFwy9z2haovGRi3C8IxdMB4muw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/token-providers@3.948.0': + resolution: {integrity: sha512-V487/kM4Teq5dcr1t5K6eoUKuqlGr9FRWL3MIMukMERJXHZvio6kox60FZ/YtciRHRI75u14YUqm2Dzddcu3+A==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/types@3.936.0': + resolution: {integrity: sha512-uz0/VlMd2pP5MepdrHizd+T+OKfyK4r3OA9JI+L/lPKg0YFQosdJNCKisr6o70E3dh8iMpFYxF1UN/4uZsyARg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-endpoints@3.936.0': + resolution: {integrity: sha512-0Zx3Ntdpu+z9Wlm7JKUBOzS9EunwKAb4KdGUQQxDqh5Lc3ta5uBoub+FgmVuzwnmBu9U1Os8UuwVTH0Lgu+P5w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-locate-window@3.893.0': + resolution: {integrity: sha512-T89pFfgat6c8nMmpI8eKjBcDcgJq36+m9oiXbcUzeU55MP9ZuGgBomGjGnHaEyF36jenW9gmg3NfZDm0AO2XPg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-user-agent-browser@3.936.0': + resolution: {integrity: sha512-eZ/XF6NxMtu+iCma58GRNRxSq4lHo6zHQLOZRIeL/ghqYJirqHdenMOwrzPettj60KWlv827RVebP9oNVrwZbw==} + + '@aws-sdk/util-user-agent-node@3.947.0': + resolution: {integrity: sha512-+vhHoDrdbb+zerV4noQk1DHaUMNzWFWPpPYjVTwW2186k5BEJIecAMChYkghRrBVJ3KPWP1+JnZwOd72F3d4rQ==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/util-utf8-browser@3.259.0': + resolution: {integrity: sha512-UvFa/vR+e19XookZF8RzFZBrw2EUkQWxiBW0yYQAhvk3C+QVGl0H3ouca8LDBlBfQKXwmW3huo/59H8rwb1wJw==} + + '@aws-sdk/xml-builder@3.930.0': + resolution: {integrity: sha512-YIfkD17GocxdmlUVc3ia52QhcWuRIUJonbF8A2CYfcWNV3HzvAqpcPeC0bYUhkK+8e8YO1ARnLKZQE0TlwzorA==} + engines: {node: '>=18.0.0'} + + '@aws/lambda-invoke-store@0.2.2': + resolution: {integrity: sha512-C0NBLsIqzDIae8HFw9YIrIBsbc0xTiOtt7fAukGPnqQ/+zZNaq+4jhuccltK0QuWHBnNm/a6kLIRA6GFiM10eg==} + engines: {node: '>=18.0.0'} + + '@bytecodealliance/preview2-shim@0.17.0': + resolution: {integrity: sha512-JorcEwe4ud0x5BS/Ar2aQWOQoFzjq/7jcnxYXCvSMh0oRm0dQXzOA+hqLDBnOMks1LLBA7dmiLLsEBl09Yd6iQ==} + '@esbuild/aix-ppc64@0.27.1': resolution: {integrity: sha512-HHB50pdsBX6k47S4u5g/CaLjqS3qwaOVE5ILsq64jyzgMhLuCuZ8rGzM9yhsAjfjkbgUPMzZEPa7DAp7yz6vuA==} engines: {node: '>=18'} @@ -430,6 +570,9 @@ packages: '@nomicfoundation/ignition-ui@3.0.6': resolution: {integrity: sha512-PePoQO4LwLfQyMGZOtbF5eOgYSu/kXCyif/0Jpto1dfFLAtvoUbvaLrecrclM/keCTriRADOauH/zH06ihzvCg==} + '@nomicfoundation/slang@0.18.3': + resolution: {integrity: sha512-YqAWgckqbHM0/CZxi9Nlf4hjk9wUNLC9ngWCWBiqMxPIZmzsVKYuChdlrfeBPQyvQQBoOhbx+7C1005kLVQDZQ==} + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': resolution: {integrity: sha512-JaqcWPDZENCvm++lFFGjrDd8mxtf+CtLd2MiXvMNTBD33dContTZ9TWETwNFwg7JTJT5Q9HEecH7FA+HTSsIUw==} engines: {node: '>= 12'} @@ -462,6 +605,34 @@ packages: resolution: {integrity: sha512-q4n32/FNKIhQ3zQGGw5CvPF6GTvDCpYwIf7bEY/dZTZbgfDsHyjJwURxUJf3VQuuJj+fDIFl4+KkBVbw4Ef6jA==} engines: {node: '>= 12'} + '@openzeppelin/contracts@5.4.0': + resolution: {integrity: sha512-eCYgWnLg6WO+X52I16TZt8uEjbtdkgLC0SUX/xnAksjjrQI4Xfn4iBRoI5j55dmlOhDv1Y7BoR3cU7e3WWhC6A==} + + '@openzeppelin/defender-sdk-base-client@2.7.0': + resolution: {integrity: sha512-J5IpvbFfdIJM4IadBcXfhCXVdX2yEpaZtRR1ecq87d8CdkmmEpniYfef/yVlG98yekvu125LaIRg0yXQOt9Bdg==} + + '@openzeppelin/defender-sdk-deploy-client@2.7.0': + resolution: {integrity: sha512-YOHZmnHmM1y6uSqXWGfk2/5/ae4zZJE6xG92yFEAIOy8vqh1dxznWMsoCcAXRXTCWc8RdCDpFdMfEy4SBTyYtg==} + + '@openzeppelin/defender-sdk-network-client@2.7.0': + resolution: {integrity: sha512-4CYWPa9+kSjojE5KS7kRmP161qsBATdp97TCrzyDdGoVahj0GyqgafRL9AAjm0eHZOM1c7EIYEpbvYRtFi8vyA==} + + '@openzeppelin/hardhat-upgrades@3.9.1': + resolution: {integrity: sha512-pSDjlOnIpP+PqaJVe144dK6VVKZw2v6YQusyt0OOLiCsl+WUzfo4D0kylax7zjrOxqy41EK2ipQeIF4T+cCn2A==} + hasBin: true + peerDependencies: + '@nomicfoundation/hardhat-ethers': ^3.0.6 + '@nomicfoundation/hardhat-verify': ^2.0.14 + ethers: ^6.6.0 + hardhat: ^2.24.1 + peerDependenciesMeta: + '@nomicfoundation/hardhat-verify': + optional: true + + '@openzeppelin/upgrades-core@1.44.2': + resolution: {integrity: sha512-m6iorjyhPK9ow5/trNs7qsBC/SOzJCO51pvvAF2W9nOiZ1t0RtCd+rlRmRmlWTv4M33V0wzIUeamJ2BPbzgUXA==} + hasBin: true + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -482,6 +653,202 @@ packages: resolution: {integrity: sha512-KX62+qIt4xgy8eHKHiikfhz2p5fOciXd0Cl+dNzhgPFq8klq4MGMNaf148GB3M/vBqP4nw/eFvRMAayFCgdRQw==} engines: {node: '>=18'} + '@smithy/abort-controller@4.2.5': + resolution: {integrity: sha512-j7HwVkBw68YW8UmFRcjZOmssE77Rvk0GWAIN1oFBhsaovQmZWYCIcGa9/pwRB0ExI8Sk9MWNALTjftjHZea7VA==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@4.4.3': + resolution: {integrity: sha512-ezHLe1tKLUxDJo2LHtDuEDyWXolw8WGOR92qb4bQdWq/zKenO5BvctZGrVJBK08zjezSk7bmbKFOXIVyChvDLw==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.18.7': + resolution: {integrity: sha512-axG9MvKhMWOhFbvf5y2DuyTxQueO0dkedY9QC3mAfndLosRI/9LJv8WaL0mw7ubNhsO4IuXX9/9dYGPFvHrqlw==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.2.5': + resolution: {integrity: sha512-BZwotjoZWn9+36nimwm/OLIcVe+KYRwzMjfhd4QT7QxPm9WY0HiOV8t/Wlh+HVUif0SBVV7ksq8//hPaBC/okQ==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-codec@4.2.5': + resolution: {integrity: sha512-Ogt4Zi9hEbIP17oQMd68qYOHUzmH47UkK7q7Gl55iIm9oKt27MUGrC5JfpMroeHjdkOliOA4Qt3NQ1xMq/nrlA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-browser@4.2.5': + resolution: {integrity: sha512-HohfmCQZjppVnKX2PnXlf47CW3j92Ki6T/vkAT2DhBR47e89pen3s4fIa7otGTtrVxmj7q+IhH0RnC5kpR8wtw==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-config-resolver@4.3.5': + resolution: {integrity: sha512-ibjQjM7wEXtECiT6my1xfiMH9IcEczMOS6xiCQXoUIYSj5b1CpBbJ3VYbdwDy8Vcg5JHN7eFpOCGk8nyZAltNQ==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-node@4.2.5': + resolution: {integrity: sha512-+elOuaYx6F2H6x1/5BQP5ugv12nfJl66GhxON8+dWVUEDJ9jah/A0tayVdkLRP0AeSac0inYkDz5qBFKfVp2Gg==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-universal@4.2.5': + resolution: {integrity: sha512-G9WSqbST45bmIFaeNuP/EnC19Rhp54CcVdX9PDL1zyEB514WsDVXhlyihKlGXnRycmHNmVv88Bvvt4EYxWef/Q==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.3.6': + resolution: {integrity: sha512-3+RG3EA6BBJ/ofZUeTFJA7mHfSYrZtQIrDP9dI8Lf7X6Jbos2jptuLrAAteDiFVrmbEmLSuRG/bUKzfAXk7dhg==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@4.2.5': + resolution: {integrity: sha512-DpYX914YOfA3UDT9CN1BM787PcHfWRBB43fFGCYrZFUH0Jv+5t8yYl+Pd5PW4+QzoGEDvn5d5QIO4j2HyYZQSA==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@4.2.5': + resolution: {integrity: sha512-2L2erASEro1WC5nV+plwIMxrTXpvpfzl4e+Nre6vBVRR2HKeGGcvpJyyL3/PpiSg+cJG2KpTmZmq934Olb6e5A==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.2.0': + resolution: {integrity: sha512-DZZZBvC7sjcYh4MazJSGiWMI2L7E0oCiRHREDzIxi/M2LY79/21iXt6aPLHge82wi5LsuRF5A06Ds3+0mlh6CQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@4.2.5': + resolution: {integrity: sha512-Y/RabVa5vbl5FuHYV2vUCwvh/dqzrEY/K2yWPSqvhFUwIY0atLqO4TienjBXakoy4zrKAMCZwg+YEqmH7jaN7A==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@4.3.14': + resolution: {integrity: sha512-v0q4uTKgBM8dsqGjqsabZQyH85nFaTnFcgpWU1uydKFsdyyMzfvOkNum9G7VK+dOP01vUnoZxIeRiJ6uD0kjIg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.4.14': + resolution: {integrity: sha512-Z2DG8Ej7FyWG1UA+7HceINtSLzswUgs2np3sZX0YBBxCt+CXG4QUxv88ZDS3+2/1ldW7LqtSY1UO/6VQ1pND8Q==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@4.2.6': + resolution: {integrity: sha512-VkLoE/z7e2g8pirwisLz8XJWedUSY8my/qrp81VmAdyrhi94T+riBfwP+AOEEFR9rFTSonC/5D2eWNmFabHyGQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@4.2.5': + resolution: {integrity: sha512-bYrutc+neOyWxtZdbB2USbQttZN0mXaOyYLIsaTbJhFsfpXyGWUxJpEuO1rJ8IIJm2qH4+xJT0mxUSsEDTYwdQ==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@4.3.5': + resolution: {integrity: sha512-UTurh1C4qkVCtqggI36DGbLB2Kv8UlcFdMXDcWMbqVY2uRg0XmT9Pb4Vj6oSQ34eizO1fvR0RnFV4Axw4IrrAg==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.4.5': + resolution: {integrity: sha512-CMnzM9R2WqlqXQGtIlsHMEZfXKJVTIrqCNoSd/QpAyp+Dw0a1Vps13l6ma1fH8g7zSPNsA59B/kWgeylFuA/lw==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@4.2.5': + resolution: {integrity: sha512-8iLN1XSE1rl4MuxvQ+5OSk/Zb5El7NJZ1td6Tn+8dQQHIjp59Lwl6bd0+nzw6SKm2wSSriH2v/I9LPzUic7EOg==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@5.3.5': + resolution: {integrity: sha512-RlaL+sA0LNMp03bf7XPbFmT5gN+w3besXSWMkA8rcmxLSVfiEXElQi4O2IWwPfxzcHkxqrwBFMbngB8yx/RvaQ==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-builder@4.2.5': + resolution: {integrity: sha512-y98otMI1saoajeik2kLfGyRp11e5U/iJYH/wLCh3aTV/XutbGT9nziKGkgCaMD1ghK7p6htHMm6b6scl9JRUWg==} + engines: {node: '>=18.0.0'} + + '@smithy/querystring-parser@4.2.5': + resolution: {integrity: sha512-031WCTdPYgiQRYNPXznHXof2YM0GwL6SeaSyTH/P72M1Vz73TvCNH2Nq8Iu2IEPq9QP2yx0/nrw5YmSeAi/AjQ==} + engines: {node: '>=18.0.0'} + + '@smithy/service-error-classification@4.2.5': + resolution: {integrity: sha512-8fEvK+WPE3wUAcDvqDQG1Vk3ANLR8Px979te96m84CbKAjBVf25rPYSzb4xU4hlTyho7VhOGnh5i62D/JVF0JQ==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.4.0': + resolution: {integrity: sha512-5WmZ5+kJgJDjwXXIzr1vDTG+RhF9wzSODQBfkrQ2VVkYALKGvZX1lgVSxEkgicSAFnFhPj5rudJV0zoinqS0bA==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.3.5': + resolution: {integrity: sha512-xSUfMu1FT7ccfSXkoLl/QRQBi2rOvi3tiBZU2Tdy3I6cgvZ6SEi9QNey+lqps/sJRnogIS+lq+B1gxxbra2a/w==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@4.9.10': + resolution: {integrity: sha512-Jaoz4Jw1QYHc1EFww/E6gVtNjhoDU+gwRKqXP6C3LKYqqH2UQhP8tMP3+t/ePrhaze7fhLE8vS2q6vVxBANFTQ==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.9.0': + resolution: {integrity: sha512-MvUbdnXDTwykR8cB1WZvNNwqoWVaTRA0RLlLmf/cIFNMM2cKWz01X4Ly6SMC4Kks30r8tT3Cty0jmeWfiuyHTA==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@4.2.5': + resolution: {integrity: sha512-VaxMGsilqFnK1CeBX+LXnSuaMx4sTL/6znSZh2829txWieazdVxr54HmiyTsIbpOTLcf5nYpq9lpzmwRdxj6rQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@4.3.0': + resolution: {integrity: sha512-GkXZ59JfyxsIwNTWFnjmFEI8kZpRNIBfxKjv09+nkAWPt/4aGaEWMM04m4sxgNVWkbt2MdSvE3KF/PfX4nFedQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@4.2.0': + resolution: {integrity: sha512-Fkoh/I76szMKJnBXWPdFkQJl2r9SjPt3cMzLdOB6eJ4Pnpas8hVoWPYemX/peO0yrrvldgCUVJqOAjUrOLjbxg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.2.1': + resolution: {integrity: sha512-h53dz/pISVrVrfxV1iqXlx5pRg3V2YWFcSQyPyXZRrZoZj4R4DeWRDo1a7dd3CPTcFi3kE+98tuNyD2axyZReA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-buffer-from@4.2.0': + resolution: {integrity: sha512-kAY9hTKulTNevM2nlRtxAG2FQ3B2OR6QIrPY3zE5LqJy1oxzmgBGsHLWTcNhWXKchgA0WHW+mZkQrng/pgcCew==} + engines: {node: '>=18.0.0'} + + '@smithy/util-config-provider@4.2.0': + resolution: {integrity: sha512-YEjpl6XJ36FTKmD+kRJJWYvrHeUvm5ykaUS5xK+6oXffQPHeEM4/nXlZPe+Wu0lsgRUcNZiliYNh/y7q9c2y6Q==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.3.13': + resolution: {integrity: sha512-hlVLdAGrVfyNei+pKIgqDTxfu/ZI2NSyqj4IDxKd5bIsIqwR/dSlkxlPaYxFiIaDVrBy0he8orsFy+Cz119XvA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.2.16': + resolution: {integrity: sha512-F1t22IUiJLHrxW9W1CQ6B9PN+skZ9cqSuzB18Eh06HrJPbjsyZ7ZHecAKw80DQtyGTRcVfeukKaCRYebFwclbg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.2.5': + resolution: {integrity: sha512-3O63AAWu2cSNQZp+ayl9I3NapW1p1rR5mlVHcF6hAB1dPZUQFfRPYtplWX/3xrzWthPGj5FqB12taJJCfH6s8A==} + engines: {node: '>=18.0.0'} + + '@smithy/util-hex-encoding@4.2.0': + resolution: {integrity: sha512-CCQBwJIvXMLKxVbO88IukazJD9a4kQ9ZN7/UMGBjBcJYvatpWk+9g870El4cB8/EJxfe+k+y0GmR9CAzkF+Nbw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@4.2.5': + resolution: {integrity: sha512-6Y3+rvBF7+PZOc40ybeZMcGln6xJGVeY60E7jy9Mv5iKpMJpHgRE6dKy9ScsVxvfAYuEX4Q9a65DQX90KaQ3bA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.2.5': + resolution: {integrity: sha512-GBj3+EZBbN4NAqJ/7pAhsXdfzdlznOh8PydUijy6FpNIMnHPSMO2/rP4HKu+UFeikJxShERk528oy7GT79YiJg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.5.6': + resolution: {integrity: sha512-qWw/UM59TiaFrPevefOZ8CNBKbYEP6wBAIlLqxn3VAIo9rgnTNc4ASbVrqDmhuwI87usnjhdQrxodzAGFFzbRQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-uri-escape@4.2.0': + resolution: {integrity: sha512-igZpCKV9+E/Mzrpq6YacdTQ0qTiLm85gD6N/IrmyDvQFA4UnU3d5g3m8tMT/6zG/vVkWSU+VxeUyGonL62DuxA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.2.0': + resolution: {integrity: sha512-zBPfuzoI8xyBtR2P6WQj63Rz8i3AmfAaJLuNG8dWsfvPe8lO4aCPYLn879mEgHndZH1zQ2oXmG8O1GGzzaoZiw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-waiter@4.2.5': + resolution: {integrity: sha512-Dbun99A3InifQdIrsXZ+QLcC0PGBPAdrl4cj1mTgJvyc9N2zf7QSxg8TBkzsCmGJdE3TLbO9ycwpY0EkWahQ/g==} + engines: {node: '>=18.0.0'} + + '@smithy/uuid@1.1.0': + resolution: {integrity: sha512-4aUIteuyxtBUhVdiQqcDhKFitwfd9hqoSDYY2KRXiWtgoWJ9Bmise+KfEPDiVHWeJepvF8xJO9/9+WDIciMFFw==} + engines: {node: '>=18.0.0'} + '@streamparser/json-node@0.0.22': resolution: {integrity: sha512-sJT2ptNRwqB1lIsQrQlCoWk5rF4tif9wDh+7yluAGijJamAhrHGYpFB/Zg3hJeceoZypi74ftXk8DHzwYpbZSg==} @@ -495,6 +862,9 @@ packages: typechain: ^8.3.2 typescript: '>=4.7.0' + '@types/bn.js@5.2.0': + resolution: {integrity: sha512-DLbJ1BPqxvQhIGbeu8VbUC1DiAiahHtAYvA0ZEAa4P31F7IaArc8z3C3BRQdWX4mtLQuABG4yzp76ZrS02Ui1Q==} + '@types/chai-as-promised@8.0.2': resolution: {integrity: sha512-meQ1wDr1K5KRCSvG2lX7n7/5wf70BeptTKst0axGvnN6zqaVpRqegoIbugiAPSqOW9K9aL8gDVrm7a2LXOtn2Q==} @@ -510,9 +880,15 @@ packages: '@types/node@22.7.5': resolution: {integrity: sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==} + '@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/secp256k1@4.0.7': + resolution: {integrity: sha512-Rcvjl6vARGAKRO6jHeKMatGrvOMGrR/AR11N1x2LqintPCyDZ7NBhrh238Z2VZc7aM7KIwnFpFQ7fnfK4H/9Qw==} + adm-zip@0.4.16: resolution: {integrity: sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==} engines: {node: '>=0.3.0'} @@ -520,6 +896,9 @@ packages: aes-js@4.0.0-beta.5: resolution: {integrity: sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==} + amazon-cognito-identity-js@6.3.16: + resolution: {integrity: sha512-HPGSBGD6Q36t99puWh0LnptxO/4icnk2kqIQ9cTJ2tFQo5NMUnWQIgtrTAk8nm+caqUbjDzXzG56GBjI2tS6jQ==} + ansi-colors@4.1.3: resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} engines: {node: '>=6'} @@ -559,15 +938,43 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} + async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + axios@1.13.2: + resolution: {integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==} + balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + base-x@3.0.11: + resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bignumber.js@9.3.1: + resolution: {integrity: sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==} + + blakejs@1.2.1: + resolution: {integrity: sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==} + bn.js@4.12.2: resolution: {integrity: sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==} bn.js@5.2.2: resolution: {integrity: sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==} + bowser@2.13.1: + resolution: {integrity: sha512-OHawaAbjwx6rqICCKgSG0SAnT05bzd7ppyKLVUITZpANBaaMFBAsaNkto3LoQ31tyFP5kNujE8Cdx85G9VzOkw==} + brace-expansion@1.1.12: resolution: {integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==} @@ -580,6 +987,33 @@ packages: browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} + browserify-aes@1.2.0: + resolution: {integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==} + + bs58@4.0.1: + resolution: {integrity: sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==} + + bs58check@2.1.2: + resolution: {integrity: sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==} + + buffer-xor@1.0.3: + resolution: {integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==} + + buffer@4.9.2: + resolution: {integrity: sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.8: + resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} @@ -588,6 +1022,10 @@ packages: resolution: {integrity: sha512-3Cco8XQhi27DogSp9Ri6LYNZLi/TBY/JVnDe+mj06NkBjW/ZYOtekaEU4wZ4xcRMNrFkDv8KNtOAqHyDfz3lYg==} engines: {node: '>=18.7'} + cbor@10.0.11: + resolution: {integrity: sha512-vIwORDd/WyB8Nc23o2zNN5RrtFGlR6Fca61TtjkUXueI3Jf2DOZDl1zsshvBntZ3wZHBM9ztjnkXSmzQDaq3WA==} + engines: {node: '>=20'} + chai-as-promised@8.0.2: resolution: {integrity: sha512-1GadL+sEJVLzDjcawPM4kjfnL+p/9vrxiEUonowKOAzvVg0PixJUdtuDzdkDeQhK3zfOE76GqGkZIQ7/Adcrqw==} peerDependencies: @@ -617,6 +1055,10 @@ packages: resolution: {integrity: sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==} engines: {node: '>= 14.16.0'} + cipher-base@1.0.7: + resolution: {integrity: sha512-Mz9QMT5fJe7bKI7MH31UilT5cEK5EHHRCccw/YRFsRY47AuNgaV6HY3rscp0/I4Q+tTW/5zoqpSeRRI54TkDWA==} + engines: {node: '>= 0.10'} + cliui@8.0.1: resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} engines: {node: '>=12'} @@ -634,6 +1076,10 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + command-line-args@5.2.1: resolution: {integrity: sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==} engines: {node: '>=4.0.0'} @@ -642,9 +1088,21 @@ packages: resolution: {integrity: sha512-sH5ZSPr+7UStsloltmDh7Ce5fb8XPlHyoPzTpyyMuYCtervL65+ubVZ6Q61cFtFl62UyJlc8/JwERRbAFPUqgw==} engines: {node: '>=8.0.0'} + compare-versions@6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + 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==} + cross-spawn@7.0.6: resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} @@ -670,10 +1128,22 @@ packages: resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} engines: {node: '>=4.0.0'} + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + diff@7.0.0: resolution: {integrity: sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==} engines: {node: '>=0.3.1'} + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -694,6 +1164,22 @@ packages: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + esbuild@0.27.1: resolution: {integrity: sha512-yY35KZckJJuVVPXpvjgxiCuVEJT67F6zDeVTv4rizyPrfGBUpZQsvmxnN+C371c2esD/hNMjj4tpBhuueLN7aA==} engines: {node: '>=18'} @@ -711,17 +1197,34 @@ packages: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} + ethereum-cryptography@0.1.3: + resolution: {integrity: sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==} + ethereum-cryptography@2.2.1: resolution: {integrity: sha512-r/W8lkHSiTLxUxW8Rf3u4HGB0xQweG2RyETjywylKZSzLWoWAijRz8WCuOtJ6wah+avllXBqZuk29HCCvhEIRg==} + ethereumjs-util@7.1.5: + resolution: {integrity: sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==} + engines: {node: '>=10.0.0'} + ethers@6.16.0: resolution: {integrity: sha512-U1wulmetNymijEhpSEQ7Ct/P/Jw9/e7R1j5XIbPRydgV2DjLVMsULDlNksq3RQnFgKoLlZf88ijYtWEXcPa07A==} engines: {node: '>=14.0.0'} + evp_bytestokey@1.0.3: + resolution: {integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==} + + fast-base64-decode@1.0.0: + resolution: {integrity: sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q==} + fast-equals@5.4.0: resolution: {integrity: sha512-jt2DW/aNFNwke7AUd+Z+e6pz39KO5rzdbbFCg2sGafS4mk13MI7Z8O5z9cADNn5lhGODIgLwug6TZO2ctf7kcw==} engines: {node: '>=6.0.0'} + fast-xml-parser@5.2.5: + resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} + hasBin: true + find-replace@3.0.0: resolution: {integrity: sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==} engines: {node: '>=4.0.0'} @@ -734,6 +1237,19 @@ packages: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true + follow-redirects@1.15.11: + resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + foreground-child@3.3.1: resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} engines: {node: '>=14'} @@ -742,6 +1258,10 @@ packages: resolution: {tarball: https://codeload.github.com/foundry-rs/forge-std/tar.gz/1eea5bae12ae557d589f9f0f0edae2faa47cb262} version: 1.9.4 + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + fs-extra@7.0.1: resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} engines: {node: '>=6 <7 || >=8'} @@ -754,10 +1274,21 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + get-tsconfig@4.13.0: resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} @@ -769,6 +1300,10 @@ packages: resolution: {integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==} deprecated: Glob versions prior to v9 are no longer supported + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -784,9 +1319,28 @@ packages: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hash-base@3.1.2: + resolution: {integrity: sha512-Bb33KbowVTIj5s7Ked1OsqHUeCpz//tPwR+E2zJgJKo9Z5XolZ9b6bdUgjmYlwnWhoOQKoTd1TYToZGn5mAYOg==} + engines: {node: '>= 0.8'} + 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 @@ -794,6 +1348,9 @@ packages: hmac-drbg@1.0.1: resolution: {integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==} + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + immer@10.0.2: resolution: {integrity: sha512-Rx3CqeqQ19sxUtYV9CU911Vhy8/721wRFnJv3REVGWUmoAcIwzifTsdmJte/MV+0/XpM35LZdQMBGkRIoLPwQA==} @@ -804,6 +1361,10 @@ packages: inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} @@ -816,16 +1377,32 @@ packages: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + isomorphic-unfetch@3.1.0: + resolution: {integrity: sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==} + jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + js-cookie@2.2.1: + resolution: {integrity: sha512-HvdH2LzI/EAZcUwA8+0nKNtWHqS+ZmijLA30RwZA0bo7ToCckjK5MkGhjED9KoRcXO6BaGI3I9UIzSA1FKFPOQ==} + js-sha3@0.8.0: resolution: {integrity: sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==} @@ -848,6 +1425,10 @@ packages: jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + keccak@3.0.4: + resolution: {integrity: sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==} + engines: {node: '>=10.0.0'} + kleur@3.0.3: resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} engines: {node: '>=6'} @@ -875,12 +1456,27 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + md5.js@1.3.5: + resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + micro-eth-signer@0.14.0: resolution: {integrity: sha512-5PLLzHiVYPWClEvZIXXFu5yutzpadb73rnQCpUqIHu3No3coFuWQNfE5tkBQJ7djuLYl6aRLaS0MgWJYGoqiBw==} micro-packed@0.7.3: resolution: {integrity: sha512-2Milxs+WNC00TRlem41oRswvw31146GiSaoCT7s3Xi2gMUglW5QBeqlQaZeHr5tJx9nm3i57LNXPqxOOaWtTYg==} + 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'} + minimalistic-assert@1.0.1: resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==} @@ -919,6 +1515,29 @@ packages: engines: {node: '>=10'} hasBin: true + node-addon-api@2.0.2: + resolution: {integrity: sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==} + + node-addon-api@5.1.0: + resolution: {integrity: sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==} + + 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.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + + nofilter@3.1.0: + resolution: {integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==} + engines: {node: '>=12.19'} + once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} @@ -957,21 +1576,41 @@ packages: resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} engines: {node: '>= 14.16'} + pbkdf2@3.1.5: + resolution: {integrity: sha512-Q3CG/cYvCO1ye4QKkuH7EXxs3VC/rI1/trd+qX2+PolbaKG0H+bgcZzrTt96mMyRtejk+JMCiLUn3y29W8qmFQ==} + engines: {node: '>= 0.10'} + picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + 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==} + 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==} + randombytes@2.1.0: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} + 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'} @@ -995,12 +1634,38 @@ packages: resolution: {integrity: sha512-OcXjMsGdhL4XnbShKpAcSqPMzQoYkYyhbEaeSko47MjRP9NfEQMhZkXL1DoFlt9LWQn4YttrdnV6X2OiyzBi+A==} engines: {node: '>=10'} + 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'} + rfdc@1.4.1: resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + ripemd160@2.0.3: + resolution: {integrity: sha512-5Di9UC0+8h1L6ZD2d7awM7E/T4uA1fJRlx6zk/NvdCCVEoAnFqvHmCuNeIKoCeIixBX/q8uM+6ycDvF8woqosA==} + engines: {node: '>= 0.8'} + + rlp@2.2.7: + resolution: {integrity: sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==} + hasBin: true + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + scrypt-js@3.0.1: + resolution: {integrity: sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==} + + secp256k1@4.0.4: + resolution: {integrity: sha512-6JfvwvjUOn8F/jUoBY2Q1v5WY5XS+rj8qSe0v8Y4ezH4InLgTEeOOPQsRll9OV429Pvo6BCHGavIyJfr3TAhsw==} + engines: {node: '>=18.0.0'} + semver@7.7.3: resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} engines: {node: '>=10'} @@ -1009,6 +1674,18 @@ packages: 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==} + + sha.js@2.4.12: + resolution: {integrity: sha512-8LzC5+bvI45BjpfXU8V5fdU2mfeKiQe1D1gIMn7XUlF3OTUrpdJpPPH4EMAnF0DsHHdSZqCdSss5qCmJKuiO3w==} + engines: {node: '>= 0.10'} + hasBin: true + shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -1017,6 +1694,9 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + 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'} @@ -1024,6 +1704,9 @@ packages: sisteransi@1.0.5: resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + solidity-ast@0.4.61: + resolution: {integrity: sha512-OYBJYcYyG7gLV0VuXl9CUrvgJXjV/v0XnR4+1YomVe3q+QyENQXJJxAEASUz4vN6lMAl+C8RSRSr5MBAz09f6w==} + split2@3.2.2: resolution: {integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==} @@ -1038,6 +1721,9 @@ packages: 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==} @@ -1053,6 +1739,9 @@ packages: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} + strnum@2.1.2: + resolution: {integrity: sha512-l63NF9y/cLROq/yqKXSLtcMeeyOfnSQlfMSlzFt/K73oIaD8DGaQWd7Z34X9GPiKqP5rbSh84Hl4bOlLcjiSrQ==} + supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -1072,6 +1761,13 @@ packages: through2@4.0.2: resolution: {integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==} + to-buffer@1.2.2: + resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} + engines: {node: '>= 0.4'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + ts-command-line-args@2.5.1: resolution: {integrity: sha512-H69ZwTw3rFHb5WYpQya40YAX2/w7Ut75uUECbgBIsLmM+BNuYnxsltfyyLMxy6sEeKxgijLTnQtLd0nKd6+IYw==} hasBin: true @@ -1081,6 +1777,9 @@ packages: peerDependencies: typescript: '>=3.7.0' + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} @@ -1095,6 +1794,10 @@ packages: peerDependencies: typescript: '>=4.3.0' + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + typescript@5.8.3: resolution: {integrity: sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==} engines: {node: '>=14.17'} @@ -1118,6 +1821,9 @@ packages: resolution: {integrity: sha512-hU/10obOIu62MGYjdskASR3CUAiYaFTtC9Pa6vHyf//mAipSvSQg6od2CnJswq7fvzNS3zJhxoRkgNVaHurWKw==} 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'} @@ -1125,6 +1831,16 @@ packages: util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-typed-array@1.1.19: + resolution: {integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==} + engines: {node: '>= 0.4'} + which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} engines: {node: '>= 8'} @@ -1199,6 +1915,402 @@ snapshots: '@adraffy/ens-normalize@1.10.1': {} + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.936.0 + tslib: 2.7.0 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-locate-window': 3.893.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 + + '@aws-crypto/sha256-js@1.2.2': + dependencies: + '@aws-crypto/util': 1.2.2 + '@aws-sdk/types': 3.936.0 + tslib: 1.14.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.936.0 + tslib: 2.7.0 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.7.0 + + '@aws-crypto/util@1.2.2': + dependencies: + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-utf8-browser': 3.259.0 + tslib: 1.14.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.7.0 + + '@aws-sdk/client-lambda@3.950.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.947.0 + '@aws-sdk/credential-provider-node': 3.948.0 + '@aws-sdk/middleware-host-header': 3.936.0 + '@aws-sdk/middleware-logger': 3.936.0 + '@aws-sdk/middleware-recursion-detection': 3.948.0 + '@aws-sdk/middleware-user-agent': 3.947.0 + '@aws-sdk/region-config-resolver': 3.936.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/util-user-agent-browser': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.947.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.7 + '@smithy/eventstream-serde-browser': 4.2.5 + '@smithy/eventstream-serde-config-resolver': 4.3.5 + '@smithy/eventstream-serde-node': 4.2.5 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.14 + '@smithy/middleware-retry': 4.4.14 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.13 + '@smithy/util-defaults-mode-node': 4.2.16 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-stream': 4.5.6 + '@smithy/util-utf8': 4.2.0 + '@smithy/util-waiter': 4.2.5 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.948.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.947.0 + '@aws-sdk/middleware-host-header': 3.936.0 + '@aws-sdk/middleware-logger': 3.936.0 + '@aws-sdk/middleware-recursion-detection': 3.948.0 + '@aws-sdk/middleware-user-agent': 3.947.0 + '@aws-sdk/region-config-resolver': 3.936.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/util-user-agent-browser': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.947.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.7 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.14 + '@smithy/middleware-retry': 4.4.14 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.13 + '@smithy/util-defaults-mode-node': 4.2.16 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.947.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@aws-sdk/xml-builder': 3.930.0 + '@smithy/core': 3.18.7 + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/signature-v4': 5.3.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-utf8': 4.2.0 + tslib: 2.7.0 + + '@aws-sdk/credential-provider-env@3.947.0': + dependencies: + '@aws-sdk/core': 3.947.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@aws-sdk/credential-provider-http@3.947.0': + dependencies: + '@aws-sdk/core': 3.947.0 + '@aws-sdk/types': 3.936.0 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/node-http-handler': 4.4.5 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/util-stream': 4.5.6 + tslib: 2.7.0 + + '@aws-sdk/credential-provider-ini@3.948.0': + dependencies: + '@aws-sdk/core': 3.947.0 + '@aws-sdk/credential-provider-env': 3.947.0 + '@aws-sdk/credential-provider-http': 3.947.0 + '@aws-sdk/credential-provider-login': 3.948.0 + '@aws-sdk/credential-provider-process': 3.947.0 + '@aws-sdk/credential-provider-sso': 3.948.0 + '@aws-sdk/credential-provider-web-identity': 3.948.0 + '@aws-sdk/nested-clients': 3.948.0 + '@aws-sdk/types': 3.936.0 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-login@3.948.0': + dependencies: + '@aws-sdk/core': 3.947.0 + '@aws-sdk/nested-clients': 3.948.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.948.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.947.0 + '@aws-sdk/credential-provider-http': 3.947.0 + '@aws-sdk/credential-provider-ini': 3.948.0 + '@aws-sdk/credential-provider-process': 3.947.0 + '@aws-sdk/credential-provider-sso': 3.948.0 + '@aws-sdk/credential-provider-web-identity': 3.948.0 + '@aws-sdk/types': 3.936.0 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.947.0': + dependencies: + '@aws-sdk/core': 3.947.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@aws-sdk/credential-provider-sso@3.948.0': + dependencies: + '@aws-sdk/client-sso': 3.948.0 + '@aws-sdk/core': 3.947.0 + '@aws-sdk/token-providers': 3.948.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.948.0': + dependencies: + '@aws-sdk/core': 3.947.0 + '@aws-sdk/nested-clients': 3.948.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/middleware-host-header@3.936.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-logger@3.936.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-recursion-detection@3.948.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@aws/lambda-invoke-store': 0.2.2 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@aws-sdk/middleware-user-agent@3.947.0': + dependencies: + '@aws-sdk/core': 3.947.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@smithy/core': 3.18.7 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@aws-sdk/nested-clients@3.948.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.947.0 + '@aws-sdk/middleware-host-header': 3.936.0 + '@aws-sdk/middleware-logger': 3.936.0 + '@aws-sdk/middleware-recursion-detection': 3.948.0 + '@aws-sdk/middleware-user-agent': 3.947.0 + '@aws-sdk/region-config-resolver': 3.936.0 + '@aws-sdk/types': 3.936.0 + '@aws-sdk/util-endpoints': 3.936.0 + '@aws-sdk/util-user-agent-browser': 3.936.0 + '@aws-sdk/util-user-agent-node': 3.947.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/core': 3.18.7 + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/hash-node': 4.2.5 + '@smithy/invalid-dependency': 4.2.5 + '@smithy/middleware-content-length': 4.2.5 + '@smithy/middleware-endpoint': 4.3.14 + '@smithy/middleware-retry': 4.4.14 + '@smithy/middleware-serde': 4.2.6 + '@smithy/middleware-stack': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/node-http-handler': 4.4.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-body-length-node': 4.2.1 + '@smithy/util-defaults-mode-browser': 4.3.13 + '@smithy/util-defaults-mode-node': 4.2.16 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/util-utf8': 4.2.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.936.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@smithy/config-resolver': 4.4.3 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@aws-sdk/token-providers@3.948.0': + dependencies: + '@aws-sdk/core': 3.947.0 + '@aws-sdk/nested-clients': 3.948.0 + '@aws-sdk/types': 3.936.0 + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.936.0': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@aws-sdk/util-endpoints@3.936.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-endpoints': 3.2.5 + tslib: 2.7.0 + + '@aws-sdk/util-locate-window@3.893.0': + dependencies: + tslib: 2.7.0 + + '@aws-sdk/util-user-agent-browser@3.936.0': + dependencies: + '@aws-sdk/types': 3.936.0 + '@smithy/types': 4.9.0 + bowser: 2.13.1 + tslib: 2.7.0 + + '@aws-sdk/util-user-agent-node@3.947.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.947.0 + '@aws-sdk/types': 3.936.0 + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@aws-sdk/util-utf8-browser@3.259.0': + dependencies: + tslib: 2.7.0 + + '@aws-sdk/xml-builder@3.930.0': + dependencies: + '@smithy/types': 4.9.0 + fast-xml-parser: 5.2.5 + tslib: 2.7.0 + + '@aws/lambda-invoke-store@0.2.2': {} + + '@bytecodealliance/preview2-shim@0.17.0': {} + '@esbuild/aix-ppc64@0.27.1': optional: true @@ -1648,6 +2760,10 @@ snapshots: '@nomicfoundation/ignition-ui@3.0.6': {} + '@nomicfoundation/slang@0.18.3': + dependencies: + '@bytecodealliance/preview2-shim': 0.17.0 + '@nomicfoundation/solidity-analyzer-darwin-arm64@0.1.2': optional: true @@ -1679,6 +2795,74 @@ snapshots: '@nomicfoundation/solidity-analyzer-linux-x64-musl': 0.1.2 '@nomicfoundation/solidity-analyzer-win32-x64-msvc': 0.1.2 + '@openzeppelin/contracts@5.4.0': {} + + '@openzeppelin/defender-sdk-base-client@2.7.0': + dependencies: + '@aws-sdk/client-lambda': 3.950.0 + amazon-cognito-identity-js: 6.3.16 + async-retry: 1.3.3 + transitivePeerDependencies: + - aws-crt + - encoding + + '@openzeppelin/defender-sdk-deploy-client@2.7.0(debug@4.4.3)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 2.7.0 + axios: 1.13.2(debug@4.4.3) + lodash: 4.17.21 + transitivePeerDependencies: + - aws-crt + - debug + - encoding + + '@openzeppelin/defender-sdk-network-client@2.7.0(debug@4.4.3)': + dependencies: + '@openzeppelin/defender-sdk-base-client': 2.7.0 + axios: 1.13.2(debug@4.4.3) + lodash: 4.17.21 + transitivePeerDependencies: + - aws-crt + - debug + - encoding + + '@openzeppelin/hardhat-upgrades@3.9.1(@nomicfoundation/hardhat-ethers@4.0.3(hardhat@3.1.0))(@nomicfoundation/hardhat-verify@3.0.8(hardhat@3.1.0))(ethers@6.16.0)(hardhat@3.1.0)': + dependencies: + '@nomicfoundation/hardhat-ethers': 4.0.3(hardhat@3.1.0) + '@openzeppelin/defender-sdk-base-client': 2.7.0 + '@openzeppelin/defender-sdk-deploy-client': 2.7.0(debug@4.4.3) + '@openzeppelin/defender-sdk-network-client': 2.7.0(debug@4.4.3) + '@openzeppelin/upgrades-core': 1.44.2 + chalk: 4.1.2 + debug: 4.4.3(supports-color@8.1.1) + ethereumjs-util: 7.1.5 + ethers: 6.16.0 + hardhat: 3.1.0 + proper-lockfile: 4.1.2 + undici: 6.22.0 + optionalDependencies: + '@nomicfoundation/hardhat-verify': 3.0.8(hardhat@3.1.0) + transitivePeerDependencies: + - aws-crt + - encoding + - supports-color + + '@openzeppelin/upgrades-core@1.44.2': + dependencies: + '@nomicfoundation/slang': 0.18.3 + bignumber.js: 9.3.1 + cbor: 10.0.11 + chalk: 4.1.2 + compare-versions: 6.1.1 + debug: 4.4.3(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.61 + transitivePeerDependencies: + - supports-color + '@pkgjs/parseargs@0.11.0': optional: true @@ -1699,6 +2883,316 @@ snapshots: '@sentry/core@9.47.1': {} + '@smithy/abort-controller@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/config-resolver@4.4.3': + dependencies: + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-config-provider': 4.2.0 + '@smithy/util-endpoints': 3.2.5 + '@smithy/util-middleware': 4.2.5 + tslib: 2.7.0 + + '@smithy/core@3.18.7': + dependencies: + '@smithy/middleware-serde': 4.2.6 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-body-length-browser': 4.2.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-stream': 4.5.6 + '@smithy/util-utf8': 4.2.0 + '@smithy/uuid': 1.1.0 + tslib: 2.7.0 + + '@smithy/credential-provider-imds@4.2.5': + dependencies: + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + tslib: 2.7.0 + + '@smithy/eventstream-codec@4.2.5': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.9.0 + '@smithy/util-hex-encoding': 4.2.0 + tslib: 2.7.0 + + '@smithy/eventstream-serde-browser@4.2.5': + dependencies: + '@smithy/eventstream-serde-universal': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/eventstream-serde-config-resolver@4.3.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/eventstream-serde-node@4.2.5': + dependencies: + '@smithy/eventstream-serde-universal': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/eventstream-serde-universal@4.2.5': + dependencies: + '@smithy/eventstream-codec': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/fetch-http-handler@5.3.6': + dependencies: + '@smithy/protocol-http': 5.3.5 + '@smithy/querystring-builder': 4.2.5 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + tslib: 2.7.0 + + '@smithy/hash-node@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.7.0 + + '@smithy/invalid-dependency@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.7.0 + + '@smithy/is-array-buffer@4.2.0': + dependencies: + tslib: 2.7.0 + + '@smithy/middleware-content-length@4.2.5': + dependencies: + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/middleware-endpoint@4.3.14': + dependencies: + '@smithy/core': 3.18.7 + '@smithy/middleware-serde': 4.2.6 + '@smithy/node-config-provider': 4.3.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + '@smithy/url-parser': 4.2.5 + '@smithy/util-middleware': 4.2.5 + tslib: 2.7.0 + + '@smithy/middleware-retry@4.4.14': + dependencies: + '@smithy/node-config-provider': 4.3.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/service-error-classification': 4.2.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-retry': 4.2.5 + '@smithy/uuid': 1.1.0 + tslib: 2.7.0 + + '@smithy/middleware-serde@4.2.6': + dependencies: + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/middleware-stack@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/node-config-provider@4.3.5': + dependencies: + '@smithy/property-provider': 4.2.5 + '@smithy/shared-ini-file-loader': 4.4.0 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/node-http-handler@4.4.5': + dependencies: + '@smithy/abort-controller': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/querystring-builder': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/property-provider@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/protocol-http@5.3.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/querystring-builder@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + '@smithy/util-uri-escape': 4.2.0 + tslib: 2.7.0 + + '@smithy/querystring-parser@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/service-error-classification@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + + '@smithy/shared-ini-file-loader@4.4.0': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/signature-v4@5.3.5': + dependencies: + '@smithy/is-array-buffer': 4.2.0 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-middleware': 4.2.5 + '@smithy/util-uri-escape': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.7.0 + + '@smithy/smithy-client@4.9.10': + dependencies: + '@smithy/core': 3.18.7 + '@smithy/middleware-endpoint': 4.3.14 + '@smithy/middleware-stack': 4.2.5 + '@smithy/protocol-http': 5.3.5 + '@smithy/types': 4.9.0 + '@smithy/util-stream': 4.5.6 + tslib: 2.7.0 + + '@smithy/types@4.9.0': + dependencies: + tslib: 2.7.0 + + '@smithy/url-parser@4.2.5': + dependencies: + '@smithy/querystring-parser': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/util-base64@4.3.0': + dependencies: + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.7.0 + + '@smithy/util-body-length-browser@4.2.0': + dependencies: + tslib: 2.7.0 + + '@smithy/util-body-length-node@4.2.1': + dependencies: + tslib: 2.7.0 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.7.0 + + '@smithy/util-buffer-from@4.2.0': + dependencies: + '@smithy/is-array-buffer': 4.2.0 + tslib: 2.7.0 + + '@smithy/util-config-provider@4.2.0': + dependencies: + tslib: 2.7.0 + + '@smithy/util-defaults-mode-browser@4.3.13': + dependencies: + '@smithy/property-provider': 4.2.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/util-defaults-mode-node@4.2.16': + dependencies: + '@smithy/config-resolver': 4.4.3 + '@smithy/credential-provider-imds': 4.2.5 + '@smithy/node-config-provider': 4.3.5 + '@smithy/property-provider': 4.2.5 + '@smithy/smithy-client': 4.9.10 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/util-endpoints@3.2.5': + dependencies: + '@smithy/node-config-provider': 4.3.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/util-hex-encoding@4.2.0': + dependencies: + tslib: 2.7.0 + + '@smithy/util-middleware@4.2.5': + dependencies: + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/util-retry@4.2.5': + dependencies: + '@smithy/service-error-classification': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/util-stream@4.5.6': + dependencies: + '@smithy/fetch-http-handler': 5.3.6 + '@smithy/node-http-handler': 4.4.5 + '@smithy/types': 4.9.0 + '@smithy/util-base64': 4.3.0 + '@smithy/util-buffer-from': 4.2.0 + '@smithy/util-hex-encoding': 4.2.0 + '@smithy/util-utf8': 4.2.0 + tslib: 2.7.0 + + '@smithy/util-uri-escape@4.2.0': + dependencies: + tslib: 2.7.0 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.7.0 + + '@smithy/util-utf8@4.2.0': + dependencies: + '@smithy/util-buffer-from': 4.2.0 + tslib: 2.7.0 + + '@smithy/util-waiter@4.2.5': + dependencies: + '@smithy/abort-controller': 4.2.5 + '@smithy/types': 4.9.0 + tslib: 2.7.0 + + '@smithy/uuid@1.1.0': + dependencies: + tslib: 2.7.0 + '@streamparser/json-node@0.0.22': dependencies: '@streamparser/json': 0.0.22 @@ -1713,6 +3207,10 @@ snapshots: typechain: 8.3.2(typescript@5.8.3) typescript: 5.8.3 + '@types/bn.js@5.2.0': + dependencies: + '@types/node': 22.19.3 + '@types/chai-as-promised@8.0.2': dependencies: '@types/chai': 4.3.20 @@ -1729,12 +3227,30 @@ snapshots: dependencies: undici-types: 6.19.8 + '@types/pbkdf2@3.1.2': + dependencies: + '@types/node': 22.19.3 + '@types/prettier@2.7.3': {} + '@types/secp256k1@4.0.7': + dependencies: + '@types/node': 22.19.3 + adm-zip@0.4.16: {} aes-js@4.0.0-beta.5: {} + amazon-cognito-identity-js@6.3.16: + 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 + ansi-colors@4.1.3: {} ansi-regex@5.0.1: {} @@ -1759,12 +3275,42 @@ snapshots: assertion-error@2.0.1: {} + async-retry@1.3.3: + dependencies: + retry: 0.13.1 + + asynckit@0.4.0: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + axios@1.13.2(debug@4.4.3): + dependencies: + follow-redirects: 1.15.11(debug@4.4.3) + form-data: 4.0.5 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + balanced-match@1.0.2: {} + base-x@3.0.11: + dependencies: + safe-buffer: 5.2.1 + + base64-js@1.5.1: {} + + bignumber.js@9.3.1: {} + + blakejs@1.2.1: {} + bn.js@4.12.2: {} bn.js@5.2.2: {} + bowser@2.13.1: {} + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 @@ -1778,10 +3324,58 @@ snapshots: browser-stdout@1.3.1: {} + browserify-aes@1.2.0: + dependencies: + buffer-xor: 1.0.3 + cipher-base: 1.0.7 + create-hash: 1.2.0 + evp_bytestokey: 1.0.3 + inherits: 2.0.4 + safe-buffer: 5.2.1 + + bs58@4.0.1: + dependencies: + base-x: 3.0.11 + + bs58check@2.1.2: + dependencies: + bs58: 4.0.1 + create-hash: 1.2.0 + safe-buffer: 5.2.1 + + buffer-xor@1.0.3: {} + + buffer@4.9.2: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + isarray: 1.0.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + camelcase@6.3.0: {} cbor2@1.12.0: {} + cbor@10.0.11: + dependencies: + nofilter: 3.1.0 + chai-as-promised@8.0.2(chai@5.3.3): dependencies: chai: 5.3.3 @@ -1814,6 +3408,12 @@ snapshots: dependencies: readdirp: 4.1.2 + cipher-base@1.0.7: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + cliui@8.0.1: dependencies: string-width: 4.2.3 @@ -1832,6 +3432,10 @@ snapshots: color-name@1.1.4: {} + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + command-line-args@5.2.1: dependencies: array-back: 3.1.0 @@ -1846,8 +3450,29 @@ snapshots: table-layout: 1.0.2 typical: 5.2.0 + compare-versions@6.1.1: {} + concat-map@0.0.1: {} + core-util-is@1.0.3: {} + + create-hash@1.2.0: + dependencies: + cipher-base: 1.0.7 + inherits: 2.0.4 + md5.js: 1.3.5 + ripemd160: 2.0.3 + sha.js: 2.4.12 + + create-hmac@1.1.7: + dependencies: + cipher-base: 1.0.7 + create-hash: 1.2.0 + inherits: 2.0.4 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 @@ -1866,8 +3491,22 @@ snapshots: deep-extend@0.6.0: {} + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + delayed-stream@1.0.0: {} + diff@7.0.0: {} + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + eastasianwidth@0.2.0: {} elliptic@6.6.1: @@ -1891,6 +3530,21 @@ snapshots: env-paths@2.2.1: {} + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.2 + esbuild@0.27.1: optionalDependencies: '@esbuild/aix-ppc64': 0.27.1 @@ -1926,6 +3580,24 @@ snapshots: escape-string-regexp@4.0.0: {} + ethereum-cryptography@0.1.3: + dependencies: + '@types/pbkdf2': 3.1.2 + '@types/secp256k1': 4.0.7 + 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.5 + randombytes: 2.1.0 + safe-buffer: 5.2.1 + scrypt-js: 3.0.1 + secp256k1: 4.0.4 + setimmediate: 1.0.5 + ethereum-cryptography@2.2.1: dependencies: '@noble/curves': 1.4.2 @@ -1933,6 +3605,14 @@ snapshots: '@scure/bip32': 1.4.0 '@scure/bip39': 1.3.0 + ethereumjs-util@7.1.5: + dependencies: + '@types/bn.js': 5.2.0 + bn.js: 5.2.2 + create-hash: 1.2.0 + ethereum-cryptography: 0.1.3 + rlp: 2.2.7 + ethers@6.16.0: dependencies: '@adraffy/ens-normalize': 1.10.1 @@ -1946,8 +3626,19 @@ snapshots: - bufferutil - utf-8-validate + evp_bytestokey@1.0.3: + dependencies: + md5.js: 1.3.5 + safe-buffer: 5.2.1 + + fast-base64-decode@1.0.0: {} + fast-equals@5.4.0: {} + fast-xml-parser@5.2.5: + dependencies: + strnum: 2.1.2 + find-replace@3.0.0: dependencies: array-back: 3.1.0 @@ -1959,6 +3650,14 @@ snapshots: flat@5.0.2: {} + follow-redirects@1.15.11(debug@4.4.3): + optionalDependencies: + debug: 4.4.3(supports-color@8.1.1) + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + foreground-child@3.3.1: dependencies: cross-spawn: 7.0.6 @@ -1966,6 +3665,14 @@ snapshots: forge-std@https://codeload.github.com/foundry-rs/forge-std/tar.gz/1eea5bae12ae557d589f9f0f0edae2faa47cb262: {} + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 + mime-types: 2.1.35 + fs-extra@7.0.1: dependencies: graceful-fs: 4.2.11 @@ -1977,8 +3684,28 @@ snapshots: fsevents@2.3.3: optional: true + function-bind@1.1.2: {} + get-caller-file@2.0.5: {} + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.2 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-tsconfig@4.13.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -2001,6 +3728,8 @@ snapshots: once: 1.4.0 path-is-absolute: 1.0.1 + gopd@1.2.0: {} + graceful-fs@4.2.11: {} hardhat@3.1.0: @@ -2033,11 +3762,32 @@ snapshots: has-flag@4.0.0: {} + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hash-base@3.1.2: + dependencies: + inherits: 2.0.4 + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + 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: {} hmac-drbg@1.0.1: @@ -2046,6 +3796,8 @@ snapshots: minimalistic-assert: 1.0.1 minimalistic-crypto-utils: 1.0.1 + ieee754@1.2.1: {} + immer@10.0.2: {} inflight@1.0.6: @@ -2055,22 +3807,41 @@ snapshots: inherits@2.0.4: {} + is-callable@1.2.7: {} + is-fullwidth-code-point@3.0.0: {} is-path-inside@3.0.3: {} is-plain-obj@2.1.0: {} + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.19 + is-unicode-supported@0.1.0: {} + isarray@1.0.0: {} + + isarray@2.0.5: {} + isexe@2.0.0: {} + isomorphic-unfetch@3.1.0: + dependencies: + node-fetch: 2.7.0 + unfetch: 4.2.0 + transitivePeerDependencies: + - encoding + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 + js-cookie@2.2.1: {} + js-sha3@0.8.0: {} js-yaml@4.1.1: @@ -2087,6 +3858,12 @@ snapshots: optionalDependencies: graceful-fs: 4.2.11 + keccak@3.0.4: + dependencies: + node-addon-api: 2.0.2 + node-gyp-build: 4.8.4 + readable-stream: 3.6.2 + kleur@3.0.3: {} locate-path@6.0.0: @@ -2108,6 +3885,14 @@ snapshots: lru-cache@10.4.3: {} + math-intrinsics@1.1.0: {} + + md5.js@1.3.5: + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + safe-buffer: 5.2.1 + micro-eth-signer@0.14.0: dependencies: '@noble/curves': 1.8.2 @@ -2118,6 +3903,12 @@ snapshots: dependencies: '@scure/base': 1.2.6 + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + minimalistic-assert@1.0.1: {} minimalistic-crypto-utils@1.0.1: {} @@ -2170,6 +3961,18 @@ snapshots: split2: 3.2.2 through2: 4.0.2 + node-addon-api@2.0.2: {} + + node-addon-api@5.1.0: {} + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-gyp-build@4.8.4: {} + + nofilter@3.1.0: {} + once@1.4.0: dependencies: wrappy: 1.0.2 @@ -2199,19 +4002,50 @@ snapshots: pathval@2.0.1: {} + pbkdf2@3.1.5: + dependencies: + create-hash: 1.2.0 + create-hmac: 1.1.7 + ripemd160: 2.0.3 + safe-buffer: 5.2.1 + sha.js: 2.4.12 + to-buffer: 1.2.2 + picocolors@1.1.1: {} + possible-typed-array-names@1.1.0: {} + prettier@2.8.8: {} + process-nextick-args@2.0.1: {} + 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: {} + randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 + 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 @@ -2228,26 +4062,70 @@ snapshots: resolve.exports@2.0.3: {} + retry@0.12.0: {} + + retry@0.13.1: {} + rfdc@1.4.1: {} + ripemd160@2.0.3: + dependencies: + hash-base: 3.1.2 + inherits: 2.0.4 + + rlp@2.2.7: + dependencies: + bn.js: 5.2.2 + + safe-buffer@5.1.2: {} + safe-buffer@5.2.1: {} + scrypt-js@3.0.1: {} + + secp256k1@4.0.4: + dependencies: + elliptic: 6.6.1 + node-addon-api: 5.1.0 + node-gyp-build: 4.8.4 + semver@7.7.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.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + setimmediate@1.0.5: {} + + sha.js@2.4.12: + dependencies: + inherits: 2.0.4 + safe-buffer: 5.2.1 + to-buffer: 1.2.2 + shebang-command@2.0.0: dependencies: shebang-regex: 3.0.0 shebang-regex@3.0.0: {} + signal-exit@3.0.7: {} + signal-exit@4.1.0: {} sisteransi@1.0.5: {} + solidity-ast@0.4.61: {} + split2@3.2.2: dependencies: readable-stream: 3.6.2 @@ -2266,6 +4144,10 @@ snapshots: emoji-regex: 9.2.2 strip-ansi: 7.1.2 + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + string_decoder@1.3.0: dependencies: safe-buffer: 5.2.1 @@ -2280,6 +4162,8 @@ snapshots: strip-json-comments@3.1.1: {} + strnum@2.1.2: {} + supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -2303,6 +4187,14 @@ snapshots: dependencies: readable-stream: 3.6.2 + to-buffer@1.2.2: + dependencies: + isarray: 2.0.5 + safe-buffer: 5.2.1 + typed-array-buffer: 1.0.3 + + tr46@0.0.3: {} + ts-command-line-args@2.5.1: dependencies: chalk: 4.1.2 @@ -2314,6 +4206,8 @@ snapshots: dependencies: typescript: 5.8.3 + tslib@1.14.1: {} + tslib@2.7.0: {} tsx@4.21.0: @@ -2339,6 +4233,12 @@ snapshots: transitivePeerDependencies: - supports-color + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + typescript@5.8.3: {} typical@4.0.0: {} @@ -2351,10 +4251,29 @@ snapshots: undici@6.22.0: {} + unfetch@4.2.0: {} + universalify@0.1.2: {} util-deprecate@1.0.2: {} + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-typed-array@1.1.19: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + which@2.0.2: dependencies: isexe: 2.0.0 diff --git a/contract/scripts/txDryrunning.ts b/contract/scripts/txDryrunning.ts new file mode 100644 index 0000000..3ce4ecf --- /dev/null +++ b/contract/scripts/txDryrunning.ts @@ -0,0 +1,26 @@ +const ethers = require("hardhat"); + +async function main() { + const factory = await ethers.getContractFactory("PingPong"); + + const deployTx = await factory.getDeployTransaction(); + + const gasUsed = await ethers.provider.estimateGas(deployTx); + + const feeData = await ethers.provider.getFeeData(); + + const gasPrice = + feeData.maxFeePerGas ?? feeData.gasPrice!; + + const costWei = gasUsed * gasPrice; + + console.log("Gas estimate:", gasUsed.toString()); + console.log("Gas price (wei):", gasPrice.toString()); + console.log("Estimated deploy cost (wei):", costWei.toString()); + console.log( + "Estimated deploy cost (ETH):", + ethers.formatEther(costWei) + ); +} + +main(); \ No newline at end of file From f45bb0352e32293e44831d512e7e4b5382180954 Mon Sep 17 00:00:00 2001 From: Biokes <106444765+Biokes@users.noreply.github.com> Date: Mon, 15 Dec 2025 18:26:41 +0100 Subject: [PATCH 3/4] [dev_contract] update: rename estimateDeploy file for mainnet dry running tx for gs cost --- contract/scripts/{txDryrunning.ts => estimateDeploy.ts} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename contract/scripts/{txDryrunning.ts => estimateDeploy.ts} (100%) diff --git a/contract/scripts/txDryrunning.ts b/contract/scripts/estimateDeploy.ts similarity index 100% rename from contract/scripts/txDryrunning.ts rename to contract/scripts/estimateDeploy.ts From 70a505a7abb1c774f06f31846e9dd7c065d50ac9 Mon Sep 17 00:00:00 2001 From: Biokes <106444765+Biokes@users.noreply.github.com> Date: Mon, 15 Dec 2025 19:00:13 +0100 Subject: [PATCH 4/4] update: added estimateDeploy funcs and deps --- contract/hardhat.config.ts | 5 ++- contract/package.json | 41 ++++++++++++----------- contract/pnpm-lock.yaml | 3 ++ contract/scripts/estimateDeploy.ts | 53 +++++++++++++++++++++--------- 4 files changed, 66 insertions(+), 36 deletions(-) diff --git a/contract/hardhat.config.ts b/contract/hardhat.config.ts index 9120c76..5105608 100644 --- a/contract/hardhat.config.ts +++ b/contract/hardhat.config.ts @@ -1,8 +1,11 @@ import hardhatToolboxMochaEthersPlugin from "@nomicfoundation/hardhat-toolbox-mocha-ethers"; import { configVariable, defineConfig } from "hardhat/config"; +import HardhatIgnitionEthersPlugin from "@nomicfoundation/hardhat-ignition-ethers"; +import hardhatIgnitionEthers from "@nomicfoundation/hardhat-ignition-ethers"; + export default defineConfig({ - plugins: [hardhatToolboxMochaEthersPlugin], + plugins: [hardhatToolboxMochaEthersPlugin, HardhatIgnitionEthersPlugin,hardhatIgnitionEthers], solidity: { profiles: { default: { diff --git a/contract/package.json b/contract/package.json index 53da8d7..f28a72e 100644 --- a/contract/package.json +++ b/contract/package.json @@ -1,24 +1,25 @@ { - "name": "contract", - "version": "1.0.0", - "type": "module", - "devDependencies": { - "@nomicfoundation/hardhat-ethers": "^4.0.2", - "@nomicfoundation/hardhat-ignition": "^3.0.6", - "@nomicfoundation/hardhat-keystore": "^3.0.3", - "@nomicfoundation/hardhat-toolbox-mocha-ethers": "^3.0.2", - "@nomicfoundation/hardhat-verify": "^3.0.8", - "@types/chai": "^4.2.0", - "@types/chai-as-promised": "^8.0.1", - "@types/mocha": ">=10.0.10", - "@types/node": "^22.8.5", - "chai": "^5.1.2", - "ethers": "^6.14.0", - "forge-std": "github:foundry-rs/forge-std#v1.9.4", - "hardhat": "^3.1.0", - "mocha": "^11.0.0", - "typescript": "~5.8.0", - "@openzeppelin/hardhat-upgrades": "^3.9.1" + "name": "contract", + "version": "1.0.0", + "type": "module", + "devDependencies": { + "@nomicfoundation/hardhat-ethers": "^4.0.2", + "@nomicfoundation/hardhat-ignition": "^3.0.6", + "@nomicfoundation/hardhat-ignition-ethers": "^3.0.6", + "@nomicfoundation/hardhat-keystore": "^3.0.3", + "@nomicfoundation/hardhat-toolbox-mocha-ethers": "^3.0.2", + "@nomicfoundation/hardhat-verify": "^3.0.8", + "@openzeppelin/hardhat-upgrades": "^3.9.1", + "@types/chai": "^4.2.0", + "@types/chai-as-promised": "^8.0.1", + "@types/mocha": ">=10.0.10", + "@types/node": "^22.8.5", + "chai": "^5.1.2", + "ethers": "^6.14.0", + "forge-std": "github:foundry-rs/forge-std#v1.9.4", + "hardhat": "^3.1.0", + "mocha": "^11.0.0", + "typescript": "~5.8.0" }, "dependencies": { "@openzeppelin/contracts": "^5.4.0" diff --git a/contract/pnpm-lock.yaml b/contract/pnpm-lock.yaml index cf5d2e8..60bb77a 100644 --- a/contract/pnpm-lock.yaml +++ b/contract/pnpm-lock.yaml @@ -18,6 +18,9 @@ importers: '@nomicfoundation/hardhat-ignition': specifier: ^3.0.6 version: 3.0.6(@nomicfoundation/hardhat-verify@3.0.8(hardhat@3.1.0))(hardhat@3.1.0) + '@nomicfoundation/hardhat-ignition-ethers': + specifier: ^3.0.6 + version: 3.0.6(@nomicfoundation/hardhat-ethers@4.0.3(hardhat@3.1.0))(@nomicfoundation/hardhat-ignition@3.0.6(@nomicfoundation/hardhat-verify@3.0.8(hardhat@3.1.0))(hardhat@3.1.0))(@nomicfoundation/hardhat-verify@3.0.8(hardhat@3.1.0))(@nomicfoundation/ignition-core@3.0.6)(ethers@6.16.0)(hardhat@3.1.0) '@nomicfoundation/hardhat-keystore': specifier: ^3.0.3 version: 3.0.3(hardhat@3.1.0) diff --git a/contract/scripts/estimateDeploy.ts b/contract/scripts/estimateDeploy.ts index 3ce4ecf..b2eba25 100644 --- a/contract/scripts/estimateDeploy.ts +++ b/contract/scripts/estimateDeploy.ts @@ -1,26 +1,49 @@ -const ethers = require("hardhat"); +// import hre from "hardhat"; + + +// const ethers = await hre.network.connect(); + +// async function main() { +// const factory = await ethers.getContractFactory("PingPong"); + +// const deployTx = await factory.getDeployTransaction(); + +// const gasUsed = await ethers.provider.estimateGas(deployTx); + +// const feeData = await ethers.provider.getFeeData(); + +// const gasPrice = +// feeData.maxFeePerGas ?? feeData.gasPrice!; + +// const costWei = gasUsed * gasPrice; + +// console.log("Gas estimate:", gasUsed.toString()); +// console.log("Gas price (wei):", gasPrice.toString()); +// console.log("Estimated deploy cost (wei):", costWei.toString()); +// console.log( +// "Estimated deploy cost (ETH):", +// ethers.formatEther(costWei) +// ); +// } + +// main(); + +import hre from "hardhat"; async function main() { + const { ethers } = await hre.network.connect(); + const factory = await ethers.getContractFactory("PingPong"); const deployTx = await factory.getDeployTransaction(); - const gasUsed = await ethers.provider.estimateGas(deployTx); + const gas = await ethers.provider.estimateGas(deployTx); const feeData = await ethers.provider.getFeeData(); + const gasPrice = feeData.maxFeePerGas ?? feeData.gasPrice!; - const gasPrice = - feeData.maxFeePerGas ?? feeData.gasPrice!; - - const costWei = gasUsed * gasPrice; - - console.log("Gas estimate:", gasUsed.toString()); - console.log("Gas price (wei):", gasPrice.toString()); - console.log("Estimated deploy cost (wei):", costWei.toString()); - console.log( - "Estimated deploy cost (ETH):", - ethers.formatEther(costWei) - ); + console.log("Gas:", gas.toString()); + console.log("Cost (wei): ", gasPrice); } -main(); \ No newline at end of file +main();