zerc20-client-sdk 0.1.13 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +261 -0
- package/dist/constants.d.ts +15 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +15 -0
- package/dist/constants.js.map +1 -1
- package/dist/decider/__tests__/prover.test.d.ts +2 -0
- package/dist/decider/__tests__/prover.test.d.ts.map +1 -0
- package/dist/decider/__tests__/prover.test.js +246 -0
- package/dist/decider/__tests__/prover.test.js.map +1 -0
- package/dist/decider/prover.d.ts +36 -4
- package/dist/decider/prover.d.ts.map +1 -1
- package/dist/decider/prover.js +48 -38
- package/dist/decider/prover.js.map +1 -1
- package/dist/ic/__tests__/candid.test.d.ts +2 -0
- package/dist/ic/__tests__/candid.test.d.ts.map +1 -0
- package/dist/ic/__tests__/candid.test.js +44 -0
- package/dist/ic/__tests__/candid.test.js.map +1 -0
- package/dist/ic/__tests__/client.test.d.ts +2 -0
- package/dist/ic/__tests__/client.test.d.ts.map +1 -0
- package/dist/ic/__tests__/client.test.js +522 -0
- package/dist/ic/__tests__/client.test.js.map +1 -0
- package/dist/ic/__tests__/config.test.d.ts +2 -0
- package/dist/ic/__tests__/config.test.d.ts.map +1 -0
- package/dist/ic/__tests__/config.test.js +72 -0
- package/dist/ic/__tests__/config.test.js.map +1 -0
- package/dist/ic/__tests__/connections.test.d.ts +2 -0
- package/dist/ic/__tests__/connections.test.d.ts.map +1 -0
- package/dist/ic/__tests__/connections.test.js +385 -0
- package/dist/ic/__tests__/connections.test.js.map +1 -0
- package/dist/ic/__tests__/invoice.test.d.ts +2 -0
- package/dist/ic/__tests__/invoice.test.d.ts.map +1 -0
- package/dist/ic/__tests__/invoice.test.js +95 -0
- package/dist/ic/__tests__/invoice.test.js.map +1 -0
- package/dist/ic/authorization.d.ts +28 -0
- package/dist/ic/authorization.d.ts.map +1 -1
- package/dist/ic/authorization.js +24 -0
- package/dist/ic/authorization.js.map +1 -1
- package/dist/ic/candid.d.ts +72 -0
- package/dist/ic/candid.d.ts.map +1 -0
- package/dist/ic/candid.js +35 -0
- package/dist/ic/candid.js.map +1 -0
- package/dist/ic/client.d.ts +57 -59
- package/dist/ic/client.d.ts.map +1 -1
- package/dist/ic/client.js +59 -81
- package/dist/ic/client.js.map +1 -1
- package/dist/ic/config.d.ts +27 -0
- package/dist/ic/config.d.ts.map +1 -1
- package/dist/ic/config.js +27 -0
- package/dist/ic/config.js.map +1 -1
- package/dist/ic/connections.d.ts +99 -4
- package/dist/ic/connections.d.ts.map +1 -1
- package/dist/ic/connections.js +222 -30
- package/dist/ic/connections.js.map +1 -1
- package/dist/ic/encryption.d.ts +33 -0
- package/dist/ic/encryption.d.ts.map +1 -1
- package/dist/ic/encryption.js +21 -0
- package/dist/ic/encryption.js.map +1 -1
- package/dist/ic/errors.d.ts +15 -0
- package/dist/ic/errors.d.ts.map +1 -1
- package/dist/ic/errors.js +15 -0
- package/dist/ic/errors.js.map +1 -1
- package/dist/ic/idl.d.ts +26 -0
- package/dist/ic/idl.d.ts.map +1 -0
- package/dist/ic/idl.js +84 -0
- package/dist/ic/idl.js.map +1 -0
- package/dist/ic/index.d.ts +1 -1
- package/dist/ic/index.d.ts.map +1 -1
- package/dist/ic/index.js +1 -1
- package/dist/ic/index.js.map +1 -1
- package/dist/ic/invoice.d.ts.map +1 -1
- package/dist/ic/invoice.js.map +1 -1
- package/dist/ic/types.d.ts +42 -0
- package/dist/ic/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/onchain/__tests__/contracts.test.d.ts +2 -0
- package/dist/onchain/__tests__/contracts.test.d.ts.map +1 -0
- package/dist/onchain/__tests__/contracts.test.js +42 -0
- package/dist/onchain/__tests__/contracts.test.js.map +1 -0
- package/dist/onchain/contracts.d.ts +22 -0
- package/dist/onchain/contracts.d.ts.map +1 -1
- package/dist/onchain/contracts.js +22 -0
- package/dist/onchain/contracts.js.map +1 -1
- package/dist/operations/__tests__/invoice.test.d.ts +2 -0
- package/dist/operations/__tests__/invoice.test.d.ts.map +1 -0
- package/dist/operations/__tests__/invoice.test.js +261 -0
- package/dist/operations/__tests__/invoice.test.js.map +1 -0
- package/dist/operations/__tests__/privateSend.test.d.ts +2 -0
- package/dist/operations/__tests__/privateSend.test.d.ts.map +1 -0
- package/dist/operations/__tests__/privateSend.test.js +135 -0
- package/dist/operations/__tests__/privateSend.test.js.map +1 -0
- package/dist/operations/__tests__/reexports.test.d.ts +2 -0
- package/dist/operations/__tests__/reexports.test.d.ts.map +1 -0
- package/dist/operations/__tests__/reexports.test.js +22 -0
- package/dist/operations/__tests__/reexports.test.js.map +1 -0
- package/dist/operations/__tests__/scanner.test.d.ts +2 -0
- package/dist/operations/__tests__/scanner.test.d.ts.map +1 -0
- package/dist/operations/__tests__/scanner.test.js +201 -0
- package/dist/operations/__tests__/scanner.test.js.map +1 -0
- package/dist/operations/__tests__/teleport.test.d.ts +2 -0
- package/dist/operations/__tests__/teleport.test.d.ts.map +1 -0
- package/dist/operations/__tests__/teleport.test.js +35 -0
- package/dist/operations/__tests__/teleport.test.js.map +1 -0
- package/dist/operations/__tests__/teleportProof.test.d.ts +2 -0
- package/dist/operations/__tests__/teleportProof.test.d.ts.map +1 -0
- package/dist/operations/__tests__/teleportProof.test.js +126 -0
- package/dist/operations/__tests__/teleportProof.test.js.map +1 -0
- package/dist/operations/invoice.d.ts +44 -0
- package/dist/operations/invoice.d.ts.map +1 -1
- package/dist/operations/invoice.js +30 -0
- package/dist/operations/invoice.js.map +1 -1
- package/dist/operations/liquidityManager/__tests__/balance.test.d.ts +2 -0
- package/dist/operations/liquidityManager/__tests__/balance.test.d.ts.map +1 -0
- package/dist/operations/liquidityManager/__tests__/balance.test.js +104 -0
- package/dist/operations/liquidityManager/__tests__/balance.test.js.map +1 -0
- package/dist/operations/liquidityManager/__tests__/crossUnwrap.test.d.ts +2 -0
- package/dist/operations/liquidityManager/__tests__/crossUnwrap.test.d.ts.map +1 -0
- package/dist/operations/liquidityManager/__tests__/crossUnwrap.test.js +198 -0
- package/dist/operations/liquidityManager/__tests__/crossUnwrap.test.js.map +1 -0
- package/dist/operations/liquidityManager/__tests__/helpers.test.d.ts +2 -0
- package/dist/operations/liquidityManager/__tests__/helpers.test.d.ts.map +1 -0
- package/dist/operations/liquidityManager/__tests__/helpers.test.js +126 -0
- package/dist/operations/liquidityManager/__tests__/helpers.test.js.map +1 -0
- package/dist/operations/liquidityManager/__tests__/unwrap.test.d.ts +2 -0
- package/dist/operations/liquidityManager/__tests__/unwrap.test.d.ts.map +1 -0
- package/dist/operations/liquidityManager/__tests__/unwrap.test.js +224 -0
- package/dist/operations/liquidityManager/__tests__/unwrap.test.js.map +1 -0
- package/dist/operations/liquidityManager/__tests__/wrap.test.d.ts +2 -0
- package/dist/operations/liquidityManager/__tests__/wrap.test.d.ts.map +1 -0
- package/dist/operations/liquidityManager/__tests__/wrap.test.js +144 -0
- package/dist/operations/liquidityManager/__tests__/wrap.test.js.map +1 -0
- package/dist/operations/liquidityManager/balance.d.ts +19 -0
- package/dist/operations/liquidityManager/balance.d.ts.map +1 -0
- package/dist/operations/liquidityManager/balance.js +62 -0
- package/dist/operations/liquidityManager/balance.js.map +1 -0
- package/dist/operations/liquidityManager/crossUnwrap.d.ts +73 -0
- package/dist/operations/liquidityManager/crossUnwrap.d.ts.map +1 -0
- package/dist/operations/liquidityManager/crossUnwrap.js +189 -0
- package/dist/operations/liquidityManager/crossUnwrap.js.map +1 -0
- package/dist/operations/liquidityManager/helpers.d.ts +15521 -0
- package/dist/operations/liquidityManager/helpers.d.ts.map +1 -0
- package/dist/operations/liquidityManager/helpers.js +81 -0
- package/dist/operations/liquidityManager/helpers.js.map +1 -0
- package/dist/operations/liquidityManager/index.d.ts +12 -0
- package/dist/operations/liquidityManager/index.d.ts.map +1 -0
- package/dist/operations/liquidityManager/index.js +9 -0
- package/dist/operations/liquidityManager/index.js.map +1 -0
- package/dist/operations/liquidityManager/types.d.ts +90 -0
- package/dist/operations/liquidityManager/types.d.ts.map +1 -0
- package/dist/operations/liquidityManager/types.js +5 -0
- package/dist/operations/liquidityManager/types.js.map +1 -0
- package/dist/operations/liquidityManager/unwrap.d.ts +54 -0
- package/dist/operations/liquidityManager/unwrap.d.ts.map +1 -0
- package/dist/operations/liquidityManager/unwrap.js +80 -0
- package/dist/operations/liquidityManager/unwrap.js.map +1 -0
- package/dist/operations/liquidityManager/wrap.d.ts +38 -0
- package/dist/operations/liquidityManager/wrap.d.ts.map +1 -0
- package/dist/operations/liquidityManager/wrap.js +53 -0
- package/dist/operations/liquidityManager/wrap.js.map +1 -0
- package/dist/operations/liquidityManager.d.ts +3 -104
- package/dist/operations/liquidityManager.d.ts.map +1 -1
- package/dist/operations/liquidityManager.js +3 -343
- package/dist/operations/liquidityManager.js.map +1 -1
- package/dist/operations/privateSend.d.ts +26 -0
- package/dist/operations/privateSend.d.ts.map +1 -1
- package/dist/operations/privateSend.js +11 -0
- package/dist/operations/privateSend.js.map +1 -1
- package/dist/operations/receive/__tests__/announcementStatus.test.d.ts +2 -0
- package/dist/operations/receive/__tests__/announcementStatus.test.d.ts.map +1 -0
- package/dist/operations/receive/__tests__/announcementStatus.test.js +223 -0
- package/dist/operations/receive/__tests__/announcementStatus.test.js.map +1 -0
- package/dist/operations/receive/__tests__/cache.test.d.ts +2 -0
- package/dist/operations/receive/__tests__/cache.test.d.ts.map +1 -0
- package/dist/operations/receive/__tests__/cache.test.js +339 -0
- package/dist/operations/receive/__tests__/cache.test.js.map +1 -0
- package/dist/operations/receive/__tests__/helpers.test.d.ts +2 -0
- package/dist/operations/receive/__tests__/helpers.test.d.ts.map +1 -0
- package/dist/operations/receive/__tests__/helpers.test.js +80 -0
- package/dist/operations/receive/__tests__/helpers.test.js.map +1 -0
- package/dist/operations/receive/__tests__/redeemContext.test.d.ts +2 -0
- package/dist/operations/receive/__tests__/redeemContext.test.d.ts.map +1 -0
- package/dist/operations/receive/__tests__/redeemContext.test.js +230 -0
- package/dist/operations/receive/__tests__/redeemContext.test.js.map +1 -0
- package/dist/operations/receive/announcementStatus.d.ts +12 -0
- package/dist/operations/receive/announcementStatus.d.ts.map +1 -0
- package/dist/operations/receive/announcementStatus.js +56 -0
- package/dist/operations/receive/announcementStatus.js.map +1 -0
- package/dist/operations/receive/cache.d.ts +69 -0
- package/dist/operations/receive/cache.d.ts.map +1 -0
- package/dist/operations/receive/cache.js +105 -0
- package/dist/operations/receive/cache.js.map +1 -0
- package/dist/operations/receive/helpers.d.ts +16 -0
- package/dist/operations/receive/helpers.d.ts.map +1 -0
- package/dist/operations/receive/helpers.js +33 -0
- package/dist/operations/receive/helpers.js.map +1 -0
- package/dist/operations/receive/index.d.ts +9 -0
- package/dist/operations/receive/index.d.ts.map +1 -0
- package/dist/operations/receive/index.js +9 -0
- package/dist/operations/receive/index.js.map +1 -0
- package/dist/operations/receive/redeemContext.d.ts +16 -0
- package/dist/operations/receive/redeemContext.d.ts.map +1 -0
- package/dist/operations/receive/redeemContext.js +107 -0
- package/dist/operations/receive/redeemContext.js.map +1 -0
- package/dist/operations/receive/types.d.ts +141 -0
- package/dist/operations/receive/types.d.ts.map +1 -0
- package/dist/operations/receive/types.js +5 -0
- package/dist/operations/receive/types.js.map +1 -0
- package/dist/operations/receive.d.ts +5 -66
- package/dist/operations/receive.d.ts.map +1 -1
- package/dist/operations/receive.js +5 -173
- package/dist/operations/receive.js.map +1 -1
- package/dist/operations/scanner.d.ts +37 -0
- package/dist/operations/scanner.d.ts.map +1 -1
- package/dist/operations/scanner.js +21 -0
- package/dist/operations/scanner.js.map +1 -1
- package/dist/operations/teleport.d.ts +5 -0
- package/dist/operations/teleport.d.ts.map +1 -1
- package/dist/operations/teleport.js +5 -0
- package/dist/operations/teleport.js.map +1 -1
- package/dist/operations/teleportProof.d.ts +34 -0
- package/dist/operations/teleportProof.d.ts.map +1 -1
- package/dist/operations/teleportProof.js +16 -0
- package/dist/operations/teleportProof.js.map +1 -1
- package/dist/registry/__tests__/helpers.test.d.ts +2 -0
- package/dist/registry/__tests__/helpers.test.d.ts.map +1 -0
- package/dist/registry/__tests__/helpers.test.js +98 -0
- package/dist/registry/__tests__/helpers.test.js.map +1 -0
- package/dist/registry/__tests__/loader.test.d.ts +2 -0
- package/dist/registry/__tests__/loader.test.d.ts.map +1 -0
- package/dist/registry/__tests__/loader.test.js +300 -0
- package/dist/registry/__tests__/loader.test.js.map +1 -0
- package/dist/registry/__tests__/normalize.test.d.ts +2 -0
- package/dist/registry/__tests__/normalize.test.d.ts.map +1 -0
- package/dist/registry/__tests__/normalize.test.js +180 -0
- package/dist/registry/__tests__/normalize.test.js.map +1 -0
- package/dist/registry/__tests__/parsing.test.d.ts +2 -0
- package/dist/registry/__tests__/parsing.test.d.ts.map +1 -0
- package/dist/registry/__tests__/parsing.test.js +188 -0
- package/dist/registry/__tests__/parsing.test.js.map +1 -0
- package/dist/registry/helpers.d.ts +14 -0
- package/dist/registry/helpers.d.ts.map +1 -0
- package/dist/registry/helpers.js +29 -0
- package/dist/registry/helpers.js.map +1 -0
- package/dist/registry/index.d.ts +13 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +15 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/loader.d.ts +57 -0
- package/dist/registry/loader.d.ts.map +1 -0
- package/dist/registry/loader.js +188 -0
- package/dist/registry/loader.js.map +1 -0
- package/dist/registry/normalize.d.ts +29 -0
- package/dist/registry/normalize.d.ts.map +1 -0
- package/dist/registry/normalize.js +81 -0
- package/dist/registry/normalize.js.map +1 -0
- package/dist/registry/parsing.d.ts +55 -0
- package/dist/registry/parsing.d.ts.map +1 -0
- package/dist/registry/parsing.js +139 -0
- package/dist/registry/parsing.js.map +1 -0
- package/dist/registry/tokens.d.ts +6 -42
- package/dist/registry/tokens.d.ts.map +1 -1
- package/dist/registry/tokens.js +6 -231
- package/dist/registry/tokens.js.map +1 -1
- package/dist/registry/types.d.ts +81 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +2 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/sdk.d.ts +57 -0
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +21 -0
- package/dist/sdk.js.map +1 -1
- package/dist/sdk.publicApi.test.d.ts +2 -0
- package/dist/sdk.publicApi.test.d.ts.map +1 -0
- package/dist/sdk.publicApi.test.js +78 -0
- package/dist/sdk.publicApi.test.js.map +1 -0
- package/dist/types.d.ts +159 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/__tests__/branded.test.d.ts +2 -0
- package/dist/utils/__tests__/branded.test.d.ts.map +1 -0
- package/dist/utils/__tests__/branded.test.js +293 -0
- package/dist/utils/__tests__/branded.test.js.map +1 -0
- package/dist/utils/__tests__/fees.test.d.ts +2 -0
- package/dist/utils/__tests__/fees.test.d.ts.map +1 -0
- package/dist/utils/__tests__/fees.test.js +84 -0
- package/dist/utils/__tests__/fees.test.js.map +1 -0
- package/dist/utils/__tests__/hex.test.d.ts +2 -0
- package/dist/utils/__tests__/hex.test.d.ts.map +1 -0
- package/dist/utils/__tests__/hex.test.js +252 -0
- package/dist/utils/__tests__/hex.test.js.map +1 -0
- package/dist/utils/__tests__/http.test.d.ts +2 -0
- package/dist/utils/__tests__/http.test.d.ts.map +1 -0
- package/dist/utils/__tests__/http.test.js +295 -0
- package/dist/utils/__tests__/http.test.js.map +1 -0
- package/dist/utils/branded.d.ts +154 -0
- package/dist/utils/branded.d.ts.map +1 -0
- package/dist/utils/branded.js +177 -0
- package/dist/utils/branded.js.map +1 -0
- package/dist/utils/fees.d.ts +6 -0
- package/dist/utils/fees.d.ts.map +1 -1
- package/dist/utils/fees.js +4 -0
- package/dist/utils/fees.js.map +1 -1
- package/dist/utils/hex.d.ts +37 -0
- package/dist/utils/hex.d.ts.map +1 -1
- package/dist/utils/hex.js +30 -0
- package/dist/utils/hex.js.map +1 -1
- package/dist/utils/http.d.ts +100 -0
- package/dist/utils/http.d.ts.map +1 -1
- package/dist/utils/http.js +158 -0
- package/dist/utils/http.js.map +1 -1
- package/dist/utils/merkle.d.ts +26 -0
- package/dist/utils/merkle.d.ts.map +1 -1
- package/dist/utils/merkle.js +26 -0
- package/dist/utils/merkle.js.map +1 -1
- package/dist/wasm/__tests__/artifacts.test.d.ts +2 -0
- package/dist/wasm/__tests__/artifacts.test.d.ts.map +1 -0
- package/dist/wasm/__tests__/artifacts.test.js +437 -0
- package/dist/wasm/__tests__/artifacts.test.js.map +1 -0
- package/dist/wasm/__tests__/functions.test.d.ts +2 -0
- package/dist/wasm/__tests__/functions.test.d.ts.map +1 -0
- package/dist/wasm/__tests__/functions.test.js +34 -0
- package/dist/wasm/__tests__/functions.test.js.map +1 -0
- package/dist/wasm/__tests__/helpers.test.d.ts +2 -0
- package/dist/wasm/__tests__/helpers.test.d.ts.map +1 -0
- package/dist/wasm/__tests__/helpers.test.js +128 -0
- package/dist/wasm/__tests__/helpers.test.js.map +1 -0
- package/dist/wasm/__tests__/loader.test.d.ts +2 -0
- package/dist/wasm/__tests__/loader.test.d.ts.map +1 -0
- package/dist/wasm/__tests__/loader.test.js +201 -0
- package/dist/wasm/__tests__/loader.test.js.map +1 -0
- package/dist/wasm/__tests__/runtime.test.d.ts +2 -0
- package/dist/wasm/__tests__/runtime.test.d.ts.map +1 -0
- package/dist/wasm/__tests__/runtime.test.js +335 -0
- package/dist/wasm/__tests__/runtime.test.js.map +1 -0
- package/dist/wasm/__tests__/serialization.test.d.ts +2 -0
- package/dist/wasm/__tests__/serialization.test.d.ts.map +1 -0
- package/dist/wasm/__tests__/serialization.test.js +226 -0
- package/dist/wasm/__tests__/serialization.test.js.map +1 -0
- package/dist/wasm/__tests__/validation.test.js +15 -15
- package/dist/wasm/__tests__/validation.test.js.map +1 -1
- package/dist/wasm/artifacts.d.ts +121 -3
- package/dist/wasm/artifacts.d.ts.map +1 -1
- package/dist/wasm/artifacts.js +175 -50
- package/dist/wasm/artifacts.js.map +1 -1
- package/dist/wasm/functions.d.ts +77 -0
- package/dist/wasm/functions.d.ts.map +1 -0
- package/dist/wasm/functions.js +120 -0
- package/dist/wasm/functions.js.map +1 -0
- package/dist/wasm/helpers.d.ts +32 -0
- package/dist/wasm/helpers.d.ts.map +1 -0
- package/dist/wasm/helpers.js +79 -0
- package/dist/wasm/helpers.js.map +1 -0
- package/dist/wasm/index.d.ts +13 -68
- package/dist/wasm/index.d.ts.map +1 -1
- package/dist/wasm/index.js +14 -514
- package/dist/wasm/index.js.map +1 -1
- package/dist/wasm/loader.d.ts +76 -0
- package/dist/wasm/loader.d.ts.map +1 -0
- package/dist/wasm/loader.js +145 -0
- package/dist/wasm/loader.js.map +1 -0
- package/dist/wasm/runtime.d.ts +65 -0
- package/dist/wasm/runtime.d.ts.map +1 -0
- package/dist/wasm/runtime.js +227 -0
- package/dist/wasm/runtime.js.map +1 -0
- package/dist/wasm/serialization.d.ts +113 -0
- package/dist/wasm/serialization.d.ts.map +1 -0
- package/dist/wasm/serialization.js +188 -0
- package/dist/wasm/serialization.js.map +1 -0
- package/dist/wasm/types.d.ts +30 -0
- package/dist/wasm/types.d.ts.map +1 -0
- package/dist/wasm/types.js +2 -0
- package/dist/wasm/types.js.map +1 -0
- package/dist/zkp/__tests__/proofService.test.d.ts +2 -0
- package/dist/zkp/__tests__/proofService.test.d.ts.map +1 -0
- package/dist/zkp/__tests__/proofService.test.js +283 -0
- package/dist/zkp/__tests__/proofService.test.js.map +1 -0
- package/dist/zkp/__tests__/proofUtils.test.js +86 -0
- package/dist/zkp/__tests__/proofUtils.test.js.map +1 -1
- package/dist/zkp/__tests__/runNovaProver.test.js +13 -1
- package/dist/zkp/__tests__/runNovaProver.test.js.map +1 -1
- package/dist/zkp/__tests__/workerClient.test.d.ts +2 -0
- package/dist/zkp/__tests__/workerClient.test.d.ts.map +1 -0
- package/dist/zkp/__tests__/workerClient.test.js +415 -0
- package/dist/zkp/__tests__/workerClient.test.js.map +1 -0
- package/dist/zkp/index.d.ts +1 -1
- package/dist/zkp/index.d.ts.map +1 -1
- package/dist/zkp/index.js +1 -1
- package/dist/zkp/index.js.map +1 -1
- package/dist/zkp/proofService.d.ts +27 -0
- package/dist/zkp/proofService.d.ts.map +1 -1
- package/dist/zkp/proofService.js +29 -21
- package/dist/zkp/proofService.js.map +1 -1
- package/dist/zkp/proofUtils.d.ts +36 -0
- package/dist/zkp/proofUtils.d.ts.map +1 -1
- package/dist/zkp/proofUtils.js +50 -0
- package/dist/zkp/proofUtils.js.map +1 -1
- package/dist/zkp/workerClient.d.ts +65 -0
- package/dist/zkp/workerClient.d.ts.map +1 -1
- package/dist/zkp/workerClient.js +135 -61
- package/dist/zkp/workerClient.js.map +1 -1
- package/dist/zkp/workerTypes.d.ts +27 -0
- package/dist/zkp/workerTypes.d.ts.map +1 -1
- package/package.json +7 -3
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
import { afterEach, beforeEach, describe, expect, test, vi } from "vitest";
|
|
2
|
+
import { ensureFetch, normalizeBaseUrl, buildUrl, wrapFetchError, sleep, mergeHeaders, HttpClient, } from "../http.js";
|
|
3
|
+
describe("ensureFetch", () => {
|
|
4
|
+
test("returns fetch when available", () => {
|
|
5
|
+
const fetchFn = ensureFetch();
|
|
6
|
+
expect(typeof fetchFn).toBe("function");
|
|
7
|
+
});
|
|
8
|
+
test("throws when fetch is not available", () => {
|
|
9
|
+
const original = globalThis.fetch;
|
|
10
|
+
vi.stubGlobal("fetch", undefined);
|
|
11
|
+
try {
|
|
12
|
+
expect(() => ensureFetch()).toThrow("fetch is not available in the current environment");
|
|
13
|
+
}
|
|
14
|
+
finally {
|
|
15
|
+
vi.stubGlobal("fetch", original);
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
});
|
|
19
|
+
describe("normalizeBaseUrl", () => {
|
|
20
|
+
test("adds trailing slash when missing", () => {
|
|
21
|
+
expect(normalizeBaseUrl("https://example.com")).toBe("https://example.com/");
|
|
22
|
+
});
|
|
23
|
+
test("keeps trailing slash when present", () => {
|
|
24
|
+
expect(normalizeBaseUrl("https://example.com/")).toBe("https://example.com/");
|
|
25
|
+
});
|
|
26
|
+
test("handles path segments", () => {
|
|
27
|
+
expect(normalizeBaseUrl("https://example.com/api/v1")).toBe("https://example.com/api/v1/");
|
|
28
|
+
});
|
|
29
|
+
});
|
|
30
|
+
describe("buildUrl", () => {
|
|
31
|
+
test("builds URL from base and path", () => {
|
|
32
|
+
expect(buildUrl("https://example.com", "api/test")).toBe("https://example.com/api/test");
|
|
33
|
+
});
|
|
34
|
+
test("handles base without trailing slash", () => {
|
|
35
|
+
expect(buildUrl("https://example.com/v1", "test")).toBe("https://example.com/v1/test");
|
|
36
|
+
});
|
|
37
|
+
test("handles path with leading slash", () => {
|
|
38
|
+
expect(buildUrl("https://example.com/", "/test")).toBe("https://example.com/test");
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
describe("wrapFetchError", () => {
|
|
42
|
+
test("wraps Error with message", () => {
|
|
43
|
+
const error = wrapFetchError("https://example.com", new Error("Network error"));
|
|
44
|
+
expect(error.message).toBe("request to https://example.com failed: Network error");
|
|
45
|
+
});
|
|
46
|
+
test("wraps string error", () => {
|
|
47
|
+
const error = wrapFetchError("https://example.com", "Connection refused");
|
|
48
|
+
expect(error.message).toBe("request to https://example.com failed: Connection refused");
|
|
49
|
+
});
|
|
50
|
+
test("wraps object error", () => {
|
|
51
|
+
const error = wrapFetchError("https://example.com", { code: "ECONNREFUSED" });
|
|
52
|
+
expect(error.message).toBe("request to https://example.com failed: [object Object]");
|
|
53
|
+
});
|
|
54
|
+
test("includes context when provided", () => {
|
|
55
|
+
const error = wrapFetchError("https://example.com", new Error("timeout"), "API call");
|
|
56
|
+
expect(error.message).toBe("API call: request to https://example.com failed: timeout");
|
|
57
|
+
});
|
|
58
|
+
});
|
|
59
|
+
describe("sleep", () => {
|
|
60
|
+
beforeEach(() => {
|
|
61
|
+
vi.useFakeTimers();
|
|
62
|
+
});
|
|
63
|
+
afterEach(() => {
|
|
64
|
+
vi.useRealTimers();
|
|
65
|
+
});
|
|
66
|
+
test("resolves after specified time", async () => {
|
|
67
|
+
const promise = sleep(50);
|
|
68
|
+
vi.advanceTimersByTime(50);
|
|
69
|
+
await promise;
|
|
70
|
+
// If we get here without hanging, the sleep resolved correctly
|
|
71
|
+
expect(true).toBe(true);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
74
|
+
describe("mergeHeaders", () => {
|
|
75
|
+
test("merges plain objects", () => {
|
|
76
|
+
const result = mergeHeaders({ a: "1" }, { b: "2" });
|
|
77
|
+
expect(result).toEqual({ a: "1", b: "2" });
|
|
78
|
+
});
|
|
79
|
+
test("later sources override earlier", () => {
|
|
80
|
+
const result = mergeHeaders({ a: "1" }, { a: "2" });
|
|
81
|
+
expect(result).toEqual({ a: "2" });
|
|
82
|
+
});
|
|
83
|
+
test("handles Headers instance", () => {
|
|
84
|
+
const headers = new Headers();
|
|
85
|
+
headers.set("Authorization", "Bearer token");
|
|
86
|
+
const result = mergeHeaders({ a: "1" }, headers);
|
|
87
|
+
expect(result).toEqual({ a: "1", authorization: "Bearer token" });
|
|
88
|
+
});
|
|
89
|
+
test("handles tuple array", () => {
|
|
90
|
+
const tuples = [
|
|
91
|
+
["x-custom", "value"],
|
|
92
|
+
["x-another", "test"],
|
|
93
|
+
];
|
|
94
|
+
const result = mergeHeaders({ a: "1" }, tuples);
|
|
95
|
+
expect(result).toEqual({ a: "1", "x-custom": "value", "x-another": "test" });
|
|
96
|
+
});
|
|
97
|
+
test("skips undefined sources", () => {
|
|
98
|
+
const result = mergeHeaders({ a: "1" }, undefined, { b: "2" });
|
|
99
|
+
expect(result).toEqual({ a: "1", b: "2" });
|
|
100
|
+
});
|
|
101
|
+
test("returns empty object for no sources", () => {
|
|
102
|
+
const result = mergeHeaders();
|
|
103
|
+
expect(result).toEqual({});
|
|
104
|
+
});
|
|
105
|
+
});
|
|
106
|
+
describe("HttpClient", () => {
|
|
107
|
+
function createMockFetch(responses) {
|
|
108
|
+
let callIndex = 0;
|
|
109
|
+
return vi.fn().mockImplementation(() => {
|
|
110
|
+
const response = responses[callIndex] ?? responses[responses.length - 1];
|
|
111
|
+
callIndex++;
|
|
112
|
+
return Promise.resolve({
|
|
113
|
+
ok: response.ok,
|
|
114
|
+
status: response.status ?? (response.ok ? 200 : 500),
|
|
115
|
+
json: response.json ?? (() => Promise.resolve({})),
|
|
116
|
+
});
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
describe("constructor", () => {
|
|
120
|
+
test("normalizes base URL", () => {
|
|
121
|
+
const mockFetch = createMockFetch([{ ok: true }]);
|
|
122
|
+
const client = new HttpClient("https://example.com/api", { fetchImpl: mockFetch });
|
|
123
|
+
expect(client.baseUrl).toBe("https://example.com/api/");
|
|
124
|
+
});
|
|
125
|
+
test("keeps trailing slash", () => {
|
|
126
|
+
const mockFetch = createMockFetch([{ ok: true }]);
|
|
127
|
+
const client = new HttpClient("https://example.com/api/", { fetchImpl: mockFetch });
|
|
128
|
+
expect(client.baseUrl).toBe("https://example.com/api/");
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
describe("url", () => {
|
|
132
|
+
test("builds full URL from path", () => {
|
|
133
|
+
const mockFetch = createMockFetch([]);
|
|
134
|
+
const client = new HttpClient("https://example.com/api", { fetchImpl: mockFetch });
|
|
135
|
+
expect(client.url("test")).toBe("https://example.com/api/test");
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
describe("fetch", () => {
|
|
139
|
+
beforeEach(() => {
|
|
140
|
+
vi.clearAllMocks();
|
|
141
|
+
});
|
|
142
|
+
test("makes request to correct URL", async () => {
|
|
143
|
+
const mockFetch = createMockFetch([{ ok: true }]);
|
|
144
|
+
const client = new HttpClient("https://example.com", { fetchImpl: mockFetch });
|
|
145
|
+
await client.fetch("test");
|
|
146
|
+
expect(mockFetch).toHaveBeenCalledWith("https://example.com/test", expect.any(Object));
|
|
147
|
+
});
|
|
148
|
+
test("merges default headers", async () => {
|
|
149
|
+
const mockFetch = createMockFetch([{ ok: true }]);
|
|
150
|
+
const client = new HttpClient("https://example.com", {
|
|
151
|
+
fetchImpl: mockFetch,
|
|
152
|
+
defaultHeaders: { Authorization: "Bearer token" },
|
|
153
|
+
});
|
|
154
|
+
await client.fetch("test");
|
|
155
|
+
expect(mockFetch).toHaveBeenCalledWith(expect.any(String), expect.objectContaining({
|
|
156
|
+
headers: expect.objectContaining({ Authorization: "Bearer token" }),
|
|
157
|
+
}));
|
|
158
|
+
});
|
|
159
|
+
test("option headers override default headers", async () => {
|
|
160
|
+
const mockFetch = createMockFetch([{ ok: true }]);
|
|
161
|
+
const client = new HttpClient("https://example.com", {
|
|
162
|
+
fetchImpl: mockFetch,
|
|
163
|
+
defaultHeaders: { Authorization: "Bearer token", "x-default": "1" },
|
|
164
|
+
});
|
|
165
|
+
await client.fetch("test", {
|
|
166
|
+
headers: { Authorization: "Override", "x-custom": "2" },
|
|
167
|
+
});
|
|
168
|
+
expect(mockFetch).toHaveBeenCalledWith(expect.any(String), expect.objectContaining({
|
|
169
|
+
headers: expect.objectContaining({
|
|
170
|
+
Authorization: "Override",
|
|
171
|
+
"x-default": "1",
|
|
172
|
+
"x-custom": "2",
|
|
173
|
+
}),
|
|
174
|
+
}));
|
|
175
|
+
});
|
|
176
|
+
test("throws wrapped error on fetch failure", async () => {
|
|
177
|
+
const mockFetch = vi.fn().mockRejectedValue(new Error("Network error"));
|
|
178
|
+
const client = new HttpClient("https://example.com", { fetchImpl: mockFetch });
|
|
179
|
+
await expect(client.fetch("test")).rejects.toThrow("request to");
|
|
180
|
+
await expect(client.fetch("test")).rejects.toThrow("Network error");
|
|
181
|
+
});
|
|
182
|
+
});
|
|
183
|
+
describe("fetchOk", () => {
|
|
184
|
+
test("returns response when ok", async () => {
|
|
185
|
+
const mockFetch = createMockFetch([{ ok: true, status: 200 }]);
|
|
186
|
+
const client = new HttpClient("https://example.com", { fetchImpl: mockFetch });
|
|
187
|
+
const response = await client.fetchOk("test");
|
|
188
|
+
expect(response.ok).toBe(true);
|
|
189
|
+
});
|
|
190
|
+
test("throws on non-ok response", async () => {
|
|
191
|
+
const mockFetch = createMockFetch([{ ok: false, status: 404 }]);
|
|
192
|
+
const client = new HttpClient("https://example.com", { fetchImpl: mockFetch });
|
|
193
|
+
await expect(client.fetchOk("test")).rejects.toThrow("failed with status 404");
|
|
194
|
+
await expect(client.fetchOk("test")).rejects.toThrow("request to https://example.com/test failed with status 404");
|
|
195
|
+
});
|
|
196
|
+
});
|
|
197
|
+
describe("getJson", () => {
|
|
198
|
+
test("returns parsed JSON", async () => {
|
|
199
|
+
const mockFetch = createMockFetch([
|
|
200
|
+
{ ok: true, json: () => Promise.resolve({ data: "test" }) },
|
|
201
|
+
]);
|
|
202
|
+
const client = new HttpClient("https://example.com", { fetchImpl: mockFetch });
|
|
203
|
+
const result = await client.getJson("test");
|
|
204
|
+
expect(result).toEqual({ data: "test" });
|
|
205
|
+
});
|
|
206
|
+
test("makes GET request", async () => {
|
|
207
|
+
const mockFetch = createMockFetch([{ ok: true }]);
|
|
208
|
+
const client = new HttpClient("https://example.com", { fetchImpl: mockFetch });
|
|
209
|
+
await client.getJson("test");
|
|
210
|
+
expect(mockFetch).toHaveBeenCalledWith(expect.any(String), expect.objectContaining({ method: "GET" }));
|
|
211
|
+
});
|
|
212
|
+
});
|
|
213
|
+
describe("postOk", () => {
|
|
214
|
+
test("sends JSON body and returns response without parsing", async () => {
|
|
215
|
+
const mockFetch = createMockFetch([{ ok: true, status: 201 }]);
|
|
216
|
+
const client = new HttpClient("https://example.com", { fetchImpl: mockFetch });
|
|
217
|
+
const response = await client.postOk("test", { name: "test" });
|
|
218
|
+
expect(response.ok).toBe(true);
|
|
219
|
+
expect(response.status).toBe(201);
|
|
220
|
+
expect(mockFetch).toHaveBeenCalledWith(expect.any(String), expect.objectContaining({
|
|
221
|
+
method: "POST",
|
|
222
|
+
headers: expect.objectContaining({ "Content-Type": "application/json" }),
|
|
223
|
+
body: JSON.stringify({ name: "test" }),
|
|
224
|
+
}));
|
|
225
|
+
});
|
|
226
|
+
test("throws on non-ok response", async () => {
|
|
227
|
+
const mockFetch = createMockFetch([{ ok: false, status: 400 }]);
|
|
228
|
+
const client = new HttpClient("https://example.com", { fetchImpl: mockFetch });
|
|
229
|
+
await expect(client.postOk("test", { name: "test" })).rejects.toThrow("failed with status 400");
|
|
230
|
+
});
|
|
231
|
+
test("allows overriding Content-Type via options headers", async () => {
|
|
232
|
+
const mockFetch = createMockFetch([{ ok: true, status: 200 }]);
|
|
233
|
+
const client = new HttpClient("https://example.com", {
|
|
234
|
+
fetchImpl: mockFetch,
|
|
235
|
+
defaultHeaders: { Authorization: "Bearer token" },
|
|
236
|
+
});
|
|
237
|
+
await client.postOk("test", { name: "test" }, { headers: { "Content-Type": "text/plain" } });
|
|
238
|
+
expect(mockFetch).toHaveBeenCalledWith(expect.any(String), expect.objectContaining({
|
|
239
|
+
method: "POST",
|
|
240
|
+
headers: expect.objectContaining({
|
|
241
|
+
Authorization: "Bearer token",
|
|
242
|
+
"Content-Type": "text/plain",
|
|
243
|
+
}),
|
|
244
|
+
}));
|
|
245
|
+
});
|
|
246
|
+
});
|
|
247
|
+
describe("postJson", () => {
|
|
248
|
+
test("sends JSON body and returns JSON response", async () => {
|
|
249
|
+
const mockFetch = createMockFetch([{ ok: true, json: () => Promise.resolve({ id: 1 }) }]);
|
|
250
|
+
const client = new HttpClient("https://example.com", { fetchImpl: mockFetch });
|
|
251
|
+
const result = await client.postJson("test", {
|
|
252
|
+
name: "test",
|
|
253
|
+
});
|
|
254
|
+
expect(result).toEqual({ id: 1 });
|
|
255
|
+
expect(mockFetch).toHaveBeenCalledWith(expect.any(String), expect.objectContaining({
|
|
256
|
+
method: "POST",
|
|
257
|
+
headers: expect.objectContaining({ "Content-Type": "application/json" }),
|
|
258
|
+
body: JSON.stringify({ name: "test" }),
|
|
259
|
+
}));
|
|
260
|
+
});
|
|
261
|
+
});
|
|
262
|
+
describe("poll", () => {
|
|
263
|
+
test("returns when condition is met", async () => {
|
|
264
|
+
let callCount = 0;
|
|
265
|
+
const mockFetch = createMockFetch([
|
|
266
|
+
{ ok: true, json: () => Promise.resolve({ status: "pending" }) },
|
|
267
|
+
{ ok: true, json: () => Promise.resolve({ status: "pending" }) },
|
|
268
|
+
{ ok: true, json: () => Promise.resolve({ status: "done" }) },
|
|
269
|
+
]);
|
|
270
|
+
const client = new HttpClient("https://example.com", { fetchImpl: mockFetch });
|
|
271
|
+
const result = await client.poll("status", {
|
|
272
|
+
until: (r) => r.status === "done",
|
|
273
|
+
intervalMs: 1,
|
|
274
|
+
timeoutMs: 1000,
|
|
275
|
+
onPoll: () => {
|
|
276
|
+
callCount++;
|
|
277
|
+
},
|
|
278
|
+
});
|
|
279
|
+
expect(result.status).toBe("done");
|
|
280
|
+
expect(callCount).toBe(3);
|
|
281
|
+
});
|
|
282
|
+
test("throws on timeout", async () => {
|
|
283
|
+
const mockFetch = createMockFetch([
|
|
284
|
+
{ ok: true, json: () => Promise.resolve({ status: "pending" }) },
|
|
285
|
+
]);
|
|
286
|
+
const client = new HttpClient("https://example.com", { fetchImpl: mockFetch });
|
|
287
|
+
await expect(client.poll("status", {
|
|
288
|
+
until: (r) => r.status === "done",
|
|
289
|
+
intervalMs: 5,
|
|
290
|
+
timeoutMs: 10,
|
|
291
|
+
})).rejects.toThrow("timed out");
|
|
292
|
+
});
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
//# sourceMappingURL=http.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.test.js","sourceRoot":"","sources":["../../../src/utils/__tests__/http.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branded types for improved type safety.
|
|
3
|
+
*
|
|
4
|
+
* Branded types (also known as nominal or opaque types) allow TypeScript
|
|
5
|
+
* to distinguish between values that have the same underlying type but
|
|
6
|
+
* different semantic meanings.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* All hex-based types require lowercase `0x` prefix. Uppercase `0X` is
|
|
10
|
+
* intentionally rejected for consistency with EIP-55 and viem conventions.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const address: EvmAddress = toEvmAddress("0x1234...");
|
|
15
|
+
* const hex: HexString = toHexString("0xabcd...");
|
|
16
|
+
*
|
|
17
|
+
* // These are not interchangeable even though both are strings
|
|
18
|
+
* function requiresAddress(addr: EvmAddress) { ... }
|
|
19
|
+
* requiresAddress(hex); // Type error!
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
declare const __brand: unique symbol;
|
|
23
|
+
/**
|
|
24
|
+
* Creates a branded type from a base type.
|
|
25
|
+
* The brand is purely a compile-time construct and has no runtime overhead.
|
|
26
|
+
*/
|
|
27
|
+
export type Brand<T, B extends string> = T & {
|
|
28
|
+
readonly [__brand]: B;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* EVM address (20 bytes, hex-encoded with 0x prefix).
|
|
32
|
+
* Example: "0x1234567890123456789012345678901234567890"
|
|
33
|
+
*/
|
|
34
|
+
export type EvmAddress = Brand<`0x${string}`, "EvmAddress">;
|
|
35
|
+
/**
|
|
36
|
+
* Generic hex-encoded string with 0x prefix.
|
|
37
|
+
* Used for raw bytes, transaction data, etc.
|
|
38
|
+
*
|
|
39
|
+
* @remarks Named HexString to avoid conflict with viem's Hex type.
|
|
40
|
+
*/
|
|
41
|
+
export type HexString = Brand<`0x${string}`, "HexString">;
|
|
42
|
+
/**
|
|
43
|
+
* ZK circuit field element (32 bytes, hex-encoded with 0x prefix).
|
|
44
|
+
* Used in zero-knowledge proof operations.
|
|
45
|
+
* Example: "0x0000000000000000000000000000000000000000000000000000000000000001"
|
|
46
|
+
*/
|
|
47
|
+
export type FieldElement = Brand<`0x${string}`, "FieldElement">;
|
|
48
|
+
/**
|
|
49
|
+
* Blockchain chain identifier.
|
|
50
|
+
* Must be a positive integer.
|
|
51
|
+
* Examples: 1n (Ethereum mainnet), 137n (Polygon), 42161n (Arbitrum)
|
|
52
|
+
*/
|
|
53
|
+
export type ChainId = Brand<bigint, "ChainId">;
|
|
54
|
+
/**
|
|
55
|
+
* Merkle tree leaf index.
|
|
56
|
+
* Must be a non-negative integer.
|
|
57
|
+
*/
|
|
58
|
+
export type LeafIndex = Brand<bigint, "LeafIndex">;
|
|
59
|
+
/**
|
|
60
|
+
* Block number on an EVM chain.
|
|
61
|
+
* Must be a non-negative integer.
|
|
62
|
+
*/
|
|
63
|
+
export type BlockNumber = Brand<bigint, "BlockNumber">;
|
|
64
|
+
/**
|
|
65
|
+
* Checks if a string is a valid Ethereum address format.
|
|
66
|
+
*/
|
|
67
|
+
export declare function isEvmAddress(value: string): value is EvmAddress;
|
|
68
|
+
/**
|
|
69
|
+
* Checks if a string is a valid hex string with 0x prefix.
|
|
70
|
+
*/
|
|
71
|
+
export declare function isHexString(value: string): value is HexString;
|
|
72
|
+
/**
|
|
73
|
+
* Checks if a string is a valid 32-byte field element.
|
|
74
|
+
*/
|
|
75
|
+
export declare function isFieldElement(value: string): value is FieldElement;
|
|
76
|
+
/**
|
|
77
|
+
* Checks if a value is a valid chain ID (positive bigint).
|
|
78
|
+
* Accepts `unknown` for runtime validation of external input.
|
|
79
|
+
*/
|
|
80
|
+
export declare function isChainId(value: unknown): value is ChainId;
|
|
81
|
+
/**
|
|
82
|
+
* Checks if a value is a valid leaf index (non-negative bigint).
|
|
83
|
+
* Accepts `unknown` for runtime validation of external input.
|
|
84
|
+
*/
|
|
85
|
+
export declare function isLeafIndex(value: unknown): value is LeafIndex;
|
|
86
|
+
/**
|
|
87
|
+
* Checks if a value is a valid block number (non-negative bigint).
|
|
88
|
+
* Accepts `unknown` for runtime validation of external input.
|
|
89
|
+
*/
|
|
90
|
+
export declare function isBlockNumber(value: unknown): value is BlockNumber;
|
|
91
|
+
/**
|
|
92
|
+
* Casts a string to EvmAddress type.
|
|
93
|
+
* Use when you know the string is a valid address (e.g., from trusted source).
|
|
94
|
+
*
|
|
95
|
+
* @throws Error if the value is not a valid address format
|
|
96
|
+
*/
|
|
97
|
+
export declare function toEvmAddress(value: string): EvmAddress;
|
|
98
|
+
/**
|
|
99
|
+
* Casts a string to HexString type.
|
|
100
|
+
*
|
|
101
|
+
* @throws Error if the value is not a valid hex format
|
|
102
|
+
*/
|
|
103
|
+
export declare function toHexString(value: string): HexString;
|
|
104
|
+
/**
|
|
105
|
+
* Casts a string to FieldElement type.
|
|
106
|
+
*
|
|
107
|
+
* @throws Error if the value is not a valid field element format
|
|
108
|
+
*/
|
|
109
|
+
export declare function toFieldElement(value: string): FieldElement;
|
|
110
|
+
/**
|
|
111
|
+
* Casts a bigint to ChainId type.
|
|
112
|
+
*
|
|
113
|
+
* @throws Error if the value is not positive
|
|
114
|
+
*/
|
|
115
|
+
export declare function toChainId(value: bigint): ChainId;
|
|
116
|
+
/**
|
|
117
|
+
* Casts a bigint to LeafIndex type.
|
|
118
|
+
*
|
|
119
|
+
* @throws Error if the value is negative
|
|
120
|
+
*/
|
|
121
|
+
export declare function toLeafIndex(value: bigint): LeafIndex;
|
|
122
|
+
/**
|
|
123
|
+
* Casts a bigint to BlockNumber type.
|
|
124
|
+
*
|
|
125
|
+
* @throws Error if the value is negative
|
|
126
|
+
*/
|
|
127
|
+
export declare function toBlockNumber(value: bigint): BlockNumber;
|
|
128
|
+
/**
|
|
129
|
+
* Casts a string to EvmAddress type without validation.
|
|
130
|
+
* Use only when validation has already been performed or for performance-critical paths.
|
|
131
|
+
*/
|
|
132
|
+
export declare function asEvmAddress(value: `0x${string}`): EvmAddress;
|
|
133
|
+
/**
|
|
134
|
+
* Casts a string to HexString type without validation.
|
|
135
|
+
*/
|
|
136
|
+
export declare function asHexString(value: `0x${string}`): HexString;
|
|
137
|
+
/**
|
|
138
|
+
* Casts a string to FieldElement type without validation.
|
|
139
|
+
*/
|
|
140
|
+
export declare function asFieldElement(value: `0x${string}`): FieldElement;
|
|
141
|
+
/**
|
|
142
|
+
* Casts a bigint to ChainId type without validation.
|
|
143
|
+
*/
|
|
144
|
+
export declare function asChainId(value: bigint): ChainId;
|
|
145
|
+
/**
|
|
146
|
+
* Casts a bigint to LeafIndex type without validation.
|
|
147
|
+
*/
|
|
148
|
+
export declare function asLeafIndex(value: bigint): LeafIndex;
|
|
149
|
+
/**
|
|
150
|
+
* Casts a bigint to BlockNumber type without validation.
|
|
151
|
+
*/
|
|
152
|
+
export declare function asBlockNumber(value: bigint): BlockNumber;
|
|
153
|
+
export {};
|
|
154
|
+
//# sourceMappingURL=branded.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branded.d.ts","sourceRoot":"","sources":["../../src/utils/branded.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,CAAC,MAAM,OAAO,EAAE,OAAO,MAAM,CAAC;AAErC;;;GAGG;AACH,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;CAAE,CAAC;AAEvE;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC;AAE5D;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC;AAE1D;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC;AAEhE;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAE/C;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAEnD;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AAUvD;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAE/D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,SAAS,CAE7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,YAAY,CAEnE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,OAAO,CAE1D;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAE9D;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAElE;AAMD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAKtD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAKpD;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAK1D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAKhD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAKpD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAKxD;AAMD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,MAAM,EAAE,GAAG,UAAU,CAE7D;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,MAAM,EAAE,GAAG,SAAS,CAE3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,MAAM,EAAE,GAAG,YAAY,CAEjE;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAEpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAExD"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Branded types for improved type safety.
|
|
3
|
+
*
|
|
4
|
+
* Branded types (also known as nominal or opaque types) allow TypeScript
|
|
5
|
+
* to distinguish between values that have the same underlying type but
|
|
6
|
+
* different semantic meanings.
|
|
7
|
+
*
|
|
8
|
+
* @remarks
|
|
9
|
+
* All hex-based types require lowercase `0x` prefix. Uppercase `0X` is
|
|
10
|
+
* intentionally rejected for consistency with EIP-55 and viem conventions.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```typescript
|
|
14
|
+
* const address: EvmAddress = toEvmAddress("0x1234...");
|
|
15
|
+
* const hex: HexString = toHexString("0xabcd...");
|
|
16
|
+
*
|
|
17
|
+
* // These are not interchangeable even though both are strings
|
|
18
|
+
* function requiresAddress(addr: EvmAddress) { ... }
|
|
19
|
+
* requiresAddress(hex); // Type error!
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
// ============================================================================
|
|
23
|
+
// Type guards and validators
|
|
24
|
+
// ============================================================================
|
|
25
|
+
const ADDRESS_REGEX = /^0x[0-9a-fA-F]{40}$/;
|
|
26
|
+
const HEX_REGEX = /^0x[0-9a-fA-F]*$/;
|
|
27
|
+
const FIELD_ELEMENT_REGEX = /^0x[0-9a-fA-F]{64}$/;
|
|
28
|
+
/**
|
|
29
|
+
* Checks if a string is a valid Ethereum address format.
|
|
30
|
+
*/
|
|
31
|
+
export function isEvmAddress(value) {
|
|
32
|
+
return ADDRESS_REGEX.test(value);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Checks if a string is a valid hex string with 0x prefix.
|
|
36
|
+
*/
|
|
37
|
+
export function isHexString(value) {
|
|
38
|
+
return HEX_REGEX.test(value);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Checks if a string is a valid 32-byte field element.
|
|
42
|
+
*/
|
|
43
|
+
export function isFieldElement(value) {
|
|
44
|
+
return FIELD_ELEMENT_REGEX.test(value);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Checks if a value is a valid chain ID (positive bigint).
|
|
48
|
+
* Accepts `unknown` for runtime validation of external input.
|
|
49
|
+
*/
|
|
50
|
+
export function isChainId(value) {
|
|
51
|
+
return typeof value === "bigint" && value > 0n;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Checks if a value is a valid leaf index (non-negative bigint).
|
|
55
|
+
* Accepts `unknown` for runtime validation of external input.
|
|
56
|
+
*/
|
|
57
|
+
export function isLeafIndex(value) {
|
|
58
|
+
return typeof value === "bigint" && value >= 0n;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Checks if a value is a valid block number (non-negative bigint).
|
|
62
|
+
* Accepts `unknown` for runtime validation of external input.
|
|
63
|
+
*/
|
|
64
|
+
export function isBlockNumber(value) {
|
|
65
|
+
return typeof value === "bigint" && value >= 0n;
|
|
66
|
+
}
|
|
67
|
+
// ============================================================================
|
|
68
|
+
// Validated casting functions (throw on invalid input)
|
|
69
|
+
// ============================================================================
|
|
70
|
+
/**
|
|
71
|
+
* Casts a string to EvmAddress type.
|
|
72
|
+
* Use when you know the string is a valid address (e.g., from trusted source).
|
|
73
|
+
*
|
|
74
|
+
* @throws Error if the value is not a valid address format
|
|
75
|
+
*/
|
|
76
|
+
export function toEvmAddress(value) {
|
|
77
|
+
if (!isEvmAddress(value)) {
|
|
78
|
+
throw new Error(`Invalid address format: ${value}`);
|
|
79
|
+
}
|
|
80
|
+
return value;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Casts a string to HexString type.
|
|
84
|
+
*
|
|
85
|
+
* @throws Error if the value is not a valid hex format
|
|
86
|
+
*/
|
|
87
|
+
export function toHexString(value) {
|
|
88
|
+
if (!isHexString(value)) {
|
|
89
|
+
throw new Error(`Invalid hex format: ${value}`);
|
|
90
|
+
}
|
|
91
|
+
return value;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Casts a string to FieldElement type.
|
|
95
|
+
*
|
|
96
|
+
* @throws Error if the value is not a valid field element format
|
|
97
|
+
*/
|
|
98
|
+
export function toFieldElement(value) {
|
|
99
|
+
if (!isFieldElement(value)) {
|
|
100
|
+
throw new Error(`Invalid field element format: ${value}`);
|
|
101
|
+
}
|
|
102
|
+
return value;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Casts a bigint to ChainId type.
|
|
106
|
+
*
|
|
107
|
+
* @throws Error if the value is not positive
|
|
108
|
+
*/
|
|
109
|
+
export function toChainId(value) {
|
|
110
|
+
if (!isChainId(value)) {
|
|
111
|
+
throw new Error(`Invalid chain ID: ${value} (must be positive)`);
|
|
112
|
+
}
|
|
113
|
+
return value;
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Casts a bigint to LeafIndex type.
|
|
117
|
+
*
|
|
118
|
+
* @throws Error if the value is negative
|
|
119
|
+
*/
|
|
120
|
+
export function toLeafIndex(value) {
|
|
121
|
+
if (!isLeafIndex(value)) {
|
|
122
|
+
throw new Error(`Invalid leaf index: ${value} (must be non-negative)`);
|
|
123
|
+
}
|
|
124
|
+
return value;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Casts a bigint to BlockNumber type.
|
|
128
|
+
*
|
|
129
|
+
* @throws Error if the value is negative
|
|
130
|
+
*/
|
|
131
|
+
export function toBlockNumber(value) {
|
|
132
|
+
if (!isBlockNumber(value)) {
|
|
133
|
+
throw new Error(`Invalid block number: ${value} (must be non-negative)`);
|
|
134
|
+
}
|
|
135
|
+
return value;
|
|
136
|
+
}
|
|
137
|
+
// ============================================================================
|
|
138
|
+
// Unchecked casting functions (for performance-critical paths)
|
|
139
|
+
// ============================================================================
|
|
140
|
+
/**
|
|
141
|
+
* Casts a string to EvmAddress type without validation.
|
|
142
|
+
* Use only when validation has already been performed or for performance-critical paths.
|
|
143
|
+
*/
|
|
144
|
+
export function asEvmAddress(value) {
|
|
145
|
+
return value;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Casts a string to HexString type without validation.
|
|
149
|
+
*/
|
|
150
|
+
export function asHexString(value) {
|
|
151
|
+
return value;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Casts a string to FieldElement type without validation.
|
|
155
|
+
*/
|
|
156
|
+
export function asFieldElement(value) {
|
|
157
|
+
return value;
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Casts a bigint to ChainId type without validation.
|
|
161
|
+
*/
|
|
162
|
+
export function asChainId(value) {
|
|
163
|
+
return value;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Casts a bigint to LeafIndex type without validation.
|
|
167
|
+
*/
|
|
168
|
+
export function asLeafIndex(value) {
|
|
169
|
+
return value;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Casts a bigint to BlockNumber type without validation.
|
|
173
|
+
*/
|
|
174
|
+
export function asBlockNumber(value) {
|
|
175
|
+
return value;
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=branded.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"branded.js","sourceRoot":"","sources":["../../src/utils/branded.ts"],"names":[],"mappings":"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"}
|