@paimaexample/wallets 0.3.117
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 +1 -0
- package/esm/chain-types/src/hash.d.ts +28 -0
- package/esm/chain-types/src/hash.d.ts.map +1 -0
- package/esm/chain-types/src/hash.js +29 -0
- package/esm/chain-types/src/mod.d.ts +3 -0
- package/esm/chain-types/src/mod.d.ts.map +1 -0
- package/esm/chain-types/src/mod.js +2 -0
- package/esm/chain-types/src/types.d.ts +70 -0
- package/esm/chain-types/src/types.d.ts.map +1 -0
- package/esm/chain-types/src/types.js +1 -0
- package/esm/concise/src/batcher.d.ts +40 -0
- package/esm/concise/src/batcher.d.ts.map +1 -0
- package/esm/concise/src/batcher.js +117 -0
- package/esm/concise/src/delegate.d.ts +18 -0
- package/esm/concise/src/delegate.d.ts.map +1 -0
- package/esm/concise/src/delegate.js +118 -0
- package/esm/concise/src/mod.d.ts +5 -0
- package/esm/concise/src/mod.d.ts.map +1 -0
- package/esm/concise/src/mod.js +3 -0
- package/esm/concise/src/v2/builtins/batcher.d.ts +27 -0
- package/esm/concise/src/v2/builtins/batcher.d.ts.map +1 -0
- package/esm/concise/src/v2/builtins/batcher.js +51 -0
- package/esm/concise/src/v2/builtins/grammar.d.ts +25 -0
- package/esm/concise/src/v2/builtins/grammar.d.ts.map +1 -0
- package/esm/concise/src/v2/builtins/grammar.js +40 -0
- package/esm/concise/src/v2/builtins/index.d.ts +3 -0
- package/esm/concise/src/v2/builtins/index.d.ts.map +1 -0
- package/esm/concise/src/v2/builtins/index.js +3 -0
- package/esm/concise/src/v2/grammar.d.ts +8 -0
- package/esm/concise/src/v2/grammar.d.ts.map +1 -0
- package/esm/concise/src/v2/grammar.js +19 -0
- package/esm/concise/src/v2/inputs.d.ts +7 -0
- package/esm/concise/src/v2/inputs.d.ts.map +1 -0
- package/esm/concise/src/v2/inputs.js +37 -0
- package/esm/concise/src/v2/mod.d.ts +5 -0
- package/esm/concise/src/v2/mod.d.ts.map +1 -0
- package/esm/concise/src/v2/mod.js +4 -0
- package/esm/concise/src/v2/types.d.ts +23 -0
- package/esm/concise/src/v2/types.d.ts.map +1 -0
- package/esm/concise/src/v2/types.js +1 -0
- package/esm/config/src/config/builder.d.ts +33 -0
- package/esm/config/src/config/builder.d.ts.map +1 -0
- package/esm/config/src/config/builder.js +82 -0
- package/esm/config/src/config/configCheck.d.ts +32 -0
- package/esm/config/src/config/configCheck.d.ts.map +1 -0
- package/esm/config/src/config/configCheck.js +67 -0
- package/esm/config/src/config/context.d.ts +23 -0
- package/esm/config/src/config/context.d.ts.map +1 -0
- package/esm/config/src/config/context.js +25 -0
- package/esm/config/src/config/mod.d.ts +7 -0
- package/esm/config/src/config/mod.d.ts.map +1 -0
- package/esm/config/src/config/mod.js +4 -0
- package/esm/config/src/config/parts/deployedAddresses.d.ts +17 -0
- package/esm/config/src/config/parts/deployedAddresses.d.ts.map +1 -0
- package/esm/config/src/config/parts/deployedAddresses.js +24 -0
- package/esm/config/src/config/parts/network.d.ts +19 -0
- package/esm/config/src/config/parts/network.d.ts.map +1 -0
- package/esm/config/src/config/parts/network.js +29 -0
- package/esm/config/src/config/parts/primitive.d.ts +31 -0
- package/esm/config/src/config/parts/primitive.d.ts.map +1 -0
- package/esm/config/src/config/parts/primitive.js +28 -0
- package/esm/config/src/config/parts/securityNamespace.d.ts +14 -0
- package/esm/config/src/config/parts/securityNamespace.d.ts.map +1 -0
- package/esm/config/src/config/parts/securityNamespace.js +26 -0
- package/esm/config/src/config/parts/syncProtocols.d.ts +43 -0
- package/esm/config/src/config/parts/syncProtocols.d.ts.map +1 -0
- package/esm/config/src/config/parts/syncProtocols.js +66 -0
- package/esm/config/src/config/utils.d.ts +40 -0
- package/esm/config/src/config/utils.d.ts.map +1 -0
- package/esm/config/src/config/utils.js +55 -0
- package/esm/config/src/mod.d.ts +3 -0
- package/esm/config/src/mod.d.ts.map +1 -0
- package/esm/config/src/mod.js +2 -0
- package/esm/config/src/schema/common.d.ts +26 -0
- package/esm/config/src/schema/common.d.ts.map +1 -0
- package/esm/config/src/schema/common.js +51 -0
- package/esm/config/src/schema/mod.d.ts +7 -0
- package/esm/config/src/schema/mod.d.ts.map +1 -0
- package/esm/config/src/schema/mod.js +6 -0
- package/esm/config/src/schema/namespace.d.ts +39 -0
- package/esm/config/src/schema/namespace.d.ts.map +1 -0
- package/esm/config/src/schema/namespace.js +34 -0
- package/esm/config/src/schema/network/algorand.d.ts +12 -0
- package/esm/config/src/schema/network/algorand.d.ts.map +1 -0
- package/esm/config/src/schema/network/algorand.js +23 -0
- package/esm/config/src/schema/network/all.d.ts +175 -0
- package/esm/config/src/schema/network/all.d.ts.map +1 -0
- package/esm/config/src/schema/network/all.js +24 -0
- package/esm/config/src/schema/network/bitcoin.d.ts +19 -0
- package/esm/config/src/schema/network/bitcoin.d.ts.map +1 -0
- package/esm/config/src/schema/network/bitcoin.js +21 -0
- package/esm/config/src/schema/network/cardano.d.ts +12 -0
- package/esm/config/src/schema/network/cardano.d.ts.map +1 -0
- package/esm/config/src/schema/network/cardano.js +27 -0
- package/esm/config/src/schema/network/evm.d.ts +68 -0
- package/esm/config/src/schema/network/evm.d.ts.map +1 -0
- package/esm/config/src/schema/network/evm.js +70 -0
- package/esm/config/src/schema/network/mina.d.ts +14 -0
- package/esm/config/src/schema/network/mina.d.ts.map +1 -0
- package/esm/config/src/schema/network/mina.js +25 -0
- package/esm/config/src/schema/network/mod.d.ts +9 -0
- package/esm/config/src/schema/network/mod.d.ts.map +1 -0
- package/esm/config/src/schema/network/mod.js +8 -0
- package/esm/config/src/schema/network/ntp.d.ts +32 -0
- package/esm/config/src/schema/network/ntp.d.ts.map +1 -0
- package/esm/config/src/schema/network/ntp.js +39 -0
- package/esm/config/src/schema/network/substrate/avail.d.ts +14 -0
- package/esm/config/src/schema/network/substrate/avail.d.ts.map +1 -0
- package/esm/config/src/schema/network/substrate/avail.js +26 -0
- package/esm/config/src/schema/network/substrate/common.d.ts +18 -0
- package/esm/config/src/schema/network/substrate/common.d.ts.map +1 -0
- package/esm/config/src/schema/network/substrate/common.js +32 -0
- package/esm/config/src/schema/network/substrate/midnight.d.ts +20 -0
- package/esm/config/src/schema/network/substrate/midnight.d.ts.map +1 -0
- package/esm/config/src/schema/network/substrate/midnight.js +32 -0
- package/esm/config/src/schema/network/substrate/mod.d.ts +4 -0
- package/esm/config/src/schema/network/substrate/mod.d.ts.map +1 -0
- package/esm/config/src/schema/network/substrate/mod.js +3 -0
- package/esm/config/src/schema/network/types.d.ts +13 -0
- package/esm/config/src/schema/network/types.d.ts.map +1 -0
- package/esm/config/src/schema/network/types.js +13 -0
- package/esm/config/src/schema/network/utils.d.ts +5 -0
- package/esm/config/src/schema/network/utils.d.ts.map +1 -0
- package/esm/config/src/schema/network/utils.js +73 -0
- package/esm/config/src/schema/primitive/mod.d.ts +2 -0
- package/esm/config/src/schema/primitive/mod.d.ts.map +1 -0
- package/esm/config/src/schema/primitive/mod.js +1 -0
- package/esm/config/src/schema/primitive/types.d.ts +58 -0
- package/esm/config/src/schema/primitive/types.d.ts.map +1 -0
- package/esm/config/src/schema/primitive/types.js +1 -0
- package/esm/config/src/schema/sync-protocols/all.d.ts +583 -0
- package/esm/config/src/schema/sync-protocols/all.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/all.js +55 -0
- package/esm/config/src/schema/sync-protocols/avail/rpc.d.ts +76 -0
- package/esm/config/src/schema/sync-protocols/avail/rpc.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/avail/rpc.js +56 -0
- package/esm/config/src/schema/sync-protocols/bitcoin/rpc.d.ts +76 -0
- package/esm/config/src/schema/sync-protocols/bitcoin/rpc.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/bitcoin/rpc.js +47 -0
- package/esm/config/src/schema/sync-protocols/cardano/carp.d.ts +80 -0
- package/esm/config/src/schema/sync-protocols/cardano/carp.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/cardano/carp.js +62 -0
- package/esm/config/src/schema/sync-protocols/cardano/mod.d.ts +2 -0
- package/esm/config/src/schema/sync-protocols/cardano/mod.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/cardano/mod.js +1 -0
- package/esm/config/src/schema/sync-protocols/cardano/utxorpc.d.ts +56 -0
- package/esm/config/src/schema/sync-protocols/cardano/utxorpc.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/cardano/utxorpc.js +56 -0
- package/esm/config/src/schema/sync-protocols/common.d.ts +60 -0
- package/esm/config/src/schema/sync-protocols/common.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/common.js +54 -0
- package/esm/config/src/schema/sync-protocols/decorators/all.d.ts +17 -0
- package/esm/config/src/schema/sync-protocols/decorators/all.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/decorators/all.js +8 -0
- package/esm/config/src/schema/sync-protocols/decorators/emulated.d.ts +8 -0
- package/esm/config/src/schema/sync-protocols/decorators/emulated.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/decorators/emulated.js +12 -0
- package/esm/config/src/schema/sync-protocols/decorators/mod.d.ts +4 -0
- package/esm/config/src/schema/sync-protocols/decorators/mod.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/decorators/mod.js +3 -0
- package/esm/config/src/schema/sync-protocols/decorators/types.d.ts +4 -0
- package/esm/config/src/schema/sync-protocols/decorators/types.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/decorators/types.js +4 -0
- package/esm/config/src/schema/sync-protocols/evm/rpc.d.ts +68 -0
- package/esm/config/src/schema/sync-protocols/evm/rpc.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/evm/rpc.js +44 -0
- package/esm/config/src/schema/sync-protocols/midnight/graphql.d.ts +66 -0
- package/esm/config/src/schema/sync-protocols/midnight/graphql.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/midnight/graphql.js +50 -0
- package/esm/config/src/schema/sync-protocols/mina/graphql.d.ts +73 -0
- package/esm/config/src/schema/sync-protocols/mina/graphql.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/mina/graphql.js +59 -0
- package/esm/config/src/schema/sync-protocols/mod.d.ts +10 -0
- package/esm/config/src/schema/sync-protocols/mod.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/mod.js +9 -0
- package/esm/config/src/schema/sync-protocols/ntp/rpc.d.ts +45 -0
- package/esm/config/src/schema/sync-protocols/ntp/rpc.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/ntp/rpc.js +33 -0
- package/esm/config/src/schema/sync-protocols/types.d.ts +125 -0
- package/esm/config/src/schema/sync-protocols/types.d.ts.map +1 -0
- package/esm/config/src/schema/sync-protocols/types.js +22 -0
- package/esm/config/src/schema/utils.d.ts +53 -0
- package/esm/config/src/schema/utils.d.ts.map +1 -0
- package/esm/config/src/schema/utils.js +58 -0
- package/esm/events/src/app-events.d.ts +65 -0
- package/esm/events/src/app-events.d.ts.map +1 -0
- package/esm/events/src/app-events.js +51 -0
- package/esm/events/src/asyncapi.d.ts +1173 -0
- package/esm/events/src/asyncapi.d.ts.map +1 -0
- package/esm/events/src/asyncapi.js +7 -0
- package/esm/events/src/builtin-event-utils.d.ts +5 -0
- package/esm/events/src/builtin-event-utils.d.ts.map +1 -0
- package/esm/events/src/builtin-event-utils.js +58 -0
- package/esm/events/src/builtin-events.d.ts +106 -0
- package/esm/events/src/builtin-events.d.ts.map +1 -0
- package/esm/events/src/builtin-events.js +198 -0
- package/esm/events/src/event-connect.d.ts +15 -0
- package/esm/events/src/event-connect.d.ts.map +1 -0
- package/esm/events/src/event-connect.js +75 -0
- package/esm/events/src/event-manager.d.ts +54 -0
- package/esm/events/src/event-manager.d.ts.map +1 -0
- package/esm/events/src/event-manager.js +129 -0
- package/esm/events/src/evm.d.ts +6 -0
- package/esm/events/src/evm.d.ts.map +1 -0
- package/esm/events/src/evm.js +55 -0
- package/esm/events/src/mod.d.ts +10 -0
- package/esm/events/src/mod.d.ts.map +1 -0
- package/esm/events/src/mod.js +9 -0
- package/esm/events/src/types.d.ts +255 -0
- package/esm/events/src/types.d.ts.map +1 -0
- package/esm/events/src/types.js +103 -0
- package/esm/events/src/utils.d.ts +16 -0
- package/esm/events/src/utils.d.ts.map +1 -0
- package/esm/events/src/utils.js +93 -0
- package/esm/package.json +3 -0
- package/esm/utils/src/binary-search.d.ts +7 -0
- package/esm/utils/src/binary-search.d.ts.map +1 -0
- package/esm/utils/src/binary-search.js +38 -0
- package/esm/utils/src/captcha.d.ts +9 -0
- package/esm/utils/src/captcha.d.ts.map +1 -0
- package/esm/utils/src/captcha.js +19 -0
- package/esm/utils/src/concurrency/condVar.d.ts +25 -0
- package/esm/utils/src/concurrency/condVar.d.ts.map +1 -0
- package/esm/utils/src/concurrency/condVar.js +39 -0
- package/esm/utils/src/concurrency/latch.d.ts +25 -0
- package/esm/utils/src/concurrency/latch.d.ts.map +1 -0
- package/esm/utils/src/concurrency/latch.js +51 -0
- package/esm/utils/src/concurrency/mod.d.ts +5 -0
- package/esm/utils/src/concurrency/mod.d.ts.map +1 -0
- package/esm/utils/src/concurrency/mod.js +4 -0
- package/esm/utils/src/concurrency/retry.d.ts +14 -0
- package/esm/utils/src/concurrency/retry.d.ts.map +1 -0
- package/esm/utils/src/concurrency/retry.js +26 -0
- package/esm/utils/src/concurrency/utils.d.ts +27 -0
- package/esm/utils/src/concurrency/utils.d.ts.map +1 -0
- package/esm/utils/src/concurrency/utils.js +27 -0
- package/esm/utils/src/constants.d.ts +4 -0
- package/esm/utils/src/constants.d.ts.map +1 -0
- package/esm/utils/src/constants.js +7 -0
- package/esm/utils/src/decorators/bound.d.ts +10 -0
- package/esm/utils/src/decorators/bound.d.ts.map +1 -0
- package/esm/utils/src/decorators/bound.js +17 -0
- package/esm/utils/src/decorators/mod.d.ts +2 -0
- package/esm/utils/src/decorators/mod.d.ts.map +1 -0
- package/esm/utils/src/decorators/mod.js +1 -0
- package/esm/utils/src/mod.d.ts +8 -0
- package/esm/utils/src/mod.d.ts.map +1 -0
- package/esm/utils/src/mod.js +7 -0
- package/esm/utils/src/types/json-query.d.ts +30 -0
- package/esm/utils/src/types/json-query.d.ts.map +1 -0
- package/esm/utils/src/types/json-query.js +1 -0
- package/esm/utils/src/types/misc.d.ts +109 -0
- package/esm/utils/src/types/misc.d.ts.map +1 -0
- package/esm/utils/src/types/misc.js +2 -0
- package/esm/utils/src/types/mod.d.ts +7 -0
- package/esm/utils/src/types/mod.d.ts.map +1 -0
- package/esm/utils/src/types/mod.js +3 -0
- package/esm/utils/src/types/nominal.d.ts +87 -0
- package/esm/utils/src/types/nominal.d.ts.map +1 -0
- package/esm/utils/src/types/nominal.js +1 -0
- package/esm/utils/src/types/typebox-helpers.d.ts +183 -0
- package/esm/utils/src/types/typebox-helpers.d.ts.map +1 -0
- package/esm/utils/src/types/typebox-helpers.js +235 -0
- package/esm/utils/src/types/utils.d.ts +37 -0
- package/esm/utils/src/types/utils.d.ts.map +1 -0
- package/esm/utils/src/types/utils.js +46 -0
- package/esm/utils/src/types/validators/algorand.d.ts +31 -0
- package/esm/utils/src/types/validators/algorand.d.ts.map +1 -0
- package/esm/utils/src/types/validators/algorand.js +90 -0
- package/esm/utils/src/types/validators/cardano.d.ts +26 -0
- package/esm/utils/src/types/validators/cardano.d.ts.map +1 -0
- package/esm/utils/src/types/validators/cardano.js +113 -0
- package/esm/utils/src/types/validators/mina.d.ts +15 -0
- package/esm/utils/src/types/validators/mina.d.ts.map +1 -0
- package/esm/utils/src/types/validators/mina.js +43 -0
- package/esm/utils/src/types/validators/minicbor.d.ts +98 -0
- package/esm/utils/src/types/validators/minicbor.d.ts.map +1 -0
- package/esm/utils/src/types/validators/minicbor.js +332 -0
- package/esm/utils/src/types/validators/mod.d.ts +3 -0
- package/esm/utils/src/types/validators/mod.d.ts.map +1 -0
- package/esm/utils/src/types/validators/mod.js +2 -0
- package/esm/utils/src/types/validators/utils.d.ts +6 -0
- package/esm/utils/src/types/validators/utils.d.ts.map +1 -0
- package/esm/utils/src/types/validators/utils.js +24 -0
- package/esm/utils/src/viem.d.ts +6 -0
- package/esm/utils/src/viem.d.ts.map +1 -0
- package/esm/utils/src/viem.js +15 -0
- package/esm/wallets/src/IProvider.d.ts +48 -0
- package/esm/wallets/src/IProvider.d.ts.map +1 -0
- package/esm/wallets/src/IProvider.js +7 -0
- package/esm/wallets/src/avail/avail.d.ts +28 -0
- package/esm/wallets/src/avail/avail.d.ts.map +1 -0
- package/esm/wallets/src/avail/avail.js +65 -0
- package/esm/wallets/src/avail/wrapper.d.ts +6 -0
- package/esm/wallets/src/avail/wrapper.d.ts.map +1 -0
- package/esm/wallets/src/avail/wrapper.js +31 -0
- package/esm/wallets/src/cardano/cardano.d.ts +30 -0
- package/esm/wallets/src/cardano/cardano.d.ts.map +1 -0
- package/esm/wallets/src/cardano/cardano.js +158 -0
- package/esm/wallets/src/cardano/wrapper.d.ts +7 -0
- package/esm/wallets/src/cardano/wrapper.d.ts.map +1 -0
- package/esm/wallets/src/cardano/wrapper.js +22 -0
- package/esm/wallets/src/evm/ethers.d.ts +28 -0
- package/esm/wallets/src/evm/ethers.d.ts.map +1 -0
- package/esm/wallets/src/evm/ethers.js +79 -0
- package/esm/wallets/src/evm/injected.d.ts +74 -0
- package/esm/wallets/src/evm/injected.d.ts.map +1 -0
- package/esm/wallets/src/evm/injected.js +322 -0
- package/esm/wallets/src/evm/types.d.ts +3 -0
- package/esm/wallets/src/evm/types.d.ts.map +1 -0
- package/esm/wallets/src/evm/types.js +1 -0
- package/esm/wallets/src/evm/wrapper-ethers.d.ts +6 -0
- package/esm/wallets/src/evm/wrapper-ethers.d.ts.map +1 -0
- package/esm/wallets/src/evm/wrapper-ethers.js +38 -0
- package/esm/wallets/src/evm/wrapper-injected.d.ts +7 -0
- package/esm/wallets/src/evm/wrapper-injected.d.ts.map +1 -0
- package/esm/wallets/src/evm/wrapper-injected.js +80 -0
- package/esm/wallets/src/midnight/midnight.d.ts +26 -0
- package/esm/wallets/src/midnight/midnight.d.ts.map +1 -0
- package/esm/wallets/src/midnight/midnight.js +112 -0
- package/esm/wallets/src/midnight/wrapper.d.ts +7 -0
- package/esm/wallets/src/midnight/wrapper.d.ts.map +1 -0
- package/esm/wallets/src/midnight/wrapper.js +22 -0
- package/esm/wallets/src/mina/mina.d.ts +28 -0
- package/esm/wallets/src/mina/mina.d.ts.map +1 -0
- package/esm/wallets/src/mina/mina.js +133 -0
- package/esm/wallets/src/mina/wrapper.d.ts +6 -0
- package/esm/wallets/src/mina/wrapper.d.ts.map +1 -0
- package/esm/wallets/src/mina/wrapper.js +12 -0
- package/esm/wallets/src/mod.d.ts +8 -0
- package/esm/wallets/src/mod.d.ts.map +1 -0
- package/esm/wallets/src/mod.js +5 -0
- package/esm/wallets/src/paima.d.ts +104 -0
- package/esm/wallets/src/paima.d.ts.map +1 -0
- package/esm/wallets/src/paima.js +244 -0
- package/esm/wallets/src/types.d.ts +49 -0
- package/esm/wallets/src/types.d.ts.map +1 -0
- package/esm/wallets/src/types.js +1 -0
- package/esm/wallets/src/utils.d.ts +41 -0
- package/esm/wallets/src/utils.d.ts.map +1 -0
- package/esm/wallets/src/utils.js +75 -0
- package/esm/wallets/src/wallet-modes.d.ts +49 -0
- package/esm/wallets/src/wallet-modes.d.ts.map +1 -0
- package/esm/wallets/src/wallet-modes.js +26 -0
- package/esm/wallets/src/wallets.d.ts +5 -0
- package/esm/wallets/src/wallets.d.ts.map +1 -0
- package/esm/wallets/src/wallets.js +55 -0
- package/esm/wallets/src/windows.d.ts +5 -0
- package/esm/wallets/src/windows.d.ts.map +1 -0
- package/esm/wallets/src/windows.js +9 -0
- package/package.json +51 -0
- package/script/chain-types/src/hash.d.ts +28 -0
- package/script/chain-types/src/hash.d.ts.map +1 -0
- package/script/chain-types/src/hash.js +36 -0
- package/script/chain-types/src/mod.d.ts +3 -0
- package/script/chain-types/src/mod.d.ts.map +1 -0
- package/script/chain-types/src/mod.js +18 -0
- package/script/chain-types/src/types.d.ts +70 -0
- package/script/chain-types/src/types.d.ts.map +1 -0
- package/script/chain-types/src/types.js +2 -0
- package/script/concise/src/batcher.d.ts +40 -0
- package/script/concise/src/batcher.d.ts.map +1 -0
- package/script/concise/src/batcher.js +122 -0
- package/script/concise/src/delegate.d.ts +18 -0
- package/script/concise/src/delegate.d.ts.map +1 -0
- package/script/concise/src/delegate.js +123 -0
- package/script/concise/src/mod.d.ts +5 -0
- package/script/concise/src/mod.d.ts.map +1 -0
- package/script/concise/src/mod.js +19 -0
- package/script/concise/src/v2/builtins/batcher.d.ts +27 -0
- package/script/concise/src/v2/builtins/batcher.d.ts.map +1 -0
- package/script/concise/src/v2/builtins/batcher.js +54 -0
- package/script/concise/src/v2/builtins/grammar.d.ts +25 -0
- package/script/concise/src/v2/builtins/grammar.d.ts.map +1 -0
- package/script/concise/src/v2/builtins/grammar.js +43 -0
- package/script/concise/src/v2/builtins/index.d.ts +3 -0
- package/script/concise/src/v2/builtins/index.d.ts.map +1 -0
- package/script/concise/src/v2/builtins/index.js +19 -0
- package/script/concise/src/v2/grammar.d.ts +8 -0
- package/script/concise/src/v2/grammar.d.ts.map +1 -0
- package/script/concise/src/v2/grammar.js +24 -0
- package/script/concise/src/v2/inputs.d.ts +7 -0
- package/script/concise/src/v2/inputs.d.ts.map +1 -0
- package/script/concise/src/v2/inputs.js +43 -0
- package/script/concise/src/v2/mod.d.ts +5 -0
- package/script/concise/src/v2/mod.d.ts.map +1 -0
- package/script/concise/src/v2/mod.js +20 -0
- package/script/concise/src/v2/types.d.ts +23 -0
- package/script/concise/src/v2/types.d.ts.map +1 -0
- package/script/concise/src/v2/types.js +2 -0
- package/script/config/src/config/builder.d.ts +33 -0
- package/script/config/src/config/builder.d.ts.map +1 -0
- package/script/config/src/config/builder.js +86 -0
- package/script/config/src/config/configCheck.d.ts +32 -0
- package/script/config/src/config/configCheck.d.ts.map +1 -0
- package/script/config/src/config/configCheck.js +70 -0
- package/script/config/src/config/context.d.ts +23 -0
- package/script/config/src/config/context.d.ts.map +1 -0
- package/script/config/src/config/context.js +31 -0
- package/script/config/src/config/mod.d.ts +7 -0
- package/script/config/src/config/mod.d.ts.map +1 -0
- package/script/config/src/config/mod.js +22 -0
- package/script/config/src/config/parts/deployedAddresses.d.ts +17 -0
- package/script/config/src/config/parts/deployedAddresses.d.ts.map +1 -0
- package/script/config/src/config/parts/deployedAddresses.js +28 -0
- package/script/config/src/config/parts/network.d.ts +19 -0
- package/script/config/src/config/parts/network.d.ts.map +1 -0
- package/script/config/src/config/parts/network.js +33 -0
- package/script/config/src/config/parts/primitive.d.ts +31 -0
- package/script/config/src/config/parts/primitive.d.ts.map +1 -0
- package/script/config/src/config/parts/primitive.js +32 -0
- package/script/config/src/config/parts/securityNamespace.d.ts +14 -0
- package/script/config/src/config/parts/securityNamespace.d.ts.map +1 -0
- package/script/config/src/config/parts/securityNamespace.js +30 -0
- package/script/config/src/config/parts/syncProtocols.d.ts +43 -0
- package/script/config/src/config/parts/syncProtocols.d.ts.map +1 -0
- package/script/config/src/config/parts/syncProtocols.js +70 -0
- package/script/config/src/config/utils.d.ts +40 -0
- package/script/config/src/config/utils.d.ts.map +1 -0
- package/script/config/src/config/utils.js +62 -0
- package/script/config/src/mod.d.ts +3 -0
- package/script/config/src/mod.d.ts.map +1 -0
- package/script/config/src/mod.js +18 -0
- package/script/config/src/schema/common.d.ts +26 -0
- package/script/config/src/schema/common.d.ts.map +1 -0
- package/script/config/src/schema/common.js +54 -0
- package/script/config/src/schema/mod.d.ts +7 -0
- package/script/config/src/schema/mod.d.ts.map +1 -0
- package/script/config/src/schema/mod.js +22 -0
- package/script/config/src/schema/namespace.d.ts +39 -0
- package/script/config/src/schema/namespace.d.ts.map +1 -0
- package/script/config/src/schema/namespace.js +38 -0
- package/script/config/src/schema/network/algorand.d.ts +12 -0
- package/script/config/src/schema/network/algorand.d.ts.map +1 -0
- package/script/config/src/schema/network/algorand.js +26 -0
- package/script/config/src/schema/network/all.d.ts +175 -0
- package/script/config/src/schema/network/all.d.ts.map +1 -0
- package/script/config/src/schema/network/all.js +28 -0
- package/script/config/src/schema/network/bitcoin.d.ts +19 -0
- package/script/config/src/schema/network/bitcoin.d.ts.map +1 -0
- package/script/config/src/schema/network/bitcoin.js +24 -0
- package/script/config/src/schema/network/cardano.d.ts +12 -0
- package/script/config/src/schema/network/cardano.d.ts.map +1 -0
- package/script/config/src/schema/network/cardano.js +30 -0
- package/script/config/src/schema/network/evm.d.ts +68 -0
- package/script/config/src/schema/network/evm.d.ts.map +1 -0
- package/script/config/src/schema/network/evm.js +75 -0
- package/script/config/src/schema/network/mina.d.ts +14 -0
- package/script/config/src/schema/network/mina.d.ts.map +1 -0
- package/script/config/src/schema/network/mina.js +28 -0
- package/script/config/src/schema/network/mod.d.ts +9 -0
- package/script/config/src/schema/network/mod.d.ts.map +1 -0
- package/script/config/src/schema/network/mod.js +24 -0
- package/script/config/src/schema/network/ntp.d.ts +32 -0
- package/script/config/src/schema/network/ntp.d.ts.map +1 -0
- package/script/config/src/schema/network/ntp.js +42 -0
- package/script/config/src/schema/network/substrate/avail.d.ts +14 -0
- package/script/config/src/schema/network/substrate/avail.d.ts.map +1 -0
- package/script/config/src/schema/network/substrate/avail.js +29 -0
- package/script/config/src/schema/network/substrate/common.d.ts +18 -0
- package/script/config/src/schema/network/substrate/common.d.ts.map +1 -0
- package/script/config/src/schema/network/substrate/common.js +35 -0
- package/script/config/src/schema/network/substrate/midnight.d.ts +20 -0
- package/script/config/src/schema/network/substrate/midnight.d.ts.map +1 -0
- package/script/config/src/schema/network/substrate/midnight.js +35 -0
- package/script/config/src/schema/network/substrate/mod.d.ts +4 -0
- package/script/config/src/schema/network/substrate/mod.d.ts.map +1 -0
- package/script/config/src/schema/network/substrate/mod.js +19 -0
- package/script/config/src/schema/network/types.d.ts +13 -0
- package/script/config/src/schema/network/types.d.ts.map +1 -0
- package/script/config/src/schema/network/types.js +16 -0
- package/script/config/src/schema/network/utils.d.ts +5 -0
- package/script/config/src/schema/network/utils.d.ts.map +1 -0
- package/script/config/src/schema/network/utils.js +76 -0
- package/script/config/src/schema/primitive/mod.d.ts +2 -0
- package/script/config/src/schema/primitive/mod.d.ts.map +1 -0
- package/script/config/src/schema/primitive/mod.js +17 -0
- package/script/config/src/schema/primitive/types.d.ts +58 -0
- package/script/config/src/schema/primitive/types.d.ts.map +1 -0
- package/script/config/src/schema/primitive/types.js +2 -0
- package/script/config/src/schema/sync-protocols/all.d.ts +583 -0
- package/script/config/src/schema/sync-protocols/all.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/all.js +62 -0
- package/script/config/src/schema/sync-protocols/avail/rpc.d.ts +76 -0
- package/script/config/src/schema/sync-protocols/avail/rpc.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/avail/rpc.js +59 -0
- package/script/config/src/schema/sync-protocols/bitcoin/rpc.d.ts +76 -0
- package/script/config/src/schema/sync-protocols/bitcoin/rpc.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/bitcoin/rpc.js +50 -0
- package/script/config/src/schema/sync-protocols/cardano/carp.d.ts +80 -0
- package/script/config/src/schema/sync-protocols/cardano/carp.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/cardano/carp.js +65 -0
- package/script/config/src/schema/sync-protocols/cardano/mod.d.ts +2 -0
- package/script/config/src/schema/sync-protocols/cardano/mod.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/cardano/mod.js +17 -0
- package/script/config/src/schema/sync-protocols/cardano/utxorpc.d.ts +56 -0
- package/script/config/src/schema/sync-protocols/cardano/utxorpc.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/cardano/utxorpc.js +59 -0
- package/script/config/src/schema/sync-protocols/common.d.ts +60 -0
- package/script/config/src/schema/sync-protocols/common.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/common.js +61 -0
- package/script/config/src/schema/sync-protocols/decorators/all.d.ts +17 -0
- package/script/config/src/schema/sync-protocols/decorators/all.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/decorators/all.js +12 -0
- package/script/config/src/schema/sync-protocols/decorators/emulated.d.ts +8 -0
- package/script/config/src/schema/sync-protocols/decorators/emulated.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/decorators/emulated.js +15 -0
- package/script/config/src/schema/sync-protocols/decorators/mod.d.ts +4 -0
- package/script/config/src/schema/sync-protocols/decorators/mod.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/decorators/mod.js +19 -0
- package/script/config/src/schema/sync-protocols/decorators/types.d.ts +4 -0
- package/script/config/src/schema/sync-protocols/decorators/types.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/decorators/types.js +7 -0
- package/script/config/src/schema/sync-protocols/evm/rpc.d.ts +68 -0
- package/script/config/src/schema/sync-protocols/evm/rpc.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/evm/rpc.js +47 -0
- package/script/config/src/schema/sync-protocols/midnight/graphql.d.ts +66 -0
- package/script/config/src/schema/sync-protocols/midnight/graphql.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/midnight/graphql.js +53 -0
- package/script/config/src/schema/sync-protocols/mina/graphql.d.ts +73 -0
- package/script/config/src/schema/sync-protocols/mina/graphql.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/mina/graphql.js +62 -0
- package/script/config/src/schema/sync-protocols/mod.d.ts +10 -0
- package/script/config/src/schema/sync-protocols/mod.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/mod.js +25 -0
- package/script/config/src/schema/sync-protocols/ntp/rpc.d.ts +45 -0
- package/script/config/src/schema/sync-protocols/ntp/rpc.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/ntp/rpc.js +36 -0
- package/script/config/src/schema/sync-protocols/types.d.ts +125 -0
- package/script/config/src/schema/sync-protocols/types.d.ts.map +1 -0
- package/script/config/src/schema/sync-protocols/types.js +25 -0
- package/script/config/src/schema/utils.d.ts +53 -0
- package/script/config/src/schema/utils.d.ts.map +1 -0
- package/script/config/src/schema/utils.js +62 -0
- package/script/events/src/app-events.d.ts +65 -0
- package/script/events/src/app-events.d.ts.map +1 -0
- package/script/events/src/app-events.js +62 -0
- package/script/events/src/asyncapi.d.ts +1173 -0
- package/script/events/src/asyncapi.d.ts.map +1 -0
- package/script/events/src/asyncapi.js +8 -0
- package/script/events/src/builtin-event-utils.d.ts +5 -0
- package/script/events/src/builtin-event-utils.d.ts.map +1 -0
- package/script/events/src/builtin-event-utils.js +63 -0
- package/script/events/src/builtin-events.d.ts +106 -0
- package/script/events/src/builtin-events.d.ts.map +1 -0
- package/script/events/src/builtin-events.js +204 -0
- package/script/events/src/event-connect.d.ts +15 -0
- package/script/events/src/event-connect.d.ts.map +1 -0
- package/script/events/src/event-connect.js +82 -0
- package/script/events/src/event-manager.d.ts +54 -0
- package/script/events/src/event-manager.d.ts.map +1 -0
- package/script/events/src/event-manager.js +133 -0
- package/script/events/src/evm.d.ts +6 -0
- package/script/events/src/evm.d.ts.map +1 -0
- package/script/events/src/evm.js +59 -0
- package/script/events/src/mod.d.ts +10 -0
- package/script/events/src/mod.d.ts.map +1 -0
- package/script/events/src/mod.js +25 -0
- package/script/events/src/types.d.ts +255 -0
- package/script/events/src/types.d.ts.map +1 -0
- package/script/events/src/types.js +111 -0
- package/script/events/src/utils.d.ts +16 -0
- package/script/events/src/utils.d.ts.map +1 -0
- package/script/events/src/utils.js +98 -0
- package/script/package.json +3 -0
- package/script/utils/src/binary-search.d.ts +7 -0
- package/script/utils/src/binary-search.d.ts.map +1 -0
- package/script/utils/src/binary-search.js +41 -0
- package/script/utils/src/captcha.d.ts +9 -0
- package/script/utils/src/captcha.d.ts.map +1 -0
- package/script/utils/src/captcha.js +22 -0
- package/script/utils/src/concurrency/condVar.d.ts +25 -0
- package/script/utils/src/concurrency/condVar.d.ts.map +1 -0
- package/script/utils/src/concurrency/condVar.js +42 -0
- package/script/utils/src/concurrency/latch.d.ts +25 -0
- package/script/utils/src/concurrency/latch.d.ts.map +1 -0
- package/script/utils/src/concurrency/latch.js +54 -0
- package/script/utils/src/concurrency/mod.d.ts +5 -0
- package/script/utils/src/concurrency/mod.d.ts.map +1 -0
- package/script/utils/src/concurrency/mod.js +20 -0
- package/script/utils/src/concurrency/retry.d.ts +14 -0
- package/script/utils/src/concurrency/retry.d.ts.map +1 -0
- package/script/utils/src/concurrency/retry.js +30 -0
- package/script/utils/src/concurrency/utils.d.ts +27 -0
- package/script/utils/src/concurrency/utils.d.ts.map +1 -0
- package/script/utils/src/concurrency/utils.js +30 -0
- package/script/utils/src/constants.d.ts +4 -0
- package/script/utils/src/constants.d.ts.map +1 -0
- package/script/utils/src/constants.js +12 -0
- package/script/utils/src/decorators/bound.d.ts +10 -0
- package/script/utils/src/decorators/bound.d.ts.map +1 -0
- package/script/utils/src/decorators/bound.js +20 -0
- package/script/utils/src/decorators/mod.d.ts +2 -0
- package/script/utils/src/decorators/mod.d.ts.map +1 -0
- package/script/utils/src/decorators/mod.js +17 -0
- package/script/utils/src/mod.d.ts +8 -0
- package/script/utils/src/mod.d.ts.map +1 -0
- package/script/utils/src/mod.js +23 -0
- package/script/utils/src/types/json-query.d.ts +30 -0
- package/script/utils/src/types/json-query.d.ts.map +1 -0
- package/script/utils/src/types/json-query.js +2 -0
- package/script/utils/src/types/misc.d.ts +109 -0
- package/script/utils/src/types/misc.d.ts.map +1 -0
- package/script/utils/src/types/misc.js +3 -0
- package/script/utils/src/types/mod.d.ts +7 -0
- package/script/utils/src/types/mod.d.ts.map +1 -0
- package/script/utils/src/types/mod.js +19 -0
- package/script/utils/src/types/nominal.d.ts +87 -0
- package/script/utils/src/types/nominal.d.ts.map +1 -0
- package/script/utils/src/types/nominal.js +2 -0
- package/script/utils/src/types/typebox-helpers.d.ts +183 -0
- package/script/utils/src/types/typebox-helpers.d.ts.map +1 -0
- package/script/utils/src/types/typebox-helpers.js +277 -0
- package/script/utils/src/types/utils.d.ts +37 -0
- package/script/utils/src/types/utils.d.ts.map +1 -0
- package/script/utils/src/types/utils.js +52 -0
- package/script/utils/src/types/validators/algorand.d.ts +31 -0
- package/script/utils/src/types/validators/algorand.d.ts.map +1 -0
- package/script/utils/src/types/validators/algorand.js +98 -0
- package/script/utils/src/types/validators/cardano.d.ts +26 -0
- package/script/utils/src/types/validators/cardano.d.ts.map +1 -0
- package/script/utils/src/types/validators/cardano.js +121 -0
- package/script/utils/src/types/validators/mina.d.ts +15 -0
- package/script/utils/src/types/validators/mina.d.ts.map +1 -0
- package/script/utils/src/types/validators/mina.js +51 -0
- package/script/utils/src/types/validators/minicbor.d.ts +98 -0
- package/script/utils/src/types/validators/minicbor.d.ts.map +1 -0
- package/script/utils/src/types/validators/minicbor.js +337 -0
- package/script/utils/src/types/validators/mod.d.ts +3 -0
- package/script/utils/src/types/validators/mod.d.ts.map +1 -0
- package/script/utils/src/types/validators/mod.js +18 -0
- package/script/utils/src/types/validators/utils.d.ts +6 -0
- package/script/utils/src/types/validators/utils.d.ts.map +1 -0
- package/script/utils/src/types/validators/utils.js +31 -0
- package/script/utils/src/viem.d.ts +6 -0
- package/script/utils/src/viem.d.ts.map +1 -0
- package/script/utils/src/viem.js +19 -0
- package/script/wallets/src/IProvider.d.ts +48 -0
- package/script/wallets/src/IProvider.d.ts.map +1 -0
- package/script/wallets/src/IProvider.js +10 -0
- package/script/wallets/src/avail/avail.d.ts +28 -0
- package/script/wallets/src/avail/avail.d.ts.map +1 -0
- package/script/wallets/src/avail/avail.js +70 -0
- package/script/wallets/src/avail/wrapper.d.ts +6 -0
- package/script/wallets/src/avail/wrapper.d.ts.map +1 -0
- package/script/wallets/src/avail/wrapper.js +34 -0
- package/script/wallets/src/cardano/cardano.d.ts +30 -0
- package/script/wallets/src/cardano/cardano.d.ts.map +1 -0
- package/script/wallets/src/cardano/cardano.js +163 -0
- package/script/wallets/src/cardano/wrapper.d.ts +7 -0
- package/script/wallets/src/cardano/wrapper.d.ts.map +1 -0
- package/script/wallets/src/cardano/wrapper.js +26 -0
- package/script/wallets/src/evm/ethers.d.ts +28 -0
- package/script/wallets/src/evm/ethers.d.ts.map +1 -0
- package/script/wallets/src/evm/ethers.js +84 -0
- package/script/wallets/src/evm/injected.d.ts +74 -0
- package/script/wallets/src/evm/injected.d.ts.map +1 -0
- package/script/wallets/src/evm/injected.js +360 -0
- package/script/wallets/src/evm/types.d.ts +3 -0
- package/script/wallets/src/evm/types.d.ts.map +1 -0
- package/script/wallets/src/evm/types.js +4 -0
- package/script/wallets/src/evm/wrapper-ethers.d.ts +6 -0
- package/script/wallets/src/evm/wrapper-ethers.d.ts.map +1 -0
- package/script/wallets/src/evm/wrapper-ethers.js +41 -0
- package/script/wallets/src/evm/wrapper-injected.d.ts +7 -0
- package/script/wallets/src/evm/wrapper-injected.d.ts.map +1 -0
- package/script/wallets/src/evm/wrapper-injected.js +84 -0
- package/script/wallets/src/midnight/midnight.d.ts +26 -0
- package/script/wallets/src/midnight/midnight.d.ts.map +1 -0
- package/script/wallets/src/midnight/midnight.js +117 -0
- package/script/wallets/src/midnight/wrapper.d.ts +7 -0
- package/script/wallets/src/midnight/wrapper.d.ts.map +1 -0
- package/script/wallets/src/midnight/wrapper.js +26 -0
- package/script/wallets/src/mina/mina.d.ts +28 -0
- package/script/wallets/src/mina/mina.d.ts.map +1 -0
- package/script/wallets/src/mina/mina.js +138 -0
- package/script/wallets/src/mina/wrapper.d.ts +6 -0
- package/script/wallets/src/mina/wrapper.d.ts.map +1 -0
- package/script/wallets/src/mina/wrapper.js +15 -0
- package/script/wallets/src/mod.d.ts +8 -0
- package/script/wallets/src/mod.d.ts.map +1 -0
- package/script/wallets/src/mod.js +26 -0
- package/script/wallets/src/paima.d.ts +104 -0
- package/script/wallets/src/paima.d.ts.map +1 -0
- package/script/wallets/src/paima.js +253 -0
- package/script/wallets/src/types.d.ts +49 -0
- package/script/wallets/src/types.d.ts.map +1 -0
- package/script/wallets/src/types.js +2 -0
- package/script/wallets/src/utils.d.ts +41 -0
- package/script/wallets/src/utils.d.ts.map +1 -0
- package/script/wallets/src/utils.js +81 -0
- package/script/wallets/src/wallet-modes.d.ts +49 -0
- package/script/wallets/src/wallet-modes.d.ts.map +1 -0
- package/script/wallets/src/wallet-modes.js +29 -0
- package/script/wallets/src/wallets.d.ts +5 -0
- package/script/wallets/src/wallets.d.ts.map +1 -0
- package/script/wallets/src/wallets.js +58 -0
- package/script/wallets/src/windows.d.ts +5 -0
- package/script/wallets/src/windows.d.ts.map +1 -0
- package/script/wallets/src/windows.js +12 -0
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
import { FormatRegistry, Type } from "@sinclair/typebox";
|
|
2
|
+
import { Value, ValueErrorType } from "@sinclair/typebox/value";
|
|
3
|
+
import * as ss58 from "@subsquid/ss58-codec";
|
|
4
|
+
import bs58check from "bs58check";
|
|
5
|
+
import { bech32 } from "bech32";
|
|
6
|
+
import { verifyAlgorandAddress, verifyAlgorandBlockHash, verifyAlgorandTransactionHash, } from "./validators/algorand.js";
|
|
7
|
+
import { verifyMinaAddress, verifyMinaBlockHash, verifyMinaTransactionHash, } from "./validators/mina.js";
|
|
8
|
+
import { verifyCardanoByronAddress, verifyCardanoShelleyAddress, } from "./validators/cardano.js";
|
|
9
|
+
// IMPORTANT
|
|
10
|
+
// These types are used in the on-chain messages.
|
|
11
|
+
// Do not change or reuse the numeric values.
|
|
12
|
+
export var AddressType;
|
|
13
|
+
(function (AddressType) {
|
|
14
|
+
AddressType[AddressType["NONE"] = -1] = "NONE";
|
|
15
|
+
AddressType[AddressType["EVM"] = 0] = "EVM";
|
|
16
|
+
AddressType[AddressType["CARDANO"] = 1] = "CARDANO";
|
|
17
|
+
AddressType[AddressType["SUBSTRATE"] = 2] = "SUBSTRATE";
|
|
18
|
+
AddressType[AddressType["ALGORAND"] = 3] = "ALGORAND";
|
|
19
|
+
AddressType[AddressType["MINA"] = 4] = "MINA";
|
|
20
|
+
AddressType[AddressType["MIDNIGHT"] = 5] = "MIDNIGHT";
|
|
21
|
+
AddressType[AddressType["AVAIL"] = 6] = "AVAIL";
|
|
22
|
+
AddressType[AddressType["POLKADOT"] = 7] = "POLKADOT";
|
|
23
|
+
})(AddressType || (AddressType = {}));
|
|
24
|
+
function tryDecode(val, validator, checkResult = () => true) {
|
|
25
|
+
try {
|
|
26
|
+
return checkResult(validator(val));
|
|
27
|
+
}
|
|
28
|
+
catch (e) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
FormatRegistry.Set("algorand-address", (val) => tryDecode(val, verifyAlgorandAddress));
|
|
33
|
+
FormatRegistry.Set("algorand-blockhash", (val) => tryDecode(val, verifyAlgorandBlockHash));
|
|
34
|
+
FormatRegistry.Set("algorand-txid", (val) => tryDecode(val, verifyAlgorandTransactionHash));
|
|
35
|
+
FormatRegistry.Set("mina-address", (val) => tryDecode(val, verifyMinaAddress));
|
|
36
|
+
FormatRegistry.Set("mina-blockhash", (val) => tryDecode(val, verifyMinaBlockHash));
|
|
37
|
+
FormatRegistry.Set("mina-txid", (val) => tryDecode(val, verifyMinaTransactionHash));
|
|
38
|
+
FormatRegistry.Set("cardano-address", (val) => tryDecode(val, verifyCardanoByronAddress) ||
|
|
39
|
+
tryDecode(val, verifyCardanoShelleyAddress));
|
|
40
|
+
FormatRegistry.Set("ss58", (val) => tryDecode(val, ss58.decode));
|
|
41
|
+
FormatRegistry.Set("bs58check", (val) => tryDecode(val, bs58check.decode));
|
|
42
|
+
FormatRegistry.Set("bech32", (val) =>
|
|
43
|
+
// note: increase max bech32 limit since some cryptocurrencies need it
|
|
44
|
+
tryDecode(val, (val) => bech32.decode(val, Number.MAX_SAFE_INTEGER / 2)));
|
|
45
|
+
function forceLowercase(schema) {
|
|
46
|
+
return Type.Transform(schema)
|
|
47
|
+
.Decode((value) => value.toLowerCase())
|
|
48
|
+
.Encode((value) => value.toLowerCase());
|
|
49
|
+
}
|
|
50
|
+
function forceUppercase(schema) {
|
|
51
|
+
return Type.Transform(schema)
|
|
52
|
+
.Decode((value) => value.toUpperCase())
|
|
53
|
+
.Encode((value) => value.toUpperCase());
|
|
54
|
+
}
|
|
55
|
+
export const TypeboxHelpers = {
|
|
56
|
+
Uint256: Type.Transform(Type.BigInt({
|
|
57
|
+
maximum: 115792089237316195423570985008687907853269984665640564039457584007913129639935n,
|
|
58
|
+
minimum: 0n,
|
|
59
|
+
}))
|
|
60
|
+
.Decode((value) => value.toString())
|
|
61
|
+
.Encode((value) => BigInt(value)),
|
|
62
|
+
BlockNumber: (options) => Type.Unsafe(Type.Number(options)),
|
|
63
|
+
AbsoluteSlotNumber: (options) => Type.Unsafe(Type.Number(options)),
|
|
64
|
+
EpochNumber: (options) => Type.Unsafe(Type.Number(options)),
|
|
65
|
+
Algorand: {
|
|
66
|
+
BlockHash: Type.Unsafe(Type.String({ format: "algorand-blockhash" })),
|
|
67
|
+
TxHash: Type.Unsafe(forceUppercase(Type.String({ format: "algorand-txid" }))),
|
|
68
|
+
Address: Type.Unsafe(forceUppercase(Type.String({ format: "algorand-address" }))),
|
|
69
|
+
},
|
|
70
|
+
Substrate: {
|
|
71
|
+
Address: Type.Unsafe(Type.String({ format: "ss58" })),
|
|
72
|
+
},
|
|
73
|
+
Avail: {
|
|
74
|
+
BlockHash: Type.Unsafe(forceLowercase(Type.RegExp(/^0x[a-fA-F0-9]{64}$/))),
|
|
75
|
+
Address: Type.Unsafe(Type.String({ format: "ss58" })),
|
|
76
|
+
// recall: no good concept of tx hash on Substrate chains
|
|
77
|
+
},
|
|
78
|
+
Cardano: {
|
|
79
|
+
BlockHash: Type.Unsafe(forceLowercase(Type.RegExp(/^[a-fA-F0-9]{64}$/))),
|
|
80
|
+
TxHash: Type.Unsafe(forceLowercase(Type.RegExp(/^[a-fA-F0-9]{64}$/))),
|
|
81
|
+
// TODO: this fails on Byron-era addresses
|
|
82
|
+
Address: Type.Unsafe(Type.String({ format: "cardano-address" })),
|
|
83
|
+
Credential: Type.Unsafe(forceLowercase(Type.RegExp(/^[a-fA-F0-9]{64}$/))),
|
|
84
|
+
// TODO: there are two common poolIDs. regex, and poolID bech32
|
|
85
|
+
PoolId: Type.Unsafe(forceLowercase(Type.String())),
|
|
86
|
+
PolicyId: Type.Unsafe(forceLowercase(Type.RegExp(/^[a-fA-F0-9]{56}$/))),
|
|
87
|
+
AssetName: Type.Unsafe(forceLowercase(Type.RegExp(/^[a-fA-F0-9]{64}$/))),
|
|
88
|
+
// TODO: bech32
|
|
89
|
+
Cip14Fingerprint: Type.Unsafe(Type.String()),
|
|
90
|
+
AmountLovelace: Type.Unsafe(Type.RegExp(/^\d+$/)),
|
|
91
|
+
},
|
|
92
|
+
Evm: {
|
|
93
|
+
BlockHash: Type.Unsafe(forceLowercase(Type.RegExp(/^0x[a-fA-F0-9]{64}$/))),
|
|
94
|
+
TxHash: Type.Unsafe(forceLowercase(Type.RegExp(/^0x[a-fA-F0-9]{64}$/))),
|
|
95
|
+
Address: Type.Unsafe(forceLowercase(Type.RegExp(/^0x[a-fA-F0-9]{40}$/))),
|
|
96
|
+
Selector: Type.Unsafe(forceLowercase(Type.RegExp(/^0x[a-fA-F0-9]{8}$/))),
|
|
97
|
+
FullSelector: Type.Unsafe(forceLowercase(Type.RegExp(/^0x[a-fA-F0-9]{64}$/))),
|
|
98
|
+
Signature: Type.Unsafe(Type.RegExp(/^0x[a-fA-F0-9]{130}$/)),
|
|
99
|
+
PrivateKey: Type.Unsafe(Type.RegExp(/^0x[a-fA-F0-9]{64}$/)),
|
|
100
|
+
},
|
|
101
|
+
Midnight: {
|
|
102
|
+
BlockHash: Type.Unsafe(forceLowercase(Type.RegExp(/^0x[a-fA-F0-9]{64}$/))),
|
|
103
|
+
TxHash: Type.Unsafe(forceLowercase(Type.RegExp(/^0x[a-fA-F0-9]{64}$/))),
|
|
104
|
+
Address: Type.Unsafe(forceLowercase(Type.RegExp(/^[a-fA-F0-9]{181}$/))),
|
|
105
|
+
},
|
|
106
|
+
Mina: {
|
|
107
|
+
BlockHash: Type.Unsafe(Type.String({ format: "mina-blockhash" })),
|
|
108
|
+
TxHash: Type.Unsafe(Type.String({ format: "mina-txid" })),
|
|
109
|
+
Address: Type.Unsafe(Type.String({ format: "mina-address" })),
|
|
110
|
+
},
|
|
111
|
+
// TODO THIS IS WRONG TYPE - ONLY A PLACEHOLDER
|
|
112
|
+
Polkadot: {
|
|
113
|
+
BlockHash: Type.Unsafe(Type.String({ format: "mina-blockhash" })),
|
|
114
|
+
TxHash: Type.Unsafe(Type.String({ format: "mina-txid" })),
|
|
115
|
+
Address: Type.Unsafe(Type.String({ format: "mina-address" })),
|
|
116
|
+
},
|
|
117
|
+
Caip2: Type.Unsafe(Type.String()),
|
|
118
|
+
WalletAddress: () => Type.Union(AddressTypebox),
|
|
119
|
+
IntervalMs: (options) => Type.Unsafe(Type.Number(options)),
|
|
120
|
+
IntervalSec: (options) => Type.Unsafe(Type.Number(options)),
|
|
121
|
+
TimestampMs: (options) => Type.Unsafe(Type.Number(options)),
|
|
122
|
+
TimestampMsStr: Type.Unsafe(Type.RegExp(/^\d+$/)),
|
|
123
|
+
HexString0x: (options) => Type.Unsafe(Type.RegExp(/^0x[a-fA-F0-9]+$/, options)),
|
|
124
|
+
HexStringNo0x: (options) => Type.Unsafe(Type.RegExp(/^[a-fA-F0-9]+$/, options)),
|
|
125
|
+
UnknownFormat: Type.Unsafe(Type.String()),
|
|
126
|
+
Lowercase: forceLowercase(Type.String()),
|
|
127
|
+
TrueOrFalse: Type.Transform(Type.Union([Type.Literal("T"), Type.Literal("F")]))
|
|
128
|
+
.Decode((value) => value === "T")
|
|
129
|
+
.Encode((value) => (value ? "T" : "F")),
|
|
130
|
+
Nullable: (schema, options) => Type.Union([schema, Type.Null()], options),
|
|
131
|
+
SerializeObjAsJson: () => Type.Transform(Type.Unsafe(Type.Any()))
|
|
132
|
+
.Decode((x) => JSON.stringify(x))
|
|
133
|
+
.Encode((x) => JSON.parse(x)),
|
|
134
|
+
SerializeJsonAsObj: (schema) => Type.Transform(schema)
|
|
135
|
+
.Decode((x) => JSON.parse(x))
|
|
136
|
+
.Encode((x) => JSON.stringify(x)),
|
|
137
|
+
// TODO: maybe improve with a typebox-specific EVM ABI wrapper
|
|
138
|
+
// abitype library comes with a ZOD verifier, and that can be ported to typebox
|
|
139
|
+
EvmAbiEvent: Type.Unsafe(Type.Any()),
|
|
140
|
+
};
|
|
141
|
+
export const AddressValidator = {
|
|
142
|
+
[AddressType.NONE]: Type.Literal("0x0"),
|
|
143
|
+
[AddressType.EVM]: TypeboxHelpers.Evm.Address,
|
|
144
|
+
[AddressType.CARDANO]: TypeboxHelpers.Cardano.Address,
|
|
145
|
+
[AddressType.SUBSTRATE]: TypeboxHelpers.Substrate.Address,
|
|
146
|
+
[AddressType.AVAIL]: TypeboxHelpers.Avail.Address,
|
|
147
|
+
[AddressType.ALGORAND]: TypeboxHelpers.Algorand.Address,
|
|
148
|
+
[AddressType.MINA]: TypeboxHelpers.Mina.Address,
|
|
149
|
+
[AddressType.MIDNIGHT]: TypeboxHelpers.Midnight.Address,
|
|
150
|
+
[AddressType.POLKADOT]: TypeboxHelpers.Polkadot.Address,
|
|
151
|
+
};
|
|
152
|
+
export const AddressTypebox = [
|
|
153
|
+
Type.Object({
|
|
154
|
+
type: Type.Literal(AddressType.NONE),
|
|
155
|
+
address: Type.Literal("0x0"),
|
|
156
|
+
}),
|
|
157
|
+
Type.Object({
|
|
158
|
+
type: Type.Literal(AddressType.EVM),
|
|
159
|
+
address: TypeboxHelpers.Evm.Address,
|
|
160
|
+
}),
|
|
161
|
+
Type.Object({
|
|
162
|
+
type: Type.Literal(AddressType.CARDANO),
|
|
163
|
+
address: TypeboxHelpers.Cardano.Address,
|
|
164
|
+
}),
|
|
165
|
+
Type.Object({
|
|
166
|
+
type: Type.Literal(AddressType.SUBSTRATE),
|
|
167
|
+
address: TypeboxHelpers.Substrate.Address,
|
|
168
|
+
}),
|
|
169
|
+
Type.Object({
|
|
170
|
+
type: Type.Literal(AddressType.AVAIL),
|
|
171
|
+
address: TypeboxHelpers.Avail.Address,
|
|
172
|
+
}),
|
|
173
|
+
Type.Object({
|
|
174
|
+
type: Type.Literal(AddressType.ALGORAND),
|
|
175
|
+
address: TypeboxHelpers.Algorand.Address,
|
|
176
|
+
}),
|
|
177
|
+
Type.Object({
|
|
178
|
+
type: Type.Literal(AddressType.MINA),
|
|
179
|
+
address: TypeboxHelpers.Mina.Address,
|
|
180
|
+
}),
|
|
181
|
+
Type.Object({
|
|
182
|
+
type: Type.Literal(AddressType.MIDNIGHT),
|
|
183
|
+
address: TypeboxHelpers.Midnight.Address,
|
|
184
|
+
}),
|
|
185
|
+
Type.Object({
|
|
186
|
+
type: Type.Literal(AddressType.POLKADOT),
|
|
187
|
+
address: TypeboxHelpers.Polkadot.Address,
|
|
188
|
+
}),
|
|
189
|
+
];
|
|
190
|
+
true;
|
|
191
|
+
export function checkOrError(name, structure, config) {
|
|
192
|
+
// 1) Check if there are any errors since Value.Decode doesn't give error messages
|
|
193
|
+
{
|
|
194
|
+
const errors = Array.from(Value.Errors(structure, config)).filter(
|
|
195
|
+
// there are many useless errors in this library
|
|
196
|
+
// ex: 1st error: "foo" should be "bar" in struct Foo
|
|
197
|
+
// 2nd error: struct Foo is invalid inside struct Config
|
|
198
|
+
// in this case, the 2nd error is useless as we only care about the 1st error
|
|
199
|
+
// However, we always want to show the error if for some reason it's the only error
|
|
200
|
+
(error) => error.type !== ValueErrorType.Intersect &&
|
|
201
|
+
error.type !== ValueErrorType.Union);
|
|
202
|
+
for (const error of errors) {
|
|
203
|
+
console.error({
|
|
204
|
+
name: name ?? "Schema root",
|
|
205
|
+
path: error.path,
|
|
206
|
+
valueProvided: error.value,
|
|
207
|
+
message: error.message,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
if (errors.length > 1) {
|
|
211
|
+
throw new Error(`Schema field missing or invalid. See above for error.`);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
const decoded = Value.Decode(structure, config);
|
|
215
|
+
return decoded;
|
|
216
|
+
}
|
|
217
|
+
export function pick(keys) {
|
|
218
|
+
return {
|
|
219
|
+
from: (obj) => {
|
|
220
|
+
const result = [];
|
|
221
|
+
for (const key of keys) {
|
|
222
|
+
result.push([key, obj.properties[key]]);
|
|
223
|
+
}
|
|
224
|
+
return result;
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Same as `pick`, but requires that you include ALL properties and not just a subset of them
|
|
230
|
+
*/
|
|
231
|
+
export function pickAll(keys) {
|
|
232
|
+
return {
|
|
233
|
+
from: (obj) => pick(keys).from(obj),
|
|
234
|
+
};
|
|
235
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { HexString0x, HexStringNo0x } from "./nominal.js";
|
|
2
|
+
export type Json = null | boolean | number | string | Json[] | {
|
|
3
|
+
[key: string]: Json;
|
|
4
|
+
};
|
|
5
|
+
/**
|
|
6
|
+
* This is a patch for a limitation in Typescript
|
|
7
|
+
* When writing functions with return types that are conditional (ex: (): T extends ... ? Foo : Bar
|
|
8
|
+
* It can't easily know type narrowing in function body leads to satisfying return type constraints
|
|
9
|
+
*
|
|
10
|
+
* Typically, this is solved by using an `as` when using `return`:
|
|
11
|
+
* ```
|
|
12
|
+
* function foo<T>(foo: T): Result<T> {
|
|
13
|
+
* if (foo === ...) {
|
|
14
|
+
* return { ... } as Result<T>; // we have to cast (`as`) to make it work
|
|
15
|
+
* }
|
|
16
|
+
* }
|
|
17
|
+
* ```
|
|
18
|
+
* but this loses some type safety (in hides any error in the `{ ... }`
|
|
19
|
+
*
|
|
20
|
+
* To solve this, this function checks that
|
|
21
|
+
* the input is valid for *some* instance of the generic
|
|
22
|
+
* and then casts it to a more general instance
|
|
23
|
+
*
|
|
24
|
+
* TODO: we can probably delete this once Typescript 5.8 is released
|
|
25
|
+
* https://github.com/microsoft/TypeScript/pull/56941
|
|
26
|
+
*/
|
|
27
|
+
export declare function narrowResult<const General, const Input extends General, const Output extends General>(result: Input): Output;
|
|
28
|
+
export declare function strip0x(str: string): HexStringNo0x;
|
|
29
|
+
export declare function add0x(str: string): HexString0x;
|
|
30
|
+
/**
|
|
31
|
+
* Typed version of Object.keys()
|
|
32
|
+
*
|
|
33
|
+
* careful: this is dangerous.
|
|
34
|
+
* Only use when you're sure there are no other key types added dynamically
|
|
35
|
+
*/
|
|
36
|
+
export declare function keysOf<Key extends number | string>(obj: Record<Key, unknown>): Key[];
|
|
37
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/utils/src/types/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAE/D,MAAM,MAAM,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,EAAE,GAAG;IAC7D,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAC1B,KAAK,CAAC,OAAO,EACb,KAAK,CAAC,KAAK,SAAS,OAAO,EAC3B,KAAK,CAAC,MAAM,SAAS,OAAO,EAC5B,MAAM,EAAE,KAAK,GAAG,MAAM,CAEvB;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,aAAa,CAKlD;AACD,wBAAgB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAK9C;AAED;;;;;GAKG;AACH,wBAAgB,MAAM,CAAC,GAAG,SAAS,MAAM,GAAG,MAAM,EAChD,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,GACxB,GAAG,EAAE,CAEP"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is a patch for a limitation in Typescript
|
|
3
|
+
* When writing functions with return types that are conditional (ex: (): T extends ... ? Foo : Bar
|
|
4
|
+
* It can't easily know type narrowing in function body leads to satisfying return type constraints
|
|
5
|
+
*
|
|
6
|
+
* Typically, this is solved by using an `as` when using `return`:
|
|
7
|
+
* ```
|
|
8
|
+
* function foo<T>(foo: T): Result<T> {
|
|
9
|
+
* if (foo === ...) {
|
|
10
|
+
* return { ... } as Result<T>; // we have to cast (`as`) to make it work
|
|
11
|
+
* }
|
|
12
|
+
* }
|
|
13
|
+
* ```
|
|
14
|
+
* but this loses some type safety (in hides any error in the `{ ... }`
|
|
15
|
+
*
|
|
16
|
+
* To solve this, this function checks that
|
|
17
|
+
* the input is valid for *some* instance of the generic
|
|
18
|
+
* and then casts it to a more general instance
|
|
19
|
+
*
|
|
20
|
+
* TODO: we can probably delete this once Typescript 5.8 is released
|
|
21
|
+
* https://github.com/microsoft/TypeScript/pull/56941
|
|
22
|
+
*/
|
|
23
|
+
export function narrowResult(result) {
|
|
24
|
+
return result;
|
|
25
|
+
}
|
|
26
|
+
export function strip0x(str) {
|
|
27
|
+
if (str.startsWith("0x")) {
|
|
28
|
+
return str.substring(2);
|
|
29
|
+
}
|
|
30
|
+
return str;
|
|
31
|
+
}
|
|
32
|
+
export function add0x(str) {
|
|
33
|
+
if (str.startsWith("0x")) {
|
|
34
|
+
return str;
|
|
35
|
+
}
|
|
36
|
+
return `0x${str}`;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Typed version of Object.keys()
|
|
40
|
+
*
|
|
41
|
+
* careful: this is dangerous.
|
|
42
|
+
* Only use when you're sure there are no other key types added dynamically
|
|
43
|
+
*/
|
|
44
|
+
export function keysOf(obj) {
|
|
45
|
+
return Object.keys(obj);
|
|
46
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Taken from https://github.com/algorand/js-algorand-sdk/blob/6973ff583b243ddb0632e91f4c0383021430a789/src/encoding/address.ts#L88
|
|
3
|
+
*
|
|
4
|
+
* For regular addresses,
|
|
5
|
+
* base32 encoding of a 32-byte ed25519 public key and a 4-byte checksum (the last 4 bytes of the SHA-512/256 hash of the public key)
|
|
6
|
+
* For multisig addresses,
|
|
7
|
+
* instead of a 32-byte public key, it’s the hash of some fields that specify the details of the multisig account.
|
|
8
|
+
* more specifically, it’s the SHA-512/256 hash of (a version byte, a threshold, and the public keys of all possible signers).
|
|
9
|
+
* The checksum is computed the same way as for regular addresses.
|
|
10
|
+
*
|
|
11
|
+
* Example address: JY2FRXQP7Q6SYH7QE2HF2XWNE644V6KUH3PYC4SYWPUSEATTDJSNUHMHR4
|
|
12
|
+
*/
|
|
13
|
+
export declare function verifyAlgorandAddress(address: string): boolean;
|
|
14
|
+
/**
|
|
15
|
+
* Note: strangely, there are 3 common ways to encode Algorand block hashes
|
|
16
|
+
* 1. (rpc) base64
|
|
17
|
+
* 2. (algokit json) blk-${base32} (stripping padding)
|
|
18
|
+
* 3. (msgpck) base32 (unsure about padding)
|
|
19
|
+
*
|
|
20
|
+
* Example block hash: 3KYSrPgi16Cl3iLu3r+GaeZkBBrgNFbMB60jsrJtTdI=
|
|
21
|
+
*/
|
|
22
|
+
export declare function verifyAlgorandBlockHash(hash: string): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Taken from https://github.com/algorand/js-algorand-sdk/blob/6973ff583b243ddb0632e91f4c0383021430a789/src/transaction.ts#L1102
|
|
25
|
+
*
|
|
26
|
+
* base32 string encoding (stripping padding) of a "rawTxId" (SHA512/256 digest)
|
|
27
|
+
*
|
|
28
|
+
* Example tx hash: IJFAHCDFJ25GBPPNXXZ67KR2IQMZ5XGMAFWCKXIETKY6WV4OR6YQ
|
|
29
|
+
*/
|
|
30
|
+
export declare function verifyAlgorandTransactionHash(hash: string): boolean;
|
|
31
|
+
//# sourceMappingURL=algorand.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"algorand.d.ts","sourceRoot":"","sources":["../../../../../src/utils/src/types/validators/algorand.ts"],"names":[],"mappings":"AA2BA;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAiC9D;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAY7D;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASnE"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import base32 from "hi-base32";
|
|
2
|
+
import sha512 from "js-sha512";
|
|
3
|
+
import { Base64 } from "js-base64";
|
|
4
|
+
import { CHECKSUM_ERROR_MSG, MALFORMED_ERROR_MSG } from "./utils.js";
|
|
5
|
+
const BLOCK_HASH_BYTE_LENGTH = 32;
|
|
6
|
+
const TX_ID_BYTE_LENGTH = 32;
|
|
7
|
+
const ADDRESS_BYTE_LENGTH = 36;
|
|
8
|
+
const CHECKSUM_BYTE_LENGTH = 4;
|
|
9
|
+
const ADDRESS_LENGTH = 58;
|
|
10
|
+
const HASH_BYTES_LENGTH = 32;
|
|
11
|
+
const PUBLIC_KEY_LENGTH = 32;
|
|
12
|
+
const MALFORMED_BLOCK_HASH_ERROR_MSG = MALFORMED_ERROR_MSG("block hash");
|
|
13
|
+
const MALFORMED_TX_ID_ERROR_MSG = MALFORMED_ERROR_MSG("tx id");
|
|
14
|
+
const MALFORMED_ADDRESS_ERROR_MSG = MALFORMED_ERROR_MSG("address");
|
|
15
|
+
const CHECKSUM_ADDRESS_ERROR_MSG = CHECKSUM_ERROR_MSG("address");
|
|
16
|
+
function checksumFromPublicKey(pk) {
|
|
17
|
+
return Uint8Array.from(sha512.sha512_256.array(pk).slice(HASH_BYTES_LENGTH - CHECKSUM_BYTE_LENGTH, HASH_BYTES_LENGTH));
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Taken from https://github.com/algorand/js-algorand-sdk/blob/6973ff583b243ddb0632e91f4c0383021430a789/src/encoding/address.ts#L88
|
|
21
|
+
*
|
|
22
|
+
* For regular addresses,
|
|
23
|
+
* base32 encoding of a 32-byte ed25519 public key and a 4-byte checksum (the last 4 bytes of the SHA-512/256 hash of the public key)
|
|
24
|
+
* For multisig addresses,
|
|
25
|
+
* instead of a 32-byte public key, it’s the hash of some fields that specify the details of the multisig account.
|
|
26
|
+
* more specifically, it’s the SHA-512/256 hash of (a version byte, a threshold, and the public keys of all possible signers).
|
|
27
|
+
* The checksum is computed the same way as for regular addresses.
|
|
28
|
+
*
|
|
29
|
+
* Example address: JY2FRXQP7Q6SYH7QE2HF2XWNE644V6KUH3PYC4SYWPUSEATTDJSNUHMHR4
|
|
30
|
+
*/
|
|
31
|
+
export function verifyAlgorandAddress(address) {
|
|
32
|
+
if (typeof address !== "string") {
|
|
33
|
+
throw new Error(`${MALFORMED_ADDRESS_ERROR_MSG}: expected string, got ${typeof address}, ${address}`);
|
|
34
|
+
}
|
|
35
|
+
if (address.length !== ADDRESS_LENGTH) {
|
|
36
|
+
throw new Error(`${MALFORMED_ADDRESS_ERROR_MSG}: expected length ${ADDRESS_LENGTH}, got ${address.length}: ${address}`);
|
|
37
|
+
}
|
|
38
|
+
// try to decode
|
|
39
|
+
const decoded = base32.decode.asBytes(address);
|
|
40
|
+
// Sanity check
|
|
41
|
+
if (decoded.length !== ADDRESS_BYTE_LENGTH) {
|
|
42
|
+
throw new Error(`${MALFORMED_ADDRESS_ERROR_MSG}: expected byte length ${ADDRESS_BYTE_LENGTH}, got ${decoded.length}`);
|
|
43
|
+
}
|
|
44
|
+
// Find publickey and checksum
|
|
45
|
+
const pk = new Uint8Array(decoded.slice(0, ADDRESS_BYTE_LENGTH - CHECKSUM_BYTE_LENGTH));
|
|
46
|
+
const cs = new Uint8Array(decoded.slice(PUBLIC_KEY_LENGTH, ADDRESS_BYTE_LENGTH));
|
|
47
|
+
const checksum = checksumFromPublicKey(pk);
|
|
48
|
+
// Check if the checksum and the address are equal
|
|
49
|
+
if (!arrayEqual(checksum, cs))
|
|
50
|
+
throw new Error(CHECKSUM_ADDRESS_ERROR_MSG);
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Note: strangely, there are 3 common ways to encode Algorand block hashes
|
|
55
|
+
* 1. (rpc) base64
|
|
56
|
+
* 2. (algokit json) blk-${base32} (stripping padding)
|
|
57
|
+
* 3. (msgpck) base32 (unsure about padding)
|
|
58
|
+
*
|
|
59
|
+
* Example block hash: 3KYSrPgi16Cl3iLu3r+GaeZkBBrgNFbMB60jsrJtTdI=
|
|
60
|
+
*/
|
|
61
|
+
export function verifyAlgorandBlockHash(hash) {
|
|
62
|
+
// TODO: length check?
|
|
63
|
+
const decoded = Base64.toUint8Array("3KYSrPgi16Cl3iLu3r+GaeZkBBrgNFbMB60jsrJtTdI=");
|
|
64
|
+
// Sanity check
|
|
65
|
+
if (decoded.length !== TX_ID_BYTE_LENGTH) {
|
|
66
|
+
throw new Error(`${MALFORMED_TX_ID_ERROR_MSG}: expected byte length ${TX_ID_BYTE_LENGTH}, got ${decoded.length}`);
|
|
67
|
+
}
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Taken from https://github.com/algorand/js-algorand-sdk/blob/6973ff583b243ddb0632e91f4c0383021430a789/src/transaction.ts#L1102
|
|
72
|
+
*
|
|
73
|
+
* base32 string encoding (stripping padding) of a "rawTxId" (SHA512/256 digest)
|
|
74
|
+
*
|
|
75
|
+
* Example tx hash: IJFAHCDFJ25GBPPNXXZ67KR2IQMZ5XGMAFWCKXIETKY6WV4OR6YQ
|
|
76
|
+
*/
|
|
77
|
+
export function verifyAlgorandTransactionHash(hash) {
|
|
78
|
+
const decoded = base32.decode.asBytes(hash);
|
|
79
|
+
// Sanity check
|
|
80
|
+
if (decoded.length !== BLOCK_HASH_BYTE_LENGTH) {
|
|
81
|
+
throw new Error(`${MALFORMED_BLOCK_HASH_ERROR_MSG}: expected byte length ${MALFORMED_BLOCK_HASH_ERROR_MSG}, got ${decoded.length}`);
|
|
82
|
+
}
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
function arrayEqual(a, b) {
|
|
86
|
+
if (a.length !== b.length) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
return Array.from(a).every((val, i) => val === b[i]);
|
|
90
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export declare const InvalidArgumentError: ErrorConstructor;
|
|
2
|
+
/**
|
|
3
|
+
* Example address:
|
|
4
|
+
* - (mainnet icarus) Ae2tdPwUPEZFRbyhz3cpfC2CumGzNkFBN2L42rcUc2yjQpEkxDbkPodpMAi
|
|
5
|
+
* - (testnet byron) 37btjrVyb4KDXBNC4haBVPCrro8AQPHwvCMp3RFhhSVWwfFmZ6wwzSK6JK1hY6wHNmtrpTf1kdbva8TCneM2YsiXT7mrzT21EacHnPpz5YyUdj64na
|
|
6
|
+
* - (mainnet byron) 82d818584283581caf335162c1ecb0a5b95342e3d1d0c9c38a246fa976b077e81dea9d9ba101581e581c2d574aa85a82a80fd6d1c51ea115c2b03b68166230a3c383c9f89ad5001ac3de014e
|
|
7
|
+
*/
|
|
8
|
+
export declare function verifyCardanoByronAddress(address: string): boolean;
|
|
9
|
+
export declare enum AddressType {
|
|
10
|
+
BasePaymentKeyStakeKey = 0,
|
|
11
|
+
BasePaymentScriptStakeKey = 1,
|
|
12
|
+
BasePaymentKeyStakeScript = 2,
|
|
13
|
+
BasePaymentScriptStakeScript = 3,
|
|
14
|
+
PointerKey = 4,
|
|
15
|
+
PointerScript = 5,
|
|
16
|
+
EnterpriseKey = 6,
|
|
17
|
+
EnterpriseScript = 7,
|
|
18
|
+
Byron = 8,
|
|
19
|
+
RewardKey = 14,
|
|
20
|
+
RewardScript = 15
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* See: https://github.com/input-output-hk/cardano-js-sdk/blob/d1544fc9d1fb3997eb7c5b94a233789bb9e5cd9f/packages/core/src/Cardano/Address/Address.ts
|
|
24
|
+
*/
|
|
25
|
+
export declare function verifyCardanoShelleyAddress(address: string): boolean;
|
|
26
|
+
//# sourceMappingURL=cardano.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cardano.d.ts","sourceRoot":"","sources":["../../../../../src/utils/src/types/validators/cardano.ts"],"names":[],"mappings":"AASA,eAAO,MAAM,oBAAoB,kBAAQ,CAAC;AAE1C;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAElE;AAkBD,oBAAY,WAAW;IACrB,sBAAsB,IAAS;IAC/B,yBAAyB,IAAS;IAClC,yBAAyB,IAAS;IAClC,4BAA4B,IAAS;IACrC,UAAU,IAAS;IACnB,aAAa,IAAS;IACtB,aAAa,IAAS;IACtB,gBAAgB,IAAS;IAGzB,KAAK,IAAS;IACd,SAAS,KAAS;IAClB,YAAY,KAAS;CAEtB;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAwDpE"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { crc32 } from "@foxglove/crc";
|
|
2
|
+
import { CHECKSUM_ERROR_MSG, MALFORMED_ERROR_MSG } from "./utils.js";
|
|
3
|
+
import { MiniCborReader } from "./minicbor.js";
|
|
4
|
+
import bs58 from "bs58";
|
|
5
|
+
import { bech32 } from "bech32";
|
|
6
|
+
import { Buffer } from "node:buffer";
|
|
7
|
+
const CHECKSUM_ADDRESS_ERROR_MSG = CHECKSUM_ERROR_MSG("address");
|
|
8
|
+
export const InvalidArgumentError = Error;
|
|
9
|
+
/**
|
|
10
|
+
* Example address:
|
|
11
|
+
* - (mainnet icarus) Ae2tdPwUPEZFRbyhz3cpfC2CumGzNkFBN2L42rcUc2yjQpEkxDbkPodpMAi
|
|
12
|
+
* - (testnet byron) 37btjrVyb4KDXBNC4haBVPCrro8AQPHwvCMp3RFhhSVWwfFmZ6wwzSK6JK1hY6wHNmtrpTf1kdbva8TCneM2YsiXT7mrzT21EacHnPpz5YyUdj64na
|
|
13
|
+
* - (mainnet byron) 82d818584283581caf335162c1ecb0a5b95342e3d1d0c9c38a246fa976b077e81dea9d9ba101581e581c2d574aa85a82a80fd6d1c51ea115c2b03b68166230a3c383c9f89ad5001ac3de014e
|
|
14
|
+
*/
|
|
15
|
+
export function verifyCardanoByronAddress(address) {
|
|
16
|
+
return verifyCardanoByronAddressBytes(bs58.decode(address));
|
|
17
|
+
}
|
|
18
|
+
function verifyCardanoByronAddressBytes(data) {
|
|
19
|
+
const reader = new MiniCborReader(Buffer.from(data).toString("hex"));
|
|
20
|
+
reader.readStartArray();
|
|
21
|
+
reader.readTag();
|
|
22
|
+
const addressDataEncoded = reader.readByteString();
|
|
23
|
+
if (Number(reader.readInt()) !== crc32(addressDataEncoded)) {
|
|
24
|
+
throw new Error(CHECKSUM_ADDRESS_ERROR_MSG);
|
|
25
|
+
}
|
|
26
|
+
// skip the rest of the address verification and assume if the checksum matches the rest is okay
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
export var AddressType;
|
|
30
|
+
(function (AddressType) {
|
|
31
|
+
AddressType[AddressType["BasePaymentKeyStakeKey"] = 0] = "BasePaymentKeyStakeKey";
|
|
32
|
+
AddressType[AddressType["BasePaymentScriptStakeKey"] = 1] = "BasePaymentScriptStakeKey";
|
|
33
|
+
AddressType[AddressType["BasePaymentKeyStakeScript"] = 2] = "BasePaymentKeyStakeScript";
|
|
34
|
+
AddressType[AddressType["BasePaymentScriptStakeScript"] = 3] = "BasePaymentScriptStakeScript";
|
|
35
|
+
AddressType[AddressType["PointerKey"] = 4] = "PointerKey";
|
|
36
|
+
AddressType[AddressType["PointerScript"] = 5] = "PointerScript";
|
|
37
|
+
AddressType[AddressType["EnterpriseKey"] = 6] = "EnterpriseKey";
|
|
38
|
+
AddressType[AddressType["EnterpriseScript"] = 7] = "EnterpriseScript";
|
|
39
|
+
// 0b1000 was chosen because all existing Byron addresses actually start with 0b1000,
|
|
40
|
+
// therefore we can re-use Byron addresses as-is
|
|
41
|
+
AddressType[AddressType["Byron"] = 8] = "Byron";
|
|
42
|
+
AddressType[AddressType["RewardKey"] = 14] = "RewardKey";
|
|
43
|
+
AddressType[AddressType["RewardScript"] = 15] = "RewardScript";
|
|
44
|
+
// 1001-1101 are left for future formats
|
|
45
|
+
})(AddressType || (AddressType = {}));
|
|
46
|
+
/**
|
|
47
|
+
* See: https://github.com/input-output-hk/cardano-js-sdk/blob/d1544fc9d1fb3997eb7c5b94a233789bb9e5cd9f/packages/core/src/Cardano/Address/Address.ts
|
|
48
|
+
*/
|
|
49
|
+
export function verifyCardanoShelleyAddress(address) {
|
|
50
|
+
const bech32data = bech32.decode(address, Number.MAX_SAFE_INTEGER / 2);
|
|
51
|
+
const data = bech32.fromWords(bech32data.words);
|
|
52
|
+
// strictly speaking, you don't have to use these prefixes
|
|
53
|
+
// but it's a good sanity check
|
|
54
|
+
// see CIP5
|
|
55
|
+
if (!["addr", "addr_test", "stake", "stake_test"].includes(bech32data.prefix)) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
const type = data[0] >> 4;
|
|
59
|
+
switch (type) {
|
|
60
|
+
case AddressType.BasePaymentKeyStakeKey:
|
|
61
|
+
case AddressType.BasePaymentScriptStakeKey:
|
|
62
|
+
case AddressType.BasePaymentKeyStakeScript:
|
|
63
|
+
case AddressType.BasePaymentScriptStakeScript: {
|
|
64
|
+
return data.length === 57;
|
|
65
|
+
}
|
|
66
|
+
case AddressType.PointerKey:
|
|
67
|
+
case AddressType.PointerScript: {
|
|
68
|
+
if (data.length <= 29) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
let index = 29;
|
|
72
|
+
const dataBuffer = Buffer.from(data);
|
|
73
|
+
const { bytesRead: slotBytes } = variableLengthDecode(dataBuffer.subarray(index));
|
|
74
|
+
index += slotBytes;
|
|
75
|
+
const { bytesRead: txIndexBytes } = variableLengthDecode(dataBuffer.subarray(index));
|
|
76
|
+
index += txIndexBytes;
|
|
77
|
+
variableLengthDecode(dataBuffer.subarray(index));
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
case AddressType.EnterpriseKey:
|
|
81
|
+
case AddressType.EnterpriseScript: {
|
|
82
|
+
return data.length === 47;
|
|
83
|
+
}
|
|
84
|
+
case AddressType.RewardKey:
|
|
85
|
+
case AddressType.RewardScript: {
|
|
86
|
+
return data.length === 47;
|
|
87
|
+
}
|
|
88
|
+
case AddressType.Byron: {
|
|
89
|
+
return verifyCardanoByronAddressBytes(new Uint8Array(data));
|
|
90
|
+
}
|
|
91
|
+
default:
|
|
92
|
+
throw new Error(MALFORMED_ERROR_MSG("address"));
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Decodes a value previously encoded in a variable length array.
|
|
97
|
+
*
|
|
98
|
+
* @param array The encoded value.
|
|
99
|
+
* @returns the decoded value.
|
|
100
|
+
*/
|
|
101
|
+
const variableLengthDecode = (array) => {
|
|
102
|
+
let more = true;
|
|
103
|
+
let value = 0n;
|
|
104
|
+
let bytesRead = 0;
|
|
105
|
+
while (more && bytesRead < array.length) {
|
|
106
|
+
const b = array[bytesRead];
|
|
107
|
+
value <<= 7n;
|
|
108
|
+
value |= BigInt(b & 127);
|
|
109
|
+
more = (b & 128) !== 0;
|
|
110
|
+
++bytesRead;
|
|
111
|
+
}
|
|
112
|
+
return { bytesRead, value };
|
|
113
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Example address: B62qpLST3UC1rpVT6SHfB7wqW2iQgiopFAGfrcovPgLjgfpDUN2LLeg
|
|
3
|
+
*/
|
|
4
|
+
export declare function verifyMinaAddress(address: string): boolean;
|
|
5
|
+
/**
|
|
6
|
+
* Example block hash: 3NK9ToRM1gnzyDbafWzdde7EYemjUN2cb5isjtchcCuupty2MgbC
|
|
7
|
+
*/
|
|
8
|
+
export declare function verifyMinaBlockHash(hash: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* See https://github.com/openmina/openmina/blob/26354df0b4165a82ba67fa9ab1f2301841f7b033/mina-p2p-messages/src/v2/hashing.rs#L89-L92
|
|
11
|
+
*
|
|
12
|
+
* Example tx hash: 5JuYVpv6njuwUjgf8WLfXhTEJGHck1pwJXt92Lpcskiwu8kBL632
|
|
13
|
+
*/
|
|
14
|
+
export declare function verifyMinaTransactionHash(hash: string): boolean;
|
|
15
|
+
//# sourceMappingURL=mina.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mina.d.ts","sourceRoot":"","sources":["../../../../../src/utils/src/types/validators/mina.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAS1D;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CASzD;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAS/D"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import bs58check from "bs58check";
|
|
2
|
+
import { MALFORMED_ERROR_MSG } from "./utils.js";
|
|
3
|
+
const BLOCK_HASH_BYTE_LENGTH = 34;
|
|
4
|
+
const TX_ID_BYTE_LENGTH = 34;
|
|
5
|
+
const ADDRESS_BYTE_LENGTH = 36;
|
|
6
|
+
const MALFORMED_BLOCK_HASH_ERROR_MSG = MALFORMED_ERROR_MSG("block hash");
|
|
7
|
+
const MALFORMED_TX_ID_ERROR_MSG = MALFORMED_ERROR_MSG("tx id");
|
|
8
|
+
const MALFORMED_ADDRESS_ERROR_MSG = MALFORMED_ERROR_MSG("address");
|
|
9
|
+
/**
|
|
10
|
+
* Example address: B62qpLST3UC1rpVT6SHfB7wqW2iQgiopFAGfrcovPgLjgfpDUN2LLeg
|
|
11
|
+
*/
|
|
12
|
+
export function verifyMinaAddress(address) {
|
|
13
|
+
const decoded = bs58check.decode(address);
|
|
14
|
+
// Sanity check
|
|
15
|
+
if (decoded.length !== ADDRESS_BYTE_LENGTH) {
|
|
16
|
+
throw new Error(`${MALFORMED_ADDRESS_ERROR_MSG}: expected byte length ${ADDRESS_BYTE_LENGTH}, got ${decoded.length}`);
|
|
17
|
+
}
|
|
18
|
+
return true;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Example block hash: 3NK9ToRM1gnzyDbafWzdde7EYemjUN2cb5isjtchcCuupty2MgbC
|
|
22
|
+
*/
|
|
23
|
+
export function verifyMinaBlockHash(hash) {
|
|
24
|
+
const decoded = bs58check.decode(hash);
|
|
25
|
+
// Sanity check
|
|
26
|
+
if (decoded.length !== TX_ID_BYTE_LENGTH) {
|
|
27
|
+
throw new Error(`${MALFORMED_BLOCK_HASH_ERROR_MSG}: expected byte length ${BLOCK_HASH_BYTE_LENGTH}, got ${decoded.length}`);
|
|
28
|
+
}
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* See https://github.com/openmina/openmina/blob/26354df0b4165a82ba67fa9ab1f2301841f7b033/mina-p2p-messages/src/v2/hashing.rs#L89-L92
|
|
33
|
+
*
|
|
34
|
+
* Example tx hash: 5JuYVpv6njuwUjgf8WLfXhTEJGHck1pwJXt92Lpcskiwu8kBL632
|
|
35
|
+
*/
|
|
36
|
+
export function verifyMinaTransactionHash(hash) {
|
|
37
|
+
const decoded = bs58check.decode(hash);
|
|
38
|
+
// Sanity check
|
|
39
|
+
if (decoded.length !== TX_ID_BYTE_LENGTH) {
|
|
40
|
+
throw new Error(`${MALFORMED_TX_ID_ERROR_MSG}: expected byte length ${TX_ID_BYTE_LENGTH}, got ${decoded.length}`);
|
|
41
|
+
}
|
|
42
|
+
return true;
|
|
43
|
+
}
|