@tonappchain/sdk 0.7.1-frost-test-1 → 0.7.2-gas-price-0.1

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.
Files changed (32) hide show
  1. package/dist/artifacts/dev/ton/internal/build/CrossChainLayer.compiled.json +1 -1
  2. package/dist/artifacts/dev/ton/internal/wrappers/CrossChainLayer.d.ts +1 -12
  3. package/dist/artifacts/dev/ton/internal/wrappers/CrossChainLayer.js +4 -32
  4. package/dist/src/agnosticSdk/AbiHandler.js +1 -1
  5. package/dist/src/agnosticSdk/DebugHelpers.js +1 -1
  6. package/dist/src/agnosticSdk/HooksHandler.js +1 -1
  7. package/dist/src/agnosticSdk/ReplacementHelper.js +1 -3
  8. package/dist/src/assets/AssetFactory.js +2 -3
  9. package/dist/src/assets/TON.d.ts +0 -1
  10. package/dist/src/assets/TON.js +1 -5
  11. package/dist/src/errors/instances.d.ts +0 -2
  12. package/dist/src/errors/instances.js +2 -5
  13. package/dist/src/interfaces/ITONTransactionManager.d.ts +5 -4
  14. package/dist/src/interfaces/ITacSDK.d.ts +3 -3
  15. package/dist/src/sdk/Configuration.js +3 -9
  16. package/dist/src/sdk/LiteSequencerClient.js +4 -12
  17. package/dist/src/sdk/Logger.d.ts +4 -4
  18. package/dist/src/sdk/Logger.js +4 -12
  19. package/dist/src/sdk/OperationTracker.js +0 -4
  20. package/dist/src/sdk/Simulator.js +1 -1
  21. package/dist/src/sdk/TONTransactionManager.d.ts +4 -4
  22. package/dist/src/sdk/TONTransactionManager.js +20 -30
  23. package/dist/src/sdk/TacSdk.d.ts +3 -3
  24. package/dist/src/sdk/TacSdk.js +4 -4
  25. package/dist/src/sdk/TxFinalizer.js +1 -6
  26. package/dist/src/sdk/Utils.d.ts +2 -2
  27. package/dist/src/sdk/Utils.js +27 -28
  28. package/dist/src/sender/SenderFactory.js +1 -1
  29. package/dist/src/sender/TonConnectSender.js +1 -1
  30. package/dist/src/structs/InternalStruct.d.ts +0 -5
  31. package/dist/src/structs/Struct.d.ts +3 -19
  32. package/package.json +3 -2
