@tonappchain/sdk 0.7.0-rc8 → 0.7.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/LICENSE +20 -20
- package/README.md +198 -191
- package/dist/artifacts/dev/index.d.ts +9 -0
- package/dist/artifacts/dev/index.js +52 -0
- package/dist/artifacts/dev/tac/addresses.d.ts +4 -0
- package/dist/artifacts/dev/tac/addresses.js +8 -0
- package/dist/artifacts/dev/tac/artifacts.d.ts +330 -0
- package/dist/artifacts/dev/tac/artifacts.js +26 -0
- package/dist/artifacts/dev/tac/endpoints.d.ts +2 -0
- package/dist/artifacts/dev/tac/endpoints.js +5 -0
- package/dist/artifacts/dev/tac/index.d.ts +6 -0
- package/dist/artifacts/dev/tac/index.js +43 -0
- package/dist/artifacts/dev/tac/internal/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json +296 -0
- package/dist/artifacts/dev/tac/internal/artifacts/contracts/core/Structs.sol/IStructsInterface.json +1087 -0
- package/dist/artifacts/dev/tac/internal/artifacts/contracts/interfaces/ICrossChainLayer.sol/ICrossChainLayer.json +114 -0
- package/dist/artifacts/dev/tac/internal/artifacts/contracts/interfaces/ISettings.sol/ISettings.json +194 -0
- package/dist/artifacts/dev/tac/internal/artifacts/contracts/interfaces/ITokenUtils.sol/ITokenUtils.json +164 -0
- package/dist/artifacts/dev/tac/internal/artifacts/contracts/interfaces/tokens/ICrossChainLayerERC20.sol/ICrossChainLayerERC20.json +278 -0
- package/dist/artifacts/dev/tac/internal/artifacts/contracts/interfaces/tokens/ICrossChainLayerERC721.sol/ICrossChainLayerERC721.json +380 -0
- package/dist/artifacts/dev/tac/internal/artifacts/contracts/interfaces/tokens/IERC20WithDecimals.sol/IERC20WithDecimals.json +207 -0
- package/dist/artifacts/dev/tac/internal/artifacts/contracts/smart-account/interfaces/ISAFactory.sol/ISAFactory.json +103 -0
- package/dist/artifacts/dev/tac/internal/artifacts/contracts/smart-account/interfaces/ITacSmartAccount.sol/ITacSmartAccount.json +181 -0
- package/dist/artifacts/dev/tac/internal/scripts/utils/encoding.d.ts +4 -0
- package/dist/artifacts/dev/tac/internal/scripts/utils/encoding.js +18 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721.d.ts +199 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/common.d.ts +50 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/common.js +2 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/core/Structs.sol/IStructsInterface.d.ts +356 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/core/Structs.sol/IStructsInterface.js +2 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/ICrossChainLayer.d.ts +75 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/ICrossChainLayer.js +2 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/ISettings.d.ts +123 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/ISettings.js +2 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/ITokenUtils.d.ts +99 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/ITokenUtils.js +2 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/tokens/ICrossChainLayerERC20.d.ts +182 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/tokens/ICrossChainLayerERC20.js +2 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/tokens/ICrossChainLayerERC721.d.ts +244 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/tokens/ICrossChainLayerERC721.js +2 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/tokens/IERC20WithDecimals.d.ts +133 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/interfaces/tokens/IERC20WithDecimals.js +2 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/smart-account/interfaces/ISAFactory.d.ts +77 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/smart-account/interfaces/ISAFactory.js +2 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/smart-account/interfaces/ITacSmartAccount.d.ts +127 -0
- package/dist/artifacts/dev/tac/internal/typechain-types/contracts/smart-account/interfaces/ITacSmartAccount.js +2 -0
- package/dist/artifacts/dev/tac/multicall.d.ts +1 -0
- package/dist/artifacts/dev/tac/multicall.js +22 -0
- package/dist/artifacts/dev/tac/structs.d.ts +1 -0
- package/dist/artifacts/dev/tac/structs.js +2 -0
- package/dist/artifacts/dev/tac/utils.d.ts +1 -0
- package/dist/artifacts/dev/tac/utils.js +5 -0
- package/dist/artifacts/dev/tac/wrappers.d.ts +9 -0
- package/dist/artifacts/dev/tac/wrappers.js +2 -0
- package/dist/artifacts/dev/ton/addresses.d.ts +1 -0
- package/dist/artifacts/dev/ton/addresses.js +5 -0
- package/dist/artifacts/dev/ton/artifacts.d.ts +47 -0
- package/dist/artifacts/dev/ton/artifacts.js +26 -0
- package/dist/artifacts/dev/ton/endpoints.d.ts +3 -0
- package/dist/artifacts/dev/ton/endpoints.js +6 -0
- package/dist/artifacts/dev/ton/index.d.ts +3 -0
- package/dist/artifacts/dev/ton/index.js +40 -0
- package/dist/artifacts/dev/ton/internal/build/CrossChainLayer.compiled.json +1 -0
- package/dist/artifacts/dev/ton/internal/build/Executor.compiled.json +1 -0
- package/dist/artifacts/dev/ton/internal/build/JettonMinter.compiled.json +1 -0
- package/dist/artifacts/dev/ton/internal/build/JettonProxy.compiled.json +1 -0
- package/dist/artifacts/dev/ton/internal/build/JettonWallet.compiled.json +1 -0
- package/dist/artifacts/dev/ton/internal/build/NFTCollection.compiled.json +1 -0
- package/dist/artifacts/dev/ton/internal/build/NFTItem.compiled.json +1 -0
- package/dist/artifacts/dev/ton/internal/build/NFTProxy.compiled.json +1 -0
- package/dist/artifacts/dev/ton/internal/build/Settings.compiled.json +1 -0
- package/dist/artifacts/dev/ton/internal/wrappers/Constants.d.ts +56 -0
- package/dist/artifacts/dev/ton/internal/wrappers/Constants.js +62 -0
- package/dist/artifacts/dev/ton/internal/wrappers/CrossChainLayer.d.ts +164 -0
- package/dist/artifacts/dev/ton/internal/wrappers/CrossChainLayer.js +336 -0
- package/dist/artifacts/dev/ton/internal/wrappers/JettonMinter.d.ts +94 -0
- package/dist/artifacts/dev/ton/internal/wrappers/JettonMinter.js +202 -0
- package/dist/artifacts/dev/ton/internal/wrappers/JettonProxy.d.ts +80 -0
- package/dist/artifacts/dev/ton/internal/wrappers/JettonProxy.js +158 -0
- package/dist/{wrappers → artifacts/dev/ton/internal/wrappers}/JettonWallet.d.ts +52 -13
- package/dist/artifacts/dev/ton/internal/wrappers/JettonWallet.js +193 -0
- package/dist/artifacts/dev/ton/internal/wrappers/NFTCollection.d.ts +75 -0
- package/dist/artifacts/dev/ton/internal/wrappers/NFTCollection.js +151 -0
- package/dist/artifacts/dev/ton/internal/wrappers/NFTItem.d.ts +82 -0
- package/dist/artifacts/dev/ton/internal/wrappers/NFTItem.js +148 -0
- package/dist/artifacts/dev/ton/internal/wrappers/NFTProxy.d.ts +84 -0
- package/dist/artifacts/dev/ton/internal/wrappers/NFTProxy.js +157 -0
- package/dist/artifacts/dev/ton/internal/wrappers/Settings.d.ts +80 -0
- package/dist/artifacts/dev/ton/internal/wrappers/Settings.js +152 -0
- package/dist/artifacts/dev/ton/internal/wrappers/utils/GasUtils.d.ts +79 -0
- package/dist/artifacts/dev/ton/internal/wrappers/utils/GasUtils.js +291 -0
- package/dist/artifacts/dev/ton/internal/wrappers/utils/MerkleRoots.d.ts +7 -0
- package/dist/artifacts/dev/ton/internal/wrappers/utils/MerkleRoots.js +27 -0
- package/dist/artifacts/dev/ton/wrappers.d.ts +8 -0
- package/dist/artifacts/dev/ton/wrappers.js +27 -0
- package/dist/artifacts/index.d.ts +3 -0
- package/dist/artifacts/index.js +39 -0
- package/dist/artifacts/mainnet/index.d.ts +9 -0
- package/dist/artifacts/mainnet/index.js +52 -0
- package/dist/artifacts/mainnet/tac/addresses.d.ts +4 -0
- package/dist/artifacts/mainnet/tac/addresses.js +7 -0
- package/dist/artifacts/mainnet/tac/artifacts.d.ts +330 -0
- package/dist/artifacts/mainnet/tac/artifacts.js +26 -0
- package/dist/artifacts/mainnet/tac/endpoints.d.ts +2 -0
- package/dist/artifacts/mainnet/tac/endpoints.js +5 -0
- package/dist/artifacts/mainnet/tac/index.d.ts +6 -0
- package/dist/artifacts/mainnet/tac/index.js +43 -0
- package/dist/artifacts/mainnet/tac/internal/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json +296 -0
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/core/Structs.sol/IStructsInterface.json +1087 -0
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/interfaces/ICrossChainLayer.sol/ICrossChainLayer.json +114 -0
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/interfaces/ISettings.sol/ISettings.json +194 -0
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/interfaces/ITokenUtils.sol/ITokenUtils.json +164 -0
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/interfaces/tokens/ICrossChainLayerERC20.sol/ICrossChainLayerERC20.json +278 -0
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/interfaces/tokens/ICrossChainLayerERC721.sol/ICrossChainLayerERC721.json +380 -0
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/interfaces/tokens/IERC20WithDecimals.sol/IERC20WithDecimals.json +207 -0
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/smart-account/interfaces/ISAFactory.sol/ISAFactory.json +103 -0
- package/dist/artifacts/mainnet/tac/internal/artifacts/contracts/smart-account/interfaces/ITacSmartAccount.sol/ITacSmartAccount.json +181 -0
- package/dist/artifacts/mainnet/tac/internal/scripts/utils/encoding.d.ts +4 -0
- package/dist/artifacts/mainnet/tac/internal/scripts/utils/encoding.js +18 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721.d.ts +199 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721.js +2 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/common.d.ts +50 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/common.js +2 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/core/Structs.sol/IStructsInterface.d.ts +356 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/core/Structs.sol/IStructsInterface.js +2 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/ICrossChainLayer.d.ts +75 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/ICrossChainLayer.js +2 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/ISettings.d.ts +123 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/ISettings.js +2 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/ITokenUtils.d.ts +99 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/ITokenUtils.js +2 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/tokens/ICrossChainLayerERC20.d.ts +182 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/tokens/ICrossChainLayerERC20.js +2 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/tokens/ICrossChainLayerERC721.d.ts +244 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/tokens/ICrossChainLayerERC721.js +2 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/tokens/IERC20WithDecimals.d.ts +133 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/interfaces/tokens/IERC20WithDecimals.js +2 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/smart-account/interfaces/ISAFactory.d.ts +77 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/smart-account/interfaces/ISAFactory.js +2 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/smart-account/interfaces/ITacSmartAccount.d.ts +127 -0
- package/dist/artifacts/mainnet/tac/internal/typechain-types/contracts/smart-account/interfaces/ITacSmartAccount.js +2 -0
- package/dist/artifacts/mainnet/tac/multicall.d.ts +1 -0
- package/dist/artifacts/mainnet/tac/multicall.js +22 -0
- package/dist/artifacts/mainnet/tac/structs.d.ts +1 -0
- package/dist/artifacts/mainnet/tac/structs.js +2 -0
- package/dist/artifacts/mainnet/tac/utils.d.ts +1 -0
- package/dist/artifacts/mainnet/tac/utils.js +5 -0
- package/dist/artifacts/mainnet/tac/wrappers.d.ts +9 -0
- package/dist/artifacts/mainnet/tac/wrappers.js +2 -0
- package/dist/artifacts/mainnet/ton/addresses.d.ts +1 -0
- package/dist/artifacts/mainnet/ton/addresses.js +4 -0
- package/dist/artifacts/mainnet/ton/artifacts.d.ts +47 -0
- package/dist/artifacts/mainnet/ton/artifacts.js +26 -0
- package/dist/artifacts/mainnet/ton/endpoints.d.ts +3 -0
- package/dist/artifacts/mainnet/ton/endpoints.js +6 -0
- package/dist/artifacts/mainnet/ton/index.d.ts +3 -0
- package/dist/artifacts/mainnet/ton/index.js +40 -0
- package/dist/artifacts/mainnet/ton/internal/build/CrossChainLayer.compiled.json +1 -0
- package/dist/artifacts/mainnet/ton/internal/build/Executor.compiled.json +1 -0
- package/dist/artifacts/mainnet/ton/internal/build/JettonMinter.compiled.json +1 -0
- package/dist/artifacts/mainnet/ton/internal/build/JettonProxy.compiled.json +1 -0
- package/dist/artifacts/mainnet/ton/internal/build/JettonWallet.compiled.json +1 -0
- package/dist/artifacts/mainnet/ton/internal/build/NFTCollection.compiled.json +1 -0
- package/dist/artifacts/mainnet/ton/internal/build/NFTItem.compiled.json +1 -0
- package/dist/artifacts/mainnet/ton/internal/build/NFTProxy.compiled.json +1 -0
- package/dist/artifacts/mainnet/ton/internal/build/Settings.compiled.json +1 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/Constants.d.ts +56 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/Constants.js +62 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/CrossChainLayer.d.ts +164 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/CrossChainLayer.js +336 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonMinter.d.ts +94 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonMinter.js +202 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonProxy.d.ts +80 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonProxy.js +158 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonWallet.d.ts +95 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/JettonWallet.js +193 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/NFTCollection.d.ts +75 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/NFTCollection.js +151 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/NFTItem.d.ts +82 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/NFTItem.js +148 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/NFTProxy.d.ts +84 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/NFTProxy.js +157 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/Settings.d.ts +80 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/Settings.js +152 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/utils/GasUtils.d.ts +79 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/utils/GasUtils.js +291 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/utils/MerkleRoots.d.ts +7 -0
- package/dist/artifacts/mainnet/ton/internal/wrappers/utils/MerkleRoots.js +27 -0
- package/dist/artifacts/mainnet/ton/wrappers.d.ts +8 -0
- package/dist/artifacts/mainnet/ton/wrappers.js +27 -0
- package/dist/artifacts/tacTypes.d.ts +13 -0
- package/dist/artifacts/tacTypes.js +2 -0
- package/dist/artifacts/testnet/index.d.ts +9 -0
- package/dist/artifacts/testnet/index.js +52 -0
- package/dist/artifacts/testnet/tac/addresses.d.ts +4 -0
- package/dist/artifacts/testnet/tac/addresses.js +7 -0
- package/dist/artifacts/testnet/tac/artifacts.d.ts +330 -0
- package/dist/artifacts/testnet/tac/artifacts.js +26 -0
- package/dist/artifacts/testnet/tac/endpoints.d.ts +2 -0
- package/dist/artifacts/testnet/tac/endpoints.js +5 -0
- package/dist/artifacts/testnet/tac/index.d.ts +6 -0
- package/dist/artifacts/testnet/tac/index.js +43 -0
- package/dist/artifacts/testnet/tac/internal/artifacts/@openzeppelin/contracts/token/ERC721/IERC721.sol/IERC721.json +296 -0
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/core/Structs.sol/IStructsInterface.json +1087 -0
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/interfaces/ICrossChainLayer.sol/ICrossChainLayer.json +114 -0
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/interfaces/ISettings.sol/ISettings.json +194 -0
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/interfaces/ITokenUtils.sol/ITokenUtils.json +164 -0
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/interfaces/tokens/ICrossChainLayerERC20.sol/ICrossChainLayerERC20.json +278 -0
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/interfaces/tokens/ICrossChainLayerERC721.sol/ICrossChainLayerERC721.json +380 -0
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/interfaces/tokens/IERC20WithDecimals.sol/IERC20WithDecimals.json +207 -0
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/smart-account/interfaces/ISAFactory.sol/ISAFactory.json +103 -0
- package/dist/artifacts/testnet/tac/internal/artifacts/contracts/smart-account/interfaces/ITacSmartAccount.sol/ITacSmartAccount.json +181 -0
- package/dist/artifacts/testnet/tac/internal/scripts/utils/encoding.d.ts +4 -0
- package/dist/artifacts/testnet/tac/internal/scripts/utils/encoding.js +18 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721.d.ts +199 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721.js +2 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/common.d.ts +50 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/common.js +2 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/core/Structs.sol/IStructsInterface.d.ts +356 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/core/Structs.sol/IStructsInterface.js +2 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/ICrossChainLayer.d.ts +75 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/ICrossChainLayer.js +2 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/ISettings.d.ts +123 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/ISettings.js +2 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/ITokenUtils.d.ts +99 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/ITokenUtils.js +2 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/tokens/ICrossChainLayerERC20.d.ts +182 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/tokens/ICrossChainLayerERC20.js +2 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/tokens/ICrossChainLayerERC721.d.ts +244 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/tokens/ICrossChainLayerERC721.js +2 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/tokens/IERC20WithDecimals.d.ts +133 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/interfaces/tokens/IERC20WithDecimals.js +2 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/smart-account/interfaces/ISAFactory.d.ts +77 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/smart-account/interfaces/ISAFactory.js +2 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/smart-account/interfaces/ITacSmartAccount.d.ts +127 -0
- package/dist/artifacts/testnet/tac/internal/typechain-types/contracts/smart-account/interfaces/ITacSmartAccount.js +2 -0
- package/dist/artifacts/testnet/tac/multicall.d.ts +1 -0
- package/dist/artifacts/testnet/tac/multicall.js +22 -0
- package/dist/artifacts/testnet/tac/structs.d.ts +1 -0
- package/dist/artifacts/testnet/tac/structs.js +2 -0
- package/dist/artifacts/testnet/tac/utils.d.ts +1 -0
- package/dist/artifacts/testnet/tac/utils.js +5 -0
- package/dist/artifacts/testnet/tac/wrappers.d.ts +9 -0
- package/dist/artifacts/testnet/tac/wrappers.js +2 -0
- package/dist/artifacts/testnet/ton/addresses.d.ts +1 -0
- package/dist/artifacts/testnet/ton/addresses.js +4 -0
- package/dist/artifacts/testnet/ton/artifacts.d.ts +47 -0
- package/dist/artifacts/testnet/ton/artifacts.js +26 -0
- package/dist/artifacts/testnet/ton/endpoints.d.ts +3 -0
- package/dist/artifacts/testnet/ton/endpoints.js +6 -0
- package/dist/artifacts/testnet/ton/index.d.ts +3 -0
- package/dist/artifacts/testnet/ton/index.js +40 -0
- package/dist/artifacts/testnet/ton/internal/build/CrossChainLayer.compiled.json +1 -0
- package/dist/artifacts/testnet/ton/internal/build/Executor.compiled.json +1 -0
- package/dist/artifacts/testnet/ton/internal/build/JettonMinter.compiled.json +1 -0
- package/dist/artifacts/testnet/ton/internal/build/JettonProxy.compiled.json +1 -0
- package/dist/artifacts/testnet/ton/internal/build/JettonWallet.compiled.json +1 -0
- package/dist/artifacts/testnet/ton/internal/build/NFTCollection.compiled.json +1 -0
- package/dist/artifacts/testnet/ton/internal/build/NFTItem.compiled.json +1 -0
- package/dist/artifacts/testnet/ton/internal/build/NFTProxy.compiled.json +1 -0
- package/dist/artifacts/testnet/ton/internal/build/Settings.compiled.json +1 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/Constants.d.ts +56 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/Constants.js +62 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/CrossChainLayer.d.ts +164 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/CrossChainLayer.js +336 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/JettonMinter.d.ts +94 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/JettonMinter.js +202 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/JettonProxy.d.ts +80 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/JettonProxy.js +158 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/JettonWallet.d.ts +95 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/JettonWallet.js +193 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/NFTCollection.d.ts +75 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/NFTCollection.js +151 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/NFTItem.d.ts +82 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/NFTItem.js +148 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/NFTProxy.d.ts +84 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/NFTProxy.js +157 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/Settings.d.ts +80 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/Settings.js +152 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/utils/GasUtils.d.ts +79 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/utils/GasUtils.js +291 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/utils/MerkleRoots.d.ts +7 -0
- package/dist/artifacts/testnet/ton/internal/wrappers/utils/MerkleRoots.js +27 -0
- package/dist/artifacts/testnet/ton/wrappers.d.ts +8 -0
- package/dist/artifacts/testnet/ton/wrappers.js +27 -0
- package/dist/artifacts/tonTypes.d.ts +20 -0
- package/dist/artifacts/tonTypes.js +2 -0
- package/dist/{adapters → src/adapters}/contractOpener.d.ts +2 -1
- package/dist/{adapters → src/adapters}/contractOpener.js +39 -6
- package/dist/src/adapters/index.d.ts +2 -0
- package/dist/src/adapters/index.js +18 -0
- package/dist/{adapters → src/adapters}/retryableContractOpener.d.ts +6 -3
- package/dist/{adapters → src/adapters}/retryableContractOpener.js +10 -11
- package/dist/src/agnosticSdk/AbiHandler.d.ts +27 -0
- package/dist/src/agnosticSdk/AbiHandler.js +137 -0
- package/dist/src/agnosticSdk/AgnosticSdk.d.ts +201 -0
- package/dist/src/agnosticSdk/AgnosticSdk.js +201 -0
- package/dist/src/agnosticSdk/AgnosticStructs.d.ts +108 -0
- package/dist/src/agnosticSdk/AgnosticStructs.js +23 -0
- package/dist/src/agnosticSdk/DebugHelpers.d.ts +88 -0
- package/dist/src/agnosticSdk/DebugHelpers.js +274 -0
- package/dist/src/agnosticSdk/HooksHandler.d.ts +43 -0
- package/dist/src/agnosticSdk/HooksHandler.js +102 -0
- package/dist/src/agnosticSdk/ReplacementHelper.d.ts +95 -0
- package/dist/src/agnosticSdk/ReplacementHelper.js +235 -0
- package/dist/{assets → src/assets}/AssetCache.d.ts +1 -1
- package/dist/{assets → src/assets}/AssetFactory.d.ts +2 -2
- package/dist/{assets → src/assets}/AssetFactory.js +1 -1
- package/dist/{assets → src/assets}/FT.d.ts +15 -17
- package/dist/{assets → src/assets}/FT.js +103 -56
- package/dist/{assets → src/assets}/NFT.d.ts +15 -16
- package/dist/{assets → src/assets}/NFT.js +62 -34
- package/dist/{assets → src/assets}/TON.d.ts +7 -13
- package/dist/{assets → src/assets}/TON.js +22 -20
- package/dist/src/errors/index.d.ts +2 -0
- package/dist/{errors → src/errors}/index.js +8 -2
- package/dist/{errors → src/errors}/instances.d.ts +11 -1
- package/dist/src/errors/instances.js +58 -0
- package/dist/src/index.d.ts +21 -0
- package/dist/{index.js → src/index.js} +38 -18
- package/dist/src/interfaces/Asset.d.ts +78 -0
- package/dist/src/interfaces/Asset.js +2 -0
- package/dist/src/interfaces/ContractOpener.d.ts +21 -0
- package/dist/src/interfaces/ContractOpener.js +2 -0
- package/dist/src/interfaces/IConfiguration.d.ts +35 -0
- package/dist/src/interfaces/IConfiguration.js +2 -0
- package/dist/src/interfaces/IHttpClient.d.ts +16 -0
- package/dist/src/interfaces/IHttpClient.js +2 -0
- package/dist/src/interfaces/ILiteSequencerClient.d.ts +43 -0
- package/dist/src/interfaces/ILiteSequencerClient.js +2 -0
- package/dist/src/interfaces/ILiteSequencerClientFactory.d.ts +9 -0
- package/dist/src/interfaces/ILiteSequencerClientFactory.js +2 -0
- package/dist/src/interfaces/ILogger.d.ts +10 -0
- package/dist/src/interfaces/ILogger.js +2 -0
- package/dist/src/interfaces/IOperationTracker.d.ts +81 -0
- package/dist/src/interfaces/IOperationTracker.js +2 -0
- package/dist/src/interfaces/ISimulator.d.ts +18 -0
- package/dist/src/interfaces/ISimulator.js +2 -0
- package/dist/src/interfaces/ITACTransactionManager.d.ts +15 -0
- package/dist/src/interfaces/ITACTransactionManager.js +2 -0
- package/dist/src/interfaces/ITONTransactionManager.d.ts +20 -0
- package/dist/src/interfaces/ITONTransactionManager.js +2 -0
- package/dist/src/interfaces/ITacSDK.d.ts +185 -0
- package/dist/src/interfaces/ITacSDK.js +2 -0
- package/dist/src/interfaces/SenderAbstraction.d.ts +35 -0
- package/dist/src/interfaces/SenderAbstraction.js +2 -0
- package/dist/src/interfaces/WalletInstanse.d.ts +20 -0
- package/dist/src/interfaces/WalletInstanse.js +2 -0
- package/dist/src/interfaces/index.d.ts +14 -0
- package/dist/src/interfaces/index.js +30 -0
- package/dist/src/sdk/AxiosHttpClient.d.ts +12 -0
- package/dist/src/sdk/AxiosHttpClient.js +23 -0
- package/dist/{sdk → src/sdk}/Configuration.d.ts +6 -5
- package/dist/src/sdk/Configuration.js +195 -0
- package/dist/{sdk → src/sdk}/Consts.d.ts +3 -0
- package/dist/{sdk → src/sdk}/Consts.js +4 -1
- package/dist/src/sdk/LiteSequencerClient.d.ts +18 -0
- package/dist/{sdk → src/sdk}/LiteSequencerClient.js +81 -25
- package/dist/{sdk → src/sdk}/Logger.d.ts +5 -5
- package/dist/{sdk → src/sdk}/Logger.js +12 -4
- package/dist/{sdk → src/sdk}/OperationTracker.d.ts +5 -13
- package/dist/{sdk → src/sdk}/OperationTracker.js +112 -16
- package/dist/src/sdk/Simulator.d.ts +11 -0
- package/dist/src/sdk/Simulator.js +70 -0
- package/dist/{sdk → src/sdk}/StartTracking.d.ts +1 -1
- package/dist/src/sdk/TACTransactionManager.d.ts +10 -0
- package/dist/src/sdk/TACTransactionManager.js +101 -0
- package/dist/src/sdk/TONTransactionManager.d.ts +17 -0
- package/dist/src/sdk/TONTransactionManager.js +220 -0
- package/dist/src/sdk/TacSdk.d.ts +44 -0
- package/dist/src/sdk/TacSdk.js +181 -0
- package/dist/{sdk → src/sdk}/TxFinalizer.d.ts +3 -2
- package/dist/{sdk → src/sdk}/TxFinalizer.js +13 -8
- package/dist/{sdk → src/sdk}/Utils.d.ts +14 -7
- package/dist/{sdk → src/sdk}/Utils.js +127 -34
- package/dist/{sdk → src/sdk}/Validator.d.ts +2 -2
- package/dist/{sdk → src/sdk}/Validator.js +6 -6
- package/dist/{sender → src/sender}/BatchSender.d.ts +1 -2
- package/dist/{sender → src/sender}/RawSender.d.ts +3 -3
- package/dist/{sender → src/sender}/SenderFactory.d.ts +1 -1
- package/dist/{sender → src/sender}/SenderFactory.js +1 -1
- package/dist/{sender → src/sender}/TonConnectSender.d.ts +2 -2
- package/dist/{sender → src/sender}/TonConnectSender.js +3 -3
- package/dist/{sender → src/sender}/index.d.ts +1 -1
- package/dist/{sender → src/sender}/index.js +1 -1
- package/dist/{structs → src/structs}/InternalStruct.d.ts +30 -6
- package/dist/{structs → src/structs}/Struct.d.ts +109 -62
- package/dist/{structs → src/structs}/Struct.js +7 -1
- package/dist/{wrappers → src/wrappers}/ContentUtils.js +0 -1
- package/dist/{wrappers → src/wrappers}/HighloadWalletV3.d.ts +2 -2
- package/package.json +57 -6
- package/dist/errors/index.d.ts +0 -2
- package/dist/errors/instances.js +0 -47
- package/dist/index.d.ts +0 -19
- package/dist/sdk/Configuration.js +0 -90
- package/dist/sdk/LiteSequencerClient.d.ts +0 -13
- package/dist/sdk/Simulator.d.ts +0 -23
- package/dist/sdk/Simulator.js +0 -169
- package/dist/sdk/TacSdk.d.ts +0 -24
- package/dist/sdk/TacSdk.js +0 -101
- package/dist/sdk/TransactionManager.d.ts +0 -22
- package/dist/sdk/TransactionManager.js +0 -269
- package/dist/sender/SenderAbstraction.d.ts +0 -22
- package/dist/sender/SenderAbstraction.js +0 -5
- package/dist/structs/Services.d.ts +0 -41
- package/dist/wrappers/JettonMaster.d.ts +0 -24
- package/dist/wrappers/JettonMaster.js +0 -53
- package/dist/wrappers/JettonWallet.js +0 -124
- package/dist/wrappers/Settings.d.ts +0 -10
- package/dist/wrappers/Settings.js +0 -38
- /package/dist/{structs/Services.js → artifacts/dev/tac/internal/typechain-types/@openzeppelin/contracts/token/ERC721/IERC721.js} +0 -0
- /package/dist/{assets → src/assets}/AssetCache.js +0 -0
- /package/dist/{assets → src/assets}/index.d.ts +0 -0
- /package/dist/{assets → src/assets}/index.js +0 -0
- /package/dist/{errors → src/errors}/errors.d.ts +0 -0
- /package/dist/{errors → src/errors}/errors.js +0 -0
- /package/dist/{sdk → src/sdk}/StartTracking.js +0 -0
- /package/dist/{sender → src/sender}/BatchSender.js +0 -0
- /package/dist/{sender → src/sender}/RawSender.js +0 -0
- /package/dist/{structs → src/structs}/InternalStruct.js +0 -0
- /package/dist/{wrappers → src/wrappers}/ContentUtils.d.ts +0 -0
- /package/dist/{wrappers → src/wrappers}/HighloadQueryId.d.ts +0 -0
- /package/dist/{wrappers → src/wrappers}/HighloadQueryId.js +0 -0
- /package/dist/{wrappers → src/wrappers}/HighloadWalletV3.js +0 -0
|
@@ -1,24 +1,36 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OperationTracker = exports.DefaultLiteSequencerClientFactory = void 0;
|
|
4
|
-
const artifacts_1 = require("
|
|
4
|
+
const artifacts_1 = require("../../artifacts");
|
|
5
5
|
const errors_1 = require("../errors");
|
|
6
|
+
const instances_1 = require("../errors/instances");
|
|
6
7
|
const Struct_1 = require("../structs/Struct");
|
|
7
8
|
const LiteSequencerClient_1 = require("./LiteSequencerClient");
|
|
8
9
|
const Logger_1 = require("./Logger");
|
|
9
10
|
const Utils_1 = require("./Utils");
|
|
11
|
+
const Validator_1 = require("./Validator");
|
|
10
12
|
class DefaultLiteSequencerClientFactory {
|
|
11
13
|
createClients(endpoints) {
|
|
12
|
-
return endpoints.map(endpoint => new LiteSequencerClient_1.LiteSequencerClient(endpoint));
|
|
14
|
+
return endpoints.map((endpoint) => new LiteSequencerClient_1.LiteSequencerClient(endpoint));
|
|
13
15
|
}
|
|
14
16
|
}
|
|
15
17
|
exports.DefaultLiteSequencerClientFactory = DefaultLiteSequencerClientFactory;
|
|
16
18
|
class OperationTracker {
|
|
17
19
|
constructor(network, customLiteSequencerEndpoints, logger = new Logger_1.NoopLogger(), clientFactory = new DefaultLiteSequencerClientFactory()) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
let endpoints;
|
|
21
|
+
if (network === Struct_1.Network.DEV) {
|
|
22
|
+
if (!customLiteSequencerEndpoints || customLiteSequencerEndpoints.length === 0) {
|
|
23
|
+
throw new Error('For DEV network, custom lite sequencer endpoints must be provided');
|
|
24
|
+
}
|
|
25
|
+
endpoints = customLiteSequencerEndpoints;
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
const artifacts = network === Struct_1.Network.MAINNET ? artifacts_1.mainnet : artifacts_1.testnet;
|
|
29
|
+
endpoints =
|
|
30
|
+
customLiteSequencerEndpoints && customLiteSequencerEndpoints.length !== 0
|
|
31
|
+
? customLiteSequencerEndpoints
|
|
32
|
+
: artifacts.PUBLIC_LITE_SEQUENCER_ENDPOINTS;
|
|
33
|
+
}
|
|
22
34
|
this.clients = clientFactory.createClients(endpoints);
|
|
23
35
|
this.logger = logger;
|
|
24
36
|
}
|
|
@@ -40,7 +52,9 @@ class OperationTracker {
|
|
|
40
52
|
this.logger.error('All endpoints failed to get operation id by transactionHash');
|
|
41
53
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
42
54
|
};
|
|
43
|
-
return waitOptions
|
|
55
|
+
return waitOptions
|
|
56
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting operation ID by transaction hash')
|
|
57
|
+
: await requestFn();
|
|
44
58
|
}
|
|
45
59
|
async getOperationType(operationId, waitOptions) {
|
|
46
60
|
this.logger.debug(`Getting operation type for ${(0, Utils_1.formatObjectForLogging)(operationId)}`);
|
|
@@ -60,7 +74,9 @@ class OperationTracker {
|
|
|
60
74
|
this.logger.error('All endpoints failed to get operation type');
|
|
61
75
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
62
76
|
};
|
|
63
|
-
return waitOptions
|
|
77
|
+
return waitOptions
|
|
78
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting operation type')
|
|
79
|
+
: await requestFn();
|
|
64
80
|
}
|
|
65
81
|
async getOperationId(transactionLinker, waitOptions) {
|
|
66
82
|
this.logger.debug(`Getting operation ID for transaction linker: ${(0, Utils_1.formatObjectForLogging)(transactionLinker)}`);
|
|
@@ -80,7 +96,9 @@ class OperationTracker {
|
|
|
80
96
|
this.logger.error('All endpoints failed to get operation id');
|
|
81
97
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
82
98
|
};
|
|
83
|
-
return waitOptions
|
|
99
|
+
return waitOptions
|
|
100
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting operation ID by transaction linker')
|
|
101
|
+
: await requestFn();
|
|
84
102
|
}
|
|
85
103
|
async getOperationIdsByShardsKeys(shardsKeys, caller, waitOptions, chunkSize = 100) {
|
|
86
104
|
this.logger.debug(`Getting operation IDs for shards keys: ${(0, Utils_1.formatObjectForLogging)(shardsKeys)}`);
|
|
@@ -101,7 +119,9 @@ class OperationTracker {
|
|
|
101
119
|
this.logger.error('All endpoints failed to get operation ids by shards keys');
|
|
102
120
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
103
121
|
};
|
|
104
|
-
return waitOptions
|
|
122
|
+
return waitOptions
|
|
123
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting operation IDs by shards keys')
|
|
124
|
+
: await requestFn();
|
|
105
125
|
}
|
|
106
126
|
async getStageProfiling(operationId, waitOptions) {
|
|
107
127
|
this.logger.debug(`Getting stage profiling for operation ${operationId}`);
|
|
@@ -126,7 +146,9 @@ class OperationTracker {
|
|
|
126
146
|
this.logger.error('All endpoints failed to get stage profiling');
|
|
127
147
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
128
148
|
};
|
|
129
|
-
return waitOptions
|
|
149
|
+
return waitOptions
|
|
150
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting stage profiling')
|
|
151
|
+
: await requestFn();
|
|
130
152
|
}
|
|
131
153
|
async getStageProfilings(operationIds, waitOptions, chunkSize = 100) {
|
|
132
154
|
this.logger.debug(`Getting stage profilings for operations: ${operationIds.join(', ')}`);
|
|
@@ -147,7 +169,9 @@ class OperationTracker {
|
|
|
147
169
|
this.logger.error('All endpoints failed to get stage profilings');
|
|
148
170
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
149
171
|
};
|
|
150
|
-
return waitOptions
|
|
172
|
+
return waitOptions
|
|
173
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting stage profilings')
|
|
174
|
+
: await requestFn();
|
|
151
175
|
}
|
|
152
176
|
async getOperationStatuses(operationIds, waitOptions, chunkSize = 100) {
|
|
153
177
|
this.logger.debug(`Getting operation statuses for operations: ${(0, Utils_1.formatObjectForLogging)(operationIds)}`);
|
|
@@ -168,7 +192,9 @@ class OperationTracker {
|
|
|
168
192
|
this.logger.error('All endpoints failed to get operation statuses');
|
|
169
193
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
170
194
|
};
|
|
171
|
-
return waitOptions
|
|
195
|
+
return waitOptions
|
|
196
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting operation statuses')
|
|
197
|
+
: await requestFn();
|
|
172
198
|
}
|
|
173
199
|
async getOperationStatus(operationId, waitOptions) {
|
|
174
200
|
this.logger.debug(`Getting operation status for ${(0, Utils_1.formatObjectForLogging)(operationId)}`);
|
|
@@ -193,7 +219,9 @@ class OperationTracker {
|
|
|
193
219
|
this.logger.error('All endpoints failed to get operation status');
|
|
194
220
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
195
221
|
};
|
|
196
|
-
return waitOptions
|
|
222
|
+
return waitOptions
|
|
223
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting operation status')
|
|
224
|
+
: await requestFn();
|
|
197
225
|
}
|
|
198
226
|
async getSimplifiedOperationStatus(transactionLinker) {
|
|
199
227
|
this.logger.debug(`Getting simplified operation status for transaction linker: ${(0, Utils_1.formatObjectForLogging)(transactionLinker)}`);
|
|
@@ -202,9 +230,7 @@ class OperationTracker {
|
|
|
202
230
|
this.logger.warn('Operation ID not found');
|
|
203
231
|
return Struct_1.SimplifiedStatuses.OPERATION_ID_NOT_FOUND;
|
|
204
232
|
}
|
|
205
|
-
this.logger.debug(`Operation ID: ${operationId}`);
|
|
206
233
|
const operationType = await this.getOperationType(operationId);
|
|
207
|
-
this.logger.debug(`Operation type: ${operationType}`);
|
|
208
234
|
if (operationType == Struct_1.OperationType.PENDING || operationType == Struct_1.OperationType.UNKNOWN) {
|
|
209
235
|
return Struct_1.SimplifiedStatuses.PENDING;
|
|
210
236
|
}
|
|
@@ -213,5 +239,75 @@ class OperationTracker {
|
|
|
213
239
|
}
|
|
214
240
|
return Struct_1.SimplifiedStatuses.SUCCESSFUL;
|
|
215
241
|
}
|
|
242
|
+
async convertCurrency(params, waitOptions) {
|
|
243
|
+
if (params.value <= 0n) {
|
|
244
|
+
throw instances_1.convertCurrencyNegativeOrZeroValueError;
|
|
245
|
+
}
|
|
246
|
+
this.logger.debug(`Converting currency: ${(0, Utils_1.formatObjectForLogging)(params)}`);
|
|
247
|
+
const requestFn = async () => {
|
|
248
|
+
let lastError;
|
|
249
|
+
for (const client of this.clients) {
|
|
250
|
+
try {
|
|
251
|
+
const result = await client.convertCurrency(params);
|
|
252
|
+
this.logger.debug(`Conversion result retrieved successfully`);
|
|
253
|
+
return result;
|
|
254
|
+
}
|
|
255
|
+
catch (error) {
|
|
256
|
+
this.logger.warn(`Failed to convert currency using one of the endpoints`);
|
|
257
|
+
lastError = error;
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
this.logger.error('All endpoints failed to convert currency');
|
|
261
|
+
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
262
|
+
};
|
|
263
|
+
return waitOptions
|
|
264
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Converting currency')
|
|
265
|
+
: await requestFn();
|
|
266
|
+
}
|
|
267
|
+
async simulateTACMessage(params, waitOptions) {
|
|
268
|
+
Validator_1.Validator.validateTACSimulationParams(params);
|
|
269
|
+
this.logger.debug(`Simulating TAC message: ${(0, Utils_1.formatObjectForLogging)(params)}`);
|
|
270
|
+
const requestFn = async () => {
|
|
271
|
+
let lastError;
|
|
272
|
+
for (const client of this.clients) {
|
|
273
|
+
try {
|
|
274
|
+
const result = await client.simulateTACMessage(params);
|
|
275
|
+
this.logger.debug(`Simulation result retrieved successfully`);
|
|
276
|
+
return result;
|
|
277
|
+
}
|
|
278
|
+
catch (error) {
|
|
279
|
+
this.logger.warn(`Failed to simulate TAC message using one of the endpoints`);
|
|
280
|
+
lastError = error;
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
this.logger.error('All endpoints failed to simulate TAC message');
|
|
284
|
+
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
285
|
+
};
|
|
286
|
+
return waitOptions
|
|
287
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Simulating TAC message')
|
|
288
|
+
: await requestFn();
|
|
289
|
+
}
|
|
290
|
+
async getTVMExecutorFee(params, waitOptions) {
|
|
291
|
+
this.logger.debug(`get TVM executor fee: ${(0, Utils_1.formatObjectForLogging)(params)}`);
|
|
292
|
+
const requestFn = async () => {
|
|
293
|
+
let lastError;
|
|
294
|
+
for (const client of this.clients) {
|
|
295
|
+
try {
|
|
296
|
+
const result = await client.getTVMExecutorFee(params);
|
|
297
|
+
this.logger.debug(`Suggested TVM executor fee retrieved successfully`);
|
|
298
|
+
return result;
|
|
299
|
+
}
|
|
300
|
+
catch (error) {
|
|
301
|
+
this.logger.warn(`Failed to get TVM executor fee using one of the endpoints`);
|
|
302
|
+
lastError = error;
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
this.logger.error('All endpoints failed to get TVM executor fee');
|
|
306
|
+
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
307
|
+
};
|
|
308
|
+
return waitOptions
|
|
309
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting TVM executor fee')
|
|
310
|
+
: await requestFn();
|
|
311
|
+
}
|
|
216
312
|
}
|
|
217
313
|
exports.OperationTracker = OperationTracker;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { IConfiguration, ILogger, IOperationTracker, ISimulator } from '../interfaces';
|
|
2
|
+
import type { SenderAbstraction } from '../sender';
|
|
3
|
+
import { CrosschainTx, ExecutionFeeEstimationResult } from '../structs/Struct';
|
|
4
|
+
export declare class Simulator implements ISimulator {
|
|
5
|
+
private readonly config;
|
|
6
|
+
private readonly operationTracker;
|
|
7
|
+
private readonly logger;
|
|
8
|
+
constructor(config: IConfiguration, operationTracker: IOperationTracker, logger?: ILogger);
|
|
9
|
+
getSimulationsInfo(sender: SenderAbstraction, txs: CrosschainTx[]): Promise<ExecutionFeeEstimationResult[]>;
|
|
10
|
+
getSimulationInfo(sender: SenderAbstraction, tx: CrosschainTx): Promise<ExecutionFeeEstimationResult>;
|
|
11
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Simulator = void 0;
|
|
4
|
+
const ton_1 = require("@ton/ton");
|
|
5
|
+
const Logger_1 = require("./Logger");
|
|
6
|
+
const Utils_1 = require("./Utils");
|
|
7
|
+
const Validator_1 = require("./Validator");
|
|
8
|
+
class Simulator {
|
|
9
|
+
constructor(config, operationTracker, logger = new Logger_1.NoopLogger()) {
|
|
10
|
+
this.config = config;
|
|
11
|
+
this.operationTracker = operationTracker;
|
|
12
|
+
this.logger = logger;
|
|
13
|
+
}
|
|
14
|
+
async getSimulationsInfo(sender, txs) {
|
|
15
|
+
this.logger.debug(`Simulating ${txs.length} TAC messages`);
|
|
16
|
+
const results = [];
|
|
17
|
+
for (const tx of txs) {
|
|
18
|
+
const result = await this.getSimulationInfo(sender, tx);
|
|
19
|
+
results.push(result);
|
|
20
|
+
}
|
|
21
|
+
return results;
|
|
22
|
+
}
|
|
23
|
+
async getSimulationInfo(sender, tx) {
|
|
24
|
+
this.logger.debug('Getting simulation info');
|
|
25
|
+
const { evmProxyMsg, assets = [], options = {} } = tx;
|
|
26
|
+
const { evmValidExecutors = this.config.TACParams.trustedTACExecutors, tvmValidExecutors = this.config.TACParams.trustedTONExecutors, calculateRollbackFee = true, allowSimulationError = false, } = options;
|
|
27
|
+
Validator_1.Validator.validateEVMAddress(evmProxyMsg.evmTargetAddress);
|
|
28
|
+
Validator_1.Validator.validateEVMAddresses(evmValidExecutors);
|
|
29
|
+
Validator_1.Validator.validateTVMAddresses(tvmValidExecutors);
|
|
30
|
+
const aggregatedData = (0, Utils_1.aggregateTokens)(assets);
|
|
31
|
+
const shardCount = aggregatedData.jettons.length || 1;
|
|
32
|
+
const transactionLinker = (0, Utils_1.generateTransactionLinker)(sender.getSenderAddress(), shardCount);
|
|
33
|
+
const tacSimulationParams = {
|
|
34
|
+
tacCallParams: {
|
|
35
|
+
arguments: evmProxyMsg.encodedParameters ?? '0x',
|
|
36
|
+
methodName: (0, Utils_1.formatSolidityMethodName)(evmProxyMsg.methodName),
|
|
37
|
+
target: evmProxyMsg.evmTargetAddress,
|
|
38
|
+
},
|
|
39
|
+
evmValidExecutors,
|
|
40
|
+
tvmValidExecutors,
|
|
41
|
+
extraData: '0x',
|
|
42
|
+
shardsKey: transactionLinker.shardsKey,
|
|
43
|
+
tonAssets: (0, Utils_1.mapAssetsToTonAssets)(assets),
|
|
44
|
+
tonCaller: transactionLinker.caller,
|
|
45
|
+
calculateRollbackFee,
|
|
46
|
+
};
|
|
47
|
+
const simulation = await this.operationTracker.simulateTACMessage(tacSimulationParams);
|
|
48
|
+
this.logger.debug(`TAC simulation ${simulation.simulationStatus ? 'success' : 'failed'}`);
|
|
49
|
+
const isRoundTrip = options.isRoundTrip ?? (assets.length !== 0 || simulation.outMessages?.length !== 0);
|
|
50
|
+
const CrossChainLayerC = this.config.artifacts.ton.wrappers.CrossChainLayer;
|
|
51
|
+
const crossChainLayer = this.config.TONParams.contractOpener.open(CrossChainLayerC.createFromAddress(ton_1.Address.parse(this.config.TONParams.crossChainLayerAddress)));
|
|
52
|
+
const fullStateCCL = await crossChainLayer.getFullData();
|
|
53
|
+
const feeParams = {
|
|
54
|
+
isRoundTrip,
|
|
55
|
+
gasLimit: simulation.simulationStatus ? simulation.estimatedGas : 0n,
|
|
56
|
+
protocolFee: BigInt((0, ton_1.toNano)(fullStateCCL.tacProtocolFee)) +
|
|
57
|
+
BigInt(isRoundTrip) * BigInt((0, ton_1.toNano)(fullStateCCL.tonProtocolFee)),
|
|
58
|
+
evmExecutorFee: BigInt(simulation.suggestedTacExecutionFee),
|
|
59
|
+
tvmExecutorFee: BigInt(simulation.suggestedTonExecutionFee) * BigInt(isRoundTrip),
|
|
60
|
+
};
|
|
61
|
+
if (!simulation.simulationStatus && !allowSimulationError) {
|
|
62
|
+
throw simulation;
|
|
63
|
+
}
|
|
64
|
+
if (allowSimulationError && !simulation.simulationStatus) {
|
|
65
|
+
this.logger.info('Simulation failed but allowSimulationError is true, returning partial fee params');
|
|
66
|
+
}
|
|
67
|
+
return { feeParams, simulation };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.Simulator = Simulator;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
+
import { ILogger } from '../interfaces';
|
|
1
2
|
import { TxFinalizerConfig } from '../structs/InternalStruct';
|
|
2
|
-
import { ILogger } from '../structs/Services';
|
|
3
3
|
import { ExecutionStages, Network, TransactionLinker } from '../structs/Struct';
|
|
4
4
|
export declare function startTracking(transactionLinker: TransactionLinker, network: Network, options?: {
|
|
5
5
|
customLiteSequencerEndpoints?: string[];
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Wallet } from 'ethers';
|
|
2
|
+
import { Asset, IConfiguration, ILogger, IOperationTracker, ITACTransactionManager } from '../interfaces';
|
|
3
|
+
export declare class TACTransactionManager implements ITACTransactionManager {
|
|
4
|
+
private readonly config;
|
|
5
|
+
private readonly operationTracker;
|
|
6
|
+
private readonly logger;
|
|
7
|
+
constructor(config: IConfiguration, operationTracker: IOperationTracker, logger?: ILogger);
|
|
8
|
+
private approveAsset;
|
|
9
|
+
bridgeTokensToTON(signer: Wallet, value: bigint, tonTarget: string, assets?: Asset[], tvmExecutorFee?: bigint, tvmValidExecutors?: string[]): Promise<string>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TACTransactionManager = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
const assets_1 = require("../assets");
|
|
6
|
+
const Struct_1 = require("../structs/Struct");
|
|
7
|
+
const Consts_1 = require("./Consts");
|
|
8
|
+
const Logger_1 = require("./Logger");
|
|
9
|
+
const Utils_1 = require("./Utils");
|
|
10
|
+
const Validator_1 = require("./Validator");
|
|
11
|
+
class TACTransactionManager {
|
|
12
|
+
constructor(config, operationTracker, logger = new Logger_1.NoopLogger()) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.operationTracker = operationTracker;
|
|
15
|
+
this.logger = logger;
|
|
16
|
+
}
|
|
17
|
+
async approveAsset(asset, signer, spenderAddress) {
|
|
18
|
+
const evmAddress = await asset.getEVMAddress();
|
|
19
|
+
if (asset.type === Struct_1.AssetType.FT) {
|
|
20
|
+
this.logger.debug(`Approving FT ${evmAddress} for ${spenderAddress}`);
|
|
21
|
+
const erc20Abi = this.config.artifacts.tac.compilationArtifacts.IERC20WithDecimals.abi;
|
|
22
|
+
const contract = new ethers_1.ethers.Contract(evmAddress, erc20Abi, this.config.TACParams.provider);
|
|
23
|
+
const tx = await contract.connect(signer).approve(spenderAddress, asset.rawAmount);
|
|
24
|
+
await tx.wait();
|
|
25
|
+
}
|
|
26
|
+
else if (asset.type === Struct_1.AssetType.NFT) {
|
|
27
|
+
this.logger.debug(`Approving NFT ${evmAddress} for ${spenderAddress}`);
|
|
28
|
+
const erc721Abi = this.config.artifacts.tac.compilationArtifacts.IERC721.abi;
|
|
29
|
+
const contract = new ethers_1.ethers.Contract(evmAddress, erc721Abi, this.config.TACParams.provider);
|
|
30
|
+
const tx = await contract.connect(signer).approve(spenderAddress, asset.addresses.index);
|
|
31
|
+
await tx.wait();
|
|
32
|
+
}
|
|
33
|
+
this.logger.debug(`Approved ${evmAddress} for ${spenderAddress}`);
|
|
34
|
+
}
|
|
35
|
+
async bridgeTokensToTON(signer, value, tonTarget, assets = [], tvmExecutorFee, tvmValidExecutors) {
|
|
36
|
+
this.logger.debug('Bridging tokens to TON');
|
|
37
|
+
Validator_1.Validator.validateTVMAddress(tonTarget);
|
|
38
|
+
// Add native TAC asset if value > 0
|
|
39
|
+
const tonAssets = [...assets];
|
|
40
|
+
if (value > 0n) {
|
|
41
|
+
tonAssets.push((await assets_1.AssetFactory.from(this.config, {
|
|
42
|
+
address: await this.config.nativeTACAddress(),
|
|
43
|
+
tokenType: Struct_1.AssetType.FT,
|
|
44
|
+
})).withRawAmount(value));
|
|
45
|
+
}
|
|
46
|
+
// Calculate executor fee if not provided
|
|
47
|
+
if (!tvmExecutorFee) {
|
|
48
|
+
const feeParams = {
|
|
49
|
+
tonAssets: (0, Utils_1.mapAssetsToTonAssets)(tonAssets),
|
|
50
|
+
feeSymbol: Consts_1.TAC_SYMBOL,
|
|
51
|
+
tvmValidExecutors: tvmValidExecutors ?? [],
|
|
52
|
+
};
|
|
53
|
+
const suggestedFee = await this.operationTracker.getTVMExecutorFee(feeParams);
|
|
54
|
+
this.logger.debug(`Suggested TON executor fee: ${(0, Utils_1.formatObjectForLogging)(suggestedFee)}`);
|
|
55
|
+
tvmExecutorFee = BigInt(suggestedFee.inTAC);
|
|
56
|
+
}
|
|
57
|
+
// Approve all assets
|
|
58
|
+
const crossChainLayerAddress = await this.config.TACParams.crossChainLayer.getAddress();
|
|
59
|
+
for (const asset of assets) {
|
|
60
|
+
await this.approveAsset(asset, signer, crossChainLayerAddress);
|
|
61
|
+
}
|
|
62
|
+
const protocolFee = await this.config.TACParams.crossChainLayer.getProtocolFee();
|
|
63
|
+
const shardsKey = BigInt(Math.round(Math.random() * 1e18));
|
|
64
|
+
this.logger.debug(`Shards key: ${shardsKey}, Protocol fee: ${protocolFee}`);
|
|
65
|
+
// Prepare bridge data
|
|
66
|
+
const [toBridge, toBridgeNFT] = await Promise.all([
|
|
67
|
+
Promise.all(assets
|
|
68
|
+
.filter((a) => a.type === Struct_1.AssetType.FT)
|
|
69
|
+
.map(async (a) => ({
|
|
70
|
+
evmAddress: await a.getEVMAddress(),
|
|
71
|
+
amount: a.rawAmount,
|
|
72
|
+
}))),
|
|
73
|
+
Promise.all(assets
|
|
74
|
+
.filter((a) => a.type === Struct_1.AssetType.NFT)
|
|
75
|
+
.map(async (a) => ({
|
|
76
|
+
evmAddress: await a.getEVMAddress(),
|
|
77
|
+
amount: 1n,
|
|
78
|
+
tokenId: a.addresses.index,
|
|
79
|
+
}))),
|
|
80
|
+
]);
|
|
81
|
+
const outMessage = {
|
|
82
|
+
shardsKey,
|
|
83
|
+
tvmTarget: tonTarget,
|
|
84
|
+
tvmPayload: '',
|
|
85
|
+
tvmProtocolFee: protocolFee,
|
|
86
|
+
tvmExecutorFee,
|
|
87
|
+
tvmValidExecutors: this.config.getTrustedTONExecutors,
|
|
88
|
+
toBridge,
|
|
89
|
+
toBridgeNFT,
|
|
90
|
+
};
|
|
91
|
+
const totalValue = value + BigInt(outMessage.tvmProtocolFee) + BigInt(outMessage.tvmExecutorFee);
|
|
92
|
+
this.logger.debug(`Total value: ${totalValue}`);
|
|
93
|
+
const tx = await this.config.TACParams.crossChainLayer
|
|
94
|
+
.connect(signer)
|
|
95
|
+
.sendMessage(1n, this.config.artifacts.tac.utils.encodeOutMessageV1(outMessage), { value: totalValue });
|
|
96
|
+
await tx.wait();
|
|
97
|
+
this.logger.debug(`Transaction hash: ${tx.hash}`);
|
|
98
|
+
return tx.hash;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
exports.TACTransactionManager = TACTransactionManager;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IConfiguration, ILogger, IOperationTracker, ISimulator, ITONTransactionManager } from '../interfaces';
|
|
2
|
+
import type { SenderAbstraction } from '../sender';
|
|
3
|
+
import { BatchCrossChainTx, CrossChainTransactionOptions, CrossChainTransactionsOptions, CrosschainTx, EvmProxyMsg, FeeParams, TransactionLinkerWithOperationId } from '../structs/Struct';
|
|
4
|
+
export declare class TONTransactionManager implements ITONTransactionManager {
|
|
5
|
+
private readonly config;
|
|
6
|
+
private readonly simulator;
|
|
7
|
+
private readonly operationTracker;
|
|
8
|
+
private readonly logger;
|
|
9
|
+
constructor(config: IConfiguration, simulator: ISimulator, operationTracker: IOperationTracker, logger?: ILogger);
|
|
10
|
+
protected buildFeeParams(options: CrossChainTransactionOptions, evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, tx: CrosschainTx): Promise<FeeParams>;
|
|
11
|
+
private prepareCrossChainTransaction;
|
|
12
|
+
private generateCrossChainMessages;
|
|
13
|
+
sendCrossChainTransaction(evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, tx: CrosschainTx): Promise<TransactionLinkerWithOperationId>;
|
|
14
|
+
sendCrossChainTransactions(sender: SenderAbstraction, txs: BatchCrossChainTx[], options?: CrossChainTransactionsOptions): Promise<TransactionLinkerWithOperationId[]>;
|
|
15
|
+
private prepareBatchTransactions;
|
|
16
|
+
private waitForOperationIds;
|
|
17
|
+
}
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TONTransactionManager = void 0;
|
|
4
|
+
const assets_1 = require("../assets");
|
|
5
|
+
const errors_1 = require("../errors");
|
|
6
|
+
const instances_1 = require("../errors/instances");
|
|
7
|
+
const Consts_1 = require("./Consts");
|
|
8
|
+
const Logger_1 = require("./Logger");
|
|
9
|
+
const Utils_1 = require("./Utils");
|
|
10
|
+
const Validator_1 = require("./Validator");
|
|
11
|
+
class TONTransactionManager {
|
|
12
|
+
constructor(config, simulator, operationTracker, logger = new Logger_1.NoopLogger()) {
|
|
13
|
+
this.config = config;
|
|
14
|
+
this.simulator = simulator;
|
|
15
|
+
this.operationTracker = operationTracker;
|
|
16
|
+
this.logger = logger;
|
|
17
|
+
}
|
|
18
|
+
async buildFeeParams(options, evmProxyMsg, sender, tx) {
|
|
19
|
+
const { withoutSimulation, protocolFee, evmExecutorFee, tvmExecutorFee, isRoundTrip } = options;
|
|
20
|
+
if (withoutSimulation) {
|
|
21
|
+
if (protocolFee === undefined || evmExecutorFee === undefined) {
|
|
22
|
+
throw errors_1.missingFeeParamsError;
|
|
23
|
+
}
|
|
24
|
+
if (isRoundTrip && tvmExecutorFee === undefined) {
|
|
25
|
+
throw errors_1.missingTvmExecutorFeeError;
|
|
26
|
+
}
|
|
27
|
+
if (!evmProxyMsg.gasLimit) {
|
|
28
|
+
throw errors_1.missingGasLimitError;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
protocolFee,
|
|
32
|
+
evmExecutorFee,
|
|
33
|
+
tvmExecutorFee: tvmExecutorFee || 0n,
|
|
34
|
+
gasLimit: evmProxyMsg.gasLimit,
|
|
35
|
+
isRoundTrip: isRoundTrip || false,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
const simulationResult = await this.simulator.getSimulationInfo(sender, tx);
|
|
39
|
+
if (!evmProxyMsg.gasLimit)
|
|
40
|
+
evmProxyMsg.gasLimit = simulationResult.feeParams.gasLimit;
|
|
41
|
+
return {
|
|
42
|
+
protocolFee: protocolFee ?? simulationResult.feeParams.protocolFee,
|
|
43
|
+
evmExecutorFee: evmExecutorFee ?? simulationResult.feeParams.evmExecutorFee,
|
|
44
|
+
tvmExecutorFee: simulationResult.feeParams.isRoundTrip && tvmExecutorFee !== undefined
|
|
45
|
+
? tvmExecutorFee
|
|
46
|
+
: simulationResult.feeParams.tvmExecutorFee,
|
|
47
|
+
gasLimit: evmProxyMsg.gasLimit ?? simulationResult.feeParams.gasLimit,
|
|
48
|
+
isRoundTrip: isRoundTrip ?? simulationResult.feeParams.isRoundTrip,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
async prepareCrossChainTransaction(evmProxyMsg, sender, assets, options, skipAssetsBalanceValidation = false) {
|
|
52
|
+
this.logger.debug('Preparing cross-chain transaction');
|
|
53
|
+
const caller = sender.getSenderAddress();
|
|
54
|
+
const { allowSimulationError = false, isRoundTrip = undefined, calculateRollbackFee = true, validateAssetsBalance = true, } = options || {};
|
|
55
|
+
const { evmValidExecutors = [], tvmValidExecutors = [] } = options || {};
|
|
56
|
+
Validator_1.Validator.validateEVMAddress(evmProxyMsg.evmTargetAddress);
|
|
57
|
+
const aggregatedData = (0, Utils_1.aggregateTokens)(assets);
|
|
58
|
+
Validator_1.Validator.validateEVMAddresses(evmValidExecutors);
|
|
59
|
+
Validator_1.Validator.validateTVMAddresses(tvmValidExecutors);
|
|
60
|
+
const shouldValidateAssets = validateAssetsBalance && !skipAssetsBalanceValidation;
|
|
61
|
+
if (shouldValidateAssets) {
|
|
62
|
+
await Promise.all([
|
|
63
|
+
...aggregatedData.jettons.map((jetton) => jetton.checkCanBeTransferredBy(caller)),
|
|
64
|
+
...aggregatedData.nfts.map((nft) => nft.checkCanBeTransferredBy(caller)),
|
|
65
|
+
aggregatedData.ton?.checkCanBeTransferredBy(caller),
|
|
66
|
+
].filter(Boolean));
|
|
67
|
+
}
|
|
68
|
+
const tokensLength = aggregatedData.jettons.length + aggregatedData.nfts.length;
|
|
69
|
+
const transactionLinker = (0, Utils_1.generateTransactionLinker)(caller, tokensLength || 1);
|
|
70
|
+
this.logger.debug(`Generated transaction linker: ${(0, Utils_1.formatObjectForLogging)(transactionLinker)}`);
|
|
71
|
+
const tacExecutors = evmValidExecutors.length ? evmValidExecutors : this.config.getTrustedTACExecutors;
|
|
72
|
+
const tonExecutors = tvmValidExecutors.length ? tvmValidExecutors : this.config.getTrustedTONExecutors;
|
|
73
|
+
const tx = {
|
|
74
|
+
evmProxyMsg,
|
|
75
|
+
assets: assets ?? [],
|
|
76
|
+
options: {
|
|
77
|
+
allowSimulationError,
|
|
78
|
+
isRoundTrip,
|
|
79
|
+
evmValidExecutors: tacExecutors,
|
|
80
|
+
tvmValidExecutors: tonExecutors,
|
|
81
|
+
calculateRollbackFee,
|
|
82
|
+
},
|
|
83
|
+
};
|
|
84
|
+
const feeParams = await this.buildFeeParams(options || {}, evmProxyMsg, sender, tx);
|
|
85
|
+
this.logger.debug(`Resulting fee params: ${(0, Utils_1.formatObjectForLogging)(feeParams)}`);
|
|
86
|
+
const validExecutors = {
|
|
87
|
+
tac: tacExecutors,
|
|
88
|
+
ton: tonExecutors,
|
|
89
|
+
};
|
|
90
|
+
const evmData = (0, Utils_1.buildEvmDataCell)(transactionLinker, evmProxyMsg, validExecutors);
|
|
91
|
+
const messages = await this.generateCrossChainMessages(caller, evmData, aggregatedData, feeParams);
|
|
92
|
+
return {
|
|
93
|
+
transaction: {
|
|
94
|
+
validUntil: Date.now() + Consts_1.FIFTEEN_MINUTES,
|
|
95
|
+
messages,
|
|
96
|
+
network: this.config.network,
|
|
97
|
+
},
|
|
98
|
+
transactionLinker,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
async generateCrossChainMessages(caller, evmData, aggregatedData, feeParams) {
|
|
102
|
+
this.logger.debug('Generating cross-chain messages');
|
|
103
|
+
const { jettons, nfts, ton = assets_1.TON.create(this.config) } = aggregatedData;
|
|
104
|
+
const totalAssets = [...jettons, ...nfts];
|
|
105
|
+
let crossChainTonAmount = ton.rawAmount;
|
|
106
|
+
let feeTonAmount = feeParams.protocolFee + feeParams.evmExecutorFee + feeParams.tvmExecutorFee;
|
|
107
|
+
this.logger.debug(`Crosschain ton amount: ${crossChainTonAmount}, Fee ton amount: ${feeTonAmount}`);
|
|
108
|
+
if (!totalAssets.length) {
|
|
109
|
+
return [
|
|
110
|
+
{
|
|
111
|
+
address: this.config.TONParams.crossChainLayerAddress,
|
|
112
|
+
value: crossChainTonAmount + feeTonAmount + Consts_1.TRANSACTION_TON_AMOUNT,
|
|
113
|
+
payload: await ton.generatePayload({ excessReceiver: caller, evmData, feeParams }),
|
|
114
|
+
},
|
|
115
|
+
];
|
|
116
|
+
}
|
|
117
|
+
const messages = [];
|
|
118
|
+
let currentFeeParams = feeParams;
|
|
119
|
+
for (const asset of totalAssets) {
|
|
120
|
+
const payload = await asset.generatePayload({
|
|
121
|
+
excessReceiver: caller,
|
|
122
|
+
evmData,
|
|
123
|
+
crossChainTonAmount,
|
|
124
|
+
forwardFeeTonAmount: feeTonAmount,
|
|
125
|
+
feeParams: currentFeeParams,
|
|
126
|
+
});
|
|
127
|
+
const address = asset instanceof assets_1.FT ? await asset.getUserWalletAddress(caller) : asset.address;
|
|
128
|
+
messages.push({
|
|
129
|
+
address,
|
|
130
|
+
value: crossChainTonAmount + feeTonAmount + Consts_1.TRANSACTION_TON_AMOUNT,
|
|
131
|
+
payload,
|
|
132
|
+
});
|
|
133
|
+
crossChainTonAmount = 0n;
|
|
134
|
+
feeTonAmount = 0n;
|
|
135
|
+
currentFeeParams = undefined;
|
|
136
|
+
}
|
|
137
|
+
this.logger.debug('Cross-chain messages generated successfully');
|
|
138
|
+
return messages;
|
|
139
|
+
}
|
|
140
|
+
async sendCrossChainTransaction(evmProxyMsg, sender, tx) {
|
|
141
|
+
const { transaction, transactionLinker } = await this.prepareCrossChainTransaction(evmProxyMsg, sender, tx.assets, tx.options);
|
|
142
|
+
await assets_1.TON.checkBalance(sender, this.config, [transaction]);
|
|
143
|
+
this.logger.debug(`Sending transaction: ${(0, Utils_1.formatObjectForLogging)(transactionLinker)}`);
|
|
144
|
+
const sendTransactionResult = await sender.sendShardTransaction(transaction, this.config.network, this.config.TONParams.contractOpener);
|
|
145
|
+
if (!sendTransactionResult.success || sendTransactionResult.error) {
|
|
146
|
+
throw (0, instances_1.sendCrossChainTransactionFailedError)(sendTransactionResult.error?.message ?? 'Transaction failed to send');
|
|
147
|
+
}
|
|
148
|
+
const shouldWaitForOperationId = tx.options?.waitOperationId ?? true;
|
|
149
|
+
if (!shouldWaitForOperationId) {
|
|
150
|
+
return { sendTransactionResult, ...transactionLinker };
|
|
151
|
+
}
|
|
152
|
+
const waitOptions = tx.options?.waitOptions ?? {};
|
|
153
|
+
waitOptions.successCheck = waitOptions.successCheck ?? ((id) => !!id);
|
|
154
|
+
waitOptions.logger = waitOptions.logger ?? this.logger;
|
|
155
|
+
const operationId = await this.operationTracker
|
|
156
|
+
.getOperationId(transactionLinker, waitOptions)
|
|
157
|
+
.catch((error) => {
|
|
158
|
+
this.logger.error(`Error while waiting for operation ID: ${error}`);
|
|
159
|
+
return undefined;
|
|
160
|
+
});
|
|
161
|
+
return { sendTransactionResult, operationId, ...transactionLinker };
|
|
162
|
+
}
|
|
163
|
+
async sendCrossChainTransactions(sender, txs, options) {
|
|
164
|
+
const caller = sender.getSenderAddress();
|
|
165
|
+
this.logger.debug(`Preparing ${txs.length} cross-chain transactions for ${caller}`);
|
|
166
|
+
const { transactions, transactionLinkers } = await this.prepareBatchTransactions(txs, sender);
|
|
167
|
+
await assets_1.TON.checkBalance(sender, this.config, transactions);
|
|
168
|
+
this.logger.debug(`Sending transactions: ${(0, Utils_1.formatObjectForLogging)(transactionLinkers)}`);
|
|
169
|
+
const results = await sender.sendShardTransactions(transactions, this.config.network, this.config.TONParams.contractOpener);
|
|
170
|
+
for (const result of results) {
|
|
171
|
+
if (!result.success || result.error) {
|
|
172
|
+
throw (0, instances_1.sendCrossChainTransactionFailedError)(result.error?.message ?? 'Transaction failed to send');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
const shouldWaitForOperationIds = options?.waitOperationIds ?? true;
|
|
176
|
+
return shouldWaitForOperationIds
|
|
177
|
+
? await this.waitForOperationIds(transactionLinkers, caller, options?.waitOptions ?? {})
|
|
178
|
+
: transactionLinkers;
|
|
179
|
+
}
|
|
180
|
+
async prepareBatchTransactions(txs, sender) {
|
|
181
|
+
const caller = sender.getSenderAddress();
|
|
182
|
+
const txsRequiringValidation = txs.filter((tx) => tx.options?.validateAssetsBalance ?? true);
|
|
183
|
+
if (txsRequiringValidation.length) {
|
|
184
|
+
// Aggregate only assets from txs that require validation and validate once per unique asset
|
|
185
|
+
const assetsToValidate = txsRequiringValidation.flatMap((tx) => tx.assets ?? []);
|
|
186
|
+
const aggregatedData = (0, Utils_1.aggregateTokens)(assetsToValidate);
|
|
187
|
+
await Promise.all([
|
|
188
|
+
...aggregatedData.jettons.map((jetton) => jetton.checkCanBeTransferredBy(caller)),
|
|
189
|
+
...aggregatedData.nfts.map((nft) => nft.checkCanBeTransferredBy(caller)),
|
|
190
|
+
aggregatedData.ton?.checkCanBeTransferredBy(caller),
|
|
191
|
+
].filter(Boolean));
|
|
192
|
+
}
|
|
193
|
+
const results = await Promise.all(txs.map(({ evmProxyMsg, assets, options }) => this.prepareCrossChainTransaction(evmProxyMsg, sender, assets, options, true)));
|
|
194
|
+
return {
|
|
195
|
+
transactions: results.map((r) => r.transaction),
|
|
196
|
+
transactionLinkers: results.map((r) => r.transactionLinker),
|
|
197
|
+
};
|
|
198
|
+
}
|
|
199
|
+
async waitForOperationIds(transactionLinkers, caller, waitOptions) {
|
|
200
|
+
this.logger.debug(`Waiting for operation IDs`);
|
|
201
|
+
try {
|
|
202
|
+
waitOptions.successCheck =
|
|
203
|
+
waitOptions.successCheck ??
|
|
204
|
+
((operationIds) => Object.keys(operationIds).length == transactionLinkers.length &&
|
|
205
|
+
Object.values(operationIds).every((ids) => ids.operationIds.length > 0));
|
|
206
|
+
waitOptions.logger = waitOptions.logger ?? this.logger;
|
|
207
|
+
const operationIds = await this.operationTracker.getOperationIdsByShardsKeys(transactionLinkers.map((linker) => linker.shardsKey), caller, waitOptions);
|
|
208
|
+
this.logger.debug(`Operation IDs: ${(0, Utils_1.formatObjectForLogging)(operationIds)}`);
|
|
209
|
+
return transactionLinkers.map((linker) => ({
|
|
210
|
+
...linker,
|
|
211
|
+
operationId: operationIds[linker.shardsKey].operationIds.at(0),
|
|
212
|
+
}));
|
|
213
|
+
}
|
|
214
|
+
catch (error) {
|
|
215
|
+
this.logger.error(`Error while waiting for operation IDs: ${error}`);
|
|
216
|
+
return transactionLinkers;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
exports.TONTransactionManager = TONTransactionManager;
|