@tonappchain/sdk 0.7.0-rc24-test-9 → 0.7.0-rc24-test-10
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/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 +23 -0
- package/dist/src/agnosticSdk/AbiHandler.js +105 -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 +233 -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 +7 -2
- package/dist/{errors → src/errors}/instances.d.ts +8 -1
- package/dist/{errors → src/errors}/instances.js +22 -16
- 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 +21 -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 +189 -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 +70 -22
- package/dist/{sdk → src/sdk}/Logger.d.ts +1 -1
- package/dist/{sdk → src/sdk}/OperationTracker.d.ts +5 -13
- package/dist/{sdk → src/sdk}/OperationTracker.js +108 -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 +99 -0
- package/dist/src/sdk/TONTransactionManager.d.ts +17 -0
- package/dist/src/sdk/TONTransactionManager.js +210 -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 +8 -8
- package/dist/{sdk → src/sdk}/Utils.d.ts +12 -5
- package/dist/{sdk → src/sdk}/Utils.js +103 -12
- 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}/TonConnectSender.d.ts +2 -2
- package/dist/{sender → src/sender}/TonConnectSender.js +2 -2
- 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 +25 -7
- package/dist/{structs → src/structs}/Struct.d.ts +91 -60
- 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 +1 -1
- package/dist/errors/index.d.ts +0 -2
- package/dist/index.d.ts +0 -19
- package/dist/sdk/Configuration.js +0 -92
- 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 -25
- package/dist/sdk/TacSdk.js +0 -104
- 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}/Logger.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/{sender → src/sender}/SenderFactory.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,35 @@
|
|
|
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
6
|
const Struct_1 = require("../structs/Struct");
|
|
7
7
|
const LiteSequencerClient_1 = require("./LiteSequencerClient");
|
|
8
8
|
const Logger_1 = require("./Logger");
|
|
9
9
|
const Utils_1 = require("./Utils");
|
|
10
|
+
const Validator_1 = require("./Validator");
|
|
10
11
|
class DefaultLiteSequencerClientFactory {
|
|
11
12
|
createClients(endpoints) {
|
|
12
|
-
return endpoints.map(endpoint => new LiteSequencerClient_1.LiteSequencerClient(endpoint));
|
|
13
|
+
return endpoints.map((endpoint) => new LiteSequencerClient_1.LiteSequencerClient(endpoint));
|
|
13
14
|
}
|
|
14
15
|
}
|
|
15
16
|
exports.DefaultLiteSequencerClientFactory = DefaultLiteSequencerClientFactory;
|
|
16
17
|
class OperationTracker {
|
|
17
18
|
constructor(network, customLiteSequencerEndpoints, logger = new Logger_1.NoopLogger(), clientFactory = new DefaultLiteSequencerClientFactory()) {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
19
|
+
let endpoints;
|
|
20
|
+
if (network === Struct_1.Network.DEV) {
|
|
21
|
+
if (!customLiteSequencerEndpoints || customLiteSequencerEndpoints.length === 0) {
|
|
22
|
+
throw new Error('For DEV network, custom lite sequencer endpoints must be provided');
|
|
23
|
+
}
|
|
24
|
+
endpoints = customLiteSequencerEndpoints;
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
const artifacts = network === Struct_1.Network.MAINNET ? artifacts_1.mainnet : artifacts_1.testnet;
|
|
28
|
+
endpoints =
|
|
29
|
+
customLiteSequencerEndpoints && customLiteSequencerEndpoints.length !== 0
|
|
30
|
+
? customLiteSequencerEndpoints
|
|
31
|
+
: artifacts.PUBLIC_LITE_SEQUENCER_ENDPOINTS;
|
|
32
|
+
}
|
|
22
33
|
this.clients = clientFactory.createClients(endpoints);
|
|
23
34
|
this.logger = logger;
|
|
24
35
|
}
|
|
@@ -40,7 +51,9 @@ class OperationTracker {
|
|
|
40
51
|
this.logger.error('All endpoints failed to get operation id by transactionHash');
|
|
41
52
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
42
53
|
};
|
|
43
|
-
return waitOptions
|
|
54
|
+
return waitOptions
|
|
55
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting operation ID by transaction hash')
|
|
56
|
+
: await requestFn();
|
|
44
57
|
}
|
|
45
58
|
async getOperationType(operationId, waitOptions) {
|
|
46
59
|
this.logger.debug(`Getting operation type for ${(0, Utils_1.formatObjectForLogging)(operationId)}`);
|
|
@@ -60,7 +73,9 @@ class OperationTracker {
|
|
|
60
73
|
this.logger.error('All endpoints failed to get operation type');
|
|
61
74
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
62
75
|
};
|
|
63
|
-
return waitOptions
|
|
76
|
+
return waitOptions
|
|
77
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting operation type')
|
|
78
|
+
: await requestFn();
|
|
64
79
|
}
|
|
65
80
|
async getOperationId(transactionLinker, waitOptions) {
|
|
66
81
|
this.logger.debug(`Getting operation ID for transaction linker: ${(0, Utils_1.formatObjectForLogging)(transactionLinker)}`);
|
|
@@ -80,7 +95,9 @@ class OperationTracker {
|
|
|
80
95
|
this.logger.error('All endpoints failed to get operation id');
|
|
81
96
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
82
97
|
};
|
|
83
|
-
return waitOptions
|
|
98
|
+
return waitOptions
|
|
99
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting operation ID by transaction linker')
|
|
100
|
+
: await requestFn();
|
|
84
101
|
}
|
|
85
102
|
async getOperationIdsByShardsKeys(shardsKeys, caller, waitOptions, chunkSize = 100) {
|
|
86
103
|
this.logger.debug(`Getting operation IDs for shards keys: ${(0, Utils_1.formatObjectForLogging)(shardsKeys)}`);
|
|
@@ -101,7 +118,9 @@ class OperationTracker {
|
|
|
101
118
|
this.logger.error('All endpoints failed to get operation ids by shards keys');
|
|
102
119
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
103
120
|
};
|
|
104
|
-
return waitOptions
|
|
121
|
+
return waitOptions
|
|
122
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting operation IDs by shards keys')
|
|
123
|
+
: await requestFn();
|
|
105
124
|
}
|
|
106
125
|
async getStageProfiling(operationId, waitOptions) {
|
|
107
126
|
this.logger.debug(`Getting stage profiling for operation ${operationId}`);
|
|
@@ -126,7 +145,9 @@ class OperationTracker {
|
|
|
126
145
|
this.logger.error('All endpoints failed to get stage profiling');
|
|
127
146
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
128
147
|
};
|
|
129
|
-
return waitOptions
|
|
148
|
+
return waitOptions
|
|
149
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting stage profiling')
|
|
150
|
+
: await requestFn();
|
|
130
151
|
}
|
|
131
152
|
async getStageProfilings(operationIds, waitOptions, chunkSize = 100) {
|
|
132
153
|
this.logger.debug(`Getting stage profilings for operations: ${operationIds.join(', ')}`);
|
|
@@ -147,7 +168,9 @@ class OperationTracker {
|
|
|
147
168
|
this.logger.error('All endpoints failed to get stage profilings');
|
|
148
169
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
149
170
|
};
|
|
150
|
-
return waitOptions
|
|
171
|
+
return waitOptions
|
|
172
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting stage profilings')
|
|
173
|
+
: await requestFn();
|
|
151
174
|
}
|
|
152
175
|
async getOperationStatuses(operationIds, waitOptions, chunkSize = 100) {
|
|
153
176
|
this.logger.debug(`Getting operation statuses for operations: ${(0, Utils_1.formatObjectForLogging)(operationIds)}`);
|
|
@@ -168,7 +191,9 @@ class OperationTracker {
|
|
|
168
191
|
this.logger.error('All endpoints failed to get operation statuses');
|
|
169
192
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
170
193
|
};
|
|
171
|
-
return waitOptions
|
|
194
|
+
return waitOptions
|
|
195
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting operation statuses')
|
|
196
|
+
: await requestFn();
|
|
172
197
|
}
|
|
173
198
|
async getOperationStatus(operationId, waitOptions) {
|
|
174
199
|
this.logger.debug(`Getting operation status for ${(0, Utils_1.formatObjectForLogging)(operationId)}`);
|
|
@@ -193,7 +218,9 @@ class OperationTracker {
|
|
|
193
218
|
this.logger.error('All endpoints failed to get operation status');
|
|
194
219
|
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
195
220
|
};
|
|
196
|
-
return waitOptions
|
|
221
|
+
return waitOptions
|
|
222
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting operation status')
|
|
223
|
+
: await requestFn();
|
|
197
224
|
}
|
|
198
225
|
async getSimplifiedOperationStatus(transactionLinker) {
|
|
199
226
|
this.logger.debug(`Getting simplified operation status for transaction linker: ${(0, Utils_1.formatObjectForLogging)(transactionLinker)}`);
|
|
@@ -202,9 +229,7 @@ class OperationTracker {
|
|
|
202
229
|
this.logger.warn('Operation ID not found');
|
|
203
230
|
return Struct_1.SimplifiedStatuses.OPERATION_ID_NOT_FOUND;
|
|
204
231
|
}
|
|
205
|
-
this.logger.debug(`Operation ID: ${operationId}`);
|
|
206
232
|
const operationType = await this.getOperationType(operationId);
|
|
207
|
-
this.logger.debug(`Operation type: ${operationType}`);
|
|
208
233
|
if (operationType == Struct_1.OperationType.PENDING || operationType == Struct_1.OperationType.UNKNOWN) {
|
|
209
234
|
return Struct_1.SimplifiedStatuses.PENDING;
|
|
210
235
|
}
|
|
@@ -213,5 +238,72 @@ class OperationTracker {
|
|
|
213
238
|
}
|
|
214
239
|
return Struct_1.SimplifiedStatuses.SUCCESSFUL;
|
|
215
240
|
}
|
|
241
|
+
async convertCurrency(params, waitOptions) {
|
|
242
|
+
this.logger.debug(`Converting currency: ${(0, Utils_1.formatObjectForLogging)(params)}`);
|
|
243
|
+
const requestFn = async () => {
|
|
244
|
+
let lastError;
|
|
245
|
+
for (const client of this.clients) {
|
|
246
|
+
try {
|
|
247
|
+
const result = await client.convertCurrency(params);
|
|
248
|
+
this.logger.debug(`Conversion result retrieved successfully`);
|
|
249
|
+
return result;
|
|
250
|
+
}
|
|
251
|
+
catch (error) {
|
|
252
|
+
this.logger.warn(`Failed to convert currency using one of the endpoints`);
|
|
253
|
+
lastError = error;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
this.logger.error('All endpoints failed to convert currency');
|
|
257
|
+
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
258
|
+
};
|
|
259
|
+
return waitOptions
|
|
260
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Converting currency')
|
|
261
|
+
: await requestFn();
|
|
262
|
+
}
|
|
263
|
+
async simulateTACMessage(params, waitOptions) {
|
|
264
|
+
Validator_1.Validator.validateTACSimulationParams(params);
|
|
265
|
+
this.logger.debug(`Simulating TAC message: ${(0, Utils_1.formatObjectForLogging)(params)}`);
|
|
266
|
+
const requestFn = async () => {
|
|
267
|
+
let lastError;
|
|
268
|
+
for (const client of this.clients) {
|
|
269
|
+
try {
|
|
270
|
+
const result = await client.simulateTACMessage(params);
|
|
271
|
+
this.logger.debug(`Simulation result retrieved successfully`);
|
|
272
|
+
return result;
|
|
273
|
+
}
|
|
274
|
+
catch (error) {
|
|
275
|
+
this.logger.warn(`Failed to simulate TAC message using one of the endpoints`);
|
|
276
|
+
lastError = error;
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
this.logger.error('All endpoints failed to simulate TAC message');
|
|
280
|
+
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
281
|
+
};
|
|
282
|
+
return waitOptions
|
|
283
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Simulating TAC message')
|
|
284
|
+
: await requestFn();
|
|
285
|
+
}
|
|
286
|
+
async getTVMExecutorFee(params, waitOptions) {
|
|
287
|
+
this.logger.debug(`get TVM executor fee: ${(0, Utils_1.formatObjectForLogging)(params)}`);
|
|
288
|
+
const requestFn = async () => {
|
|
289
|
+
let lastError;
|
|
290
|
+
for (const client of this.clients) {
|
|
291
|
+
try {
|
|
292
|
+
const result = await client.getTVMExecutorFee(params);
|
|
293
|
+
this.logger.debug(`Suggested TVM executor fee retrieved successfully`);
|
|
294
|
+
return result;
|
|
295
|
+
}
|
|
296
|
+
catch (error) {
|
|
297
|
+
this.logger.warn(`Failed to get TVM executor fee using one of the endpoints`);
|
|
298
|
+
lastError = error;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
this.logger.error('All endpoints failed to get TVM executor fee');
|
|
302
|
+
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
303
|
+
};
|
|
304
|
+
return waitOptions
|
|
305
|
+
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Getting TVM executor fee')
|
|
306
|
+
: await requestFn();
|
|
307
|
+
}
|
|
216
308
|
}
|
|
217
309
|
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 = await (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;
|
|
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,99 @@
|
|
|
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
|
+
await Promise.all(assets.map((asset) => this.approveAsset(asset, signer, crossChainLayerAddress)));
|
|
60
|
+
const protocolFee = await this.config.TACParams.crossChainLayer.getProtocolFee();
|
|
61
|
+
const shardsKey = BigInt(Math.round(Math.random() * 1e18));
|
|
62
|
+
this.logger.debug(`Shards key: ${shardsKey}, Protocol fee: ${protocolFee}`);
|
|
63
|
+
// Prepare bridge data
|
|
64
|
+
const [toBridge, toBridgeNFT] = await Promise.all([
|
|
65
|
+
Promise.all(assets
|
|
66
|
+
.filter((a) => a.type === Struct_1.AssetType.FT)
|
|
67
|
+
.map(async (a) => ({
|
|
68
|
+
evmAddress: await a.getEVMAddress(),
|
|
69
|
+
amount: a.rawAmount,
|
|
70
|
+
}))),
|
|
71
|
+
Promise.all(assets
|
|
72
|
+
.filter((a) => a.type === Struct_1.AssetType.NFT)
|
|
73
|
+
.map(async (a) => ({
|
|
74
|
+
evmAddress: await a.getEVMAddress(),
|
|
75
|
+
amount: 1n,
|
|
76
|
+
tokenId: a.addresses.index,
|
|
77
|
+
}))),
|
|
78
|
+
]);
|
|
79
|
+
const outMessage = {
|
|
80
|
+
shardsKey,
|
|
81
|
+
tvmTarget: tonTarget,
|
|
82
|
+
tvmPayload: '',
|
|
83
|
+
tvmProtocolFee: protocolFee,
|
|
84
|
+
tvmExecutorFee,
|
|
85
|
+
tvmValidExecutors: this.config.getTrustedTONExecutors,
|
|
86
|
+
toBridge,
|
|
87
|
+
toBridgeNFT,
|
|
88
|
+
};
|
|
89
|
+
const totalValue = value + BigInt(outMessage.tvmProtocolFee) + BigInt(outMessage.tvmExecutorFee);
|
|
90
|
+
this.logger.debug(`Total value: ${totalValue}`);
|
|
91
|
+
const tx = await this.config.TACParams.crossChainLayer
|
|
92
|
+
.connect(signer)
|
|
93
|
+
.sendMessage(1n, this.config.artifacts.tac.utils.encodeOutMessageV1(outMessage), { value: totalValue });
|
|
94
|
+
await tx.wait();
|
|
95
|
+
this.logger.debug(`Transaction hash: ${tx.hash}`);
|
|
96
|
+
return tx.hash;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
exports.TACTransactionManager = TACTransactionManager;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { IConfiguration, ILogger, IOperationTracker, ISimulator, ITONTransactionManager } from '../interfaces';
|
|
2
|
+
import type { SenderAbstraction } from '../sender';
|
|
3
|
+
import { CrosschainTx, EvmProxyMsg, OperationIdsByShardsKey, TransactionLinkerWithOperationId, WaitOptions } 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
|
+
private buildFeeParams;
|
|
11
|
+
private prepareCrossChainTransaction;
|
|
12
|
+
private generateCrossChainMessages;
|
|
13
|
+
sendCrossChainTransaction(evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, tx: CrosschainTx, waitOptions?: WaitOptions<string>): Promise<TransactionLinkerWithOperationId>;
|
|
14
|
+
sendCrossChainTransactions(sender: SenderAbstraction, txs: CrosschainTx[], waitOptions?: WaitOptions<OperationIdsByShardsKey>): Promise<TransactionLinkerWithOperationId[]>;
|
|
15
|
+
private prepareBatchTransactions;
|
|
16
|
+
private waitForOperationIds;
|
|
17
|
+
}
|
|
@@ -0,0 +1,210 @@
|
|
|
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 Consts_1 = require("./Consts");
|
|
7
|
+
const Logger_1 = require("./Logger");
|
|
8
|
+
const Utils_1 = require("./Utils");
|
|
9
|
+
const Validator_1 = require("./Validator");
|
|
10
|
+
class TONTransactionManager {
|
|
11
|
+
constructor(config, simulator, operationTracker, logger = new Logger_1.NoopLogger()) {
|
|
12
|
+
this.config = config;
|
|
13
|
+
this.simulator = simulator;
|
|
14
|
+
this.operationTracker = operationTracker;
|
|
15
|
+
this.logger = logger;
|
|
16
|
+
}
|
|
17
|
+
async buildFeeParams(options, evmProxyMsg, sender, tx) {
|
|
18
|
+
const { withoutSimulation, protocolFee, evmExecutorFee, tvmExecutorFee, isRoundTrip } = options;
|
|
19
|
+
if (withoutSimulation) {
|
|
20
|
+
if (protocolFee === undefined || evmExecutorFee === undefined) {
|
|
21
|
+
throw errors_1.missingFeeParamsError;
|
|
22
|
+
}
|
|
23
|
+
if (isRoundTrip && tvmExecutorFee === undefined) {
|
|
24
|
+
throw errors_1.missingTvmExecutorFeeError;
|
|
25
|
+
}
|
|
26
|
+
if (!evmProxyMsg.gasLimit) {
|
|
27
|
+
throw errors_1.missingGasLimitError;
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
protocolFee,
|
|
31
|
+
evmExecutorFee,
|
|
32
|
+
tvmExecutorFee: tvmExecutorFee || 0n,
|
|
33
|
+
gasLimit: evmProxyMsg.gasLimit,
|
|
34
|
+
isRoundTrip: isRoundTrip || false,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const simulationResult = await this.simulator.getSimulationInfo(sender, tx);
|
|
38
|
+
if (!evmProxyMsg.gasLimit)
|
|
39
|
+
evmProxyMsg.gasLimit = simulationResult.feeParams.gasLimit;
|
|
40
|
+
return {
|
|
41
|
+
protocolFee: protocolFee ?? simulationResult.feeParams.protocolFee,
|
|
42
|
+
evmExecutorFee: evmExecutorFee ?? simulationResult.feeParams.evmExecutorFee,
|
|
43
|
+
tvmExecutorFee: simulationResult.feeParams.isRoundTrip && tvmExecutorFee !== undefined
|
|
44
|
+
? tvmExecutorFee
|
|
45
|
+
: simulationResult.feeParams.tvmExecutorFee,
|
|
46
|
+
gasLimit: evmProxyMsg.gasLimit ?? simulationResult.feeParams.gasLimit,
|
|
47
|
+
isRoundTrip: isRoundTrip ?? simulationResult.feeParams.isRoundTrip,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
async prepareCrossChainTransaction(evmProxyMsg, sender, assets, options, skipAssetsBalanceValidation = false) {
|
|
51
|
+
this.logger.debug('Preparing cross-chain transaction');
|
|
52
|
+
const caller = sender.getSenderAddress();
|
|
53
|
+
const { allowSimulationError = false, isRoundTrip = undefined, calculateRollbackFee = true, validateAssetsBalance = true, } = options || {};
|
|
54
|
+
const { evmValidExecutors = [], tvmValidExecutors = [] } = options || {};
|
|
55
|
+
Validator_1.Validator.validateEVMAddress(evmProxyMsg.evmTargetAddress);
|
|
56
|
+
const aggregatedData = await (0, Utils_1.aggregateTokens)(assets);
|
|
57
|
+
Validator_1.Validator.validateEVMAddresses(evmValidExecutors);
|
|
58
|
+
Validator_1.Validator.validateTVMAddresses(tvmValidExecutors);
|
|
59
|
+
const shouldValidateAssets = validateAssetsBalance && !skipAssetsBalanceValidation;
|
|
60
|
+
if (shouldValidateAssets) {
|
|
61
|
+
await Promise.all([
|
|
62
|
+
...aggregatedData.jettons.map((jetton) => jetton.checkCanBeTransferredBy(caller)),
|
|
63
|
+
...aggregatedData.nfts.map((nft) => nft.checkCanBeTransferredBy(caller)),
|
|
64
|
+
aggregatedData.ton?.checkCanBeTransferredBy(caller),
|
|
65
|
+
].filter(Boolean));
|
|
66
|
+
}
|
|
67
|
+
const tokensLength = aggregatedData.jettons.length + aggregatedData.nfts.length;
|
|
68
|
+
const transactionLinker = (0, Utils_1.generateTransactionLinker)(caller, tokensLength || 1);
|
|
69
|
+
this.logger.debug(`Generated transaction linker: ${(0, Utils_1.formatObjectForLogging)(transactionLinker)}`);
|
|
70
|
+
const tacExecutors = evmValidExecutors.length ? evmValidExecutors : this.config.getTrustedTACExecutors;
|
|
71
|
+
const tonExecutors = tvmValidExecutors.length ? tvmValidExecutors : this.config.getTrustedTONExecutors;
|
|
72
|
+
const tx = {
|
|
73
|
+
evmProxyMsg,
|
|
74
|
+
assets: assets ?? [],
|
|
75
|
+
options: {
|
|
76
|
+
allowSimulationError,
|
|
77
|
+
isRoundTrip,
|
|
78
|
+
evmValidExecutors: tacExecutors,
|
|
79
|
+
tvmValidExecutors: tonExecutors,
|
|
80
|
+
calculateRollbackFee,
|
|
81
|
+
},
|
|
82
|
+
};
|
|
83
|
+
const feeParams = await this.buildFeeParams(options || {}, evmProxyMsg, sender, tx);
|
|
84
|
+
this.logger.debug(`Resulting fee params: ${(0, Utils_1.formatObjectForLogging)(feeParams)}`);
|
|
85
|
+
const validExecutors = {
|
|
86
|
+
tac: tacExecutors,
|
|
87
|
+
ton: tonExecutors,
|
|
88
|
+
};
|
|
89
|
+
const evmData = (0, Utils_1.buildEvmDataCell)(transactionLinker, evmProxyMsg, validExecutors);
|
|
90
|
+
const messages = await this.generateCrossChainMessages(caller, evmData, aggregatedData, feeParams);
|
|
91
|
+
return {
|
|
92
|
+
transaction: {
|
|
93
|
+
validUntil: Date.now() + Consts_1.FIFTEEN_MINUTES,
|
|
94
|
+
messages,
|
|
95
|
+
network: this.config.network,
|
|
96
|
+
},
|
|
97
|
+
transactionLinker,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
async generateCrossChainMessages(caller, evmData, aggregatedData, feeParams) {
|
|
101
|
+
this.logger.debug('Generating cross-chain messages');
|
|
102
|
+
const { jettons, nfts, ton = assets_1.TON.create(this.config) } = aggregatedData;
|
|
103
|
+
const totalAssets = [...jettons, ...nfts];
|
|
104
|
+
let crossChainTonAmount = ton.rawAmount;
|
|
105
|
+
let feeTonAmount = feeParams.protocolFee + feeParams.evmExecutorFee + feeParams.tvmExecutorFee;
|
|
106
|
+
this.logger.debug(`Crosschain ton amount: ${crossChainTonAmount}, Fee ton amount: ${feeTonAmount}`);
|
|
107
|
+
if (!totalAssets.length) {
|
|
108
|
+
return [
|
|
109
|
+
{
|
|
110
|
+
address: this.config.TONParams.crossChainLayerAddress,
|
|
111
|
+
value: crossChainTonAmount + feeTonAmount + Consts_1.TRANSACTION_TON_AMOUNT,
|
|
112
|
+
payload: await ton.generatePayload({ excessReceiver: caller, evmData, feeParams }),
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
const messages = [];
|
|
117
|
+
let currentFeeParams = feeParams;
|
|
118
|
+
for (const asset of totalAssets) {
|
|
119
|
+
const payload = await asset.generatePayload({
|
|
120
|
+
excessReceiver: caller,
|
|
121
|
+
evmData,
|
|
122
|
+
crossChainTonAmount,
|
|
123
|
+
forwardFeeTonAmount: feeTonAmount,
|
|
124
|
+
feeParams: currentFeeParams,
|
|
125
|
+
});
|
|
126
|
+
const address = asset instanceof assets_1.FT ? await asset.getUserWalletAddress(caller) : asset.address;
|
|
127
|
+
messages.push({
|
|
128
|
+
address,
|
|
129
|
+
value: crossChainTonAmount + feeTonAmount + Consts_1.TRANSACTION_TON_AMOUNT,
|
|
130
|
+
payload,
|
|
131
|
+
});
|
|
132
|
+
crossChainTonAmount = 0n;
|
|
133
|
+
feeTonAmount = 0n;
|
|
134
|
+
currentFeeParams = undefined;
|
|
135
|
+
}
|
|
136
|
+
this.logger.debug('Cross-chain messages generated successfully');
|
|
137
|
+
return messages;
|
|
138
|
+
}
|
|
139
|
+
async sendCrossChainTransaction(evmProxyMsg, sender, tx, waitOptions) {
|
|
140
|
+
const { transaction, transactionLinker } = await this.prepareCrossChainTransaction(evmProxyMsg, sender, tx.assets, tx.options);
|
|
141
|
+
await assets_1.TON.checkBalance(sender, this.config, [transaction]);
|
|
142
|
+
this.logger.debug(`Sending transaction: ${(0, Utils_1.formatObjectForLogging)(transactionLinker)}`);
|
|
143
|
+
const sendTransactionResult = await sender.sendShardTransaction(transaction, this.config.network, this.config.TONParams.contractOpener);
|
|
144
|
+
if (!waitOptions) {
|
|
145
|
+
return { sendTransactionResult, ...transactionLinker };
|
|
146
|
+
}
|
|
147
|
+
const operationId = await this.operationTracker
|
|
148
|
+
.getOperationId(transactionLinker, {
|
|
149
|
+
...waitOptions,
|
|
150
|
+
successCheck: (id) => !!id,
|
|
151
|
+
logger: this.logger,
|
|
152
|
+
})
|
|
153
|
+
.catch((error) => {
|
|
154
|
+
this.logger.error(`Error while waiting for operation ID: ${error}`);
|
|
155
|
+
return undefined;
|
|
156
|
+
});
|
|
157
|
+
return { sendTransactionResult, operationId, ...transactionLinker };
|
|
158
|
+
}
|
|
159
|
+
async sendCrossChainTransactions(sender, txs, waitOptions) {
|
|
160
|
+
const caller = sender.getSenderAddress();
|
|
161
|
+
this.logger.debug(`Preparing ${txs.length} cross-chain transactions for ${caller}`);
|
|
162
|
+
const { transactions, transactionLinkers } = await this.prepareBatchTransactions(txs, sender);
|
|
163
|
+
await assets_1.TON.checkBalance(sender, this.config, transactions);
|
|
164
|
+
this.logger.debug(`Sending transactions: ${(0, Utils_1.formatObjectForLogging)(transactionLinkers)}`);
|
|
165
|
+
await sender.sendShardTransactions(transactions, this.config.network, this.config.TONParams.contractOpener);
|
|
166
|
+
return waitOptions
|
|
167
|
+
? await this.waitForOperationIds(transactionLinkers, caller, waitOptions)
|
|
168
|
+
: transactionLinkers;
|
|
169
|
+
}
|
|
170
|
+
async prepareBatchTransactions(txs, sender) {
|
|
171
|
+
const caller = sender.getSenderAddress();
|
|
172
|
+
const txsRequiringValidation = txs.filter((tx) => tx.options?.validateAssetsBalance ?? true);
|
|
173
|
+
if (txsRequiringValidation.length) {
|
|
174
|
+
// Aggregate only assets from txs that require validation and validate once per unique asset
|
|
175
|
+
const assetsToValidate = txsRequiringValidation.flatMap((tx) => tx.assets ?? []);
|
|
176
|
+
const aggregatedData = await (0, Utils_1.aggregateTokens)(assetsToValidate);
|
|
177
|
+
await Promise.all([
|
|
178
|
+
...aggregatedData.jettons.map((jetton) => jetton.checkCanBeTransferredBy(caller)),
|
|
179
|
+
...aggregatedData.nfts.map((nft) => nft.checkCanBeTransferredBy(caller)),
|
|
180
|
+
aggregatedData.ton?.checkCanBeTransferredBy(caller),
|
|
181
|
+
].filter(Boolean));
|
|
182
|
+
}
|
|
183
|
+
const results = await Promise.all(txs.map(({ evmProxyMsg, assets, options }) => this.prepareCrossChainTransaction(evmProxyMsg, sender, assets, options, true)));
|
|
184
|
+
return {
|
|
185
|
+
transactions: results.map((r) => r.transaction),
|
|
186
|
+
transactionLinkers: results.map((r) => r.transactionLinker),
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
async waitForOperationIds(transactionLinkers, caller, waitOptions) {
|
|
190
|
+
this.logger.debug(`Waiting for operation IDs`);
|
|
191
|
+
try {
|
|
192
|
+
const operationIds = await this.operationTracker.getOperationIdsByShardsKeys(transactionLinkers.map((linker) => linker.shardsKey), caller, {
|
|
193
|
+
...waitOptions,
|
|
194
|
+
logger: this.logger,
|
|
195
|
+
successCheck: (operationIds) => Object.keys(operationIds).length == transactionLinkers.length &&
|
|
196
|
+
Object.values(operationIds).every((ids) => ids.operationIds.length > 0),
|
|
197
|
+
});
|
|
198
|
+
this.logger.debug(`Operation IDs: ${(0, Utils_1.formatObjectForLogging)(operationIds)}`);
|
|
199
|
+
return transactionLinkers.map((linker) => ({
|
|
200
|
+
...linker,
|
|
201
|
+
operationId: operationIds[linker.shardsKey].operationIds.at(0),
|
|
202
|
+
}));
|
|
203
|
+
}
|
|
204
|
+
catch (error) {
|
|
205
|
+
this.logger.error(`Error while waiting for operation IDs: ${error}`);
|
|
206
|
+
return transactionLinkers;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
exports.TONTransactionManager = TONTransactionManager;
|