crypto-aio 0.0.3 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +144 -14
- package/dist/adapters/avalanche/address.d.ts +15 -0
- package/dist/adapters/avalanche/address.js +74 -0
- package/dist/adapters/avalanche/address.js.map +1 -0
- package/dist/adapters/avalanche/api.d.ts +100 -0
- package/dist/adapters/avalanche/api.js +381 -0
- package/dist/adapters/avalanche/api.js.map +1 -0
- package/dist/adapters/avalanche/builder.d.ts +13 -0
- package/dist/adapters/avalanche/builder.js +336 -0
- package/dist/adapters/avalanche/builder.js.map +1 -0
- package/dist/adapters/avalanche/cb58.d.ts +7 -0
- package/dist/adapters/avalanche/cb58.js +49 -0
- package/dist/adapters/avalanche/cb58.js.map +1 -0
- package/dist/adapters/avalanche/chains.d.ts +21 -0
- package/dist/adapters/avalanche/chains.js +79 -0
- package/dist/adapters/avalanche/chains.js.map +1 -0
- package/dist/adapters/avalanche/codec.d.ts +94 -0
- package/dist/adapters/avalanche/codec.js +371 -0
- package/dist/adapters/avalanche/codec.js.map +1 -0
- package/dist/adapters/avalanche/context.d.ts +59 -0
- package/dist/adapters/avalanche/context.js +114 -0
- package/dist/adapters/avalanche/context.js.map +1 -0
- package/dist/adapters/avalanche/decode.d.ts +16 -0
- package/dist/adapters/avalanche/decode.js +101 -0
- package/dist/adapters/avalanche/decode.js.map +1 -0
- package/dist/adapters/avalanche/driver.d.ts +22 -0
- package/dist/adapters/avalanche/driver.js +81 -0
- package/dist/adapters/avalanche/driver.js.map +1 -0
- package/dist/adapters/avalanche/errors.d.ts +18 -0
- package/dist/adapters/avalanche/errors.js +61 -0
- package/dist/adapters/avalanche/errors.js.map +1 -0
- package/dist/adapters/avalanche/fees.d.ts +23 -0
- package/dist/adapters/avalanche/fees.js +105 -0
- package/dist/adapters/avalanche/fees.js.map +1 -0
- package/dist/adapters/avalanche/index.d.ts +19 -0
- package/dist/adapters/avalanche/index.js +8 -0
- package/dist/adapters/avalanche/index.js.map +1 -0
- package/dist/adapters/avalanche/network.d.ts +37 -0
- package/dist/adapters/avalanche/network.js +135 -0
- package/dist/adapters/avalanche/network.js.map +1 -0
- package/dist/adapters/avalanche/plugin.d.ts +21 -0
- package/dist/adapters/avalanche/plugin.js +46 -0
- package/dist/adapters/avalanche/plugin.js.map +1 -0
- package/dist/adapters/avalanche/presets.d.ts +6 -0
- package/dist/adapters/avalanche/presets.js +86 -0
- package/dist/adapters/avalanche/presets.js.map +1 -0
- package/dist/adapters/avalanche/proofs.d.ts +41 -0
- package/dist/adapters/avalanche/proofs.js +270 -0
- package/dist/adapters/avalanche/proofs.js.map +1 -0
- package/dist/adapters/avalanche/reader.d.ts +40 -0
- package/dist/adapters/avalanche/reader.js +231 -0
- package/dist/adapters/avalanche/reader.js.map +1 -0
- package/dist/adapters/avalanche/sdk.d.ts +182 -0
- package/dist/adapters/avalanche/sdk.js +21 -0
- package/dist/adapters/avalanche/sdk.js.map +1 -0
- package/dist/adapters/avalanche/types.d.ts +86 -0
- package/dist/{type/common.js → adapters/avalanche/types.js} +1 -1
- package/dist/adapters/avalanche/types.js.map +1 -0
- package/dist/adapters/evm/builder.d.ts +11 -0
- package/dist/adapters/evm/builder.js +326 -0
- package/dist/adapters/evm/builder.js.map +1 -0
- package/dist/adapters/evm/chains.d.ts +6 -0
- package/dist/adapters/evm/chains.js +203 -0
- package/dist/adapters/evm/chains.js.map +1 -0
- package/dist/adapters/evm/client.d.ts +84 -0
- package/dist/adapters/evm/client.js +335 -0
- package/dist/adapters/evm/client.js.map +1 -0
- package/dist/adapters/evm/decode.d.ts +35 -0
- package/dist/adapters/evm/decode.js +170 -0
- package/dist/adapters/evm/decode.js.map +1 -0
- package/dist/adapters/evm/driver.d.ts +8 -0
- package/dist/adapters/evm/driver.js +61 -0
- package/dist/adapters/evm/driver.js.map +1 -0
- package/dist/adapters/evm/errors.d.ts +20 -0
- package/dist/adapters/evm/errors.js +110 -0
- package/dist/adapters/evm/errors.js.map +1 -0
- package/dist/adapters/evm/ethers-client.d.ts +43 -0
- package/dist/adapters/evm/ethers-client.js +135 -0
- package/dist/adapters/evm/ethers-client.js.map +1 -0
- package/dist/adapters/evm/fees.d.ts +79 -0
- package/dist/adapters/evm/fees.js +234 -0
- package/dist/adapters/evm/fees.js.map +1 -0
- package/dist/adapters/evm/index.d.ts +20 -0
- package/dist/adapters/evm/index.js +11 -0
- package/dist/adapters/evm/index.js.map +1 -0
- package/dist/adapters/evm/network.d.ts +60 -0
- package/dist/adapters/evm/network.js +131 -0
- package/dist/adapters/evm/network.js.map +1 -0
- package/dist/adapters/evm/plugin.d.ts +36 -0
- package/dist/adapters/evm/plugin.js +102 -0
- package/dist/adapters/evm/plugin.js.map +1 -0
- package/dist/adapters/evm/presets.d.ts +2 -0
- package/dist/adapters/evm/presets.js +105 -0
- package/dist/adapters/evm/presets.js.map +1 -0
- package/dist/adapters/evm/proofs.d.ts +19 -0
- package/dist/adapters/evm/proofs.js +358 -0
- package/dist/adapters/evm/proofs.js.map +1 -0
- package/dist/adapters/evm/rawtx.d.ts +25 -0
- package/dist/adapters/evm/rawtx.js +176 -0
- package/dist/adapters/evm/rawtx.js.map +1 -0
- package/dist/adapters/evm/reader.d.ts +65 -0
- package/dist/adapters/evm/reader.js +292 -0
- package/dist/adapters/evm/reader.js.map +1 -0
- package/dist/adapters/evm/rpc.d.ts +39 -0
- package/dist/adapters/evm/rpc.js +152 -0
- package/dist/adapters/evm/rpc.js.map +1 -0
- package/dist/adapters/evm/tokens.d.ts +7 -0
- package/dist/adapters/evm/tokens.js +23 -0
- package/dist/adapters/evm/tokens.js.map +1 -0
- package/dist/adapters/evm/types.d.ts +255 -0
- package/dist/{type/account.js → adapters/evm/types.js} +1 -1
- package/dist/adapters/evm/types.js.map +1 -0
- package/dist/adapters/evm/web3-client.d.ts +23 -0
- package/dist/adapters/evm/web3-client.js +159 -0
- package/dist/adapters/evm/web3-client.js.map +1 -0
- package/dist/adapters/solana/builder.d.ts +18 -0
- package/dist/adapters/solana/builder.js +545 -0
- package/dist/adapters/solana/builder.js.map +1 -0
- package/dist/adapters/solana/chains.d.ts +13 -0
- package/dist/adapters/solana/chains.js +37 -0
- package/dist/adapters/solana/chains.js.map +1 -0
- package/dist/adapters/solana/decode.d.ts +111 -0
- package/dist/adapters/solana/decode.js +595 -0
- package/dist/adapters/solana/decode.js.map +1 -0
- package/dist/adapters/solana/driver.d.ts +15 -0
- package/dist/adapters/solana/driver.js +72 -0
- package/dist/adapters/solana/driver.js.map +1 -0
- package/dist/adapters/solana/errors.d.ts +36 -0
- package/dist/adapters/solana/errors.js +154 -0
- package/dist/adapters/solana/errors.js.map +1 -0
- package/dist/adapters/solana/fees.d.ts +68 -0
- package/dist/adapters/solana/fees.js +205 -0
- package/dist/adapters/solana/fees.js.map +1 -0
- package/dist/adapters/solana/heights.d.ts +47 -0
- package/dist/adapters/solana/heights.js +185 -0
- package/dist/adapters/solana/heights.js.map +1 -0
- package/dist/adapters/solana/history.d.ts +10 -0
- package/dist/adapters/solana/history.js +71 -0
- package/dist/adapters/solana/history.js.map +1 -0
- package/dist/adapters/solana/index.d.ts +16 -0
- package/dist/adapters/solana/index.js +9 -0
- package/dist/adapters/solana/index.js.map +1 -0
- package/dist/adapters/solana/keys.d.ts +13 -0
- package/dist/adapters/solana/keys.js +69 -0
- package/dist/adapters/solana/keys.js.map +1 -0
- package/dist/adapters/solana/network.d.ts +24 -0
- package/dist/adapters/solana/network.js +95 -0
- package/dist/adapters/solana/network.js.map +1 -0
- package/dist/adapters/solana/plugin.d.ts +18 -0
- package/dist/adapters/solana/plugin.js +41 -0
- package/dist/adapters/solana/plugin.js.map +1 -0
- package/dist/adapters/solana/presets.d.ts +2 -0
- package/dist/adapters/solana/presets.js +77 -0
- package/dist/adapters/solana/presets.js.map +1 -0
- package/dist/adapters/solana/programs.d.ts +44 -0
- package/dist/adapters/solana/programs.js +159 -0
- package/dist/adapters/solana/programs.js.map +1 -0
- package/dist/adapters/solana/proofs.d.ts +56 -0
- package/dist/adapters/solana/proofs.js +540 -0
- package/dist/adapters/solana/proofs.js.map +1 -0
- package/dist/adapters/solana/reader.d.ts +82 -0
- package/dist/adapters/solana/reader.js +326 -0
- package/dist/adapters/solana/reader.js.map +1 -0
- package/dist/adapters/solana/rpc.d.ts +102 -0
- package/dist/adapters/solana/rpc.js +301 -0
- package/dist/adapters/solana/rpc.js.map +1 -0
- package/dist/adapters/solana/tokens.d.ts +7 -0
- package/dist/adapters/solana/tokens.js +19 -0
- package/dist/adapters/solana/tokens.js.map +1 -0
- package/dist/adapters/solana/types.d.ts +121 -0
- package/dist/{type/contract.js → adapters/solana/types.js} +1 -1
- package/dist/adapters/solana/types.js.map +1 -0
- package/dist/adapters/solana/web3.d.ts +5 -0
- package/dist/adapters/solana/web3.js +83 -0
- package/dist/adapters/solana/web3.js.map +1 -0
- package/dist/adapters/solana/wire.d.ts +62 -0
- package/dist/adapters/solana/wire.js +168 -0
- package/dist/adapters/solana/wire.js.map +1 -0
- package/dist/adapters/ton/address.d.ts +43 -0
- package/dist/adapters/ton/address.js +168 -0
- package/dist/adapters/ton/address.js.map +1 -0
- package/dist/adapters/ton/api.d.ts +344 -0
- package/dist/adapters/ton/api.js +942 -0
- package/dist/adapters/ton/api.js.map +1 -0
- package/dist/adapters/ton/builder.d.ts +18 -0
- package/dist/adapters/ton/builder.js +701 -0
- package/dist/adapters/ton/builder.js.map +1 -0
- package/dist/adapters/ton/chains.d.ts +16 -0
- package/dist/adapters/ton/chains.js +39 -0
- package/dist/adapters/ton/chains.js.map +1 -0
- package/dist/adapters/ton/decode.d.ts +43 -0
- package/dist/adapters/ton/decode.js +219 -0
- package/dist/adapters/ton/decode.js.map +1 -0
- package/dist/adapters/ton/driver.d.ts +10 -0
- package/dist/adapters/ton/driver.js +117 -0
- package/dist/adapters/ton/driver.js.map +1 -0
- package/dist/adapters/ton/errors.d.ts +36 -0
- package/dist/adapters/ton/errors.js +89 -0
- package/dist/adapters/ton/errors.js.map +1 -0
- package/dist/adapters/ton/fees.d.ts +28 -0
- package/dist/adapters/ton/fees.js +121 -0
- package/dist/adapters/ton/fees.js.map +1 -0
- package/dist/adapters/ton/index.d.ts +16 -0
- package/dist/adapters/ton/index.js +9 -0
- package/dist/adapters/ton/index.js.map +1 -0
- package/dist/adapters/ton/messages.d.ts +157 -0
- package/dist/adapters/ton/messages.js +397 -0
- package/dist/adapters/ton/messages.js.map +1 -0
- package/dist/adapters/ton/native-client.d.ts +10 -0
- package/dist/adapters/ton/native-client.js +47 -0
- package/dist/adapters/ton/native-client.js.map +1 -0
- package/dist/adapters/ton/network.d.ts +58 -0
- package/dist/adapters/ton/network.js +207 -0
- package/dist/adapters/ton/network.js.map +1 -0
- package/dist/adapters/ton/plugin.d.ts +24 -0
- package/dist/adapters/ton/plugin.js +57 -0
- package/dist/adapters/ton/plugin.js.map +1 -0
- package/dist/adapters/ton/presets.d.ts +6 -0
- package/dist/adapters/ton/presets.js +94 -0
- package/dist/adapters/ton/presets.js.map +1 -0
- package/dist/adapters/ton/proofs.d.ts +66 -0
- package/dist/adapters/ton/proofs.js +813 -0
- package/dist/adapters/ton/proofs.js.map +1 -0
- package/dist/adapters/ton/reader.d.ts +194 -0
- package/dist/adapters/ton/reader.js +781 -0
- package/dist/adapters/ton/reader.js.map +1 -0
- package/dist/adapters/ton/tokens.d.ts +10 -0
- package/dist/adapters/ton/tokens.js +27 -0
- package/dist/adapters/ton/tokens.js.map +1 -0
- package/dist/adapters/ton/trace.d.ts +48 -0
- package/dist/adapters/ton/trace.js +277 -0
- package/dist/adapters/ton/trace.js.map +1 -0
- package/dist/adapters/ton/types.d.ts +105 -0
- package/dist/{type/transact.js → adapters/ton/types.js} +1 -1
- package/dist/adapters/ton/types.js.map +1 -0
- package/dist/adapters/ton/wallets.d.ts +86 -0
- package/dist/adapters/ton/wallets.js +373 -0
- package/dist/adapters/ton/wallets.js.map +1 -0
- package/dist/adapters/tron/abi.d.ts +39 -0
- package/dist/adapters/tron/abi.js +110 -0
- package/dist/adapters/tron/abi.js.map +1 -0
- package/dist/adapters/tron/address.d.ts +20 -0
- package/dist/adapters/tron/address.js +110 -0
- package/dist/adapters/tron/address.js.map +1 -0
- package/dist/adapters/tron/builder.d.ts +12 -0
- package/dist/adapters/tron/builder.js +553 -0
- package/dist/adapters/tron/builder.js.map +1 -0
- package/dist/adapters/tron/chains.d.ts +12 -0
- package/dist/adapters/tron/chains.js +35 -0
- package/dist/adapters/tron/chains.js.map +1 -0
- package/dist/adapters/tron/codec.d.ts +10 -0
- package/dist/adapters/tron/codec.js +322 -0
- package/dist/adapters/tron/codec.js.map +1 -0
- package/dist/adapters/tron/decode.d.ts +50 -0
- package/dist/adapters/tron/decode.js +280 -0
- package/dist/adapters/tron/decode.js.map +1 -0
- package/dist/adapters/tron/driver.d.ts +12 -0
- package/dist/adapters/tron/driver.js +106 -0
- package/dist/adapters/tron/driver.js.map +1 -0
- package/dist/adapters/tron/errors.d.ts +74 -0
- package/dist/adapters/tron/errors.js +261 -0
- package/dist/adapters/tron/errors.js.map +1 -0
- package/dist/adapters/tron/fees.d.ts +49 -0
- package/dist/adapters/tron/fees.js +166 -0
- package/dist/adapters/tron/fees.js.map +1 -0
- package/dist/adapters/tron/http.d.ts +173 -0
- package/dist/adapters/tron/http.js +729 -0
- package/dist/adapters/tron/http.js.map +1 -0
- package/dist/adapters/tron/index.d.ts +16 -0
- package/dist/adapters/tron/index.js +15 -0
- package/dist/adapters/tron/index.js.map +1 -0
- package/dist/adapters/tron/network.d.ts +44 -0
- package/dist/adapters/tron/network.js +163 -0
- package/dist/adapters/tron/network.js.map +1 -0
- package/dist/adapters/tron/plugin.d.ts +17 -0
- package/dist/adapters/tron/plugin.js +39 -0
- package/dist/adapters/tron/plugin.js.map +1 -0
- package/dist/adapters/tron/presets.d.ts +5 -0
- package/dist/adapters/tron/presets.js +68 -0
- package/dist/adapters/tron/presets.js.map +1 -0
- package/dist/adapters/tron/proofs.d.ts +80 -0
- package/dist/adapters/tron/proofs.js +370 -0
- package/dist/adapters/tron/proofs.js.map +1 -0
- package/dist/adapters/tron/protobuf.d.ts +36 -0
- package/dist/adapters/tron/protobuf.js +90 -0
- package/dist/adapters/tron/protobuf.js.map +1 -0
- package/dist/adapters/tron/reader.d.ts +47 -0
- package/dist/adapters/tron/reader.js +203 -0
- package/dist/adapters/tron/reader.js.map +1 -0
- package/dist/adapters/tron/tokens.d.ts +7 -0
- package/dist/adapters/tron/tokens.js +14 -0
- package/dist/adapters/tron/tokens.js.map +1 -0
- package/dist/adapters/tron/types.d.ts +166 -0
- package/dist/adapters/tron/types.js +3 -0
- package/dist/adapters/tron/types.js.map +1 -0
- package/dist/adapters/utxo/address.d.ts +51 -0
- package/dist/adapters/utxo/address.js +341 -0
- package/dist/adapters/utxo/address.js.map +1 -0
- package/dist/adapters/utxo/builder.d.ts +35 -0
- package/dist/adapters/utxo/builder.js +380 -0
- package/dist/adapters/utxo/builder.js.map +1 -0
- package/dist/adapters/utxo/chains.d.ts +17 -0
- package/dist/adapters/utxo/chains.js +99 -0
- package/dist/adapters/utxo/chains.js.map +1 -0
- package/dist/adapters/utxo/codec.d.ts +120 -0
- package/dist/adapters/utxo/codec.js +408 -0
- package/dist/adapters/utxo/codec.js.map +1 -0
- package/dist/adapters/utxo/coinselect.d.ts +48 -0
- package/dist/adapters/utxo/coinselect.js +131 -0
- package/dist/adapters/utxo/coinselect.js.map +1 -0
- package/dist/adapters/utxo/context.d.ts +57 -0
- package/dist/adapters/utxo/context.js +118 -0
- package/dist/adapters/utxo/context.js.map +1 -0
- package/dist/adapters/utxo/decode.d.ts +14 -0
- package/dist/adapters/utxo/decode.js +85 -0
- package/dist/adapters/utxo/decode.js.map +1 -0
- package/dist/adapters/utxo/driver.d.ts +16 -0
- package/dist/adapters/utxo/driver.js +74 -0
- package/dist/adapters/utxo/driver.js.map +1 -0
- package/dist/adapters/utxo/ecc.d.ts +9 -0
- package/dist/adapters/utxo/ecc.js +26 -0
- package/dist/adapters/utxo/ecc.js.map +1 -0
- package/dist/adapters/utxo/errors.d.ts +52 -0
- package/dist/adapters/utxo/errors.js +191 -0
- package/dist/adapters/utxo/errors.js.map +1 -0
- package/dist/adapters/utxo/esplora.d.ts +79 -0
- package/dist/adapters/utxo/esplora.js +451 -0
- package/dist/adapters/utxo/esplora.js.map +1 -0
- package/dist/adapters/utxo/fees.d.ts +41 -0
- package/dist/adapters/utxo/fees.js +125 -0
- package/dist/adapters/utxo/fees.js.map +1 -0
- package/dist/adapters/utxo/index.d.ts +17 -0
- package/dist/adapters/utxo/index.js +8 -0
- package/dist/adapters/utxo/index.js.map +1 -0
- package/dist/adapters/utxo/network.d.ts +50 -0
- package/dist/adapters/utxo/network.js +165 -0
- package/dist/adapters/utxo/network.js.map +1 -0
- package/dist/adapters/utxo/plugin.d.ts +17 -0
- package/dist/adapters/utxo/plugin.js +41 -0
- package/dist/adapters/utxo/plugin.js.map +1 -0
- package/dist/adapters/utxo/presets.d.ts +12 -0
- package/dist/adapters/utxo/presets.js +47 -0
- package/dist/adapters/utxo/presets.js.map +1 -0
- package/dist/adapters/utxo/preview.d.ts +3 -0
- package/dist/adapters/utxo/preview.js +65 -0
- package/dist/adapters/utxo/preview.js.map +1 -0
- package/dist/adapters/utxo/proofs.d.ts +57 -0
- package/dist/adapters/utxo/proofs.js +331 -0
- package/dist/adapters/utxo/proofs.js.map +1 -0
- package/dist/adapters/utxo/rawtx.d.ts +59 -0
- package/dist/adapters/utxo/rawtx.js +234 -0
- package/dist/adapters/utxo/rawtx.js.map +1 -0
- package/dist/adapters/utxo/reader.d.ts +36 -0
- package/dist/adapters/utxo/reader.js +265 -0
- package/dist/adapters/utxo/reader.js.map +1 -0
- package/dist/adapters/utxo/sdk.d.ts +18 -0
- package/dist/adapters/utxo/sdk.js +17 -0
- package/dist/adapters/utxo/sdk.js.map +1 -0
- package/dist/adapters/utxo/signed-psbt.d.ts +36 -0
- package/dist/adapters/utxo/signed-psbt.js +428 -0
- package/dist/adapters/utxo/signed-psbt.js.map +1 -0
- package/dist/adapters/utxo/spend.d.ts +59 -0
- package/dist/adapters/utxo/spend.js +230 -0
- package/dist/adapters/utxo/spend.js.map +1 -0
- package/dist/adapters/utxo/types.d.ts +167 -0
- package/dist/adapters/utxo/types.js +3 -0
- package/dist/adapters/utxo/types.js.map +1 -0
- package/dist/core/assets/service.d.ts +18 -0
- package/dist/core/assets/service.js +69 -0
- package/dist/core/assets/service.js.map +1 -0
- package/dist/core/blockchain/default-ref.d.ts +4 -0
- package/dist/core/blockchain/default-ref.js +16 -0
- package/dist/core/blockchain/default-ref.js.map +1 -0
- package/dist/core/blockchain/handle.d.ts +200 -0
- package/dist/core/blockchain/handle.js +579 -0
- package/dist/core/blockchain/handle.js.map +1 -0
- package/dist/core/blockchain/internal.d.ts +19 -0
- package/dist/core/blockchain/internal.js +16 -0
- package/dist/core/blockchain/internal.js.map +1 -0
- package/dist/core/blockchain/mapping.d.ts +22 -0
- package/dist/core/blockchain/mapping.js +136 -0
- package/dist/core/blockchain/mapping.js.map +1 -0
- package/dist/core/config/env.d.ts +8 -0
- package/dist/core/config/env.js +60 -0
- package/dist/core/config/env.js.map +1 -0
- package/dist/core/config/merge.d.ts +26 -0
- package/dist/core/config/merge.js +144 -0
- package/dist/core/config/merge.js.map +1 -0
- package/dist/core/config/resolve.d.ts +12 -0
- package/dist/core/config/resolve.js +251 -0
- package/dist/core/config/resolve.js.map +1 -0
- package/dist/core/config/types.d.ts +165 -0
- package/dist/core/config/types.js +3 -0
- package/dist/core/config/types.js.map +1 -0
- package/dist/core/container/builtins.d.ts +4 -0
- package/dist/core/container/builtins.js +13 -0
- package/dist/core/container/builtins.js.map +1 -0
- package/dist/core/container/container.d.ts +69 -0
- package/dist/core/container/container.js +466 -0
- package/dist/core/container/container.js.map +1 -0
- package/dist/core/container/default.d.ts +15 -0
- package/dist/core/container/default.js +70 -0
- package/dist/core/container/default.js.map +1 -0
- package/dist/core/container/internals.d.ts +54 -0
- package/dist/core/container/internals.js +21 -0
- package/dist/core/container/internals.js.map +1 -0
- package/dist/core/container/pool.d.ts +27 -0
- package/dist/core/container/pool.js +77 -0
- package/dist/core/container/pool.js.map +1 -0
- package/dist/core/driver/types.d.ts +346 -0
- package/dist/core/driver/types.js +3 -0
- package/dist/core/driver/types.js.map +1 -0
- package/dist/core/errors/codes.d.ts +153 -0
- package/dist/core/errors/codes.js +49 -0
- package/dist/core/errors/codes.js.map +1 -0
- package/dist/core/errors/error.d.ts +66 -0
- package/dist/core/errors/error.js +129 -0
- package/dist/core/errors/error.js.map +1 -0
- package/dist/core/events/bus.d.ts +12 -0
- package/dist/core/events/bus.js +46 -0
- package/dist/core/events/bus.js.map +1 -0
- package/dist/core/events/logger.d.ts +13 -0
- package/dist/core/events/logger.js +42 -0
- package/dist/core/events/logger.js.map +1 -0
- package/dist/core/events/types.d.ts +131 -0
- package/dist/core/events/types.js +3 -0
- package/dist/core/events/types.js.map +1 -0
- package/dist/core/lifecycle/engine-rules.d.ts +107 -0
- package/dist/core/lifecycle/engine-rules.js +257 -0
- package/dist/core/lifecycle/engine-rules.js.map +1 -0
- package/dist/core/lifecycle/engine.d.ts +500 -0
- package/dist/core/lifecycle/engine.js +1732 -0
- package/dist/core/lifecycle/engine.js.map +1 -0
- package/dist/core/lifecycle/evaluate.d.ts +19 -0
- package/dist/core/lifecycle/evaluate.js +72 -0
- package/dist/core/lifecycle/evaluate.js.map +1 -0
- package/dist/core/lifecycle/intent.d.ts +11 -0
- package/dist/core/lifecycle/intent.js +88 -0
- package/dist/core/lifecycle/intent.js.map +1 -0
- package/dist/core/lifecycle/monitor.d.ts +138 -0
- package/dist/core/lifecycle/monitor.js +606 -0
- package/dist/core/lifecycle/monitor.js.map +1 -0
- package/dist/core/lifecycle/observations.d.ts +17 -0
- package/dist/core/lifecycle/observations.js +59 -0
- package/dist/core/lifecycle/observations.js.map +1 -0
- package/dist/core/lifecycle/reconcile.d.ts +58 -0
- package/dist/core/lifecycle/reconcile.js +112 -0
- package/dist/core/lifecycle/reconcile.js.map +1 -0
- package/dist/core/lifecycle/views.d.ts +49 -0
- package/dist/core/lifecycle/views.js +57 -0
- package/dist/core/lifecycle/views.js.map +1 -0
- package/dist/core/lifecycle/workers.d.ts +82 -0
- package/dist/core/lifecycle/workers.js +329 -0
- package/dist/core/lifecycle/workers.js.map +1 -0
- package/dist/core/model/address.d.ts +32 -0
- package/dist/core/model/address.js +43 -0
- package/dist/core/model/address.js.map +1 -0
- package/dist/core/model/amount.d.ts +25 -0
- package/dist/core/model/amount.js +102 -0
- package/dist/core/model/amount.js.map +1 -0
- package/dist/core/model/asset.d.ts +28 -0
- package/dist/core/model/asset.js +47 -0
- package/dist/core/model/asset.js.map +1 -0
- package/dist/core/model/capability.d.ts +3 -0
- package/dist/core/model/capability.js +18 -0
- package/dist/core/model/capability.js.map +1 -0
- package/dist/core/model/chain.d.ts +63 -0
- package/dist/core/model/chain.js +8 -0
- package/dist/core/model/chain.js.map +1 -0
- package/dist/core/model/fee.d.ts +36 -0
- package/dist/core/model/fee.js +17 -0
- package/dist/core/model/fee.js.map +1 -0
- package/dist/core/model/ids.d.ts +37 -0
- package/dist/core/model/ids.js +13 -0
- package/dist/core/model/ids.js.map +1 -0
- package/dist/core/model/intent.d.ts +63 -0
- package/dist/core/model/intent.js +81 -0
- package/dist/core/model/intent.js.map +1 -0
- package/dist/core/model/ordering.d.ts +20 -0
- package/dist/core/model/ordering.js +29 -0
- package/dist/core/model/ordering.js.map +1 -0
- package/dist/core/model/transaction.d.ts +116 -0
- package/dist/{type/lib-types.js → core/model/transaction.js} +1 -1
- package/dist/core/model/transaction.js.map +1 -0
- package/dist/core/observe/scanner.d.ts +135 -0
- package/dist/core/observe/scanner.js +355 -0
- package/dist/core/observe/scanner.js.map +1 -0
- package/dist/core/ordering/reservations.d.ts +16 -0
- package/dist/core/ordering/reservations.js +53 -0
- package/dist/core/ordering/reservations.js.map +1 -0
- package/dist/core/ordering/sequence.d.ts +61 -0
- package/dist/core/ordering/sequence.js +155 -0
- package/dist/core/ordering/sequence.js.map +1 -0
- package/dist/core/registry/adapters.d.ts +10 -0
- package/dist/core/registry/adapters.js +56 -0
- package/dist/core/registry/adapters.js.map +1 -0
- package/dist/core/registry/assets.d.ts +18 -0
- package/dist/core/registry/assets.js +90 -0
- package/dist/core/registry/assets.js.map +1 -0
- package/dist/core/registry/chains.d.ts +10 -0
- package/dist/core/registry/chains.js +80 -0
- package/dist/core/registry/chains.js.map +1 -0
- package/dist/core/registry/plugin.d.ts +41 -0
- package/dist/core/registry/plugin.js +109 -0
- package/dist/core/registry/plugin.js.map +1 -0
- package/dist/core/registry/providers.d.ts +31 -0
- package/dist/core/registry/providers.js +43 -0
- package/dist/core/registry/providers.js.map +1 -0
- package/dist/core/registry/schemes.d.ts +30 -0
- package/dist/core/registry/schemes.js +84 -0
- package/dist/core/registry/schemes.js.map +1 -0
- package/dist/core/secret/fragments.d.ts +33 -0
- package/dist/core/secret/fragments.js +110 -0
- package/dist/core/secret/fragments.js.map +1 -0
- package/dist/core/secret/redact.d.ts +10 -0
- package/dist/core/secret/redact.js +110 -0
- package/dist/core/secret/redact.js.map +1 -0
- package/dist/core/secret/secret.d.ts +14 -0
- package/dist/core/secret/secret.js +42 -0
- package/dist/core/secret/secret.js.map +1 -0
- package/dist/core/signing/callback.d.ts +10 -0
- package/dist/core/signing/callback.js +22 -0
- package/dist/core/signing/callback.js.map +1 -0
- package/dist/core/signing/guard.d.ts +18 -0
- package/dist/core/signing/guard.js +72 -0
- package/dist/core/signing/guard.js.map +1 -0
- package/dist/core/signing/hd.d.ts +36 -0
- package/dist/core/signing/hd.js +167 -0
- package/dist/core/signing/hd.js.map +1 -0
- package/dist/core/signing/local.d.ts +48 -0
- package/dist/core/signing/local.js +190 -0
- package/dist/core/signing/local.js.map +1 -0
- package/dist/core/signing/orchestrator.d.ts +40 -0
- package/dist/core/signing/orchestrator.js +300 -0
- package/dist/core/signing/orchestrator.js.map +1 -0
- package/dist/core/signing/types.d.ts +64 -0
- package/dist/core/signing/types.js +3 -0
- package/dist/core/signing/types.js.map +1 -0
- package/dist/core/signing/wallet.d.ts +48 -0
- package/dist/core/signing/wallet.js +153 -0
- package/dist/core/signing/wallet.js.map +1 -0
- package/dist/core/store/clone.d.ts +25 -0
- package/dist/core/store/clone.js +71 -0
- package/dist/core/store/clone.js.map +1 -0
- package/dist/core/store/memory.d.ts +38 -0
- package/dist/core/store/memory.js +325 -0
- package/dist/core/store/memory.js.map +1 -0
- package/dist/core/store/types.d.ts +246 -0
- package/dist/core/store/types.js +117 -0
- package/dist/core/store/types.js.map +1 -0
- package/dist/core/transport/backoff.d.ts +8 -0
- package/dist/core/transport/backoff.js +27 -0
- package/dist/core/transport/backoff.js.map +1 -0
- package/dist/core/transport/circuit.d.ts +25 -0
- package/dist/core/transport/circuit.js +61 -0
- package/dist/core/transport/circuit.js.map +1 -0
- package/dist/core/transport/http-transport.d.ts +30 -0
- package/dist/core/transport/http-transport.js +1695 -0
- package/dist/core/transport/http-transport.js.map +1 -0
- package/dist/core/transport/rate-limit.d.ts +27 -0
- package/dist/core/transport/rate-limit.js +78 -0
- package/dist/core/transport/rate-limit.js.map +1 -0
- package/dist/core/transport/stale-view.d.ts +11 -0
- package/dist/core/transport/stale-view.js +17 -0
- package/dist/core/transport/stale-view.js.map +1 -0
- package/dist/core/transport/types.d.ts +144 -0
- package/dist/core/transport/types.js +6 -0
- package/dist/core/transport/types.js.map +1 -0
- package/dist/core/util/bytes.d.ts +9 -0
- package/dist/core/util/bytes.js +40 -0
- package/dist/core/util/bytes.js.map +1 -0
- package/dist/core/util/clock.d.ts +6 -0
- package/dist/core/util/clock.js +26 -0
- package/dist/core/util/clock.js.map +1 -0
- package/dist/core/util/freeze.d.ts +8 -0
- package/dist/core/util/freeze.js +31 -0
- package/dist/core/util/freeze.js.map +1 -0
- package/dist/core/util/json.d.ts +29 -0
- package/dist/core/util/json.js +165 -0
- package/dist/core/util/json.js.map +1 -0
- package/dist/core/util/names.d.ts +21 -0
- package/dist/core/util/names.js +46 -0
- package/dist/core/util/names.js.map +1 -0
- package/dist/index.d.ts +64 -14
- package/dist/index.js +105 -49
- package/dist/index.js.map +1 -1
- package/dist/native.d.ts +21 -0
- package/dist/native.js +44 -0
- package/dist/native.js.map +1 -0
- package/dist/testing/contracts/api.d.ts +12 -0
- package/dist/testing/contracts/api.js +58 -0
- package/dist/testing/contracts/api.js.map +1 -0
- package/dist/testing/contracts/cursors.d.ts +6 -0
- package/dist/testing/contracts/cursors.js +43 -0
- package/dist/testing/contracts/cursors.js.map +1 -0
- package/dist/testing/contracts/locks.d.ts +10 -0
- package/dist/testing/contracts/locks.js +63 -0
- package/dist/testing/contracts/locks.js.map +1 -0
- package/dist/testing/contracts/operations.d.ts +21 -0
- package/dist/testing/contracts/operations.js +718 -0
- package/dist/testing/contracts/operations.js.map +1 -0
- package/dist/testing/contracts/sequences.d.ts +6 -0
- package/dist/testing/contracts/sequences.js +68 -0
- package/dist/testing/contracts/sequences.js.map +1 -0
- package/dist/testing/env.d.ts +63 -0
- package/dist/testing/env.js +105 -0
- package/dist/testing/env.js.map +1 -0
- package/dist/testing/fake-chain.d.ts +118 -0
- package/dist/testing/fake-chain.js +536 -0
- package/dist/testing/fake-chain.js.map +1 -0
- package/dist/testing/fake-clock.d.ts +15 -0
- package/dist/testing/fake-clock.js +86 -0
- package/dist/testing/fake-clock.js.map +1 -0
- package/dist/testing/fake-driver.d.ts +15 -0
- package/dist/testing/fake-driver.js +458 -0
- package/dist/testing/fake-driver.js.map +1 -0
- package/dist/testing/fake-fetch.d.ts +32 -0
- package/dist/testing/fake-fetch.js +81 -0
- package/dist/testing/fake-fetch.js.map +1 -0
- package/dist/testing/fake-plugin.d.ts +30 -0
- package/dist/testing/fake-plugin.js +66 -0
- package/dist/testing/fake-plugin.js.map +1 -0
- package/dist/testing/faulty-store.d.ts +36 -0
- package/dist/testing/faulty-store.js +66 -0
- package/dist/testing/faulty-store.js.map +1 -0
- package/dist/testing/generation.d.ts +60 -0
- package/dist/testing/generation.js +252 -0
- package/dist/testing/generation.js.map +1 -0
- package/dist/testing/index.d.ts +28 -0
- package/dist/testing/index.js +51 -0
- package/dist/testing/index.js.map +1 -0
- package/package.json +188 -45
- package/dist/libs/eth/account.d.ts +0 -9
- package/dist/libs/eth/account.js +0 -58
- package/dist/libs/eth/account.js.map +0 -1
- package/dist/libs/eth/contract.d.ts +0 -7
- package/dist/libs/eth/contract.js +0 -42
- package/dist/libs/eth/contract.js.map +0 -1
- package/dist/libs/eth/index.d.ts +0 -24
- package/dist/libs/eth/index.js +0 -72
- package/dist/libs/eth/index.js.map +0 -1
- package/dist/libs/eth/transact.d.ts +0 -7
- package/dist/libs/eth/transact.js +0 -26
- package/dist/libs/eth/transact.js.map +0 -1
- package/dist/libs/index.d.ts +0 -2
- package/dist/libs/index.js +0 -19
- package/dist/libs/index.js.map +0 -1
- package/dist/libs/trx/account.d.ts +0 -9
- package/dist/libs/trx/account.js +0 -55
- package/dist/libs/trx/account.js.map +0 -1
- package/dist/libs/trx/contract.d.ts +0 -7
- package/dist/libs/trx/contract.js +0 -27
- package/dist/libs/trx/contract.js.map +0 -1
- package/dist/libs/trx/index.d.ts +0 -22
- package/dist/libs/trx/index.js +0 -64
- package/dist/libs/trx/index.js.map +0 -1
- package/dist/libs/trx/transact.d.ts +0 -7
- package/dist/libs/trx/transact.js +0 -26
- package/dist/libs/trx/transact.js.map +0 -1
- package/dist/tool/common.d.ts +0 -28
- package/dist/tool/common.js +0 -33
- package/dist/tool/common.js.map +0 -1
- package/dist/tool/eth-tools.d.ts +0 -3
- package/dist/tool/eth-tools.js +0 -33
- package/dist/tool/eth-tools.js.map +0 -1
- package/dist/tool/index.d.ts +0 -5
- package/dist/tool/index.js +0 -22
- package/dist/tool/index.js.map +0 -1
- package/dist/tool/logging.d.ts +0 -3
- package/dist/tool/logging.js +0 -11
- package/dist/tool/logging.js.map +0 -1
- package/dist/tool/options.d.ts +0 -6
- package/dist/tool/options.js +0 -41
- package/dist/tool/options.js.map +0 -1
- package/dist/tool/trx-tools.d.ts +0 -3
- package/dist/tool/trx-tools.js +0 -20
- package/dist/tool/trx-tools.js.map +0 -1
- package/dist/type/account.d.ts +0 -9
- package/dist/type/account.js.map +0 -1
- package/dist/type/common.d.ts +0 -18
- package/dist/type/common.js.map +0 -1
- package/dist/type/contract.d.ts +0 -10
- package/dist/type/contract.js.map +0 -1
- package/dist/type/index.d.ts +0 -5
- package/dist/type/index.js +0 -22
- package/dist/type/index.js.map +0 -1
- package/dist/type/lib-types.d.ts +0 -9
- package/dist/type/lib-types.js.map +0 -1
- package/dist/type/transact.d.ts +0 -7
- package/dist/type/transact.js.map +0 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,14 +1,64 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
export
|
|
4
|
-
export
|
|
5
|
-
export
|
|
6
|
-
|
|
7
|
-
}
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
}
|
|
1
|
+
export { Blockchain } from './core/blockchain/handle';
|
|
2
|
+
export type { Balance, NetworkStatus } from './core/blockchain/handle';
|
|
3
|
+
export { CryptoAio } from './core/container/container';
|
|
4
|
+
export type { MonitorApi, OperationsApi, OperationsFilter, } from './core/container/container';
|
|
5
|
+
export { configure, defaultContainer } from './core/container/default';
|
|
6
|
+
export { ERROR_CODES } from './core/errors/codes';
|
|
7
|
+
export type { CodesOf, ErrorCategory, ErrorCode } from './core/errors/codes';
|
|
8
|
+
export { ChainError, ConfigError, CryptoAioError, ProviderError, SigningError, StateError, TimeoutError, UnsupportedCapabilityError, ValidationError, createError, isCryptoAioError, } from './core/errors/error';
|
|
9
|
+
export type { CryptoAioErrorOptions, ErrorContext, ErrorContextValue, SerializedError, } from './core/errors/error';
|
|
10
|
+
export { REDACTED, Secret, isSecret, reveal, secret } from './core/secret/secret';
|
|
11
|
+
export { redactDeep, redactUrl } from './core/secret/redact';
|
|
12
|
+
export { localSigner } from './core/signing/local';
|
|
13
|
+
export type { Curve, GenerateOptions, GeneratedSigner, LocalSignerOptions, MnemonicSignerOptions, } from './core/signing/local';
|
|
14
|
+
export { callbackSigner } from './core/signing/callback';
|
|
15
|
+
export type { CallbackSignerOptions } from './core/signing/callback';
|
|
16
|
+
export { deriveXpubChild } from './core/signing/hd';
|
|
17
|
+
export type { ExtendedKeyVersions } from './core/signing/hd';
|
|
18
|
+
export type { WalletHdOptions } from './core/signing/wallet';
|
|
19
|
+
export type { KeyRef, SignatureBundle, Signer, SignerTicket, SigningContext, SigningParams, SigningPurpose, SigningRequest, SigningResult, } from './core/signing/types';
|
|
20
|
+
export { Address } from './core/model/address';
|
|
21
|
+
export type { AddressFormatter, NormalizedAddress } from './core/model/address';
|
|
22
|
+
export { Amount } from './core/model/amount';
|
|
23
|
+
export type { AmountInput } from './core/model/amount';
|
|
24
|
+
export { assetId, parseAssetId } from './core/model/asset';
|
|
25
|
+
export type { AssetId, AssetInfo, AssetMetadata, AssetRef, TokenRef, } from './core/model/asset';
|
|
26
|
+
export { KNOWN_CAPABILITIES } from './core/model/capability';
|
|
27
|
+
export type { Capability, KnownCapability } from './core/model/capability';
|
|
28
|
+
export { explorerUrl } from './core/model/chain';
|
|
29
|
+
export type { ChainInfo, FinalityPolicy, NativeAssetInfo, NetworkInfo, } from './core/model/chain';
|
|
30
|
+
export { feeTotal } from './core/model/fee';
|
|
31
|
+
export type { FeeBound, FeeCharge, FeeChargeDraft, FeeEstimate, FeeEstimateDraft, FeeOverride, FeeSpeed, } from './core/model/fee';
|
|
32
|
+
export { Library } from './core/model/ids';
|
|
33
|
+
export type { ChainId, ChainRegistry, ExtOf, FamilyOf, FamilyRegistry, KnownLibrary, LibraryOf, NativeClientMap, NetworkOf, } from './core/model/ids';
|
|
34
|
+
export type { DriverIntent, DriverOutput, IntentSummary, StoredIntent, TransferIntent, TransferOutputInput, } from './core/model/intent';
|
|
35
|
+
export { mutuallyExclusive } from './core/model/ordering';
|
|
36
|
+
export type { OrderingData, OrderingKind } from './core/model/ordering';
|
|
37
|
+
export type { AttemptIdKind, AttemptRef, Block, BlockRef, Decoding, Evidence, Finality, RawTx, ResolvedTransfer, SignedTx, Transaction, Transfer, TransferSource, TxState, TxStatus, UnresolvedTransfer, UnsignedTx, } from './core/model/transaction';
|
|
38
|
+
export type { AioOptions, ChainDefaults, HandleConfig, HandleOptions, Hooks, LifecycleOptions, ProviderConfig, ProviderRef, ScopeOptions, WalletConfig, } from './core/config/types';
|
|
39
|
+
export type { TransferOptions } from './core/lifecycle/engine';
|
|
40
|
+
export type { ConfirmationResult, RecoveryReport, TxStatusEvent, WaitOptions, WorkerOptions, } from './core/lifecycle/monitor';
|
|
41
|
+
export type { AttemptView, OperationView, PreparedOperation, Submission, } from './core/lifecycle/views';
|
|
42
|
+
export type { Checkpoint, ScanEvent, ScanEventBody, Scanner, ScannerOptions, } from './core/observe/scanner';
|
|
43
|
+
export type { AdapterManifest, AddressCodec, AddressHistorySource, BlockSource, BroadcastResult, Broadcaster, BuildContext, ChainDriver, ChainReader, DisposableNativeClient, DriverBlock, DriverContext, DriverFactory, DriverLimits, DriverTransaction, DriverTransfer, DriverTxObservation, FinalityLevel, FundsCheck, PeerDependency, ProofSource, ReplacementPolicy, ScanFilter, SequenceSource, TxBuilder, WalletKey, WalletOptions, } from './core/driver/types';
|
|
44
|
+
export type { Plugin } from './core/registry/plugin';
|
|
45
|
+
export type { PresetInput, ProviderPreset } from './core/registry/providers';
|
|
46
|
+
export type { AssetRegistration } from './core/registry/assets';
|
|
47
|
+
export { BUILTIN_SCHEMES } from './core/registry/schemes';
|
|
48
|
+
export type { SignatureScheme, VerifyInput } from './core/registry/schemes';
|
|
49
|
+
export { MemoryCursorStore, MemoryLockManager, MemoryOperationStore, MemorySequenceStore, createMemoryStores, } from './core/store/memory';
|
|
50
|
+
export { CLEARABLE_FIELDS, DATA_CLASSIFICATION, NON_TERMINAL_STATES, OPERATION_PATCH_KEYS, TERMINAL_STATES, isTerminal, } from './core/store/types';
|
|
51
|
+
export type { AttemptObservation, AttemptPurpose, AttemptRecord, ClearableField, CreateResult, CursorStore, DataClass, ExecutionContext, Fence, Lease, LockManager, NewOperation, OperationClaim, OperationFilter, OperationPatch, OperationRecord, OperationState, OperationStore, ScanCursor, SequenceState, SequenceStore, StoredCursor, Stores, } from './core/store/types';
|
|
52
|
+
export { parseTagged, stringifyTagged } from './core/util/json';
|
|
53
|
+
export { PLACEHOLDER_ORIGIN } from './core/transport/types';
|
|
54
|
+
export type { CallOptions, EndpointCall, EndpointConfig, EndpointState, EndpointStatus, HealthProbes, HttpRequest, RequestPurpose, RetryClass, Transport, TransportOptions, } from './core/transport/types';
|
|
55
|
+
export type { AioEvent, AioEventName, AioEvents } from './core/events/types';
|
|
56
|
+
export { createLogger, noopLogger } from './core/events/logger';
|
|
57
|
+
export type { LogFields, LogLevel, LogWriter, Logger } from './core/events/logger';
|
|
58
|
+
export type { Clock } from './core/util/clock';
|
|
59
|
+
export type { EvmExt, EvmFeeDetails, EvmFeeOverride } from './adapters/evm/types';
|
|
60
|
+
export type { TronExpiryOrdering, TronExt, TronFeeDetails, TronFeeOverride, TronResources, } from './adapters/tron/types';
|
|
61
|
+
export type { UtxoAddressType, UtxoExt, UtxoFeeDetails, UtxoFeeOverride, UtxoOutputType, UtxoSelectionPreview, UtxoSelectionRequest, UtxoUnspent, UtxoWalletOptions, } from './adapters/utxo/types';
|
|
62
|
+
export type { SolanaExpiryOrdering, SolanaExt, SolanaFeeDetails, SolanaFeeOverride, SolanaTokenAccount, } from './adapters/solana/types';
|
|
63
|
+
export type { TonExt, TonFeeDetails, TonFeeOverride, TonSeqnoOrdering, TonWalletIdentity, TonWalletVersion, } from './adapters/ton/types';
|
|
64
|
+
export type { AvalancheExt, AvalancheFeeDetails, AvalancheFeeOverride, AvalancheUnspent, AvalancheVm, } from './adapters/avalanche/types';
|
package/dist/index.js
CHANGED
|
@@ -1,52 +1,108 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
17
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
18
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
|
|
19
|
-
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
20
|
-
};
|
|
21
|
-
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
22
|
-
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
23
|
-
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
24
|
-
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
25
|
-
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
26
|
-
};
|
|
27
|
-
var _CryptoAio_eth;
|
|
28
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.CryptoAio = exports.
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
3
|
+
exports.PLACEHOLDER_ORIGIN = exports.stringifyTagged = exports.parseTagged = exports.isTerminal = exports.TERMINAL_STATES = exports.OPERATION_PATCH_KEYS = exports.NON_TERMINAL_STATES = exports.DATA_CLASSIFICATION = exports.CLEARABLE_FIELDS = exports.createMemoryStores = exports.MemorySequenceStore = exports.MemoryOperationStore = exports.MemoryLockManager = exports.MemoryCursorStore = exports.BUILTIN_SCHEMES = exports.mutuallyExclusive = exports.Library = exports.feeTotal = exports.explorerUrl = exports.KNOWN_CAPABILITIES = exports.parseAssetId = exports.assetId = exports.Amount = exports.Address = exports.deriveXpubChild = exports.callbackSigner = exports.localSigner = exports.redactUrl = exports.redactDeep = exports.secret = exports.reveal = exports.isSecret = exports.Secret = exports.REDACTED = exports.isCryptoAioError = exports.createError = exports.ValidationError = exports.UnsupportedCapabilityError = exports.TimeoutError = exports.StateError = exports.SigningError = exports.ProviderError = exports.CryptoAioError = exports.ConfigError = exports.ChainError = exports.ERROR_CODES = exports.defaultContainer = exports.configure = exports.CryptoAio = exports.Blockchain = void 0;
|
|
4
|
+
exports.noopLogger = exports.createLogger = void 0;
|
|
5
|
+
/**
|
|
6
|
+
* `crypto-aio`: the container (`CryptoAio`), the handle (`Blockchain`), the domain model,
|
|
7
|
+
* errors, signers, stores and the extension points for chain family plugins.
|
|
8
|
+
*
|
|
9
|
+
* @module crypto-aio
|
|
10
|
+
*/
|
|
11
|
+
const plugin_1 = require("./adapters/avalanche/plugin");
|
|
12
|
+
const plugin_2 = require("./adapters/evm/plugin");
|
|
13
|
+
const plugin_3 = require("./adapters/solana/plugin");
|
|
14
|
+
const plugin_4 = require("./adapters/ton/plugin");
|
|
15
|
+
const plugin_5 = require("./adapters/tron/plugin");
|
|
16
|
+
const plugin_6 = require("./adapters/utxo/plugin");
|
|
17
|
+
const builtins_1 = require("./core/container/builtins");
|
|
18
|
+
/** Built-in chain family plugins. Each family plugin module is SDK-free; drivers load lazily. */
|
|
19
|
+
const BUILTIN_PLUGINS = [
|
|
20
|
+
(0, plugin_2.evmPlugin)(),
|
|
21
|
+
(0, plugin_6.utxoPlugin)(),
|
|
22
|
+
(0, plugin_5.tronPlugin)(),
|
|
23
|
+
(0, plugin_3.solanaPlugin)(),
|
|
24
|
+
(0, plugin_4.tonPlugin)(),
|
|
25
|
+
(0, plugin_1.avalanchePlugin)(),
|
|
26
|
+
];
|
|
27
|
+
(0, builtins_1.setBuiltinPlugins)(BUILTIN_PLUGINS);
|
|
28
|
+
// Entry points
|
|
29
|
+
var handle_1 = require("./core/blockchain/handle");
|
|
30
|
+
Object.defineProperty(exports, "Blockchain", { enumerable: true, get: function () { return handle_1.Blockchain; } });
|
|
31
|
+
var container_1 = require("./core/container/container");
|
|
32
|
+
Object.defineProperty(exports, "CryptoAio", { enumerable: true, get: function () { return container_1.CryptoAio; } });
|
|
33
|
+
var default_1 = require("./core/container/default");
|
|
34
|
+
Object.defineProperty(exports, "configure", { enumerable: true, get: function () { return default_1.configure; } });
|
|
35
|
+
Object.defineProperty(exports, "defaultContainer", { enumerable: true, get: function () { return default_1.defaultContainer; } });
|
|
36
|
+
// Errors
|
|
37
|
+
var codes_1 = require("./core/errors/codes");
|
|
38
|
+
Object.defineProperty(exports, "ERROR_CODES", { enumerable: true, get: function () { return codes_1.ERROR_CODES; } });
|
|
39
|
+
var error_1 = require("./core/errors/error");
|
|
40
|
+
Object.defineProperty(exports, "ChainError", { enumerable: true, get: function () { return error_1.ChainError; } });
|
|
41
|
+
Object.defineProperty(exports, "ConfigError", { enumerable: true, get: function () { return error_1.ConfigError; } });
|
|
42
|
+
Object.defineProperty(exports, "CryptoAioError", { enumerable: true, get: function () { return error_1.CryptoAioError; } });
|
|
43
|
+
Object.defineProperty(exports, "ProviderError", { enumerable: true, get: function () { return error_1.ProviderError; } });
|
|
44
|
+
Object.defineProperty(exports, "SigningError", { enumerable: true, get: function () { return error_1.SigningError; } });
|
|
45
|
+
Object.defineProperty(exports, "StateError", { enumerable: true, get: function () { return error_1.StateError; } });
|
|
46
|
+
Object.defineProperty(exports, "TimeoutError", { enumerable: true, get: function () { return error_1.TimeoutError; } });
|
|
47
|
+
Object.defineProperty(exports, "UnsupportedCapabilityError", { enumerable: true, get: function () { return error_1.UnsupportedCapabilityError; } });
|
|
48
|
+
Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function () { return error_1.ValidationError; } });
|
|
49
|
+
Object.defineProperty(exports, "createError", { enumerable: true, get: function () { return error_1.createError; } });
|
|
50
|
+
Object.defineProperty(exports, "isCryptoAioError", { enumerable: true, get: function () { return error_1.isCryptoAioError; } });
|
|
51
|
+
// Secrets and signing
|
|
52
|
+
var secret_1 = require("./core/secret/secret");
|
|
53
|
+
Object.defineProperty(exports, "REDACTED", { enumerable: true, get: function () { return secret_1.REDACTED; } });
|
|
54
|
+
Object.defineProperty(exports, "Secret", { enumerable: true, get: function () { return secret_1.Secret; } });
|
|
55
|
+
Object.defineProperty(exports, "isSecret", { enumerable: true, get: function () { return secret_1.isSecret; } });
|
|
56
|
+
Object.defineProperty(exports, "reveal", { enumerable: true, get: function () { return secret_1.reveal; } });
|
|
57
|
+
Object.defineProperty(exports, "secret", { enumerable: true, get: function () { return secret_1.secret; } });
|
|
58
|
+
var redact_1 = require("./core/secret/redact");
|
|
59
|
+
Object.defineProperty(exports, "redactDeep", { enumerable: true, get: function () { return redact_1.redactDeep; } });
|
|
60
|
+
Object.defineProperty(exports, "redactUrl", { enumerable: true, get: function () { return redact_1.redactUrl; } });
|
|
61
|
+
var local_1 = require("./core/signing/local");
|
|
62
|
+
Object.defineProperty(exports, "localSigner", { enumerable: true, get: function () { return local_1.localSigner; } });
|
|
63
|
+
var callback_1 = require("./core/signing/callback");
|
|
64
|
+
Object.defineProperty(exports, "callbackSigner", { enumerable: true, get: function () { return callback_1.callbackSigner; } });
|
|
65
|
+
var hd_1 = require("./core/signing/hd");
|
|
66
|
+
Object.defineProperty(exports, "deriveXpubChild", { enumerable: true, get: function () { return hd_1.deriveXpubChild; } });
|
|
67
|
+
// Domain model
|
|
68
|
+
var address_1 = require("./core/model/address");
|
|
69
|
+
Object.defineProperty(exports, "Address", { enumerable: true, get: function () { return address_1.Address; } });
|
|
70
|
+
var amount_1 = require("./core/model/amount");
|
|
71
|
+
Object.defineProperty(exports, "Amount", { enumerable: true, get: function () { return amount_1.Amount; } });
|
|
72
|
+
var asset_1 = require("./core/model/asset");
|
|
73
|
+
Object.defineProperty(exports, "assetId", { enumerable: true, get: function () { return asset_1.assetId; } });
|
|
74
|
+
Object.defineProperty(exports, "parseAssetId", { enumerable: true, get: function () { return asset_1.parseAssetId; } });
|
|
75
|
+
var capability_1 = require("./core/model/capability");
|
|
76
|
+
Object.defineProperty(exports, "KNOWN_CAPABILITIES", { enumerable: true, get: function () { return capability_1.KNOWN_CAPABILITIES; } });
|
|
77
|
+
var chain_1 = require("./core/model/chain");
|
|
78
|
+
Object.defineProperty(exports, "explorerUrl", { enumerable: true, get: function () { return chain_1.explorerUrl; } });
|
|
79
|
+
var fee_1 = require("./core/model/fee");
|
|
80
|
+
Object.defineProperty(exports, "feeTotal", { enumerable: true, get: function () { return fee_1.feeTotal; } });
|
|
81
|
+
var ids_1 = require("./core/model/ids");
|
|
82
|
+
Object.defineProperty(exports, "Library", { enumerable: true, get: function () { return ids_1.Library; } });
|
|
83
|
+
var ordering_1 = require("./core/model/ordering");
|
|
84
|
+
Object.defineProperty(exports, "mutuallyExclusive", { enumerable: true, get: function () { return ordering_1.mutuallyExclusive; } });
|
|
85
|
+
var schemes_1 = require("./core/registry/schemes");
|
|
86
|
+
Object.defineProperty(exports, "BUILTIN_SCHEMES", { enumerable: true, get: function () { return schemes_1.BUILTIN_SCHEMES; } });
|
|
87
|
+
var memory_1 = require("./core/store/memory");
|
|
88
|
+
Object.defineProperty(exports, "MemoryCursorStore", { enumerable: true, get: function () { return memory_1.MemoryCursorStore; } });
|
|
89
|
+
Object.defineProperty(exports, "MemoryLockManager", { enumerable: true, get: function () { return memory_1.MemoryLockManager; } });
|
|
90
|
+
Object.defineProperty(exports, "MemoryOperationStore", { enumerable: true, get: function () { return memory_1.MemoryOperationStore; } });
|
|
91
|
+
Object.defineProperty(exports, "MemorySequenceStore", { enumerable: true, get: function () { return memory_1.MemorySequenceStore; } });
|
|
92
|
+
Object.defineProperty(exports, "createMemoryStores", { enumerable: true, get: function () { return memory_1.createMemoryStores; } });
|
|
93
|
+
var types_1 = require("./core/store/types");
|
|
94
|
+
Object.defineProperty(exports, "CLEARABLE_FIELDS", { enumerable: true, get: function () { return types_1.CLEARABLE_FIELDS; } });
|
|
95
|
+
Object.defineProperty(exports, "DATA_CLASSIFICATION", { enumerable: true, get: function () { return types_1.DATA_CLASSIFICATION; } });
|
|
96
|
+
Object.defineProperty(exports, "NON_TERMINAL_STATES", { enumerable: true, get: function () { return types_1.NON_TERMINAL_STATES; } });
|
|
97
|
+
Object.defineProperty(exports, "OPERATION_PATCH_KEYS", { enumerable: true, get: function () { return types_1.OPERATION_PATCH_KEYS; } });
|
|
98
|
+
Object.defineProperty(exports, "TERMINAL_STATES", { enumerable: true, get: function () { return types_1.TERMINAL_STATES; } });
|
|
99
|
+
Object.defineProperty(exports, "isTerminal", { enumerable: true, get: function () { return types_1.isTerminal; } });
|
|
100
|
+
var json_1 = require("./core/util/json");
|
|
101
|
+
Object.defineProperty(exports, "parseTagged", { enumerable: true, get: function () { return json_1.parseTagged; } });
|
|
102
|
+
Object.defineProperty(exports, "stringifyTagged", { enumerable: true, get: function () { return json_1.stringifyTagged; } });
|
|
103
|
+
var types_2 = require("./core/transport/types");
|
|
104
|
+
Object.defineProperty(exports, "PLACEHOLDER_ORIGIN", { enumerable: true, get: function () { return types_2.PLACEHOLDER_ORIGIN; } });
|
|
105
|
+
var logger_1 = require("./core/events/logger");
|
|
106
|
+
Object.defineProperty(exports, "createLogger", { enumerable: true, get: function () { return logger_1.createLogger; } });
|
|
107
|
+
Object.defineProperty(exports, "noopLogger", { enumerable: true, get: function () { return logger_1.noopLogger; } });
|
|
52
108
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iCAAmD;AACnD,iCAAyC;AAEzC,yCAAuB;AACvB,yCAAuB;AACvB,yCAAuB;AAMhB,MAAM,gBAAgB,GAAG,CAAC,GAAY,EAAoB,EAAE;IACjE,OAAO;QACL,GAAG,EAAE,IAAA,sBAAe,EAAC,GAAG,CAAC;KAC1B,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,gBAAgB,oBAI3B;AAEF,MAAa,SAAS;IAGpB,YAAqB,UAA4B,IAAA,wBAAgB,GAAE;QAA9C,YAAO,GAAP,OAAO,CAAuC;QAFnE,iCAAgB;IAEsD,CAAC;IAEvE,IAAI,GAAG;QACL,OAAO,CAAC,uBAAA,IAAI,kBAAQ,uBAAA,IAAI,sBAAK,IAAI,IAAI,eAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAA,CAAC,CAAC;IACtE,CAAC;CACF;AARD,8BAQC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;AAAA;;;;;GAKG;AACH,wDAA8D;AAC9D,kDAAkD;AAClD,qDAAwD;AACxD,kDAAkD;AAClD,mDAAoD;AACpD,mDAAoD;AACpD,wDAA8D;AAG9D,iGAAiG;AACjG,MAAM,eAAe,GAAsB;IACzC,IAAA,kBAAS,GAAE;IACX,IAAA,mBAAU,GAAE;IACZ,IAAA,mBAAU,GAAE;IACZ,IAAA,qBAAY,GAAE;IACd,IAAA,kBAAS,GAAE;IACX,IAAA,wBAAe,GAAE;CAClB,CAAC;AACF,IAAA,4BAAiB,EAAC,eAAe,CAAC,CAAC;AAEnC,eAAe;AACf,mDAAsD;AAA7C,oGAAA,UAAU,OAAA;AAEnB,wDAAuD;AAA9C,sGAAA,SAAS,OAAA;AAMlB,oDAAuE;AAA9D,oGAAA,SAAS,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AAEpC,SAAS;AACT,6CAAkD;AAAzC,oGAAA,WAAW,OAAA;AAEpB,6CAY6B;AAX3B,mGAAA,UAAU,OAAA;AACV,oGAAA,WAAW,OAAA;AACX,uGAAA,cAAc,OAAA;AACd,sGAAA,aAAa,OAAA;AACb,qGAAA,YAAY,OAAA;AACZ,mGAAA,UAAU,OAAA;AACV,qGAAA,YAAY,OAAA;AACZ,mHAAA,0BAA0B,OAAA;AAC1B,wGAAA,eAAe,OAAA;AACf,oGAAA,WAAW,OAAA;AACX,yGAAA,gBAAgB,OAAA;AASlB,sBAAsB;AACtB,+CAAkF;AAAzE,kGAAA,QAAQ,OAAA;AAAE,gGAAA,MAAM,OAAA;AAAE,kGAAA,QAAQ,OAAA;AAAE,gGAAA,MAAM,OAAA;AAAE,gGAAA,MAAM,OAAA;AACnD,+CAA6D;AAApD,oGAAA,UAAU,OAAA;AAAE,mGAAA,SAAS,OAAA;AAC9B,8CAAmD;AAA1C,oGAAA,WAAW,OAAA;AAQpB,oDAAyD;AAAhD,0GAAA,cAAc,OAAA;AAEvB,wCAAoD;AAA3C,qGAAA,eAAe,OAAA;AAexB,eAAe;AACf,gDAA+C;AAAtC,kGAAA,OAAO,OAAA;AAEhB,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AAEf,4CAA2D;AAAlD,gGAAA,OAAO,OAAA;AAAE,qGAAA,YAAY,OAAA;AAQ9B,sDAA6D;AAApD,gHAAA,kBAAkB,OAAA;AAE3B,4CAAiD;AAAxC,oGAAA,WAAW,OAAA;AAOpB,wCAA4C;AAAnC,+FAAA,QAAQ,OAAA;AAUjB,wCAA2C;AAAlC,8FAAA,OAAO,OAAA;AAoBhB,kDAA0D;AAAjD,6GAAA,iBAAiB,OAAA;AA6F1B,mDAA0D;AAAjD,0GAAA,eAAe,OAAA;AAExB,8CAM6B;AAL3B,2GAAA,iBAAiB,OAAA;AACjB,2GAAA,iBAAiB,OAAA;AACjB,8GAAA,oBAAoB,OAAA;AACpB,6GAAA,mBAAmB,OAAA;AACnB,4GAAA,kBAAkB,OAAA;AAEpB,4CAO4B;AAN1B,yGAAA,gBAAgB,OAAA;AAChB,4GAAA,mBAAmB,OAAA;AACnB,4GAAA,mBAAmB,OAAA;AACnB,6GAAA,oBAAoB,OAAA;AACpB,wGAAA,eAAe,OAAA;AACf,mGAAA,UAAU,OAAA;AA2BZ,yCAAgE;AAAvD,mGAAA,WAAW,OAAA;AAAE,uGAAA,eAAe,OAAA;AACrC,gDAA4D;AAAnD,2GAAA,kBAAkB,OAAA;AAe3B,+CAAgE;AAAvD,sGAAA,YAAY,OAAA;AAAE,oGAAA,UAAU,OAAA","sourcesContent":["/**\n * `crypto-aio`: the container (`CryptoAio`), the handle (`Blockchain`), the domain model,\n * errors, signers, stores and the extension points for chain family plugins.\n *\n * @module crypto-aio\n */\nimport { avalanchePlugin } from './adapters/avalanche/plugin';\nimport { evmPlugin } from './adapters/evm/plugin';\nimport { solanaPlugin } from './adapters/solana/plugin';\nimport { tonPlugin } from './adapters/ton/plugin';\nimport { tronPlugin } from './adapters/tron/plugin';\nimport { utxoPlugin } from './adapters/utxo/plugin';\nimport { setBuiltinPlugins } from './core/container/builtins';\nimport type { Plugin } from './core/registry/plugin';\n\n/** Built-in chain family plugins. Each family plugin module is SDK-free; drivers load lazily. */\nconst BUILTIN_PLUGINS: readonly Plugin[] = [\n evmPlugin(),\n utxoPlugin(),\n tronPlugin(),\n solanaPlugin(),\n tonPlugin(),\n avalanchePlugin(),\n];\nsetBuiltinPlugins(BUILTIN_PLUGINS);\n\n// Entry points\nexport { Blockchain } from './core/blockchain/handle';\nexport type { Balance, NetworkStatus } from './core/blockchain/handle';\nexport { CryptoAio } from './core/container/container';\nexport type {\n MonitorApi,\n OperationsApi,\n OperationsFilter,\n} from './core/container/container';\nexport { configure, defaultContainer } from './core/container/default';\n\n// Errors\nexport { ERROR_CODES } from './core/errors/codes';\nexport type { CodesOf, ErrorCategory, ErrorCode } from './core/errors/codes';\nexport {\n ChainError,\n ConfigError,\n CryptoAioError,\n ProviderError,\n SigningError,\n StateError,\n TimeoutError,\n UnsupportedCapabilityError,\n ValidationError,\n createError,\n isCryptoAioError,\n} from './core/errors/error';\nexport type {\n CryptoAioErrorOptions,\n ErrorContext,\n ErrorContextValue,\n SerializedError,\n} from './core/errors/error';\n\n// Secrets and signing\nexport { REDACTED, Secret, isSecret, reveal, secret } from './core/secret/secret';\nexport { redactDeep, redactUrl } from './core/secret/redact';\nexport { localSigner } from './core/signing/local';\nexport type {\n Curve,\n GenerateOptions,\n GeneratedSigner,\n LocalSignerOptions,\n MnemonicSignerOptions,\n} from './core/signing/local';\nexport { callbackSigner } from './core/signing/callback';\nexport type { CallbackSignerOptions } from './core/signing/callback';\nexport { deriveXpubChild } from './core/signing/hd';\nexport type { ExtendedKeyVersions } from './core/signing/hd';\nexport type { WalletHdOptions } from './core/signing/wallet';\nexport type {\n KeyRef,\n SignatureBundle,\n Signer,\n SignerTicket,\n SigningContext,\n SigningParams,\n SigningPurpose,\n SigningRequest,\n SigningResult,\n} from './core/signing/types';\n\n// Domain model\nexport { Address } from './core/model/address';\nexport type { AddressFormatter, NormalizedAddress } from './core/model/address';\nexport { Amount } from './core/model/amount';\nexport type { AmountInput } from './core/model/amount';\nexport { assetId, parseAssetId } from './core/model/asset';\nexport type {\n AssetId,\n AssetInfo,\n AssetMetadata,\n AssetRef,\n TokenRef,\n} from './core/model/asset';\nexport { KNOWN_CAPABILITIES } from './core/model/capability';\nexport type { Capability, KnownCapability } from './core/model/capability';\nexport { explorerUrl } from './core/model/chain';\nexport type {\n ChainInfo,\n FinalityPolicy,\n NativeAssetInfo,\n NetworkInfo,\n} from './core/model/chain';\nexport { feeTotal } from './core/model/fee';\nexport type {\n FeeBound,\n FeeCharge,\n FeeChargeDraft,\n FeeEstimate,\n FeeEstimateDraft,\n FeeOverride,\n FeeSpeed,\n} from './core/model/fee';\nexport { Library } from './core/model/ids';\nexport type {\n ChainId,\n ChainRegistry,\n ExtOf,\n FamilyOf,\n FamilyRegistry,\n KnownLibrary,\n LibraryOf,\n NativeClientMap,\n NetworkOf,\n} from './core/model/ids';\nexport type {\n DriverIntent,\n DriverOutput,\n IntentSummary,\n StoredIntent,\n TransferIntent,\n TransferOutputInput,\n} from './core/model/intent';\nexport { mutuallyExclusive } from './core/model/ordering';\nexport type { OrderingData, OrderingKind } from './core/model/ordering';\nexport type {\n AttemptIdKind,\n AttemptRef,\n Block,\n BlockRef,\n Decoding,\n Evidence,\n Finality,\n RawTx,\n ResolvedTransfer,\n SignedTx,\n Transaction,\n Transfer,\n TransferSource,\n TxState,\n TxStatus,\n UnresolvedTransfer,\n UnsignedTx,\n} from './core/model/transaction';\n\n// Configuration\nexport type {\n AioOptions,\n ChainDefaults,\n HandleConfig,\n HandleOptions,\n Hooks,\n LifecycleOptions,\n ProviderConfig,\n ProviderRef,\n ScopeOptions,\n WalletConfig,\n} from './core/config/types';\n\n// Lifecycle and observation\nexport type { TransferOptions } from './core/lifecycle/engine';\nexport type {\n ConfirmationResult,\n RecoveryReport,\n TxStatusEvent,\n WaitOptions,\n WorkerOptions,\n} from './core/lifecycle/monitor';\nexport type {\n AttemptView,\n OperationView,\n PreparedOperation,\n Submission,\n} from './core/lifecycle/views';\n// Type only; scanners come from `bc.scanner()`.\nexport type {\n Checkpoint,\n ScanEvent,\n ScanEventBody,\n Scanner,\n ScannerOptions,\n} from './core/observe/scanner';\n\n// Extension points: drivers, plugins, presets, schemes, stores, transport, events\nexport type {\n AdapterManifest,\n AddressCodec,\n AddressHistorySource,\n BlockSource,\n BroadcastResult,\n Broadcaster,\n BuildContext,\n ChainDriver,\n ChainReader,\n DisposableNativeClient,\n DriverBlock,\n DriverContext,\n DriverFactory,\n DriverLimits,\n DriverTransaction,\n DriverTransfer,\n DriverTxObservation,\n FinalityLevel,\n FundsCheck,\n PeerDependency,\n ProofSource,\n ReplacementPolicy,\n ScanFilter,\n SequenceSource,\n TxBuilder,\n WalletKey,\n WalletOptions,\n} from './core/driver/types';\nexport type { Plugin } from './core/registry/plugin';\nexport type { PresetInput, ProviderPreset } from './core/registry/providers';\nexport type { AssetRegistration } from './core/registry/assets';\nexport { BUILTIN_SCHEMES } from './core/registry/schemes';\nexport type { SignatureScheme, VerifyInput } from './core/registry/schemes';\nexport {\n MemoryCursorStore,\n MemoryLockManager,\n MemoryOperationStore,\n MemorySequenceStore,\n createMemoryStores,\n} from './core/store/memory';\nexport {\n CLEARABLE_FIELDS,\n DATA_CLASSIFICATION,\n NON_TERMINAL_STATES,\n OPERATION_PATCH_KEYS,\n TERMINAL_STATES,\n isTerminal,\n} from './core/store/types';\nexport type {\n AttemptObservation,\n AttemptPurpose,\n AttemptRecord,\n ClearableField,\n CreateResult,\n CursorStore,\n DataClass,\n ExecutionContext,\n Fence,\n Lease,\n LockManager,\n NewOperation,\n OperationClaim,\n OperationFilter,\n OperationPatch,\n OperationRecord,\n OperationState,\n OperationStore,\n ScanCursor,\n SequenceState,\n SequenceStore,\n StoredCursor,\n Stores,\n} from './core/store/types';\nexport { parseTagged, stringifyTagged } from './core/util/json';\nexport { PLACEHOLDER_ORIGIN } from './core/transport/types';\nexport type {\n CallOptions,\n EndpointCall,\n EndpointConfig,\n EndpointState,\n EndpointStatus,\n HealthProbes,\n HttpRequest,\n RequestPurpose,\n RetryClass,\n Transport,\n TransportOptions,\n} from './core/transport/types';\nexport type { AioEvent, AioEventName, AioEvents } from './core/events/types';\nexport { createLogger, noopLogger } from './core/events/logger';\nexport type { LogFields, LogLevel, LogWriter, Logger } from './core/events/logger';\nexport type { Clock } from './core/util/clock';\n\n// Chain families: SDK-free types. SDK client types are in `crypto-aio/avalanche`,\n// `crypto-aio/evm`, `crypto-aio/solana`, `crypto-aio/ton`, `crypto-aio/tron` and\n// `crypto-aio/utxo`.\nexport type { EvmExt, EvmFeeDetails, EvmFeeOverride } from './adapters/evm/types';\nexport type {\n TronExpiryOrdering,\n TronExt,\n TronFeeDetails,\n TronFeeOverride,\n TronResources,\n} from './adapters/tron/types';\nexport type {\n UtxoAddressType,\n UtxoExt,\n UtxoFeeDetails,\n UtxoFeeOverride,\n UtxoOutputType,\n UtxoSelectionPreview,\n UtxoSelectionRequest,\n UtxoUnspent,\n UtxoWalletOptions,\n} from './adapters/utxo/types';\nexport type {\n SolanaExpiryOrdering,\n SolanaExt,\n SolanaFeeDetails,\n SolanaFeeOverride,\n SolanaTokenAccount,\n} from './adapters/solana/types';\nexport type {\n TonExt,\n TonFeeDetails,\n TonFeeOverride,\n TonSeqnoOrdering,\n TonWalletIdentity,\n TonWalletVersion,\n} from './adapters/ton/types';\nexport type {\n AvalancheExt,\n AvalancheFeeDetails,\n AvalancheFeeOverride,\n AvalancheUnspent,\n AvalancheVm,\n} from './adapters/avalanche/types';\n"]}
|
package/dist/native.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `crypto-aio/native`: the escape hatch to a handle's own SDK client, outside the semver
|
|
3
|
+
* guarantees of crypto-aio.
|
|
4
|
+
*
|
|
5
|
+
* @module crypto-aio/native
|
|
6
|
+
*/
|
|
7
|
+
import type { Blockchain } from './core/blockchain/handle';
|
|
8
|
+
import type { ChainId, NativeClientMap } from './core/model/ids';
|
|
9
|
+
/**
|
|
10
|
+
* Escape hatch to the underlying SDK client. OUTSIDE the semver guarantees of crypto-aio.
|
|
11
|
+
*
|
|
12
|
+
* The client belongs to this handle only: the driver builds it for the handle on the first
|
|
13
|
+
* call, and later calls on the same handle return that same client. It is never the pooled
|
|
14
|
+
* instance the drivers use, so mutating it cannot affect other handles or tenants, and it is
|
|
15
|
+
* reachable only through this function (not through the handle, `JSON` or `inspect`). The
|
|
16
|
+
* library name must match the handle's (`INCOMPATIBLE_SELECTION` otherwise).
|
|
17
|
+
*
|
|
18
|
+
* The root container's `close()` releases every client handed out here; after it,
|
|
19
|
+
* `native()` fails with `INVALID_TRANSITION`, as the handle's own methods do.
|
|
20
|
+
*/
|
|
21
|
+
export declare function native<L extends Extract<keyof NativeClientMap, string>, C extends ChainId = ChainId>(handle: Blockchain<C>, library: L): Promise<NativeClientMap[L]>;
|
package/dist/native.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.native = native;
|
|
4
|
+
const internal_1 = require("./core/blockchain/internal");
|
|
5
|
+
const error_1 = require("./core/errors/error");
|
|
6
|
+
/**
|
|
7
|
+
* Escape hatch to the underlying SDK client. OUTSIDE the semver guarantees of crypto-aio.
|
|
8
|
+
*
|
|
9
|
+
* The client belongs to this handle only: the driver builds it for the handle on the first
|
|
10
|
+
* call, and later calls on the same handle return that same client. It is never the pooled
|
|
11
|
+
* instance the drivers use, so mutating it cannot affect other handles or tenants, and it is
|
|
12
|
+
* reachable only through this function (not through the handle, `JSON` or `inspect`). The
|
|
13
|
+
* library name must match the handle's (`INCOMPATIBLE_SELECTION` otherwise).
|
|
14
|
+
*
|
|
15
|
+
* The root container's `close()` releases every client handed out here; after it,
|
|
16
|
+
* `native()` fails with `INVALID_TRANSITION`, as the handle's own methods do.
|
|
17
|
+
*/
|
|
18
|
+
async function native(handle, library) {
|
|
19
|
+
const internals = (0, internal_1.internalsOf)(handle);
|
|
20
|
+
internals.assertOpen();
|
|
21
|
+
if (internals.selection.library !== library) {
|
|
22
|
+
throw new error_1.ConfigError('INCOMPATIBLE_SELECTION',
|
|
23
|
+
// The caller's text (perhaps a pasted secret) is never repeated; the handle's own
|
|
24
|
+
// library is named.
|
|
25
|
+
`this handle's library is '${internals.selection.library}'; ask native() for that one`);
|
|
26
|
+
}
|
|
27
|
+
const cached = internals.nativeClients.get(library);
|
|
28
|
+
if (cached !== undefined)
|
|
29
|
+
return cached;
|
|
30
|
+
const { driver } = await internals.pooled();
|
|
31
|
+
internals.assertOpen(); // the root may have closed while this call awaited the driver
|
|
32
|
+
// A concurrent call may have built the client while this one awaited the driver.
|
|
33
|
+
const built = internals.nativeClients.get(library);
|
|
34
|
+
if (built !== undefined)
|
|
35
|
+
return built;
|
|
36
|
+
if (!driver.createNativeClient) {
|
|
37
|
+
throw new error_1.UnsupportedCapabilityError('UNSUPPORTED_CAPABILITY', `library '${library}' exposes no native client`);
|
|
38
|
+
}
|
|
39
|
+
const created = driver.createNativeClient();
|
|
40
|
+
internals.registerNative(created);
|
|
41
|
+
internals.nativeClients.set(library, created.client);
|
|
42
|
+
return created.client;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native.js","sourceRoot":"","sources":["../src/native.ts"],"names":[],"mappings":";;AAuBA,wBA+BC;AA/CD,yDAAyD;AACzD,+CAA8E;AAG9E;;;;;;;;;;;GAWG;AACI,KAAK,UAAU,MAAM,CAG1B,MAAqB,EAAE,OAAU;IACjC,MAAM,SAAS,GAAG,IAAA,sBAAW,EAAC,MAAM,CAAC,CAAC;IACtC,SAAS,CAAC,UAAU,EAAE,CAAC;IACvB,IAAI,SAAS,CAAC,SAAS,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC5C,MAAM,IAAI,mBAAW,CACnB,wBAAwB;QACxB,kFAAkF;QAClF,oBAAoB;QACpB,6BAA6B,SAAS,CAAC,SAAS,CAAC,OAAO,8BAA8B,CACvF,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACpD,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAA4B,CAAC;IAC9D,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,MAAM,EAAE,CAAC;IAC5C,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC,8DAA8D;IACtF,iFAAiF;IACjF,MAAM,KAAK,GAAG,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAA2B,CAAC;IAC5D,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAC/B,MAAM,IAAI,kCAA0B,CAClC,wBAAwB,EACxB,YAAY,OAAO,4BAA4B,CAChD,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAC5C,SAAS,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAClC,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,OAAO,OAAO,CAAC,MAA4B,CAAC;AAC9C,CAAC","sourcesContent":["/**\n * `crypto-aio/native`: the escape hatch to a handle's own SDK client, outside the semver\n * guarantees of crypto-aio.\n *\n * @module crypto-aio/native\n */\nimport type { Blockchain } from './core/blockchain/handle';\nimport { internalsOf } from './core/blockchain/internal';\nimport { ConfigError, UnsupportedCapabilityError } from './core/errors/error';\nimport type { ChainId, NativeClientMap } from './core/model/ids';\n\n/**\n * Escape hatch to the underlying SDK client. OUTSIDE the semver guarantees of crypto-aio.\n *\n * The client belongs to this handle only: the driver builds it for the handle on the first\n * call, and later calls on the same handle return that same client. It is never the pooled\n * instance the drivers use, so mutating it cannot affect other handles or tenants, and it is\n * reachable only through this function (not through the handle, `JSON` or `inspect`). The\n * library name must match the handle's (`INCOMPATIBLE_SELECTION` otherwise).\n *\n * The root container's `close()` releases every client handed out here; after it,\n * `native()` fails with `INVALID_TRANSITION`, as the handle's own methods do.\n */\nexport async function native<\n L extends Extract<keyof NativeClientMap, string>,\n C extends ChainId = ChainId,\n>(handle: Blockchain<C>, library: L): Promise<NativeClientMap[L]> {\n const internals = internalsOf(handle);\n internals.assertOpen();\n if (internals.selection.library !== library) {\n throw new ConfigError(\n 'INCOMPATIBLE_SELECTION',\n // The caller's text (perhaps a pasted secret) is never repeated; the handle's own\n // library is named.\n `this handle's library is '${internals.selection.library}'; ask native() for that one`,\n );\n }\n const cached = internals.nativeClients.get(library);\n if (cached !== undefined) return cached as NativeClientMap[L];\n const { driver } = await internals.pooled();\n internals.assertOpen(); // the root may have closed while this call awaited the driver\n // A concurrent call may have built the client while this one awaited the driver.\n const built = internals.nativeClients.get(library);\n if (built !== undefined) return built as NativeClientMap[L];\n if (!driver.createNativeClient) {\n throw new UnsupportedCapabilityError(\n 'UNSUPPORTED_CAPABILITY',\n `library '${library}' exposes no native client`,\n );\n }\n const created = driver.createNativeClient();\n internals.registerNative(created);\n internals.nativeClients.set(library, created.client);\n return created.client as NativeClientMap[L];\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/** Minimal test-framework surface; pass wrappers around your framework's describe/it. */
|
|
2
|
+
export interface ContractTestApi {
|
|
3
|
+
describe(name: string, fn: () => void): void;
|
|
4
|
+
it(name: string, fn: () => Promise<void>): void;
|
|
5
|
+
}
|
|
6
|
+
export declare function rejectsWithCode(promise: Promise<unknown>, code: string): Promise<void>;
|
|
7
|
+
/**
|
|
8
|
+
* Everything an error carries as text (its message, its JSON form and its causes')
|
|
9
|
+
* leaves out each of `secrets`. Store keys embed wallet addresses, and error messages
|
|
10
|
+
* reach logs.
|
|
11
|
+
*/
|
|
12
|
+
export declare function rejectsWithCodeKeepingOut(promise: Promise<unknown>, code: string, secrets: readonly string[]): Promise<void>;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.rejectsWithCode = rejectsWithCode;
|
|
7
|
+
exports.rejectsWithCodeKeepingOut = rejectsWithCodeKeepingOut;
|
|
8
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
9
|
+
async function rejectsWithCode(promise, code) {
|
|
10
|
+
try {
|
|
11
|
+
await promise;
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
strict_1.default.equal(error.code, code);
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
strict_1.default.fail(`expected a rejection with code ${code}`);
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Everything an error carries as text (its message, its JSON form and its causes')
|
|
21
|
+
* leaves out each of `secrets`. Store keys embed wallet addresses, and error messages
|
|
22
|
+
* reach logs.
|
|
23
|
+
*/
|
|
24
|
+
async function rejectsWithCodeKeepingOut(promise, code, secrets) {
|
|
25
|
+
let caught;
|
|
26
|
+
let rejected = false;
|
|
27
|
+
try {
|
|
28
|
+
await promise;
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
caught = error;
|
|
32
|
+
rejected = true;
|
|
33
|
+
}
|
|
34
|
+
if (!rejected)
|
|
35
|
+
strict_1.default.fail(`expected a rejection with code ${code}`);
|
|
36
|
+
strict_1.default.equal(caught.code, code);
|
|
37
|
+
const text = textOf(caught);
|
|
38
|
+
for (const secret of secrets) {
|
|
39
|
+
strict_1.default.ok(!text.includes(secret), `a ${code} error names a store key`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
function textOf(error) {
|
|
43
|
+
const parts = [];
|
|
44
|
+
let current = error;
|
|
45
|
+
for (let depth = 0; depth < 8 && current !== undefined && current !== null; depth += 1) {
|
|
46
|
+
if (current instanceof Error)
|
|
47
|
+
parts.push(current.name, current.message);
|
|
48
|
+
try {
|
|
49
|
+
parts.push(JSON.stringify(current, (_key, value) => typeof value === 'bigint' ? value.toString() : value) ?? '');
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
parts.push(String(current));
|
|
53
|
+
}
|
|
54
|
+
current = current.cause;
|
|
55
|
+
}
|
|
56
|
+
return parts.join('\n');
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/testing/contracts/api.ts"],"names":[],"mappings":";;;;;AAQA,0CAWC;AAOD,8DAmBC;AA7CD,gEAAwC;AAQjC,KAAK,UAAU,eAAe,CACnC,OAAyB,EACzB,IAAY;IAEZ,IAAI,CAAC;QACH,MAAM,OAAO,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,gBAAM,CAAC,KAAK,CAAE,KAA4B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACvD,OAAO;IACT,CAAC;IACD,gBAAM,CAAC,IAAI,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,yBAAyB,CAC7C,OAAyB,EACzB,IAAY,EACZ,OAA0B;IAE1B,IAAI,MAAe,CAAC;IACpB,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,GAAG,KAAK,CAAC;QACf,QAAQ,GAAG,IAAI,CAAC;IAClB,CAAC;IACD,IAAI,CAAC,QAAQ;QAAE,gBAAM,CAAC,IAAI,CAAC,kCAAkC,IAAI,EAAE,CAAC,CAAC;IACrE,gBAAM,CAAC,KAAK,CAAE,MAA6B,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,gBAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,IAAI,0BAA0B,CAAC,CAAC;IACzE,CAAC;AACH,CAAC;AAED,SAAS,MAAM,CAAC,KAAc;IAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KACE,IAAI,KAAK,GAAG,CAAC,EACb,KAAK,GAAG,CAAC,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,EACtD,KAAK,IAAI,CAAC,EACV,CAAC;QACD,IAAI,OAAO,YAAY,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,KAAK,CAAC,IAAI,CACR,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,KAAc,EAAE,EAAE,CAC/C,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CACrD,IAAI,EAAE,CACR,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,GAAI,OAA+B,CAAC,KAAK,CAAC;IACnD,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC","sourcesContent":["import assert from 'node:assert/strict';\n\n/** Minimal test-framework surface; pass wrappers around your framework's describe/it. */\nexport interface ContractTestApi {\n describe(name: string, fn: () => void): void;\n it(name: string, fn: () => Promise<void>): void;\n}\n\nexport async function rejectsWithCode(\n promise: Promise<unknown>,\n code: string,\n): Promise<void> {\n try {\n await promise;\n } catch (error) {\n assert.equal((error as { code?: unknown }).code, code);\n return;\n }\n assert.fail(`expected a rejection with code ${code}`);\n}\n\n/**\n * Everything an error carries as text (its message, its JSON form and its causes')\n * leaves out each of `secrets`. Store keys embed wallet addresses, and error messages\n * reach logs.\n */\nexport async function rejectsWithCodeKeepingOut(\n promise: Promise<unknown>,\n code: string,\n secrets: readonly string[],\n): Promise<void> {\n let caught: unknown;\n let rejected = false;\n try {\n await promise;\n } catch (error) {\n caught = error;\n rejected = true;\n }\n if (!rejected) assert.fail(`expected a rejection with code ${code}`);\n assert.equal((caught as { code?: unknown }).code, code);\n const text = textOf(caught);\n for (const secret of secrets) {\n assert.ok(!text.includes(secret), `a ${code} error names a store key`);\n }\n}\n\nfunction textOf(error: unknown): string {\n const parts: string[] = [];\n let current = error;\n for (\n let depth = 0;\n depth < 8 && current !== undefined && current !== null;\n depth += 1\n ) {\n if (current instanceof Error) parts.push(current.name, current.message);\n try {\n parts.push(\n JSON.stringify(current, (_key, value: unknown) =>\n typeof value === 'bigint' ? value.toString() : value,\n ) ?? '',\n );\n } catch {\n parts.push(String(current));\n }\n current = (current as { cause?: unknown }).cause;\n }\n return parts.join('\\n');\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CursorStore } from '../../core/store/types';
|
|
2
|
+
import { type ContractTestApi } from './api';
|
|
3
|
+
export interface CursorHarness {
|
|
4
|
+
readonly cursors: CursorStore;
|
|
5
|
+
}
|
|
6
|
+
export declare function describeCursorStoreContract(api: ContractTestApi, create: () => CursorHarness | Promise<CursorHarness>): void;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.describeCursorStoreContract = describeCursorStoreContract;
|
|
7
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
8
|
+
const api_1 = require("./api");
|
|
9
|
+
function describeCursorStoreContract(api, create) {
|
|
10
|
+
api.describe('CursorStore contract', () => {
|
|
11
|
+
api.it('stores cursors with compare-and-set versions', async () => {
|
|
12
|
+
const { cursors } = await create();
|
|
13
|
+
strict_1.default.equal(await cursors.get('c'), null);
|
|
14
|
+
const cursor = {
|
|
15
|
+
height: 2n ** 40n,
|
|
16
|
+
hash: 'h1',
|
|
17
|
+
recent: [{ height: 2n ** 40n, hash: 'h1' }],
|
|
18
|
+
};
|
|
19
|
+
strict_1.default.equal(await cursors.put('c', cursor, null), 1);
|
|
20
|
+
strict_1.default.deepEqual(await cursors.get('c'), { cursor, version: 1 });
|
|
21
|
+
const updated = { ...cursor, hash: 'h2' };
|
|
22
|
+
strict_1.default.equal(await cursors.put('c', updated, 1), 2);
|
|
23
|
+
const stored = { cursor: updated, version: 2 };
|
|
24
|
+
strict_1.default.deepEqual(await cursors.get('c'), stored);
|
|
25
|
+
await (0, api_1.rejectsWithCode)(cursors.put('c', cursor, 1), 'VERSION_CONFLICT');
|
|
26
|
+
strict_1.default.deepEqual(await cursors.get('c'), stored);
|
|
27
|
+
await (0, api_1.rejectsWithCode)(cursors.put('c', cursor, null), 'VERSION_CONFLICT');
|
|
28
|
+
strict_1.default.deepEqual(await cursors.get('c'), stored);
|
|
29
|
+
});
|
|
30
|
+
api.it('keeps the key out of its errors', async () => {
|
|
31
|
+
// A cursor key can name a watched wallet, and error messages reach logs.
|
|
32
|
+
const { cursors } = await create();
|
|
33
|
+
const key = 'deposits:bitcoin:mainnet:bc1qcursorkeyc0ffee0000000000000000000000';
|
|
34
|
+
const cursor = { height: 1n, hash: 'h1', recent: [{ height: 1n, hash: 'h1' }] };
|
|
35
|
+
await cursors.put(key, cursor, null);
|
|
36
|
+
await (0, api_1.rejectsWithCodeKeepingOut)(cursors.put(key, cursor, null), 'VERSION_CONFLICT', [key]);
|
|
37
|
+
await (0, api_1.rejectsWithCodeKeepingOut)(cursors.put(key, cursor, 9), 'VERSION_CONFLICT', [
|
|
38
|
+
key,
|
|
39
|
+
]);
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=cursors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursors.js","sourceRoot":"","sources":["../../../src/testing/contracts/cursors.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert/strict';\nimport type { CursorStore } from '../../core/store/types';\nimport { rejectsWithCode, rejectsWithCodeKeepingOut, type ContractTestApi } from './api';\n\nexport interface CursorHarness {\n readonly cursors: CursorStore;\n}\n\nexport function describeCursorStoreContract(\n api: ContractTestApi,\n create: () => CursorHarness | Promise<CursorHarness>,\n): void {\n api.describe('CursorStore contract', () => {\n api.it('stores cursors with compare-and-set versions', async () => {\n const { cursors } = await create();\n assert.equal(await cursors.get('c'), null);\n const cursor = {\n height: 2n ** 40n,\n hash: 'h1',\n recent: [{ height: 2n ** 40n, hash: 'h1' }],\n };\n assert.equal(await cursors.put('c', cursor, null), 1);\n assert.deepEqual(await cursors.get('c'), { cursor, version: 1 });\n const updated = { ...cursor, hash: 'h2' };\n assert.equal(await cursors.put('c', updated, 1), 2);\n const stored = { cursor: updated, version: 2 };\n assert.deepEqual(await cursors.get('c'), stored);\n await rejectsWithCode(cursors.put('c', cursor, 1), 'VERSION_CONFLICT');\n assert.deepEqual(await cursors.get('c'), stored);\n await rejectsWithCode(cursors.put('c', cursor, null), 'VERSION_CONFLICT');\n assert.deepEqual(await cursors.get('c'), stored);\n });\n\n api.it('keeps the key out of its errors', async () => {\n // A cursor key can name a watched wallet, and error messages reach logs.\n const { cursors } = await create();\n const key = 'deposits:bitcoin:mainnet:bc1qcursorkeyc0ffee0000000000000000000000';\n const cursor = { height: 1n, hash: 'h1', recent: [{ height: 1n, hash: 'h1' }] };\n await cursors.put(key, cursor, null);\n await rejectsWithCodeKeepingOut(\n cursors.put(key, cursor, null),\n 'VERSION_CONFLICT',\n [key],\n );\n await rejectsWithCodeKeepingOut(cursors.put(key, cursor, 9), 'VERSION_CONFLICT', [\n key,\n ]);\n });\n });\n}\n"]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { LockManager } from '../../core/store/types';
|
|
2
|
+
import type { ContractTestApi } from './api';
|
|
3
|
+
export interface LockHarness {
|
|
4
|
+
readonly locks: LockManager;
|
|
5
|
+
/** Moves the store's notion of time forward (a fake clock, or a real sleep). */
|
|
6
|
+
advance(ms: number): Promise<void>;
|
|
7
|
+
}
|
|
8
|
+
export declare function describeLockManagerContract(api: ContractTestApi, create: () => LockHarness | Promise<LockHarness>, options?: {
|
|
9
|
+
readonly ttlMs?: number;
|
|
10
|
+
}): void;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.describeLockManagerContract = describeLockManagerContract;
|
|
7
|
+
const strict_1 = __importDefault(require("node:assert/strict"));
|
|
8
|
+
function describeLockManagerContract(api, create, options = {}) {
|
|
9
|
+
const ttl = options.ttlMs ?? 1_000;
|
|
10
|
+
api.describe('LockManager contract', () => {
|
|
11
|
+
api.it('grants one holder at a time per key', async () => {
|
|
12
|
+
const { locks } = await create();
|
|
13
|
+
const a = await locks.acquire('k', 'a', ttl);
|
|
14
|
+
strict_1.default.ok(a);
|
|
15
|
+
strict_1.default.equal(a.owner, 'a');
|
|
16
|
+
strict_1.default.equal(await locks.acquire('k', 'b', ttl), null);
|
|
17
|
+
strict_1.default.equal(await locks.acquire('k', 'a', ttl), null, 'leases are not reentrant');
|
|
18
|
+
strict_1.default.ok(await locks.acquire('other', 'b', ttl), 'keys are independent');
|
|
19
|
+
});
|
|
20
|
+
api.it('issues strictly increasing tokens across expiry and release', async () => {
|
|
21
|
+
const { locks, advance } = await create();
|
|
22
|
+
const a = await locks.acquire('k', 'a', ttl);
|
|
23
|
+
strict_1.default.ok(a);
|
|
24
|
+
await advance(ttl + 1);
|
|
25
|
+
const b = await locks.acquire('k', 'b', ttl);
|
|
26
|
+
strict_1.default.ok(b);
|
|
27
|
+
strict_1.default.ok(b.token > a.token);
|
|
28
|
+
await locks.release(b);
|
|
29
|
+
const c = await locks.acquire('k', 'c', ttl);
|
|
30
|
+
strict_1.default.ok(c);
|
|
31
|
+
strict_1.default.ok(c.token > b.token);
|
|
32
|
+
});
|
|
33
|
+
api.it('rejects a stale worker after takeover', async () => {
|
|
34
|
+
const { locks, advance } = await create();
|
|
35
|
+
const stale = await locks.acquire('k', 'a', ttl);
|
|
36
|
+
strict_1.default.ok(stale);
|
|
37
|
+
await advance(ttl + 1);
|
|
38
|
+
const fresh = await locks.acquire('k', 'b', ttl);
|
|
39
|
+
strict_1.default.ok(fresh);
|
|
40
|
+
strict_1.default.equal(await locks.renew(stale, ttl), null);
|
|
41
|
+
await locks.release(stale);
|
|
42
|
+
strict_1.default.equal(await locks.acquire('k', 'c', ttl), null, 'stale release must not free the new holder');
|
|
43
|
+
strict_1.default.ok(await locks.renew(fresh, ttl));
|
|
44
|
+
});
|
|
45
|
+
api.it('renews before expiry but not after', async () => {
|
|
46
|
+
const { locks, advance } = await create();
|
|
47
|
+
const lease = await locks.acquire('k', 'a', ttl);
|
|
48
|
+
strict_1.default.ok(lease);
|
|
49
|
+
await advance(Math.floor(ttl / 2));
|
|
50
|
+
const renewed = await locks.renew(lease, ttl);
|
|
51
|
+
strict_1.default.ok(renewed);
|
|
52
|
+
strict_1.default.equal(renewed.token, lease.token);
|
|
53
|
+
await advance(ttl + 1);
|
|
54
|
+
strict_1.default.equal(await locks.renew(renewed, ttl), null);
|
|
55
|
+
});
|
|
56
|
+
api.it('grants exactly one lease to concurrent acquirers', async () => {
|
|
57
|
+
const { locks } = await create();
|
|
58
|
+
const results = await Promise.all(Array.from({ length: 10 }, (_, i) => locks.acquire('k', `w${i}`, ttl)));
|
|
59
|
+
strict_1.default.equal(results.filter(Boolean).length, 1);
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=locks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"locks.js","sourceRoot":"","sources":["../../../src/testing/contracts/locks.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from 'node:assert/strict';\nimport type { LockManager } from '../../core/store/types';\nimport type { ContractTestApi } from './api';\n\nexport interface LockHarness {\n readonly locks: LockManager;\n /** Moves the store's notion of time forward (a fake clock, or a real sleep). */\n advance(ms: number): Promise<void>;\n}\n\nexport function describeLockManagerContract(\n api: ContractTestApi,\n create: () => LockHarness | Promise<LockHarness>,\n options: { readonly ttlMs?: number } = {},\n): void {\n const ttl = options.ttlMs ?? 1_000;\n api.describe('LockManager contract', () => {\n api.it('grants one holder at a time per key', async () => {\n const { locks } = await create();\n const a = await locks.acquire('k', 'a', ttl);\n assert.ok(a);\n assert.equal(a.owner, 'a');\n assert.equal(await locks.acquire('k', 'b', ttl), null);\n assert.equal(await locks.acquire('k', 'a', ttl), null, 'leases are not reentrant');\n assert.ok(await locks.acquire('other', 'b', ttl), 'keys are independent');\n });\n\n api.it('issues strictly increasing tokens across expiry and release', async () => {\n const { locks, advance } = await create();\n const a = await locks.acquire('k', 'a', ttl);\n assert.ok(a);\n await advance(ttl + 1);\n const b = await locks.acquire('k', 'b', ttl);\n assert.ok(b);\n assert.ok(b.token > a.token);\n await locks.release(b);\n const c = await locks.acquire('k', 'c', ttl);\n assert.ok(c);\n assert.ok(c.token > b.token);\n });\n\n api.it('rejects a stale worker after takeover', async () => {\n const { locks, advance } = await create();\n const stale = await locks.acquire('k', 'a', ttl);\n assert.ok(stale);\n await advance(ttl + 1);\n const fresh = await locks.acquire('k', 'b', ttl);\n assert.ok(fresh);\n assert.equal(await locks.renew(stale, ttl), null);\n await locks.release(stale);\n assert.equal(\n await locks.acquire('k', 'c', ttl),\n null,\n 'stale release must not free the new holder',\n );\n assert.ok(await locks.renew(fresh, ttl));\n });\n\n api.it('renews before expiry but not after', async () => {\n const { locks, advance } = await create();\n const lease = await locks.acquire('k', 'a', ttl);\n assert.ok(lease);\n await advance(Math.floor(ttl / 2));\n const renewed = await locks.renew(lease, ttl);\n assert.ok(renewed);\n assert.equal(renewed.token, lease.token);\n await advance(ttl + 1);\n assert.equal(await locks.renew(renewed, ttl), null);\n });\n\n api.it('grants exactly one lease to concurrent acquirers', async () => {\n const { locks } = await create();\n const results = await Promise.all(\n Array.from({ length: 10 }, (_, i) => locks.acquire('k', `w${i}`, ttl)),\n );\n assert.equal(results.filter(Boolean).length, 1);\n });\n });\n}\n"]}
|