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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merge.js","sourceRoot":"","sources":["../../../src/core/config/merge.ts"],"names":[],"mappings":"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","sourcesContent":["import { ConfigError } from '../errors/error';\nimport type { Signer } from '../signing/types';\nimport type {\n ChainDefaults,\n EffectiveOptions,\n Hooks,\n LifecycleOptions,\n ProviderConfig,\n ScopeOptions,\n WalletConfig,\n} from './types';\n\n/** Keys that can repoint an object's prototype chain; a merge never copies these. */\nconst UNSAFE_KEYS = new Set(['__proto__', 'constructor', 'prototype']);\n\n/** Whether a merge must skip `key` (`__proto__`, `constructor` or `prototype`). */\nexport function isUnsafeKey(key: string): boolean {\n return UNSAFE_KEYS.has(key);\n}\n\nexport function isPlainObject(value: unknown): value is Record<string, unknown> {\n if (value === null || typeof value !== 'object') return false;\n const proto: unknown = Object.getPrototypeOf(value);\n return proto === Object.prototype || proto === null;\n}\n\n/**\n * Config is plain data, so a plain object or array that contains itself is a mistake;\n * it is refused at startup instead of overflowing the stack. `ancestors` holds the path\n * being copied, so one object shared by two branches is still copied, once per branch.\n */\nexport function assertNoCycle(value: object, ancestors: ReadonlySet<object>): void {\n if (ancestors.has(value)) {\n throw new ConfigError('CONFIG_INVALID', 'the configuration holds a reference cycle');\n }\n}\n\n/**\n * Deep-clones plain objects and arrays so a merge result never aliases the caller's input.\n * Class instances (Signer, Secret, ...) and other non-plain values keep their identity.\n */\nfunction cloneValue(value: unknown, ancestors: Set<object> = new Set()): unknown {\n if (!Array.isArray(value) && !isPlainObject(value)) return value;\n assertNoCycle(value, ancestors);\n ancestors.add(value);\n try {\n if (Array.isArray(value))\n return value.map((item: unknown) => cloneValue(item, ancestors));\n const out: Record<string, unknown> = {};\n for (const [key, v] of Object.entries(value)) {\n if (UNSAFE_KEYS.has(key)) continue;\n out[key] = cloneValue(v, ancestors);\n }\n return out;\n } finally {\n ancestors.delete(value);\n }\n}\n\n/**\n * Recursive merge of plain objects; arrays, class instances and Secrets are atomic (cloned\n * whole, never merged element by element). Skips `__proto__`/`constructor`/`prototype` keys.\n */\nexport function deepMerge(\n base: Readonly<Record<string, unknown>> | undefined,\n over: Readonly<Record<string, unknown>> | undefined,\n): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(base ?? {})) {\n if (UNSAFE_KEYS.has(key)) continue;\n out[key] = cloneValue(value);\n }\n for (const [key, value] of Object.entries(over ?? {})) {\n if (value === undefined || UNSAFE_KEYS.has(key)) continue;\n const current = out[key];\n out[key] =\n isPlainObject(current) && isPlainObject(value)\n ? deepMerge(current, value)\n : cloneValue(value);\n }\n return out;\n}\n\n/**\n * Shallow merge where `undefined` never overrides. Values are cloned (see `cloneValue`) so a\n * named-map entry replaced whole never aliases the caller's input; class instances keep their\n * identity (`signers` never goes through here — see `byReference`). Skips `__proto__`/`constructor`/`prototype` keys.\n */\nfunction shallow<T extends object>(base: T | undefined, over: T | undefined): T {\n const out: Record<string, unknown> = {};\n for (const [key, value] of Object.entries(base ?? {})) {\n if (UNSAFE_KEYS.has(key)) continue;\n out[key] = cloneValue(value);\n }\n for (const [key, value] of Object.entries(over ?? {})) {\n if (value === undefined || UNSAFE_KEYS.has(key)) continue;\n out[key] = cloneValue(value);\n }\n return out as T;\n}\n\n/**\n * Merges a map of opaque values by name, taking every value by reference (never cloned). Used\n * for `signers`: `Signer` is an interface, so a plain-object signer is legitimate and must keep\n * its identity and its own-property state. `undefined` never overrides. Skips\n * `__proto__`/`constructor`/`prototype` keys.\n */\nexport function byReference<T>(\n base: Readonly<Record<string, T>> | undefined,\n over: Readonly<Record<string, T>> | undefined,\n): Record<string, T> {\n const out: Record<string, T> = {};\n for (const layer of [base ?? {}, over ?? {}]) {\n for (const [key, value] of Object.entries(layer)) {\n if (value !== undefined && !UNSAFE_KEYS.has(key)) out[key] = value;\n }\n }\n return out;\n}\n\n/** Chain defaults: fields are atomic (provider lists are replaced), `options` deep-merges. */\nexport function mergeChainDefaults(\n base: ChainDefaults | undefined,\n over: ChainDefaults | undefined,\n): ChainDefaults {\n const merged = shallow(base, over);\n const options = deepMerge(base?.options, over?.options);\n return Object.keys(options).length > 0 ? { ...merged, options } : merged;\n}\n\n/** Merges configuration layers from least to most specific. */\nexport function mergeScopes(\n layers: readonly (ScopeOptions | undefined)[],\n): EffectiveOptions {\n const chains: Record<string, ChainDefaults> = {};\n let providers: Readonly<Record<string, ProviderConfig>> = {};\n let signers: Readonly<Record<string, Signer>> = {};\n let wallets: Readonly<Record<string, WalletConfig>> = {};\n let hooks: Hooks = {};\n let lifecycle: LifecycleOptions = {};\n for (const layer of layers) {\n if (!layer) continue;\n for (const [id, defaults] of Object.entries(layer.chains ?? {})) {\n if (UNSAFE_KEYS.has(id)) continue;\n chains[id] = mergeChainDefaults(chains[id], defaults);\n }\n providers = shallow(providers, layer.providers);\n signers = byReference(signers, layer.signers);\n wallets = shallow(wallets, layer.wallets);\n hooks = shallow(hooks, layer.hooks);\n lifecycle = shallow(lifecycle, layer.lifecycle);\n }\n return { chains, providers, signers, wallets, hooks, lifecycle };\n}\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Logger } from '../events/logger';
|
|
2
|
+
import type { Catalogs } from '../registry/plugin';
|
|
3
|
+
import type { EffectiveOptions, HandleOptions, ResolvedSelection } from './types';
|
|
4
|
+
export interface ResolveInput {
|
|
5
|
+
readonly handle: HandleOptions;
|
|
6
|
+
readonly effective: EffectiveOptions;
|
|
7
|
+
readonly catalogs: Catalogs;
|
|
8
|
+
readonly log?: Logger;
|
|
9
|
+
}
|
|
10
|
+
export declare function resolveSelection(input: ResolveInput): ResolvedSelection;
|
|
11
|
+
/** Redacted, JSON-friendly snapshot for `Blockchain.config`. */
|
|
12
|
+
export declare function describeSelection(selection: ResolvedSelection): Readonly<Record<string, unknown>>;
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveSelection = resolveSelection;
|
|
4
|
+
exports.describeSelection = describeSelection;
|
|
5
|
+
const error_1 = require("../errors/error");
|
|
6
|
+
const redact_1 = require("../secret/redact");
|
|
7
|
+
const secret_1 = require("../secret/secret");
|
|
8
|
+
const guard_1 = require("../signing/guard");
|
|
9
|
+
const freeze_1 = require("../util/freeze");
|
|
10
|
+
const json_1 = require("../util/json");
|
|
11
|
+
const names_1 = require("../util/names");
|
|
12
|
+
const merge_1 = require("./merge");
|
|
13
|
+
function toList(value) {
|
|
14
|
+
if (value === undefined)
|
|
15
|
+
return [];
|
|
16
|
+
return Array.isArray(value)
|
|
17
|
+
? value
|
|
18
|
+
: [value];
|
|
19
|
+
}
|
|
20
|
+
/** Own-key lookup in a named map, so an inherited name (`constructor`, `toString`,
|
|
21
|
+
* `__proto__`, ...) is unknown rather than resolving to an `Object.prototype` member. */
|
|
22
|
+
function own(map, name) {
|
|
23
|
+
return Object.hasOwn(map, name) ? map[name] : undefined;
|
|
24
|
+
}
|
|
25
|
+
function inlineName(config) {
|
|
26
|
+
return `inline:${(0, json_1.sha256Hex)((0, json_1.canonicalJson)(config)).slice(0, 8)}`;
|
|
27
|
+
}
|
|
28
|
+
/** Hash input for credentials: revealed values never leave this function. */
|
|
29
|
+
function fingerprint(providers) {
|
|
30
|
+
return (0, json_1.sha256Hex)((0, json_1.canonicalJson)(providers.map((p) => p.endpoints.map((e) => ({
|
|
31
|
+
name: e.name ?? null,
|
|
32
|
+
kind: e.kind ?? 'rpc',
|
|
33
|
+
url: (0, secret_1.reveal)(e.url),
|
|
34
|
+
headers: Object.fromEntries(Object.entries(e.headers ?? {}).map(([k, v]) => [k, (0, secret_1.reveal)(v)])),
|
|
35
|
+
priority: e.priority ?? 0,
|
|
36
|
+
rateLimit: e.rateLimit ?? null,
|
|
37
|
+
timeoutMs: e.timeoutMs ?? null,
|
|
38
|
+
})))));
|
|
39
|
+
}
|
|
40
|
+
function resolveProviders(refs, kind, chain, network, effective, catalogs) {
|
|
41
|
+
return refs.map((ref) => {
|
|
42
|
+
let name;
|
|
43
|
+
let config;
|
|
44
|
+
if (typeof ref === 'string') {
|
|
45
|
+
name = ref;
|
|
46
|
+
const configured = own(effective.providers, ref);
|
|
47
|
+
if (configured)
|
|
48
|
+
config = configured;
|
|
49
|
+
else if (catalogs.presets.has(ref, kind))
|
|
50
|
+
config = { preset: ref };
|
|
51
|
+
else {
|
|
52
|
+
throw new error_1.ConfigError('CONFIG_INVALID', (0, names_1.unknownName)(`${kind} provider`, [
|
|
53
|
+
...Object.keys(effective.providers),
|
|
54
|
+
...catalogs.presets.names(kind),
|
|
55
|
+
]));
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
name = inlineName(ref);
|
|
60
|
+
config = ref;
|
|
61
|
+
}
|
|
62
|
+
let endpoints;
|
|
63
|
+
let production = true;
|
|
64
|
+
if ('endpoints' in config) {
|
|
65
|
+
endpoints = config.endpoints;
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
const resolved = catalogs.presets.resolve(config.preset, {
|
|
69
|
+
chain: chain.id,
|
|
70
|
+
network: network.id,
|
|
71
|
+
...(config.apiKey !== undefined ? { apiKey: config.apiKey } : {}),
|
|
72
|
+
...(config.options !== undefined ? { options: config.options } : {}),
|
|
73
|
+
}, kind);
|
|
74
|
+
endpoints = resolved.endpoints;
|
|
75
|
+
production = resolved.preset.production !== false;
|
|
76
|
+
}
|
|
77
|
+
if (endpoints.length === 0)
|
|
78
|
+
throw new error_1.ConfigError('CONFIG_INVALID', `provider '${name}' has no endpoints`);
|
|
79
|
+
return {
|
|
80
|
+
name,
|
|
81
|
+
production,
|
|
82
|
+
endpoints: endpoints.map((endpoint, index) => {
|
|
83
|
+
if ((endpoint.kind ?? kind) !== kind) {
|
|
84
|
+
throw new error_1.ConfigError('CONFIG_INVALID', `provider '${name}' has a ${endpoint.kind} endpoint where ${kind} is required`);
|
|
85
|
+
}
|
|
86
|
+
return { ...endpoint, kind, name: `${name}/${endpoint.name ?? index}` };
|
|
87
|
+
}),
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
function fallbackToPublic(kind, chain, network, effective, catalogs, log) {
|
|
92
|
+
if (!catalogs.presets.has('public', kind))
|
|
93
|
+
return [];
|
|
94
|
+
try {
|
|
95
|
+
const resolved = resolveProviders(['public'], kind, chain, network, effective, catalogs);
|
|
96
|
+
log?.warn(`no ${kind} provider configured; using the public provider (not for production)`, {
|
|
97
|
+
chain: chain.id,
|
|
98
|
+
network: network.id,
|
|
99
|
+
});
|
|
100
|
+
return resolved;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
return [];
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function resolveSelection(input) {
|
|
107
|
+
const { catalogs, effective, log } = input;
|
|
108
|
+
const chain = catalogs.chains.get(input.handle.chain);
|
|
109
|
+
const { chain: _chainId, ...handleRest } = input.handle;
|
|
110
|
+
const merged = (0, merge_1.mergeChainDefaults)(effective.chains[chain.id], handleRest);
|
|
111
|
+
const network = catalogs.chains.network(chain.id, merged.network ?? chain.defaultNetwork);
|
|
112
|
+
const manifests = catalogs.adapters.forChain(chain.id);
|
|
113
|
+
const defaultManifest = manifests[0];
|
|
114
|
+
if (!defaultManifest) {
|
|
115
|
+
throw new error_1.ConfigError('CONFIG_INVALID', `no adapter is registered for chain '${chain.id}'; register its plugin`);
|
|
116
|
+
}
|
|
117
|
+
const library = merged.library ?? defaultManifest.library;
|
|
118
|
+
const manifest = catalogs.adapters.get(chain.id, library);
|
|
119
|
+
if (!manifest) {
|
|
120
|
+
throw new error_1.ConfigError('INCOMPATIBLE_SELECTION', (0, names_1.unknownName)(`library for chain '${chain.id}'`, manifests.map((m) => m.library)));
|
|
121
|
+
}
|
|
122
|
+
let providers = resolveProviders(toList(merged.provider), 'rpc', chain, network, effective, catalogs);
|
|
123
|
+
if (providers.length === 0)
|
|
124
|
+
providers = fallbackToPublic('rpc', chain, network, effective, catalogs, log);
|
|
125
|
+
if (providers.length === 0) {
|
|
126
|
+
throw new error_1.ConfigError('CONFIG_INVALID', `no provider configured for ${chain.id}:${network.id}`);
|
|
127
|
+
}
|
|
128
|
+
let indexers = resolveProviders(toList(merged.indexer), 'indexer', chain, network, effective, catalogs);
|
|
129
|
+
if (indexers.length === 0 && manifest.requiresIndexer) {
|
|
130
|
+
indexers = fallbackToPublic('indexer', chain, network, effective, catalogs, log);
|
|
131
|
+
}
|
|
132
|
+
if (indexers.length === 0 && manifest.requiresIndexer) {
|
|
133
|
+
throw new error_1.ConfigError('CONFIG_INVALID', `library '${library}' requires an indexer provider for ${chain.id}:${network.id}`);
|
|
134
|
+
}
|
|
135
|
+
let wallet;
|
|
136
|
+
if (merged.wallet !== undefined) {
|
|
137
|
+
const config = own(effective.wallets, merged.wallet);
|
|
138
|
+
if (!config) {
|
|
139
|
+
throw new error_1.ConfigError('CONFIG_INVALID', (0, names_1.unknownName)('wallet', Object.keys(effective.wallets)));
|
|
140
|
+
}
|
|
141
|
+
if (config.chains && !config.chains.includes(chain.id)) {
|
|
142
|
+
throw new error_1.ConfigError('CONFIG_INVALID', `wallet '${merged.wallet}' is not enabled for chain '${chain.id}'`);
|
|
143
|
+
}
|
|
144
|
+
for (const signerId of Object.values(config.signers ?? {})) {
|
|
145
|
+
if (!own(effective.signers, signerId)) {
|
|
146
|
+
throw new error_1.ConfigError('CONFIG_INVALID', (0, names_1.unknownName)('signer', Object.keys(effective.signers)));
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
wallet = { name: merged.wallet, config };
|
|
150
|
+
}
|
|
151
|
+
let signer;
|
|
152
|
+
const signerId = merged.signer ?? wallet?.config.signer;
|
|
153
|
+
if (signerId !== undefined) {
|
|
154
|
+
const instance = own(effective.signers, signerId);
|
|
155
|
+
if (!instance) {
|
|
156
|
+
throw new error_1.ConfigError('CONFIG_INVALID', (0, names_1.unknownName)('signer', Object.keys(effective.signers)));
|
|
157
|
+
}
|
|
158
|
+
// `Signer` is an interface, so its scheme list is read once and checked.
|
|
159
|
+
const schemes = (0, guard_1.signerSchemes)(signerId, instance);
|
|
160
|
+
if (!chain.schemes.some((scheme) => schemes.includes(scheme))) {
|
|
161
|
+
throw new error_1.ConfigError('CONFIG_INVALID', `signer '${signerId}' supports ${schemes.join(', ')} but chain '${chain.id}' needs one of ${chain.schemes.join(', ')}`);
|
|
162
|
+
}
|
|
163
|
+
signer = { id: signerId, instance };
|
|
164
|
+
}
|
|
165
|
+
const capabilities = new Set(manifest.capabilities);
|
|
166
|
+
if (indexers.length > 0)
|
|
167
|
+
for (const c of manifest.indexerCapabilities ?? [])
|
|
168
|
+
capabilities.add(c);
|
|
169
|
+
for (const c of network.capabilities?.add ?? [])
|
|
170
|
+
capabilities.add(c);
|
|
171
|
+
for (const c of network.capabilities?.remove ?? [])
|
|
172
|
+
capabilities.delete(c);
|
|
173
|
+
const confirmations = merged.confirmations ?? network.defaultConfirmations;
|
|
174
|
+
if (!Number.isInteger(confirmations) || confirmations < 1) {
|
|
175
|
+
throw new error_1.ConfigError('CONFIG_INVALID', 'confirmations must be a positive integer');
|
|
176
|
+
}
|
|
177
|
+
const { maxLagBlocks } = merged;
|
|
178
|
+
if (maxLagBlocks !== undefined &&
|
|
179
|
+
(!Number.isSafeInteger(maxLagBlocks) || maxLagBlocks < 0)) {
|
|
180
|
+
throw new error_1.ConfigError('CONFIG_INVALID', 'maxLagBlocks must be a non-negative integer');
|
|
181
|
+
}
|
|
182
|
+
const options = (0, freeze_1.deepFreeze)(merged.options ?? {});
|
|
183
|
+
const providerNames = providers.map((p) => p.name);
|
|
184
|
+
const indexerNames = indexers.map((p) => p.name);
|
|
185
|
+
const poolKey = (0, json_1.sha256Hex)((0, json_1.canonicalJson)({
|
|
186
|
+
chain: chain.id,
|
|
187
|
+
network: network.id,
|
|
188
|
+
library,
|
|
189
|
+
rpc: fingerprint(providers),
|
|
190
|
+
idx: fingerprint(indexers),
|
|
191
|
+
options,
|
|
192
|
+
// The transport's lag tolerance depends on it; omitted when unset.
|
|
193
|
+
maxLagBlocks,
|
|
194
|
+
}));
|
|
195
|
+
const configHash = (0, json_1.sha256Hex)((0, json_1.canonicalJson)({
|
|
196
|
+
chain: chain.id,
|
|
197
|
+
network: network.id,
|
|
198
|
+
library,
|
|
199
|
+
providers: providerNames,
|
|
200
|
+
indexers: indexerNames,
|
|
201
|
+
wallet: wallet?.name ?? null,
|
|
202
|
+
signer: signer?.id ?? null,
|
|
203
|
+
options,
|
|
204
|
+
confirmations,
|
|
205
|
+
}));
|
|
206
|
+
return Object.freeze({
|
|
207
|
+
chain,
|
|
208
|
+
network,
|
|
209
|
+
library,
|
|
210
|
+
manifest,
|
|
211
|
+
providers: (0, freeze_1.deepFreeze)(providers),
|
|
212
|
+
indexers: (0, freeze_1.deepFreeze)(indexers),
|
|
213
|
+
...(wallet ? { wallet } : {}),
|
|
214
|
+
...(signer ? { signer } : {}),
|
|
215
|
+
options,
|
|
216
|
+
confirmations,
|
|
217
|
+
...(maxLagBlocks !== undefined ? { maxLagBlocks } : {}),
|
|
218
|
+
capabilities,
|
|
219
|
+
providerNames,
|
|
220
|
+
indexerNames,
|
|
221
|
+
poolKey,
|
|
222
|
+
configHash,
|
|
223
|
+
handle: { ...handleRest, chain: chain.id, network: network.id, library },
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
/** Redacted, JSON-friendly snapshot for `Blockchain.config`. */
|
|
227
|
+
function describeSelection(selection) {
|
|
228
|
+
const describeProvider = (p) => ({
|
|
229
|
+
name: p.name,
|
|
230
|
+
production: p.production,
|
|
231
|
+
endpoints: p.endpoints.map((e) => ({
|
|
232
|
+
name: e.name,
|
|
233
|
+
kind: e.kind,
|
|
234
|
+
url: (0, redact_1.redactUrl)(e.url),
|
|
235
|
+
headers: (0, redact_1.redactHeaders)(e.headers),
|
|
236
|
+
})),
|
|
237
|
+
});
|
|
238
|
+
return Object.freeze({
|
|
239
|
+
chain: selection.chain.id,
|
|
240
|
+
network: selection.network.id,
|
|
241
|
+
library: selection.library,
|
|
242
|
+
providers: selection.providers.map(describeProvider),
|
|
243
|
+
indexers: selection.indexers.map(describeProvider),
|
|
244
|
+
wallet: selection.wallet?.name ?? null,
|
|
245
|
+
signer: selection.signer?.id ?? null,
|
|
246
|
+
capabilities: [...selection.capabilities].sort(),
|
|
247
|
+
confirmations: selection.confirmations,
|
|
248
|
+
options: (0, redact_1.redactDeep)(selection.options),
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/core/config/resolve.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AdapterManifest } from '../driver/types';\nimport { ConfigError } from '../errors/error';\nimport type { Logger } from '../events/logger';\nimport type { Capability } from '../model/capability';\nimport type { ChainInfo, NetworkInfo } from '../model/chain';\nimport type { Catalogs } from '../registry/plugin';\nimport { redactDeep, redactHeaders, redactUrl } from '../secret/redact';\nimport { reveal } from '../secret/secret';\nimport { signerSchemes } from '../signing/guard';\nimport type { EndpointConfig } from '../transport/types';\nimport { deepFreeze } from '../util/freeze';\nimport { canonicalJson, sha256Hex } from '../util/json';\nimport { unknownName } from '../util/names';\nimport { mergeChainDefaults } from './merge';\nimport type {\n EffectiveOptions,\n HandleOptions,\n ProviderConfig,\n ProviderRef,\n ResolvedProvider,\n ResolvedSelection,\n} from './types';\n\nexport interface ResolveInput {\n readonly handle: HandleOptions;\n readonly effective: EffectiveOptions;\n readonly catalogs: Catalogs;\n readonly log?: Logger;\n}\n\nfunction toList(\n value: ProviderRef | readonly ProviderRef[] | undefined,\n): readonly ProviderRef[] {\n if (value === undefined) return [];\n return Array.isArray(value)\n ? (value as readonly ProviderRef[])\n : [value as ProviderRef];\n}\n\n/** Own-key lookup in a named map, so an inherited name (`constructor`, `toString`,\n * `__proto__`, ...) is unknown rather than resolving to an `Object.prototype` member. */\nfunction own<T>(map: Readonly<Record<string, T>>, name: string): T | undefined {\n return Object.hasOwn(map, name) ? map[name] : undefined;\n}\n\nfunction inlineName(config: ProviderConfig): string {\n return `inline:${sha256Hex(canonicalJson(config)).slice(0, 8)}`;\n}\n\n/** Hash input for credentials: revealed values never leave this function. */\nfunction fingerprint(providers: readonly ResolvedProvider[]): string {\n return sha256Hex(\n canonicalJson(\n providers.map((p) =>\n p.endpoints.map((e) => ({\n name: e.name ?? null,\n kind: e.kind ?? 'rpc',\n url: reveal(e.url),\n headers: Object.fromEntries(\n Object.entries(e.headers ?? {}).map(([k, v]) => [k, reveal(v)]),\n ),\n priority: e.priority ?? 0,\n rateLimit: e.rateLimit ?? null,\n timeoutMs: e.timeoutMs ?? null,\n })),\n ),\n ),\n );\n}\n\nfunction resolveProviders(\n refs: readonly ProviderRef[],\n kind: 'rpc' | 'indexer',\n chain: ChainInfo,\n network: NetworkInfo,\n effective: EffectiveOptions,\n catalogs: Catalogs,\n): ResolvedProvider[] {\n return refs.map((ref) => {\n let name: string;\n let config: ProviderConfig;\n if (typeof ref === 'string') {\n name = ref;\n const configured = own(effective.providers, ref);\n if (configured) config = configured;\n else if (catalogs.presets.has(ref, kind)) config = { preset: ref };\n else {\n throw new ConfigError(\n 'CONFIG_INVALID',\n unknownName(`${kind} provider`, [\n ...Object.keys(effective.providers),\n ...catalogs.presets.names(kind),\n ]),\n );\n }\n } else {\n name = inlineName(ref);\n config = ref;\n }\n let endpoints: readonly EndpointConfig[];\n let production = true;\n if ('endpoints' in config) {\n endpoints = config.endpoints;\n } else {\n const resolved = catalogs.presets.resolve(\n config.preset,\n {\n chain: chain.id,\n network: network.id,\n ...(config.apiKey !== undefined ? { apiKey: config.apiKey } : {}),\n ...(config.options !== undefined ? { options: config.options } : {}),\n },\n kind,\n );\n endpoints = resolved.endpoints;\n production = resolved.preset.production !== false;\n }\n if (endpoints.length === 0)\n throw new ConfigError('CONFIG_INVALID', `provider '${name}' has no endpoints`);\n return {\n name,\n production,\n endpoints: endpoints.map((endpoint, index) => {\n if ((endpoint.kind ?? kind) !== kind) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `provider '${name}' has a ${endpoint.kind} endpoint where ${kind} is required`,\n );\n }\n return { ...endpoint, kind, name: `${name}/${endpoint.name ?? index}` };\n }),\n };\n });\n}\n\nfunction fallbackToPublic(\n kind: 'rpc' | 'indexer',\n chain: ChainInfo,\n network: NetworkInfo,\n effective: EffectiveOptions,\n catalogs: Catalogs,\n log: Logger | undefined,\n): ResolvedProvider[] {\n if (!catalogs.presets.has('public', kind)) return [];\n try {\n const resolved = resolveProviders(\n ['public'],\n kind,\n chain,\n network,\n effective,\n catalogs,\n );\n log?.warn(\n `no ${kind} provider configured; using the public provider (not for production)`,\n {\n chain: chain.id,\n network: network.id,\n },\n );\n return resolved;\n } catch {\n return [];\n }\n}\n\nexport function resolveSelection(input: ResolveInput): ResolvedSelection {\n const { catalogs, effective, log } = input;\n const chain = catalogs.chains.get(input.handle.chain);\n const { chain: _chainId, ...handleRest } = input.handle;\n const merged = mergeChainDefaults(effective.chains[chain.id], handleRest);\n const network = catalogs.chains.network(\n chain.id,\n merged.network ?? chain.defaultNetwork,\n );\n\n const manifests = catalogs.adapters.forChain(chain.id);\n const defaultManifest = manifests[0];\n if (!defaultManifest) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `no adapter is registered for chain '${chain.id}'; register its plugin`,\n );\n }\n const library = merged.library ?? defaultManifest.library;\n const manifest: AdapterManifest | undefined = catalogs.adapters.get(chain.id, library);\n if (!manifest) {\n throw new ConfigError(\n 'INCOMPATIBLE_SELECTION',\n unknownName(\n `library for chain '${chain.id}'`,\n manifests.map((m) => m.library),\n ),\n );\n }\n\n let providers = resolveProviders(\n toList(merged.provider),\n 'rpc',\n chain,\n network,\n effective,\n catalogs,\n );\n if (providers.length === 0)\n providers = fallbackToPublic('rpc', chain, network, effective, catalogs, log);\n if (providers.length === 0) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `no provider configured for ${chain.id}:${network.id}`,\n );\n }\n let indexers = resolveProviders(\n toList(merged.indexer),\n 'indexer',\n chain,\n network,\n effective,\n catalogs,\n );\n if (indexers.length === 0 && manifest.requiresIndexer) {\n indexers = fallbackToPublic('indexer', chain, network, effective, catalogs, log);\n }\n if (indexers.length === 0 && manifest.requiresIndexer) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `library '${library}' requires an indexer provider for ${chain.id}:${network.id}`,\n );\n }\n\n let wallet: ResolvedSelection['wallet'];\n if (merged.wallet !== undefined) {\n const config = own(effective.wallets, merged.wallet);\n if (!config) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n unknownName('wallet', Object.keys(effective.wallets)),\n );\n }\n if (config.chains && !config.chains.includes(chain.id)) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `wallet '${merged.wallet}' is not enabled for chain '${chain.id}'`,\n );\n }\n for (const signerId of Object.values(config.signers ?? {})) {\n if (!own(effective.signers, signerId)) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n unknownName('signer', Object.keys(effective.signers)),\n );\n }\n }\n wallet = { name: merged.wallet, config };\n }\n\n let signer: ResolvedSelection['signer'];\n const signerId = merged.signer ?? wallet?.config.signer;\n if (signerId !== undefined) {\n const instance = own(effective.signers, signerId);\n if (!instance) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n unknownName('signer', Object.keys(effective.signers)),\n );\n }\n // `Signer` is an interface, so its scheme list is read once and checked.\n const schemes = signerSchemes(signerId, instance);\n if (!chain.schemes.some((scheme) => schemes.includes(scheme))) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `signer '${signerId}' supports ${schemes.join(', ')} but chain '${chain.id}' needs one of ${chain.schemes.join(', ')}`,\n );\n }\n signer = { id: signerId, instance };\n }\n\n const capabilities = new Set<Capability>(manifest.capabilities);\n if (indexers.length > 0)\n for (const c of manifest.indexerCapabilities ?? []) capabilities.add(c);\n for (const c of network.capabilities?.add ?? []) capabilities.add(c);\n for (const c of network.capabilities?.remove ?? []) capabilities.delete(c);\n\n const confirmations = merged.confirmations ?? network.defaultConfirmations;\n if (!Number.isInteger(confirmations) || confirmations < 1) {\n throw new ConfigError('CONFIG_INVALID', 'confirmations must be a positive integer');\n }\n const { maxLagBlocks } = merged;\n if (\n maxLagBlocks !== undefined &&\n (!Number.isSafeInteger(maxLagBlocks) || maxLagBlocks < 0)\n ) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n 'maxLagBlocks must be a non-negative integer',\n );\n }\n const options = deepFreeze(merged.options ?? {});\n const providerNames = providers.map((p) => p.name);\n const indexerNames = indexers.map((p) => p.name);\n const poolKey = sha256Hex(\n canonicalJson({\n chain: chain.id,\n network: network.id,\n library,\n rpc: fingerprint(providers),\n idx: fingerprint(indexers),\n options,\n // The transport's lag tolerance depends on it; omitted when unset.\n maxLagBlocks,\n }),\n );\n const configHash = sha256Hex(\n canonicalJson({\n chain: chain.id,\n network: network.id,\n library,\n providers: providerNames,\n indexers: indexerNames,\n wallet: wallet?.name ?? null,\n signer: signer?.id ?? null,\n options,\n confirmations,\n }),\n );\n return Object.freeze({\n chain,\n network,\n library,\n manifest,\n providers: deepFreeze(providers),\n indexers: deepFreeze(indexers),\n ...(wallet ? { wallet } : {}),\n ...(signer ? { signer } : {}),\n options,\n confirmations,\n ...(maxLagBlocks !== undefined ? { maxLagBlocks } : {}),\n capabilities,\n providerNames,\n indexerNames,\n poolKey,\n configHash,\n handle: { ...handleRest, chain: chain.id, network: network.id, library },\n });\n}\n\n/** Redacted, JSON-friendly snapshot for `Blockchain.config`. */\nexport function describeSelection(\n selection: ResolvedSelection,\n): Readonly<Record<string, unknown>> {\n const describeProvider = (p: ResolvedProvider) => ({\n name: p.name,\n production: p.production,\n endpoints: p.endpoints.map((e) => ({\n name: e.name,\n kind: e.kind,\n url: redactUrl(e.url),\n headers: redactHeaders(e.headers),\n })),\n });\n return Object.freeze({\n chain: selection.chain.id,\n network: selection.network.id,\n library: selection.library,\n providers: selection.providers.map(describeProvider),\n indexers: selection.indexers.map(describeProvider),\n wallet: selection.wallet?.name ?? null,\n signer: selection.signer?.id ?? null,\n capabilities: [...selection.capabilities].sort(),\n confirmations: selection.confirmations,\n options: redactDeep(selection.options),\n });\n}\n"]}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import type { AdapterManifest } from '../driver/types';
|
|
2
|
+
import type { Logger } from '../events/logger';
|
|
3
|
+
import type { Capability } from '../model/capability';
|
|
4
|
+
import type { ChainInfo, NetworkInfo } from '../model/chain';
|
|
5
|
+
import type { ChainId, LibraryOf, NetworkOf } from '../model/ids';
|
|
6
|
+
import type { Plugin } from '../registry/plugin';
|
|
7
|
+
import type { Secret } from '../secret/secret';
|
|
8
|
+
import type { ExtendedKeyVersions } from '../signing/hd';
|
|
9
|
+
import type { KeyRef, Signer, SigningContext } from '../signing/types';
|
|
10
|
+
import type { Stores } from '../store/types';
|
|
11
|
+
import type { EndpointConfig, TransportOptions } from '../transport/types';
|
|
12
|
+
import type { Clock } from '../util/clock';
|
|
13
|
+
export type ProviderConfig = {
|
|
14
|
+
readonly preset: string;
|
|
15
|
+
readonly apiKey?: string | Secret<string>;
|
|
16
|
+
readonly options?: Readonly<Record<string, unknown>>;
|
|
17
|
+
} | {
|
|
18
|
+
readonly endpoints: readonly EndpointConfig[];
|
|
19
|
+
};
|
|
20
|
+
export type ProviderRef = string | ProviderConfig;
|
|
21
|
+
export interface WalletConfig {
|
|
22
|
+
readonly signer?: string;
|
|
23
|
+
/** Routes requests to signers by `keyRef.id` (multi-party wallets). */
|
|
24
|
+
readonly signers?: Readonly<Record<string, string>>;
|
|
25
|
+
readonly address?: string;
|
|
26
|
+
/** Hex public key for watch-only wallets that still prepare transactions. */
|
|
27
|
+
readonly publicKey?: string;
|
|
28
|
+
readonly xpub?: string;
|
|
29
|
+
readonly xpubVersions?: ExtendedKeyVersions;
|
|
30
|
+
/** Child path template relative to the xpub; `{index}` is replaced. Default `0/{index}`. */
|
|
31
|
+
readonly xpubPath?: string;
|
|
32
|
+
readonly keyRef?: KeyRef;
|
|
33
|
+
/** Metadata only (passed to signing context); no built-in behaviour. */
|
|
34
|
+
readonly tier?: string;
|
|
35
|
+
readonly chains?: readonly string[];
|
|
36
|
+
readonly utxo?: Readonly<Record<string, unknown>>;
|
|
37
|
+
readonly ton?: Readonly<Record<string, unknown>>;
|
|
38
|
+
readonly options?: Readonly<Record<string, unknown>>;
|
|
39
|
+
}
|
|
40
|
+
export interface ChainDefaults {
|
|
41
|
+
readonly network?: string;
|
|
42
|
+
readonly library?: string;
|
|
43
|
+
readonly provider?: ProviderRef | readonly ProviderRef[];
|
|
44
|
+
readonly indexer?: ProviderRef | readonly ProviderRef[];
|
|
45
|
+
readonly wallet?: string;
|
|
46
|
+
readonly signer?: string;
|
|
47
|
+
readonly options?: Readonly<Record<string, unknown>>;
|
|
48
|
+
readonly confirmations?: number;
|
|
49
|
+
/**
|
|
50
|
+
* This chain's lag tolerance, in blocks. It wins over the root
|
|
51
|
+
* `transport.maxLagBlocks`, which wins over the plugin network's own, which wins over
|
|
52
|
+
* the transport's built-in default. An endpoint further behind the best known height is
|
|
53
|
+
* lagging, and a monitor or scanner view further behind is stale.
|
|
54
|
+
*/
|
|
55
|
+
readonly maxLagBlocks?: number;
|
|
56
|
+
}
|
|
57
|
+
export interface LifecycleOptions {
|
|
58
|
+
readonly pollIntervalMs?: number;
|
|
59
|
+
readonly droppedGracePeriodMs?: number;
|
|
60
|
+
readonly rebroadcastIntervalMs?: number;
|
|
61
|
+
readonly leaseMs?: number;
|
|
62
|
+
readonly claimLeaseMs?: number;
|
|
63
|
+
readonly waitTimeoutMs?: number;
|
|
64
|
+
readonly requireIdempotencyKey?: boolean;
|
|
65
|
+
readonly broadcastFanout?: number;
|
|
66
|
+
/**
|
|
67
|
+
* How long `transfer` and `submitSignatures` wait for the `beforeSign` hook and the
|
|
68
|
+
* signer(s) (default 120 000 ms). The wallet's address lease is kept alive meanwhile. On
|
|
69
|
+
* timeout nothing is written: the Operation stays `prepared` with its reservation, and a
|
|
70
|
+
* repeat asks again. Signers that need longer should answer `pending` with a ticket.
|
|
71
|
+
*/
|
|
72
|
+
readonly signTimeoutMs?: number;
|
|
73
|
+
}
|
|
74
|
+
export interface Hooks {
|
|
75
|
+
/**
|
|
76
|
+
* Throw to veto signing (policy engines, approvals). Runs before every signing request.
|
|
77
|
+
* It may run more than once per Operation: once per concurrent caller, and again when a
|
|
78
|
+
* `prepared` Operation is repeated. Make it idempotent; `ctx.operationId` identifies the
|
|
79
|
+
* Operation. It runs while the wallet's address lease is held, so keep it short. In
|
|
80
|
+
* `transfer` and `submitSignatures` the lease is kept alive for up to
|
|
81
|
+
* `lifecycle.signTimeoutMs`; in `prepareTransfer` a hook running longer than
|
|
82
|
+
* `lifecycle.leaseMs` can lose the lease to another transfer. A veto after that writes
|
|
83
|
+
* nothing; the Operation stays `prepared` and is vetoed again on its next repeat.
|
|
84
|
+
*/
|
|
85
|
+
readonly beforeSign?: (ctx: SigningContext) => void | Promise<void>;
|
|
86
|
+
}
|
|
87
|
+
export interface ScopeOptions {
|
|
88
|
+
readonly chains?: Readonly<Record<string, ChainDefaults>>;
|
|
89
|
+
readonly providers?: Readonly<Record<string, ProviderConfig>>;
|
|
90
|
+
readonly signers?: Readonly<Record<string, Signer>>;
|
|
91
|
+
readonly wallets?: Readonly<Record<string, WalletConfig>>;
|
|
92
|
+
readonly hooks?: Hooks;
|
|
93
|
+
readonly lifecycle?: LifecycleOptions;
|
|
94
|
+
}
|
|
95
|
+
export interface AioOptions extends ScopeOptions {
|
|
96
|
+
/** Root-only: drivers and transports are shared by all scopes of a root container. */
|
|
97
|
+
readonly transport?: TransportOptions;
|
|
98
|
+
/** Prefixes every store key; tenants sharing a database must use distinct namespaces. */
|
|
99
|
+
readonly namespace?: string;
|
|
100
|
+
/** Environment source for routing config; `false` disables it. Default: `process.env`. */
|
|
101
|
+
readonly env?: Readonly<Record<string, string | undefined>> | false;
|
|
102
|
+
readonly profile?: string;
|
|
103
|
+
readonly stores?: Partial<Stores>;
|
|
104
|
+
readonly logger?: Logger;
|
|
105
|
+
readonly clock?: Clock;
|
|
106
|
+
readonly plugins?: readonly Plugin[];
|
|
107
|
+
}
|
|
108
|
+
export interface HandleOptions {
|
|
109
|
+
readonly chain: string;
|
|
110
|
+
readonly network?: string;
|
|
111
|
+
readonly library?: string;
|
|
112
|
+
readonly provider?: ProviderRef | readonly ProviderRef[];
|
|
113
|
+
readonly indexer?: ProviderRef | readonly ProviderRef[];
|
|
114
|
+
readonly wallet?: string;
|
|
115
|
+
readonly signer?: string;
|
|
116
|
+
readonly options?: Readonly<Record<string, unknown>>;
|
|
117
|
+
readonly confirmations?: number;
|
|
118
|
+
}
|
|
119
|
+
export type HandleConfig<C extends ChainId> = Omit<HandleOptions, 'chain' | 'network' | 'library'> & {
|
|
120
|
+
readonly chain: C;
|
|
121
|
+
readonly network?: NetworkOf<C>;
|
|
122
|
+
readonly library?: LibraryOf<C>;
|
|
123
|
+
};
|
|
124
|
+
export interface EffectiveOptions {
|
|
125
|
+
readonly chains: Readonly<Record<string, ChainDefaults>>;
|
|
126
|
+
readonly providers: Readonly<Record<string, ProviderConfig>>;
|
|
127
|
+
readonly signers: Readonly<Record<string, Signer>>;
|
|
128
|
+
readonly wallets: Readonly<Record<string, WalletConfig>>;
|
|
129
|
+
readonly hooks: Hooks;
|
|
130
|
+
readonly lifecycle: LifecycleOptions;
|
|
131
|
+
}
|
|
132
|
+
export interface ResolvedProvider {
|
|
133
|
+
readonly name: string;
|
|
134
|
+
readonly endpoints: readonly EndpointConfig[];
|
|
135
|
+
readonly production: boolean;
|
|
136
|
+
}
|
|
137
|
+
export interface ResolvedSelection {
|
|
138
|
+
readonly chain: ChainInfo;
|
|
139
|
+
readonly network: NetworkInfo;
|
|
140
|
+
readonly library: string;
|
|
141
|
+
readonly manifest: AdapterManifest;
|
|
142
|
+
readonly providers: readonly ResolvedProvider[];
|
|
143
|
+
readonly indexers: readonly ResolvedProvider[];
|
|
144
|
+
readonly wallet?: {
|
|
145
|
+
readonly name: string;
|
|
146
|
+
readonly config: WalletConfig;
|
|
147
|
+
};
|
|
148
|
+
readonly signer?: {
|
|
149
|
+
readonly id: string;
|
|
150
|
+
readonly instance: Signer;
|
|
151
|
+
};
|
|
152
|
+
readonly options: Readonly<Record<string, unknown>>;
|
|
153
|
+
readonly confirmations: number;
|
|
154
|
+
/** The per-chain `maxLagBlocks` from the `chains` config, when set. */
|
|
155
|
+
readonly maxLagBlocks?: number;
|
|
156
|
+
readonly capabilities: ReadonlySet<Capability>;
|
|
157
|
+
readonly providerNames: readonly string[];
|
|
158
|
+
readonly indexerNames: readonly string[];
|
|
159
|
+
/** Identity of the shared driver/transport (includes credential fingerprints). */
|
|
160
|
+
readonly poolKey: string;
|
|
161
|
+
/** Hash recorded in each Operation's ExecutionContext. */
|
|
162
|
+
readonly configHash: string;
|
|
163
|
+
/** The merged handle options, used by `with()`. */
|
|
164
|
+
readonly handle: HandleOptions;
|
|
165
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/config/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { AdapterManifest } from '../driver/types';\nimport type { Logger } from '../events/logger';\nimport type { Capability } from '../model/capability';\nimport type { ChainInfo, NetworkInfo } from '../model/chain';\nimport type { ChainId, LibraryOf, NetworkOf } from '../model/ids';\nimport type { Plugin } from '../registry/plugin';\nimport type { Secret } from '../secret/secret';\nimport type { ExtendedKeyVersions } from '../signing/hd';\nimport type { KeyRef, Signer, SigningContext } from '../signing/types';\nimport type { Stores } from '../store/types';\nimport type { EndpointConfig, TransportOptions } from '../transport/types';\nimport type { Clock } from '../util/clock';\n\nexport type ProviderConfig =\n | {\n readonly preset: string;\n readonly apiKey?: string | Secret<string>;\n readonly options?: Readonly<Record<string, unknown>>;\n }\n | { readonly endpoints: readonly EndpointConfig[] };\n\nexport type ProviderRef = string | ProviderConfig;\n\nexport interface WalletConfig {\n readonly signer?: string;\n /** Routes requests to signers by `keyRef.id` (multi-party wallets). */\n readonly signers?: Readonly<Record<string, string>>;\n readonly address?: string;\n /** Hex public key for watch-only wallets that still prepare transactions. */\n readonly publicKey?: string;\n readonly xpub?: string;\n readonly xpubVersions?: ExtendedKeyVersions;\n /** Child path template relative to the xpub; `{index}` is replaced. Default `0/{index}`. */\n readonly xpubPath?: string;\n readonly keyRef?: KeyRef;\n /** Metadata only (passed to signing context); no built-in behaviour. */\n readonly tier?: string;\n readonly chains?: readonly string[];\n readonly utxo?: Readonly<Record<string, unknown>>;\n readonly ton?: Readonly<Record<string, unknown>>;\n readonly options?: Readonly<Record<string, unknown>>;\n}\n\nexport interface ChainDefaults {\n readonly network?: string;\n readonly library?: string;\n readonly provider?: ProviderRef | readonly ProviderRef[];\n readonly indexer?: ProviderRef | readonly ProviderRef[];\n readonly wallet?: string;\n readonly signer?: string;\n readonly options?: Readonly<Record<string, unknown>>;\n readonly confirmations?: number;\n /**\n * This chain's lag tolerance, in blocks. It wins over the root\n * `transport.maxLagBlocks`, which wins over the plugin network's own, which wins over\n * the transport's built-in default. An endpoint further behind the best known height is\n * lagging, and a monitor or scanner view further behind is stale.\n */\n readonly maxLagBlocks?: number;\n}\n\nexport interface LifecycleOptions {\n readonly pollIntervalMs?: number;\n readonly droppedGracePeriodMs?: number;\n readonly rebroadcastIntervalMs?: number;\n readonly leaseMs?: number;\n readonly claimLeaseMs?: number;\n readonly waitTimeoutMs?: number;\n readonly requireIdempotencyKey?: boolean;\n readonly broadcastFanout?: number;\n /**\n * How long `transfer` and `submitSignatures` wait for the `beforeSign` hook and the\n * signer(s) (default 120 000 ms). The wallet's address lease is kept alive meanwhile. On\n * timeout nothing is written: the Operation stays `prepared` with its reservation, and a\n * repeat asks again. Signers that need longer should answer `pending` with a ticket.\n */\n readonly signTimeoutMs?: number;\n}\n\nexport interface Hooks {\n /**\n * Throw to veto signing (policy engines, approvals). Runs before every signing request.\n * It may run more than once per Operation: once per concurrent caller, and again when a\n * `prepared` Operation is repeated. Make it idempotent; `ctx.operationId` identifies the\n * Operation. It runs while the wallet's address lease is held, so keep it short. In\n * `transfer` and `submitSignatures` the lease is kept alive for up to\n * `lifecycle.signTimeoutMs`; in `prepareTransfer` a hook running longer than\n * `lifecycle.leaseMs` can lose the lease to another transfer. A veto after that writes\n * nothing; the Operation stays `prepared` and is vetoed again on its next repeat.\n */\n readonly beforeSign?: (ctx: SigningContext) => void | Promise<void>;\n}\n\nexport interface ScopeOptions {\n readonly chains?: Readonly<Record<string, ChainDefaults>>;\n readonly providers?: Readonly<Record<string, ProviderConfig>>;\n readonly signers?: Readonly<Record<string, Signer>>;\n readonly wallets?: Readonly<Record<string, WalletConfig>>;\n readonly hooks?: Hooks;\n readonly lifecycle?: LifecycleOptions;\n}\n\nexport interface AioOptions extends ScopeOptions {\n /** Root-only: drivers and transports are shared by all scopes of a root container. */\n readonly transport?: TransportOptions;\n /** Prefixes every store key; tenants sharing a database must use distinct namespaces. */\n readonly namespace?: string;\n /** Environment source for routing config; `false` disables it. Default: `process.env`. */\n readonly env?: Readonly<Record<string, string | undefined>> | false;\n readonly profile?: string;\n readonly stores?: Partial<Stores>;\n readonly logger?: Logger;\n readonly clock?: Clock;\n readonly plugins?: readonly Plugin[];\n}\n\nexport interface HandleOptions {\n readonly chain: string;\n readonly network?: string;\n readonly library?: string;\n readonly provider?: ProviderRef | readonly ProviderRef[];\n readonly indexer?: ProviderRef | readonly ProviderRef[];\n readonly wallet?: string;\n readonly signer?: string;\n readonly options?: Readonly<Record<string, unknown>>;\n readonly confirmations?: number;\n}\n\nexport type HandleConfig<C extends ChainId> = Omit<\n HandleOptions,\n 'chain' | 'network' | 'library'\n> & {\n readonly chain: C;\n readonly network?: NetworkOf<C>;\n readonly library?: LibraryOf<C>;\n};\n\nexport interface EffectiveOptions {\n readonly chains: Readonly<Record<string, ChainDefaults>>;\n readonly providers: Readonly<Record<string, ProviderConfig>>;\n readonly signers: Readonly<Record<string, Signer>>;\n readonly wallets: Readonly<Record<string, WalletConfig>>;\n readonly hooks: Hooks;\n readonly lifecycle: LifecycleOptions;\n}\n\nexport interface ResolvedProvider {\n readonly name: string;\n readonly endpoints: readonly EndpointConfig[];\n readonly production: boolean;\n}\n\nexport interface ResolvedSelection {\n readonly chain: ChainInfo;\n readonly network: NetworkInfo;\n readonly library: string;\n readonly manifest: AdapterManifest;\n readonly providers: readonly ResolvedProvider[];\n readonly indexers: readonly ResolvedProvider[];\n readonly wallet?: { readonly name: string; readonly config: WalletConfig };\n readonly signer?: { readonly id: string; readonly instance: Signer };\n readonly options: Readonly<Record<string, unknown>>;\n readonly confirmations: number;\n /** The per-chain `maxLagBlocks` from the `chains` config, when set. */\n readonly maxLagBlocks?: number;\n readonly capabilities: ReadonlySet<Capability>;\n readonly providerNames: readonly string[];\n readonly indexerNames: readonly string[];\n /** Identity of the shared driver/transport (includes credential fingerprints). */\n readonly poolKey: string;\n /** Hash recorded in each Operation's ExecutionContext. */\n readonly configHash: string;\n /** The merged handle options, used by `with()`. */\n readonly handle: HandleOptions;\n}\n"]}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Plugin } from '../registry/plugin';
|
|
2
|
+
/** Called by the composition root (`src/index.ts`) to register built-in family plugins. */
|
|
3
|
+
export declare function setBuiltinPlugins(plugins: readonly Plugin[]): void;
|
|
4
|
+
export declare function builtinPlugins(): readonly Plugin[];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setBuiltinPlugins = setBuiltinPlugins;
|
|
4
|
+
exports.builtinPlugins = builtinPlugins;
|
|
5
|
+
let builtins = [];
|
|
6
|
+
/** Called by the composition root (`src/index.ts`) to register built-in family plugins. */
|
|
7
|
+
function setBuiltinPlugins(plugins) {
|
|
8
|
+
builtins = [...plugins];
|
|
9
|
+
}
|
|
10
|
+
function builtinPlugins() {
|
|
11
|
+
return builtins;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=builtins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"builtins.js","sourceRoot":"","sources":["../../../src/core/container/builtins.ts"],"names":[],"mappings":";;AAKA,8CAEC;AAED,wCAEC;AATD,IAAI,QAAQ,GAAsB,EAAE,CAAC;AAErC,2FAA2F;AAC3F,SAAgB,iBAAiB,CAAC,OAA0B;IAC1D,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;AAC1B,CAAC;AAED,SAAgB,cAAc;IAC5B,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import type { Plugin } from '../registry/plugin';\n\nlet builtins: readonly Plugin[] = [];\n\n/** Called by the composition root (`src/index.ts`) to register built-in family plugins. */\nexport function setBuiltinPlugins(plugins: readonly Plugin[]): void {\n builtins = [...plugins];\n}\n\nexport function builtinPlugins(): readonly Plugin[] {\n return builtins;\n}\n"]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Blockchain } from '../blockchain/handle';
|
|
2
|
+
import type { AioOptions, HandleConfig, ScopeOptions } from '../config/types';
|
|
3
|
+
import type { AioEvent, AioEventName } from '../events/types';
|
|
4
|
+
import { type RecoveryReport, type WorkerOptions } from '../lifecycle/monitor';
|
|
5
|
+
import { type OperationView } from '../lifecycle/views';
|
|
6
|
+
import type { ChainId } from '../model/ids';
|
|
7
|
+
import { type Plugin } from '../registry/plugin';
|
|
8
|
+
import type { OperationState } from '../store/types';
|
|
9
|
+
/** How long `close()` waits for one native client's `close` before moving on. */
|
|
10
|
+
export declare const NATIVE_CLOSE_TIMEOUT_MS = 5000;
|
|
11
|
+
interface ScopeInit {
|
|
12
|
+
readonly parent: CryptoAio;
|
|
13
|
+
readonly overrides: ScopeOptions;
|
|
14
|
+
}
|
|
15
|
+
export interface OperationsFilter {
|
|
16
|
+
readonly states?: readonly OperationState[];
|
|
17
|
+
readonly chain?: string;
|
|
18
|
+
readonly network?: string;
|
|
19
|
+
readonly limit?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface OperationsApi {
|
|
22
|
+
get(id: string): Promise<OperationView | null>;
|
|
23
|
+
/** In creation order. */
|
|
24
|
+
list(filter?: OperationsFilter): Promise<OperationView[]>;
|
|
25
|
+
/** Startup recovery for this namespace (see RecoveryReport); it never signs. */
|
|
26
|
+
recover(options?: {
|
|
27
|
+
readonly signal?: AbortSignal;
|
|
28
|
+
}): Promise<RecoveryReport>;
|
|
29
|
+
}
|
|
30
|
+
export interface MonitorApi {
|
|
31
|
+
/** Runs worker passes until `signal` aborts; any number of workers may run. */
|
|
32
|
+
start(options?: WorkerOptions): Promise<void>;
|
|
33
|
+
/** One worker pass; resolves to the number of Operations it claimed. */
|
|
34
|
+
runOnce(options?: WorkerOptions): Promise<number>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Dependency container: stores, signers, wallets, hooks, plugins and a shared driver pool.
|
|
38
|
+
* Separate `new CryptoAio()` instances are fully isolated (use one per tenant).
|
|
39
|
+
*/
|
|
40
|
+
export declare class CryptoAio {
|
|
41
|
+
#private;
|
|
42
|
+
readonly namespace: string;
|
|
43
|
+
constructor(options?: AioOptions);
|
|
44
|
+
/** @internal */
|
|
45
|
+
constructor(options: AioOptions, scope: ScopeInit);
|
|
46
|
+
/**
|
|
47
|
+
* Child container: inherits config, pool, stores and namespace; overrides merge on top.
|
|
48
|
+
* Not a tenant boundary — a scope shares its root's pool and stores. Use a separate
|
|
49
|
+
* `new CryptoAio({ namespace })` when isolation between tenants is required.
|
|
50
|
+
*/
|
|
51
|
+
scope(overrides: ScopeOptions): CryptoAio;
|
|
52
|
+
blockchain<C extends ChainId>(config: HandleConfig<C>): Blockchain<C>;
|
|
53
|
+
/** Registers a plugin on this root container (copy-on-write catalogs). */
|
|
54
|
+
use(plugin: Plugin): this;
|
|
55
|
+
on<E extends AioEventName>(type: E, handler: (event: AioEvent<E>) => void): () => void;
|
|
56
|
+
onAny(handler: (event: AioEvent) => void): () => void;
|
|
57
|
+
/** Stored Operations of this namespace, as views, and startup recovery. */
|
|
58
|
+
get operations(): OperationsApi;
|
|
59
|
+
/** Background workers that check due Operations without anyone waiting on them. */
|
|
60
|
+
get monitor(): MonitorApi;
|
|
61
|
+
/**
|
|
62
|
+
* Closes the root container: runs the `close` of every native client that
|
|
63
|
+
* `crypto-aio/native` handed out (a failing one is logged by code and skipped), then
|
|
64
|
+
* closes the pooled drivers. Its handles and `native()` then fail with
|
|
65
|
+
* `INVALID_TRANSITION`. A scope's `close()` does nothing; scopes share their root's pool.
|
|
66
|
+
*/
|
|
67
|
+
close(): Promise<void>;
|
|
68
|
+
}
|
|
69
|
+
export {};
|