ox 1.0.0-beta.8 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +1143 -0
- package/dist/core/Abi.d.ts +6 -2
- package/dist/core/Abi.d.ts.map +1 -1
- package/dist/core/Abi.js +6 -3
- package/dist/core/Abi.js.map +1 -1
- package/dist/core/AbiConstructor.d.ts +2 -1
- package/dist/core/AbiConstructor.d.ts.map +1 -1
- package/dist/core/AbiConstructor.js +2 -2
- package/dist/core/AbiConstructor.js.map +1 -1
- package/dist/core/AbiError.d.ts +3 -1
- package/dist/core/AbiError.d.ts.map +1 -1
- package/dist/core/AbiError.js +2 -2
- package/dist/core/AbiError.js.map +1 -1
- package/dist/core/AbiEvent.d.ts +3 -1
- package/dist/core/AbiEvent.d.ts.map +1 -1
- package/dist/core/AbiEvent.js +2 -2
- package/dist/core/AbiEvent.js.map +1 -1
- package/dist/core/AbiFunction.d.ts +3 -1
- package/dist/core/AbiFunction.d.ts.map +1 -1
- package/dist/core/AbiFunction.js +2 -2
- package/dist/core/AbiFunction.js.map +1 -1
- package/dist/core/AbiItem.d.ts +6 -3
- package/dist/core/AbiItem.d.ts.map +1 -1
- package/dist/core/AbiItem.js +9 -7
- package/dist/core/AbiItem.js.map +1 -1
- package/dist/core/AbiParameter.d.ts +88 -0
- package/dist/core/AbiParameter.d.ts.map +1 -0
- package/dist/core/AbiParameter.js +82 -0
- package/dist/core/AbiParameter.js.map +1 -0
- package/dist/core/AbiParameters.d.ts +58 -2
- package/dist/core/AbiParameters.d.ts.map +1 -1
- package/dist/core/AbiParameters.js +60 -6
- package/dist/core/AbiParameters.js.map +1 -1
- package/dist/core/Rlp.d.ts +27 -5
- package/dist/core/Rlp.d.ts.map +1 -1
- package/dist/core/Rlp.js +40 -4
- package/dist/core/Rlp.js.map +1 -1
- package/dist/core/RpcSchema.d.ts +2 -2
- package/dist/core/internal/abiParameters.d.ts.map +1 -1
- package/dist/core/internal/abiParameters.js +21 -3
- package/dist/core/internal/abiParameters.js.map +1 -1
- package/dist/core/internal/human-readable/errors.d.ts +103 -0
- package/dist/core/internal/human-readable/errors.d.ts.map +1 -0
- package/dist/core/internal/human-readable/errors.js +142 -0
- package/dist/core/internal/human-readable/errors.js.map +1 -0
- package/dist/core/internal/human-readable/formatAbi.d.ts +19 -0
- package/dist/core/internal/human-readable/formatAbi.d.ts.map +1 -0
- package/dist/core/internal/human-readable/formatAbi.js +18 -0
- package/dist/core/internal/human-readable/formatAbi.js.map +1 -0
- package/dist/core/internal/human-readable/formatAbiItem.d.ts +23 -0
- package/dist/core/internal/human-readable/formatAbiItem.d.ts.map +1 -0
- package/dist/core/internal/human-readable/formatAbiItem.js +25 -0
- package/dist/core/internal/human-readable/formatAbiItem.js.map +1 -0
- package/dist/core/internal/human-readable/formatAbiParameter.d.ts +41 -0
- package/dist/core/internal/human-readable/formatAbiParameter.d.ts.map +1 -0
- package/dist/core/internal/human-readable/formatAbiParameter.js +36 -0
- package/dist/core/internal/human-readable/formatAbiParameter.js.map +1 -0
- package/dist/core/internal/human-readable/formatAbiParameters.d.ts +26 -0
- package/dist/core/internal/human-readable/formatAbiParameters.d.ts.map +1 -0
- package/dist/core/internal/human-readable/formatAbiParameters.js +19 -0
- package/dist/core/internal/human-readable/formatAbiParameters.js.map +1 -0
- package/dist/core/internal/human-readable/parseAbi.d.ts +22 -0
- package/dist/core/internal/human-readable/parseAbi.d.ts.map +1 -0
- package/dist/core/internal/human-readable/parseAbi.js +22 -0
- package/dist/core/internal/human-readable/parseAbi.js.map +1 -0
- package/dist/core/internal/human-readable/parseAbiItem.d.ts +23 -0
- package/dist/core/internal/human-readable/parseAbiItem.d.ts.map +1 -0
- package/dist/core/internal/human-readable/parseAbiItem.js +30 -0
- package/dist/core/internal/human-readable/parseAbiItem.js.map +1 -0
- package/dist/core/internal/human-readable/parseAbiParameter.d.ts +28 -0
- package/dist/core/internal/human-readable/parseAbiParameter.d.ts.map +1 -0
- package/dist/core/internal/human-readable/parseAbiParameter.js +32 -0
- package/dist/core/internal/human-readable/parseAbiParameter.js.map +1 -0
- package/dist/core/internal/human-readable/parseAbiParameters.d.ts +38 -0
- package/dist/core/internal/human-readable/parseAbiParameters.d.ts.map +1 -0
- package/dist/core/internal/human-readable/parseAbiParameters.js +39 -0
- package/dist/core/internal/human-readable/parseAbiParameters.js.map +1 -0
- package/dist/core/internal/human-readable/regex.d.ts +9 -0
- package/dist/core/internal/human-readable/regex.d.ts.map +1 -0
- package/dist/core/internal/human-readable/regex.js +12 -0
- package/dist/core/internal/human-readable/regex.js.map +1 -0
- package/dist/core/internal/human-readable/runtime/cache.d.ts +22 -0
- package/dist/core/internal/human-readable/runtime/cache.d.ts.map +1 -0
- package/dist/core/internal/human-readable/runtime/cache.js +86 -0
- package/dist/core/internal/human-readable/runtime/cache.js.map +1 -0
- package/dist/core/internal/human-readable/runtime/signatures.d.ts +39 -0
- package/dist/core/internal/human-readable/runtime/signatures.d.ts.map +1 -0
- package/dist/core/internal/human-readable/runtime/signatures.js +67 -0
- package/dist/core/internal/human-readable/runtime/signatures.js.map +1 -0
- package/dist/core/internal/human-readable/runtime/structs.d.ts +3 -0
- package/dist/core/internal/human-readable/runtime/structs.d.ts.map +1 -0
- package/dist/core/internal/human-readable/runtime/structs.js +79 -0
- package/dist/core/internal/human-readable/runtime/structs.js.map +1 -0
- package/dist/core/internal/human-readable/runtime/utils.d.ts +205 -0
- package/dist/core/internal/human-readable/runtime/utils.d.ts.map +1 -0
- package/dist/core/internal/human-readable/runtime/utils.js +232 -0
- package/dist/core/internal/human-readable/runtime/utils.js.map +1 -0
- package/dist/core/internal/human-readable/types/signatures.d.ts +38 -0
- package/dist/core/internal/human-readable/types/signatures.d.ts.map +1 -0
- package/dist/core/internal/human-readable/types/signatures.js +2 -0
- package/dist/core/internal/human-readable/types/signatures.js.map +1 -0
- package/dist/core/internal/human-readable/types/structs.d.ts +48 -0
- package/dist/core/internal/human-readable/types/structs.d.ts.map +1 -0
- package/dist/core/internal/human-readable/types/structs.js +2 -0
- package/dist/core/internal/human-readable/types/structs.js.map +1 -0
- package/dist/core/internal/human-readable/types/utils.d.ts +163 -0
- package/dist/core/internal/human-readable/types/utils.d.ts.map +1 -0
- package/dist/core/internal/human-readable/types/utils.js +2 -0
- package/dist/core/internal/human-readable/types/utils.js.map +1 -0
- package/dist/core/internal/human-readable/types.d.ts +29 -0
- package/dist/core/internal/human-readable/types.d.ts.map +1 -0
- package/dist/core/internal/human-readable/types.js +2 -0
- package/dist/core/internal/human-readable/types.js.map +1 -0
- package/dist/core/internal/rpcSchemas/eth.d.ts +36 -0
- package/dist/core/internal/rpcSchemas/eth.d.ts.map +1 -1
- package/dist/erc4337/EntryPoint.d.ts +1072 -1
- package/dist/erc4337/EntryPoint.d.ts.map +1 -1
- package/dist/erc4337/EntryPoint.js +872 -0
- package/dist/erc4337/EntryPoint.js.map +1 -1
- package/dist/erc4337/RpcSchema.d.ts +2 -2
- package/dist/erc4337/RpcSchema.d.ts.map +1 -1
- package/dist/erc4337/UserOperation.d.ts +39 -10
- package/dist/erc4337/UserOperation.d.ts.map +1 -1
- package/dist/erc4337/UserOperation.js +62 -48
- package/dist/erc4337/UserOperation.js.map +1 -1
- package/dist/erc4337/UserOperationGas.d.ts +9 -5
- package/dist/erc4337/UserOperationGas.d.ts.map +1 -1
- package/dist/erc4337/UserOperationGas.js +17 -15
- package/dist/erc4337/UserOperationGas.js.map +1 -1
- package/dist/erc4337/UserOperationReceipt.d.ts +4 -4
- package/dist/erc4337/UserOperationReceipt.d.ts.map +1 -1
- package/dist/erc4337/UserOperationReceipt.js.map +1 -1
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -0
- package/dist/index.js.map +1 -1
- package/dist/tempo/Channel.d.ts +8 -14
- package/dist/tempo/Channel.d.ts.map +1 -1
- package/dist/tempo/Channel.js +4 -8
- package/dist/tempo/Channel.js.map +1 -1
- package/dist/tempo/KeyAuthorization.d.ts +5 -5
- package/dist/tempo/KeyAuthorization.d.ts.map +1 -1
- package/dist/tempo/KeyAuthorization.js +4 -4
- package/dist/tempo/KeyAuthorization.js.map +1 -1
- package/dist/tempo/MultisigConfig.d.ts +37 -85
- package/dist/tempo/MultisigConfig.d.ts.map +1 -1
- package/dist/tempo/MultisigConfig.js +39 -83
- package/dist/tempo/MultisigConfig.js.map +1 -1
- package/dist/tempo/PoolId.d.ts +8 -7
- package/dist/tempo/PoolId.d.ts.map +1 -1
- package/dist/tempo/PoolId.js +10 -6
- package/dist/tempo/PoolId.js.map +1 -1
- package/dist/tempo/SignatureEnvelope.d.ts +32 -30
- package/dist/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/dist/tempo/SignatureEnvelope.js +56 -51
- package/dist/tempo/SignatureEnvelope.js.map +1 -1
- package/dist/tempo/Transaction.d.ts +16 -5
- package/dist/tempo/Transaction.d.ts.map +1 -1
- package/dist/tempo/Transaction.js +34 -7
- package/dist/tempo/Transaction.js.map +1 -1
- package/dist/tempo/TransactionReceipt.d.ts +3 -3
- package/dist/tempo/TransactionReceipt.d.ts.map +1 -1
- package/dist/tempo/TransactionReceipt.js +8 -1
- package/dist/tempo/TransactionReceipt.js.map +1 -1
- package/dist/tempo/TransactionRequest.d.ts +15 -2
- package/dist/tempo/TransactionRequest.d.ts.map +1 -1
- package/dist/tempo/TransactionRequest.js +65 -29
- package/dist/tempo/TransactionRequest.js.map +1 -1
- package/dist/tempo/TxEnvelopeTempo.d.ts +2 -3
- package/dist/tempo/TxEnvelopeTempo.d.ts.map +1 -1
- package/dist/tempo/TxEnvelopeTempo.js +5 -6
- package/dist/tempo/TxEnvelopeTempo.js.map +1 -1
- package/dist/tempo/index.d.ts +6 -26
- package/dist/tempo/index.d.ts.map +1 -1
- package/dist/tempo/index.js +6 -26
- package/dist/tempo/index.js.map +1 -1
- package/dist/zod/Abi.d.ts +214 -0
- package/dist/zod/Abi.d.ts.map +1 -0
- package/dist/zod/Abi.js +5 -0
- package/dist/zod/Abi.js.map +1 -0
- package/dist/zod/AbiConstructor.d.ts +58 -0
- package/dist/zod/AbiConstructor.d.ts.map +1 -0
- package/dist/zod/AbiConstructor.js +18 -0
- package/dist/zod/AbiConstructor.js.map +1 -0
- package/dist/zod/AbiError.d.ts +20 -0
- package/dist/zod/AbiError.d.ts.map +1 -0
- package/dist/zod/AbiError.js +9 -0
- package/dist/zod/AbiError.js.map +1 -0
- package/dist/zod/AbiEvent.d.ts +23 -0
- package/dist/zod/AbiEvent.d.ts.map +1 -0
- package/dist/zod/AbiEvent.js +11 -0
- package/dist/zod/AbiEvent.js.map +1 -0
- package/dist/zod/AbiFallback.d.ts +16 -0
- package/dist/zod/AbiFallback.d.ts.map +1 -0
- package/dist/zod/AbiFallback.js +16 -0
- package/dist/zod/AbiFallback.js.map +1 -0
- package/dist/zod/AbiFunction.d.ts +109 -0
- package/dist/zod/AbiFunction.d.ts.map +1 -0
- package/dist/zod/AbiFunction.js +26 -0
- package/dist/zod/AbiFunction.js.map +1 -0
- package/dist/zod/AbiItem.d.ts +216 -0
- package/dist/zod/AbiItem.d.ts.map +1 -0
- package/dist/zod/AbiItem.js +26 -0
- package/dist/zod/AbiItem.js.map +1 -0
- package/dist/zod/AbiParameter.d.ts +32 -0
- package/dist/zod/AbiParameter.d.ts.map +1 -0
- package/dist/zod/AbiParameter.js +28 -0
- package/dist/zod/AbiParameter.js.map +1 -0
- package/dist/zod/AbiParameters.d.ts +30 -0
- package/dist/zod/AbiParameters.d.ts.map +1 -0
- package/dist/zod/AbiParameters.js +6 -0
- package/dist/zod/AbiParameters.js.map +1 -0
- package/dist/zod/AbiReceive.d.ts +6 -0
- package/dist/zod/AbiReceive.d.ts.map +1 -0
- package/dist/zod/AbiReceive.js +7 -0
- package/dist/zod/AbiReceive.js.map +1 -0
- package/dist/zod/RpcSchema.d.ts +6 -5
- package/dist/zod/RpcSchema.d.ts.map +1 -1
- package/dist/zod/Solidity.d.ts +15 -0
- package/dist/zod/Solidity.d.ts.map +1 -0
- package/dist/zod/Solidity.js +41 -0
- package/dist/zod/Solidity.js.map +1 -0
- package/dist/zod/TypedData.d.ts +226 -0
- package/dist/zod/TypedData.d.ts.map +1 -0
- package/dist/zod/TypedData.js +84 -0
- package/dist/zod/TypedData.js.map +1 -0
- package/dist/zod/internal/rpcSchemas/Eth.d.ts +1 -0
- package/dist/zod/internal/rpcSchemas/Eth.d.ts.map +1 -1
- package/dist/zod/internal/rpcSchemas/Eth.js +5 -0
- package/dist/zod/internal/rpcSchemas/Eth.js.map +1 -1
- package/dist/zod/tempo/AuthorizationTempo.d.ts +0 -20
- package/dist/zod/tempo/AuthorizationTempo.d.ts.map +1 -1
- package/dist/zod/tempo/KeyAuthorization.d.ts +503 -67
- package/dist/zod/tempo/KeyAuthorization.d.ts.map +1 -1
- package/dist/zod/tempo/KeyAuthorization.js +32 -15
- package/dist/zod/tempo/KeyAuthorization.js.map +1 -1
- package/dist/zod/tempo/RpcSchemaTempo.d.ts +216 -34
- package/dist/zod/tempo/RpcSchemaTempo.d.ts.map +1 -1
- package/dist/zod/tempo/SignatureEnvelope.d.ts +0 -6
- package/dist/zod/tempo/SignatureEnvelope.d.ts.map +1 -1
- package/dist/zod/tempo/SignatureEnvelope.js +0 -2
- package/dist/zod/tempo/SignatureEnvelope.js.map +1 -1
- package/dist/zod/tempo/Transaction.d.ts +1479 -333
- package/dist/zod/tempo/Transaction.d.ts.map +1 -1
- package/dist/zod/tempo/Transaction.js +65 -16
- package/dist/zod/tempo/Transaction.js.map +1 -1
- package/dist/zod/tempo/TransactionRequest.d.ts +410 -57
- package/dist/zod/tempo/TransactionRequest.d.ts.map +1 -1
- package/dist/zod/tempo/TransactionRequest.js +81 -18
- package/dist/zod/tempo/TransactionRequest.js.map +1 -1
- package/dist/zod/tempo/TxEnvelopeTempo.d.ts +225 -18
- package/dist/zod/tempo/TxEnvelopeTempo.d.ts.map +1 -1
- package/dist/zod/tempo/TxEnvelopeTempo.js +1 -1
- package/dist/zod/tempo/TxEnvelopeTempo.js.map +1 -1
- package/dist/zod/tempo/ZoneRpcAuthentication.d.ts +0 -3
- package/dist/zod/tempo/ZoneRpcAuthentication.d.ts.map +1 -1
- package/dist/zod/tempo/z.d.ts +0 -1
- package/dist/zod/tempo/z.d.ts.map +1 -1
- package/dist/zod/tempo/z.js +0 -1
- package/dist/zod/tempo/z.js.map +1 -1
- package/dist/zod/z.d.ts +12 -0
- package/dist/zod/z.d.ts.map +1 -1
- package/dist/zod/z.js +12 -0
- package/dist/zod/z.js.map +1 -1
- package/package.json +67 -11
- package/src/core/Abi.bench.ts +30 -0
- package/src/core/Abi.ts +13 -4
- package/src/core/AbiConstructor.ts +3 -2
- package/src/core/AbiError.ts +6 -2
- package/src/core/AbiEvent.ts +6 -2
- package/src/core/AbiFunction.ts +6 -2
- package/src/core/AbiItem.bench.ts +19 -0
- package/src/core/AbiItem.ts +20 -10
- package/src/core/AbiParameter.bench.ts +35 -0
- package/src/core/AbiParameter.ts +126 -0
- package/src/core/AbiParameters.bench.ts +22 -0
- package/src/core/AbiParameters.ts +77 -8
- package/src/core/Rlp.ts +66 -3
- package/src/core/RpcSchema.ts +2 -2
- package/src/core/_test/Abi.test.ts +4 -0
- package/src/core/_test/AbiItem.test.ts +3 -0
- package/src/core/_test/AbiParameter.test-d.ts +41 -0
- package/src/core/_test/AbiParameter.test.ts +84 -0
- package/src/core/_test/AbiParameters.decode.test.ts +88 -12
- package/src/core/_test/AbiParameters.encode.test.ts +68 -0
- package/src/core/_test/AbiParameters.test.ts +7 -0
- package/src/core/_test/Rlp.test.ts +101 -0
- package/src/core/_test/index.test.ts +1 -0
- package/src/core/internal/abiParameters.ts +21 -3
- package/src/core/internal/human-readable/_snap/formatAbi.test.ts.snap +74 -0
- package/src/core/internal/human-readable/_snap/parseAbi.test.ts.snap +2353 -0
- package/src/core/internal/human-readable/errors.test.ts +258 -0
- package/src/core/internal/human-readable/errors.ts +205 -0
- package/src/core/internal/human-readable/formatAbi.test-d.ts +144 -0
- package/src/core/internal/human-readable/formatAbi.test.ts +23 -0
- package/src/core/internal/human-readable/formatAbi.ts +37 -0
- package/src/core/internal/human-readable/formatAbiItem.test-d.ts +115 -0
- package/src/core/internal/human-readable/formatAbiItem.test.ts +102 -0
- package/src/core/internal/human-readable/formatAbiItem.ts +136 -0
- package/src/core/internal/human-readable/formatAbiParameter.test-d.ts +125 -0
- package/src/core/internal/human-readable/formatAbiParameter.test.ts +126 -0
- package/src/core/internal/human-readable/formatAbiParameter.ts +86 -0
- package/src/core/internal/human-readable/formatAbiParameters.test-d.ts +92 -0
- package/src/core/internal/human-readable/formatAbiParameters.test.ts +32 -0
- package/src/core/internal/human-readable/formatAbiParameters.ts +46 -0
- package/src/core/internal/human-readable/human-readable.bench-d.ts +58 -0
- package/src/core/internal/human-readable/integration.test.ts +68 -0
- package/src/core/internal/human-readable/parseAbi.test-d.ts +188 -0
- package/src/core/internal/human-readable/parseAbi.test.ts +82 -0
- package/src/core/internal/human-readable/parseAbi.ts +59 -0
- package/src/core/internal/human-readable/parseAbiItem.test-d.ts +183 -0
- package/src/core/internal/human-readable/parseAbiItem.test.ts +264 -0
- package/src/core/internal/human-readable/parseAbiItem.ts +91 -0
- package/src/core/internal/human-readable/parseAbiParameter.test-d.ts +68 -0
- package/src/core/internal/human-readable/parseAbiParameter.test.ts +207 -0
- package/src/core/internal/human-readable/parseAbiParameter.ts +95 -0
- package/src/core/internal/human-readable/parseAbiParameters.test-d.ts +160 -0
- package/src/core/internal/human-readable/parseAbiParameters.test.ts +80 -0
- package/src/core/internal/human-readable/parseAbiParameters.ts +123 -0
- package/src/core/internal/human-readable/regex.ts +15 -0
- package/src/core/internal/human-readable/runtime/cache.ts +96 -0
- package/src/core/internal/human-readable/runtime/signatures.test.ts +236 -0
- package/src/core/internal/human-readable/runtime/signatures.ts +106 -0
- package/src/core/internal/human-readable/runtime/structs.test.ts +210 -0
- package/src/core/internal/human-readable/runtime/structs.ts +97 -0
- package/src/core/internal/human-readable/runtime/utils.test.ts +717 -0
- package/src/core/internal/human-readable/runtime/utils.ts +344 -0
- package/src/core/internal/human-readable/types/signatures.test-d.ts +255 -0
- package/src/core/internal/human-readable/types/signatures.ts +369 -0
- package/src/core/internal/human-readable/types/structs.test-d.ts +221 -0
- package/src/core/internal/human-readable/types/structs.ts +88 -0
- package/src/core/internal/human-readable/types/utils.test-d.ts +1029 -0
- package/src/core/internal/human-readable/types/utils.ts +392 -0
- package/src/core/internal/human-readable/types.ts +69 -0
- package/src/core/internal/rpcSchemas/eth.ts +36 -0
- package/src/erc4337/EntryPoint.ts +875 -1
- package/src/erc4337/RpcSchema.ts +4 -2
- package/src/erc4337/UserOperation.ts +130 -60
- package/src/erc4337/UserOperationGas.ts +36 -28
- package/src/erc4337/UserOperationReceipt.ts +15 -7
- package/src/erc4337/_test/EntryPoint.test.ts +48 -0
- package/src/erc4337/_test/RpcSchema.test-d.ts +56 -0
- package/src/erc4337/_test/UserOperation.snap-d.ts +31 -0
- package/src/erc4337/_test/UserOperation.test.ts +221 -5
- package/src/erc4337/_test/UserOperationGas.test.ts +30 -1
- package/src/index.ts +38 -0
- package/src/tempo/Channel.test.ts +2 -23
- package/src/tempo/Channel.ts +10 -22
- package/src/tempo/KeyAuthorization.test.ts +22 -0
- package/src/tempo/KeyAuthorization.ts +9 -9
- package/src/tempo/MultisigConfig.test.ts +54 -37
- package/src/tempo/MultisigConfig.ts +59 -134
- package/src/tempo/PoolId.test.ts +7 -41
- package/src/tempo/PoolId.ts +15 -10
- package/src/tempo/SignatureEnvelope.test.ts +118 -17
- package/src/tempo/SignatureEnvelope.ts +77 -72
- package/src/tempo/Transaction.test.ts +0 -15
- package/src/tempo/Transaction.ts +63 -12
- package/src/tempo/TransactionReceipt.test.ts +76 -0
- package/src/tempo/TransactionReceipt.ts +11 -5
- package/src/tempo/TransactionRequest.test.ts +174 -1
- package/src/tempo/TransactionRequest.ts +84 -32
- package/src/tempo/TxEnvelopeTempo.test.ts +2 -2
- package/src/tempo/TxEnvelopeTempo.ts +7 -7
- package/src/tempo/e2e.test.ts +228 -50
- package/src/tempo/index.ts +6 -26
- package/src/version.ts +1 -1
- package/src/zod/Abi.ts +5 -0
- package/src/zod/AbiConstructor.ts +24 -0
- package/src/zod/AbiError.ts +9 -0
- package/src/zod/AbiEvent.ts +11 -0
- package/src/zod/AbiFallback.ts +22 -0
- package/src/zod/AbiFunction.ts +32 -0
- package/src/zod/AbiItem.ts +28 -0
- package/src/zod/AbiParameter.ts +36 -0
- package/src/zod/AbiParameters.ts +7 -0
- package/src/zod/AbiReceive.ts +7 -0
- package/src/zod/RpcSchema.ts +5 -5
- package/src/zod/Solidity.ts +83 -0
- package/src/zod/TypedData.ts +111 -0
- package/src/zod/_test/Abi.test-d.ts +46 -0
- package/src/zod/_test/Abi.test.ts +163 -0
- package/src/zod/_test/TypedData.test-d.ts +20 -0
- package/src/zod/_test/TypedData.test.ts +87 -0
- package/src/zod/_test/z.test-d.ts +6 -0
- package/src/zod/_test/z.test.ts +17 -0
- package/src/zod/internal/rpcSchemas/Eth.ts +6 -0
- package/src/zod/tempo/KeyAuthorization.ts +34 -15
- package/src/zod/tempo/SignatureEnvelope.ts +0 -2
- package/src/zod/tempo/Transaction.ts +84 -22
- package/src/zod/tempo/TransactionRequest.ts +86 -20
- package/src/zod/tempo/TxEnvelopeTempo.ts +1 -1
- package/src/zod/tempo/_test/KeyAuthorization.test.ts +53 -0
- package/src/zod/tempo/_test/SignatureEnvelope.test.ts +0 -2
- package/src/zod/tempo/_test/Transaction.test.ts +155 -0
- package/src/zod/tempo/_test/TransactionRequest.test.ts +44 -0
- package/src/zod/tempo/z.ts +0 -1
- package/src/zod/z.ts +12 -0
- package/dist/tempo/TokenId.d.ts +0 -87
- package/dist/tempo/TokenId.d.ts.map +0 -1
- package/dist/tempo/TokenId.js +0 -123
- package/dist/tempo/TokenId.js.map +0 -1
- package/dist/zod/tempo/TokenId.d.ts +0 -6
- package/dist/zod/tempo/TokenId.d.ts.map +0 -1
- package/dist/zod/tempo/TokenId.js +0 -14
- package/dist/zod/tempo/TokenId.js.map +0 -1
- package/src/CHANGELOG.md +0 -820
- package/src/tempo/TokenId.bench.ts +0 -36
- package/src/tempo/TokenId.test.ts +0 -79
- package/src/tempo/TokenId.ts +0 -141
- package/src/zod/tempo/TokenId.ts +0 -15
- package/src/zod/tempo/_test/TokenId.test-d.ts +0 -17
- package/src/zod/tempo/_test/TokenId.test.ts +0 -21
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import { expect, test } from 'vp/test'
|
|
2
|
+
import {
|
|
3
|
+
CircularReferenceError,
|
|
4
|
+
InvalidAbiItemError,
|
|
5
|
+
InvalidAbiParameterError,
|
|
6
|
+
InvalidAbiParametersError,
|
|
7
|
+
InvalidAbiTypeParameterError,
|
|
8
|
+
InvalidFunctionModifierError,
|
|
9
|
+
InvalidModifierError,
|
|
10
|
+
InvalidParameterError,
|
|
11
|
+
InvalidParenthesisError,
|
|
12
|
+
InvalidSignatureError,
|
|
13
|
+
InvalidStructSignatureError,
|
|
14
|
+
SolidityProtectedKeywordError,
|
|
15
|
+
UnknownSignatureError,
|
|
16
|
+
UnknownSolidityTypeError,
|
|
17
|
+
UnknownTypeError,
|
|
18
|
+
} from './errors.js'
|
|
19
|
+
|
|
20
|
+
test('InvalidAbiItemError', () => {
|
|
21
|
+
expect(new InvalidAbiItemError({ signature: 'address' }))
|
|
22
|
+
.toMatchInlineSnapshot(`
|
|
23
|
+
[AbiItem.InvalidAbiItemError: Failed to parse ABI item.
|
|
24
|
+
|
|
25
|
+
Details: parseAbiItem("address")
|
|
26
|
+
See: https://oxlib.sh/api/AbiItem/from]
|
|
27
|
+
`)
|
|
28
|
+
})
|
|
29
|
+
|
|
30
|
+
test('UnknownTypeError', () => {
|
|
31
|
+
expect(new UnknownTypeError({ type: 'Foo' })).toMatchInlineSnapshot(`
|
|
32
|
+
[HumanReadableAbi.UnknownTypeError: Unknown type.
|
|
33
|
+
|
|
34
|
+
Type "Foo" is not a valid ABI type. Perhaps you forgot to include a struct signature?]
|
|
35
|
+
`)
|
|
36
|
+
})
|
|
37
|
+
|
|
38
|
+
test('UnknownSolidityTypeError', () => {
|
|
39
|
+
expect(new UnknownSolidityTypeError({ type: 'Foo' })).toMatchInlineSnapshot(`
|
|
40
|
+
[HumanReadableAbi.UnknownSolidityTypeError: Unknown type.
|
|
41
|
+
|
|
42
|
+
Type "Foo" is not a valid ABI type.]
|
|
43
|
+
`)
|
|
44
|
+
})
|
|
45
|
+
|
|
46
|
+
test('InvalidAbiParamterError', () => {
|
|
47
|
+
expect(new InvalidAbiParameterError({ param: 'address owner' }))
|
|
48
|
+
.toMatchInlineSnapshot(`
|
|
49
|
+
[AbiParameter.InvalidAbiParameterError: Failed to parse ABI parameter.
|
|
50
|
+
|
|
51
|
+
Details: parseAbiParameter("address owner")
|
|
52
|
+
See: https://oxlib.sh/api/AbiParameter/from]
|
|
53
|
+
`)
|
|
54
|
+
})
|
|
55
|
+
|
|
56
|
+
test('InvalidAbiParamtersError', () => {
|
|
57
|
+
expect(new InvalidAbiParametersError({ params: 'address owner' }))
|
|
58
|
+
.toMatchInlineSnapshot(`
|
|
59
|
+
[AbiParameters.InvalidAbiParametersError: Failed to parse ABI parameters.
|
|
60
|
+
|
|
61
|
+
Details: parseAbiParameters("address owner")
|
|
62
|
+
See: https://oxlib.sh/api/AbiParameters/from]
|
|
63
|
+
`)
|
|
64
|
+
})
|
|
65
|
+
|
|
66
|
+
test('InvalidParameterError', () => {
|
|
67
|
+
expect(
|
|
68
|
+
new InvalidParameterError({
|
|
69
|
+
param: 'address',
|
|
70
|
+
}),
|
|
71
|
+
).toMatchInlineSnapshot(`
|
|
72
|
+
[HumanReadableAbi.InvalidParameterError: Invalid ABI parameter.
|
|
73
|
+
|
|
74
|
+
Details: address]
|
|
75
|
+
`)
|
|
76
|
+
})
|
|
77
|
+
|
|
78
|
+
test('SolidityProtectedKeywordError', () => {
|
|
79
|
+
expect(
|
|
80
|
+
new SolidityProtectedKeywordError({
|
|
81
|
+
param: 'address',
|
|
82
|
+
name: 'address',
|
|
83
|
+
}),
|
|
84
|
+
).toMatchInlineSnapshot(`
|
|
85
|
+
[HumanReadableAbi.SolidityProtectedKeywordError: Invalid ABI parameter.
|
|
86
|
+
|
|
87
|
+
"address" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html
|
|
88
|
+
|
|
89
|
+
Details: address]
|
|
90
|
+
`)
|
|
91
|
+
})
|
|
92
|
+
|
|
93
|
+
test('InvalidModifierError', () => {
|
|
94
|
+
expect(
|
|
95
|
+
new InvalidModifierError({
|
|
96
|
+
param: 'address',
|
|
97
|
+
modifier: 'calldata',
|
|
98
|
+
type: 'event',
|
|
99
|
+
}),
|
|
100
|
+
).toMatchInlineSnapshot(`
|
|
101
|
+
[HumanReadableAbi.InvalidModifierError: Invalid ABI parameter.
|
|
102
|
+
|
|
103
|
+
Modifier "calldata" not allowed in "event" type.
|
|
104
|
+
|
|
105
|
+
Details: address]
|
|
106
|
+
`)
|
|
107
|
+
|
|
108
|
+
expect(
|
|
109
|
+
new InvalidModifierError({
|
|
110
|
+
param: 'address',
|
|
111
|
+
modifier: 'calldata',
|
|
112
|
+
}),
|
|
113
|
+
).toMatchInlineSnapshot(`
|
|
114
|
+
[HumanReadableAbi.InvalidModifierError: Invalid ABI parameter.
|
|
115
|
+
|
|
116
|
+
Modifier "calldata" not allowed.
|
|
117
|
+
|
|
118
|
+
Details: address]
|
|
119
|
+
`)
|
|
120
|
+
})
|
|
121
|
+
|
|
122
|
+
test('InvalidFunctionModifierError', () => {
|
|
123
|
+
expect(
|
|
124
|
+
new InvalidFunctionModifierError({
|
|
125
|
+
param: 'address',
|
|
126
|
+
modifier: 'calldata',
|
|
127
|
+
type: 'function',
|
|
128
|
+
}),
|
|
129
|
+
).toMatchInlineSnapshot(`
|
|
130
|
+
[HumanReadableAbi.InvalidFunctionModifierError: Invalid ABI parameter.
|
|
131
|
+
|
|
132
|
+
Modifier "calldata" not allowed in "function" type.
|
|
133
|
+
Data location can only be specified for array, struct, or mapping types, but "calldata" was given.
|
|
134
|
+
|
|
135
|
+
Details: address]
|
|
136
|
+
`)
|
|
137
|
+
})
|
|
138
|
+
|
|
139
|
+
test('InvalidAbiTypeParameterError', () => {
|
|
140
|
+
expect(
|
|
141
|
+
new InvalidAbiTypeParameterError({
|
|
142
|
+
abiParameter: { type: 'address' },
|
|
143
|
+
}),
|
|
144
|
+
).toMatchInlineSnapshot(`
|
|
145
|
+
[HumanReadableAbi.InvalidAbiTypeParameterError: Invalid ABI parameter.
|
|
146
|
+
|
|
147
|
+
ABI parameter type is invalid.
|
|
148
|
+
|
|
149
|
+
Details: {
|
|
150
|
+
"type": "address"
|
|
151
|
+
}]
|
|
152
|
+
`)
|
|
153
|
+
})
|
|
154
|
+
|
|
155
|
+
test('InvalidSignatureError', () => {
|
|
156
|
+
expect(
|
|
157
|
+
new InvalidSignatureError({
|
|
158
|
+
signature: 'function name??()',
|
|
159
|
+
type: 'function',
|
|
160
|
+
}),
|
|
161
|
+
).toMatchInlineSnapshot(`
|
|
162
|
+
[Abi.InvalidSignatureError: Invalid function signature.
|
|
163
|
+
|
|
164
|
+
Details: function name??()]
|
|
165
|
+
`)
|
|
166
|
+
|
|
167
|
+
expect(
|
|
168
|
+
new InvalidSignatureError({
|
|
169
|
+
signature: 'function name??()',
|
|
170
|
+
type: 'struct',
|
|
171
|
+
}),
|
|
172
|
+
).toMatchInlineSnapshot(`
|
|
173
|
+
[Abi.InvalidSignatureError: Invalid struct signature.
|
|
174
|
+
|
|
175
|
+
Details: function name??()]
|
|
176
|
+
`)
|
|
177
|
+
|
|
178
|
+
expect(
|
|
179
|
+
new InvalidSignatureError({
|
|
180
|
+
signature: 'function name??()',
|
|
181
|
+
type: 'error',
|
|
182
|
+
}),
|
|
183
|
+
).toMatchInlineSnapshot(`
|
|
184
|
+
[Abi.InvalidSignatureError: Invalid error signature.
|
|
185
|
+
|
|
186
|
+
Details: function name??()]
|
|
187
|
+
`)
|
|
188
|
+
|
|
189
|
+
expect(
|
|
190
|
+
new InvalidSignatureError({
|
|
191
|
+
signature: 'function name??()',
|
|
192
|
+
type: 'event',
|
|
193
|
+
}),
|
|
194
|
+
).toMatchInlineSnapshot(`
|
|
195
|
+
[Abi.InvalidSignatureError: Invalid event signature.
|
|
196
|
+
|
|
197
|
+
Details: function name??()]
|
|
198
|
+
`)
|
|
199
|
+
|
|
200
|
+
expect(
|
|
201
|
+
new InvalidSignatureError({
|
|
202
|
+
signature: 'function name??()',
|
|
203
|
+
type: 'constructor',
|
|
204
|
+
}),
|
|
205
|
+
).toMatchInlineSnapshot(`
|
|
206
|
+
[Abi.InvalidSignatureError: Invalid constructor signature.
|
|
207
|
+
|
|
208
|
+
Details: function name??()]
|
|
209
|
+
`)
|
|
210
|
+
})
|
|
211
|
+
|
|
212
|
+
test('UnknownSignatureError', () => {
|
|
213
|
+
expect(new UnknownSignatureError({ signature: 'invalid' }))
|
|
214
|
+
.toMatchInlineSnapshot(`
|
|
215
|
+
[Abi.UnknownSignatureError: Unknown signature.
|
|
216
|
+
|
|
217
|
+
Details: invalid]
|
|
218
|
+
`)
|
|
219
|
+
})
|
|
220
|
+
|
|
221
|
+
test('InvalidStructSignatureError', () => {
|
|
222
|
+
expect(new InvalidStructSignatureError({ signature: 'struct Foo{}' }))
|
|
223
|
+
.toMatchInlineSnapshot(`
|
|
224
|
+
[Abi.InvalidStructSignatureError: Invalid struct signature.
|
|
225
|
+
|
|
226
|
+
No properties exist.
|
|
227
|
+
|
|
228
|
+
Details: struct Foo{}]
|
|
229
|
+
`)
|
|
230
|
+
})
|
|
231
|
+
|
|
232
|
+
test('InvalidParenthesisError', () => {
|
|
233
|
+
expect(new InvalidParenthesisError({ current: '(Foo))', depth: -1 }))
|
|
234
|
+
.toMatchInlineSnapshot(`
|
|
235
|
+
[HumanReadableAbi.InvalidParenthesisError: Unbalanced parentheses.
|
|
236
|
+
|
|
237
|
+
"(Foo))" has too many closing parentheses.
|
|
238
|
+
|
|
239
|
+
Details: Depth "-1"]
|
|
240
|
+
`)
|
|
241
|
+
|
|
242
|
+
expect(new InvalidParenthesisError({ current: '((Foo)', depth: 1 }))
|
|
243
|
+
.toMatchInlineSnapshot(`
|
|
244
|
+
[HumanReadableAbi.InvalidParenthesisError: Unbalanced parentheses.
|
|
245
|
+
|
|
246
|
+
"((Foo)" has too many opening parentheses.
|
|
247
|
+
|
|
248
|
+
Details: Depth "1"]
|
|
249
|
+
`)
|
|
250
|
+
})
|
|
251
|
+
|
|
252
|
+
test('CircularReferenceError', () => {
|
|
253
|
+
expect(new CircularReferenceError({ type: 'Foo' })).toMatchInlineSnapshot(`
|
|
254
|
+
[Abi.CircularReferenceError: Circular reference detected.
|
|
255
|
+
|
|
256
|
+
Struct "Foo" is a circular reference.]
|
|
257
|
+
`)
|
|
258
|
+
})
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
import type { AbiItemType, AbiParameter } from 'abitype'
|
|
2
|
+
import { BaseError } from '../../Errors.js'
|
|
3
|
+
import type { Modifier } from './types/signatures.js'
|
|
4
|
+
|
|
5
|
+
export class InvalidAbiItemError extends BaseError {
|
|
6
|
+
override name = 'AbiItem.InvalidAbiItemError'
|
|
7
|
+
|
|
8
|
+
constructor({ signature }: { signature: string | object }) {
|
|
9
|
+
super('Failed to parse ABI item.', {
|
|
10
|
+
details: `parseAbiItem(${JSON.stringify(signature, null, 2)})`,
|
|
11
|
+
docsPath: '/api/AbiItem/from',
|
|
12
|
+
})
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export class UnknownTypeError extends BaseError {
|
|
17
|
+
override name = 'HumanReadableAbi.UnknownTypeError'
|
|
18
|
+
|
|
19
|
+
constructor({ type }: { type: string }) {
|
|
20
|
+
super('Unknown type.', {
|
|
21
|
+
metaMessages: [
|
|
22
|
+
`Type "${type}" is not a valid ABI type. Perhaps you forgot to include a struct signature?`,
|
|
23
|
+
],
|
|
24
|
+
})
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
export class UnknownSolidityTypeError extends BaseError {
|
|
29
|
+
override name = 'HumanReadableAbi.UnknownSolidityTypeError'
|
|
30
|
+
|
|
31
|
+
constructor({ type }: { type: string }) {
|
|
32
|
+
super('Unknown type.', {
|
|
33
|
+
metaMessages: [`Type "${type}" is not a valid ABI type.`],
|
|
34
|
+
})
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export class InvalidAbiParameterError extends BaseError {
|
|
39
|
+
override name = 'AbiParameter.InvalidAbiParameterError'
|
|
40
|
+
|
|
41
|
+
constructor({ param }: { param: string | object }) {
|
|
42
|
+
super('Failed to parse ABI parameter.', {
|
|
43
|
+
details: `parseAbiParameter(${JSON.stringify(param, null, 2)})`,
|
|
44
|
+
docsPath: '/api/AbiParameter/from',
|
|
45
|
+
})
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export class InvalidAbiParametersError extends BaseError {
|
|
50
|
+
override name = 'AbiParameters.InvalidAbiParametersError'
|
|
51
|
+
|
|
52
|
+
constructor({ params }: { params: string | object }) {
|
|
53
|
+
super('Failed to parse ABI parameters.', {
|
|
54
|
+
details: `parseAbiParameters(${JSON.stringify(params, null, 2)})`,
|
|
55
|
+
docsPath: '/api/AbiParameters/from',
|
|
56
|
+
})
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
export class InvalidParameterError extends BaseError {
|
|
61
|
+
override name = 'HumanReadableAbi.InvalidParameterError'
|
|
62
|
+
|
|
63
|
+
constructor({ param }: { param: string }) {
|
|
64
|
+
super('Invalid ABI parameter.', {
|
|
65
|
+
details: param,
|
|
66
|
+
})
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
export class SolidityProtectedKeywordError extends BaseError {
|
|
71
|
+
override name = 'HumanReadableAbi.SolidityProtectedKeywordError'
|
|
72
|
+
|
|
73
|
+
constructor({ param, name }: { param: string; name: string }) {
|
|
74
|
+
super('Invalid ABI parameter.', {
|
|
75
|
+
details: param,
|
|
76
|
+
metaMessages: [
|
|
77
|
+
`"${name}" is a protected Solidity keyword. More info: https://docs.soliditylang.org/en/latest/cheatsheet.html`,
|
|
78
|
+
],
|
|
79
|
+
})
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export class InvalidModifierError extends BaseError {
|
|
84
|
+
override name = 'HumanReadableAbi.InvalidModifierError'
|
|
85
|
+
|
|
86
|
+
constructor({
|
|
87
|
+
param,
|
|
88
|
+
type,
|
|
89
|
+
modifier,
|
|
90
|
+
}: {
|
|
91
|
+
param: string
|
|
92
|
+
type?: AbiItemType | 'struct' | undefined
|
|
93
|
+
modifier: Modifier
|
|
94
|
+
}) {
|
|
95
|
+
super('Invalid ABI parameter.', {
|
|
96
|
+
details: param,
|
|
97
|
+
metaMessages: [
|
|
98
|
+
`Modifier "${modifier}" not allowed${
|
|
99
|
+
type ? ` in "${type}" type` : ''
|
|
100
|
+
}.`,
|
|
101
|
+
],
|
|
102
|
+
})
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
export class InvalidFunctionModifierError extends BaseError {
|
|
107
|
+
override name = 'HumanReadableAbi.InvalidFunctionModifierError'
|
|
108
|
+
|
|
109
|
+
constructor({
|
|
110
|
+
param,
|
|
111
|
+
type,
|
|
112
|
+
modifier,
|
|
113
|
+
}: {
|
|
114
|
+
param: string
|
|
115
|
+
type?: AbiItemType | 'struct' | undefined
|
|
116
|
+
modifier: Modifier
|
|
117
|
+
}) {
|
|
118
|
+
super('Invalid ABI parameter.', {
|
|
119
|
+
details: param,
|
|
120
|
+
metaMessages: [
|
|
121
|
+
`Modifier "${modifier}" not allowed${
|
|
122
|
+
type ? ` in "${type}" type` : ''
|
|
123
|
+
}.`,
|
|
124
|
+
`Data location can only be specified for array, struct, or mapping types, but "${modifier}" was given.`,
|
|
125
|
+
],
|
|
126
|
+
})
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export class InvalidAbiTypeParameterError extends BaseError {
|
|
131
|
+
override name = 'HumanReadableAbi.InvalidAbiTypeParameterError'
|
|
132
|
+
|
|
133
|
+
constructor({
|
|
134
|
+
abiParameter,
|
|
135
|
+
}: {
|
|
136
|
+
abiParameter: AbiParameter & { indexed?: boolean | undefined }
|
|
137
|
+
}) {
|
|
138
|
+
super('Invalid ABI parameter.', {
|
|
139
|
+
details: JSON.stringify(abiParameter, null, 2),
|
|
140
|
+
metaMessages: ['ABI parameter type is invalid.'],
|
|
141
|
+
})
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export class InvalidSignatureError extends BaseError {
|
|
146
|
+
override name = 'Abi.InvalidSignatureError'
|
|
147
|
+
|
|
148
|
+
constructor({
|
|
149
|
+
signature,
|
|
150
|
+
type,
|
|
151
|
+
}: {
|
|
152
|
+
signature: string
|
|
153
|
+
type: AbiItemType | 'struct'
|
|
154
|
+
}) {
|
|
155
|
+
super(`Invalid ${type} signature.`, {
|
|
156
|
+
details: signature,
|
|
157
|
+
})
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
export class UnknownSignatureError extends BaseError {
|
|
162
|
+
override name = 'Abi.UnknownSignatureError'
|
|
163
|
+
|
|
164
|
+
constructor({ signature }: { signature: string }) {
|
|
165
|
+
super('Unknown signature.', {
|
|
166
|
+
details: signature,
|
|
167
|
+
})
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export class InvalidStructSignatureError extends BaseError {
|
|
172
|
+
override name = 'Abi.InvalidStructSignatureError'
|
|
173
|
+
|
|
174
|
+
constructor({ signature }: { signature: string }) {
|
|
175
|
+
super('Invalid struct signature.', {
|
|
176
|
+
details: signature,
|
|
177
|
+
metaMessages: ['No properties exist.'],
|
|
178
|
+
})
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export class InvalidParenthesisError extends BaseError {
|
|
183
|
+
override name = 'HumanReadableAbi.InvalidParenthesisError'
|
|
184
|
+
|
|
185
|
+
constructor({ current, depth }: { current: string; depth: number }) {
|
|
186
|
+
super('Unbalanced parentheses.', {
|
|
187
|
+
metaMessages: [
|
|
188
|
+
`"${current.trim()}" has too many ${
|
|
189
|
+
depth > 0 ? 'opening' : 'closing'
|
|
190
|
+
} parentheses.`,
|
|
191
|
+
],
|
|
192
|
+
details: `Depth "${depth}"`,
|
|
193
|
+
})
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export class CircularReferenceError extends BaseError {
|
|
198
|
+
override name = 'Abi.CircularReferenceError'
|
|
199
|
+
|
|
200
|
+
constructor({ type }: { type: string }) {
|
|
201
|
+
super('Circular reference detected.', {
|
|
202
|
+
metaMessages: [`Struct "${type}" is a circular reference.`],
|
|
203
|
+
})
|
|
204
|
+
}
|
|
205
|
+
}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { expectTypeOf, test } from 'vp/test'
|
|
2
|
+
|
|
3
|
+
import type { Abi } from 'abitype'
|
|
4
|
+
import { seaportAbi } from '../../../../test/abis/json.js'
|
|
5
|
+
import type { FormatAbi } from './formatAbi.js'
|
|
6
|
+
import { formatAbi } from './formatAbi.js'
|
|
7
|
+
|
|
8
|
+
test('FormatAbi', () => {
|
|
9
|
+
expectTypeOf<FormatAbi<[]>>().toEqualTypeOf<never>()
|
|
10
|
+
|
|
11
|
+
expectTypeOf<
|
|
12
|
+
FormatAbi<
|
|
13
|
+
readonly [
|
|
14
|
+
{
|
|
15
|
+
readonly name: 'foo'
|
|
16
|
+
readonly type: 'function'
|
|
17
|
+
readonly stateMutability: 'nonpayable'
|
|
18
|
+
readonly inputs: readonly []
|
|
19
|
+
readonly outputs: readonly []
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
readonly name: 'bar'
|
|
23
|
+
readonly type: 'function'
|
|
24
|
+
readonly stateMutability: 'nonpayable'
|
|
25
|
+
readonly inputs: readonly [
|
|
26
|
+
{
|
|
27
|
+
readonly type: 'tuple'
|
|
28
|
+
readonly components: readonly [
|
|
29
|
+
{
|
|
30
|
+
readonly name: 'name'
|
|
31
|
+
readonly type: 'string'
|
|
32
|
+
},
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
readonly type: 'bytes32'
|
|
37
|
+
},
|
|
38
|
+
]
|
|
39
|
+
readonly outputs: readonly []
|
|
40
|
+
},
|
|
41
|
+
]
|
|
42
|
+
>
|
|
43
|
+
>().toEqualTypeOf<
|
|
44
|
+
readonly ['function foo()', 'function bar((string name), bytes32)']
|
|
45
|
+
>()
|
|
46
|
+
|
|
47
|
+
expectTypeOf<
|
|
48
|
+
FormatAbi<
|
|
49
|
+
readonly [
|
|
50
|
+
{
|
|
51
|
+
readonly name: 'balanceOf'
|
|
52
|
+
readonly type: 'function'
|
|
53
|
+
readonly stateMutability: 'view'
|
|
54
|
+
readonly inputs: readonly [
|
|
55
|
+
{
|
|
56
|
+
readonly name: 'owner'
|
|
57
|
+
readonly type: 'address'
|
|
58
|
+
},
|
|
59
|
+
]
|
|
60
|
+
readonly outputs: readonly [
|
|
61
|
+
{
|
|
62
|
+
readonly type: 'uint256'
|
|
63
|
+
},
|
|
64
|
+
]
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
readonly name: 'Transfer'
|
|
68
|
+
readonly type: 'event'
|
|
69
|
+
readonly inputs: readonly [
|
|
70
|
+
{
|
|
71
|
+
readonly name: 'from'
|
|
72
|
+
readonly type: 'address'
|
|
73
|
+
readonly indexed: true
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
readonly name: 'to'
|
|
77
|
+
readonly type: 'address'
|
|
78
|
+
readonly indexed: true
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
readonly name: 'amount'
|
|
82
|
+
readonly type: 'uint256'
|
|
83
|
+
},
|
|
84
|
+
]
|
|
85
|
+
},
|
|
86
|
+
]
|
|
87
|
+
>
|
|
88
|
+
>().toEqualTypeOf<
|
|
89
|
+
readonly [
|
|
90
|
+
'function balanceOf(address owner) view returns (uint256)',
|
|
91
|
+
'event Transfer(address indexed from, address indexed to, uint256 amount)',
|
|
92
|
+
]
|
|
93
|
+
>()
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
test('formatAbi', () => {
|
|
97
|
+
expectTypeOf(formatAbi([])).toEqualTypeOf<never>()
|
|
98
|
+
|
|
99
|
+
// Array
|
|
100
|
+
const res = formatAbi([
|
|
101
|
+
{
|
|
102
|
+
name: 'bar',
|
|
103
|
+
type: 'function',
|
|
104
|
+
stateMutability: 'nonpayable',
|
|
105
|
+
inputs: [
|
|
106
|
+
{
|
|
107
|
+
type: 'tuple',
|
|
108
|
+
components: [
|
|
109
|
+
{
|
|
110
|
+
name: 'name',
|
|
111
|
+
type: 'string',
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
type: 'bytes32',
|
|
117
|
+
},
|
|
118
|
+
],
|
|
119
|
+
outputs: [],
|
|
120
|
+
},
|
|
121
|
+
])
|
|
122
|
+
expectTypeOf<typeof res>().toEqualTypeOf<
|
|
123
|
+
readonly ['function bar((string name), bytes32)']
|
|
124
|
+
>()
|
|
125
|
+
|
|
126
|
+
const abi2 = [
|
|
127
|
+
{
|
|
128
|
+
type: 'function',
|
|
129
|
+
name: 'foo',
|
|
130
|
+
inputs: [],
|
|
131
|
+
outputs: [],
|
|
132
|
+
stateMutability: 'view',
|
|
133
|
+
},
|
|
134
|
+
]
|
|
135
|
+
expectTypeOf(formatAbi(abi2)).toEqualTypeOf<readonly string[]>()
|
|
136
|
+
|
|
137
|
+
const param = abi2 as Abi
|
|
138
|
+
expectTypeOf(formatAbi(param)).toEqualTypeOf<readonly string[]>()
|
|
139
|
+
|
|
140
|
+
const getOrderType = formatAbi(seaportAbi)[10]
|
|
141
|
+
expectTypeOf<
|
|
142
|
+
typeof getOrderType
|
|
143
|
+
>().toEqualTypeOf<'function getOrderHash((address offerer, address zone, (uint8 itemType, address token, uint256 identifierOrCriteria, uint256 startAmount, uint256 endAmount)[] offer, (uint8 itemType, address token, uint256 identifierOrCriteria, uint256 startAmount, uint256 endAmount, address recipient)[] consideration, uint8 orderType, uint256 startTime, uint256 endTime, bytes32 zoneHash, uint256 salt, bytes32 conduitKey, uint256 counter) order) view returns (bytes32 orderHash)'>()
|
|
144
|
+
})
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { expect, test } from 'vp/test'
|
|
2
|
+
|
|
3
|
+
import { seaportAbi } from '../../../../test/abis/json.js'
|
|
4
|
+
import { formatAbi } from './formatAbi.js'
|
|
5
|
+
|
|
6
|
+
const customSolidityErrorsAbi = [
|
|
7
|
+
{ inputs: [], stateMutability: 'nonpayable', type: 'constructor' },
|
|
8
|
+
{ inputs: [], name: 'ApprovalCallerNotOwnerNorApproved', type: 'error' },
|
|
9
|
+
{ inputs: [], name: 'ApprovalQueryForNonexistentToken', type: 'error' },
|
|
10
|
+
] as const
|
|
11
|
+
|
|
12
|
+
test('formatAbi', () => {
|
|
13
|
+
const result = formatAbi(seaportAbi)
|
|
14
|
+
expect(result).toMatchSnapshot()
|
|
15
|
+
|
|
16
|
+
expect(formatAbi(customSolidityErrorsAbi)).toMatchInlineSnapshot(`
|
|
17
|
+
[
|
|
18
|
+
"constructor()",
|
|
19
|
+
"error ApprovalCallerNotOwnerNorApproved()",
|
|
20
|
+
"error ApprovalQueryForNonexistentToken()",
|
|
21
|
+
]
|
|
22
|
+
`)
|
|
23
|
+
})
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { Abi } from 'abitype'
|
|
2
|
+
import { type FormatAbiItem, formatAbiItem } from './formatAbiItem.js'
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Parses JSON ABI into human-readable ABI
|
|
6
|
+
*
|
|
7
|
+
* @param abi - ABI
|
|
8
|
+
* @returns Human-readable ABI
|
|
9
|
+
*/
|
|
10
|
+
export type FormatAbi<abi extends Abi | readonly unknown[]> = Abi extends abi
|
|
11
|
+
? readonly string[]
|
|
12
|
+
: abi extends readonly []
|
|
13
|
+
? never
|
|
14
|
+
: abi extends Abi
|
|
15
|
+
? {
|
|
16
|
+
[key in keyof abi]: FormatAbiItem<abi[key]>
|
|
17
|
+
}
|
|
18
|
+
: readonly string[]
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Parses JSON ABI into human-readable ABI
|
|
22
|
+
*
|
|
23
|
+
* @param abi - ABI
|
|
24
|
+
* @returns Human-readable ABI
|
|
25
|
+
*/
|
|
26
|
+
export function formatAbi<const abi extends Abi | readonly unknown[]>(
|
|
27
|
+
abi: abi,
|
|
28
|
+
): FormatAbi<abi> {
|
|
29
|
+
const signatures = []
|
|
30
|
+
const length = abi.length
|
|
31
|
+
for (let i = 0; i < length; i++) {
|
|
32
|
+
const abiItem = abi[i]!
|
|
33
|
+
const signature = formatAbiItem(abiItem as Abi[number])
|
|
34
|
+
signatures.push(signature)
|
|
35
|
+
}
|
|
36
|
+
return signatures as unknown as FormatAbi<abi>
|
|
37
|
+
}
|