@@ -1 +1 @@
1
- { "hash": "fcba43aae4865dab529e192843faa1c0e716bc81088d23c5023b793ca5b73a69", "hashBase64": "/LpDquSGXatSnhkoQ/qhwOcWvIEIjSPFAjt5PKW3Omk=", "hex": "b5ee9c7241023201000efe000114ff00f4a413f4bcf2c80b01020120022e02014803240168d0eda2edfb20c700925f04e001d0d3030171b0925f04e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f0101d33f01120401b8ed44d0fa4001f861fa4001f862fa4001f863d401d0d3ff0131f864d401d0fa0001f86dfa0001f86cfa0030f86ed401f86fd430d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f8665365a1f8460504aef80701830cf94130f8075003a101a655820086e65003a0128209e1338070f8370170f836a066b608a1a6645166a122821048e660b5bae3022282106c582059bae3002282100e50d313bae302303435248210cf6a5da4ba06070d1600c46c7181193c70f8365cbcf2e064f84e59a1a0f86ef846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5402fe03d31ffa00f404fa4055302170547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e255027f266ec000f84df84c5007a816a05240b915b0927034de5320a022a027a02e81354470f836a0a052c0be5240b0e30210365f06288014fb02c88210ae7df95b2502cb1fcb3f12cb1f22cf16c9702702080c02fc3339393a3b5266a05008a05008a026a08014fb02f84e5004a0f86ef846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54216ec00092316de30d05c8cb1f2101cb3f5003cf16090a001a01c8f400f84dfa02f84cfa02c901fe5003fa0213f40001cf16c982106c582059017f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0021d70b01c000b38e3bc88210d53276db5802cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00915be20b0004db3100748010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f80fc000938100cc928064e2f2f00303ee323501fa40d4d4f828f84f52300270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c97001f90074c8cb0212ca07cbffc9d05006c705f2e04701d7393078d721d3ff0131f8468307f40e6fa131f2e0c920d0f404f401fa40fa003020c300935b3234e30ddb3c5222a1c200f2e0640e111402f8280441381523d70b01c0008e64aa00814cfb70f836a0738103b582100966018070f837a0801c8127e08209e1338070f837a0a47020c88210d7b9c06e580802cb1fcb3f23cf165004fa0258cf1671fa0214cb00cb00c970c87001ca0012cccb00c9c87001cbff58cf1658fa02ccc9c8ccc9e30d218307f48e6fa56c120f10003e306c2270c8c9c87f01ca00cccb00c9c87001cbff58cf1658fa02ccc9c8ccc9001a91a4923070e201d0028307f41602f670207f8ef6238307f47c6fa5208ee702d430d0d3ff0130fa40fa00d430d0d2000101d4f40430206e8e2e3054232080108011226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb008e90c802d012cf162310355980108011db3ce2019213a09414a04313e2029132e201b3121300a28e4dc85801cb055005cf165003fa0254712323ed41ed43ed44ed45ed479f5bc85003cf17c913775003cb6bcccced67ed65ed64ed63ed61747fed11987601cb6bcc01cf17ed41edf101f2ffc901fb00db060008e6306c1201fef846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5482100e50d31350047f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0014a1011500b2a1f84e5210bef2e0658010fb0201fa403020d70b01c000b38e3cc88210d53276db580302cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00915be204fe8ffd3403d4f828f84f52300270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c97001f90074c8cb0212ca07cbffc9d05005c705f2e047028014fb0202fa40308210cf6a5da4587f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0020d70b01c000b3e30f171831190078c88210ae7df95b580302cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000025b02f8e0248210da524dc5ba8e633233f84313c705f2e04801d3ff0131f8648014fb02f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e0332382101f95f86cbae30231221a1b019a135f03f84ec300f2e0c8c88210f358b6d05802cb1fcb3ff84efa02c9f841f84e58801072226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0070f86e3103f68210063199b7ba8e5c32f84112c705f2e046fa0030f86cf846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e02282103531465cbae3022282105cec6be0bae302221c1d1e00b832f84112c705f2e046fa0030f86df846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5400b832f84112c705f2e046fa4030f863f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5402f48210581879bcba8e6532f84112c705f2e046fa4030f862f8428b02c705f2d050f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e022821060094a1bbae302221f2000b66c21f841c705f2e0468b02f862f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5403fc82106a4fbe34ba8e5f6c21f842c705f2e049f842f8618b02f862f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e022821020faec53bae3022282107ee5a6d0bae30222212223002e32f84112c705f2e046d421fb0401d0ed1eed53d430ed54017c32f84112c705f2e046d430f86f6df86682107ee5a6d0c8c970830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb003100e88210e97250b7ba8e5d32f84112c705f2e046d32f0131f86bf846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e05b8210d53276dbbadc840ff2f00201202529020158262700efb444bda89a1f48003f0c3f48003f0c5f48003f0c7a803a1a7fe0263f0c9a803a1f40003f0dbf40003f0d9f40061f0dda803f0dfa861a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cdf083f085f087f089f08bf08df08ff091f093f097f095f09bf099f09df09f001b3b4817da89a1f48003f0c3f48003f0c5f48003f0c7a803a1a7fe0263f0c9a803a1f40003f0dbf40003f0d9f40061f0dda803f0dfa861a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cd02800707020f8468307f4866fa5908e1801d32f01315303bc946c2251109130e2f8468307f47c6fa5e810235f03f847f848f849f84af84bf845f8440201202a2c01fbb9685ed44d0fa4001f861fa4001f862fa4001f863d401d0d3ff0131f864d401d0fa0001f86dfa0001f86cfa0030f86ed401f86fd430d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f866f828f84f120270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c982b0022207001f90074c8cb0212ca07cbffc9d00101fbbb316ed44d0fa4001f861fa4001f862fa4001f863d401d0d3ff0131f864d401d0fa0001f86dfa0001f86cfa0030f86ed401f86fd430d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f866f828f84f120270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c982d001e7001f90074c8cb0212ca07cbffc9d001f6f220c7009130e0d31f01821023b05641bd94840ff2f0de8308d71820f901ed44d0fa4001f861fa4001f862fa4001f863d401d0d3ff0131f864d401d0fa0001f86dfa0001f86cfa0030f86ed401f86fd430d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f86601d3ff01f8442f01fe5e21f910f2a0f84901d32f0131f869f823f849bef2e0cdf849f84abef2e0cbf800f848f867f823f868f848f84ba0f86af823f845f84ba8a1f8468307f4866fa5908e1c01d32f013122bb9bf84652108307f45b30f866def8468307f47c6fa5e85f03c8f84a01cb2fc9d0f84652308307f416f866c85801cbff0101cb2ff84930018001cb2ff84701cb2ff84801cb2ff84a01cb2fc9821023b05641017f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0031009cf846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed544651d34d" }
1
+ { "hash": "2f7a13d127de8b3a847392fe6d2e2a7008ea740706d0b3e8865c0c0865ef36fd", "hashBase64": "L3oT0SfeizqEc5L+bS4qcAjqdAcG0LPohlwMCGXvNv0=", "hex": "b5ee9c7241022e01000e14000114ff00f4a413f4bcf2c80b0102016202240168d0eda2edfb20c700925f04e001d0d3030171b0925f04e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f0101d33f01120301fced44d0fa4001f861fa4001f862fa4001f863d401d0fa0001f86cfa0001f86bfa0030f86dd401f86ed430d0d32f01f86ad32f01f866d32f01f867d32f01f868d32f01f869d30301f864f40430f8655365a1f845f80701830cf94130f8075003a101a655820086e65003a0128209e1338070f8370170f836a066b608a1a6640403fe5166a122821048e660b5ba8e5a6c7181193c70f8365cbcf2e064f84d59a1a0f86df845f844c8f84a01cb2ff84601cb2ff84701cb2ff84801cb2ff84901cb2fcb03f400c9f84ec8f84cfa02f84bfa02f84dfa02c9c8f841cf16f842cf16f843cf16ccccccc9ed54e02282106c582059bae3002282100e50d313bae302303435050a1302fe03d31ffa00f404fa4055302170547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e255027f266ec000f84cf84b5007a816a05240b915b0927034de5320a022a027a02e81354470f836a0a052c0be5240b0e30210365f06288014fb02c88210ae7df95b2502cb1fcb3f12cb1f22cf16c9702702060901fe3339393a3b5266a05008a05008a026a08014fb02f84d5004a0f86df845f844c8f84a01cb2ff84601cb2ff84701cb2ff84801cb2ff84901cb2fcb03f400c9f84ec8f84cfa02f84bfa02f84dfa02c9c8f841cf16f842cf16f843cf16ccccccc9ed54216ec0009d01c8f400f84cfa02f84bfa02c992316de205c8cb1f2101cb3f0701925003cf165003fa0213f40001cf16c982106c582059017f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0021d70b01c000b3915be30ddb31080076c88210d53276db5802cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000748010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f80fc000938100cc928064e2f2f00303ee323501fa40d4d4f828f84e52300270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c97001f90074c8cb0212ca07cbffc9d05006c705f2e04701d7393078d721d3ff0131f8458307f40e6fa131f2e0c920d0f404f401fa40fa003020c300935b3234e30ddb3c5222a1c200f2e0640b0e1102f8280441381523d70b01c0008e64aa00814cfb70f836a0738103b582100966018070f837a0801c8127e08209e1338070f837a0a47020c88210d7b9c06e580802cb1fcb3f23cf165004fa0258cf1671fa0214cb00cb00c970c87001ca0012cccb00c9c87001cbff58cf1658fa02ccc9c8ccc9e30d218307f48e6fa56c120c0d003e306c2270c8c9c87f01ca00cccb00c9c87001cbff58cf1658fa02ccc9c8ccc9001a91a4923070e201d0028307f41602f670207f8ef6238307f47c6fa5208ee702d430d0d3ff0130fa40fa00d430d0d2000101d4f40430206e8e2e3054232080108011226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb008e90c802d012cf162310355980108011db3ce2019213a09414a04313e2029132e201b30f1000a28e4dc85801cb055005cf165003fa0254712323ed41ed43ed44ed45ed479f5bc85003cf17c913775003cb6bcccced67ed65ed64ed63ed61747fed11987601cb6bcc01cf17ed41edf101f2ffc901fb00db060008e6306c1201faf845f844c8f84a01cb2ff84601cb2ff84701cb2ff84801cb2ff84901cb2fcb03f400c9f84ec8f84cfa02f84bfa02f84dfa02c9c8f841cf16f842cf16f843cf16ccccccc9ed5482100e50d31350047f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0014a101a1f84d5210be1200a6f2e0658010fb0201fa403020d70b01c000b38e3cc88210d53276db580302cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00915be204ec248210cf6a5da4bae30224821023b05641bae302332382101f95f86cba8ecd135f03f84dc300f2e0c8c88210f358b6d05802cb1fcb3ff84dfa02c9f841f84d58801072226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0070f86de031228210063199b7ba1417221a03fa3403d4f828f84e52300270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c97001f90074c8cb0212ca07cbffc9d05005c705f2e047028014fb0202fa40308210cf6a5da4587f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0020d70b01c000b3e30f1516220078c88210ae7df95b580302cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000025b01fe34f8435210c705f2e048f823f849bef2e0ca03d3ff01f84802d32f0131f868f848f849bef2e0cb038014fb02f847f866f823f867f847f84aa0f869f823f844f84aa8a1f8458307f4866fa5908e1c01d32f013122bb9bf84552108307f45b30f865def8458307f47c6fa5e85f03c8f84901cb2fc9d0f84552408307f416f8651801c2c8500301cbff5801cb2ff84801cb2ff84601cb2ff84701cb2ff84901cb2fc9821023b05641017f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb00c88210d53276db5802cb1fcb3fc9700180108100821900d8226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f845f844c8f84a01cb2ff84601cb2ff84701cb2ff84801cb2ff84901cb2fcb03f400c9f84ec8f84cfa02f84bfa02f84dfa02c9c8f841cf16f842cf16f843cf16ccccccc9ed5404fa8e5432f84112c705f2e046fa0030f86bf845f844c8f84a01cb2ff84601cb2ff84701cb2ff84801cb2ff84901cb2fcb03f400c9f84ec8f84cfa02f84bfa02f84dfa02c9c8f841cf16f842cf16f843cf16ccccccc9ed54e02282103531465cbae3022282105cec6be0bae302228210581879bcbae30222821060094a1bba1b1c1d1e00a832f84112c705f2e046fa0030f86cf845f844c8f84a01cb2ff84601cb2ff84701cb2ff84801cb2ff84901cb2fcb03f400c9f84ec8f84cfa02f84bfa02f84dfa02c9c8f841cf16f842cf16f843cf16ccccccc9ed5400a832f84112c705f2e046fa4030f863f845f844c8f84a01cb2ff84601cb2ff84701cb2ff84801cb2ff84901cb2fcb03f400c9f84ec8f84cfa02f84bfa02f84dfa02c9c8f841cf16f842cf16f843cf16ccccccc9ed5400ba32f84112c705f2e046fa4030f862f8428b02c705f2d050f845f844c8f84a01cb2ff84601cb2ff84701cb2ff84801cb2ff84901cb2fcb03f400c9f84ec8f84cfa02f84bfa02f84dfa02c9c8f841cf16f842cf16f843cf16ccccccc9ed5404f88e536c21f841c705f2e0468b02f862f845f844c8f84a01cb2ff84601cb2ff84701cb2ff84801cb2ff84901cb2fcb03f400c9f84ec8f84cfa02f84bfa02f84dfa02c9c8f841cf16f842cf16f843cf16ccccccc9ed54e02282106a4fbe34bae30222821020faec53bae3022282107ee5a6d0bae302228210e97250b7ba1f20212300ae6c21f842c705f2e049f842f8618b02f862f845f844c8f84a01cb2ff84601cb2ff84701cb2ff84801cb2ff84901cb2fcb03f400c9f84ec8f84cfa02f84bfa02f84dfa02c9c8f841cf16f842cf16f843cf16ccccccc9ed54002e32f84112c705f2e046d421fb0401d0ed1eed53d430ed54017c32f84112c705f2e046d430f86e6df86582107ee5a6d0c8c970830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0022008cf845f844c8f84a01cb2ff84601cb2ff84701cb2ff84801cb2ff84901cb2fcb03f400c9f84ec8f84cfa02f84bfa02f84dfa02c9c8f841cf16f842cf16f843cf16ccccccc9ed5400ca8e5532f84112c705f2e046d32f0131f86af845f844c8f84a01cb2ff84601cb2ff84701cb2ff84801cb2ff84901cb2fcb03f400c9f84ec8f84cfa02f84bfa02f84dfa02c9c8f841cf16f842cf16f843cf16ccccccc9ed54e05b8210d53276dbbadc840ff2f00201202529020158262700d9b444bda89a1f48003f0c3f48003f0c5f48003f0c7a803a1f40003f0d9f40003f0d7f40061f0dba803f0dda861a1a65e03f0d5a65e03f0cda65e03f0cfa65e03f0d1a65e03f0d3a60603f0c9e80861f0cbf083f085f087f089f08bf08df08ff091f095f093f099f097f09bf09d001f9b4817da89a1f48003f0c3f48003f0c5f48003f0c7a803a1f40003f0d9f40003f0d7f40061f0dba803f0dda861a1a65e03f0d5a65e03f0cda65e03f0cfa65e03f0d1a65e03f0d3a60603f0c9e80861f0cae041f08b060fe90cdf4b211c3003a65e0262a6077928d844a2212261c5f08b060fe8f8df4bd02046be07f08d0280014f847f848f849f84af8440201202a2c01ebb9685ed44d0fa4001f861fa4001f862fa4001f863d401d0fa0001f86cfa0001f86bfa0030f86dd401f86ed430d0d32f01f86ad32f01f866d32f01f867d32f01f868d32f01f869d30301f864f40430f865f828f84e120270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c92082b00207001f90074c8cb0212ca07cbffc9d00101e9bb316ed44d0fa4001f861fa4001f862fa4001f863d401d0fa0001f86cfa0001f86bfa0030f86dd401f86ed430d0d32f01f86ad32f01f866d32f01f867d32f01f868d32f01f869d30301f864f40430f865f828f84e120270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c982d001e7001f90074c8cb0212ca07cbffc9d0ace38ebd" }
@@ -5,7 +5,6 @@ export type CrossChainLayerConfig = {
5
5
  adminAddress: string;
6
6
  newAdminAddress?: string;
7
7
  sequencerMultisigAddress: string;
8
- groupPublicKey?: bigint;
9
8
  maxRootsSize: number;
10
9
  merkleRoots?: MerkleRoot[];
11
10
  prevEpoch?: number;
@@ -26,7 +25,6 @@ export type EpochInfo = {
26
25
  messageCollectEndTime: number;
27
26
  nextVotingTime: number;
28
27
  epochDelay: number;
29
- groupPublicKey: bigint;
30
28
  };
31
29
  export type ExecutorData = {
32
30
  address: Address;
@@ -59,7 +57,6 @@ export declare const CrossChainLayerOpCodes: {
59
57
  newAdmin_confirmChangingAdminAddress: number;
60
58
  sequencerMultisig_changeSequencerMultisigAddress: number;
61
59
  sequencerMultisig_updateMerkleRoot: number;
62
- sequencerMultisig_updateGroupPublicKey: number;
63
60
  };
64
61
  export declare const CrossChainLayerErrors: {
65
62
  noErrors: number;
@@ -76,9 +73,6 @@ export declare const CrossChainLayerErrors: {
76
73
  votingNotActive: number;
77
74
  messageCollectEndTimeLow: number;
78
75
  notEnoughProtocolFee: number;
79
- messageCollectEndTimeHigh: number;
80
- invalidSenderSignature: number;
81
- unknownOp: number;
82
76
  };
83
77
  export declare function crossChainLayerConfigToCell(config: CrossChainLayerConfig): Cell;
84
78
  export declare class CrossChainLayer implements Contract {
@@ -117,12 +111,7 @@ export declare class CrossChainLayer implements Contract {
117
111
  payload: Cell;
118
112
  responseAddress: Address;
119
113
  }): Promise<void>;
120
- sendUpdateGroupPublicKey(provider: ContractProvider, via: Sender, value: bigint, opts: {
121
- queryId?: number;
122
- groupPublicKey: bigint;
123
- }): Promise<void>;
124
- buildSignedUpdateMerkleRoot(secretKey: Buffer, merkleRoot: bigint, messageCollectEndTime: number): Cell;
125
- sendUpdateMerkleRoot(provider: ContractProvider, secretKey: Buffer, opts: {
114
+ sendUpdateMerkleRoot(provider: ContractProvider, via: Sender, value: bigint, opts: {
126
115
  queryId?: number;
127
116
  merkleRoot: bigint;
128
117
  messageCollectEndTime: number;
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.CrossChainLayer = exports.CrossChainLayerErrors = exports.CrossChainLayerOpCodes = exports.MsgType = void 0;
4
4
  exports.crossChainLayerConfigToCell = crossChainLayerConfigToCell;
5
5
  const core_1 = require("@ton/core");
6
- const crypto_1 = require("@ton/crypto");
7
6
  const Constants_1 = require("./Constants");
8
7
  const GasUtils_1 = require("./utils/GasUtils");
9
8
  const MerkleRoots_1 = require("./utils/MerkleRoots");
@@ -35,7 +34,6 @@ exports.CrossChainLayerOpCodes = {
35
34
  newAdmin_confirmChangingAdminAddress: 0x6a4fbe34,
36
35
  sequencerMultisig_changeSequencerMultisigAddress: 0x5cec6be0,
37
36
  sequencerMultisig_updateMerkleRoot: 0x23b05641,
38
- sequencerMultisig_updateGroupPublicKey: 0xda524dc5,
39
37
  };
40
38
  exports.CrossChainLayerErrors = {
41
39
  noErrors: 0,
@@ -52,9 +50,6 @@ exports.CrossChainLayerErrors = {
52
50
  votingNotActive: 202,
53
51
  messageCollectEndTimeLow: 203,
54
52
  notEnoughProtocolFee: 204,
55
- messageCollectEndTimeHigh: 205,
56
- invalidSenderSignature: 32,
57
- unknownOp: 0xfffff,
58
53
  };
59
54
  function crossChainLayerConfigToCell(config) {
60
55
  return (0, core_1.beginCell)()
@@ -62,9 +57,6 @@ function crossChainLayerConfigToCell(config) {
62
57
  .storeAddress(config.newAdminAddress ? core_1.Address.parse(config.newAdminAddress) : null)
63
58
  .storeAddress(core_1.Address.parse(config.sequencerMultisigAddress))
64
59
  .storeRef((0, core_1.beginCell)()
65
- .storeUint(config.groupPublicKey ? config.groupPublicKey : 0n, Constants_1.Params.bitsize.hash)
66
- .endCell())
67
- .storeRef((0, core_1.beginCell)()
68
60
  .storeCoins(config.tacProtocolFee ? (0, core_1.toNano)(config.tacProtocolFee.toFixed(9)) : 0)
69
61
  .storeCoins(config.tonProtocolFee ? (0, core_1.toNano)(config.tonProtocolFee.toFixed(9)) : 0)
70
62
  .storeCoins(config.protocolFeeSupply ? (0, core_1.toNano)(config.protocolFeeSupply.toFixed(9)) : 0)
@@ -142,34 +134,18 @@ class CrossChainLayer {
142
134
  .endCell(),
143
135
  });
144
136
  }
145
- async sendUpdateGroupPublicKey(provider, via, value, opts) {
137
+ async sendUpdateMerkleRoot(provider, via, value, opts) {
146
138
  await provider.internal(via, {
147
139
  value,
148
140
  sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
149
141
  body: (0, core_1.beginCell)()
150
- .storeUint(exports.CrossChainLayerOpCodes.sequencerMultisig_updateGroupPublicKey, Constants_1.Params.bitsize.op)
142
+ .storeUint(exports.CrossChainLayerOpCodes.sequencerMultisig_updateMerkleRoot, Constants_1.Params.bitsize.op)
151
143
  .storeUint(opts.queryId || 0, Constants_1.Params.bitsize.queryId)
152
- .storeUint(opts.groupPublicKey, Constants_1.Params.bitsize.hash)
144
+ .storeUint(opts.merkleRoot, Constants_1.Params.bitsize.hash)
145
+ .storeUint(opts.messageCollectEndTime, Constants_1.Params.bitsize.time)
153
146
  .endCell(),
154
147
  });
155
148
  }
156
- buildSignedUpdateMerkleRoot(secretKey, merkleRoot, messageCollectEndTime) {
157
- let msg = (0, core_1.beginCell)()
158
- .storeUint(merkleRoot, Constants_1.Params.bitsize.hash)
159
- .storeUint(messageCollectEndTime, Constants_1.Params.bitsize.time)
160
- .endCell();
161
- let signature = (0, crypto_1.sign)(msg.hash(), secretKey);
162
- msg = (0, core_1.beginCell)()
163
- .storeUint(exports.CrossChainLayerOpCodes.sequencerMultisig_updateMerkleRoot, 32)
164
- .storeBuffer(signature)
165
- .storeSlice(msg.asSlice())
166
- .endCell();
167
- return msg;
168
- }
169
- async sendUpdateMerkleRoot(provider, secretKey, opts) {
170
- const msg = this.buildSignedUpdateMerkleRoot(secretKey, opts.merkleRoot, opts.messageCollectEndTime);
171
- await provider.external(msg);
172
- }
173
149
  async sendAddProtocolFee(provider, via, value, opts) {
174
150
  await provider.internal(via, {
175
151
  value,
@@ -293,7 +269,6 @@ class CrossChainLayer {
293
269
  const adminAddress = result.stack.readAddress().toString();
294
270
  const newAdminAddress = result.stack.readAddressOpt()?.toString();
295
271
  const sequencerMultisigAddress = result.stack.readAddress().toString();
296
- const groupPublicKey = result.stack.readBigNumber();
297
272
  const maxRootsSize = result.stack.readNumber();
298
273
  const merkleRoots = result.stack.readCellOpt();
299
274
  const prevEpoch = result.stack.readNumber();
@@ -309,7 +284,6 @@ class CrossChainLayer {
309
284
  adminAddress,
310
285
  newAdminAddress,
311
286
  sequencerMultisigAddress,
312
- groupPublicKey,
313
287
  maxRootsSize,
314
288
  merkleRoots: (0, MerkleRoots_1.cellToArray)(merkleRoots),
315
289
  prevEpoch,
@@ -332,7 +306,6 @@ class CrossChainLayer {
332
306
  const nextVotingTime = result.stack.readNumber();
333
307
  const epochDelay = result.stack.readNumber();
334
308
  const maxRootsSize = result.stack.readNumber();
335
- const groupPublicKey = result.stack.readBigNumber();
336
309
  return {
337
310
  lastMerkleRoot,
338
311
  prevEpoch,
@@ -341,7 +314,6 @@ class CrossChainLayer {
341
314
  nextVotingTime,
342
315
  epochDelay,
343
316
  maxRootsSize,
344
- groupPublicKey,
345
317
  };
346
318
  }
347
319
  async getExecutorAddress(provider, payload) {
@@ -56,7 +56,7 @@ class AbiHandler {
56
56
  // Build parameter list with proper tuple handling
57
57
  const params = func.inputs
58
58
  .map((input) => {
59
- const paramType = this._buildParameterType(input);
59
+ let paramType = this._buildParameterType(input);
60
60
  // Add parameter name if available
61
61
  if (input.name) {
62
62
  return `${paramType} ${input.name}`;
@@ -17,7 +17,7 @@ class DebugHelpers {
17
17
  bridgeData: {
18
18
  tokens: bridgeTokens,
19
19
  nfts: bridgeNFTs,
20
- isRequired: bridgeTokens.length > 0 || bridgeNFTs.length > 0,
20
+ isRequired: bridgeTokens.length > 0 || bridgeNFTs.length > 0 ? true : false,
21
21
  },
22
22
  };
23
23
  }
@@ -30,7 +30,7 @@ class HooksHandler {
30
30
  }
31
31
  const customHookData = {
32
32
  isFromSAPerspective,
33
- contractAddress: ethers_1.ethers.getAddress(contractAddress.toLowerCase()), // Normalize address to checksum format
33
+ contractAddress,
34
34
  value,
35
35
  data,
36
36
  improvedMissionInfo,
@@ -49,9 +49,7 @@ class ReplacementHelper {
49
49
  // Find the parameter by name
50
50
  const paramIndex = functionFragment.inputs.findIndex((input) => input.name === parameterName);
51
51
  if (paramIndex === -1) {
52
- const availableParams = functionFragment.inputs
53
- .map((input) => `${input.name} (${input.type})`)
54
- .join(', ');
52
+ const availableParams = functionFragment.inputs.map((input) => `${input.name} (${input.type})`).join(', ');
55
53
  throw new Error(`Parameter '${parameterName}' not found in function '${functionName}'. Available parameters: ${availableParams}`);
56
54
  }
57
55
  // Calculate position and length based on parameter type
@@ -25,9 +25,8 @@ class AssetFactory {
25
25
  return asset;
26
26
  }
27
27
  static async createFTAsset(configuration, address) {
28
- const ton = TON_1.TON.create(configuration);
29
- if (address === configuration.nativeTONAddress || address === '' || address === (await ton.getEVMAddress())) {
30
- return ton;
28
+ if (address === configuration.nativeTONAddress || address === '') {
29
+ return TON_1.TON.create(configuration);
31
30
  }
32
31
  return FT_1.FT.fromAddress(configuration, address);
33
32
  }
@@ -6,7 +6,6 @@ import { AssetType, FeeParams } from '../structs/Struct';
6
6
  export declare class TON implements Asset {
7
7
  readonly address: string;
8
8
  readonly type: AssetType;
9
- private evmAddress;
10
9
  private _rawAmount;
11
10
  private _config;
12
11
  constructor(config: IConfiguration);
@@ -12,7 +12,6 @@ class TON {
12
12
  this.address = '';
13
13
  this._config = config;
14
14
  this._rawAmount = 0n;
15
- this.evmAddress = '';
16
15
  }
17
16
  static create(config) {
18
17
  return new TON(config);
@@ -52,10 +51,7 @@ class TON {
52
51
  return this;
53
52
  }
54
53
  async getEVMAddress() {
55
- if (this.evmAddress === '') {
56
- this.evmAddress = await this._config.TACParams.tokenUtils.computeAddress(this._config.nativeTONAddress);
57
- }
58
- return this.evmAddress;
54
+ return this._config.TACParams.tokenUtils.computeAddress(this._config.nativeTONAddress);
59
55
  }
60
56
  async getTVMAddress() {
61
57
  return '';
@@ -30,5 +30,3 @@ export declare const missingGasLimitError: FormatError;
30
30
  export declare const missingDecimals: MetadataError;
31
31
  export declare const missingJettonDataError: MetadataError;
32
32
  export declare const zeroRawAmountError: (assetAddress: string) => TokenError;
33
- export declare const sendCrossChainTransactionFailedError: (msg: string) => WalletError;
34
- export declare const convertCurrencyNegativeOrZeroValueError: FormatError;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.convertCurrencyNegativeOrZeroValueError = exports.sendCrossChainTransactionFailedError = exports.zeroRawAmountError = exports.missingJettonDataError = exports.missingDecimals = exports.missingGasLimitError = exports.missingTvmExecutorFeeError = exports.missingFeeParamsError = exports.getTONFeeInfoFetchError = exports.simulationFetchError = exports.convertCurrencyFetchError = exports.indexRequiredError = exports.unknownTokenTypeError = exports.insufficientBalanceError = exports.allContractOpenerFailedError = exports.allEndpointsFailedError = exports.noValidGroupFoundError = exports.prepareMessageGroupError = exports.invalidAssetType = exports.emptyArrayError = exports.profilingFetchError = exports.invalidMethodNameError = exports.emptySettingError = exports.prefixError = exports.notMultiplyOf8Error = exports.unsupportedFormatError = exports.unsupportedKeyError = exports.unknownWalletError = exports.evmAddressError = exports.tvmAddressError = exports.statusFetchError = exports.operationFetchError = exports.emptyContractError = void 0;
3
+ exports.zeroRawAmountError = exports.missingJettonDataError = exports.missingDecimals = exports.missingGasLimitError = exports.missingTvmExecutorFeeError = exports.missingFeeParamsError = exports.getTONFeeInfoFetchError = exports.simulationFetchError = exports.convertCurrencyFetchError = exports.indexRequiredError = exports.unknownTokenTypeError = exports.insufficientBalanceError = exports.allContractOpenerFailedError = exports.allEndpointsFailedError = exports.noValidGroupFoundError = exports.prepareMessageGroupError = exports.invalidAssetType = exports.emptyArrayError = exports.profilingFetchError = exports.invalidMethodNameError = exports.emptySettingError = exports.prefixError = exports.notMultiplyOf8Error = exports.unsupportedFormatError = exports.unsupportedKeyError = exports.unknownWalletError = exports.evmAddressError = exports.tvmAddressError = exports.statusFetchError = exports.operationFetchError = exports.emptyContractError = void 0;
4
4
  const errors_1 = require("./errors");
5
5
  exports.emptyContractError = new errors_1.ContractError('unexpected empty contract code of given jetton.', 100);
6
6
  const operationFetchError = (msg, inner) => new errors_1.FetchError(`failed to fetch OperationId: ${msg}`, 101, inner);
@@ -30,7 +30,7 @@ exports.invalidAssetType = new errors_1.FormatError('Invalid asset type', 114);
30
30
  const prepareMessageGroupError = (isBocSizeValid, isDepthValid) => new errors_1.PrepareMessageGroupError(`Failed to prepare message group: BOC size valid: ${isBocSizeValid}, depth valid: ${isDepthValid}`, 115);
31
31
  exports.prepareMessageGroupError = prepareMessageGroupError;
32
32
  exports.noValidGroupFoundError = new errors_1.NoValidGroupFoundError('Failed to prepare valid message group', 116);
33
- const allEndpointsFailedError = (inner) => new errors_1.FetchError('All endpoints failed, last err: ' + inner.message, 117, inner);
33
+ const allEndpointsFailedError = (inner) => new errors_1.FetchError('All endpoints failed', 117, inner);
34
34
  exports.allEndpointsFailedError = allEndpointsFailedError;
35
35
  const allContractOpenerFailedError = (inner) => new errors_1.FetchError('All contract opener failed', 118, inner);
36
36
  exports.allContractOpenerFailedError = allContractOpenerFailedError;
@@ -53,6 +53,3 @@ exports.missingDecimals = new errors_1.MetadataError('Missing decimals in jetton
53
53
  exports.missingJettonDataError = new errors_1.MetadataError('Jetton data should be available for TON origin', 129);
54
54
  const zeroRawAmountError = (assetAddress) => new errors_1.TokenError(`FT asset with zero rawAmount/amount is not allowed: ${assetAddress}`, 130);
55
55
  exports.zeroRawAmountError = zeroRawAmountError;
56
- const sendCrossChainTransactionFailedError = (msg) => new errors_1.WalletError(`failed to send cross chain transaction: ${msg}`, 131);
57
- exports.sendCrossChainTransactionFailedError = sendCrossChainTransactionFailedError;
58
- exports.convertCurrencyNegativeOrZeroValueError = new errors_1.FormatError('Value cannot be negative or zero for currency conversion', 132);
@@ -1,20 +1,21 @@
1
1
  import type { SenderAbstraction } from '../sender';
2
- import { BatchCrossChainTx, CrossChainTransactionsOptions, CrosschainTx, EvmProxyMsg, TransactionLinkerWithOperationId } from '../structs/Struct';
2
+ import { CrosschainTx, EvmProxyMsg, OperationIdsByShardsKey, TransactionLinkerWithOperationId, WaitOptions } from '../structs/Struct';
3
3
  export interface ITONTransactionManager {
4
4
  /**
5
5
  * Sends a single cross-chain transaction.
6
6
  * @param evmProxyMsg Encoded EVM proxy message to bridge.
7
7
  * @param sender Sender abstraction for TVM message sending.
8
8
  * @param tx cross-chain transaction to bridge.
9
+ * @param waitOptions Optional policy to wait for operation id resolution.
9
10
  * @returns Transaction linker with operation id for tracking.
10
11
  */
11
- sendCrossChainTransaction(evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, tx: CrosschainTx): Promise<TransactionLinkerWithOperationId>;
12
+ sendCrossChainTransaction(evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, tx: CrosschainTx, waitOptions?: WaitOptions<string>): Promise<TransactionLinkerWithOperationId>;
12
13
  /**
13
14
  * Sends multiple cross-chain transactions in a batch.
14
15
  * @param sender Sender abstraction for TVM message sending.
15
16
  * @param txs List of cross-chain transactions to bridge.
16
- * @param options Optional options controlling waiting behavior for operation ids.
17
+ * @param waitOptions Optional policy for waiting on operation ids by shard keys.
17
18
  * @returns Array of transaction linkers, one per submitted transaction.
18
19
  */
19
- sendCrossChainTransactions(sender: SenderAbstraction, txs: BatchCrossChainTx[], options?: CrossChainTransactionsOptions): Promise<TransactionLinkerWithOperationId[]>;
20
+ sendCrossChainTransactions(sender: SenderAbstraction, txs: CrosschainTx[], waitOptions?: WaitOptions<OperationIdsByShardsKey>): Promise<TransactionLinkerWithOperationId[]>;
20
21
  }
@@ -2,7 +2,7 @@ import { Wallet } from 'ethers';
2
2
  import { JettonMinterData, NFTItemData } from '../../artifacts/tonTypes';
3
3
  import { FT, NFT } from '../assets';
4
4
  import type { SenderAbstraction } from '../sender';
5
- import { AssetFromFTArg, AssetFromNFTCollectionArg, AssetFromNFTItemArg, AssetLike, BatchCrossChainTxWithAssetLike, CrossChainTransactionOptions, CrossChainTransactionsOptions, CrosschainTx, EVMAddress, EvmProxyMsg, ExecutionFeeEstimationResult, NFTAddressType, SuggestedTVMExecutorFee, TACSimulationParams, TACSimulationResult, TransactionLinkerWithOperationId, TVMAddress, UserWalletBalanceExtended, WaitOptions } from '../structs/Struct';
5
+ import { AssetFromFTArg, AssetFromNFTCollectionArg, AssetFromNFTItemArg, AssetLike, CrossChainTransactionOptions, CrosschainTx, CrosschainTxWithAssetLike, EVMAddress, EvmProxyMsg, ExecutionFeeEstimationResult, NFTAddressType, OperationIdsByShardsKey, SuggestedTVMExecutorFee, TACSimulationParams, TACSimulationResult, TransactionLinkerWithOperationId, TVMAddress, UserWalletBalanceExtended, WaitOptions } from '../structs/Struct';
6
6
  import { Asset } from './Asset';
7
7
  import { IConfiguration } from './IConfiguration';
8
8
  import { IOperationTracker } from './IOperationTracker';
@@ -98,10 +98,10 @@ export interface ITacSDK {
98
98
  * Sends multiple cross-chain transactions in one batch and optionally waits for tracking info.
99
99
  * @param sender Sender abstraction for signing/sending TVM messages.
100
100
  * @param txs Array of cross-chain transactions to broadcast.
101
- * @param options Optional options controlling waiting behavior for operation ids.
101
+ * @param waitOptions Optional waiting policy for operation ids by shard keys.
102
102
  * @returns Promise with an array of TransactionLinkerWithOperationId for each submitted transaction.
103
103
  */
104
- sendCrossChainTransactions(sender: SenderAbstraction, txs: BatchCrossChainTxWithAssetLike[], options?: CrossChainTransactionsOptions): Promise<TransactionLinkerWithOperationId[]>;
104
+ sendCrossChainTransactions(sender: SenderAbstraction, txs: CrosschainTxWithAssetLike[], waitOptions?: WaitOptions<OperationIdsByShardsKey>): Promise<TransactionLinkerWithOperationId[]>;
105
105
  /**
106
106
  * Bridges tokens/value from EVM to TON chain via the executor.
107
107
  * @param signer Ethers Wallet used to sign the EVM-side transaction.
@@ -78,7 +78,6 @@ class Configuration {
78
78
  const artifacts = network === Struct_1.Network.MAINNET ? artifacts_1.mainnet : network === Struct_1.Network.TESTNET ? artifacts_1.testnet : artifacts_1.dev;
79
79
  let provider;
80
80
  let settingsAddress;
81
- let saFactoryAddress;
82
81
  if (network === Struct_1.Network.DEV) {
83
82
  if (!TACParams || !TACParams.provider) {
84
83
  throw new Error('For dev network, a custom provider must be provided in TACParams');
@@ -87,16 +86,11 @@ class Configuration {
87
86
  if (!TACParams.settingsAddress) {
88
87
  throw new Error('For dev network, a custom settings address must be provided in TACParams');
89
88
  }
90
- settingsAddress = TACParams.settingsAddress;
91
- if (!TACParams.saFactoryAddress) {
92
- throw new Error('For dev network, a custom smart account factory address must be provided in TACParams');
93
- }
94
- saFactoryAddress = TACParams.saFactoryAddress;
89
+ settingsAddress = TACParams.settingsAddress.toString();
95
90
  }
96
91
  else {
97
92
  provider = TACParams?.provider ?? ethers_1.ethers.getDefaultProvider(artifacts.TAC_RPC_ENDPOINT);
98
- settingsAddress = TACParams?.settingsAddress ?? artifacts.TAC_SETTINGS_ADDRESS;
99
- saFactoryAddress = TACParams?.saFactoryAddress ?? artifacts.TAC_SMART_ACCOUNT_FACTORY_ADDRESS;
93
+ settingsAddress = TACParams?.settingsAddress?.toString() ?? artifacts.TAC_SETTINGS_ADDRESS;
100
94
  }
101
95
  Validator_1.Validator.validateEVMAddress(settingsAddress);
102
96
  const settingsAbi = artifacts.tac.compilationArtifacts.ISettings.abi;
@@ -123,7 +117,7 @@ class Configuration {
123
117
  const tokenUtilsAbi = artifacts.tac.compilationArtifacts.ITokenUtils.abi;
124
118
  const tokenUtils = new ethers_1.ethers.Contract(tokenUtilsAddress, tokenUtilsAbi, provider);
125
119
  const TacSAFactoryAbi = artifacts.tac.compilationArtifacts.ISAFactory.abi;
126
- const smartAccountFactory = new ethers_1.ethers.Contract(saFactoryAddress, TacSAFactoryAbi, provider);
120
+ const smartAccountFactory = new ethers_1.ethers.Contract(artifacts.TAC_SMART_ACCOUNT_FACTORY_ADDRESS, TacSAFactoryAbi, provider);
127
121
  return {
128
122
  provider,
129
123
  settings,
@@ -15,18 +15,10 @@ class LiteSequencerClient {
15
15
  const isEthHash = /^0x[a-fA-F0-9]{64}$/.test(transactionHash);
16
16
  const path = isEthHash ? 'tac/operation-id' : 'ton/operation-id';
17
17
  try {
18
- if (isEthHash) {
19
- const response = await this.httpClient.get(new URL(path, this.endpoint).toString(), {
20
- params: { transactionHash },
21
- });
22
- return response.data.response?.operationId || '';
23
- }
24
- else {
25
- const response = await this.httpClient.get(new URL(path, this.endpoint).toString(), {
26
- params: { transactionHash },
27
- });
28
- return response.data.response || '';
29
- }
18
+ const response = await this.httpClient.get(new URL(path, this.endpoint).toString(), {
19
+ params: { transactionHash },
20
+ });
21
+ return response.data.response || '';
30
22
  }
31
23
  catch (error) {
32
24
  if (error?.response?.status === 404) {
@@ -6,8 +6,8 @@ export declare class ConsoleLogger implements ILogger {
6
6
  error(...arg: unknown[]): void;
7
7
  }
8
8
  export declare class NoopLogger implements ILogger {
9
- debug(..._arg: unknown[]): void;
10
- info(..._arg: unknown[]): void;
11
- warn(..._arg: unknown[]): void;
12
- error(..._arg: unknown[]): void;
9
+ debug(): void;
10
+ info(): void;
11
+ warn(): void;
12
+ error(): void;
13
13
  }
@@ -17,17 +17,9 @@ class ConsoleLogger {
17
17
  }
18
18
  exports.ConsoleLogger = ConsoleLogger;
19
19
  class NoopLogger {
20
- debug(..._arg) {
21
- void _arg;
22
- }
23
- info(..._arg) {
24
- void _arg;
25
- }
26
- warn(..._arg) {
27
- void _arg;
28
- }
29
- error(..._arg) {
30
- void _arg;
31
- }
20
+ debug() { }
21
+ info() { }
22
+ warn() { }
23
+ error() { }
32
24
  }
33
25
  exports.NoopLogger = NoopLogger;
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OperationTracker = exports.DefaultLiteSequencerClientFactory = void 0;
4
4
  const artifacts_1 = require("../../artifacts");
5
5
  const errors_1 = require("../errors");
6
- const instances_1 = require("../errors/instances");
7
6
  const Struct_1 = require("../structs/Struct");
8
7
  const LiteSequencerClient_1 = require("./LiteSequencerClient");
9
8
  const Logger_1 = require("./Logger");
@@ -240,9 +239,6 @@ class OperationTracker {
240
239
  return Struct_1.SimplifiedStatuses.SUCCESSFUL;
241
240
  }
242
241
  async convertCurrency(params, waitOptions) {
243
- if (params.value <= 0n) {
244
- throw instances_1.convertCurrencyNegativeOrZeroValueError;
245
- }
246
242
  this.logger.debug(`Converting currency: ${(0, Utils_1.formatObjectForLogging)(params)}`);
247
243
  const requestFn = async () => {
248
244
  let lastError;
@@ -27,7 +27,7 @@ class Simulator {
27
27
  Validator_1.Validator.validateEVMAddress(evmProxyMsg.evmTargetAddress);
28
28
  Validator_1.Validator.validateEVMAddresses(evmValidExecutors);
29
29
  Validator_1.Validator.validateTVMAddresses(tvmValidExecutors);
30
- const aggregatedData = (0, Utils_1.aggregateTokens)(assets);
30
+ const aggregatedData = await (0, Utils_1.aggregateTokens)(assets);
31
31
  const shardCount = aggregatedData.jettons.length || 1;
32
32
  const transactionLinker = (0, Utils_1.generateTransactionLinker)(sender.getSenderAddress(), shardCount);
33
33
  const tacSimulationParams = {
@@ -1,17 +1,17 @@
1
1
  import { IConfiguration, ILogger, IOperationTracker, ISimulator, ITONTransactionManager } from '../interfaces';
2
2
  import type { SenderAbstraction } from '../sender';
3
- import { BatchCrossChainTx, CrossChainTransactionOptions, CrossChainTransactionsOptions, CrosschainTx, EvmProxyMsg, FeeParams, TransactionLinkerWithOperationId } from '../structs/Struct';
3
+ import { CrosschainTx, EvmProxyMsg, OperationIdsByShardsKey, TransactionLinkerWithOperationId, WaitOptions } from '../structs/Struct';
4
4
  export declare class TONTransactionManager implements ITONTransactionManager {
5
5
  private readonly config;
6
6
  private readonly simulator;
7
7
  private readonly operationTracker;
8
8
  private readonly logger;
9
9
  constructor(config: IConfiguration, simulator: ISimulator, operationTracker: IOperationTracker, logger?: ILogger);
10
- protected buildFeeParams(options: CrossChainTransactionOptions, evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, tx: CrosschainTx): Promise<FeeParams>;
10
+ private buildFeeParams;
11
11
  private prepareCrossChainTransaction;
12
12
  private generateCrossChainMessages;
13
- sendCrossChainTransaction(evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, tx: CrosschainTx): Promise<TransactionLinkerWithOperationId>;
14
- sendCrossChainTransactions(sender: SenderAbstraction, txs: BatchCrossChainTx[], options?: CrossChainTransactionsOptions): Promise<TransactionLinkerWithOperationId[]>;
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
15
  private prepareBatchTransactions;
16
16
  private waitForOperationIds;
17
17
  }
@@ -3,7 +3,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TONTransactionManager = void 0;
4
4
  const assets_1 = require("../assets");
5
5
  const errors_1 = require("../errors");
6
- const instances_1 = require("../errors/instances");
7
6
  const Consts_1 = require("./Consts");
8
7
  const Logger_1 = require("./Logger");
9
8
  const Utils_1 = require("./Utils");
@@ -54,7 +53,7 @@ class TONTransactionManager {
54
53
  const { allowSimulationError = false, isRoundTrip = undefined, calculateRollbackFee = true, validateAssetsBalance = true, } = options || {};
55
54
  const { evmValidExecutors = [], tvmValidExecutors = [] } = options || {};
56
55
  Validator_1.Validator.validateEVMAddress(evmProxyMsg.evmTargetAddress);
57
- const aggregatedData = (0, Utils_1.aggregateTokens)(assets);
56
+ const aggregatedData = await (0, Utils_1.aggregateTokens)(assets);
58
57
  Validator_1.Validator.validateEVMAddresses(evmValidExecutors);
59
58
  Validator_1.Validator.validateTVMAddresses(tvmValidExecutors);
60
59
  const shouldValidateAssets = validateAssetsBalance && !skipAssetsBalanceValidation;
@@ -137,44 +136,35 @@ class TONTransactionManager {
137
136
  this.logger.debug('Cross-chain messages generated successfully');
138
137
  return messages;
139
138
  }
140
- async sendCrossChainTransaction(evmProxyMsg, sender, tx) {
139
+ async sendCrossChainTransaction(evmProxyMsg, sender, tx, waitOptions) {
141
140
  const { transaction, transactionLinker } = await this.prepareCrossChainTransaction(evmProxyMsg, sender, tx.assets, tx.options);
142
141
  await assets_1.TON.checkBalance(sender, this.config, [transaction]);
143
142
  this.logger.debug(`Sending transaction: ${(0, Utils_1.formatObjectForLogging)(transactionLinker)}`);
144
143
  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) {
144
+ if (!waitOptions) {
150
145
  return { sendTransactionResult, ...transactionLinker };
151
146
  }
152
- const waitOptions = tx.options?.waitOptions ?? {};
153
- waitOptions.successCheck = waitOptions.successCheck ?? ((id) => !!id);
154
- waitOptions.logger = waitOptions.logger ?? this.logger;
155
147
  const operationId = await this.operationTracker
156
- .getOperationId(transactionLinker, waitOptions)
148
+ .getOperationId(transactionLinker, {
149
+ ...waitOptions,
150
+ successCheck: (id) => !!id,
151
+ logger: this.logger,
152
+ })
157
153
  .catch((error) => {
158
154
  this.logger.error(`Error while waiting for operation ID: ${error}`);
159
155
  return undefined;
160
156
  });
161
157
  return { sendTransactionResult, operationId, ...transactionLinker };
162
158
  }
163
- async sendCrossChainTransactions(sender, txs, options) {
159
+ async sendCrossChainTransactions(sender, txs, waitOptions) {
164
160
  const caller = sender.getSenderAddress();
165
161
  this.logger.debug(`Preparing ${txs.length} cross-chain transactions for ${caller}`);
166
162
  const { transactions, transactionLinkers } = await this.prepareBatchTransactions(txs, sender);
167
163
  await assets_1.TON.checkBalance(sender, this.config, transactions);
168
164
  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 ?? {})
165
+ await sender.sendShardTransactions(transactions, this.config.network, this.config.TONParams.contractOpener);
166
+ return waitOptions
167
+ ? await this.waitForOperationIds(transactionLinkers, caller, waitOptions)
178
168
  : transactionLinkers;
179
169
  }
180
170
  async prepareBatchTransactions(txs, sender) {
@@ -183,7 +173,7 @@ class TONTransactionManager {
183
173
  if (txsRequiringValidation.length) {
184
174
  // Aggregate only assets from txs that require validation and validate once per unique asset
185
175
  const assetsToValidate = txsRequiringValidation.flatMap((tx) => tx.assets ?? []);
186
- const aggregatedData = (0, Utils_1.aggregateTokens)(assetsToValidate);
176
+ const aggregatedData = await (0, Utils_1.aggregateTokens)(assetsToValidate);
187
177
  await Promise.all([
188
178
  ...aggregatedData.jettons.map((jetton) => jetton.checkCanBeTransferredBy(caller)),
189
179
  ...aggregatedData.nfts.map((nft) => nft.checkCanBeTransferredBy(caller)),
@@ -199,16 +189,16 @@ class TONTransactionManager {
199
189
  async waitForOperationIds(transactionLinkers, caller, waitOptions) {
200
190
  this.logger.debug(`Waiting for operation IDs`);
201
191
  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);
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
+ });
208
198
  this.logger.debug(`Operation IDs: ${(0, Utils_1.formatObjectForLogging)(operationIds)}`);
209
199
  return transactionLinkers.map((linker) => ({
210
200
  ...linker,
211
- operationId: operationIds[linker.shardsKey].operationIds[0],
201
+ operationId: operationIds[linker.shardsKey].operationIds.at(0),
212
202
  }));
213
203
  }
214
204
  catch (error) {
@@ -3,7 +3,7 @@ import { JettonMinterData, NFTItemData } from '../../artifacts/tonTypes';
3
3
  import { FT, NFT } from '../assets';
4
4
  import { IConfiguration, ILogger, IOperationTracker, ITacSDK } from '../interfaces';
5
5
  import type { SenderAbstraction } from '../sender';
6
- import { AssetFromFTArg, AssetFromNFTCollectionArg, AssetFromNFTItemArg, AssetLike, BatchCrossChainTxWithAssetLike, CrossChainTransactionOptions, CrossChainTransactionsOptions, CrosschainTx, EVMAddress, EvmProxyMsg, ExecutionFeeEstimationResult, NFTAddressType, SDKParams, SuggestedTVMExecutorFee, TACSimulationParams, TACSimulationResult, TransactionLinkerWithOperationId, TVMAddress, UserWalletBalanceExtended } from '../structs/Struct';
6
+ import { AssetFromFTArg, AssetFromNFTCollectionArg, AssetFromNFTItemArg, AssetLike, CrossChainTransactionOptions, CrosschainTx, CrosschainTxWithAssetLike, EVMAddress, EvmProxyMsg, ExecutionFeeEstimationResult, NFTAddressType, OperationIdsByShardsKey, SDKParams, SuggestedTVMExecutorFee, TACSimulationParams, TACSimulationResult, TransactionLinkerWithOperationId, TVMAddress, UserWalletBalanceExtended, WaitOptions } from '../structs/Struct';
7
7
  export declare class TacSdk implements ITacSDK {
8
8
  readonly config: IConfiguration;
9
9
  readonly operationTracker: IOperationTracker;
@@ -20,8 +20,8 @@ export declare class TacSdk implements ITacSDK {
20
20
  get getTrustedTONExecutors(): string[];
21
21
  getSimulationInfo(evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, assets?: AssetLike[], options?: CrossChainTransactionOptions): Promise<ExecutionFeeEstimationResult>;
22
22
  getTVMExecutorFeeInfo(assets: AssetLike[], feeSymbol: string, tvmValidExecutors?: string[]): Promise<SuggestedTVMExecutorFee>;
23
- sendCrossChainTransaction(evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, assets?: AssetLike[], options?: CrossChainTransactionOptions): Promise<TransactionLinkerWithOperationId>;
24
- sendCrossChainTransactions(sender: SenderAbstraction, txs: BatchCrossChainTxWithAssetLike[], options?: CrossChainTransactionsOptions): Promise<TransactionLinkerWithOperationId[]>;
23
+ sendCrossChainTransaction(evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, assets?: AssetLike[], options?: CrossChainTransactionOptions, waitOptions?: WaitOptions<string>): Promise<TransactionLinkerWithOperationId>;
24
+ sendCrossChainTransactions(sender: SenderAbstraction, txs: CrosschainTxWithAssetLike[], waitOptions?: WaitOptions<OperationIdsByShardsKey>): Promise<TransactionLinkerWithOperationId[]>;
25
25
  bridgeTokensToTON(signer: Wallet, value: bigint, tonTarget: string, assets?: AssetLike[], tvmExecutorFee?: bigint, tvmValidExecutors?: string[]): Promise<string>;
26
26
  isContractDeployedOnTVM(address: string): Promise<boolean>;
27
27
  simulateTACMessage(req: TACSimulationParams): Promise<TACSimulationResult>;
@@ -77,18 +77,18 @@ class TacSdk {
77
77
  };
78
78
  return this.operationTracker.getTVMExecutorFee(params);
79
79
  }
80
- async sendCrossChainTransaction(evmProxyMsg, sender, assets = [], options) {
80
+ async sendCrossChainTransaction(evmProxyMsg, sender, assets = [], options, waitOptions) {
81
81
  const normalizedAssets = await (0, Utils_1.normalizeAssets)(this.config, assets);
82
82
  const tx = { evmProxyMsg, assets: normalizedAssets, options };
83
- return this.tonTransactionManager.sendCrossChainTransaction(evmProxyMsg, sender, tx);
83
+ return this.tonTransactionManager.sendCrossChainTransaction(evmProxyMsg, sender, tx, waitOptions);
84
84
  }
85
- async sendCrossChainTransactions(sender, txs, options) {
85
+ async sendCrossChainTransactions(sender, txs, waitOptions) {
86
86
  const normalizedTxs = await Promise.all(txs.map(async (tx) => ({
87
87
  evmProxyMsg: tx.evmProxyMsg,
88
88
  options: tx.options,
89
89
  assets: await (0, Utils_1.normalizeAssets)(this.config, tx.assets),
90
90
  })));
91
- return this.tonTransactionManager.sendCrossChainTransactions(sender, normalizedTxs, options);
91
+ return this.tonTransactionManager.sendCrossChainTransactions(sender, normalizedTxs, waitOptions);
92
92
  }
93
93
  async bridgeTokensToTON(signer, value, tonTarget, assets, tvmExecutorFee, tvmValidExecutors) {
94
94
  const normalizedAssets = await (0, Utils_1.normalizeAssets)(this.config, assets);
@@ -46,9 +46,6 @@ class TonTxFinalizer {
46
46
  const errorMessage = error.message;
47
47
  // Rate limit error (429) - retry
48
48
  if (errorMessage.includes('429')) {
49
- if (i > 0) {
50
- await (0, Utils_1.sleep)(delay);
51
- }
52
49
  continue;
53
50
  }
54
51
  // Log all errors except 404 Not Found
@@ -56,10 +53,8 @@ class TonTxFinalizer {
56
53
  const logMessage = error instanceof Error ? error.message : error;
57
54
  console.warn(`Failed to fetch adjacent transactions for ${hash}:`, logMessage);
58
55
  }
59
- if (i > 0) {
60
- await (0, Utils_1.sleep)(delay);
61
- }
62
56
  }
57
+ await (0, Utils_1.sleep)(delay);
63
58
  }
64
59
  return [];
65
60
  }
@@ -20,11 +20,11 @@ export declare const generateFeeData: (feeParams?: FeeParams) => Cell | undefine
20
20
  export declare function waitUntilSuccess<T, TContext = unknown, A extends unknown[] = unknown[]>(options: WaitOptions<T, TContext> | undefined, operation: (...args: A) => Promise<T>, operationDescription?: string, ...args: A): Promise<T>;
21
21
  export declare function formatObjectForLogging(obj: unknown): string;
22
22
  export declare function getBouncedAddress(tvmAddress: string): string;
23
- export declare function aggregateTokens(assets?: Asset[]): {
23
+ export declare function aggregateTokens(assets?: Asset[]): Promise<{
24
24
  jettons: FT[];
25
25
  nfts: NFT[];
26
26
  ton?: TON;
27
- };
27
+ }>;
28
28
  export declare function sha256toBigInt(ContractName: string): bigint;
29
29
  export declare function mapAssetsToTonAssets(assets: Asset[]): TONAsset[];
30
30
  export declare function normalizeAsset(config: IConfiguration, input: AssetLike): Promise<Asset>;
@@ -199,30 +199,39 @@ function getBouncedAddress(tvmAddress) {
199
199
  bounceable: true,
200
200
  });
201
201
  }
202
- function aggregateTokens(assets) {
203
- const jettonsMap = new Map();
204
- const nftsMap = new Map();
202
+ async function aggregateTokens(assets) {
203
+ const uniqueAssetsMap = new Map();
205
204
  let ton;
206
- for (const asset of assets ?? []) {
207
- if (asset.rawAmount === 0n && asset.type === Struct_1.AssetType.FT) {
205
+ for await (const asset of assets ?? []) {
206
+ if (asset.type !== Struct_1.AssetType.FT)
207
+ continue;
208
+ if (asset.rawAmount === 0n) {
208
209
  throw (0, errors_1.zeroRawAmountError)(asset.address || 'NATIVE TON');
209
210
  }
210
- if (asset.type === Struct_1.AssetType.FT) {
211
- if (!asset.address) {
212
- ton = ton ? ton.addRawAmount(asset.rawAmount) : asset.clone;
213
- }
214
- else {
215
- const existing = jettonsMap.get(asset.address);
216
- jettonsMap.set(asset.address, (existing ? existing.addRawAmount(asset.rawAmount) : asset.clone));
217
- }
211
+ if (!asset.address) {
212
+ ton = ton ? ton.addRawAmount(asset.rawAmount) : asset.clone;
213
+ continue;
218
214
  }
219
- else if (asset.type === Struct_1.AssetType.NFT) {
220
- nftsMap.set(asset.address, asset.clone);
215
+ let jetton = uniqueAssetsMap.get(asset.address);
216
+ if (!jetton) {
217
+ jetton = asset.clone;
221
218
  }
219
+ else {
220
+ jetton = jetton.addRawAmount(asset.rawAmount);
221
+ }
222
+ uniqueAssetsMap.set(asset.address, jetton);
223
+ }
224
+ const jettons = Array.from(uniqueAssetsMap.values());
225
+ uniqueAssetsMap.clear();
226
+ for await (const asset of assets ?? []) {
227
+ if (asset.type !== Struct_1.AssetType.NFT)
228
+ continue;
229
+ uniqueAssetsMap.set(asset.address, asset.clone);
222
230
  }
231
+ const nfts = Array.from(uniqueAssetsMap.values());
223
232
  return {
224
- jettons: Array.from(jettonsMap.values()),
225
- nfts: Array.from(nftsMap.values()),
233
+ jettons,
234
+ nfts,
226
235
  ton,
227
236
  };
228
237
  }
@@ -231,11 +240,7 @@ function sha256toBigInt(ContractName) {
231
240
  return BigInt('0x' + hash.toString('hex'));
232
241
  }
233
242
  function mapAssetsToTonAssets(assets) {
234
- const { jettons, nfts, ton } = aggregateTokens(assets);
235
- const result = [...jettons, ...nfts];
236
- if (ton)
237
- result.push(ton);
238
- return result.map((asset) => ({
243
+ return assets.map((asset) => ({
239
244
  amount: asset.rawAmount.toString(),
240
245
  tokenAddress: asset.address || '',
241
246
  assetType: asset.type,
@@ -263,15 +268,9 @@ async function normalizeAsset(config, input) {
263
268
  const asset = await assets_1.AssetFactory.from(config, ftArgs);
264
269
  const rawAmount = 'rawAmount' in input ? input.rawAmount : undefined;
265
270
  const amount = 'amount' in input ? input.amount : 0;
266
- if (!rawAmount && !amount && asset.type === Struct_1.AssetType.FT) {
267
- throw (0, errors_1.zeroRawAmountError)(asset.address || 'NATIVE TON');
268
- }
269
271
  return rawAmount ? asset.withRawAmount(rawAmount) : asset.withAmount(amount);
270
272
  }
271
273
  catch (e) {
272
- if (e instanceof errors_1.TokenError && e.errorCode === (0, errors_1.zeroRawAmountError)('').errorCode) {
273
- throw e;
274
- }
275
274
  console.warn('Failed to normalize FT asset', e);
276
275
  }
277
276
  const itemArgs = {
@@ -38,7 +38,7 @@ class SenderFactory {
38
38
  if (params.version === 'V5R1') {
39
39
  // manual setup of wallet id required to support wallet w5 both on mainnet and testnet
40
40
  config.walletId = {
41
- networkGlobalId: params.network === Struct_1.Network.MAINNET ? -239 : -3,
41
+ networkGlobalId: params.network === Struct_1.Network.TESTNET ? -3 : -239,
42
42
  context: {
43
43
  walletVersion: 'v5r1',
44
44
  workchain: 0,
@@ -28,7 +28,7 @@ class TonConnectSender {
28
28
  const transaction = {
29
29
  validUntil,
30
30
  messages: chunk,
31
- network: chain == Struct_1.Network.MAINNET ? ui_1.CHAIN.MAINNET : ui_1.CHAIN.TESTNET,
31
+ network: chain == Struct_1.Network.TESTNET ? ui_1.CHAIN.TESTNET : ui_1.CHAIN.MAINNET,
32
32
  };
33
33
  try {
34
34
  const response = await this.tonConnect.sendTransaction(transaction);
@@ -54,11 +54,6 @@ export type StageProfilingResponse = ResponseBase<ExecutionStagesByOperationId>;
54
54
  export type TACSimulationResponse = ResponseBase<TACSimulationResult>;
55
55
  export type SuggestedTVMExecutorFeeResponse = ResponseBase<SuggestedTVMExecutorFee>;
56
56
  export type ConvertCurrencyResponse = ResponseBase<ConvertedCurrencyRawResult>;
57
- export type OperationIdWithLogIndex = {
58
- operationId: string;
59
- logIndex: number;
60
- };
61
- export type OperationIdWithLogIndexResponse = ResponseBase<OperationIdWithLogIndex>;
62
57
  export interface SendResult {
63
58
  success: boolean;
64
59
  result?: unknown;
@@ -1,6 +1,6 @@
1
1
  import { SandboxContract } from '@ton/sandbox';
2
2
  import { OpenedContract } from '@ton/ton';
3
- import { AbstractProvider } from 'ethers';
3
+ import { AbstractProvider, Addressable } from 'ethers';
4
4
  import { JettonMinter, JettonMinterData } from '../../artifacts/tonTypes';
5
5
  import type { FT, NFT } from '../assets';
6
6
  import type { Asset, ContractOpener, ILogger } from '../interfaces';
@@ -44,11 +44,7 @@ export type TACParams = {
44
44
  /**
45
45
  * Address of TAC settings contract. Use only for tests.
46
46
  */
47
- settingsAddress?: string;
48
- /**
49
- * Address of TAC smart account factory contract. Use only for tests.
50
- */
51
- saFactoryAddress?: string;
47
+ settingsAddress?: string | Addressable;
52
48
  };
53
49
  export type TONParams = {
54
50
  /**
@@ -291,13 +287,6 @@ export type CrossChainTransactionOptions = {
291
287
  calculateRollbackFee?: boolean;
292
288
  withoutSimulation?: boolean;
293
289
  validateAssetsBalance?: boolean;
294
- waitOperationId?: boolean;
295
- waitOptions?: WaitOptions<string>;
296
- };
297
- export type BatchCrossChainTransactionOptions = Omit<CrossChainTransactionOptions, 'waitOperationId' | 'waitOptions'>;
298
- export type CrossChainTransactionsOptions = {
299
- waitOperationIds?: boolean;
300
- waitOptions?: WaitOptions<OperationIdsByShardsKey>;
301
290
  };
302
291
  export type ExecutionFeeEstimationResult = {
303
292
  feeParams: FeeParams;
@@ -308,11 +297,6 @@ export type CrosschainTx = {
308
297
  assets?: Asset[];
309
298
  options?: CrossChainTransactionOptions;
310
299
  };
311
- export type BatchCrossChainTx = {
312
- evmProxyMsg: EvmProxyMsg;
313
- assets?: Asset[];
314
- options?: BatchCrossChainTransactionOptions;
315
- };
316
300
  export type AssetLike = Asset | FT | NFT | {
317
301
  rawAmount: bigint;
318
302
  } | {
@@ -329,7 +313,7 @@ export type AssetLike = Asset | FT | NFT | {
329
313
  address: TVMAddress | EVMAddress;
330
314
  itemIndex: bigint;
331
315
  };
332
- export type BatchCrossChainTxWithAssetLike = Omit<BatchCrossChainTx, 'assets'> & {
316
+ export type CrosschainTxWithAssetLike = Omit<CrosschainTx, 'assets'> & {
333
317
  assets?: AssetLike[];
334
318
  };
335
319
  export interface WaitOptions<T = unknown, TContext = unknown> {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tonappchain/sdk",
3
- "version": "0.7.1-frost-test-1",
3
+ "version": "0.7.2-gas-price-0.1",
4
4
  "repository": "https://github.com/TacBuild/tac-sdk.git",
5
5
  "author": "TAC. <developers@tac>",
6
6
  "license": "MIT",
@@ -49,6 +49,7 @@
49
49
  "dist"
50
50
  ],
51
51
  "scripts": {
52
+ "prebuild": "git submodule update --init --recursive",
52
53
  "litebuild": "rm -rf dist && tsc --declaration",
53
54
  "build": "rm -rf dist && npm run build:artifacts && tsc --declaration",
54
55
  "build:artifacts:tac:dev": "cd artifacts/dev/l2-evm && npm i && npx hardhat compile && rsync -avh --delete ./artifacts ./scripts ./typechain-types ../tac/internal/",
@@ -59,7 +60,7 @@
59
60
  "build:artifacts:ton:mainnet": "cd artifacts/mainnet/l1_tvm_ton && npm i && npm run compile:ts && npm run build:all && rsync -avh --delete ./build ./wrappers ../ton/internal/",
60
61
  "build:artifacts:ton:all": "npm run build:artifacts:ton:dev && npm run build:artifacts:ton:testnet && npm run build:artifacts:ton:mainnet",
61
62
  "build:artifacts:tac:all": "npm run build:artifacts:tac:dev && npm run build:artifacts:tac:testnet && npm run build:artifacts:tac:mainnet",
62
- "build:artifacts": "npm run build:artifacts:ton:all && npm run build:artifacts:tac:all",
63
+ "build:artifacts": "npm run prebuild && npm run build:artifacts:ton:all && npm run build:artifacts:tac:all",
63
64
  "test": "jest --verbose --runInBand",
64
65
  "release": "yarn build && yarn release-it --npm.yarn1",
65
66
  "lint": "eslint .",