crypto-aio 0.0.2 → 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/lib-types.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/adapters/ton/types.js +3 -0
- 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/core/model/transaction.js +3 -0
- 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 -44
- 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 -2
- package/dist/libs/eth/contract.js +0 -7
- package/dist/libs/eth/contract.js.map +0 -1
- package/dist/libs/eth/index.d.ts +0 -20
- package/dist/libs/eth/index.js +0 -62
- package/dist/libs/eth/index.js.map +0 -1
- package/dist/libs/eth/transact.d.ts +0 -2
- package/dist/libs/eth/transact.js +0 -7
- package/dist/libs/eth/transact.js.map +0 -1
- package/dist/libs/index.d.ts +0 -1
- package/dist/libs/index.js +0 -18
- package/dist/libs/index.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 -4
- package/dist/tool/index.js +0 -21
- 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 -4
- package/dist/tool/options.js +0 -28
- package/dist/tool/options.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/index.d.ts +0 -3
- package/dist/type/index.js +0 -20
- package/dist/type/index.js.map +0 -1
- package/dist/type/lib-types.d.ts +0 -7
- package/dist/type/lib-types.js.map +0 -1
|
@@ -0,0 +1,579 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Blockchain = void 0;
|
|
4
|
+
const resolve_1 = require("../config/resolve");
|
|
5
|
+
const internals_1 = require("../container/internals");
|
|
6
|
+
const error_1 = require("../errors/error");
|
|
7
|
+
const address_1 = require("../model/address");
|
|
8
|
+
const amount_1 = require("../model/amount");
|
|
9
|
+
const intent_1 = require("../model/intent");
|
|
10
|
+
const engine_1 = require("../lifecycle/engine");
|
|
11
|
+
const intent_2 = require("../lifecycle/intent");
|
|
12
|
+
const monitor_1 = require("../lifecycle/monitor");
|
|
13
|
+
const observations_1 = require("../lifecycle/observations");
|
|
14
|
+
const views_1 = require("../lifecycle/views");
|
|
15
|
+
const scanner_1 = require("../observe/scanner");
|
|
16
|
+
const hd_1 = require("../signing/hd");
|
|
17
|
+
const wallet_1 = require("../signing/wallet");
|
|
18
|
+
const bytes_1 = require("../util/bytes");
|
|
19
|
+
const names_1 = require("../util/names");
|
|
20
|
+
const default_ref_1 = require("./default-ref");
|
|
21
|
+
const internal_1 = require("./internal");
|
|
22
|
+
const mapping_1 = require("./mapping");
|
|
23
|
+
/** Immutable handle bound to one chain, network, library, provider set and wallet. */
|
|
24
|
+
class Blockchain {
|
|
25
|
+
/** @internal Use `CryptoAio#blockchain` or `Blockchain.create`. */
|
|
26
|
+
constructor(internals) {
|
|
27
|
+
(0, internal_1.bindInternals)(this, internals);
|
|
28
|
+
Object.freeze(this);
|
|
29
|
+
}
|
|
30
|
+
/** Creates a handle on the default container (see `configure`). */
|
|
31
|
+
static create(config) {
|
|
32
|
+
return (0, default_ref_1.defaultBlockchain)(config);
|
|
33
|
+
}
|
|
34
|
+
get chain() {
|
|
35
|
+
return (0, internal_1.internalsOf)(this).selection.chain.id;
|
|
36
|
+
}
|
|
37
|
+
get network() {
|
|
38
|
+
return (0, internal_1.internalsOf)(this).selection.network.id;
|
|
39
|
+
}
|
|
40
|
+
get library() {
|
|
41
|
+
return (0, internal_1.internalsOf)(this).selection.library;
|
|
42
|
+
}
|
|
43
|
+
/** Frozen, redacted snapshot of the resolved configuration. */
|
|
44
|
+
get config() {
|
|
45
|
+
return (0, resolve_1.describeSelection)((0, internal_1.internalsOf)(this).selection);
|
|
46
|
+
}
|
|
47
|
+
/** A fresh copy on every read; mutating the result never affects `supports()`. */
|
|
48
|
+
get capabilities() {
|
|
49
|
+
return new Set((0, internal_1.internalsOf)(this).selection.capabilities);
|
|
50
|
+
}
|
|
51
|
+
supports(capability) {
|
|
52
|
+
return (0, internal_1.internalsOf)(this).selection.capabilities.has(capability);
|
|
53
|
+
}
|
|
54
|
+
/** Returns a NEW handle; this handle and operations started from it are unaffected. */
|
|
55
|
+
with(overrides) {
|
|
56
|
+
const { selection, container } = (0, internal_1.internalsOf)(this);
|
|
57
|
+
return container.blockchain({
|
|
58
|
+
...selection.handle,
|
|
59
|
+
...overrides,
|
|
60
|
+
chain: this.chain,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Loads the adapter, connects its transport and validates it's actually usable; fails fast
|
|
65
|
+
* on a missing dependency (`DEPENDENCY_MISSING`), an invalid wallet (surfaced by resolving
|
|
66
|
+
* it), or a provider that can't serve reads: `PROVIDER_UNAVAILABLE` when no configured
|
|
67
|
+
* endpoint is usable, `PROVIDER_MISCONFIGURED` (non-retryable) when every endpoint's
|
|
68
|
+
* identity mismatches the configured network. An endpoint is usable when it's 'healthy',
|
|
69
|
+
* 'lagging' or 'half-open' (the breaker is willing to try it), or 'unknown' while the
|
|
70
|
+
* transport has no health probes configured at all — nothing could ever have marked it
|
|
71
|
+
* healthy/lagging in that case, so 'unknown' is simply its steady state.
|
|
72
|
+
*/
|
|
73
|
+
async ready() {
|
|
74
|
+
const internals = (0, internal_1.internalsOf)(this);
|
|
75
|
+
const pooled = await internals.pooled();
|
|
76
|
+
await pooled.transport.refreshHealth();
|
|
77
|
+
const statuses = pooled.transport.status();
|
|
78
|
+
if (statuses.length > 0 && statuses.every((s) => s.state === 'disabled')) {
|
|
79
|
+
throw new error_1.ProviderError('PROVIDER_MISCONFIGURED', `every endpoint for ${this.chain} serves a different network than configured`, { retryable: false });
|
|
80
|
+
}
|
|
81
|
+
const usable = (state) => state === 'healthy' ||
|
|
82
|
+
state === 'lagging' ||
|
|
83
|
+
state === 'half-open' ||
|
|
84
|
+
(state === 'unknown' && !pooled.transport.hasProbes());
|
|
85
|
+
if (!statuses.some((s) => usable(s.state))) {
|
|
86
|
+
throw new error_1.ProviderError('PROVIDER_UNAVAILABLE', `no healthy endpoint for ${this.chain}`);
|
|
87
|
+
}
|
|
88
|
+
if (internals.selection.wallet)
|
|
89
|
+
await internals.wallet();
|
|
90
|
+
return this;
|
|
91
|
+
}
|
|
92
|
+
async limits() {
|
|
93
|
+
const { driver } = await (0, internal_1.internalsOf)(this).pooled();
|
|
94
|
+
const wallet = (0, internal_1.internalsOf)(this).selection.wallet;
|
|
95
|
+
const options = wallet ? (0, wallet_1.walletOptionsOf)(wallet.config) : {};
|
|
96
|
+
return (driver.limits?.(options) ?? {
|
|
97
|
+
maxOutputs: this.supports('batch-transfer') ? Number.MAX_SAFE_INTEGER : 1,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
async validateAddress(address) {
|
|
101
|
+
return (await this.mapping()).driver.address.validate(address);
|
|
102
|
+
}
|
|
103
|
+
async normalizeAddress(address) {
|
|
104
|
+
return (0, mapping_1.toAddress)(await this.mapping(), address);
|
|
105
|
+
}
|
|
106
|
+
/** The chain's address for `publicKey`. `options.hd` is reserved: the core builds it
|
|
107
|
+
* from a wallet's `xpub`, so a caller's `hd` is dropped and never reaches the driver.
|
|
108
|
+
* `null` options (from an untyped caller) are none. */
|
|
109
|
+
async addressFromPublicKey(publicKey, options = {}) {
|
|
110
|
+
const { hd: _reserved, ...callerOptions } = options ?? {};
|
|
111
|
+
const bytes = typeof publicKey === 'string' ? (0, bytes_1.fromHex)(publicKey) : publicKey;
|
|
112
|
+
return this.driverAddress(bytes, callerOptions);
|
|
113
|
+
}
|
|
114
|
+
/** Address of the handle's own selected wallet, or of another configured `wallet` by name
|
|
115
|
+
* — resolved fresh against this handle's driver, without switching the handle.
|
|
116
|
+
* Re-resolved through `resolveSelection` (not `resolveWallet` directly) so a
|
|
117
|
+
* named wallet gets the same `wallet.chains` enablement check, unknown-signer validation and
|
|
118
|
+
* signer-scheme compatibility check that the handle's own wallet got at construction. */
|
|
119
|
+
async walletAddress(wallet) {
|
|
120
|
+
const internals = (0, internal_1.internalsOf)(this);
|
|
121
|
+
const selection = internals.selection;
|
|
122
|
+
if (wallet === undefined || wallet === selection.wallet?.name) {
|
|
123
|
+
return (await internals.wallet()).address;
|
|
124
|
+
}
|
|
125
|
+
const container = (0, internals_1.containerOf)(internals.container);
|
|
126
|
+
const effective = container.effective();
|
|
127
|
+
// An own-property check, so a wallet literally named 'constructor' (or any other
|
|
128
|
+
// Object.prototype key) can never be mistaken for one that exists.
|
|
129
|
+
if (!Object.hasOwn(effective.wallets, wallet)) {
|
|
130
|
+
throw new error_1.ConfigError('CONFIG_INVALID', (0, names_1.unknownName)('wallet', Object.keys(effective.wallets)));
|
|
131
|
+
}
|
|
132
|
+
const { driver } = await internals.pooled();
|
|
133
|
+
const resolved = (0, resolve_1.resolveSelection)({
|
|
134
|
+
handle: { ...selection.handle, wallet, signer: undefined },
|
|
135
|
+
effective,
|
|
136
|
+
catalogs: container.runtime.catalogs,
|
|
137
|
+
});
|
|
138
|
+
const resolvedWallet = await (0, wallet_1.resolveWallet)(resolved, driver, effective.signers, container.runtime.catalogs.schemes, container.signerDeadline());
|
|
139
|
+
return resolvedWallet.address;
|
|
140
|
+
}
|
|
141
|
+
/** Derives a deposit address from the wallet's xpub (capability `hd-public-derivation`). */
|
|
142
|
+
async deriveAddress(wallet, index) {
|
|
143
|
+
if (!this.supports('hd-public-derivation')) {
|
|
144
|
+
throw new error_1.UnsupportedCapabilityError('UNSUPPORTED_CAPABILITY', `${this.chain} does not support public derivation`);
|
|
145
|
+
}
|
|
146
|
+
if (!Number.isInteger(index) || index < 0 || index >= 2 ** 31) {
|
|
147
|
+
throw new error_1.ValidationError('INVALID_INTENT', 'derivation index must be an integer in [0, 2^31)');
|
|
148
|
+
}
|
|
149
|
+
const internals = (0, internal_1.internalsOf)(this);
|
|
150
|
+
const { wallets } = (0, internals_1.containerOf)(internals.container).effective();
|
|
151
|
+
// Own keys only, so `toString` is no wallet. The caller's text is never repeated: it
|
|
152
|
+
// may be a pasted secret.
|
|
153
|
+
if (!Object.hasOwn(wallets, wallet)) {
|
|
154
|
+
throw new error_1.ConfigError('CONFIG_INVALID', (0, names_1.unknownName)('wallet', Object.keys(wallets)));
|
|
155
|
+
}
|
|
156
|
+
const config = wallets[wallet];
|
|
157
|
+
if (!config?.xpub)
|
|
158
|
+
throw new error_1.ConfigError('CONFIG_INVALID', `wallet '${wallet}' has no xpub`);
|
|
159
|
+
// A non-string xpubPath is CONFIG_INVALID, as at wallet resolution.
|
|
160
|
+
const path = ((0, wallet_1.xpubPathOf)(config) ?? '0/{index}').replace('{index}', String(index));
|
|
161
|
+
// A UTXO chain's extended keys carry its network class; account-model
|
|
162
|
+
// wallets (EVM, Tron) export `xpub` on every network, so theirs is not checked. A chain
|
|
163
|
+
// whose wallets do the same says so (`xpubNetworkClass: false`, Avalanche X/P).
|
|
164
|
+
const { chain, network } = internals.selection;
|
|
165
|
+
const classed = chain.xpubNetworkClass ?? chain.model === 'utxo';
|
|
166
|
+
const publicKey = (0, hd_1.deriveXpubChild)(config.xpub, path, config.xpubVersions, classed ? { testnet: network.testnet } : undefined);
|
|
167
|
+
// The core's own options, with the wallet's `hd`, reach the driver directly.
|
|
168
|
+
return this.driverAddress(publicKey, (0, wallet_1.walletOptionsOf)(config));
|
|
169
|
+
}
|
|
170
|
+
async resolveAsset(asset) {
|
|
171
|
+
const m = await this.mapping();
|
|
172
|
+
return m.assets.resolve(m.selection, m.driver, asset);
|
|
173
|
+
}
|
|
174
|
+
async getBalance(address, asset) {
|
|
175
|
+
const m = await this.mapping();
|
|
176
|
+
const target = (0, mapping_1.toAddress)(m, address);
|
|
177
|
+
const info = await m.assets.resolve(m.selection, m.driver, asset);
|
|
178
|
+
const base = await m.driver.reader.getBalance(target.canonical, info.ref);
|
|
179
|
+
return { address: target, asset: info, amount: amount_1.Amount.fromBase(base, info) };
|
|
180
|
+
}
|
|
181
|
+
async getBalances(address, assets) {
|
|
182
|
+
return Promise.all(assets.map((asset) => this.getBalance(address, asset)));
|
|
183
|
+
}
|
|
184
|
+
async estimateFee(intent) {
|
|
185
|
+
const m = await this.mapping();
|
|
186
|
+
const internals = (0, internal_1.internalsOf)(this);
|
|
187
|
+
const wallet = internals.selection.wallet ? await internals.wallet() : undefined;
|
|
188
|
+
const from = intent.from !== undefined ? (0, mapping_1.toAddress)(m, intent.from) : wallet?.address;
|
|
189
|
+
if (!from)
|
|
190
|
+
throw new error_1.ValidationError('INVALID_INTENT', 'estimateFee needs a wallet or intent.from');
|
|
191
|
+
const normalized = await (0, intent_2.normalizeIntent)(m, intent, from);
|
|
192
|
+
const draft = await m.driver.builder.estimateFee((0, intent_1.toStoredIntent)(normalized), {
|
|
193
|
+
from: from.canonical,
|
|
194
|
+
keys: wallet?.keys ?? [],
|
|
195
|
+
wallet: wallet?.options ?? {},
|
|
196
|
+
});
|
|
197
|
+
return (0, mapping_1.toFeeEstimate)(m, draft);
|
|
198
|
+
}
|
|
199
|
+
async getTransaction(id) {
|
|
200
|
+
const m = await this.mapping();
|
|
201
|
+
const tx = await m.driver.reader.getTransaction(id);
|
|
202
|
+
if (!tx)
|
|
203
|
+
return null;
|
|
204
|
+
const [head, finalized] = await Promise.all([
|
|
205
|
+
m.driver.reader.getBlockHeight(),
|
|
206
|
+
m.driver.reader.getFinalizedHeight(),
|
|
207
|
+
]);
|
|
208
|
+
return (0, mapping_1.toTransaction)(m, tx, head, finalized);
|
|
209
|
+
}
|
|
210
|
+
/** Status of a managed Operation (by id, Attempt ref or tx hash) or of any transaction id. */
|
|
211
|
+
async getTransactionStatus(id) {
|
|
212
|
+
return (await this.monitor().status(await this.readTarget(), id)).status;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Resolves once `confirmations` (default: the handle's) are reached. With
|
|
216
|
+
* `finality: 'final'`, a managed Operation (by id, Attempt ref or tx hash) resolves on
|
|
217
|
+
* **proven** finality (finalized data confirmed by quorum proof reads); a transaction the
|
|
218
|
+
* library does not manage resolves on **observed** finality (one endpoint's view of a
|
|
219
|
+
* block at or below the finalized height). Rejects with the chain error when the
|
|
220
|
+
* Operation fails, expires or is replaced (`TX_REVERTED` for an unmanaged transaction
|
|
221
|
+
* that reverted), with `TIMEOUT` (retryable, state unchanged) when time runs out, and
|
|
222
|
+
* with the reason of an aborted `signal`.
|
|
223
|
+
*/
|
|
224
|
+
async waitForConfirmation(ref, options = {}) {
|
|
225
|
+
const { status, record } = await this.monitor().waitFor(await this.readTarget(), ref, options);
|
|
226
|
+
return { status, ...(record ? { operation: await this.view(record) } : {}) };
|
|
227
|
+
}
|
|
228
|
+
/** Yields each status change until the Operation is terminal (or the transaction is final). */
|
|
229
|
+
watch(ref, options = {}) {
|
|
230
|
+
const readTarget = () => this.readTarget();
|
|
231
|
+
const monitor = () => this.monitor();
|
|
232
|
+
const view = (record) => this.view(record);
|
|
233
|
+
return {
|
|
234
|
+
async *[Symbol.asyncIterator]() {
|
|
235
|
+
const target = await readTarget();
|
|
236
|
+
for await (const snapshot of monitor().watch(target, ref, options)) {
|
|
237
|
+
yield {
|
|
238
|
+
status: snapshot.status,
|
|
239
|
+
...(snapshot.record ? { operation: await view(snapshot.record) } : {}),
|
|
240
|
+
};
|
|
241
|
+
}
|
|
242
|
+
},
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
async getBlockHeight() {
|
|
246
|
+
return (await this.mapping()).driver.reader.getBlockHeight();
|
|
247
|
+
}
|
|
248
|
+
async getBlock(ref) {
|
|
249
|
+
const block = await (await this.mapping()).driver.reader.getBlock(ref);
|
|
250
|
+
return block ? (0, mapping_1.toBlock)(block) : null;
|
|
251
|
+
}
|
|
252
|
+
/**
|
|
253
|
+
* Reorg-aware, at-least-once block scanner (capability `block-scan`): `ack()` each event
|
|
254
|
+
* to commit the cursor before asking for the next. Invalid options throw `CONFIG_INVALID`.
|
|
255
|
+
*/
|
|
256
|
+
scanner(options) {
|
|
257
|
+
if (!this.supports('block-scan')) {
|
|
258
|
+
throw new error_1.UnsupportedCapabilityError('UNSUPPORTED_CAPABILITY', `${this.chain} does not support block scanning`);
|
|
259
|
+
}
|
|
260
|
+
const internals = (0, internal_1.internalsOf)(this);
|
|
261
|
+
const container = (0, internals_1.containerOf)(internals.container);
|
|
262
|
+
const { runtime } = container;
|
|
263
|
+
return new scanner_1.Scanner({
|
|
264
|
+
load: async () => {
|
|
265
|
+
// One pooled entry, so the driver and its transport always belong together.
|
|
266
|
+
const { driver, transport } = await internals.pooled();
|
|
267
|
+
const blocks = driver.blocks;
|
|
268
|
+
if (!blocks)
|
|
269
|
+
throw new error_1.UnsupportedCapabilityError('UNSUPPORTED_CAPABILITY', `${this.chain} driver has no block source`);
|
|
270
|
+
const mapping = {
|
|
271
|
+
selection: internals.selection,
|
|
272
|
+
driver,
|
|
273
|
+
assets: runtime.assets,
|
|
274
|
+
};
|
|
275
|
+
return { mapping, blocks, transport };
|
|
276
|
+
},
|
|
277
|
+
cursors: runtime.stores.cursors,
|
|
278
|
+
events: runtime.events,
|
|
279
|
+
clock: runtime.clock,
|
|
280
|
+
namespace: runtime.namespace,
|
|
281
|
+
defaults: {
|
|
282
|
+
reorgWindow: internals.selection.network.reorgWindow,
|
|
283
|
+
pollIntervalMs: (0, engine_1.withLifecycleDefaults)(container.effective().lifecycle)
|
|
284
|
+
.pollIntervalMs,
|
|
285
|
+
},
|
|
286
|
+
}, options);
|
|
287
|
+
}
|
|
288
|
+
/** Indexer-backed transaction history of an address (capability `address-history`). */
|
|
289
|
+
async history(address, options = {}) {
|
|
290
|
+
if (!this.supports('address-history')) {
|
|
291
|
+
throw new error_1.UnsupportedCapabilityError('UNSUPPORTED_CAPABILITY', `${this.chain} has no address history (configure an indexer)`);
|
|
292
|
+
}
|
|
293
|
+
const { cursor, limit = 50 } = options;
|
|
294
|
+
if (!Number.isSafeInteger(limit) || limit < 1) {
|
|
295
|
+
throw new error_1.ConfigError('CONFIG_INVALID', 'history limit must be a positive integer');
|
|
296
|
+
}
|
|
297
|
+
if (cursor !== undefined && typeof cursor !== 'string') {
|
|
298
|
+
throw new error_1.ConfigError('CONFIG_INVALID', 'history cursor must be a string');
|
|
299
|
+
}
|
|
300
|
+
const m = await this.mapping();
|
|
301
|
+
const source = m.driver.history;
|
|
302
|
+
if (!source)
|
|
303
|
+
throw new error_1.UnsupportedCapabilityError('UNSUPPORTED_CAPABILITY', `${this.chain} driver has no history source`);
|
|
304
|
+
const page = await source.list((0, mapping_1.toAddress)(m, address).canonical, {
|
|
305
|
+
...(cursor !== undefined ? { cursor } : {}),
|
|
306
|
+
limit,
|
|
307
|
+
});
|
|
308
|
+
const [head, finalized] = await Promise.all([
|
|
309
|
+
m.driver.reader.getBlockHeight(),
|
|
310
|
+
m.driver.reader.getFinalizedHeight(),
|
|
311
|
+
]);
|
|
312
|
+
return {
|
|
313
|
+
items: await Promise.all(page.items.map((tx) => (0, mapping_1.toTransaction)(m, tx, head, finalized))),
|
|
314
|
+
...(page.next !== undefined ? { next: page.next } : {}),
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
async getNetworkStatus() {
|
|
318
|
+
const pooled = await (0, internal_1.internalsOf)(this).pooled();
|
|
319
|
+
await pooled.transport.refreshHealth();
|
|
320
|
+
if (pooled.indexer)
|
|
321
|
+
await pooled.indexer.refreshHealth();
|
|
322
|
+
const [height, finalized] = await Promise.all([
|
|
323
|
+
pooled.driver.reader.getBlockHeight(),
|
|
324
|
+
pooled.driver.reader.getFinalizedHeight(),
|
|
325
|
+
]);
|
|
326
|
+
return {
|
|
327
|
+
chain: this.chain,
|
|
328
|
+
network: this.network,
|
|
329
|
+
height,
|
|
330
|
+
// Two reads, possibly from different endpoints, with blocks landing between
|
|
331
|
+
// them: where the latest block is final, the finalized height can pass the head read.
|
|
332
|
+
// Every height below a final one is final, so the clamp keeps the status true.
|
|
333
|
+
finalizedHeight: finalized > height ? height : finalized,
|
|
334
|
+
endpoints: pooled.transport.status(),
|
|
335
|
+
indexers: pooled.indexer?.status() ?? [],
|
|
336
|
+
};
|
|
337
|
+
}
|
|
338
|
+
/** Builds and persists the unsigned transaction (reserving nonce/inputs) for offline or async signing. */
|
|
339
|
+
async prepareTransfer(intent, options = {}) {
|
|
340
|
+
const target = await this.target();
|
|
341
|
+
return this.prepared(target, await this.engine().prepare(target, intent, options));
|
|
342
|
+
}
|
|
343
|
+
/**
|
|
344
|
+
* Idempotent transfer. Throws the mapped chain error when the Operation stalls or fails;
|
|
345
|
+
* throws an `ambiguous` error (with `context.operationId`) when the broadcast outcome is
|
|
346
|
+
* unknown. Retry with the same `idempotencyKey` in both cases.
|
|
347
|
+
*/
|
|
348
|
+
async transfer(intent, options = {}) {
|
|
349
|
+
const target = await this.target();
|
|
350
|
+
return this.submission(await this.engine().transfer(target, intent, options));
|
|
351
|
+
}
|
|
352
|
+
/**
|
|
353
|
+
* Completes an Operation that awaits signatures, with signature bundles or with the whole
|
|
354
|
+
* payload signed elsewhere, e.g. a signed PSBT: the driver extracts its signatures
|
|
355
|
+
* (`TxBuilder.signaturesFrom`), and each is verified against the stored request exactly
|
|
356
|
+
* like a bundle. `UNSUPPORTED_CAPABILITY` when the chain's driver cannot read one.
|
|
357
|
+
*/
|
|
358
|
+
async submitSignatures(operationId, signatures) {
|
|
359
|
+
const target = await this.target();
|
|
360
|
+
let bundles;
|
|
361
|
+
if (Array.isArray(signatures)) {
|
|
362
|
+
bundles = signatures;
|
|
363
|
+
}
|
|
364
|
+
else {
|
|
365
|
+
if (!isRawTx(signatures)) {
|
|
366
|
+
throw new error_1.ValidationError('INVALID_INTENT', 'signatures must be signature bundles or a signed payload { encoding, data }');
|
|
367
|
+
}
|
|
368
|
+
const { builder } = target.pooled.driver;
|
|
369
|
+
if (!builder.signaturesFrom) {
|
|
370
|
+
throw new error_1.UnsupportedCapabilityError('UNSUPPORTED_CAPABILITY', `${this.chain} cannot read a signed payload; submit signature bundles`);
|
|
371
|
+
}
|
|
372
|
+
// Ownership first, so another wallet's Operation never reaches the driver.
|
|
373
|
+
const record = await this.engine().requireOwned(target, operationId);
|
|
374
|
+
if (!record.unsigned) {
|
|
375
|
+
throw new error_1.StateError('INVALID_TRANSITION', `operation '${operationId}' has no transaction awaiting signatures`, { context: { operationId } });
|
|
376
|
+
}
|
|
377
|
+
try {
|
|
378
|
+
bundles = builder.signaturesFrom(record.unsigned, signatures);
|
|
379
|
+
}
|
|
380
|
+
catch (error) {
|
|
381
|
+
// A driver's own classified error passes through; a foreign one (an SDK's
|
|
382
|
+
// parse error, which may quote the payload) becomes a fixed text with no cause.
|
|
383
|
+
if ((0, error_1.isCryptoAioError)(error))
|
|
384
|
+
throw error;
|
|
385
|
+
throw new error_1.ValidationError('INVALID_INTENT', 'the signed payload could not be read');
|
|
386
|
+
}
|
|
387
|
+
}
|
|
388
|
+
return this.submission(await this.engine().submitSignatures(target, operationId, bundles));
|
|
389
|
+
}
|
|
390
|
+
/** Resends the active Attempt's stored raw transaction (e.g. after topping up a stalled wallet). */
|
|
391
|
+
async rebroadcast(operationId) {
|
|
392
|
+
return this.submission(await this.engine().rebroadcast(await this.target(), operationId));
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Replaces a pending transfer with a higher-fee, mutually exclusive Attempt (capability
|
|
396
|
+
* `replace-fee`; a synchronous signer). If the node refuses it, the original stays live
|
|
397
|
+
* and active, and the node's error is thrown.
|
|
398
|
+
*
|
|
399
|
+
* Idempotent per fee spec: repeating the call with the same `fee` (the same speed name,
|
|
400
|
+
* or an equal override) returns the replacement it already made, resending it if its
|
|
401
|
+
* broadcast was never recorded or it was refused; nothing is signed again, and a refusal
|
|
402
|
+
* is thrown, never reported as a success. To bump again, pass another spec, such as a
|
|
403
|
+
* higher explicit override.
|
|
404
|
+
*
|
|
405
|
+
* While that replacement is stored but not yet sent, another fee spec (or a cancel) is
|
|
406
|
+
* refused with `INVALID_TRANSITION`: repeat the same spec, or call `rebroadcast`, first.
|
|
407
|
+
*/
|
|
408
|
+
async replace(operationId, options) {
|
|
409
|
+
return this.submission(await this.engine().replace(await this.target(), operationId, options.fee));
|
|
410
|
+
}
|
|
411
|
+
/**
|
|
412
|
+
* Tries to cancel with a conflicting Attempt (capability `cancel`); the outcome is
|
|
413
|
+
* `cancelled` only if the cancel wins at finality, and the original may still win. The
|
|
414
|
+
* cancel pays the network's minimum bump over the highest earlier cancel, or `options.fee`
|
|
415
|
+
* (refused below that bump).
|
|
416
|
+
*
|
|
417
|
+
* Repeating the call while a cancel is pending resends it if its broadcast was never
|
|
418
|
+
* recorded, and returns it while a node holds it or once it is on chain, so concurrent and
|
|
419
|
+
* retried calls create one cancel. Only a cancel the node refused or dropped is bumped by
|
|
420
|
+
* a repeat, one step at a time; when the node's minimum fee is more than one bump away,
|
|
421
|
+
* pass `options.fee`, which always builds a new cancel while none is on chain.
|
|
422
|
+
*
|
|
423
|
+
* While a replacement is stored but not yet sent, a cancel is refused with
|
|
424
|
+
* `INVALID_TRANSITION`: repeat that replacement's fee, or call `rebroadcast`, first.
|
|
425
|
+
*/
|
|
426
|
+
async cancel(operationId, options = {}) {
|
|
427
|
+
return this.submission(await this.engine().cancel(await this.target(), operationId, options.fee));
|
|
428
|
+
}
|
|
429
|
+
/** Expiry-based chains: re-issues an Operation whose earlier Attempts are provably expired. */
|
|
430
|
+
async rebuild(operationId) {
|
|
431
|
+
return this.submission(await this.engine().rebuild(await this.target(), operationId));
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Broadcasts an externally signed transaction WITHOUT creating an Operation: no idempotency,
|
|
435
|
+
* persistence or monitoring. Prefer prepareTransfer + submitSignatures for managed flows.
|
|
436
|
+
*/
|
|
437
|
+
async broadcast(raw) {
|
|
438
|
+
const { driver } = await (0, internal_1.internalsOf)(this).pooled();
|
|
439
|
+
return driver.broadcaster.broadcast({
|
|
440
|
+
raw,
|
|
441
|
+
ref: { id: '', idKind: 'tx-hash', canonical: false },
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
/** Abandons an Operation that has no signed transaction yet and releases its reservation. */
|
|
445
|
+
async abandon(operationId) {
|
|
446
|
+
return this.view(await this.engine().abandon(await this.target(), operationId));
|
|
447
|
+
}
|
|
448
|
+
/** An Operation of this handle's chain and network (another one is INVALID_INTENT). */
|
|
449
|
+
async getOperation(operationId) {
|
|
450
|
+
const record = await this.engine().get(operationId);
|
|
451
|
+
if (!record)
|
|
452
|
+
return null;
|
|
453
|
+
(0, monitor_1.assertSameNetwork)((0, internal_1.internalsOf)(this).selection, record);
|
|
454
|
+
return this.view(record);
|
|
455
|
+
}
|
|
456
|
+
/** Typed family extensions: `bc.ext.<family>.<method>(...)` (async, loads the adapter on demand). */
|
|
457
|
+
get ext() {
|
|
458
|
+
const internals = (0, internal_1.internalsOf)(this);
|
|
459
|
+
const where = `${internals.selection.chain.id}/${internals.selection.library}`;
|
|
460
|
+
return new Proxy({}, {
|
|
461
|
+
get: (_target, family) => {
|
|
462
|
+
if (typeof family !== 'string' || family === 'then')
|
|
463
|
+
return undefined;
|
|
464
|
+
return new Proxy({}, {
|
|
465
|
+
get: (_inner, method) => {
|
|
466
|
+
if (typeof method !== 'string' || method === 'then')
|
|
467
|
+
return undefined;
|
|
468
|
+
return async (...args) => {
|
|
469
|
+
const { driver } = await internals.pooled();
|
|
470
|
+
// Own-property checks at both levels, so a name inherited from
|
|
471
|
+
// Object.prototype (`constructor`, `toString`, ...) can never be mistaken
|
|
472
|
+
// for a real family method.
|
|
473
|
+
const familyExt = driver.ext && Object.hasOwn(driver.ext, family)
|
|
474
|
+
? driver.ext[family]
|
|
475
|
+
: undefined;
|
|
476
|
+
const fn = familyExt && Object.hasOwn(familyExt, method)
|
|
477
|
+
? familyExt[method]
|
|
478
|
+
: undefined;
|
|
479
|
+
if (typeof fn !== 'function') {
|
|
480
|
+
throw new error_1.UnsupportedCapabilityError('UNSUPPORTED_CAPABILITY', `ext.${family}.${method} is not available on ${where}`);
|
|
481
|
+
}
|
|
482
|
+
return fn(...args);
|
|
483
|
+
};
|
|
484
|
+
},
|
|
485
|
+
});
|
|
486
|
+
},
|
|
487
|
+
});
|
|
488
|
+
}
|
|
489
|
+
/** @internal The driver's address for `publicKey` under options the core built. */
|
|
490
|
+
async driverAddress(publicKey, options) {
|
|
491
|
+
const { driver, selection } = await this.mapping();
|
|
492
|
+
return new address_1.Address(selection.chain.id, driver.address.fromPublicKey(publicKey, options), driver.address.format);
|
|
493
|
+
}
|
|
494
|
+
/** @internal */
|
|
495
|
+
async mapping() {
|
|
496
|
+
const internals = (0, internal_1.internalsOf)(this);
|
|
497
|
+
const { driver } = await internals.pooled();
|
|
498
|
+
return {
|
|
499
|
+
selection: internals.selection,
|
|
500
|
+
driver,
|
|
501
|
+
assets: (0, internals_1.containerOf)(internals.container).runtime.assets,
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
/** @internal */
|
|
505
|
+
engine() {
|
|
506
|
+
const internals = (0, internal_1.internalsOf)(this);
|
|
507
|
+
internals.assertOpen();
|
|
508
|
+
return (0, internals_1.containerOf)(internals.container).engine();
|
|
509
|
+
}
|
|
510
|
+
/** @internal */
|
|
511
|
+
monitor() {
|
|
512
|
+
return (0, internals_1.containerOf)((0, internal_1.internalsOf)(this).container).monitor();
|
|
513
|
+
}
|
|
514
|
+
/** @internal */
|
|
515
|
+
async readTarget() {
|
|
516
|
+
const internals = (0, internal_1.internalsOf)(this);
|
|
517
|
+
return { selection: internals.selection, pooled: await internals.pooled() };
|
|
518
|
+
}
|
|
519
|
+
/** @internal */
|
|
520
|
+
async target() {
|
|
521
|
+
const internals = (0, internal_1.internalsOf)(this);
|
|
522
|
+
const [pooled, wallet] = await Promise.all([internals.pooled(), internals.wallet()]);
|
|
523
|
+
return {
|
|
524
|
+
selection: internals.selection,
|
|
525
|
+
pooled,
|
|
526
|
+
wallet,
|
|
527
|
+
assets: (0, internals_1.containerOf)(internals.container).runtime.assets,
|
|
528
|
+
};
|
|
529
|
+
}
|
|
530
|
+
/** @internal */
|
|
531
|
+
async view(record) {
|
|
532
|
+
const { runtime } = (0, internals_1.containerOf)((0, internal_1.internalsOf)(this).container);
|
|
533
|
+
return (0, views_1.toView)(record, await (0, observations_1.loadObservations)(runtime.stores.operations, record));
|
|
534
|
+
}
|
|
535
|
+
/** @internal */
|
|
536
|
+
async submission(record) {
|
|
537
|
+
const view = await this.view(record);
|
|
538
|
+
return {
|
|
539
|
+
...view,
|
|
540
|
+
operationId: view.id,
|
|
541
|
+
...(view.activeAttempt ? { attempt: view.activeAttempt } : {}),
|
|
542
|
+
wait: (options) => this.waitForConfirmation(view.id, options),
|
|
543
|
+
};
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* @internal Signing material only while the Operation awaits signatures: an idempotent
|
|
547
|
+
* repeat of an abandoned Operation returns its view alone.
|
|
548
|
+
*/
|
|
549
|
+
async prepared(target, record) {
|
|
550
|
+
const operation = await this.view(record);
|
|
551
|
+
const unsigned = record.unsigned;
|
|
552
|
+
if (!unsigned || !engine_1.PRE_SIGNING_STATES.has(record.state))
|
|
553
|
+
return { operation };
|
|
554
|
+
const fee = await (0, mapping_1.toFeeEstimate)({
|
|
555
|
+
selection: target.selection,
|
|
556
|
+
driver: target.pooled.driver,
|
|
557
|
+
assets: target.assets,
|
|
558
|
+
}, unsigned.fee);
|
|
559
|
+
return {
|
|
560
|
+
operation,
|
|
561
|
+
unsigned: {
|
|
562
|
+
payload: unsigned.payload,
|
|
563
|
+
signingRequests: unsigned.signingRequests,
|
|
564
|
+
...(unsigned.expectedRef ? { expectedRef: unsigned.expectedRef } : {}),
|
|
565
|
+
fee,
|
|
566
|
+
},
|
|
567
|
+
};
|
|
568
|
+
}
|
|
569
|
+
}
|
|
570
|
+
exports.Blockchain = Blockchain;
|
|
571
|
+
/** The shape of a signed payload (`RawTx`), checked at run time. */
|
|
572
|
+
function isRawTx(value) {
|
|
573
|
+
if (value === null || typeof value !== 'object')
|
|
574
|
+
return false;
|
|
575
|
+
const { encoding, data } = value;
|
|
576
|
+
return ((encoding === 'hex' || encoding === 'base64' || encoding === 'json') &&
|
|
577
|
+
typeof data === 'string');
|
|
578
|
+
}
|
|
579
|
+
//# sourceMappingURL=handle.js.map
|