crypto-aio 0.0.3 → 0.2.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 +167 -0
- package/README.md +163 -13
- 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 +386 -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 +175 -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 +139 -0
- package/dist/adapters/evm/ethers-client.js.map +1 -0
- package/dist/adapters/evm/fees.d.ts +103 -0
- package/dist/adapters/evm/fees.js +277 -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 +12 -0
- package/dist/adapters/evm/index.js.map +1 -0
- package/dist/adapters/evm/network.d.ts +65 -0
- package/dist/adapters/evm/network.js +150 -0
- package/dist/adapters/evm/network.js.map +1 -0
- package/dist/adapters/evm/plugin.d.ts +35 -0
- package/dist/adapters/evm/plugin.js +150 -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 +370 -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 +83 -0
- package/dist/adapters/evm/reader.js +326 -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 +10 -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 +265 -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 +26 -0
- package/dist/adapters/evm/web3-client.js +176 -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 +556 -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 +77 -0
- package/dist/adapters/solana/fees.js +214 -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/message.d.ts +15 -0
- package/dist/adapters/solana/message.js +120 -0
- package/dist/adapters/solana/message.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 +44 -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 +124 -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 +61 -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 +755 -0
- package/dist/adapters/ton/proofs.js.map +1 -0
- package/dist/adapters/ton/reader.d.ts +235 -0
- package/dist/adapters/ton/reader.js +976 -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 +74 -0
- package/dist/adapters/ton/trace.js +303 -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 +41 -0
- package/dist/adapters/tron/abi.js +112 -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 +569 -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 +52 -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 +371 -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 +57 -0
- package/dist/adapters/tron/reader.js +220 -0
- package/dist/adapters/tron/reader.js.map +1 -0
- package/dist/adapters/tron/tokens.d.ts +9 -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 +100 -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 +63 -0
- package/dist/adapters/utxo/context.js +125 -0
- package/dist/adapters/utxo/context.js.map +1 -0
- package/dist/adapters/utxo/decode.d.ts +22 -0
- package/dist/adapters/utxo/decode.js +121 -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 +79 -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 +100 -0
- package/dist/adapters/utxo/esplora.js +498 -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 +66 -0
- package/dist/adapters/utxo/proofs.js +469 -0
- package/dist/adapters/utxo/proofs.js.map +1 -0
- package/dist/adapters/utxo/rawblock.d.ts +46 -0
- package/dist/adapters/utxo/rawblock.js +159 -0
- package/dist/adapters/utxo/rawblock.js.map +1 -0
- package/dist/adapters/utxo/rawtx.d.ts +73 -0
- package/dist/adapters/utxo/rawtx.js +264 -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 +179 -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 +180 -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 +62 -0
- package/dist/core/container/container.js +500 -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 +379 -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 +163 -0
- package/dist/core/errors/codes.js +53 -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 +106 -0
- package/dist/core/lifecycle/engine-rules.js +267 -0
- package/dist/core/lifecycle/engine-rules.js.map +1 -0
- package/dist/core/lifecycle/engine.d.ts +502 -0
- package/dist/core/lifecycle/engine.js +1750 -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 +77 -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 +616 -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 +88 -0
- package/dist/core/lifecycle/workers.js +347 -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 +38 -0
- package/dist/core/model/ids.js +14 -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 +28 -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 +123 -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 +358 -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 +161 -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/format.d.ts +20 -0
- package/dist/core/store/format.js +86 -0
- package/dist/core/store/format.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 +258 -0
- package/dist/core/store/types.js +119 -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 +1703 -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 +159 -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 +35 -0
- package/dist/core/util/json.js +174 -0
- package/dist/core/util/json.js.map +1 -0
- package/dist/core/util/names.d.ts +27 -0
- package/dist/core/util/names.js +56 -0
- package/dist/core/util/names.js.map +1 -0
- package/dist/index.d.ts +65 -14
- package/dist/index.js +107 -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 +737 -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 +68 -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 +38 -0
- package/dist/testing/faulty-store.js +71 -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 +198 -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,28 @@
|
|
|
1
|
+
export type AssetRef = 'native' | {
|
|
2
|
+
readonly standard: string;
|
|
3
|
+
readonly contract: string;
|
|
4
|
+
};
|
|
5
|
+
export type TokenRef = Exclude<AssetRef, 'native'>;
|
|
6
|
+
export type AssetId = string;
|
|
7
|
+
export interface AssetMetadata {
|
|
8
|
+
readonly symbol: string;
|
|
9
|
+
readonly decimals: number;
|
|
10
|
+
readonly name?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface AssetInfo {
|
|
13
|
+
readonly id: AssetId;
|
|
14
|
+
readonly chain: string;
|
|
15
|
+
readonly network: string;
|
|
16
|
+
readonly ref: AssetRef;
|
|
17
|
+
readonly metadata: AssetMetadata;
|
|
18
|
+
}
|
|
19
|
+
export declare function assetId(chain: string, network: string, ref: AssetRef): AssetId;
|
|
20
|
+
export declare function isAssetId(value: string): boolean;
|
|
21
|
+
export declare function parseAssetId(id: string): {
|
|
22
|
+
chain: string;
|
|
23
|
+
network: string;
|
|
24
|
+
ref: AssetRef;
|
|
25
|
+
};
|
|
26
|
+
export declare function sameAssetRef(a: AssetRef, b: AssetRef): boolean;
|
|
27
|
+
/** Returns a reason when metadata is unusable, otherwise `undefined`. */
|
|
28
|
+
export declare function metadataProblem(metadata: AssetMetadata): string | undefined;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assetId = assetId;
|
|
4
|
+
exports.isAssetId = isAssetId;
|
|
5
|
+
exports.parseAssetId = parseAssetId;
|
|
6
|
+
exports.sameAssetRef = sameAssetRef;
|
|
7
|
+
exports.metadataProblem = metadataProblem;
|
|
8
|
+
const error_1 = require("../errors/error");
|
|
9
|
+
const ASSET_ID = /^([a-z][a-z0-9-]*):([a-z0-9-]+)\/(?:(native)|([a-z0-9-]+):(.+))$/;
|
|
10
|
+
function assetId(chain, network, ref) {
|
|
11
|
+
return ref === 'native'
|
|
12
|
+
? `${chain}:${network}/native`
|
|
13
|
+
: `${chain}:${network}/${ref.standard}:${ref.contract}`;
|
|
14
|
+
}
|
|
15
|
+
function isAssetId(value) {
|
|
16
|
+
return ASSET_ID.test(value);
|
|
17
|
+
}
|
|
18
|
+
function parseAssetId(id) {
|
|
19
|
+
const match = ASSET_ID.exec(id);
|
|
20
|
+
// A malformed id is the caller's text, which may be a pasted secret: never repeated.
|
|
21
|
+
if (!match)
|
|
22
|
+
throw new error_1.ValidationError('ASSET_RESOLUTION', 'malformed asset id');
|
|
23
|
+
const [, chain, network, native, standard, contract] = match;
|
|
24
|
+
return {
|
|
25
|
+
chain: chain,
|
|
26
|
+
network: network,
|
|
27
|
+
ref: native
|
|
28
|
+
? 'native'
|
|
29
|
+
: { standard: standard, contract: contract },
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function sameAssetRef(a, b) {
|
|
33
|
+
if (a === 'native' || b === 'native')
|
|
34
|
+
return a === b;
|
|
35
|
+
return a.standard === b.standard && a.contract === b.contract;
|
|
36
|
+
}
|
|
37
|
+
/** Returns a reason when metadata is unusable, otherwise `undefined`. */
|
|
38
|
+
function metadataProblem(metadata) {
|
|
39
|
+
if (!metadata.symbol)
|
|
40
|
+
return 'symbol must not be empty';
|
|
41
|
+
const { decimals } = metadata;
|
|
42
|
+
if (!Number.isInteger(decimals) || decimals < 0 || decimals > 255) {
|
|
43
|
+
return 'decimals must be an integer in [0, 255]';
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=asset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asset.js","sourceRoot":"","sources":["../../../src/core/model/asset.ts"],"names":[],"mappings":";;AAuBA,0BAIC;AAED,8BAEC;AAED,oCAgBC;AAED,oCAGC;AAGD,0CAOC;AAhED,2CAAkD;AAqBlD,MAAM,QAAQ,GAAG,kEAAkE,CAAC;AAEpF,SAAgB,OAAO,CAAC,KAAa,EAAE,OAAe,EAAE,GAAa;IACnE,OAAO,GAAG,KAAK,QAAQ;QACrB,CAAC,CAAC,GAAG,KAAK,IAAI,OAAO,SAAS;QAC9B,CAAC,CAAC,GAAG,KAAK,IAAI,OAAO,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;AAC5D,CAAC;AAED,SAAgB,SAAS,CAAC,KAAa;IACrC,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAgB,YAAY,CAAC,EAAU;IAKrC,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChC,qFAAqF;IACrF,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,uBAAe,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;IAChF,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;IAC7D,OAAO;QACL,KAAK,EAAE,KAAe;QACtB,OAAO,EAAE,OAAiB;QAC1B,GAAG,EAAE,MAAM;YACT,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,EAAE,QAAQ,EAAE,QAAkB,EAAE,QAAQ,EAAE,QAAkB,EAAE;KACnE,CAAC;AACJ,CAAC;AAED,SAAgB,YAAY,CAAC,CAAW,EAAE,CAAW;IACnD,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACrD,OAAO,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,KAAK,CAAC,CAAC,QAAQ,CAAC;AAChE,CAAC;AAED,yEAAyE;AACzE,SAAgB,eAAe,CAAC,QAAuB;IACrD,IAAI,CAAC,QAAQ,CAAC,MAAM;QAAE,OAAO,0BAA0B,CAAC;IACxD,MAAM,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;QAClE,OAAO,yCAAyC,CAAC;IACnD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC","sourcesContent":["import { ValidationError } from '../errors/error';\n\nexport type AssetRef =\n 'native' | { readonly standard: string; readonly contract: string };\nexport type TokenRef = Exclude<AssetRef, 'native'>;\nexport type AssetId = string;\n\nexport interface AssetMetadata {\n readonly symbol: string;\n readonly decimals: number;\n readonly name?: string;\n}\n\nexport interface AssetInfo {\n readonly id: AssetId;\n readonly chain: string;\n readonly network: string;\n readonly ref: AssetRef;\n readonly metadata: AssetMetadata;\n}\n\nconst ASSET_ID = /^([a-z][a-z0-9-]*):([a-z0-9-]+)\\/(?:(native)|([a-z0-9-]+):(.+))$/;\n\nexport function assetId(chain: string, network: string, ref: AssetRef): AssetId {\n return ref === 'native'\n ? `${chain}:${network}/native`\n : `${chain}:${network}/${ref.standard}:${ref.contract}`;\n}\n\nexport function isAssetId(value: string): boolean {\n return ASSET_ID.test(value);\n}\n\nexport function parseAssetId(id: string): {\n chain: string;\n network: string;\n ref: AssetRef;\n} {\n const match = ASSET_ID.exec(id);\n // A malformed id is the caller's text, which may be a pasted secret: never repeated.\n if (!match) throw new ValidationError('ASSET_RESOLUTION', 'malformed asset id');\n const [, chain, network, native, standard, contract] = match;\n return {\n chain: chain as string,\n network: network as string,\n ref: native\n ? 'native'\n : { standard: standard as string, contract: contract as string },\n };\n}\n\nexport function sameAssetRef(a: AssetRef, b: AssetRef): boolean {\n if (a === 'native' || b === 'native') return a === b;\n return a.standard === b.standard && a.contract === b.contract;\n}\n\n/** Returns a reason when metadata is unusable, otherwise `undefined`. */\nexport function metadataProblem(metadata: AssetMetadata): string | undefined {\n if (!metadata.symbol) return 'symbol must not be empty';\n const { decimals } = metadata;\n if (!Number.isInteger(decimals) || decimals < 0 || decimals > 255) {\n return 'decimals must be an integer in [0, 255]';\n }\n return undefined;\n}\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export declare const KNOWN_CAPABILITIES: readonly ["tokens", "memo", "batch-transfer", "replace-fee", "cancel", "block-scan", "address-history", "finality-tag", "hd-public-derivation", "contract-read", "fee-market-1559", "expiry"];
|
|
2
|
+
export type KnownCapability = (typeof KNOWN_CAPABILITIES)[number];
|
|
3
|
+
export type Capability = KnownCapability | (string & {});
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KNOWN_CAPABILITIES = void 0;
|
|
4
|
+
exports.KNOWN_CAPABILITIES = Object.freeze([
|
|
5
|
+
'tokens',
|
|
6
|
+
'memo',
|
|
7
|
+
'batch-transfer',
|
|
8
|
+
'replace-fee',
|
|
9
|
+
'cancel',
|
|
10
|
+
'block-scan',
|
|
11
|
+
'address-history',
|
|
12
|
+
'finality-tag',
|
|
13
|
+
'hd-public-derivation',
|
|
14
|
+
'contract-read',
|
|
15
|
+
'fee-market-1559',
|
|
16
|
+
'expiry',
|
|
17
|
+
]);
|
|
18
|
+
//# sourceMappingURL=capability.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capability.js","sourceRoot":"","sources":["../../../src/core/model/capability.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG,MAAM,CAAC,MAAM,CAAC;IAC9C,QAAQ;IACR,MAAM;IACN,gBAAgB;IAChB,aAAa;IACb,QAAQ;IACR,YAAY;IACZ,iBAAiB;IACjB,cAAc;IACd,sBAAsB;IACtB,eAAe;IACf,iBAAiB;IACjB,QAAQ;CACA,CAAC,CAAC","sourcesContent":["export const KNOWN_CAPABILITIES = Object.freeze([\n 'tokens',\n 'memo',\n 'batch-transfer',\n 'replace-fee',\n 'cancel',\n 'block-scan',\n 'address-history',\n 'finality-tag',\n 'hd-public-derivation',\n 'contract-read',\n 'fee-market-1559',\n 'expiry',\n] as const);\n\nexport type KnownCapability = (typeof KNOWN_CAPABILITIES)[number];\nexport type Capability = KnownCapability | (string & {});\n"]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Capability } from './capability';
|
|
2
|
+
import type { OrderingKind } from './ordering';
|
|
3
|
+
export type FinalityPolicy = {
|
|
4
|
+
readonly kind: 'confirmations';
|
|
5
|
+
readonly confirmations: number;
|
|
6
|
+
} | {
|
|
7
|
+
readonly kind: 'tag';
|
|
8
|
+
readonly tag: 'finalized';
|
|
9
|
+
readonly fallbackConfirmations: number;
|
|
10
|
+
} | {
|
|
11
|
+
readonly kind: 'solidified';
|
|
12
|
+
} | {
|
|
13
|
+
readonly kind: 'commitment';
|
|
14
|
+
readonly level: 'finalized';
|
|
15
|
+
} | {
|
|
16
|
+
readonly kind: 'masterchain';
|
|
17
|
+
};
|
|
18
|
+
export interface NativeAssetInfo {
|
|
19
|
+
readonly symbol: string;
|
|
20
|
+
readonly decimals: number;
|
|
21
|
+
readonly name?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface NetworkInfo {
|
|
24
|
+
readonly id: string;
|
|
25
|
+
/** Expected value of the driver's identity probe (chain id, genesis hash…). */
|
|
26
|
+
readonly identity?: string;
|
|
27
|
+
readonly testnet: boolean;
|
|
28
|
+
readonly feeModel: string;
|
|
29
|
+
readonly finality: FinalityPolicy;
|
|
30
|
+
readonly defaultConfirmations: number;
|
|
31
|
+
/** Recent blocks a scanner retains for rollback detection; independent of finality. */
|
|
32
|
+
readonly reorgWindow: number;
|
|
33
|
+
readonly maxLagBlocks?: number;
|
|
34
|
+
readonly explorer?: {
|
|
35
|
+
readonly tx: string;
|
|
36
|
+
readonly address: string;
|
|
37
|
+
};
|
|
38
|
+
readonly replacement?: {
|
|
39
|
+
readonly minBumpPercent: number;
|
|
40
|
+
};
|
|
41
|
+
readonly capabilities?: {
|
|
42
|
+
readonly add?: readonly Capability[];
|
|
43
|
+
readonly remove?: readonly Capability[];
|
|
44
|
+
};
|
|
45
|
+
readonly params?: Readonly<Record<string, unknown>>;
|
|
46
|
+
}
|
|
47
|
+
export interface ChainInfo {
|
|
48
|
+
readonly id: string;
|
|
49
|
+
readonly family: string;
|
|
50
|
+
readonly model: 'account' | 'utxo';
|
|
51
|
+
readonly ordering: OrderingKind;
|
|
52
|
+
readonly schemes: readonly string[];
|
|
53
|
+
readonly nativeAsset: NativeAssetInfo;
|
|
54
|
+
readonly defaultNetwork: string;
|
|
55
|
+
readonly networks: Readonly<Record<string, NetworkInfo>>;
|
|
56
|
+
/**
|
|
57
|
+
* Whether the chain's extended public keys carry their network class (SLIP-0132: `xpub`
|
|
58
|
+
* on mainnet, `tpub` on test networks), so `deriveAddress` refuses a key of the other
|
|
59
|
+
* class. Default: `true` for `utxo`-model chains, `false` for account-model ones.
|
|
60
|
+
*/
|
|
61
|
+
readonly xpubNetworkClass?: boolean;
|
|
62
|
+
}
|
|
63
|
+
export declare function explorerUrl(network: NetworkInfo, kind: 'tx' | 'address', value: string): string | undefined;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.explorerUrl = explorerUrl;
|
|
4
|
+
function explorerUrl(network, kind, value) {
|
|
5
|
+
const template = network.explorer?.[kind];
|
|
6
|
+
return template?.replace(kind === 'tx' ? '{id}' : '{address}', encodeURIComponent(value));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=chain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/core/model/chain.ts"],"names":[],"mappings":";;AAyDA,kCAUC;AAVD,SAAgB,WAAW,CACzB,OAAoB,EACpB,IAAsB,EACtB,KAAa;IAEb,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC;IAC1C,OAAO,QAAQ,EAAE,OAAO,CACtB,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,EACpC,kBAAkB,CAAC,KAAK,CAAC,CAC1B,CAAC;AACJ,CAAC","sourcesContent":["import type { Capability } from './capability';\nimport type { OrderingKind } from './ordering';\n\nexport type FinalityPolicy =\n | { readonly kind: 'confirmations'; readonly confirmations: number }\n | {\n readonly kind: 'tag';\n readonly tag: 'finalized';\n readonly fallbackConfirmations: number;\n }\n | { readonly kind: 'solidified' }\n | { readonly kind: 'commitment'; readonly level: 'finalized' }\n | { readonly kind: 'masterchain' };\n\nexport interface NativeAssetInfo {\n readonly symbol: string;\n readonly decimals: number;\n readonly name?: string;\n}\n\nexport interface NetworkInfo {\n readonly id: string;\n /** Expected value of the driver's identity probe (chain id, genesis hash…). */\n readonly identity?: string;\n readonly testnet: boolean;\n readonly feeModel: string;\n readonly finality: FinalityPolicy;\n readonly defaultConfirmations: number;\n /** Recent blocks a scanner retains for rollback detection; independent of finality. */\n readonly reorgWindow: number;\n readonly maxLagBlocks?: number;\n readonly explorer?: { readonly tx: string; readonly address: string };\n readonly replacement?: { readonly minBumpPercent: number };\n readonly capabilities?: {\n readonly add?: readonly Capability[];\n readonly remove?: readonly Capability[];\n };\n readonly params?: Readonly<Record<string, unknown>>;\n}\n\nexport interface ChainInfo {\n readonly id: string;\n readonly family: string;\n readonly model: 'account' | 'utxo';\n readonly ordering: OrderingKind;\n readonly schemes: readonly string[];\n readonly nativeAsset: NativeAssetInfo;\n readonly defaultNetwork: string;\n readonly networks: Readonly<Record<string, NetworkInfo>>;\n /**\n * Whether the chain's extended public keys carry their network class (SLIP-0132: `xpub`\n * on mainnet, `tpub` on test networks), so `deriveAddress` refuses a key of the other\n * class. Default: `true` for `utxo`-model chains, `false` for account-model ones.\n */\n readonly xpubNetworkClass?: boolean;\n}\n\nexport function explorerUrl(\n network: NetworkInfo,\n kind: 'tx' | 'address',\n value: string,\n): string | undefined {\n const template = network.explorer?.[kind];\n return template?.replace(\n kind === 'tx' ? '{id}' : '{address}',\n encodeURIComponent(value),\n );\n}\n"]}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Address } from './address';
|
|
2
|
+
import type { Amount } from './amount';
|
|
3
|
+
import type { AssetId, AssetRef } from './asset';
|
|
4
|
+
export type FeeSpeed = 'slow' | 'normal' | 'fast';
|
|
5
|
+
/** Family-specific explicit fee parameters (e.g. `{ maxFeePerGas }`, `{ satPerVByte }`). */
|
|
6
|
+
export type FeeOverride = Readonly<Record<string, unknown>>;
|
|
7
|
+
export type FeeBound = 'exact' | 'expected' | 'upper';
|
|
8
|
+
export interface FeeChargeDraft {
|
|
9
|
+
readonly asset: AssetRef;
|
|
10
|
+
readonly amount: bigint;
|
|
11
|
+
readonly label: string;
|
|
12
|
+
}
|
|
13
|
+
/** Driver-level fee estimate (asset refs and base units). */
|
|
14
|
+
export interface FeeEstimateDraft {
|
|
15
|
+
readonly kind: string;
|
|
16
|
+
readonly speed: FeeSpeed | 'custom';
|
|
17
|
+
readonly charges: readonly FeeChargeDraft[];
|
|
18
|
+
readonly bound: FeeBound;
|
|
19
|
+
readonly payer?: string;
|
|
20
|
+
readonly details: Readonly<Record<string, unknown>>;
|
|
21
|
+
}
|
|
22
|
+
export interface FeeCharge {
|
|
23
|
+
readonly amount: Amount;
|
|
24
|
+
readonly label: string;
|
|
25
|
+
}
|
|
26
|
+
export interface FeeEstimate {
|
|
27
|
+
readonly kind: string;
|
|
28
|
+
readonly speed: FeeSpeed | 'custom';
|
|
29
|
+
readonly charges: readonly FeeCharge[];
|
|
30
|
+
readonly bound: FeeBound;
|
|
31
|
+
readonly payer?: Address;
|
|
32
|
+
readonly details: Readonly<Record<string, unknown>>;
|
|
33
|
+
}
|
|
34
|
+
export declare function isFeeSpeed(value: unknown): value is FeeSpeed;
|
|
35
|
+
/** Sum of all charges in one asset, or `undefined` when nothing is charged in it. */
|
|
36
|
+
export declare function feeTotal(fee: FeeEstimate, asset: AssetId): Amount | undefined;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isFeeSpeed = isFeeSpeed;
|
|
4
|
+
exports.feeTotal = feeTotal;
|
|
5
|
+
function isFeeSpeed(value) {
|
|
6
|
+
return value === 'slow' || value === 'normal' || value === 'fast';
|
|
7
|
+
}
|
|
8
|
+
/** Sum of all charges in one asset, or `undefined` when nothing is charged in it. */
|
|
9
|
+
function feeTotal(fee, asset) {
|
|
10
|
+
let total;
|
|
11
|
+
for (const charge of fee.charges) {
|
|
12
|
+
if (charge.amount.asset.id === asset)
|
|
13
|
+
total = total ? total.plus(charge.amount) : charge.amount;
|
|
14
|
+
}
|
|
15
|
+
return total;
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=fee.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fee.js","sourceRoot":"","sources":["../../../src/core/model/fee.ts"],"names":[],"mappings":";;AAuCA,gCAEC;AAGD,4BAOC;AAZD,SAAgB,UAAU,CAAC,KAAc;IACvC,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,MAAM,CAAC;AACpE,CAAC;AAED,qFAAqF;AACrF,SAAgB,QAAQ,CAAC,GAAgB,EAAE,KAAc;IACvD,IAAI,KAAyB,CAAC;IAC9B,KAAK,MAAM,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK;YAClC,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import type { Address } from './address';\nimport type { Amount } from './amount';\nimport type { AssetId, AssetRef } from './asset';\n\nexport type FeeSpeed = 'slow' | 'normal' | 'fast';\n/** Family-specific explicit fee parameters (e.g. `{ maxFeePerGas }`, `{ satPerVByte }`). */\nexport type FeeOverride = Readonly<Record<string, unknown>>;\nexport type FeeBound = 'exact' | 'expected' | 'upper';\n\nexport interface FeeChargeDraft {\n readonly asset: AssetRef;\n readonly amount: bigint;\n readonly label: string;\n}\n\n/** Driver-level fee estimate (asset refs and base units). */\nexport interface FeeEstimateDraft {\n readonly kind: string;\n readonly speed: FeeSpeed | 'custom';\n readonly charges: readonly FeeChargeDraft[];\n readonly bound: FeeBound;\n readonly payer?: string;\n readonly details: Readonly<Record<string, unknown>>;\n}\n\nexport interface FeeCharge {\n readonly amount: Amount;\n readonly label: string;\n}\n\nexport interface FeeEstimate {\n readonly kind: string;\n readonly speed: FeeSpeed | 'custom';\n readonly charges: readonly FeeCharge[];\n readonly bound: FeeBound;\n readonly payer?: Address;\n readonly details: Readonly<Record<string, unknown>>;\n}\n\nexport function isFeeSpeed(value: unknown): value is FeeSpeed {\n return value === 'slow' || value === 'normal' || value === 'fast';\n}\n\n/** Sum of all charges in one asset, or `undefined` when nothing is charged in it. */\nexport function feeTotal(fee: FeeEstimate, asset: AssetId): Amount | undefined {\n let total: Amount | undefined;\n for (const charge of fee.charges) {\n if (charge.amount.asset.id === asset)\n total = total ? total.plus(charge.amount) : charge.amount;\n }\n return total;\n}\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-level registries. Users and plugins augment them through the package entry, e.g.
|
|
3
|
+
* `declare module 'crypto-aio' { interface ChainRegistry { ethereum: {...} } }`, and plugins
|
|
4
|
+
* inside this package augment the entry module (`declare module '../index'`). Never augment
|
|
5
|
+
* this file directly: an augmentation here and one through the entry are then merged in file
|
|
6
|
+
* order, and a user's chains can be lost.
|
|
7
|
+
*/
|
|
8
|
+
export interface ChainRegistry {
|
|
9
|
+
}
|
|
10
|
+
export interface FamilyRegistry {
|
|
11
|
+
}
|
|
12
|
+
export interface NativeClientMap {
|
|
13
|
+
}
|
|
14
|
+
export type ChainId = Extract<keyof ChainRegistry, string>;
|
|
15
|
+
type ChainEntry<C extends ChainId> = ChainRegistry[C] extends {
|
|
16
|
+
family: string;
|
|
17
|
+
network: string;
|
|
18
|
+
} ? ChainRegistry[C] : never;
|
|
19
|
+
export type NetworkOf<C extends ChainId> = ChainEntry<C>['network'];
|
|
20
|
+
export type FamilyOf<C extends ChainId> = ChainEntry<C>['family'];
|
|
21
|
+
export type LibraryOf<C extends ChainId> = FamilyOf<C> extends keyof FamilyRegistry ? FamilyRegistry[FamilyOf<C>] extends {
|
|
22
|
+
library: infer L;
|
|
23
|
+
} ? L : string : string;
|
|
24
|
+
export type ExtOf<C extends ChainId> = FamilyOf<C> extends keyof FamilyRegistry ? FamilyRegistry[FamilyOf<C>] extends {
|
|
25
|
+
ext: infer E;
|
|
26
|
+
} ? E : unknown : unknown;
|
|
27
|
+
export declare const Library: Readonly<{
|
|
28
|
+
readonly ETHERS: "ethers";
|
|
29
|
+
/** @deprecated web3.js is no longer maintained: use `ETHERS`. Removed in crypto-aio 2.0. */
|
|
30
|
+
readonly WEB3: "web3";
|
|
31
|
+
readonly TRONWEB: "tronweb";
|
|
32
|
+
readonly BITCOINJS_LIB: "bitcoinjs-lib";
|
|
33
|
+
readonly SOLANA_WEB3_JS: "@solana/web3.js";
|
|
34
|
+
readonly TON: "@ton/ton";
|
|
35
|
+
readonly AVALANCHEJS: "@avalabs/avalanchejs";
|
|
36
|
+
}>;
|
|
37
|
+
export type KnownLibrary = (typeof Library)[keyof typeof Library];
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Library = void 0;
|
|
4
|
+
exports.Library = Object.freeze({
|
|
5
|
+
ETHERS: 'ethers',
|
|
6
|
+
/** @deprecated web3.js is no longer maintained: use `ETHERS`. Removed in crypto-aio 2.0. */
|
|
7
|
+
WEB3: 'web3',
|
|
8
|
+
TRONWEB: 'tronweb',
|
|
9
|
+
BITCOINJS_LIB: 'bitcoinjs-lib',
|
|
10
|
+
SOLANA_WEB3_JS: '@solana/web3.js',
|
|
11
|
+
TON: '@ton/ton',
|
|
12
|
+
AVALANCHEJS: '@avalabs/avalanchejs',
|
|
13
|
+
});
|
|
14
|
+
//# sourceMappingURL=ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../../src/core/model/ids.ts"],"names":[],"mappings":";;;AAmCa,QAAA,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC;IACnC,MAAM,EAAE,QAAQ;IAChB,4FAA4F;IAC5F,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,iBAAiB;IACjC,GAAG,EAAE,UAAU;IACf,WAAW,EAAE,sBAAsB;CAC3B,CAAC,CAAC","sourcesContent":["/**\n * Type-level registries. Users and plugins augment them through the package entry, e.g.\n * `declare module 'crypto-aio' { interface ChainRegistry { ethereum: {...} } }`, and plugins\n * inside this package augment the entry module (`declare module '../index'`). Never augment\n * this file directly: an augmentation here and one through the entry are then merged in file\n * order, and a user's chains can be lost.\n */\nexport interface ChainRegistry {}\nexport interface FamilyRegistry {}\nexport interface NativeClientMap {}\n\nexport type ChainId = Extract<keyof ChainRegistry, string>;\n\ntype ChainEntry<C extends ChainId> = ChainRegistry[C] extends {\n family: string;\n network: string;\n}\n ? ChainRegistry[C]\n : never;\n\nexport type NetworkOf<C extends ChainId> = ChainEntry<C>['network'];\nexport type FamilyOf<C extends ChainId> = ChainEntry<C>['family'];\nexport type LibraryOf<C extends ChainId> =\n FamilyOf<C> extends keyof FamilyRegistry\n ? FamilyRegistry[FamilyOf<C>] extends { library: infer L }\n ? L\n : string\n : string;\nexport type ExtOf<C extends ChainId> =\n FamilyOf<C> extends keyof FamilyRegistry\n ? FamilyRegistry[FamilyOf<C>] extends { ext: infer E }\n ? E\n : unknown\n : unknown;\n\nexport const Library = Object.freeze({\n ETHERS: 'ethers',\n /** @deprecated web3.js is no longer maintained: use `ETHERS`. Removed in crypto-aio 2.0. */\n WEB3: 'web3',\n TRONWEB: 'tronweb',\n BITCOINJS_LIB: 'bitcoinjs-lib',\n SOLANA_WEB3_JS: '@solana/web3.js',\n TON: '@ton/ton',\n AVALANCHEJS: '@avalabs/avalanchejs',\n} as const);\n\nexport type KnownLibrary = (typeof Library)[keyof typeof Library];\n"]}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { Address } from './address';
|
|
2
|
+
import type { Amount, AmountInput } from './amount';
|
|
3
|
+
import type { AssetId, AssetInfo, AssetRef } from './asset';
|
|
4
|
+
import type { FeeOverride, FeeSpeed } from './fee';
|
|
5
|
+
export interface TransferOutputInput {
|
|
6
|
+
readonly to: string;
|
|
7
|
+
readonly amount: AmountInput;
|
|
8
|
+
}
|
|
9
|
+
export interface TransferIntent {
|
|
10
|
+
readonly to?: string;
|
|
11
|
+
readonly amount?: AmountInput;
|
|
12
|
+
readonly outputs?: readonly TransferOutputInput[];
|
|
13
|
+
/** `'native'`, a token ref, an asset id, or an alias registered for this chain/network. */
|
|
14
|
+
readonly asset?: AssetRef | string;
|
|
15
|
+
readonly from?: string;
|
|
16
|
+
readonly memo?: string;
|
|
17
|
+
readonly fee?: FeeSpeed | FeeOverride;
|
|
18
|
+
}
|
|
19
|
+
export interface NormalizedOutput {
|
|
20
|
+
readonly to: Address;
|
|
21
|
+
readonly amount: Amount;
|
|
22
|
+
}
|
|
23
|
+
export interface NormalizedIntent {
|
|
24
|
+
readonly asset: AssetInfo;
|
|
25
|
+
readonly outputs: readonly NormalizedOutput[];
|
|
26
|
+
readonly from: Address;
|
|
27
|
+
readonly memo?: string;
|
|
28
|
+
readonly fee: FeeSpeed | FeeOverride;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* One output as drivers receive it. `variant` is the recipient address's chain-specific
|
|
32
|
+
* meaning (`Address.variant`), present only when its chain has one, e.g. TON's
|
|
33
|
+
* `bounceable` flag (the intent's `to` variant decides bounce behaviour).
|
|
34
|
+
*/
|
|
35
|
+
export interface DriverOutput {
|
|
36
|
+
readonly to: string;
|
|
37
|
+
readonly amount: bigint;
|
|
38
|
+
readonly variant?: Readonly<Record<string, unknown>>;
|
|
39
|
+
}
|
|
40
|
+
/** What drivers receive: canonical strings and base units only. */
|
|
41
|
+
export interface DriverIntent {
|
|
42
|
+
readonly asset: AssetRef;
|
|
43
|
+
readonly outputs: readonly DriverOutput[];
|
|
44
|
+
readonly from: string;
|
|
45
|
+
readonly memo?: string;
|
|
46
|
+
readonly fee: FeeSpeed | FeeOverride;
|
|
47
|
+
}
|
|
48
|
+
export interface StoredIntent extends DriverIntent {
|
|
49
|
+
readonly assetId: AssetId;
|
|
50
|
+
}
|
|
51
|
+
export interface IntentSummary {
|
|
52
|
+
readonly asset: AssetId;
|
|
53
|
+
readonly outputs: readonly {
|
|
54
|
+
readonly to: string;
|
|
55
|
+
readonly amount: string;
|
|
56
|
+
}[];
|
|
57
|
+
readonly memo?: string;
|
|
58
|
+
}
|
|
59
|
+
export declare function collectOutputs(intent: TransferIntent): readonly TransferOutputInput[];
|
|
60
|
+
export declare function toStoredIntent(intent: NormalizedIntent): StoredIntent;
|
|
61
|
+
export declare function summarizeIntent(intent: StoredIntent): IntentSummary;
|
|
62
|
+
/** Stable hash of the normalized intent: equal intents in different input forms collide. */
|
|
63
|
+
export declare function intentHash(chain: string, network: string, intent: StoredIntent): string;
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.collectOutputs = collectOutputs;
|
|
4
|
+
exports.toStoredIntent = toStoredIntent;
|
|
5
|
+
exports.summarizeIntent = summarizeIntent;
|
|
6
|
+
exports.intentHash = intentHash;
|
|
7
|
+
const error_1 = require("../errors/error");
|
|
8
|
+
const json_1 = require("../util/json");
|
|
9
|
+
function collectOutputs(intent) {
|
|
10
|
+
const shorthand = intent.to !== undefined || intent.amount !== undefined;
|
|
11
|
+
if (shorthand && intent.outputs !== undefined) {
|
|
12
|
+
throw new error_1.ValidationError('INVALID_INTENT', 'use either { to, amount } or outputs, not both');
|
|
13
|
+
}
|
|
14
|
+
if (shorthand) {
|
|
15
|
+
if (intent.to === undefined || intent.amount === undefined) {
|
|
16
|
+
throw new error_1.ValidationError('INVALID_INTENT', 'both to and amount are required');
|
|
17
|
+
}
|
|
18
|
+
return [{ to: intent.to, amount: intent.amount }];
|
|
19
|
+
}
|
|
20
|
+
if (!intent.outputs || intent.outputs.length === 0) {
|
|
21
|
+
throw new error_1.ValidationError('INVALID_INTENT', 'at least one output is required');
|
|
22
|
+
}
|
|
23
|
+
return intent.outputs;
|
|
24
|
+
}
|
|
25
|
+
function toStoredIntent(intent) {
|
|
26
|
+
return {
|
|
27
|
+
assetId: intent.asset.id,
|
|
28
|
+
asset: intent.asset.ref,
|
|
29
|
+
// A variant is kept (and so hashed) only when the address has one, so intents of
|
|
30
|
+
// chains without variants hash exactly as before. An empty variant is none.
|
|
31
|
+
outputs: intent.outputs.map((o) => {
|
|
32
|
+
const variant = o.to.variant ? plainVariant(o.to.variant) : undefined;
|
|
33
|
+
return {
|
|
34
|
+
to: o.to.canonical,
|
|
35
|
+
amount: o.amount.base,
|
|
36
|
+
...(variant && Object.keys(variant).length > 0 ? { variant } : {}),
|
|
37
|
+
};
|
|
38
|
+
}),
|
|
39
|
+
from: intent.from.canonical,
|
|
40
|
+
...(intent.memo !== undefined ? { memo: intent.memo } : {}),
|
|
41
|
+
fee: intent.fee,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function summarizeIntent(intent) {
|
|
45
|
+
return {
|
|
46
|
+
asset: intent.assetId,
|
|
47
|
+
outputs: intent.outputs.map((o) => ({ to: o.to, amount: o.amount.toString() })),
|
|
48
|
+
...(intent.memo !== undefined ? { memo: intent.memo } : {}),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** Stable hash of the normalized intent: equal intents in different input forms collide. */
|
|
52
|
+
function intentHash(chain, network, intent) {
|
|
53
|
+
return (0, json_1.sha256Hex)((0, json_1.canonicalJson)({
|
|
54
|
+
v: 1,
|
|
55
|
+
chain,
|
|
56
|
+
network,
|
|
57
|
+
asset: intent.assetId,
|
|
58
|
+
outputs: intent.outputs,
|
|
59
|
+
from: intent.from,
|
|
60
|
+
memo: intent.memo ?? null,
|
|
61
|
+
fee: intent.fee,
|
|
62
|
+
}));
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* A copy of an address variant that holds plain JSON values only (strings, finite
|
|
66
|
+
* numbers, booleans, null) under string keys, so the stored intent stays plain data
|
|
67
|
+
* and hashes stably. A symbol key is refused: the hash would not see it. The
|
|
68
|
+
* message names no address.
|
|
69
|
+
*/
|
|
70
|
+
function plainVariant(variant) {
|
|
71
|
+
const plain = Object.getOwnPropertySymbols(variant).length === 0 &&
|
|
72
|
+
Object.values(variant).every((value) => value === null ||
|
|
73
|
+
typeof value === 'string' ||
|
|
74
|
+
typeof value === 'boolean' ||
|
|
75
|
+
(typeof value === 'number' && Number.isFinite(value)));
|
|
76
|
+
if (!plain) {
|
|
77
|
+
throw new error_1.ValidationError('INVALID_ADDRESS', 'an address variant may hold only string keys with strings, finite numbers, booleans or null');
|
|
78
|
+
}
|
|
79
|
+
return { ...variant };
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=intent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"intent.js","sourceRoot":"","sources":["../../../src/core/model/intent.ts"],"names":[],"mappings":";;AAkEA,wCAkBC;AAED,wCAkBC;AAED,0CAMC;AAGD,gCAaC;AAhID,2CAAkD;AAClD,uCAAwD;AAiExD,SAAgB,cAAc,CAAC,MAAsB;IACnD,MAAM,SAAS,GAAG,MAAM,CAAC,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC;IACzE,IAAI,SAAS,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAC9C,MAAM,IAAI,uBAAe,CACvB,gBAAgB,EAChB,gDAAgD,CACjD,CAAC;IACJ,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,MAAM,CAAC,EAAE,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3D,MAAM,IAAI,uBAAe,CAAC,gBAAgB,EAAE,iCAAiC,CAAC,CAAC;QACjF,CAAC;QACD,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,uBAAe,CAAC,gBAAgB,EAAE,iCAAiC,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,MAAM,CAAC,OAAO,CAAC;AACxB,CAAC;AAED,SAAgB,cAAc,CAAC,MAAwB;IACrD,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE;QACxB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG;QACvB,iFAAiF;QACjF,4EAA4E;QAC5E,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YAChC,MAAM,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YACtE,OAAO;gBACL,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,SAAS;gBAClB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;gBACrB,GAAG,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACnE,CAAC;QACJ,CAAC,CAAC;QACF,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS;QAC3B,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,EAAE,MAAM,CAAC,GAAG;KAChB,CAAC;AACJ,CAAC;AAED,SAAgB,eAAe,CAAC,MAAoB;IAClD,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,OAAO;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC/E,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAED,4FAA4F;AAC5F,SAAgB,UAAU,CAAC,KAAa,EAAE,OAAe,EAAE,MAAoB;IAC7E,OAAO,IAAA,gBAAS,EACd,IAAA,oBAAa,EAAC;QACZ,CAAC,EAAE,CAAC;QACJ,KAAK;QACL,OAAO;QACP,KAAK,EAAE,MAAM,CAAC,OAAO;QACrB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,IAAI;QACzB,GAAG,EAAE,MAAM,CAAC,GAAG;KAChB,CAAC,CACH,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,SAAS,YAAY,CACnB,OAA0C;IAE1C,MAAM,KAAK,GACT,MAAM,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAC1B,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,KAAK,IAAI;YACd,OAAO,KAAK,KAAK,QAAQ;YACzB,OAAO,KAAK,KAAK,SAAS;YAC1B,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CACxD,CAAC;IACJ,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,uBAAe,CACvB,iBAAiB,EACjB,6FAA6F,CAC9F,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;AACxB,CAAC","sourcesContent":["import { ValidationError } from '../errors/error';\nimport { canonicalJson, sha256Hex } from '../util/json';\nimport type { Address } from './address';\nimport type { Amount, AmountInput } from './amount';\nimport type { AssetId, AssetInfo, AssetRef } from './asset';\nimport type { FeeOverride, FeeSpeed } from './fee';\n\nexport interface TransferOutputInput {\n readonly to: string;\n readonly amount: AmountInput;\n}\n\nexport interface TransferIntent {\n readonly to?: string;\n readonly amount?: AmountInput;\n readonly outputs?: readonly TransferOutputInput[];\n /** `'native'`, a token ref, an asset id, or an alias registered for this chain/network. */\n readonly asset?: AssetRef | string;\n readonly from?: string;\n readonly memo?: string;\n readonly fee?: FeeSpeed | FeeOverride;\n}\n\nexport interface NormalizedOutput {\n readonly to: Address;\n readonly amount: Amount;\n}\n\nexport interface NormalizedIntent {\n readonly asset: AssetInfo;\n readonly outputs: readonly NormalizedOutput[];\n readonly from: Address;\n readonly memo?: string;\n readonly fee: FeeSpeed | FeeOverride;\n}\n\n/**\n * One output as drivers receive it. `variant` is the recipient address's chain-specific\n * meaning (`Address.variant`), present only when its chain has one, e.g. TON's\n * `bounceable` flag (the intent's `to` variant decides bounce behaviour).\n */\nexport interface DriverOutput {\n readonly to: string;\n readonly amount: bigint;\n readonly variant?: Readonly<Record<string, unknown>>;\n}\n\n/** What drivers receive: canonical strings and base units only. */\nexport interface DriverIntent {\n readonly asset: AssetRef;\n readonly outputs: readonly DriverOutput[];\n readonly from: string;\n readonly memo?: string;\n readonly fee: FeeSpeed | FeeOverride;\n}\n\nexport interface StoredIntent extends DriverIntent {\n readonly assetId: AssetId;\n}\n\nexport interface IntentSummary {\n readonly asset: AssetId;\n readonly outputs: readonly { readonly to: string; readonly amount: string }[];\n readonly memo?: string;\n}\n\nexport function collectOutputs(intent: TransferIntent): readonly TransferOutputInput[] {\n const shorthand = intent.to !== undefined || intent.amount !== undefined;\n if (shorthand && intent.outputs !== undefined) {\n throw new ValidationError(\n 'INVALID_INTENT',\n 'use either { to, amount } or outputs, not both',\n );\n }\n if (shorthand) {\n if (intent.to === undefined || intent.amount === undefined) {\n throw new ValidationError('INVALID_INTENT', 'both to and amount are required');\n }\n return [{ to: intent.to, amount: intent.amount }];\n }\n if (!intent.outputs || intent.outputs.length === 0) {\n throw new ValidationError('INVALID_INTENT', 'at least one output is required');\n }\n return intent.outputs;\n}\n\nexport function toStoredIntent(intent: NormalizedIntent): StoredIntent {\n return {\n assetId: intent.asset.id,\n asset: intent.asset.ref,\n // A variant is kept (and so hashed) only when the address has one, so intents of\n // chains without variants hash exactly as before. An empty variant is none.\n outputs: intent.outputs.map((o) => {\n const variant = o.to.variant ? plainVariant(o.to.variant) : undefined;\n return {\n to: o.to.canonical,\n amount: o.amount.base,\n ...(variant && Object.keys(variant).length > 0 ? { variant } : {}),\n };\n }),\n from: intent.from.canonical,\n ...(intent.memo !== undefined ? { memo: intent.memo } : {}),\n fee: intent.fee,\n };\n}\n\nexport function summarizeIntent(intent: StoredIntent): IntentSummary {\n return {\n asset: intent.assetId,\n outputs: intent.outputs.map((o) => ({ to: o.to, amount: o.amount.toString() })),\n ...(intent.memo !== undefined ? { memo: intent.memo } : {}),\n };\n}\n\n/** Stable hash of the normalized intent: equal intents in different input forms collide. */\nexport function intentHash(chain: string, network: string, intent: StoredIntent): string {\n return sha256Hex(\n canonicalJson({\n v: 1,\n chain,\n network,\n asset: intent.assetId,\n outputs: intent.outputs,\n from: intent.from,\n memo: intent.memo ?? null,\n fee: intent.fee,\n }),\n );\n}\n\n/**\n * A copy of an address variant that holds plain JSON values only (strings, finite\n * numbers, booleans, null) under string keys, so the stored intent stays plain data\n * and hashes stably. A symbol key is refused: the hash would not see it. The\n * message names no address.\n */\nfunction plainVariant(\n variant: Readonly<Record<string, unknown>>,\n): Record<string, unknown> {\n const plain =\n Object.getOwnPropertySymbols(variant).length === 0 &&\n Object.values(variant).every(\n (value) =>\n value === null ||\n typeof value === 'string' ||\n typeof value === 'boolean' ||\n (typeof value === 'number' && Number.isFinite(value)),\n );\n if (!plain) {\n throw new ValidationError(\n 'INVALID_ADDRESS',\n 'an address variant may hold only string keys with strings, finite numbers, booleans or null',\n );\n }\n return { ...variant };\n}\n"]}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export type OrderingKind = 'nonce' | 'seqno' | 'inputs' | 'expiry';
|
|
2
|
+
/**
|
|
3
|
+
* What reserves an Attempt's slot. A family's build may record more about a `seqno` or
|
|
4
|
+
* `expiry` slot in the same object (TON's `validFrom`, Tron's `refBlockHash`, Solana's
|
|
5
|
+
* `blockhash` and `blockhashSlot`, each in the family's own exported type), and its proofs
|
|
6
|
+
* read those fields back. A store keeps every ordering whole and unchanged, extra fields
|
|
7
|
+
* included: strings, finite numbers and bigints beyond 2^53. The `OperationStore` contract
|
|
8
|
+
* suite checks each built-in family's (`SAMPLE_ORDERINGS`).
|
|
9
|
+
*/
|
|
10
|
+
export type OrderingData = {
|
|
11
|
+
readonly kind: 'nonce';
|
|
12
|
+
readonly nonce: bigint;
|
|
13
|
+
} | {
|
|
14
|
+
readonly kind: 'seqno';
|
|
15
|
+
readonly seqno: bigint;
|
|
16
|
+
readonly validUntil: number;
|
|
17
|
+
} | {
|
|
18
|
+
readonly kind: 'inputs';
|
|
19
|
+
readonly inputs: readonly string[];
|
|
20
|
+
} | {
|
|
21
|
+
readonly kind: 'expiry';
|
|
22
|
+
readonly lastValidHeight?: bigint;
|
|
23
|
+
readonly expiresAtMs?: number;
|
|
24
|
+
};
|
|
25
|
+
/** True when at most one of two transactions with these orderings can ever be included. */
|
|
26
|
+
export declare function mutuallyExclusive(a: OrderingData, b: OrderingData): boolean;
|
|
27
|
+
/** Short label safe for events and logs (never lists inputs or addresses). */
|
|
28
|
+
export declare function orderingLabel(ordering: OrderingData): string;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.mutuallyExclusive = mutuallyExclusive;
|
|
4
|
+
exports.orderingLabel = orderingLabel;
|
|
5
|
+
/** True when at most one of two transactions with these orderings can ever be included. */
|
|
6
|
+
function mutuallyExclusive(a, b) {
|
|
7
|
+
if (a.kind === 'nonce' && b.kind === 'nonce')
|
|
8
|
+
return a.nonce === b.nonce;
|
|
9
|
+
if (a.kind === 'seqno' && b.kind === 'seqno')
|
|
10
|
+
return a.seqno === b.seqno;
|
|
11
|
+
if (a.kind === 'inputs' && b.kind === 'inputs') {
|
|
12
|
+
return a.inputs.some((input) => b.inputs.includes(input));
|
|
13
|
+
}
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
/** Short label safe for events and logs (never lists inputs or addresses). */
|
|
17
|
+
function orderingLabel(ordering) {
|
|
18
|
+
switch (ordering.kind) {
|
|
19
|
+
case 'nonce':
|
|
20
|
+
return `nonce:${ordering.nonce}`;
|
|
21
|
+
case 'seqno':
|
|
22
|
+
return `seqno:${ordering.seqno}`;
|
|
23
|
+
case 'inputs':
|
|
24
|
+
return `inputs:${ordering.inputs.length}`;
|
|
25
|
+
case 'expiry':
|
|
26
|
+
return 'expiry';
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=ordering.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordering.js","sourceRoot":"","sources":["../../../src/core/model/ordering.ts"],"names":[],"mappings":";;AAqBA,8CAOC;AAGD,sCAWC;AAtBD,2FAA2F;AAC3F,SAAgB,iBAAiB,CAAC,CAAe,EAAE,CAAe;IAChE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;IACzE,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,CAAC;IACzE,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC/C,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,8EAA8E;AAC9E,SAAgB,aAAa,CAAC,QAAsB;IAClD,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;QACtB,KAAK,OAAO;YACV,OAAO,SAAS,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnC,KAAK,OAAO;YACV,OAAO,SAAS,QAAQ,CAAC,KAAK,EAAE,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,UAAU,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QAC5C,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;IACpB,CAAC;AACH,CAAC","sourcesContent":["export type OrderingKind = 'nonce' | 'seqno' | 'inputs' | 'expiry';\n\n/**\n * What reserves an Attempt's slot. A family's build may record more about a `seqno` or\n * `expiry` slot in the same object (TON's `validFrom`, Tron's `refBlockHash`, Solana's\n * `blockhash` and `blockhashSlot`, each in the family's own exported type), and its proofs\n * read those fields back. A store keeps every ordering whole and unchanged, extra fields\n * included: strings, finite numbers and bigints beyond 2^53. The `OperationStore` contract\n * suite checks each built-in family's (`SAMPLE_ORDERINGS`).\n */\nexport type OrderingData =\n | { readonly kind: 'nonce'; readonly nonce: bigint }\n | { readonly kind: 'seqno'; readonly seqno: bigint; readonly validUntil: number }\n | { readonly kind: 'inputs'; readonly inputs: readonly string[] }\n | {\n readonly kind: 'expiry';\n readonly lastValidHeight?: bigint;\n readonly expiresAtMs?: number;\n };\n\n/** True when at most one of two transactions with these orderings can ever be included. */\nexport function mutuallyExclusive(a: OrderingData, b: OrderingData): boolean {\n if (a.kind === 'nonce' && b.kind === 'nonce') return a.nonce === b.nonce;\n if (a.kind === 'seqno' && b.kind === 'seqno') return a.seqno === b.seqno;\n if (a.kind === 'inputs' && b.kind === 'inputs') {\n return a.inputs.some((input) => b.inputs.includes(input));\n }\n return false;\n}\n\n/** Short label safe for events and logs (never lists inputs or addresses). */\nexport function orderingLabel(ordering: OrderingData): string {\n switch (ordering.kind) {\n case 'nonce':\n return `nonce:${ordering.nonce}`;\n case 'seqno':\n return `seqno:${ordering.seqno}`;\n case 'inputs':\n return `inputs:${ordering.inputs.length}`;\n case 'expiry':\n return 'expiry';\n }\n}\n"]}
|