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,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `crypto-aio/avalanche`: the SDK-free Avalanche types, the family's peer dependency and
|
|
3
|
+
* capabilities, and the `crypto-aio/native` client type: importing this entry types
|
|
4
|
+
* `native(bc, '@avalabs/avalanchejs')` as an {@link AvalancheNativeClient}.
|
|
5
|
+
*
|
|
6
|
+
* @module crypto-aio/avalanche
|
|
7
|
+
*/
|
|
8
|
+
import type { AvalancheNativeClient } from './driver';
|
|
9
|
+
declare module '../../index' {
|
|
10
|
+
interface NativeClientMap {
|
|
11
|
+
'@avalabs/avalanchejs': AvalancheNativeClient;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export type { AvalancheNativeClient } from './driver';
|
|
15
|
+
export { AVALANCHE_PEER_DEPENDENCIES } from './plugin';
|
|
16
|
+
export { AVALANCHE_CAPABILITIES } from './network';
|
|
17
|
+
/** The part of `@avalabs/avalanchejs` this library uses, as the native client types it. */
|
|
18
|
+
export type { AvalancheSdk, SdkAddress, SdkBaseTx, SdkBigInt, SdkContext, SdkCredential, SdkDimensions, SdkFeeState, SdkId, SdkInt, SdkManager, SdkOutputOwners, SdkSerializable, SdkSignature, SdkSignedTx, SdkTransaction, SdkTransferOutput, SdkTransferableInput, SdkTransferableOutput, SdkUnpacker, SdkUnsignedTx, SdkUtxo, SdkUtxoId, } from './sdk';
|
|
19
|
+
export type { AvalancheExt, AvalancheFeeDetails, AvalancheFeeOverride, AvalancheUnspent, AvalancheVm, } from './types';
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AVALANCHE_CAPABILITIES = exports.AVALANCHE_PEER_DEPENDENCIES = void 0;
|
|
4
|
+
var plugin_1 = require("./plugin");
|
|
5
|
+
Object.defineProperty(exports, "AVALANCHE_PEER_DEPENDENCIES", { enumerable: true, get: function () { return plugin_1.AVALANCHE_PEER_DEPENDENCIES; } });
|
|
6
|
+
var network_1 = require("./network");
|
|
7
|
+
Object.defineProperty(exports, "AVALANCHE_CAPABILITIES", { enumerable: true, get: function () { return network_1.AVALANCHE_CAPABILITIES; } });
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/adapters/avalanche/index.ts"],"names":[],"mappings":";;;AAkBA,mCAAuD;AAA9C,qHAAA,2BAA2B,OAAA;AACpC,qCAAmD;AAA1C,iHAAA,sBAAsB,OAAA","sourcesContent":["/**\n * `crypto-aio/avalanche`: the SDK-free Avalanche types, the family's peer dependency and\n * capabilities, and the `crypto-aio/native` client type: importing this entry types\n * `native(bc, '@avalabs/avalanchejs')` as an {@link AvalancheNativeClient}.\n *\n * @module crypto-aio/avalanche\n */\nimport type { AvalancheNativeClient } from './driver';\n\n// Through the package entry, as a user's own augmentation does, so the two merge in any\n// file order. SDK types appear only here, so the main entry needs no SDK to type-check.\ndeclare module '../../index' {\n interface NativeClientMap {\n '@avalabs/avalanchejs': AvalancheNativeClient;\n }\n}\n\nexport type { AvalancheNativeClient } from './driver';\nexport { AVALANCHE_PEER_DEPENDENCIES } from './plugin';\nexport { AVALANCHE_CAPABILITIES } from './network';\n/** The part of `@avalabs/avalanchejs` this library uses, as the native client types it. */\nexport type {\n AvalancheSdk,\n SdkAddress,\n SdkBaseTx,\n SdkBigInt,\n SdkContext,\n SdkCredential,\n SdkDimensions,\n SdkFeeState,\n SdkId,\n SdkInt,\n SdkManager,\n SdkOutputOwners,\n SdkSerializable,\n SdkSignature,\n SdkSignedTx,\n SdkTransaction,\n SdkTransferOutput,\n SdkTransferableInput,\n SdkTransferableOutput,\n SdkUnpacker,\n SdkUnsignedTx,\n SdkUtxo,\n SdkUtxoId,\n} from './sdk';\nexport type {\n AvalancheExt,\n AvalancheFeeDetails,\n AvalancheFeeOverride,\n AvalancheUnspent,\n AvalancheVm,\n} from './types';\n"]}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { type Capability } from '../../core/model/capability';
|
|
2
|
+
import type { ChainInfo, NetworkInfo } from '../../core/model/chain';
|
|
3
|
+
import type { AvalancheVm } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Every capability of an Avalanche network. The Data API indexer is required: it locates
|
|
6
|
+
* a transaction's block and serves address history.
|
|
7
|
+
*/
|
|
8
|
+
export declare const AVALANCHE_CAPABILITIES: readonly Capability[];
|
|
9
|
+
export interface AvalancheNetworkConfig {
|
|
10
|
+
readonly vm: AvalancheVm;
|
|
11
|
+
/** The chain alias addresses carry: `X` or `P`. */
|
|
12
|
+
readonly alias: 'X' | 'P';
|
|
13
|
+
readonly networkId: number;
|
|
14
|
+
/** The bech32 human-readable part of addresses: `avax`, `fuji`. */
|
|
15
|
+
readonly hrp: string;
|
|
16
|
+
/** The chain's own id (CB58), written into every transaction. */
|
|
17
|
+
readonly blockchainId: string;
|
|
18
|
+
readonly avaxAssetId: string;
|
|
19
|
+
/**
|
|
20
|
+
* The id of the block at height 0: the endpoint identity. An endpoint whose identity
|
|
21
|
+
* probe reports another id serves another network or chain, and is disabled.
|
|
22
|
+
*/
|
|
23
|
+
readonly genesisBlockId: string;
|
|
24
|
+
/** Finality depth N: a block with N confirmations is final. */
|
|
25
|
+
readonly confirmations: number;
|
|
26
|
+
/** Absurd-fee guard: the highest fee (nAVAX) a transfer ever pays. */
|
|
27
|
+
readonly maxFee: bigint;
|
|
28
|
+
/** P-Chain: above this gas price (nAVAX per gas) an endpoint's fee state decides nothing. */
|
|
29
|
+
readonly maxGasPrice: bigint;
|
|
30
|
+
readonly capabilities: ReadonlySet<Capability>;
|
|
31
|
+
}
|
|
32
|
+
/** Library defaults for the handle `options`. */
|
|
33
|
+
export declare const OPTION_DEFAULTS: Readonly<{
|
|
34
|
+
maxFee: 100000000n;
|
|
35
|
+
maxGasPrice: 10000n;
|
|
36
|
+
}>;
|
|
37
|
+
export declare function avalancheNetworkConfig(chain: ChainInfo, network: NetworkInfo, options?: Readonly<Record<string, unknown>>): AvalancheNetworkConfig;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.OPTION_DEFAULTS = exports.AVALANCHE_CAPABILITIES = void 0;
|
|
4
|
+
exports.avalancheNetworkConfig = avalancheNetworkConfig;
|
|
5
|
+
/**
|
|
6
|
+
* What the Avalanche driver needs from a network's registry entry and from the handle's
|
|
7
|
+
* `options`, validated once when a driver is created, so bad data fails with
|
|
8
|
+
* `CONFIG_INVALID` instead of misbehaving: every number is checked, and a confirmation
|
|
9
|
+
* count must be a safe integer of at least 1.
|
|
10
|
+
* SDK-free.
|
|
11
|
+
*/
|
|
12
|
+
const error_1 = require("../../core/errors/error");
|
|
13
|
+
const capability_1 = require("../../core/model/capability");
|
|
14
|
+
const names_1 = require("../../core/util/names");
|
|
15
|
+
const cb58_1 = require("./cb58");
|
|
16
|
+
/**
|
|
17
|
+
* Every capability of an Avalanche network. The Data API indexer is required: it locates
|
|
18
|
+
* a transaction's block and serves address history.
|
|
19
|
+
*/
|
|
20
|
+
exports.AVALANCHE_CAPABILITIES = Object.freeze([
|
|
21
|
+
'batch-transfer',
|
|
22
|
+
'memo',
|
|
23
|
+
'block-scan',
|
|
24
|
+
'address-history',
|
|
25
|
+
'hd-public-derivation',
|
|
26
|
+
]);
|
|
27
|
+
/** Library defaults for the handle `options`. */
|
|
28
|
+
exports.OPTION_DEFAULTS = Object.freeze({
|
|
29
|
+
maxFee: 100000000n, // 0.1 AVAX
|
|
30
|
+
maxGasPrice: 10000n, // 10,000 × the P-Chain's minimum price
|
|
31
|
+
});
|
|
32
|
+
const OPTION_KEYS = new Set(Object.keys(exports.OPTION_DEFAULTS));
|
|
33
|
+
/**
|
|
34
|
+
* A network's capability overrides, checked against what the driver serves. The handle
|
|
35
|
+
* advertises the manifest's capabilities plus `add`, minus `remove`, and the core accepts
|
|
36
|
+
* what it advertises, so each name must be one the driver serves: otherwise the core
|
|
37
|
+
* accepts a request the driver cannot serve. The error names a library capability, never
|
|
38
|
+
* a caller's unknown text.
|
|
39
|
+
*/
|
|
40
|
+
function checkCapabilities(network, fail) {
|
|
41
|
+
const add = network.capabilities?.add ?? [];
|
|
42
|
+
const remove = network.capabilities?.remove ?? [];
|
|
43
|
+
if (!Array.isArray(add) || !Array.isArray(remove)) {
|
|
44
|
+
fail('capabilities.add and capabilities.remove must be lists');
|
|
45
|
+
}
|
|
46
|
+
const serves = `the Avalanche driver serves ${exports.AVALANCHE_CAPABILITIES.join(', ')}`;
|
|
47
|
+
for (const [side, names] of [
|
|
48
|
+
['add', add],
|
|
49
|
+
['remove', remove],
|
|
50
|
+
]) {
|
|
51
|
+
for (const name of names) {
|
|
52
|
+
if (exports.AVALANCHE_CAPABILITIES.includes(name))
|
|
53
|
+
continue;
|
|
54
|
+
const known = capability_1.KNOWN_CAPABILITIES.includes(name);
|
|
55
|
+
fail(`capabilities.${side}: ${known ? `'${String(name)}' is not one` : 'an unknown name'}; ${serves}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function avalancheNetworkConfig(chain, network, options = {}) {
|
|
60
|
+
const fail = (reason) => {
|
|
61
|
+
throw new error_1.ConfigError('CONFIG_INVALID', `Avalanche network ${chain.id}:${network.id}: ${reason}`);
|
|
62
|
+
};
|
|
63
|
+
const params = network.params ?? {};
|
|
64
|
+
const vm = params.vm;
|
|
65
|
+
if (vm !== 'avm' && vm !== 'pvm')
|
|
66
|
+
fail(`params.vm must be 'avm' or 'pvm'`);
|
|
67
|
+
const alias = params.alias;
|
|
68
|
+
if (alias !== (vm === 'avm' ? 'X' : 'P')) {
|
|
69
|
+
fail(`params.alias must be '${vm === 'avm' ? 'X' : 'P'}' for the ${vm} chain`);
|
|
70
|
+
}
|
|
71
|
+
const expectedFee = vm === 'avm' ? 'avalanche-static' : 'avalanche-dynamic';
|
|
72
|
+
if (network.feeModel !== expectedFee) {
|
|
73
|
+
fail(`fee model '${network.feeModel}' is not '${expectedFee}'`);
|
|
74
|
+
}
|
|
75
|
+
const networkId = params.networkId;
|
|
76
|
+
if (!Number.isSafeInteger(networkId) ||
|
|
77
|
+
networkId < 1 ||
|
|
78
|
+
networkId > 0xffffffff) {
|
|
79
|
+
fail('params.networkId must be an integer from 1 to 2^32 - 1');
|
|
80
|
+
}
|
|
81
|
+
const hrp = params.hrp;
|
|
82
|
+
// 83 is bech32's limit; an address of 20 bytes then still fits in 90 characters.
|
|
83
|
+
if (typeof hrp !== 'string' || !/^[a-z]{1,40}$/.test(hrp)) {
|
|
84
|
+
fail('params.hrp must be a lowercase human-readable part of 1 to 40 letters');
|
|
85
|
+
}
|
|
86
|
+
for (const key of ['blockchainId', 'avaxAssetId']) {
|
|
87
|
+
if (!(0, cb58_1.isId)(params[key]))
|
|
88
|
+
fail(`params.${key} must be a CB58 id of 32 bytes`);
|
|
89
|
+
}
|
|
90
|
+
if (!(0, cb58_1.isId)(network.identity)) {
|
|
91
|
+
fail('its identity must be the CB58 id of the block at height 0');
|
|
92
|
+
}
|
|
93
|
+
const finality = network.finality;
|
|
94
|
+
if (finality.kind !== 'confirmations') {
|
|
95
|
+
fail(`finality '${finality.kind}' is not an Avalanche policy (use 'confirmations')`);
|
|
96
|
+
}
|
|
97
|
+
const confirmations = finality.confirmations;
|
|
98
|
+
if (!Number.isSafeInteger(confirmations) || confirmations < 1) {
|
|
99
|
+
fail('finality.confirmations must be a safe integer >= 1');
|
|
100
|
+
}
|
|
101
|
+
for (const key of Object.keys(options)) {
|
|
102
|
+
// The accepted names, never the caller's key (it may be a pasted secret).
|
|
103
|
+
if (!OPTION_KEYS.has(key))
|
|
104
|
+
fail((0, names_1.unknownName)('option', OPTION_KEYS));
|
|
105
|
+
}
|
|
106
|
+
const merged = { ...exports.OPTION_DEFAULTS, ...options };
|
|
107
|
+
const positive = (key) => {
|
|
108
|
+
const value = merged[key];
|
|
109
|
+
if (typeof value !== 'bigint' || value < 1n)
|
|
110
|
+
fail(`options.${key} must be a bigint >= 1`);
|
|
111
|
+
return value;
|
|
112
|
+
};
|
|
113
|
+
const maxFee = positive('maxFee');
|
|
114
|
+
const maxGasPrice = positive('maxGasPrice');
|
|
115
|
+
checkCapabilities(network, fail);
|
|
116
|
+
const capabilities = new Set(exports.AVALANCHE_CAPABILITIES);
|
|
117
|
+
for (const c of network.capabilities?.add ?? [])
|
|
118
|
+
capabilities.add(c);
|
|
119
|
+
for (const c of network.capabilities?.remove ?? [])
|
|
120
|
+
capabilities.delete(c);
|
|
121
|
+
return {
|
|
122
|
+
vm: vm,
|
|
123
|
+
alias: alias,
|
|
124
|
+
networkId: networkId,
|
|
125
|
+
hrp: hrp,
|
|
126
|
+
blockchainId: params.blockchainId,
|
|
127
|
+
avaxAssetId: params.avaxAssetId,
|
|
128
|
+
genesisBlockId: network.identity,
|
|
129
|
+
confirmations: confirmations,
|
|
130
|
+
maxFee,
|
|
131
|
+
maxGasPrice,
|
|
132
|
+
capabilities,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=network.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"network.js","sourceRoot":"","sources":["../../../src/adapters/avalanche/network.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * What the Avalanche driver needs from a network's registry entry and from the handle's\n * `options`, validated once when a driver is created, so bad data fails with\n * `CONFIG_INVALID` instead of misbehaving: every number is checked, and a confirmation\n * count must be a safe integer of at least 1.\n * SDK-free.\n */\nimport { ConfigError } from '../../core/errors/error';\nimport { KNOWN_CAPABILITIES, type Capability } from '../../core/model/capability';\nimport type { ChainInfo, NetworkInfo } from '../../core/model/chain';\nimport { unknownName } from '../../core/util/names';\nimport { isId } from './cb58';\nimport type { AvalancheVm } from './types';\n\n/**\n * Every capability of an Avalanche network. The Data API indexer is required: it locates\n * a transaction's block and serves address history.\n */\nexport const AVALANCHE_CAPABILITIES: readonly Capability[] = Object.freeze([\n 'batch-transfer',\n 'memo',\n 'block-scan',\n 'address-history',\n 'hd-public-derivation',\n]);\n\nexport interface AvalancheNetworkConfig {\n readonly vm: AvalancheVm;\n /** The chain alias addresses carry: `X` or `P`. */\n readonly alias: 'X' | 'P';\n readonly networkId: number;\n /** The bech32 human-readable part of addresses: `avax`, `fuji`. */\n readonly hrp: string;\n /** The chain's own id (CB58), written into every transaction. */\n readonly blockchainId: string;\n readonly avaxAssetId: string;\n /**\n * The id of the block at height 0: the endpoint identity. An endpoint whose identity\n * probe reports another id serves another network or chain, and is disabled.\n */\n readonly genesisBlockId: string;\n /** Finality depth N: a block with N confirmations is final. */\n readonly confirmations: number;\n /** Absurd-fee guard: the highest fee (nAVAX) a transfer ever pays. */\n readonly maxFee: bigint;\n /** P-Chain: above this gas price (nAVAX per gas) an endpoint's fee state decides nothing. */\n readonly maxGasPrice: bigint;\n readonly capabilities: ReadonlySet<Capability>;\n}\n\n/** Library defaults for the handle `options`. */\nexport const OPTION_DEFAULTS = Object.freeze({\n maxFee: 100_000_000n, // 0.1 AVAX\n maxGasPrice: 10_000n, // 10,000 × the P-Chain's minimum price\n});\n\nconst OPTION_KEYS = new Set(Object.keys(OPTION_DEFAULTS));\n\n/**\n * A network's capability overrides, checked against what the driver serves. The handle\n * advertises the manifest's capabilities plus `add`, minus `remove`, and the core accepts\n * what it advertises, so each name must be one the driver serves: otherwise the core\n * accepts a request the driver cannot serve. The error names a library capability, never\n * a caller's unknown text.\n */\nfunction checkCapabilities(network: NetworkInfo, fail: (reason: string) => never): void {\n const add: unknown = network.capabilities?.add ?? [];\n const remove: unknown = network.capabilities?.remove ?? [];\n if (!Array.isArray(add) || !Array.isArray(remove)) {\n fail('capabilities.add and capabilities.remove must be lists');\n }\n const serves = `the Avalanche driver serves ${AVALANCHE_CAPABILITIES.join(', ')}`;\n for (const [side, names] of [\n ['add', add],\n ['remove', remove],\n ] as const) {\n for (const name of names as readonly unknown[]) {\n if (AVALANCHE_CAPABILITIES.includes(name as Capability)) continue;\n const known = (KNOWN_CAPABILITIES as readonly unknown[]).includes(name);\n fail(\n `capabilities.${side}: ${known ? `'${String(name)}' is not one` : 'an unknown name'}; ${serves}`,\n );\n }\n }\n}\n\nexport function avalancheNetworkConfig(\n chain: ChainInfo,\n network: NetworkInfo,\n options: Readonly<Record<string, unknown>> = {},\n): AvalancheNetworkConfig {\n const fail = (reason: string): never => {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `Avalanche network ${chain.id}:${network.id}: ${reason}`,\n );\n };\n const params = network.params ?? {};\n const vm = params.vm;\n if (vm !== 'avm' && vm !== 'pvm') fail(`params.vm must be 'avm' or 'pvm'`);\n const alias = params.alias;\n if (alias !== (vm === 'avm' ? 'X' : 'P')) {\n fail(`params.alias must be '${vm === 'avm' ? 'X' : 'P'}' for the ${vm} chain`);\n }\n const expectedFee = vm === 'avm' ? 'avalanche-static' : 'avalanche-dynamic';\n if (network.feeModel !== expectedFee) {\n fail(`fee model '${network.feeModel}' is not '${expectedFee}'`);\n }\n const networkId = params.networkId;\n if (\n !Number.isSafeInteger(networkId) ||\n (networkId as number) < 1 ||\n (networkId as number) > 0xffffffff\n ) {\n fail('params.networkId must be an integer from 1 to 2^32 - 1');\n }\n const hrp = params.hrp;\n // 83 is bech32's limit; an address of 20 bytes then still fits in 90 characters.\n if (typeof hrp !== 'string' || !/^[a-z]{1,40}$/.test(hrp)) {\n fail('params.hrp must be a lowercase human-readable part of 1 to 40 letters');\n }\n for (const key of ['blockchainId', 'avaxAssetId'] as const) {\n if (!isId(params[key])) fail(`params.${key} must be a CB58 id of 32 bytes`);\n }\n if (!isId(network.identity)) {\n fail('its identity must be the CB58 id of the block at height 0');\n }\n const finality = network.finality;\n if (finality.kind !== 'confirmations') {\n fail(`finality '${finality.kind}' is not an Avalanche policy (use 'confirmations')`);\n }\n const confirmations = (finality as { confirmations: unknown }).confirmations;\n if (!Number.isSafeInteger(confirmations) || (confirmations as number) < 1) {\n fail('finality.confirmations must be a safe integer >= 1');\n }\n\n for (const key of Object.keys(options)) {\n // The accepted names, never the caller's key (it may be a pasted secret).\n if (!OPTION_KEYS.has(key)) fail(unknownName('option', OPTION_KEYS));\n }\n const merged: Readonly<Record<string, unknown>> = { ...OPTION_DEFAULTS, ...options };\n const positive = (key: string): bigint => {\n const value = merged[key];\n if (typeof value !== 'bigint' || value < 1n)\n fail(`options.${key} must be a bigint >= 1`);\n return value as bigint;\n };\n const maxFee = positive('maxFee');\n const maxGasPrice = positive('maxGasPrice');\n\n checkCapabilities(network, fail);\n const capabilities = new Set<Capability>(AVALANCHE_CAPABILITIES);\n for (const c of network.capabilities?.add ?? []) capabilities.add(c);\n for (const c of network.capabilities?.remove ?? []) capabilities.delete(c);\n return {\n vm: vm as AvalancheVm,\n alias: alias as 'X' | 'P',\n networkId: networkId as number,\n hrp: hrp as string,\n blockchainId: params.blockchainId as string,\n avaxAssetId: params.avaxAssetId as string,\n genesisBlockId: network.identity as string,\n confirmations: confirmations as number,\n maxFee,\n maxGasPrice,\n capabilities,\n };\n}\n"]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Avalanche family plugin (SDK-free): the X-Chain and P-Chain, the public and Data API
|
|
3
|
+
* presets and the avalanchejs manifest. Only `load()` pulls in the driver module and, with
|
|
4
|
+
* it, the SDK.
|
|
5
|
+
*/
|
|
6
|
+
import type { AdapterManifest, PeerDependency } from '../../core/driver/types';
|
|
7
|
+
import type { Plugin } from '../../core/registry/plugin';
|
|
8
|
+
/**
|
|
9
|
+
* The SDK version this adapter is validated against, keyed by package name: the range
|
|
10
|
+
* starts at the version the tests pin.
|
|
11
|
+
*/
|
|
12
|
+
export declare const AVALANCHE_PEER_DEPENDENCIES: Readonly<Record<'@avalabs/avalanchejs', PeerDependency>>;
|
|
13
|
+
/**
|
|
14
|
+
* The `@avalabs/avalanchejs` manifest, built once, at module level, so every
|
|
15
|
+
* `avalanchePlugin()` carries the same `load` function. Registration compares a plugin's
|
|
16
|
+
* functions by identity: the same plugin again is a no-op, while one with another `load`
|
|
17
|
+
* under this name is `CONFIG_INVALID`.
|
|
18
|
+
*/
|
|
19
|
+
export declare const avalancheManifest: AdapterManifest;
|
|
20
|
+
/** The built-in Avalanche family: chains `avalanche-x` and `avalanche-p`, mainnet and Fuji. */
|
|
21
|
+
export declare function avalanchePlugin(): Plugin;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.avalancheManifest = exports.AVALANCHE_PEER_DEPENDENCIES = void 0;
|
|
4
|
+
exports.avalanchePlugin = avalanchePlugin;
|
|
5
|
+
const freeze_1 = require("../../core/util/freeze");
|
|
6
|
+
const chains_1 = require("./chains");
|
|
7
|
+
const network_1 = require("./network");
|
|
8
|
+
const presets_1 = require("./presets");
|
|
9
|
+
/**
|
|
10
|
+
* The SDK version this adapter is validated against, keyed by package name: the range
|
|
11
|
+
* starts at the version the tests pin.
|
|
12
|
+
*/
|
|
13
|
+
exports.AVALANCHE_PEER_DEPENDENCIES = (0, freeze_1.deepFreeze)({
|
|
14
|
+
'@avalabs/avalanchejs': { name: '@avalabs/avalanchejs', range: '^5.2.0' },
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* The `@avalabs/avalanchejs` manifest, built once, at module level, so every
|
|
18
|
+
* `avalanchePlugin()` carries the same `load` function. Registration compares a plugin's
|
|
19
|
+
* functions by identity: the same plugin again is a no-op, while one with another `load`
|
|
20
|
+
* under this name is `CONFIG_INVALID`.
|
|
21
|
+
*/
|
|
22
|
+
exports.avalancheManifest = Object.freeze({
|
|
23
|
+
family: 'avalanche',
|
|
24
|
+
library: '@avalabs/avalanchejs',
|
|
25
|
+
chains: Object.freeze(['avalanche-x', 'avalanche-p']),
|
|
26
|
+
capabilities: network_1.AVALANCHE_CAPABILITIES,
|
|
27
|
+
// The node cannot say which block holds a transaction: the Data API locates it (the node
|
|
28
|
+
// then proves it) and serves address history.
|
|
29
|
+
requiresIndexer: true,
|
|
30
|
+
peerDependencies: Object.freeze([exports.AVALANCHE_PEER_DEPENDENCIES['@avalabs/avalanchejs']]),
|
|
31
|
+
load: async () => {
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
33
|
+
const mod = require('./driver');
|
|
34
|
+
return mod.avalancheDriverFactory;
|
|
35
|
+
},
|
|
36
|
+
});
|
|
37
|
+
/** The built-in Avalanche family: chains `avalanche-x` and `avalanche-p`, mainnet and Fuji. */
|
|
38
|
+
function avalanchePlugin() {
|
|
39
|
+
return {
|
|
40
|
+
name: 'avalanche',
|
|
41
|
+
chains: chains_1.AVALANCHE_CHAINS,
|
|
42
|
+
adapters: [exports.avalancheManifest],
|
|
43
|
+
presets: presets_1.AVALANCHE_PRESETS,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../../src/adapters/avalanche/plugin.ts"],"names":[],"mappings":";;;AAiDA,0CAOC;AA7CD,mDAAoD;AACpD,qCAA4C;AAC5C,uCAAmD;AACnD,uCAA8C;AAE9C;;;GAGG;AACU,QAAA,2BAA2B,GAEpC,IAAA,mBAAU,EAAC;IACb,sBAAsB,EAAE,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE;CAC1E,CAAC,CAAC;AAEH;;;;;GAKG;AACU,QAAA,iBAAiB,GAAoB,MAAM,CAAC,MAAM,CAAC;IAC9D,MAAM,EAAE,WAAW;IACnB,OAAO,EAAE,sBAAsB;IAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;IACrD,YAAY,EAAE,gCAAsB;IACpC,yFAAyF;IACzF,8CAA8C;IAC9C,eAAe,EAAE,IAAI;IACrB,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,mCAA2B,CAAC,sBAAsB,CAAC,CAAC,CAAC;IACtF,IAAI,EAAE,KAAK,IAA4B,EAAE;QACvC,iEAAiE;QACjE,MAAM,GAAG,GAAG,OAAO,CAAC,UAAU,CAA8B,CAAC;QAC7D,OAAO,GAAG,CAAC,sBAAsB,CAAC;IACpC,CAAC;CACF,CAAC,CAAC;AAEH,+FAA+F;AAC/F,SAAgB,eAAe;IAC7B,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,yBAAgB;QACxB,QAAQ,EAAE,CAAC,yBAAiB,CAAC;QAC7B,OAAO,EAAE,2BAAiB;KAC3B,CAAC;AACJ,CAAC","sourcesContent":["/**\n * The Avalanche family plugin (SDK-free): the X-Chain and P-Chain, the public and Data API\n * presets and the avalanchejs manifest. Only `load()` pulls in the driver module and, with\n * it, the SDK.\n */\nimport type {\n AdapterManifest,\n DriverFactory,\n PeerDependency,\n} from '../../core/driver/types';\nimport type { Plugin } from '../../core/registry/plugin';\nimport { deepFreeze } from '../../core/util/freeze';\nimport { AVALANCHE_CHAINS } from './chains';\nimport { AVALANCHE_CAPABILITIES } from './network';\nimport { AVALANCHE_PRESETS } from './presets';\n\n/**\n * The SDK version this adapter is validated against, keyed by package name: the range\n * starts at the version the tests pin.\n */\nexport const AVALANCHE_PEER_DEPENDENCIES: Readonly<\n Record<'@avalabs/avalanchejs', PeerDependency>\n> = deepFreeze({\n '@avalabs/avalanchejs': { name: '@avalabs/avalanchejs', range: '^5.2.0' },\n});\n\n/**\n * The `@avalabs/avalanchejs` manifest, built once, at module level, so every\n * `avalanchePlugin()` carries the same `load` function. Registration compares a plugin's\n * functions by identity: the same plugin again is a no-op, while one with another `load`\n * under this name is `CONFIG_INVALID`.\n */\nexport const avalancheManifest: AdapterManifest = Object.freeze({\n family: 'avalanche',\n library: '@avalabs/avalanchejs',\n chains: Object.freeze(['avalanche-x', 'avalanche-p']),\n capabilities: AVALANCHE_CAPABILITIES,\n // The node cannot say which block holds a transaction: the Data API locates it (the node\n // then proves it) and serves address history.\n requiresIndexer: true,\n peerDependencies: Object.freeze([AVALANCHE_PEER_DEPENDENCIES['@avalabs/avalanchejs']]),\n load: async (): Promise<DriverFactory> => {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n const mod = require('./driver') as typeof import('./driver');\n return mod.avalancheDriverFactory;\n },\n});\n\n/** The built-in Avalanche family: chains `avalanche-x` and `avalanche-p`, mainnet and Fuji. */\nexport function avalanchePlugin(): Plugin {\n return {\n name: 'avalanche',\n chains: AVALANCHE_CHAINS,\n adapters: [avalancheManifest],\n presets: AVALANCHE_PRESETS,\n };\n}\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ProviderPreset } from '../../core/registry/providers';
|
|
2
|
+
/**
|
|
3
|
+
* Built once at module level, so the plugin's functions keep their identity: registration
|
|
4
|
+
* compares functions by identity, and rebuilt ones would make the same plugin a new one.
|
|
5
|
+
*/
|
|
6
|
+
export declare const AVALANCHE_PRESETS: readonly ProviderPreset[];
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AVALANCHE_PRESETS = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Avalanche provider presets, verified on 2026-10-01:
|
|
6
|
+
* - `public` (`rpc`): Ava Labs' public API, `https://api.avax.network/ext/bc/{X,P}` on
|
|
7
|
+
* mainnet and `https://api.avax-test.network/ext/bc/{X,P}` on Fuji. Each chain's JSON-RPC
|
|
8
|
+
* endpoint is its own URL.
|
|
9
|
+
* - `public` (`indexer`): the Avalanche Data API (formerly Glacier) without a key,
|
|
10
|
+
* `https://data-api.avax.network/v1/networks/{mainnet,fuji}/blockchains/{x-chain,p-chain}`.
|
|
11
|
+
* - `glacier` (`indexer`): the same Data API with an API key, sent in its
|
|
12
|
+
* `x-glacier-api-key` header (the service's OpenAPI document) as a `Secret`, so it never
|
|
13
|
+
* reaches logs, errors or events.
|
|
14
|
+
* The public services are rate limited and marked `production: false`; their limits are not
|
|
15
|
+
* published, so none is set here. For production, run your own AvalancheGo node and
|
|
16
|
+
* configure it as `{ endpoints: [{ url: 'https://node.example/ext/bc/X' }] }`.
|
|
17
|
+
*/
|
|
18
|
+
const error_1 = require("../../core/errors/error");
|
|
19
|
+
const secret_1 = require("../../core/secret/secret");
|
|
20
|
+
const freeze_1 = require("../../core/util/freeze");
|
|
21
|
+
const NODES = Object.freeze({
|
|
22
|
+
mainnet: 'https://api.avax.network',
|
|
23
|
+
fuji: 'https://api.avax-test.network',
|
|
24
|
+
});
|
|
25
|
+
const DATA_API = 'https://data-api.avax.network/v1/networks';
|
|
26
|
+
const CHAINS = Object.freeze({
|
|
27
|
+
'avalanche-x': { alias: 'X', name: 'x-chain' },
|
|
28
|
+
'avalanche-p': { alias: 'P', name: 'p-chain' },
|
|
29
|
+
});
|
|
30
|
+
/** Own keys only: `constructor`, `toString` or `__proto__` is not a chain or network. */
|
|
31
|
+
const supports = (chain, network) => Object.hasOwn(CHAINS, chain) && Object.hasOwn(NODES, network);
|
|
32
|
+
/** Unreachable through the catalog, which asks `supports` first. */
|
|
33
|
+
function chainOf(input) {
|
|
34
|
+
if (!supports(input.chain, input.network)) {
|
|
35
|
+
throw new Error(`no Avalanche endpoint for ${input.chain}:${input.network}`);
|
|
36
|
+
}
|
|
37
|
+
return CHAINS[input.chain];
|
|
38
|
+
}
|
|
39
|
+
const nodeUrl = (input) => `${NODES[input.network]}/ext/bc/${chainOf(input).alias}`;
|
|
40
|
+
const dataApiUrl = (input) => `${DATA_API}/${input.network}/blockchains/${chainOf(input).name}`;
|
|
41
|
+
/** The revealed key; the error names the preset and network, never the key. */
|
|
42
|
+
function apiKeyOf(input) {
|
|
43
|
+
const key = input.apiKey === undefined ? undefined : (0, secret_1.reveal)(input.apiKey);
|
|
44
|
+
if (typeof key !== 'string' || key.trim() === '') {
|
|
45
|
+
throw new error_1.ConfigError('CONFIG_INVALID', `provider preset 'glacier' requires a non-empty apiKey for ${input.chain}:${input.network}`);
|
|
46
|
+
}
|
|
47
|
+
return key;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Built once at module level, so the plugin's functions keep their identity: registration
|
|
51
|
+
* compares functions by identity, and rebuilt ones would make the same plugin a new one.
|
|
52
|
+
*/
|
|
53
|
+
exports.AVALANCHE_PRESETS = (0, freeze_1.deepFreeze)([
|
|
54
|
+
{
|
|
55
|
+
name: 'public',
|
|
56
|
+
kind: 'rpc',
|
|
57
|
+
production: false,
|
|
58
|
+
supports,
|
|
59
|
+
endpoints: (input) => [
|
|
60
|
+
{ name: 'avax', url: nodeUrl(input) },
|
|
61
|
+
],
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
name: 'public',
|
|
65
|
+
kind: 'indexer',
|
|
66
|
+
production: false,
|
|
67
|
+
supports,
|
|
68
|
+
endpoints: (input) => [
|
|
69
|
+
{ name: 'data-api', url: dataApiUrl(input) },
|
|
70
|
+
],
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'glacier',
|
|
74
|
+
kind: 'indexer',
|
|
75
|
+
requiresApiKey: true,
|
|
76
|
+
supports,
|
|
77
|
+
endpoints: (input) => [
|
|
78
|
+
{
|
|
79
|
+
name: 'data-api',
|
|
80
|
+
url: dataApiUrl(input),
|
|
81
|
+
headers: { 'x-glacier-api-key': (0, secret_1.secret)(apiKeyOf(input)) },
|
|
82
|
+
},
|
|
83
|
+
],
|
|
84
|
+
},
|
|
85
|
+
]);
|
|
86
|
+
//# sourceMappingURL=presets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../src/adapters/avalanche/presets.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Avalanche provider presets, verified on 2026-10-01:\n * - `public` (`rpc`): Ava Labs' public API, `https://api.avax.network/ext/bc/{X,P}` on\n * mainnet and `https://api.avax-test.network/ext/bc/{X,P}` on Fuji. Each chain's JSON-RPC\n * endpoint is its own URL.\n * - `public` (`indexer`): the Avalanche Data API (formerly Glacier) without a key,\n * `https://data-api.avax.network/v1/networks/{mainnet,fuji}/blockchains/{x-chain,p-chain}`.\n * - `glacier` (`indexer`): the same Data API with an API key, sent in its\n * `x-glacier-api-key` header (the service's OpenAPI document) as a `Secret`, so it never\n * reaches logs, errors or events.\n * The public services are rate limited and marked `production: false`; their limits are not\n * published, so none is set here. For production, run your own AvalancheGo node and\n * configure it as `{ endpoints: [{ url: 'https://node.example/ext/bc/X' }] }`.\n */\nimport { ConfigError } from '../../core/errors/error';\nimport type { PresetInput, ProviderPreset } from '../../core/registry/providers';\nimport { reveal, secret } from '../../core/secret/secret';\nimport type { EndpointConfig } from '../../core/transport/types';\nimport { deepFreeze } from '../../core/util/freeze';\n\nconst NODES: Readonly<Record<string, string>> = Object.freeze({\n mainnet: 'https://api.avax.network',\n fuji: 'https://api.avax-test.network',\n});\n\nconst DATA_API = 'https://data-api.avax.network/v1/networks';\n\nconst CHAINS: Readonly<\n Record<string, { readonly alias: string; readonly name: string }>\n> = Object.freeze({\n 'avalanche-x': { alias: 'X', name: 'x-chain' },\n 'avalanche-p': { alias: 'P', name: 'p-chain' },\n});\n\n/** Own keys only: `constructor`, `toString` or `__proto__` is not a chain or network. */\nconst supports = (chain: string, network: string): boolean =>\n Object.hasOwn(CHAINS, chain) && Object.hasOwn(NODES, network);\n\n/** Unreachable through the catalog, which asks `supports` first. */\nfunction chainOf(input: PresetInput) {\n if (!supports(input.chain, input.network)) {\n throw new Error(`no Avalanche endpoint for ${input.chain}:${input.network}`);\n }\n return CHAINS[input.chain] as { readonly alias: string; readonly name: string };\n}\n\nconst nodeUrl = (input: PresetInput): string =>\n `${NODES[input.network] as string}/ext/bc/${chainOf(input).alias}`;\n\nconst dataApiUrl = (input: PresetInput): string =>\n `${DATA_API}/${input.network}/blockchains/${chainOf(input).name}`;\n\n/** The revealed key; the error names the preset and network, never the key. */\nfunction apiKeyOf(input: PresetInput): string {\n const key: unknown = input.apiKey === undefined ? undefined : reveal(input.apiKey);\n if (typeof key !== 'string' || key.trim() === '') {\n throw new ConfigError(\n 'CONFIG_INVALID',\n `provider preset 'glacier' requires a non-empty apiKey for ${input.chain}:${input.network}`,\n );\n }\n return key;\n}\n\n/**\n * Built once at module level, so the plugin's functions keep their identity: registration\n * compares functions by identity, and rebuilt ones would make the same plugin a new one.\n */\nexport const AVALANCHE_PRESETS: readonly ProviderPreset[] = deepFreeze([\n {\n name: 'public',\n kind: 'rpc',\n production: false,\n supports,\n endpoints: (input: PresetInput): readonly EndpointConfig[] => [\n { name: 'avax', url: nodeUrl(input) },\n ],\n },\n {\n name: 'public',\n kind: 'indexer',\n production: false,\n supports,\n endpoints: (input: PresetInput): readonly EndpointConfig[] => [\n { name: 'data-api', url: dataApiUrl(input) },\n ],\n },\n {\n name: 'glacier',\n kind: 'indexer',\n requiresApiKey: true,\n supports,\n endpoints: (input: PresetInput): readonly EndpointConfig[] => [\n {\n name: 'data-api',\n url: dataApiUrl(input),\n headers: { 'x-glacier-api-key': secret(apiKeyOf(input)) },\n },\n ],\n },\n] satisfies ProviderPreset[]);\n"]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Proofs (the finalized-state checks behind `proven` verdicts) and the block source.
|
|
3
|
+
*
|
|
4
|
+
* Snowman never reverts an accepted block, so with the default policy (1 confirmation) an
|
|
5
|
+
* accepted transaction is final. Every fact is read under the proof quorum (one
|
|
6
|
+
* endpoint's word never decides), each at its own height with a monotone key, and no
|
|
7
|
+
* endpoint proposes the height: "block h is final" is "every proof endpoint holds a block
|
|
8
|
+
* at h + N − 1".
|
|
9
|
+
*
|
|
10
|
+
* - `includedFinal` answers "included" only when the proof endpoints agree the transaction
|
|
11
|
+
* is accepted and the block at its located height is the located block and holds it. It
|
|
12
|
+
* answers "not included" only when one of its inputs is gone from the sender's outputs on
|
|
13
|
+
* every proof endpoint and, read after that, the transaction is still not accepted: then
|
|
14
|
+
* another transaction spent the input, and ours can never be accepted. Every other case
|
|
15
|
+
* decides nothing (a retryable `ProviderError`).
|
|
16
|
+
* - `slotConsumed` reads the sender's outputs: an input missing from them is spent.
|
|
17
|
+
* - The block source reads blocks by height; their transactions are read by id from the
|
|
18
|
+
* node, as bytes that hash to that id. A P-Chain proposal transaction counts as failed
|
|
19
|
+
* when its proposal was aborted.
|
|
20
|
+
*/
|
|
21
|
+
import type { BlockSource, ProofSource } from '../../core/driver/types';
|
|
22
|
+
import { type NodeBlock } from './api';
|
|
23
|
+
import { type AvalancheContext } from './context';
|
|
24
|
+
/** Blocks `finalizedHead` trails one endpoint's head by, so peers can attest it. */
|
|
25
|
+
export declare const PEER_SKEW = 1n;
|
|
26
|
+
/** Splits an `inputs` ordering entry (`txID:outputIndex`); malformed data decides nothing. */
|
|
27
|
+
export declare function parseInput(input: string): {
|
|
28
|
+
txId: string;
|
|
29
|
+
outputIndex: number;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* The reads a proof attests under the proof quorum, each fact at its own height, which no
|
|
33
|
+
* endpoint proposes.
|
|
34
|
+
*/
|
|
35
|
+
export declare function attestedReads(ctx: AvalancheContext): {
|
|
36
|
+
holds: (height: bigint) => Promise<boolean>;
|
|
37
|
+
blockAt: (height: bigint) => Promise<NodeBlock | null>;
|
|
38
|
+
final: (height: bigint) => Promise<boolean>;
|
|
39
|
+
};
|
|
40
|
+
export declare function proofSource(ctx: AvalancheContext): ProofSource;
|
|
41
|
+
export declare function blockSource(ctx: AvalancheContext): BlockSource;
|