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 @@
|
|
|
1
|
+
{"version":3,"file":"wallets.js","sourceRoot":"","sources":["../../../src/adapters/ton/wallets.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * TON wallet contracts, over `@ton/core` and `@ton/ton`: the wallet identity,\n * its address and `StateInit`, the signing message, and the external message around it.\n * Loaded only through the adapter manifest's `load()`.\n *\n * Signing flow: `build` asks the SDK for the transfer body with a zero signature and keeps\n * the whole unsigned external message (a BOC) as the payload; the one ed25519 request signs\n * the signing message's cell hash. `assemble` finds the 512 zero bits the signature\n * replaces (front for v4r2, tail for v5r1) by the one position whose remainder hashes to\n * the signed digest, so it needs no wallet version and cannot write a signature anywhere\n * else.\n */\nimport {\n Cell,\n SendMode,\n beginCell,\n external,\n loadMessage,\n storeMessage,\n type Message,\n type MessageRelaxed,\n type StateInit,\n} from '@ton/core';\nimport { ed25519 } from '@noble/curves/ed25519';\nimport { WalletContractV4, WalletContractV5R1 } from '@ton/ton';\nimport type { WalletOptions } from '../../core/driver/types';\nimport { ConfigError, SigningError, ValidationError } from '../../core/errors/error';\nimport { rawAddress, type TonWorkchain } from './address';\nimport { OP, sdkAddress } from './messages';\nimport type { TonWalletVersion } from './types';\n\n/** Messages one external request may carry: 4 refs per cell (v4r2), 255 (v5r1). */\nexport const MAX_MESSAGES: Readonly<Record<TonWalletVersion, number>> = Object.freeze({\n v4r2: 4,\n v5r1: 255,\n});\n\n/** Pay forward fees separately and never fail the action phase (W5 requires +2). */\nexport const SEND_MODE = SendMode.PAY_GAS_SEPARATELY + SendMode.IGNORE_ERRORS;\n\n/** The resolved wallet identity: every field that determines the address. */\nexport type TonIdentity =\n | {\n readonly version: 'v4r2';\n readonly workchain: TonWorkchain;\n readonly subwalletId: number;\n }\n | {\n readonly version: 'v5r1';\n readonly workchain: TonWorkchain;\n readonly subwalletNumber: number;\n readonly networkGlobalId: number;\n };\n\nconst V4_KEYS = new Set(['version', 'workchain', 'subwalletId']);\nconst V5_KEYS = new Set(['version', 'workchain', 'subwalletNumber', 'networkGlobalId']);\n\n/**\n * `wallets.<name>.ton` validated against the network: a v5r1 wallet id made for\n * another network is refused before any key is used. Every problem is `CONFIG_INVALID`.\n */\nexport function resolveIdentity(\n wallet: WalletOptions | undefined,\n globalId: number,\n): TonIdentity {\n const fail = (reason: string): never => {\n throw new ConfigError('CONFIG_INVALID', `TON wallet: ${reason}`);\n };\n const ton = wallet?.ton;\n if (ton === undefined || ton === null || typeof ton !== 'object') {\n return fail(`set wallets.<name>.ton = { version: 'v4r2' | 'v5r1' }`);\n }\n const config = ton as Record<string, unknown>;\n const version = config.version;\n if (version !== 'v4r2' && version !== 'v5r1') {\n return fail(`version must be 'v4r2' or 'v5r1'`);\n }\n const allowed = version === 'v4r2' ? V4_KEYS : V5_KEYS;\n for (const key of Object.keys(config)) {\n if (config[key] !== undefined && !allowed.has(key)) {\n // The caller's key is never echoed (it could be a pasted secret).\n fail(`a ${version} wallet takes only ${[...allowed].join(', ')}`);\n }\n }\n const workchain = config.workchain ?? 0;\n if (workchain !== 0 && workchain !== -1) fail('workchain must be 0 or -1');\n const wc = workchain as TonWorkchain;\n if (version === 'v4r2') {\n const subwalletId = config.subwalletId ?? 698983191 + wc;\n if (\n !Number.isInteger(subwalletId) ||\n (subwalletId as number) < 0 ||\n (subwalletId as number) > 0xffffffff\n ) {\n fail('subwalletId must be an integer in [0, 2^32 - 1]');\n }\n return { version, workchain: wc, subwalletId: subwalletId as number };\n }\n const subwalletNumber = config.subwalletNumber ?? 0;\n if (\n !Number.isInteger(subwalletNumber) ||\n (subwalletNumber as number) < 0 ||\n (subwalletNumber as number) > 0x7fff\n ) {\n fail('subwalletNumber must be an integer in [0, 32767]');\n }\n const networkGlobalId = config.networkGlobalId ?? globalId;\n if (networkGlobalId !== globalId) {\n fail(`networkGlobalId is not this network's (${globalId})`);\n }\n return {\n version,\n workchain: wc,\n subwalletNumber: subwalletNumber as number,\n networkGlobalId: globalId,\n };\n}\n\ntype WalletContract = WalletContractV4 | WalletContractV5R1;\n\n/** A strict (RFC 8032) encoding of a point that is not of small order. */\nfunction canonicalKey(publicKey: Uint8Array): boolean {\n try {\n return !ed25519.Point.fromHex(publicKey, false).isSmallOrder();\n } catch {\n return false;\n }\n}\n\nconst isInt = (value: number, min: number, max: number): boolean =>\n Number.isInteger(value) && value >= min && value <= max;\n\n/**\n * Every identity field fits the wire field the SDK writes it into (workchain\n * int8, subwallet id uint32, subwallet number uint15, network id int32), so an identity\n * not made by `resolveIdentity` is refused rather than wrapped or thrown as a bare `Error`.\n */\nfunction identityFits(identity: TonIdentity): boolean {\n if (identity.workchain !== 0 && identity.workchain !== -1) return false;\n if (identity.version === 'v4r2') return isInt(identity.subwalletId, 0, 0xffffffff);\n return (\n identity.version === 'v5r1' &&\n isInt(identity.subwalletNumber, 0, 0x7fff) &&\n isInt(identity.networkGlobalId, -0x80000000, 0x7fffffff)\n );\n}\n\nfunction contractOf(identity: TonIdentity, publicKey: Uint8Array): WalletContract {\n if (!identityFits(identity)) {\n throw new ConfigError('CONFIG_INVALID', 'the TON wallet identity is out of range');\n }\n if (publicKey.length !== 32 || !canonicalKey(publicKey)) {\n throw new ConfigError(\n 'CONFIG_INVALID',\n 'a TON wallet key must be a canonical 32-byte ed25519 public key',\n );\n }\n const key = Buffer.from(publicKey);\n if (identity.version === 'v4r2') {\n return WalletContractV4.create({\n workchain: identity.workchain,\n publicKey: key,\n walletId: identity.subwalletId,\n });\n }\n // Every field explicit: the SDK's defaults are mainnet's id and workchain 0.\n return WalletContractV5R1.create({\n publicKey: key,\n walletId: {\n networkGlobalId: identity.networkGlobalId,\n context: {\n workchain: identity.workchain,\n walletVersion: 'v5r1',\n subwalletNumber: identity.subwalletNumber,\n },\n },\n });\n}\n\n/** The wallet's raw address: the hash of its `StateInit` in its workchain. */\nexport function walletAddress(identity: TonIdentity, publicKey: Uint8Array): string {\n const contract = contractOf(identity, publicKey);\n return rawAddress(identity.workchain, contract.address.hash);\n}\n\n/** The code and data a first message carries to deploy the wallet. */\nexport function walletStateInit(identity: TonIdentity, publicKey: Uint8Array): StateInit {\n const { init } = contractOf(identity, publicKey);\n return { code: init.code, data: init.data };\n}\n\n/** The wallet's wire wallet id (v4r2: the subwallet id; v5r1: the signed 32-bit id). */\nexport function walletIdOf(identity: TonIdentity, publicKey: Uint8Array): number {\n const contract = contractOf(identity, publicKey);\n if (contract instanceof WalletContractV4) return contract.walletId;\n // v5r1 data: is_signature_allowed:1 seqno:32 wallet_id:int32 public_key:256 extensions.\n const data = contract.init.data.beginParse();\n data.skip(1 + 32);\n return data.loadInt(32);\n}\n\nexport interface UnsignedRequest {\n /** The unsigned external message: the wallet body with 512 zero bits for the signature. */\n readonly message: Cell;\n /** The signing message's cell hash: what the ed25519 key signs. */\n readonly digest: Uint8Array;\n}\n\n/**\n * The external request for `messages` at `seqno`, valid while chain time is before\n * `validUntil` (seconds). `init` deploys the wallet with its first message.\n */\nexport async function unsignedRequest(\n identity: TonIdentity,\n publicKey: Uint8Array,\n args: {\n readonly seqno: number;\n readonly validUntil: number;\n readonly messages: readonly MessageRelaxed[];\n readonly deploy: boolean;\n },\n): Promise<UnsignedRequest> {\n // The seqno is a uint32 on the wire, never wrapped.\n if (!Number.isSafeInteger(args.seqno) || args.seqno < 0 || args.seqno > 0xffffffff) {\n throw new ValidationError('INVALID_INTENT', 'seqno must be a uint32');\n }\n // The SDK falls back to the wall clock for a falsy timeout; never let it.\n if (\n !Number.isSafeInteger(args.validUntil) ||\n args.validUntil <= 0 ||\n args.validUntil > 0xffffffff\n ) {\n throw new ValidationError('INVALID_INTENT', 'validUntil must be a uint32 above 0');\n }\n if (\n args.messages.length === 0 ||\n args.messages.length > MAX_MESSAGES[identity.version]\n ) {\n throw new ValidationError(\n 'INVALID_INTENT',\n `a ${identity.version} request carries 1 to ${MAX_MESSAGES[identity.version]} messages`,\n );\n }\n const contract = contractOf(identity, publicKey);\n let signing: Cell | undefined;\n const transfer = {\n seqno: args.seqno,\n timeout: args.validUntil,\n sendMode: SEND_MODE,\n messages: [...args.messages],\n signer: async (cell: Cell): Promise<Buffer> => {\n signing = cell;\n return Buffer.alloc(64);\n },\n };\n let message: Cell;\n try {\n const body = await (contract instanceof WalletContractV4\n ? contract.createTransfer(transfer)\n : contract.createTransfer(transfer));\n message = beginCell()\n .store(\n storeMessage(\n external({\n to: contract.address,\n body,\n ...(args.deploy\n ? { init: { code: contract.init.code, data: contract.init.data } }\n : {}),\n }),\n ),\n )\n .endCell();\n } catch {\n // The SDK throws bare errors that may name a value; `nativeMessage` and\n // `jettonMessage` range-check theirs, so only a hand-built message ends here.\n throw new ValidationError('INVALID_INTENT', 'the TON request cannot be encoded');\n }\n if (!signing) {\n throw new SigningError('SIGNING_FAILED', 'the SDK did not produce a signing message');\n }\n return { message, digest: new Uint8Array(signing.hash()) };\n}\n\n/** The message in `cell`, or undefined when it holds none (the SDK throws a bare `Error`). */\nfunction messageOf(cell: Cell): Message | undefined {\n try {\n return loadMessage(cell.beginParse());\n } catch {\n return undefined;\n }\n}\n\n/** A cell of `bits` then `refs`. */\nfunction cellOf(parts: readonly (Buffer | Cell['bits'])[], refs: readonly Cell[]): Cell {\n const builder = beginCell();\n for (const part of parts) {\n if (Buffer.isBuffer(part)) builder.storeBuffer(part);\n else builder.storeBits(part);\n }\n for (const ref of refs) builder.storeRef(ref);\n return builder.endCell();\n}\n\nconst ZERO_SIGNATURE = Buffer.alloc(64);\n\n/**\n * The signed external message: `signature` in place of the 512 zero bits whose remainder\n * hashes to `digest` (the front for v4r2, the tail for v5r1). Refuses (`SIGNING_FAILED`) a\n * payload with no such position, so a signature can never land anywhere else.\n */\nexport function signedRequest(\n unsigned: Cell,\n digest: Uint8Array,\n signature: Uint8Array,\n): Cell {\n if (signature.length !== 64) {\n throw new SigningError('SIGNING_FAILED', 'a TON signature is 64 bytes');\n }\n const message = messageOf(unsigned);\n if (message?.info.type !== 'external-in') {\n throw new SigningError(\n 'SIGNING_FAILED',\n 'the unsigned TON payload is not an external message',\n );\n }\n const { body } = message;\n const length = body.bits.length;\n const expected = Buffer.from(digest);\n const zero = cellOf([ZERO_SIGNATURE], []).bits;\n const sig = Buffer.from(signature);\n let signedBody: Cell | undefined;\n if (length >= 512) {\n const front = body.bits.substring(0, 512);\n const afterFront = body.bits.substring(512, length - 512);\n const tail = body.bits.substring(length - 512, 512);\n const beforeTail = body.bits.substring(0, length - 512);\n if (front.equals(zero) && cellOf([afterFront], body.refs).hash().equals(expected)) {\n signedBody = cellOf([sig, afterFront], body.refs);\n } else if (\n tail.equals(zero) &&\n cellOf([beforeTail], body.refs).hash().equals(expected)\n ) {\n signedBody = cellOf([beforeTail, sig], body.refs);\n }\n }\n if (!signedBody) {\n throw new SigningError(\n 'SIGNING_FAILED',\n 'the unsigned TON payload does not match its signing request',\n );\n }\n return beginCell()\n .store(\n storeMessage({\n info: message.info,\n ...(message.init ? { init: message.init } : {}),\n body: signedBody,\n }),\n )\n .endCell();\n}\n\n/**\n * TEP-467: the hash of the external-in message with `src` = addr_none, `import_fee` = 0,\n * no `init`, and the body always as a reference. Stable across relays; the Attempt id.\n */\nexport function normalizedHash(externalMessage: Cell): Uint8Array {\n const message = messageOf(externalMessage);\n if (message?.info.type !== 'external-in') {\n throw new ValidationError('INVALID_INTENT', 'not an external-in message');\n }\n const normalized = beginCell()\n .storeUint(2, 2)\n .storeUint(0, 2)\n .storeAddress(message.info.dest)\n .storeCoins(0)\n .storeBit(false)\n .storeBit(true)\n .storeRef(message.body)\n .endCell();\n return new Uint8Array(normalized.hash());\n}\n\n/**\n * Whether the wallet request `body` (external, or a W5\n * `internal_signed` request relayed in an internal message) is `from`'s own. Anyone can post\n * a relayed body, and a lone lying indexer can make up an external one, so a request\n * proves nothing unless its ed25519 signature verifies over the rest of the request under\n * `publicKey`, the wallet's key (v4r2: the first 512 bits; v5r1: the last 512), and its\n * wallet id derives `from` with that key (v4r2: the subwallet id in `from`'s workchain;\n * v5r1: the signed wallet id). A request of another wallet sharing the key, replayed\n * here, never counts. For a relayed request the caller also requires the transaction's\n * compute phase to have succeeded, i.e. the wallet ran it.\n */\nexport function requestIsOwn(\n from: string,\n body: Cell,\n publicKey: Uint8Array,\n globalId: number,\n): boolean {\n try {\n const length = body.bits.length;\n if (length < 512 + 32 || publicKey.length !== 32) return false;\n const op = body.beginParse().preloadUint(32);\n const v5 = op === OP.w5SignedExternal || op === OP.w5SignedInternal;\n const [signed, rest] = v5\n ? [body.bits.substring(length - 512, 512), body.bits.substring(0, length - 512)]\n : [body.bits.substring(0, 512), body.bits.substring(512, length - 512)];\n const signing = cellOf([rest], body.refs);\n const signature = cellOf([signed], []).beginParse().loadBuffer(64);\n if (!ed25519.verify(signature, signing.hash(), publicKey)) return false;\n const identity = v5\n ? v5IdentityOf(signing.beginParse().skip(32).loadInt(32), globalId)\n : v4IdentityOf(from, signing.beginParse().loadUint(32));\n return identity !== undefined && walletAddress(identity, publicKey) === from;\n } catch {\n return false;\n }\n}\n\n/** The v4r2 identity a request's subwallet id names in `from`'s workchain. */\nfunction v4IdentityOf(from: string, subwalletId: number): TonIdentity | undefined {\n const workchain = Number(from.split(':')[0]);\n if (workchain !== 0 && workchain !== -1) return undefined;\n return { version: 'v4r2', workchain, subwalletId };\n}\n\n/** The v5r1 identity a signed wallet id names: 1 bit set, workchain int8, version 0, uint15. */\nfunction v5IdentityOf(walletId: number, globalId: number): TonIdentity | undefined {\n const context = (walletId ^ globalId) | 0;\n if (context >>> 31 !== 1 || ((context >> 15) & 0xff) !== 0) return undefined;\n const byte = (context >> 23) & 0xff;\n const workchain = byte >= 128 ? byte - 256 : byte;\n if (workchain !== 0 && workchain !== -1) return undefined;\n return {\n version: 'v5r1',\n workchain,\n subwalletNumber: context & 0x7fff,\n networkGlobalId: globalId,\n };\n}\n\n/** The SDK's `Address` for a raw address, parsed strictly. */\nexport { sdkAddress };\n\n/** The TEP-467 hash (hex) of the external message `body` to `account` would travel in. */\nexport function externalHashOf(account: string, body: Cell): string {\n const message = beginCell()\n .store(storeMessage(external({ to: sdkAddress(account), body })))\n .endCell();\n return Buffer.from(normalizedHash(message)).toString('hex');\n}\n"]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
export declare const SELECTORS: Readonly<{
|
|
2
|
+
transfer: "a9059cbb";
|
|
3
|
+
balanceOf: "70a08231";
|
|
4
|
+
decimals: "313ce567";
|
|
5
|
+
symbol: "95d89b41";
|
|
6
|
+
/** Tether's `deprecated()`: `true` once `TetherToken` forwards to an upgraded contract. */
|
|
7
|
+
deprecated: "0e136b19";
|
|
8
|
+
}>;
|
|
9
|
+
/** `keccak256("Transfer(address,address,uint256)")`, without `0x`. */
|
|
10
|
+
export declare const TRANSFER_TOPIC = "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
|
|
11
|
+
/** An amount outside `uint256` is refused with a fixed text, never wrapped. */
|
|
12
|
+
export declare function encodeTransfer(to: string, amount: bigint): string;
|
|
13
|
+
export declare function encodeBalanceOf(owner: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* The (to, amount) of `transfer(address,uint256)` call data built the canonical way (12
|
|
16
|
+
* zero bytes before the address); `null` for anything else.
|
|
17
|
+
*/
|
|
18
|
+
export declare function decodeTransferCall(data: string): {
|
|
19
|
+
readonly to: string;
|
|
20
|
+
readonly amount: bigint;
|
|
21
|
+
} | null;
|
|
22
|
+
/** Throws on data that is not exactly one ABI `uint256` word. */
|
|
23
|
+
export declare function decodeUint256(data: string): bigint;
|
|
24
|
+
/**
|
|
25
|
+
* Throws on data that is not an ABI `string` (offset 32, length, padded UTF-8). The shape is
|
|
26
|
+
* checked by length and one character class: a repeated-group regex overflows V8's stack
|
|
27
|
+
* on a few million characters.
|
|
28
|
+
*/
|
|
29
|
+
export declare function decodeString(data: string): string;
|
|
30
|
+
/**
|
|
31
|
+
* A TRC-20 `Transfer` log's parties (`41…` hex) and amount; `null` for any other log. Tron
|
|
32
|
+
* logs carry hex without `0x`, and `address` is the 20-byte emitter.
|
|
33
|
+
*/
|
|
34
|
+
export declare function decodeTransferLog(log: {
|
|
35
|
+
readonly topics: readonly string[];
|
|
36
|
+
readonly data: string;
|
|
37
|
+
}): {
|
|
38
|
+
readonly from: string;
|
|
39
|
+
readonly to: string;
|
|
40
|
+
readonly amount: bigint;
|
|
41
|
+
} | null;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TRANSFER_TOPIC = exports.SELECTORS = void 0;
|
|
4
|
+
exports.encodeTransfer = encodeTransfer;
|
|
5
|
+
exports.encodeBalanceOf = encodeBalanceOf;
|
|
6
|
+
exports.decodeTransferCall = decodeTransferCall;
|
|
7
|
+
exports.decodeUint256 = decodeUint256;
|
|
8
|
+
exports.decodeString = decodeString;
|
|
9
|
+
exports.decodeTransferLog = decodeTransferLog;
|
|
10
|
+
/**
|
|
11
|
+
* The TRC-20 calls and events the driver uses, SDK-free: TRC-20 is ERC-20's ABI on the
|
|
12
|
+
* TVM, with 20-byte addresses in ABI words (the `41` prefix dropped). Selectors are pinned
|
|
13
|
+
* by a keccak-256 test.
|
|
14
|
+
*/
|
|
15
|
+
const error_1 = require("../../core/errors/error");
|
|
16
|
+
const bytes_1 = require("../../core/util/bytes");
|
|
17
|
+
const address_1 = require("./address");
|
|
18
|
+
exports.SELECTORS = Object.freeze({
|
|
19
|
+
transfer: 'a9059cbb',
|
|
20
|
+
balanceOf: '70a08231',
|
|
21
|
+
decimals: '313ce567',
|
|
22
|
+
symbol: '95d89b41',
|
|
23
|
+
/** Tether's `deprecated()`: `true` once `TetherToken` forwards to an upgraded contract. */
|
|
24
|
+
deprecated: '0e136b19',
|
|
25
|
+
});
|
|
26
|
+
/** `keccak256("Transfer(address,address,uint256)")`, without `0x`. */
|
|
27
|
+
exports.TRANSFER_TOPIC = 'ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
|
|
28
|
+
const UINT256_MAX = (1n << 256n) - 1n;
|
|
29
|
+
function word(value) {
|
|
30
|
+
return value.toString(16).padStart(64, '0');
|
|
31
|
+
}
|
|
32
|
+
function addressWord(address) {
|
|
33
|
+
return (0, address_1.toHexAddress)(address).slice(2).padStart(64, '0');
|
|
34
|
+
}
|
|
35
|
+
/** An amount outside `uint256` is refused with a fixed text, never wrapped. */
|
|
36
|
+
function encodeTransfer(to, amount) {
|
|
37
|
+
if (amount < 0n || amount > UINT256_MAX) {
|
|
38
|
+
throw new error_1.ValidationError('INVALID_AMOUNT', 'amount does not fit in a uint256');
|
|
39
|
+
}
|
|
40
|
+
return `${exports.SELECTORS.transfer}${addressWord(to)}${word(amount)}`;
|
|
41
|
+
}
|
|
42
|
+
function encodeBalanceOf(owner) {
|
|
43
|
+
return `${exports.SELECTORS.balanceOf}${addressWord(owner)}`;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The (to, amount) of `transfer(address,uint256)` call data built the canonical way (12
|
|
47
|
+
* zero bytes before the address); `null` for anything else.
|
|
48
|
+
*/
|
|
49
|
+
function decodeTransferCall(data) {
|
|
50
|
+
// A fixed length (selector + two words), checked before any other work, so a long
|
|
51
|
+
// untrusted input costs one length check.
|
|
52
|
+
if (data.length !== 136)
|
|
53
|
+
return null;
|
|
54
|
+
const hex = data.toLowerCase();
|
|
55
|
+
if (!/^a9059cbb[0-9a-f]{128}$/.test(hex))
|
|
56
|
+
return null;
|
|
57
|
+
const toWord = hex.slice(8, 72);
|
|
58
|
+
if (!toWord.startsWith('0'.repeat(24)))
|
|
59
|
+
return null;
|
|
60
|
+
return { to: `41${toWord.slice(24)}`, amount: BigInt(`0x${hex.slice(72)}`) };
|
|
61
|
+
}
|
|
62
|
+
/** Throws on data that is not exactly one ABI `uint256` word. */
|
|
63
|
+
function decodeUint256(data) {
|
|
64
|
+
if (!/^[0-9a-fA-F]{64}$/.test(data))
|
|
65
|
+
throw new TypeError('not one uint256 word');
|
|
66
|
+
return BigInt(`0x${data}`);
|
|
67
|
+
}
|
|
68
|
+
/** One character class, no repeated group: linear on any input. */
|
|
69
|
+
const HEX_DIGITS = /^[0-9a-fA-F]+$/;
|
|
70
|
+
/**
|
|
71
|
+
* Throws on data that is not an ABI `string` (offset 32, length, padded UTF-8). The shape is
|
|
72
|
+
* checked by length and one character class: a repeated-group regex overflows V8's stack
|
|
73
|
+
* on a few million characters.
|
|
74
|
+
*/
|
|
75
|
+
function decodeString(data) {
|
|
76
|
+
if (typeof data !== 'string' ||
|
|
77
|
+
data.length < 128 ||
|
|
78
|
+
data.length % 64 !== 0 ||
|
|
79
|
+
!HEX_DIGITS.test(data)) {
|
|
80
|
+
throw new TypeError('not an ABI string');
|
|
81
|
+
}
|
|
82
|
+
if (BigInt(`0x${data.slice(0, 64)}`) !== 32n)
|
|
83
|
+
throw new TypeError('bad string offset');
|
|
84
|
+
const length = BigInt(`0x${data.slice(64, 128)}`);
|
|
85
|
+
const available = BigInt((data.length - 128) / 2);
|
|
86
|
+
if (length > available || available - length >= 32n) {
|
|
87
|
+
throw new TypeError('bad string length');
|
|
88
|
+
}
|
|
89
|
+
const bytes = (0, bytes_1.fromHex)(data.slice(128, 128 + Number(length) * 2));
|
|
90
|
+
return (0, bytes_1.bytesToUtf8)(bytes);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* A TRC-20 `Transfer` log's parties (`41…` hex) and amount; `null` for any other log. Tron
|
|
94
|
+
* logs carry hex without `0x`, and `address` is the 20-byte emitter.
|
|
95
|
+
*/
|
|
96
|
+
function decodeTransferLog(log) {
|
|
97
|
+
if (log.topics.length !== 3)
|
|
98
|
+
return null;
|
|
99
|
+
const [topic, from, to] = log.topics.map((t) => t.toLowerCase());
|
|
100
|
+
if (topic !== exports.TRANSFER_TOPIC)
|
|
101
|
+
return null;
|
|
102
|
+
const party = (value) => value !== undefined && /^0{24}[0-9a-f]{40}$/.test(value)
|
|
103
|
+
? `41${value.slice(24)}`
|
|
104
|
+
: null;
|
|
105
|
+
const sender = party(from);
|
|
106
|
+
const recipient = party(to);
|
|
107
|
+
if (sender === null || recipient === null || !/^[0-9a-fA-F]{64}$/.test(log.data)) {
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
return { from: sender, to: recipient, amount: BigInt(`0x${log.data}`) };
|
|
111
|
+
}
|
|
112
|
+
//# sourceMappingURL=abi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"abi.js","sourceRoot":"","sources":["../../../src/adapters/tron/abi.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * The TRC-20 calls and events the driver uses, SDK-free: TRC-20 is ERC-20's ABI on the\n * TVM, with 20-byte addresses in ABI words (the `41` prefix dropped). Selectors are pinned\n * by a keccak-256 test.\n */\nimport { ValidationError } from '../../core/errors/error';\nimport { bytesToUtf8, fromHex } from '../../core/util/bytes';\nimport { toHexAddress } from './address';\n\nexport const SELECTORS = Object.freeze({\n transfer: 'a9059cbb',\n balanceOf: '70a08231',\n decimals: '313ce567',\n symbol: '95d89b41',\n /** Tether's `deprecated()`: `true` once `TetherToken` forwards to an upgraded contract. */\n deprecated: '0e136b19',\n});\n\n/** `keccak256(\"Transfer(address,address,uint256)\")`, without `0x`. */\nexport const TRANSFER_TOPIC =\n 'ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';\n\nconst UINT256_MAX = (1n << 256n) - 1n;\n\nfunction word(value: bigint): string {\n return value.toString(16).padStart(64, '0');\n}\n\nfunction addressWord(address: string): string {\n return toHexAddress(address).slice(2).padStart(64, '0');\n}\n\n/** An amount outside `uint256` is refused with a fixed text, never wrapped. */\nexport function encodeTransfer(to: string, amount: bigint): string {\n if (amount < 0n || amount > UINT256_MAX) {\n throw new ValidationError('INVALID_AMOUNT', 'amount does not fit in a uint256');\n }\n return `${SELECTORS.transfer}${addressWord(to)}${word(amount)}`;\n}\n\nexport function encodeBalanceOf(owner: string): string {\n return `${SELECTORS.balanceOf}${addressWord(owner)}`;\n}\n\n/**\n * The (to, amount) of `transfer(address,uint256)` call data built the canonical way (12\n * zero bytes before the address); `null` for anything else.\n */\nexport function decodeTransferCall(\n data: string,\n): { readonly to: string; readonly amount: bigint } | null {\n // A fixed length (selector + two words), checked before any other work, so a long\n // untrusted input costs one length check.\n if (data.length !== 136) return null;\n const hex = data.toLowerCase();\n if (!/^a9059cbb[0-9a-f]{128}$/.test(hex)) return null;\n const toWord = hex.slice(8, 72);\n if (!toWord.startsWith('0'.repeat(24))) return null;\n return { to: `41${toWord.slice(24)}`, amount: BigInt(`0x${hex.slice(72)}`) };\n}\n\n/** Throws on data that is not exactly one ABI `uint256` word. */\nexport function decodeUint256(data: string): bigint {\n if (!/^[0-9a-fA-F]{64}$/.test(data)) throw new TypeError('not one uint256 word');\n return BigInt(`0x${data}`);\n}\n\n/** One character class, no repeated group: linear on any input. */\nconst HEX_DIGITS = /^[0-9a-fA-F]+$/;\n\n/**\n * Throws on data that is not an ABI `string` (offset 32, length, padded UTF-8). The shape is\n * checked by length and one character class: a repeated-group regex overflows V8's stack\n * on a few million characters.\n */\nexport function decodeString(data: string): string {\n if (\n typeof data !== 'string' ||\n data.length < 128 ||\n data.length % 64 !== 0 ||\n !HEX_DIGITS.test(data)\n ) {\n throw new TypeError('not an ABI string');\n }\n if (BigInt(`0x${data.slice(0, 64)}`) !== 32n) throw new TypeError('bad string offset');\n const length = BigInt(`0x${data.slice(64, 128)}`);\n const available = BigInt((data.length - 128) / 2);\n if (length > available || available - length >= 32n) {\n throw new TypeError('bad string length');\n }\n const bytes = fromHex(data.slice(128, 128 + Number(length) * 2));\n return bytesToUtf8(bytes);\n}\n\n/**\n * A TRC-20 `Transfer` log's parties (`41…` hex) and amount; `null` for any other log. Tron\n * logs carry hex without `0x`, and `address` is the 20-byte emitter.\n */\nexport function decodeTransferLog(log: {\n readonly topics: readonly string[];\n readonly data: string;\n}): { readonly from: string; readonly to: string; readonly amount: bigint } | null {\n if (log.topics.length !== 3) return null;\n const [topic, from, to] = log.topics.map((t) => t.toLowerCase());\n if (topic !== TRANSFER_TOPIC) return null;\n const party = (value: string | undefined): string | null =>\n value !== undefined && /^0{24}[0-9a-f]{40}$/.test(value)\n ? `41${value.slice(24)}`\n : null;\n const sender = party(from);\n const recipient = party(to);\n if (sender === null || recipient === null || !/^[0-9a-fA-F]{64}$/.test(log.data)) {\n return null;\n }\n return { from: sender, to: recipient, amount: BigInt(`0x${log.data}`) };\n}\n"]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { AddressCodec } from '../../core/driver/types';
|
|
2
|
+
import type { AddressFormatter, NormalizedAddress } from '../../core/model/address';
|
|
3
|
+
/** The 21 address bytes of a base58check or `41…` hex address; throws INVALID_ADDRESS. */
|
|
4
|
+
export declare function addressBytes(value: string): Uint8Array;
|
|
5
|
+
/** Lower-case `41…` hex form (what the HTTP API takes with `visible: false`). */
|
|
6
|
+
export declare function toHexAddress(value: string): string;
|
|
7
|
+
/** Base58check `T…` form, the canonical one. */
|
|
8
|
+
export declare function toBase58Address(value: string): string;
|
|
9
|
+
export declare function isTronAddress(value: string): boolean;
|
|
10
|
+
/** Only a 33-byte compressed or 65-byte `0x04` point on the curve; returns 65 bytes. */
|
|
11
|
+
export declare function uncompressedPublicKey(publicKey: Uint8Array): Uint8Array;
|
|
12
|
+
export declare function addressFromPublicKey(publicKey: Uint8Array): string;
|
|
13
|
+
/**
|
|
14
|
+
* `variant.hex` is part of the intent hash. It is a pure function of `canonical`
|
|
15
|
+
* (a JSON string), so a recipient typed in base58 or in hex hashes the same.
|
|
16
|
+
*/
|
|
17
|
+
export declare function normalizeTronAddress(value: string): NormalizedAddress;
|
|
18
|
+
/** `address.format({ hex: true })` renders the `41…` hex form; otherwise base58. */
|
|
19
|
+
export declare const formatTronAddress: AddressFormatter;
|
|
20
|
+
export declare const tronAddressCodec: AddressCodec;
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.tronAddressCodec = exports.formatTronAddress = void 0;
|
|
4
|
+
exports.addressBytes = addressBytes;
|
|
5
|
+
exports.toHexAddress = toHexAddress;
|
|
6
|
+
exports.toBase58Address = toBase58Address;
|
|
7
|
+
exports.isTronAddress = isTronAddress;
|
|
8
|
+
exports.uncompressedPublicKey = uncompressedPublicKey;
|
|
9
|
+
exports.addressFromPublicKey = addressFromPublicKey;
|
|
10
|
+
exports.normalizeTronAddress = normalizeTronAddress;
|
|
11
|
+
/**
|
|
12
|
+
* Tron addresses, SDK-free: `0x41` + the last 20 bytes of the keccak-256 hash of
|
|
13
|
+
* the uncompressed public key, shown as base58check (`T…`, canonical) or as 42 hex digits
|
|
14
|
+
* (the `hex` variant). Decoding is strict: base58check with the right checksum, exactly 21
|
|
15
|
+
* bytes and the `0x41` prefix, or `41` + 40 hex digits. Public keys must be 33- or 65-byte
|
|
16
|
+
* points on the curve; tronweb's `computeAddress` would hash other lengths as is.
|
|
17
|
+
*/
|
|
18
|
+
const secp256k1_1 = require("@noble/curves/secp256k1");
|
|
19
|
+
const sha3_1 = require("@noble/hashes/sha3");
|
|
20
|
+
const sha256_1 = require("@noble/hashes/sha256");
|
|
21
|
+
const base_1 = require("@scure/base");
|
|
22
|
+
const error_1 = require("../../core/errors/error");
|
|
23
|
+
const bytes_1 = require("../../core/util/bytes");
|
|
24
|
+
const base58check = (0, base_1.createBase58check)(sha256_1.sha256);
|
|
25
|
+
const HEX_ADDRESS = /^41[0-9a-fA-F]{40}$/;
|
|
26
|
+
/** Every base58check form of 21 bytes starting `0x41` has exactly 34 characters. */
|
|
27
|
+
const BASE58_LENGTH = 34;
|
|
28
|
+
const BASE58_ALPHABET = /^T[1-9A-HJ-NP-Za-km-z]*$/;
|
|
29
|
+
function invalid() {
|
|
30
|
+
return new error_1.ValidationError('INVALID_ADDRESS', 'not a Tron address');
|
|
31
|
+
}
|
|
32
|
+
/** The 21 address bytes of a base58check or `41…` hex address; throws INVALID_ADDRESS. */
|
|
33
|
+
function addressBytes(value) {
|
|
34
|
+
if (typeof value !== 'string')
|
|
35
|
+
throw invalid();
|
|
36
|
+
if (HEX_ADDRESS.test(value))
|
|
37
|
+
return (0, bytes_1.fromHex)(value);
|
|
38
|
+
// Base58 decoding is quadratic (10,000 characters block the event loop for about a
|
|
39
|
+
// minute), so this length check is the one gate before the decoder; the alphabet
|
|
40
|
+
// check deliberately leaves the length to it.
|
|
41
|
+
if (value.length !== BASE58_LENGTH || !BASE58_ALPHABET.test(value))
|
|
42
|
+
throw invalid();
|
|
43
|
+
let bytes;
|
|
44
|
+
try {
|
|
45
|
+
bytes = base58check.decode(value);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
throw invalid();
|
|
49
|
+
}
|
|
50
|
+
if (bytes.length !== 21 || bytes[0] !== 0x41)
|
|
51
|
+
throw invalid();
|
|
52
|
+
return bytes;
|
|
53
|
+
}
|
|
54
|
+
/** Lower-case `41…` hex form (what the HTTP API takes with `visible: false`). */
|
|
55
|
+
function toHexAddress(value) {
|
|
56
|
+
return (0, bytes_1.toHex)(addressBytes(value));
|
|
57
|
+
}
|
|
58
|
+
/** Base58check `T…` form, the canonical one. */
|
|
59
|
+
function toBase58Address(value) {
|
|
60
|
+
return base58check.encode(addressBytes(value));
|
|
61
|
+
}
|
|
62
|
+
function isTronAddress(value) {
|
|
63
|
+
try {
|
|
64
|
+
addressBytes(value);
|
|
65
|
+
return true;
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/** Only a 33-byte compressed or 65-byte `0x04` point on the curve; returns 65 bytes. */
|
|
72
|
+
function uncompressedPublicKey(publicKey) {
|
|
73
|
+
const prefix = publicKey instanceof Uint8Array ? publicKey[0] : undefined;
|
|
74
|
+
const shaped = ((prefix === 0x02 || prefix === 0x03) && publicKey.length === 33) ||
|
|
75
|
+
(prefix === 0x04 && publicKey.length === 65);
|
|
76
|
+
try {
|
|
77
|
+
if (shaped)
|
|
78
|
+
return secp256k1_1.secp256k1.ProjectivePoint.fromHex(publicKey).toRawBytes(false);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// Not a point on the curve.
|
|
82
|
+
}
|
|
83
|
+
throw new error_1.ValidationError('INVALID_ADDRESS', 'public key must be a 33- or 65-byte secp256k1 point');
|
|
84
|
+
}
|
|
85
|
+
function addressFromPublicKey(publicKey) {
|
|
86
|
+
const hash = (0, sha3_1.keccak_256)(uncompressedPublicKey(publicKey).subarray(1));
|
|
87
|
+
const bytes = new Uint8Array(21);
|
|
88
|
+
bytes[0] = 0x41;
|
|
89
|
+
bytes.set(hash.subarray(12), 1);
|
|
90
|
+
return base58check.encode(bytes);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* `variant.hex` is part of the intent hash. It is a pure function of `canonical`
|
|
94
|
+
* (a JSON string), so a recipient typed in base58 or in hex hashes the same.
|
|
95
|
+
*/
|
|
96
|
+
function normalizeTronAddress(value) {
|
|
97
|
+
const bytes = addressBytes(value);
|
|
98
|
+
const canonical = base58check.encode(bytes);
|
|
99
|
+
return { canonical, display: canonical, variant: { hex: (0, bytes_1.toHex)(bytes) } };
|
|
100
|
+
}
|
|
101
|
+
/** `address.format({ hex: true })` renders the `41…` hex form; otherwise base58. */
|
|
102
|
+
const formatTronAddress = (address, options) => options?.hex === true ? toHexAddress(address.canonical) : address.canonical;
|
|
103
|
+
exports.formatTronAddress = formatTronAddress;
|
|
104
|
+
exports.tronAddressCodec = {
|
|
105
|
+
validate: isTronAddress,
|
|
106
|
+
normalize: normalizeTronAddress,
|
|
107
|
+
fromPublicKey: (publicKey) => normalizeTronAddress(addressFromPublicKey(publicKey)),
|
|
108
|
+
format: exports.formatTronAddress,
|
|
109
|
+
};
|
|
110
|
+
//# sourceMappingURL=address.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"address.js","sourceRoot":"","sources":["../../../src/adapters/tron/address.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Tron addresses, SDK-free: `0x41` + the last 20 bytes of the keccak-256 hash of\n * the uncompressed public key, shown as base58check (`T…`, canonical) or as 42 hex digits\n * (the `hex` variant). Decoding is strict: base58check with the right checksum, exactly 21\n * bytes and the `0x41` prefix, or `41` + 40 hex digits. Public keys must be 33- or 65-byte\n * points on the curve; tronweb's `computeAddress` would hash other lengths as is.\n */\nimport { secp256k1 } from '@noble/curves/secp256k1';\nimport { keccak_256 } from '@noble/hashes/sha3';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { createBase58check } from '@scure/base';\nimport type { AddressCodec } from '../../core/driver/types';\nimport { ValidationError } from '../../core/errors/error';\nimport type { AddressFormatter, NormalizedAddress } from '../../core/model/address';\nimport { fromHex, toHex } from '../../core/util/bytes';\n\nconst base58check = createBase58check(sha256);\nconst HEX_ADDRESS = /^41[0-9a-fA-F]{40}$/;\n/** Every base58check form of 21 bytes starting `0x41` has exactly 34 characters. */\nconst BASE58_LENGTH = 34;\nconst BASE58_ALPHABET = /^T[1-9A-HJ-NP-Za-km-z]*$/;\n\nfunction invalid(): ValidationError {\n return new ValidationError('INVALID_ADDRESS', 'not a Tron address');\n}\n\n/** The 21 address bytes of a base58check or `41…` hex address; throws INVALID_ADDRESS. */\nexport function addressBytes(value: string): Uint8Array {\n if (typeof value !== 'string') throw invalid();\n if (HEX_ADDRESS.test(value)) return fromHex(value);\n // Base58 decoding is quadratic (10,000 characters block the event loop for about a\n // minute), so this length check is the one gate before the decoder; the alphabet\n // check deliberately leaves the length to it.\n if (value.length !== BASE58_LENGTH || !BASE58_ALPHABET.test(value)) throw invalid();\n let bytes: Uint8Array;\n try {\n bytes = base58check.decode(value);\n } catch {\n throw invalid();\n }\n if (bytes.length !== 21 || bytes[0] !== 0x41) throw invalid();\n return bytes;\n}\n\n/** Lower-case `41…` hex form (what the HTTP API takes with `visible: false`). */\nexport function toHexAddress(value: string): string {\n return toHex(addressBytes(value));\n}\n\n/** Base58check `T…` form, the canonical one. */\nexport function toBase58Address(value: string): string {\n return base58check.encode(addressBytes(value));\n}\n\nexport function isTronAddress(value: string): boolean {\n try {\n addressBytes(value);\n return true;\n } catch {\n return false;\n }\n}\n\n/** Only a 33-byte compressed or 65-byte `0x04` point on the curve; returns 65 bytes. */\nexport function uncompressedPublicKey(publicKey: Uint8Array): Uint8Array {\n const prefix = publicKey instanceof Uint8Array ? publicKey[0] : undefined;\n const shaped =\n ((prefix === 0x02 || prefix === 0x03) && publicKey.length === 33) ||\n (prefix === 0x04 && publicKey.length === 65);\n try {\n if (shaped) return secp256k1.ProjectivePoint.fromHex(publicKey).toRawBytes(false);\n } catch {\n // Not a point on the curve.\n }\n throw new ValidationError(\n 'INVALID_ADDRESS',\n 'public key must be a 33- or 65-byte secp256k1 point',\n );\n}\n\nexport function addressFromPublicKey(publicKey: Uint8Array): string {\n const hash = keccak_256(uncompressedPublicKey(publicKey).subarray(1));\n const bytes = new Uint8Array(21);\n bytes[0] = 0x41;\n bytes.set(hash.subarray(12), 1);\n return base58check.encode(bytes);\n}\n\n/**\n * `variant.hex` is part of the intent hash. It is a pure function of `canonical`\n * (a JSON string), so a recipient typed in base58 or in hex hashes the same.\n */\nexport function normalizeTronAddress(value: string): NormalizedAddress {\n const bytes = addressBytes(value);\n const canonical = base58check.encode(bytes);\n return { canonical, display: canonical, variant: { hex: toHex(bytes) } };\n}\n\n/** `address.format({ hex: true })` renders the `41…` hex form; otherwise base58. */\nexport const formatTronAddress: AddressFormatter = (address, options) =>\n options?.hex === true ? toHexAddress(address.canonical) : address.canonical;\n\nexport const tronAddressCodec: AddressCodec = {\n validate: isTronAddress,\n normalize: normalizeTronAddress,\n fromPublicKey: (publicKey) => normalizeTronAddress(addressFromPublicKey(publicKey)),\n format: formatTronAddress,\n};\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Broadcaster, TxBuilder } from '../../core/driver/types';
|
|
2
|
+
import { type TronContext } from './reader';
|
|
3
|
+
/**
|
|
4
|
+
* java-tron's bandwidth for a transaction whose `raw_data` is `rawBytes` long
|
|
5
|
+
* (`BandwidthProcessor.consume`): the signed size without `ret` (field 1 with its length and
|
|
6
|
+
* the raw bytes, field 2 with its length and one 65-byte signature) plus 64 result bytes.
|
|
7
|
+
*/
|
|
8
|
+
export declare function bandwidthOf(rawBytes: number): bigint;
|
|
9
|
+
export declare function createTronBuilder(ctx: TronContext): {
|
|
10
|
+
readonly builder: TxBuilder;
|
|
11
|
+
readonly broadcaster: Broadcaster;
|
|
12
|
+
};
|