crypto-aio 0.0.2 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +144 -14
- package/dist/adapters/avalanche/address.d.ts +15 -0
- package/dist/adapters/avalanche/address.js +74 -0
- package/dist/adapters/avalanche/address.js.map +1 -0
- package/dist/adapters/avalanche/api.d.ts +100 -0
- package/dist/adapters/avalanche/api.js +381 -0
- package/dist/adapters/avalanche/api.js.map +1 -0
- package/dist/adapters/avalanche/builder.d.ts +13 -0
- package/dist/adapters/avalanche/builder.js +336 -0
- package/dist/adapters/avalanche/builder.js.map +1 -0
- package/dist/adapters/avalanche/cb58.d.ts +7 -0
- package/dist/adapters/avalanche/cb58.js +49 -0
- package/dist/adapters/avalanche/cb58.js.map +1 -0
- package/dist/adapters/avalanche/chains.d.ts +21 -0
- package/dist/adapters/avalanche/chains.js +79 -0
- package/dist/adapters/avalanche/chains.js.map +1 -0
- package/dist/adapters/avalanche/codec.d.ts +94 -0
- package/dist/adapters/avalanche/codec.js +371 -0
- package/dist/adapters/avalanche/codec.js.map +1 -0
- package/dist/adapters/avalanche/context.d.ts +59 -0
- package/dist/adapters/avalanche/context.js +114 -0
- package/dist/adapters/avalanche/context.js.map +1 -0
- package/dist/adapters/avalanche/decode.d.ts +16 -0
- package/dist/adapters/avalanche/decode.js +101 -0
- package/dist/adapters/avalanche/decode.js.map +1 -0
- package/dist/adapters/avalanche/driver.d.ts +22 -0
- package/dist/adapters/avalanche/driver.js +81 -0
- package/dist/adapters/avalanche/driver.js.map +1 -0
- package/dist/adapters/avalanche/errors.d.ts +18 -0
- package/dist/adapters/avalanche/errors.js +61 -0
- package/dist/adapters/avalanche/errors.js.map +1 -0
- package/dist/adapters/avalanche/fees.d.ts +23 -0
- package/dist/adapters/avalanche/fees.js +105 -0
- package/dist/adapters/avalanche/fees.js.map +1 -0
- package/dist/adapters/avalanche/index.d.ts +19 -0
- package/dist/adapters/avalanche/index.js +8 -0
- package/dist/adapters/avalanche/index.js.map +1 -0
- package/dist/adapters/avalanche/network.d.ts +37 -0
- package/dist/adapters/avalanche/network.js +135 -0
- package/dist/adapters/avalanche/network.js.map +1 -0
- package/dist/adapters/avalanche/plugin.d.ts +21 -0
- package/dist/adapters/avalanche/plugin.js +46 -0
- package/dist/adapters/avalanche/plugin.js.map +1 -0
- package/dist/adapters/avalanche/presets.d.ts +6 -0
- package/dist/adapters/avalanche/presets.js +86 -0
- package/dist/adapters/avalanche/presets.js.map +1 -0
- package/dist/adapters/avalanche/proofs.d.ts +41 -0
- package/dist/adapters/avalanche/proofs.js +270 -0
- package/dist/adapters/avalanche/proofs.js.map +1 -0
- package/dist/adapters/avalanche/reader.d.ts +40 -0
- package/dist/adapters/avalanche/reader.js +231 -0
- package/dist/adapters/avalanche/reader.js.map +1 -0
- package/dist/adapters/avalanche/sdk.d.ts +182 -0
- package/dist/adapters/avalanche/sdk.js +21 -0
- package/dist/adapters/avalanche/sdk.js.map +1 -0
- package/dist/adapters/avalanche/types.d.ts +86 -0
- package/dist/{type/common.js → adapters/avalanche/types.js} +1 -1
- package/dist/adapters/avalanche/types.js.map +1 -0
- package/dist/adapters/evm/builder.d.ts +11 -0
- package/dist/adapters/evm/builder.js +326 -0
- package/dist/adapters/evm/builder.js.map +1 -0
- package/dist/adapters/evm/chains.d.ts +6 -0
- package/dist/adapters/evm/chains.js +203 -0
- package/dist/adapters/evm/chains.js.map +1 -0
- package/dist/adapters/evm/client.d.ts +84 -0
- package/dist/adapters/evm/client.js +335 -0
- package/dist/adapters/evm/client.js.map +1 -0
- package/dist/adapters/evm/decode.d.ts +35 -0
- package/dist/adapters/evm/decode.js +170 -0
- package/dist/adapters/evm/decode.js.map +1 -0
- package/dist/adapters/evm/driver.d.ts +8 -0
- package/dist/adapters/evm/driver.js +61 -0
- package/dist/adapters/evm/driver.js.map +1 -0
- package/dist/adapters/evm/errors.d.ts +20 -0
- package/dist/adapters/evm/errors.js +110 -0
- package/dist/adapters/evm/errors.js.map +1 -0
- package/dist/adapters/evm/ethers-client.d.ts +43 -0
- package/dist/adapters/evm/ethers-client.js +135 -0
- package/dist/adapters/evm/ethers-client.js.map +1 -0
- package/dist/adapters/evm/fees.d.ts +79 -0
- package/dist/adapters/evm/fees.js +234 -0
- package/dist/adapters/evm/fees.js.map +1 -0
- package/dist/adapters/evm/index.d.ts +20 -0
- package/dist/adapters/evm/index.js +11 -0
- package/dist/adapters/evm/index.js.map +1 -0
- package/dist/adapters/evm/network.d.ts +60 -0
- package/dist/adapters/evm/network.js +131 -0
- package/dist/adapters/evm/network.js.map +1 -0
- package/dist/adapters/evm/plugin.d.ts +36 -0
- package/dist/adapters/evm/plugin.js +102 -0
- package/dist/adapters/evm/plugin.js.map +1 -0
- package/dist/adapters/evm/presets.d.ts +2 -0
- package/dist/adapters/evm/presets.js +105 -0
- package/dist/adapters/evm/presets.js.map +1 -0
- package/dist/adapters/evm/proofs.d.ts +19 -0
- package/dist/adapters/evm/proofs.js +358 -0
- package/dist/adapters/evm/proofs.js.map +1 -0
- package/dist/adapters/evm/rawtx.d.ts +25 -0
- package/dist/adapters/evm/rawtx.js +176 -0
- package/dist/adapters/evm/rawtx.js.map +1 -0
- package/dist/adapters/evm/reader.d.ts +65 -0
- package/dist/adapters/evm/reader.js +292 -0
- package/dist/adapters/evm/reader.js.map +1 -0
- package/dist/adapters/evm/rpc.d.ts +39 -0
- package/dist/adapters/evm/rpc.js +152 -0
- package/dist/adapters/evm/rpc.js.map +1 -0
- package/dist/adapters/evm/tokens.d.ts +7 -0
- package/dist/adapters/evm/tokens.js +23 -0
- package/dist/adapters/evm/tokens.js.map +1 -0
- package/dist/adapters/evm/types.d.ts +255 -0
- package/dist/{type/account.js → adapters/evm/types.js} +1 -1
- package/dist/adapters/evm/types.js.map +1 -0
- package/dist/adapters/evm/web3-client.d.ts +23 -0
- package/dist/adapters/evm/web3-client.js +159 -0
- package/dist/adapters/evm/web3-client.js.map +1 -0
- package/dist/adapters/solana/builder.d.ts +18 -0
- package/dist/adapters/solana/builder.js +545 -0
- package/dist/adapters/solana/builder.js.map +1 -0
- package/dist/adapters/solana/chains.d.ts +13 -0
- package/dist/adapters/solana/chains.js +37 -0
- package/dist/adapters/solana/chains.js.map +1 -0
- package/dist/adapters/solana/decode.d.ts +111 -0
- package/dist/adapters/solana/decode.js +595 -0
- package/dist/adapters/solana/decode.js.map +1 -0
- package/dist/adapters/solana/driver.d.ts +15 -0
- package/dist/adapters/solana/driver.js +72 -0
- package/dist/adapters/solana/driver.js.map +1 -0
- package/dist/adapters/solana/errors.d.ts +36 -0
- package/dist/adapters/solana/errors.js +154 -0
- package/dist/adapters/solana/errors.js.map +1 -0
- package/dist/adapters/solana/fees.d.ts +68 -0
- package/dist/adapters/solana/fees.js +205 -0
- package/dist/adapters/solana/fees.js.map +1 -0
- package/dist/adapters/solana/heights.d.ts +47 -0
- package/dist/adapters/solana/heights.js +185 -0
- package/dist/adapters/solana/heights.js.map +1 -0
- package/dist/adapters/solana/history.d.ts +10 -0
- package/dist/adapters/solana/history.js +71 -0
- package/dist/adapters/solana/history.js.map +1 -0
- package/dist/adapters/solana/index.d.ts +16 -0
- package/dist/adapters/solana/index.js +9 -0
- package/dist/adapters/solana/index.js.map +1 -0
- package/dist/adapters/solana/keys.d.ts +13 -0
- package/dist/adapters/solana/keys.js +69 -0
- package/dist/adapters/solana/keys.js.map +1 -0
- package/dist/adapters/solana/network.d.ts +24 -0
- package/dist/adapters/solana/network.js +95 -0
- package/dist/adapters/solana/network.js.map +1 -0
- package/dist/adapters/solana/plugin.d.ts +18 -0
- package/dist/adapters/solana/plugin.js +41 -0
- package/dist/adapters/solana/plugin.js.map +1 -0
- package/dist/adapters/solana/presets.d.ts +2 -0
- package/dist/adapters/solana/presets.js +77 -0
- package/dist/adapters/solana/presets.js.map +1 -0
- package/dist/adapters/solana/programs.d.ts +44 -0
- package/dist/adapters/solana/programs.js +159 -0
- package/dist/adapters/solana/programs.js.map +1 -0
- package/dist/adapters/solana/proofs.d.ts +56 -0
- package/dist/adapters/solana/proofs.js +540 -0
- package/dist/adapters/solana/proofs.js.map +1 -0
- package/dist/adapters/solana/reader.d.ts +82 -0
- package/dist/adapters/solana/reader.js +326 -0
- package/dist/adapters/solana/reader.js.map +1 -0
- package/dist/adapters/solana/rpc.d.ts +102 -0
- package/dist/adapters/solana/rpc.js +301 -0
- package/dist/adapters/solana/rpc.js.map +1 -0
- package/dist/adapters/solana/tokens.d.ts +7 -0
- package/dist/adapters/solana/tokens.js +19 -0
- package/dist/adapters/solana/tokens.js.map +1 -0
- package/dist/adapters/solana/types.d.ts +121 -0
- package/dist/{type/lib-types.js → adapters/solana/types.js} +1 -1
- package/dist/adapters/solana/types.js.map +1 -0
- package/dist/adapters/solana/web3.d.ts +5 -0
- package/dist/adapters/solana/web3.js +83 -0
- package/dist/adapters/solana/web3.js.map +1 -0
- package/dist/adapters/solana/wire.d.ts +62 -0
- package/dist/adapters/solana/wire.js +168 -0
- package/dist/adapters/solana/wire.js.map +1 -0
- package/dist/adapters/ton/address.d.ts +43 -0
- package/dist/adapters/ton/address.js +168 -0
- package/dist/adapters/ton/address.js.map +1 -0
- package/dist/adapters/ton/api.d.ts +344 -0
- package/dist/adapters/ton/api.js +942 -0
- package/dist/adapters/ton/api.js.map +1 -0
- package/dist/adapters/ton/builder.d.ts +18 -0
- package/dist/adapters/ton/builder.js +701 -0
- package/dist/adapters/ton/builder.js.map +1 -0
- package/dist/adapters/ton/chains.d.ts +16 -0
- package/dist/adapters/ton/chains.js +39 -0
- package/dist/adapters/ton/chains.js.map +1 -0
- package/dist/adapters/ton/decode.d.ts +43 -0
- package/dist/adapters/ton/decode.js +219 -0
- package/dist/adapters/ton/decode.js.map +1 -0
- package/dist/adapters/ton/driver.d.ts +10 -0
- package/dist/adapters/ton/driver.js +117 -0
- package/dist/adapters/ton/driver.js.map +1 -0
- package/dist/adapters/ton/errors.d.ts +36 -0
- package/dist/adapters/ton/errors.js +89 -0
- package/dist/adapters/ton/errors.js.map +1 -0
- package/dist/adapters/ton/fees.d.ts +28 -0
- package/dist/adapters/ton/fees.js +121 -0
- package/dist/adapters/ton/fees.js.map +1 -0
- package/dist/adapters/ton/index.d.ts +16 -0
- package/dist/adapters/ton/index.js +9 -0
- package/dist/adapters/ton/index.js.map +1 -0
- package/dist/adapters/ton/messages.d.ts +157 -0
- package/dist/adapters/ton/messages.js +397 -0
- package/dist/adapters/ton/messages.js.map +1 -0
- package/dist/adapters/ton/native-client.d.ts +10 -0
- package/dist/adapters/ton/native-client.js +47 -0
- package/dist/adapters/ton/native-client.js.map +1 -0
- package/dist/adapters/ton/network.d.ts +58 -0
- package/dist/adapters/ton/network.js +207 -0
- package/dist/adapters/ton/network.js.map +1 -0
- package/dist/adapters/ton/plugin.d.ts +24 -0
- package/dist/adapters/ton/plugin.js +57 -0
- package/dist/adapters/ton/plugin.js.map +1 -0
- package/dist/adapters/ton/presets.d.ts +6 -0
- package/dist/adapters/ton/presets.js +94 -0
- package/dist/adapters/ton/presets.js.map +1 -0
- package/dist/adapters/ton/proofs.d.ts +66 -0
- package/dist/adapters/ton/proofs.js +813 -0
- package/dist/adapters/ton/proofs.js.map +1 -0
- package/dist/adapters/ton/reader.d.ts +194 -0
- package/dist/adapters/ton/reader.js +781 -0
- package/dist/adapters/ton/reader.js.map +1 -0
- package/dist/adapters/ton/tokens.d.ts +10 -0
- package/dist/adapters/ton/tokens.js +27 -0
- package/dist/adapters/ton/tokens.js.map +1 -0
- package/dist/adapters/ton/trace.d.ts +48 -0
- package/dist/adapters/ton/trace.js +277 -0
- package/dist/adapters/ton/trace.js.map +1 -0
- package/dist/adapters/ton/types.d.ts +105 -0
- package/dist/adapters/ton/types.js +3 -0
- package/dist/adapters/ton/types.js.map +1 -0
- package/dist/adapters/ton/wallets.d.ts +86 -0
- package/dist/adapters/ton/wallets.js +373 -0
- package/dist/adapters/ton/wallets.js.map +1 -0
- package/dist/adapters/tron/abi.d.ts +39 -0
- package/dist/adapters/tron/abi.js +110 -0
- package/dist/adapters/tron/abi.js.map +1 -0
- package/dist/adapters/tron/address.d.ts +20 -0
- package/dist/adapters/tron/address.js +110 -0
- package/dist/adapters/tron/address.js.map +1 -0
- package/dist/adapters/tron/builder.d.ts +12 -0
- package/dist/adapters/tron/builder.js +553 -0
- package/dist/adapters/tron/builder.js.map +1 -0
- package/dist/adapters/tron/chains.d.ts +12 -0
- package/dist/adapters/tron/chains.js +35 -0
- package/dist/adapters/tron/chains.js.map +1 -0
- package/dist/adapters/tron/codec.d.ts +10 -0
- package/dist/adapters/tron/codec.js +322 -0
- package/dist/adapters/tron/codec.js.map +1 -0
- package/dist/adapters/tron/decode.d.ts +50 -0
- package/dist/adapters/tron/decode.js +280 -0
- package/dist/adapters/tron/decode.js.map +1 -0
- package/dist/adapters/tron/driver.d.ts +12 -0
- package/dist/adapters/tron/driver.js +106 -0
- package/dist/adapters/tron/driver.js.map +1 -0
- package/dist/adapters/tron/errors.d.ts +74 -0
- package/dist/adapters/tron/errors.js +261 -0
- package/dist/adapters/tron/errors.js.map +1 -0
- package/dist/adapters/tron/fees.d.ts +49 -0
- package/dist/adapters/tron/fees.js +166 -0
- package/dist/adapters/tron/fees.js.map +1 -0
- package/dist/adapters/tron/http.d.ts +173 -0
- package/dist/adapters/tron/http.js +729 -0
- package/dist/adapters/tron/http.js.map +1 -0
- package/dist/adapters/tron/index.d.ts +16 -0
- package/dist/adapters/tron/index.js +15 -0
- package/dist/adapters/tron/index.js.map +1 -0
- package/dist/adapters/tron/network.d.ts +44 -0
- package/dist/adapters/tron/network.js +163 -0
- package/dist/adapters/tron/network.js.map +1 -0
- package/dist/adapters/tron/plugin.d.ts +17 -0
- package/dist/adapters/tron/plugin.js +39 -0
- package/dist/adapters/tron/plugin.js.map +1 -0
- package/dist/adapters/tron/presets.d.ts +5 -0
- package/dist/adapters/tron/presets.js +68 -0
- package/dist/adapters/tron/presets.js.map +1 -0
- package/dist/adapters/tron/proofs.d.ts +80 -0
- package/dist/adapters/tron/proofs.js +370 -0
- package/dist/adapters/tron/proofs.js.map +1 -0
- package/dist/adapters/tron/protobuf.d.ts +36 -0
- package/dist/adapters/tron/protobuf.js +90 -0
- package/dist/adapters/tron/protobuf.js.map +1 -0
- package/dist/adapters/tron/reader.d.ts +47 -0
- package/dist/adapters/tron/reader.js +203 -0
- package/dist/adapters/tron/reader.js.map +1 -0
- package/dist/adapters/tron/tokens.d.ts +7 -0
- package/dist/adapters/tron/tokens.js +14 -0
- package/dist/adapters/tron/tokens.js.map +1 -0
- package/dist/adapters/tron/types.d.ts +166 -0
- package/dist/adapters/tron/types.js +3 -0
- package/dist/adapters/tron/types.js.map +1 -0
- package/dist/adapters/utxo/address.d.ts +51 -0
- package/dist/adapters/utxo/address.js +341 -0
- package/dist/adapters/utxo/address.js.map +1 -0
- package/dist/adapters/utxo/builder.d.ts +35 -0
- package/dist/adapters/utxo/builder.js +380 -0
- package/dist/adapters/utxo/builder.js.map +1 -0
- package/dist/adapters/utxo/chains.d.ts +17 -0
- package/dist/adapters/utxo/chains.js +99 -0
- package/dist/adapters/utxo/chains.js.map +1 -0
- package/dist/adapters/utxo/codec.d.ts +120 -0
- package/dist/adapters/utxo/codec.js +408 -0
- package/dist/adapters/utxo/codec.js.map +1 -0
- package/dist/adapters/utxo/coinselect.d.ts +48 -0
- package/dist/adapters/utxo/coinselect.js +131 -0
- package/dist/adapters/utxo/coinselect.js.map +1 -0
- package/dist/adapters/utxo/context.d.ts +57 -0
- package/dist/adapters/utxo/context.js +118 -0
- package/dist/adapters/utxo/context.js.map +1 -0
- package/dist/adapters/utxo/decode.d.ts +14 -0
- package/dist/adapters/utxo/decode.js +85 -0
- package/dist/adapters/utxo/decode.js.map +1 -0
- package/dist/adapters/utxo/driver.d.ts +16 -0
- package/dist/adapters/utxo/driver.js +74 -0
- package/dist/adapters/utxo/driver.js.map +1 -0
- package/dist/adapters/utxo/ecc.d.ts +9 -0
- package/dist/adapters/utxo/ecc.js +26 -0
- package/dist/adapters/utxo/ecc.js.map +1 -0
- package/dist/adapters/utxo/errors.d.ts +52 -0
- package/dist/adapters/utxo/errors.js +191 -0
- package/dist/adapters/utxo/errors.js.map +1 -0
- package/dist/adapters/utxo/esplora.d.ts +79 -0
- package/dist/adapters/utxo/esplora.js +451 -0
- package/dist/adapters/utxo/esplora.js.map +1 -0
- package/dist/adapters/utxo/fees.d.ts +41 -0
- package/dist/adapters/utxo/fees.js +125 -0
- package/dist/adapters/utxo/fees.js.map +1 -0
- package/dist/adapters/utxo/index.d.ts +17 -0
- package/dist/adapters/utxo/index.js +8 -0
- package/dist/adapters/utxo/index.js.map +1 -0
- package/dist/adapters/utxo/network.d.ts +50 -0
- package/dist/adapters/utxo/network.js +165 -0
- package/dist/adapters/utxo/network.js.map +1 -0
- package/dist/adapters/utxo/plugin.d.ts +17 -0
- package/dist/adapters/utxo/plugin.js +41 -0
- package/dist/adapters/utxo/plugin.js.map +1 -0
- package/dist/adapters/utxo/presets.d.ts +12 -0
- package/dist/adapters/utxo/presets.js +47 -0
- package/dist/adapters/utxo/presets.js.map +1 -0
- package/dist/adapters/utxo/preview.d.ts +3 -0
- package/dist/adapters/utxo/preview.js +65 -0
- package/dist/adapters/utxo/preview.js.map +1 -0
- package/dist/adapters/utxo/proofs.d.ts +57 -0
- package/dist/adapters/utxo/proofs.js +331 -0
- package/dist/adapters/utxo/proofs.js.map +1 -0
- package/dist/adapters/utxo/rawtx.d.ts +59 -0
- package/dist/adapters/utxo/rawtx.js +234 -0
- package/dist/adapters/utxo/rawtx.js.map +1 -0
- package/dist/adapters/utxo/reader.d.ts +36 -0
- package/dist/adapters/utxo/reader.js +265 -0
- package/dist/adapters/utxo/reader.js.map +1 -0
- package/dist/adapters/utxo/sdk.d.ts +18 -0
- package/dist/adapters/utxo/sdk.js +17 -0
- package/dist/adapters/utxo/sdk.js.map +1 -0
- package/dist/adapters/utxo/signed-psbt.d.ts +36 -0
- package/dist/adapters/utxo/signed-psbt.js +428 -0
- package/dist/adapters/utxo/signed-psbt.js.map +1 -0
- package/dist/adapters/utxo/spend.d.ts +59 -0
- package/dist/adapters/utxo/spend.js +230 -0
- package/dist/adapters/utxo/spend.js.map +1 -0
- package/dist/adapters/utxo/types.d.ts +167 -0
- package/dist/adapters/utxo/types.js +3 -0
- package/dist/adapters/utxo/types.js.map +1 -0
- package/dist/core/assets/service.d.ts +18 -0
- package/dist/core/assets/service.js +69 -0
- package/dist/core/assets/service.js.map +1 -0
- package/dist/core/blockchain/default-ref.d.ts +4 -0
- package/dist/core/blockchain/default-ref.js +16 -0
- package/dist/core/blockchain/default-ref.js.map +1 -0
- package/dist/core/blockchain/handle.d.ts +200 -0
- package/dist/core/blockchain/handle.js +579 -0
- package/dist/core/blockchain/handle.js.map +1 -0
- package/dist/core/blockchain/internal.d.ts +19 -0
- package/dist/core/blockchain/internal.js +16 -0
- package/dist/core/blockchain/internal.js.map +1 -0
- package/dist/core/blockchain/mapping.d.ts +22 -0
- package/dist/core/blockchain/mapping.js +136 -0
- package/dist/core/blockchain/mapping.js.map +1 -0
- package/dist/core/config/env.d.ts +8 -0
- package/dist/core/config/env.js +60 -0
- package/dist/core/config/env.js.map +1 -0
- package/dist/core/config/merge.d.ts +26 -0
- package/dist/core/config/merge.js +144 -0
- package/dist/core/config/merge.js.map +1 -0
- package/dist/core/config/resolve.d.ts +12 -0
- package/dist/core/config/resolve.js +251 -0
- package/dist/core/config/resolve.js.map +1 -0
- package/dist/core/config/types.d.ts +165 -0
- package/dist/core/config/types.js +3 -0
- package/dist/core/config/types.js.map +1 -0
- package/dist/core/container/builtins.d.ts +4 -0
- package/dist/core/container/builtins.js +13 -0
- package/dist/core/container/builtins.js.map +1 -0
- package/dist/core/container/container.d.ts +69 -0
- package/dist/core/container/container.js +466 -0
- package/dist/core/container/container.js.map +1 -0
- package/dist/core/container/default.d.ts +15 -0
- package/dist/core/container/default.js +70 -0
- package/dist/core/container/default.js.map +1 -0
- package/dist/core/container/internals.d.ts +54 -0
- package/dist/core/container/internals.js +21 -0
- package/dist/core/container/internals.js.map +1 -0
- package/dist/core/container/pool.d.ts +27 -0
- package/dist/core/container/pool.js +77 -0
- package/dist/core/container/pool.js.map +1 -0
- package/dist/core/driver/types.d.ts +346 -0
- package/dist/core/driver/types.js +3 -0
- package/dist/core/driver/types.js.map +1 -0
- package/dist/core/errors/codes.d.ts +153 -0
- package/dist/core/errors/codes.js +49 -0
- package/dist/core/errors/codes.js.map +1 -0
- package/dist/core/errors/error.d.ts +66 -0
- package/dist/core/errors/error.js +129 -0
- package/dist/core/errors/error.js.map +1 -0
- package/dist/core/events/bus.d.ts +12 -0
- package/dist/core/events/bus.js +46 -0
- package/dist/core/events/bus.js.map +1 -0
- package/dist/core/events/logger.d.ts +13 -0
- package/dist/core/events/logger.js +42 -0
- package/dist/core/events/logger.js.map +1 -0
- package/dist/core/events/types.d.ts +131 -0
- package/dist/core/events/types.js +3 -0
- package/dist/core/events/types.js.map +1 -0
- package/dist/core/lifecycle/engine-rules.d.ts +107 -0
- package/dist/core/lifecycle/engine-rules.js +257 -0
- package/dist/core/lifecycle/engine-rules.js.map +1 -0
- package/dist/core/lifecycle/engine.d.ts +500 -0
- package/dist/core/lifecycle/engine.js +1732 -0
- package/dist/core/lifecycle/engine.js.map +1 -0
- package/dist/core/lifecycle/evaluate.d.ts +19 -0
- package/dist/core/lifecycle/evaluate.js +72 -0
- package/dist/core/lifecycle/evaluate.js.map +1 -0
- package/dist/core/lifecycle/intent.d.ts +11 -0
- package/dist/core/lifecycle/intent.js +88 -0
- package/dist/core/lifecycle/intent.js.map +1 -0
- package/dist/core/lifecycle/monitor.d.ts +138 -0
- package/dist/core/lifecycle/monitor.js +606 -0
- package/dist/core/lifecycle/monitor.js.map +1 -0
- package/dist/core/lifecycle/observations.d.ts +17 -0
- package/dist/core/lifecycle/observations.js +59 -0
- package/dist/core/lifecycle/observations.js.map +1 -0
- package/dist/core/lifecycle/reconcile.d.ts +58 -0
- package/dist/core/lifecycle/reconcile.js +112 -0
- package/dist/core/lifecycle/reconcile.js.map +1 -0
- package/dist/core/lifecycle/views.d.ts +49 -0
- package/dist/core/lifecycle/views.js +57 -0
- package/dist/core/lifecycle/views.js.map +1 -0
- package/dist/core/lifecycle/workers.d.ts +82 -0
- package/dist/core/lifecycle/workers.js +329 -0
- package/dist/core/lifecycle/workers.js.map +1 -0
- package/dist/core/model/address.d.ts +32 -0
- package/dist/core/model/address.js +43 -0
- package/dist/core/model/address.js.map +1 -0
- package/dist/core/model/amount.d.ts +25 -0
- package/dist/core/model/amount.js +102 -0
- package/dist/core/model/amount.js.map +1 -0
- package/dist/core/model/asset.d.ts +28 -0
- package/dist/core/model/asset.js +47 -0
- package/dist/core/model/asset.js.map +1 -0
- package/dist/core/model/capability.d.ts +3 -0
- package/dist/core/model/capability.js +18 -0
- package/dist/core/model/capability.js.map +1 -0
- package/dist/core/model/chain.d.ts +63 -0
- package/dist/core/model/chain.js +8 -0
- package/dist/core/model/chain.js.map +1 -0
- package/dist/core/model/fee.d.ts +36 -0
- package/dist/core/model/fee.js +17 -0
- package/dist/core/model/fee.js.map +1 -0
- package/dist/core/model/ids.d.ts +37 -0
- package/dist/core/model/ids.js +13 -0
- package/dist/core/model/ids.js.map +1 -0
- package/dist/core/model/intent.d.ts +63 -0
- package/dist/core/model/intent.js +81 -0
- package/dist/core/model/intent.js.map +1 -0
- package/dist/core/model/ordering.d.ts +20 -0
- package/dist/core/model/ordering.js +29 -0
- package/dist/core/model/ordering.js.map +1 -0
- package/dist/core/model/transaction.d.ts +116 -0
- package/dist/core/model/transaction.js +3 -0
- package/dist/core/model/transaction.js.map +1 -0
- package/dist/core/observe/scanner.d.ts +135 -0
- package/dist/core/observe/scanner.js +355 -0
- package/dist/core/observe/scanner.js.map +1 -0
- package/dist/core/ordering/reservations.d.ts +16 -0
- package/dist/core/ordering/reservations.js +53 -0
- package/dist/core/ordering/reservations.js.map +1 -0
- package/dist/core/ordering/sequence.d.ts +61 -0
- package/dist/core/ordering/sequence.js +155 -0
- package/dist/core/ordering/sequence.js.map +1 -0
- package/dist/core/registry/adapters.d.ts +10 -0
- package/dist/core/registry/adapters.js +56 -0
- package/dist/core/registry/adapters.js.map +1 -0
- package/dist/core/registry/assets.d.ts +18 -0
- package/dist/core/registry/assets.js +90 -0
- package/dist/core/registry/assets.js.map +1 -0
- package/dist/core/registry/chains.d.ts +10 -0
- package/dist/core/registry/chains.js +80 -0
- package/dist/core/registry/chains.js.map +1 -0
- package/dist/core/registry/plugin.d.ts +41 -0
- package/dist/core/registry/plugin.js +109 -0
- package/dist/core/registry/plugin.js.map +1 -0
- package/dist/core/registry/providers.d.ts +31 -0
- package/dist/core/registry/providers.js +43 -0
- package/dist/core/registry/providers.js.map +1 -0
- package/dist/core/registry/schemes.d.ts +30 -0
- package/dist/core/registry/schemes.js +84 -0
- package/dist/core/registry/schemes.js.map +1 -0
- package/dist/core/secret/fragments.d.ts +33 -0
- package/dist/core/secret/fragments.js +110 -0
- package/dist/core/secret/fragments.js.map +1 -0
- package/dist/core/secret/redact.d.ts +10 -0
- package/dist/core/secret/redact.js +110 -0
- package/dist/core/secret/redact.js.map +1 -0
- package/dist/core/secret/secret.d.ts +14 -0
- package/dist/core/secret/secret.js +42 -0
- package/dist/core/secret/secret.js.map +1 -0
- package/dist/core/signing/callback.d.ts +10 -0
- package/dist/core/signing/callback.js +22 -0
- package/dist/core/signing/callback.js.map +1 -0
- package/dist/core/signing/guard.d.ts +18 -0
- package/dist/core/signing/guard.js +72 -0
- package/dist/core/signing/guard.js.map +1 -0
- package/dist/core/signing/hd.d.ts +36 -0
- package/dist/core/signing/hd.js +167 -0
- package/dist/core/signing/hd.js.map +1 -0
- package/dist/core/signing/local.d.ts +48 -0
- package/dist/core/signing/local.js +190 -0
- package/dist/core/signing/local.js.map +1 -0
- package/dist/core/signing/orchestrator.d.ts +40 -0
- package/dist/core/signing/orchestrator.js +300 -0
- package/dist/core/signing/orchestrator.js.map +1 -0
- package/dist/core/signing/types.d.ts +64 -0
- package/dist/core/signing/types.js +3 -0
- package/dist/core/signing/types.js.map +1 -0
- package/dist/core/signing/wallet.d.ts +48 -0
- package/dist/core/signing/wallet.js +153 -0
- package/dist/core/signing/wallet.js.map +1 -0
- package/dist/core/store/clone.d.ts +25 -0
- package/dist/core/store/clone.js +71 -0
- package/dist/core/store/clone.js.map +1 -0
- package/dist/core/store/memory.d.ts +38 -0
- package/dist/core/store/memory.js +325 -0
- package/dist/core/store/memory.js.map +1 -0
- package/dist/core/store/types.d.ts +246 -0
- package/dist/core/store/types.js +117 -0
- package/dist/core/store/types.js.map +1 -0
- package/dist/core/transport/backoff.d.ts +8 -0
- package/dist/core/transport/backoff.js +27 -0
- package/dist/core/transport/backoff.js.map +1 -0
- package/dist/core/transport/circuit.d.ts +25 -0
- package/dist/core/transport/circuit.js +61 -0
- package/dist/core/transport/circuit.js.map +1 -0
- package/dist/core/transport/http-transport.d.ts +30 -0
- package/dist/core/transport/http-transport.js +1695 -0
- package/dist/core/transport/http-transport.js.map +1 -0
- package/dist/core/transport/rate-limit.d.ts +27 -0
- package/dist/core/transport/rate-limit.js +78 -0
- package/dist/core/transport/rate-limit.js.map +1 -0
- package/dist/core/transport/stale-view.d.ts +11 -0
- package/dist/core/transport/stale-view.js +17 -0
- package/dist/core/transport/stale-view.js.map +1 -0
- package/dist/core/transport/types.d.ts +144 -0
- package/dist/core/transport/types.js +6 -0
- package/dist/core/transport/types.js.map +1 -0
- package/dist/core/util/bytes.d.ts +9 -0
- package/dist/core/util/bytes.js +40 -0
- package/dist/core/util/bytes.js.map +1 -0
- package/dist/core/util/clock.d.ts +6 -0
- package/dist/core/util/clock.js +26 -0
- package/dist/core/util/clock.js.map +1 -0
- package/dist/core/util/freeze.d.ts +8 -0
- package/dist/core/util/freeze.js +31 -0
- package/dist/core/util/freeze.js.map +1 -0
- package/dist/core/util/json.d.ts +29 -0
- package/dist/core/util/json.js +165 -0
- package/dist/core/util/json.js.map +1 -0
- package/dist/core/util/names.d.ts +21 -0
- package/dist/core/util/names.js +46 -0
- package/dist/core/util/names.js.map +1 -0
- package/dist/index.d.ts +64 -14
- package/dist/index.js +105 -49
- package/dist/index.js.map +1 -1
- package/dist/native.d.ts +21 -0
- package/dist/native.js +44 -0
- package/dist/native.js.map +1 -0
- package/dist/testing/contracts/api.d.ts +12 -0
- package/dist/testing/contracts/api.js +58 -0
- package/dist/testing/contracts/api.js.map +1 -0
- package/dist/testing/contracts/cursors.d.ts +6 -0
- package/dist/testing/contracts/cursors.js +43 -0
- package/dist/testing/contracts/cursors.js.map +1 -0
- package/dist/testing/contracts/locks.d.ts +10 -0
- package/dist/testing/contracts/locks.js +63 -0
- package/dist/testing/contracts/locks.js.map +1 -0
- package/dist/testing/contracts/operations.d.ts +21 -0
- package/dist/testing/contracts/operations.js +718 -0
- package/dist/testing/contracts/operations.js.map +1 -0
- package/dist/testing/contracts/sequences.d.ts +6 -0
- package/dist/testing/contracts/sequences.js +68 -0
- package/dist/testing/contracts/sequences.js.map +1 -0
- package/dist/testing/env.d.ts +63 -0
- package/dist/testing/env.js +105 -0
- package/dist/testing/env.js.map +1 -0
- package/dist/testing/fake-chain.d.ts +118 -0
- package/dist/testing/fake-chain.js +536 -0
- package/dist/testing/fake-chain.js.map +1 -0
- package/dist/testing/fake-clock.d.ts +15 -0
- package/dist/testing/fake-clock.js +86 -0
- package/dist/testing/fake-clock.js.map +1 -0
- package/dist/testing/fake-driver.d.ts +15 -0
- package/dist/testing/fake-driver.js +458 -0
- package/dist/testing/fake-driver.js.map +1 -0
- package/dist/testing/fake-fetch.d.ts +32 -0
- package/dist/testing/fake-fetch.js +81 -0
- package/dist/testing/fake-fetch.js.map +1 -0
- package/dist/testing/fake-plugin.d.ts +30 -0
- package/dist/testing/fake-plugin.js +66 -0
- package/dist/testing/fake-plugin.js.map +1 -0
- package/dist/testing/faulty-store.d.ts +36 -0
- package/dist/testing/faulty-store.js +66 -0
- package/dist/testing/faulty-store.js.map +1 -0
- package/dist/testing/generation.d.ts +60 -0
- package/dist/testing/generation.js +252 -0
- package/dist/testing/generation.js.map +1 -0
- package/dist/testing/index.d.ts +28 -0
- package/dist/testing/index.js +51 -0
- package/dist/testing/index.js.map +1 -0
- package/package.json +188 -44
- package/dist/libs/eth/account.d.ts +0 -9
- package/dist/libs/eth/account.js +0 -58
- package/dist/libs/eth/account.js.map +0 -1
- package/dist/libs/eth/contract.d.ts +0 -2
- package/dist/libs/eth/contract.js +0 -7
- package/dist/libs/eth/contract.js.map +0 -1
- package/dist/libs/eth/index.d.ts +0 -20
- package/dist/libs/eth/index.js +0 -62
- package/dist/libs/eth/index.js.map +0 -1
- package/dist/libs/eth/transact.d.ts +0 -2
- package/dist/libs/eth/transact.js +0 -7
- package/dist/libs/eth/transact.js.map +0 -1
- package/dist/libs/index.d.ts +0 -1
- package/dist/libs/index.js +0 -18
- package/dist/libs/index.js.map +0 -1
- package/dist/tool/common.d.ts +0 -28
- package/dist/tool/common.js +0 -33
- package/dist/tool/common.js.map +0 -1
- package/dist/tool/eth-tools.d.ts +0 -3
- package/dist/tool/eth-tools.js +0 -33
- package/dist/tool/eth-tools.js.map +0 -1
- package/dist/tool/index.d.ts +0 -4
- package/dist/tool/index.js +0 -21
- package/dist/tool/index.js.map +0 -1
- package/dist/tool/logging.d.ts +0 -3
- package/dist/tool/logging.js +0 -11
- package/dist/tool/logging.js.map +0 -1
- package/dist/tool/options.d.ts +0 -4
- package/dist/tool/options.js +0 -28
- package/dist/tool/options.js.map +0 -1
- package/dist/type/account.d.ts +0 -9
- package/dist/type/account.js.map +0 -1
- package/dist/type/common.d.ts +0 -18
- package/dist/type/common.js.map +0 -1
- package/dist/type/index.d.ts +0 -3
- package/dist/type/index.js +0 -20
- package/dist/type/index.js.map +0 -1
- package/dist/type/lib-types.d.ts +0 -7
- package/dist/type/lib-types.js.map +0 -1
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
export declare const SELECTORS: Readonly<{
|
|
2
|
+
transfer: "a9059cbb";
|
|
3
|
+
balanceOf: "70a08231";
|
|
4
|
+
decimals: "313ce567";
|
|
5
|
+
symbol: "95d89b41";
|
|
6
|
+
}>;
|
|
7
|
+
/** `keccak256("Transfer(address,address,uint256)")`, without `0x`. */
|
|
8
|
+
export declare const TRANSFER_TOPIC = "ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
|
|
9
|
+
/** An amount outside `uint256` is refused with a fixed text, never wrapped. */
|
|
10
|
+
export declare function encodeTransfer(to: string, amount: bigint): string;
|
|
11
|
+
export declare function encodeBalanceOf(owner: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* The (to, amount) of `transfer(address,uint256)` call data built the canonical way (12
|
|
14
|
+
* zero bytes before the address); `null` for anything else.
|
|
15
|
+
*/
|
|
16
|
+
export declare function decodeTransferCall(data: string): {
|
|
17
|
+
readonly to: string;
|
|
18
|
+
readonly amount: bigint;
|
|
19
|
+
} | null;
|
|
20
|
+
/** Throws on data that is not exactly one ABI `uint256` word. */
|
|
21
|
+
export declare function decodeUint256(data: string): bigint;
|
|
22
|
+
/**
|
|
23
|
+
* Throws on data that is not an ABI `string` (offset 32, length, padded UTF-8). The shape is
|
|
24
|
+
* checked by length and one character class: a repeated-group regex overflows V8's stack
|
|
25
|
+
* on a few million characters.
|
|
26
|
+
*/
|
|
27
|
+
export declare function decodeString(data: string): string;
|
|
28
|
+
/**
|
|
29
|
+
* A TRC-20 `Transfer` log's parties (`41…` hex) and amount; `null` for any other log. Tron
|
|
30
|
+
* logs carry hex without `0x`, and `address` is the 20-byte emitter.
|
|
31
|
+
*/
|
|
32
|
+
export declare function decodeTransferLog(log: {
|
|
33
|
+
readonly topics: readonly string[];
|
|
34
|
+
readonly data: string;
|
|
35
|
+
}): {
|
|
36
|
+
readonly from: string;
|
|
37
|
+
readonly to: string;
|
|
38
|
+
readonly amount: bigint;
|
|
39
|
+
} | null;
|
|
@@ -0,0 +1,110 @@
|
|
|
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
|
+
});
|
|
24
|
+
/** `keccak256("Transfer(address,address,uint256)")`, without `0x`. */
|
|
25
|
+
exports.TRANSFER_TOPIC = 'ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
|
|
26
|
+
const UINT256_MAX = (1n << 256n) - 1n;
|
|
27
|
+
function word(value) {
|
|
28
|
+
return value.toString(16).padStart(64, '0');
|
|
29
|
+
}
|
|
30
|
+
function addressWord(address) {
|
|
31
|
+
return (0, address_1.toHexAddress)(address).slice(2).padStart(64, '0');
|
|
32
|
+
}
|
|
33
|
+
/** An amount outside `uint256` is refused with a fixed text, never wrapped. */
|
|
34
|
+
function encodeTransfer(to, amount) {
|
|
35
|
+
if (amount < 0n || amount > UINT256_MAX) {
|
|
36
|
+
throw new error_1.ValidationError('INVALID_AMOUNT', 'amount does not fit in a uint256');
|
|
37
|
+
}
|
|
38
|
+
return `${exports.SELECTORS.transfer}${addressWord(to)}${word(amount)}`;
|
|
39
|
+
}
|
|
40
|
+
function encodeBalanceOf(owner) {
|
|
41
|
+
return `${exports.SELECTORS.balanceOf}${addressWord(owner)}`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* The (to, amount) of `transfer(address,uint256)` call data built the canonical way (12
|
|
45
|
+
* zero bytes before the address); `null` for anything else.
|
|
46
|
+
*/
|
|
47
|
+
function decodeTransferCall(data) {
|
|
48
|
+
// A fixed length (selector + two words), checked before any other work, so a long
|
|
49
|
+
// untrusted input costs one length check.
|
|
50
|
+
if (data.length !== 136)
|
|
51
|
+
return null;
|
|
52
|
+
const hex = data.toLowerCase();
|
|
53
|
+
if (!/^a9059cbb[0-9a-f]{128}$/.test(hex))
|
|
54
|
+
return null;
|
|
55
|
+
const toWord = hex.slice(8, 72);
|
|
56
|
+
if (!toWord.startsWith('0'.repeat(24)))
|
|
57
|
+
return null;
|
|
58
|
+
return { to: `41${toWord.slice(24)}`, amount: BigInt(`0x${hex.slice(72)}`) };
|
|
59
|
+
}
|
|
60
|
+
/** Throws on data that is not exactly one ABI `uint256` word. */
|
|
61
|
+
function decodeUint256(data) {
|
|
62
|
+
if (!/^[0-9a-fA-F]{64}$/.test(data))
|
|
63
|
+
throw new TypeError('not one uint256 word');
|
|
64
|
+
return BigInt(`0x${data}`);
|
|
65
|
+
}
|
|
66
|
+
/** One character class, no repeated group: linear on any input. */
|
|
67
|
+
const HEX_DIGITS = /^[0-9a-fA-F]+$/;
|
|
68
|
+
/**
|
|
69
|
+
* Throws on data that is not an ABI `string` (offset 32, length, padded UTF-8). The shape is
|
|
70
|
+
* checked by length and one character class: a repeated-group regex overflows V8's stack
|
|
71
|
+
* on a few million characters.
|
|
72
|
+
*/
|
|
73
|
+
function decodeString(data) {
|
|
74
|
+
if (typeof data !== 'string' ||
|
|
75
|
+
data.length < 128 ||
|
|
76
|
+
data.length % 64 !== 0 ||
|
|
77
|
+
!HEX_DIGITS.test(data)) {
|
|
78
|
+
throw new TypeError('not an ABI string');
|
|
79
|
+
}
|
|
80
|
+
if (BigInt(`0x${data.slice(0, 64)}`) !== 32n)
|
|
81
|
+
throw new TypeError('bad string offset');
|
|
82
|
+
const length = BigInt(`0x${data.slice(64, 128)}`);
|
|
83
|
+
const available = BigInt((data.length - 128) / 2);
|
|
84
|
+
if (length > available || available - length >= 32n) {
|
|
85
|
+
throw new TypeError('bad string length');
|
|
86
|
+
}
|
|
87
|
+
const bytes = (0, bytes_1.fromHex)(data.slice(128, 128 + Number(length) * 2));
|
|
88
|
+
return (0, bytes_1.bytesToUtf8)(bytes);
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* A TRC-20 `Transfer` log's parties (`41…` hex) and amount; `null` for any other log. Tron
|
|
92
|
+
* logs carry hex without `0x`, and `address` is the 20-byte emitter.
|
|
93
|
+
*/
|
|
94
|
+
function decodeTransferLog(log) {
|
|
95
|
+
if (log.topics.length !== 3)
|
|
96
|
+
return null;
|
|
97
|
+
const [topic, from, to] = log.topics.map((t) => t.toLowerCase());
|
|
98
|
+
if (topic !== exports.TRANSFER_TOPIC)
|
|
99
|
+
return null;
|
|
100
|
+
const party = (value) => value !== undefined && /^0{24}[0-9a-f]{40}$/.test(value)
|
|
101
|
+
? `41${value.slice(24)}`
|
|
102
|
+
: null;
|
|
103
|
+
const sender = party(from);
|
|
104
|
+
const recipient = party(to);
|
|
105
|
+
if (sender === null || recipient === null || !/^[0-9a-fA-F]{64}$/.test(log.data)) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
return { from: sender, to: recipient, amount: BigInt(`0x${log.data}`) };
|
|
109
|
+
}
|
|
110
|
+
//# 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});\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
|
+
};
|