@tonappchain/sdk 0.7.2-gas-price-0.3 → 0.7.2-payload-builder-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.
- package/dist/artifacts/dev/ton/internal/build/CrossChainLayer.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/build/Executor.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/build/JettonMinter.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/build/JettonProxy.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/build/JettonWallet.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/build/NFTItem.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/build/NFTProxy.compiled.json +1 -1
- package/dist/artifacts/dev/ton/internal/wrappers/CrossChainLayer.d.ts +13 -1
- package/dist/artifacts/dev/ton/internal/wrappers/CrossChainLayer.js +45 -7
- package/dist/artifacts/dev/ton/internal/wrappers/JettonMinter.d.ts +2 -2
- package/dist/artifacts/dev/ton/internal/wrappers/JettonMinter.js +2 -2
- package/dist/src/adapters/retryableContractOpener.js +14 -3
- package/dist/src/assets/AssetFactory.js +8 -2
- package/dist/src/assets/TON.d.ts +2 -1
- package/dist/src/assets/TON.js +1 -0
- package/dist/src/errors/instances.d.ts +0 -1
- package/dist/src/errors/instances.js +1 -3
- package/dist/src/interfaces/Asset.d.ts +2 -1
- package/dist/src/interfaces/ILiteSequencerClient.d.ts +1 -6
- package/dist/src/interfaces/IOperationTracker.d.ts +1 -6
- package/dist/src/interfaces/ISimulator.d.ts +7 -0
- package/dist/src/interfaces/ITONTransactionManager.d.ts +20 -1
- package/dist/src/interfaces/ITacSDK.d.ts +10 -1
- package/dist/src/sdk/Consts.d.ts +1 -0
- package/dist/src/sdk/Consts.js +2 -1
- package/dist/src/sdk/LiteSequencerClient.d.ts +0 -2
- package/dist/src/sdk/LiteSequencerClient.js +0 -9
- package/dist/src/sdk/OperationTracker.d.ts +1 -2
- package/dist/src/sdk/OperationTracker.js +0 -20
- package/dist/src/sdk/Simulator.d.ts +20 -1
- package/dist/src/sdk/Simulator.js +160 -0
- package/dist/src/sdk/TONTransactionManager.d.ts +4 -3
- package/dist/src/sdk/TONTransactionManager.js +24 -1
- package/dist/src/sdk/TacSdk.d.ts +2 -6
- package/dist/src/sdk/TacSdk.js +4 -8
- package/dist/src/structs/InternalStruct.d.ts +3 -7
- package/dist/src/structs/Struct.d.ts +6 -7
- package/package.json +2 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "efc72b938535bd03ad462f377afaaa007cd918e06474b420864fa637a994dc94", "hashBase64": "78crk4U1vQOtRi83evqqAHzZGOBkdLQghk+mN6mU3JQ=", "hex": "b5ee9c7241023d010012a7000114ff00f4a413f4bcf2c80b01020120023902014803250168d0eda2edfb20c700925f04e001d0d3030171b0925f04e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f0101d33f01120401b8ed44d0fa4001f861fa4001f862fa4001f863d401d0d3ff0131f864d401d0fa0001f86dfa0001f86cfa0030f86ed401f86fd430d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f8665365a1f8460504aef80701830cf94130f8075003a101a6648200a9fa5003a0128209e1338070f8370170f836a066b608a1a6645166a122821048e660b5bae3022282106c582059bae3002282100e50d313bae302303435248210cf6a5da4ba06070d1700c46c71811d6570f8365cbcf2e064f84e59a1a0f86ef846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5402fe03d31ffa00f404fa4055302170547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e255027f266ec000f84df84c5007a816a05240b915b0927034de5320a022a027a02e81391b70f836a0a052c0be5240b0e30210365f06288014fb02c88210ae7df95b2502cb1fcb3f12cb1f22cf16c9702702080c02fc3339393a3b5266a05008a05008a026a08014fb02f84e5004a0f86ef846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54216ec00092316de30d05c8cb1f2101cb3f5003cf16090a001a01c8f400f84dfa02f84cfa02c901fe5003fa0213f40001cf16c982106c582059017f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0021d70b01c000b38e3bc88210d53276db5802cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00915be20b0004db3100748010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f80fc000938100cc928064e2f2f00302da323501fa40d4d4f828f84f52300270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c97001f90074c8cb0212ca07cbffc9d05006c705f2e04701d7393078d721d3ff0131f8468307f40e6fa131f2e0c920d0f404f401fa40fa003020c300935b3234e30d0e1002fe280441381523d70b01c0008e70aa008150bd70f836a0738103b582100966018070f837a0801c8127e08209e1338070f837a0a47020c88210d7b9c06e580802cb1fcb3f23cf165004fa0258cf1671fa0214cb00cb00c9712070c87001ca0014cc13cb0012cb07cb07c9c87001cbff58cf167f01ca0058fa02ccc9c8ccc9e30d310f002c218307f48e6fa56c1291a4923070e201d0028307f41604fc70207f8ff2238307f47c6fa5208fe302d430d0d3ff0130fa40d20001209301fa00927058e2d430d0d20001209301fa00927058e2d4f404069233348e9634029233228e8c03d307d3073001c001f2e0cee24003e2216e8e90c804d014cf162210355980108011db3ce30d5144a004a114a0039132e201b3e6306c125222a11112131401ee7021c000965b705300f8388ee921c0018e2d5b801c8127e08209e1338070f8378208278d00738103b55870f837a08153b370f836a08042815cb270f838a4a08eb421c0028e2d5b8018811c488209e1338070f8377581058e82100966018070f837a08141a070f836a08024814bfa70f838a4a0e30ee2e23500a28e4dc85801cb055005cf165003fa0254712323ed41ed43ed44ed45ed479f5bc85003cf17c913775003cb6bcccced67ed65ed64ed63ed61747fed11987601cb6bcc01cf17ed41edf101f2ffc901fb00db06005c3154233380108011226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0001b8c200f2e064f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5482100e50d31350047f150188830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0014a101a1f84e5210bef2e0658010fb0201fa403020d70b01c000b3915be30d160078c88210d53276db580302cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0004fe8ffd3403d4f828f84f52300270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c97001f90074c8cb0212ca07cbffc9d05005c705f2e047028014fb0202fa40308210cf6a5da4587f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb0020d70b01c000b3e30f18193c1a0078c88210ae7df95b580302cb1fcb3fc970018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000025b02f8e024821074cd76b2ba8e633233f84313c705f2e04801d3ff0131f8648014fb02f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e0332382101f95f86cbae30231221b1c019a135f03f84ec300f2e0c8c88210f358b6d05802cb1fcb3ff84efa02c9f841f84e58801072226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0070f86e3c03f68210063199b7ba8e5c32f84112c705f2e046fa0030f86cf846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e02282103531465cbae3022282105cec6be0bae302221d1e1f00b832f84112c705f2e046fa0030f86df846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5400b832f84112c705f2e046fa4030f863f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5402f48210581879bcba8e6532f84112c705f2e046fa4030f862f8428b02c705f2d050f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e022821060094a1bbae30222202100b66c21f841c705f2e0468b02f862f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed5403fc82106a4fbe34ba8e5f6c21f842c705f2e049f842f8618b02f862f846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e022821020faec53bae3022282107ee5a6d0bae30222222324002e32f84112c705f2e046d421fb0401d0ed1eed53d430ed54017c32f84112c705f2e046d430f86f6df86682107ee5a6d0c8c970830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb003c00e88210e97250b7ba8e5d32f84112c705f2e046d32f0131f86bf846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed54e05b8210d53276dbbadc840ff2f0020120262a020158272800efb444bda89a1f48003f0c3f48003f0c5f48003f0c7a803a1a7fe0263f0c9a803a1f40003f0dbf40003f0d9f40061f0dda803f0dfa861a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cdf083f085f087f08bf08df08ff091f093f097f095f09bf099f09df09ff089001b3b4817da89a1f48003f0c3f48003f0c5f48003f0c7a803a1a7fe0263f0c9a803a1f40003f0dbf40003f0d9f40061f0dda803f0dfa861a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cd02900707020f8468307f4866fa5908e1801d32f01315303bc946c2251109130e2f8468307f47c6fa5e810235f03f847f848f849f84af84bf845f8440201202b2d01fbb9685ed44d0fa4001f861fa4001f862fa4001f863d401d0d3ff0131f864d401d0fa0001f86dfa0001f86cfa0030f86ed401f86fd430d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f866f828f84f120270705003c85003cf168b02cf16ca00ccc921c8cb0113f40012f400cb00c982c0022207001f90074c8cb0212ca07cbffc9d0010201202e3701e1b40f5f00e4b0619f28261f00ea00743f00fda89a1f48003f0c3f48003f0c5f48003f0c7a803a1a7fe0263f0c9a803a1f40003f0dbf40003f0d9f40061f0dda803f0dfa861a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cc11a1e80860fea68702f03fca60681049658a0820812750070f8375348a0a606536aa0810496a070f838525aa0526ba01a70f83818a07181012070f838a0533470f838aa00a08200fe585003a070f83612a017a08208278d0080648200a9fa5870f837a0810c1c70f836a024c3008e8d70f828541343f83c1024435012926c41e28ae66c21f80758a17030333602fe23d70b01c0008e70aa008150bd70f836a0738103b582100966018070f837a0801c8127e08209e1338070f837a0a47020c88210d7b9c06e580802cb1fcb3f23cf165004fa0258cf1671fa0214cb00cb00c9712070c87001ca0014cc13cb0012cb07cb07c9c87001cbff58cf167f01ca0058fa02ccc9c8ccc9e30d238307f48e3132005c306c22707121c8c9c87f01ca005006fa0215cc14cb0013cb0712cb07c9c87001cbff58cf167001ca00ccc9c8ccc900266fa56c1291a4923070e201d040148307f4160201a251128307f47c6fa5208ec002d430d0d3ff0130fa4031d20001209301fa00927058e2d430d0d2000192fa00927001e2d431f404310394303113a08e8d3101d307d3073001c001f2e0cee2029132e201b3123401fc7021c000965b705300f8388ee921c0018e2d5b801c8127e08209e1338070f8378208278d00738103b55870f837a08153b370f836a08042815cb270f838a4a08eb421c0028e2d5b8018811c488209e1338070f8377581058e82100966018070f837a08141a070f836a08024814bfa70f838a4a0e30ee2e201a170b60913a03500f221c0048e395b8208278d008010811e505870f8378209da9c008019812af85870f837aa00a08170e470f836a08019812af870f83c79810f5a70f838a0a4a08e3801c0038e2e308208278d00800f811d585870f8378209da9c0080198126955870f837a081440e70f836a07281051470f838a4a093f2c0cee2e20006f836a001fbb662dda89a1f48003f0c3f48003f0c5f48003f0c7a803a1a7fe0263f0c9a803a1f40003f0dbf40003f0d9f40061f0dda803f0dfa861a1a65e03f0d7a65e03f0cfa65e03f0d1a65e03f0d3a65e03f0d5a60603f0cbe80861f0cdf051f09e2404e0e0a00790a0079e2d16059e2d940199924391960227e80025e801960193038001e7001f90074c8cb0212ca07cbffc9d001f6f220c7009130e0d31f0182104b19e42abd94840ff2f0de8308d71820f901ed44d0fa4001f861fa4001f862fa4001f863d401d0d3ff0131f864d401d0fa0001f86dfa0001f86cfa0030f86ed401f86fd430d0d32f01f86bd32f01f867d32f01f868d32f01f869d32f01f86ad30301f865f40430f86601d3ff01f8443a01fe5e21f910f2a0f84901d32f0131f869f823f849bef2e0cdf849f84abef2e0cbf800f848f867f823f868f848f84ba0f86af823f845f84ba8a1f8468307f4866fa5908e1c01d32f013122bb9bf84652108307f45b30f866def8468307f47c6fa5e85f03c8f84a01cb2fc9d0f84652308307f416f866c85801cbff0101cb2ff8493b018001cb2ff84701cb2ff84801cb2ff84a01cb2fc982104b19e42a017f830771800cc8cb03cb01cb0813cbff02957158cb61cc987058cb6101d0cf16e2c98010fb003c009cf846f845c8f84b01cb2ff84701cb2ff84801cb2ff84901cb2ff84a01cb2fcb03f400c9f84fc8f84dfa02f84cfa02f84efa02c9c8f84401cbffc9c8f841cf16f842cf16f843cf16ccccccccc9ed541f981837" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "d814126967f6dfd2b19d98cb7fe56ce41eaaf47d27e69007058c83a0668511c1", "hashBase64": "2BQSaWf239KxnZjLf+Vs5B6q9H0n5pAHBYyDoGaFEcE=", "hex": "b5ee9c7241020e010002b6000114ff00f4a413f4bcf2c80b0102016202080290d03221c700925f03e0d0d30301ed44d0fa4001f861fa4001f862d20001f863d430f86471b08e843031db3ce0fa403001d31f0101d33f01120182103b6616c6bae3025f04840ff2f0030501ae8020d721d31f0101d33f01123282100e50d313baf2e096f84270f8638b02f862f844c8f841cf16f842cf16f84301ca00ccc9ed54f844c88210cf6a5da4580402cb1fcb3f12cc01cf16c97076fb02f8417058801081008204004c226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0002aef843f2d0c822f844d0f404f404fa40fa003010235f0301f901018307f40e6fa131f2e0cc01d4fa40fa403022db3cf807f844830cf9413025830cf94130f8075005a15323a60681049658a0820812750070f8370b54155b0d0601fe7181012070f838506570f838a70314a05970f83ca08200fe5858a070f836a08208278d0080648200a9fa5870f837a001a0bcb38e352572fb0224706d80108306226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f80ff230def844c882100e50d313580602cb1fcb3f58cf16120700aacc12cc01cf16c9028010fb02f8417058038018810090226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb007ff863f862f844c8f841cf16f842cf16f84301ca00ccc9ed54020148090a0067ba30bed44d0fa4001f861fa4001f862d20001f863d430f864f844d0f404f404fa40fa003010235f0301f901018307f40e6fa13180201200b0c0041b444bda89a1f48003f0c3f48003f0c5a40003f0c7a861f0c9f083f085f087f08900137b40adda89a1f48003f0c3f48003f0c5a40003f0c7a861f0c9b678ff00d003cd739f2e0c9d30701c003f2e0cad430f844f900018307f40e6fa131f2e0cbfea68f77" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "bcd9666381b77df5b6bb38374e42b3525fc783f8f46faef3e6fc3e556633e58c", "hashBase64": "vNlmY4G3ffW2uzg3TkKzUl/Hg/j0b67z5vw+VWYz5Yw=", "hex": "b5ee9c72410218010004f1000114ff00f4a413f4bcf2c80b0102016202110202ca030f04f7d4831c02497c138007434c0c05c6c2497c1383e900c0074c7c04074cfc0449455284d20072049f82082784ce01c3e0dd4512d82052860053ec0bb51343e80007e187e90007e18be90007e18f5007e1935007e197e1988a0842b9f7e56eeb8c088a08435ee701baeb8c088a0841ef765f7aeb8c08cc8608416061e6f20405060b007432f842c705f2e0498020d721fa40fa00307054130224026df034f84101a0f861f845f844c8f841fa02f842cf16f843cf16ccccf846cf16c9ed54008c32f842c705f2e049fa40fa00fa40fa00f4045e2325473307f034f84101a0f861f40430206eb392f8649130e2f845f844c8f841fa02f842cf16f843cf16ccccf846cf16c9ed5403f86c12fa00fa40f828f84523595970037054201314c85003fa0201cf1601cf16c922c8cb0112f400f400cb00c9f90074c8cb0212ca07cbffc9d05004c705f2e04af84122a1f861f845f844c8f841fa02f842cf16f843cf16ccccf846cf16c9ed5402fa40f40401d0fa00f404f40430103434f8425230c70520e30f7023070809005cc848138210b0afa74d52830a1582106c582059500502cb1fcb3f12cb1f01fa02f40001cf165004cf1658fa02f4000028355b33c88210d53276db580502cb1fcb3f13f400012a928018928010e2049381009093810082e21314db3c0a00988e48c85801cb055004cf1658fa02547120ed41ed43ed44ed45ed479d5bc85003cf17c9127158cb6acced67ed65ed64ed63ed61737fed11977001cb6a01cf17ed41edf101f2ffc901fb00db0503f6ba8e3031f842c705f2e049fa4030f863f8438b02c705f2d050f845f844c8f841fa02f842cf16f843cf16ccccf846cf16c9ed54e021821060094a1bba8e276c21f842c705f2e0498b02f863f845f844c8f841fa02f842cf16f843cf16ccccf846cf16c9ed54e02182106a4fbe34bae30221821023f78ab7bae302320c0d0e00566c21f843c705f2e04bf843f8628b02f863f845f844c8f841fa02f842cf16f843cf16ccccf846cf16c9ed54004c31f842c705f2e049d430f864f845f844c8f841fa02f842cf16f843cf16ccccf846cf16c9ed54008882101754ab63ba8e35f8425210c705f2e049706d80188306226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00e030840ff2f001b7ad32208405e35146560180b2c7f2cfd400fe80be0a33c58073c5807e80bd003e0a3e114408dc150804c5321400fe808073c58073c5b248b232c044bd003d0032c0325c087e401d3232c084b281f2fff2741c1000e00620402436cf201000a28e4dc85801cb055005cf165003fa0254712323ed41ed43ed44ed45ed479f5bc85003cf17c913775003cb6bcccced67ed65ed64ed63ed61747fed11987601cb6bcc01cf17ed41edf101f2ffc901fb00db06020120121502037a2013140054aa25ed44d0fa0001f861fa4001f862fa4001f863d401f864d401f865f866f841f842f843f844f845f8460040a9f7ed44d0fa0001f861fa4001f862fa4001f863d401f864d401f865f866f8460202711617009fadbcf6a2687d0000fc30fd2000fc317d2000fc31ea00fc326a00fc32fc337c147c22acb801b82a10098a642801fd0100e78b00e78b6491646580897a007a00658064fc803a646581096503e5ffe4e840004faf16f6a2687d0000fc30fd2000fc317d2000fc31ea00fc326a00fc32fc337c20bffc217c227c22c06f4040f4" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "d9f92ef725ccbbbe839bc0e76910e66adbeafb811648e5d46765a40af6e25ee4", "hashBase64": "2fku9yXMu76Dm8DnaRDmatvq+4EWSOXUZ2WkCvbiXuQ=", "hex": "b5ee9c7241020e010003a5000114ff00f4a413f4bcf2c80b01020162020d04f8d020c700925f04e001d0d3030171b0925f04e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f0101d33f0112ed44d0fa4001f861fa4001f862fa4030f8635165a18010811e508209e1338070f83766b608a15155a12182107362d09cbae302303333218210ae7df95bbae3022182107817b330bae30233200307080a018e3101fa0021c2008ebafa40f40401d0fa00f404f404301034342070547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e255023324104b03925f07e20402be04aa015003a001a001a001a081214370f836a081391b70f836a08115b470f836a08019812af870f83ca0812af870f836a0812ee070f836a08019812af882100966018070f837a080648200a9fa8209e1338070f837a015be226eb321b0e30f050600d630c85005cf1624cf1658fa02c9c804103782102906ab024813061582106c582059500502cb1fcb3f12cb1f01fa02f40001cf1613cc12ccc90176fb02f84170588010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000fc32333434443066706d7022c3009430206eb3de20c00091709171e270c882100f8a7ea5580a02cb1fcb3f5006fa025006cf165003cf1615cb005004fa02cb000191cc9131e27001c980108050226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f80f938100c8928064e2f2f0013631f841c705f2e0468020d721d430d0fa40fa40fa0030211034706d09012e31f841c705f2e046fa40fa40fa00fa40fa00f4043010560900d27022c3009430206eb3de20c00091709171e270c882100f8a7ea5580a02cb1fcb3f5006fa025006cf165003cf1615cb005004fa02cb000191cc9131e27001c980108050226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0002e08210581879bcba8e2730f84212c705f2e047fa4030f863f8438b02c705f2d050c8f841cf16f842cf16f843cf16c9ed54e020821060094a1bba8e1c5bf842c705f2e0478b02f863c8f841cf16f842cf16f843cf16c9ed54e02082106a4fbe34bae302821020faec53bae3025b840ff2f00b0c00525bf843c705f2e048f8438b02c705f2d050f843f8628b02f863c8f841cf16f842cf16f843cf16c9ed54002cf84212c705f2e047d421fb0401d0ed1eed53d430ed540035a0844bda89a1f48003f0c3f48003f0c5f48061f0c7f083f085f087db520c60" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "2626cfbe9db7a4f30ddfd0ea01797ac84fddc3502cb39c2a17b85a35fc119210", "hashBase64": "JibPvp23pPMN39DqAXl6yE/dw1Ass5wqF7haNfwRkhA=", "hex": "b5ee9c7241021501000525000114ff00f4a413f4bcf2c80b0102016202140202ca0313020120041204cdd0831c02497c138007434c0c05c6c2544d7c0fc0e383e903e900c7e800c7d007e800c7e80004c5c3e0e80b4c7c048208403e29fa96ea3a14c0d1676cf3808208405e351466ea3a14c0c96b6cf380d4920841657c1ef2ea3a10d1676cf3817c120840153e8d96ea05090e1101da03d33f0101fa00fa4021f0155bed44d0fa0001f861fa4001f862fa4030f863f84123a1f861f8425006c705f2e2c1f841c2fff2e2c2f843f82a7054201314c85003fa0201cf1601cf16c922c8cb0112f400f400cb00c97021f90074c8cb0212ca07cbffc9d005fa40f401fa00200601fc20d70b009bd74bc00101c001b0f2e2c49130e2c88210178d4519580702cb1fcb3f5004fa02f842cf1601cf1622fa025003cf1643152191729171e2f839206e938129ad9120e2216e9431812ca39101e25023a813a07381034f70f83ca00270f83612a00170f836a0738103b582100966018070f837a0bcf2b070401380180701308050db3cf841f842f843c85003fa0201cf1601cf16c9ed540800a28e4dc85801cb055005cf165003fa0254712323ed41ed43ed44ed45ed479f5bc85003cf17c913775003cb6bcccced67ed65ed64ed63ed61747fed11987601cb6bcc01cf17ed41edf101f2ffc901fb00db0603f2ed44d0fa0001f861fa4001f862fa4030f86303d33f0101fa00f84122a0f861fa40fa40f84327c705f843f82a25595970037054201314c85003fa0201cf1601cf16c922c8cb0112f400f400cb00c9f90074c8cb0212ca07cbffc9d05008c70517b1f2e2c305fa0021925f04e30d22d70b01c000b3925f04e30d0a0b0d0140c882107362d09c2602cb1fcb3f5004fa0258cf1658cf16f8425980188011db3c0c015c03a1f82fa0738103b582100966018070f837b60972fb0270c88210d53276db580402cb1fcb3f128010810082db3c0c00988e48c85801cb055004cf1658fa02547120ed41ed43ed44ed45ed479d5bc85003cf17c9127158cb6acced67ed65ed64ed63ed61737fed11977001cb6a01cf17ed41edf101f2ffc901fb00db050028f841f842f843c85003fa0201cf1601cf16c9ed5401f4ed44d0fa0001f861fa4001f862fa4030f86303d33f0101fa00fa40f40430206e2092316d9201d0e221917093fa0001e222916d9401f40459e20392316d9401f40430e2f84125a1f861f8425008c705f2e2c1f841c2fff2e2c2c821fa0212f40016f400c9c882107bdd97de580502cb1fcb3f58fa02f842cf16210f01e8d70b01c0009331f8429101e2cf16f400c94133f839206e938121cd9120e2216e9431812ca39101e203aa0112a00170f836a081287570f836a081391b70f836a08125b670f836a00170f836a080648200a9fa8209e1338070f837a0801c8127e08209e1338070f837a0bcf2b0f843705880188050100074226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f841f842f843c85003fa0201cf1601cf16c9ed5400b08e51ed44d0fa0001f861fa4001f862fa4030f863738103b582100966018070f83770fb02f842706d8010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00e0840ff2f00013a2fd2210e0007970a6c0009fae200835c87b51343e80007e187e90007e18be900c3e18f4c7c048208405e351466e8060841ef765f7aeac7cb8b1601035c87e800c3e1040683e187e107e10be10f21400fe808073c58073c5b27b55200039a0f605da89a1f40003f0c3f48003f0c5f48061f0c7f083f085f087f0550958ae7f" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "3b204bbf7facf521e4a442f2f560ad6b9d38cda92eab1320d7cc1fac42815ec9", "hashBase64": "OyBLv3+s9SHkpELy9WCta504zakuqxMg18wfrEKBXsk=", "hex": "b5ee9c72410216010004a6000114ff00f4a413f4bcf2c80b0102016202150202ca0314020120041301bdd0cc8b1c02497c0f83434c0c05c6c238f16fb51343480007e1874ffc07e18b500743e90007e18fe90007e19be900c3e193d010c3e19600835c874c7c04c60841b1608166ebcb832dffe187c0e383e903e900c7e800c7d007e800c7e80004c60504a4ed44d0d20001f861d3ff01f862d401d0fa4001f863fa4001f866fa4030f864f40430f86503d31f0101d33f0112218210bd6ea770bae3022182105fcc3d14bae3022182102fcb26a2bae30221820bb390ceba06070a0b00e8313432f841b3f2e0c8f84301c705f2e048fa4001f864d401f8657ff861f0387581058e82100966018070f83772fb02c8821005138d91580302cb1fcb3f8b02cf1601cf16c9f84470588010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0002c83110344013f841f2e0c9f84414c705f2e047fa4021f0155bfa40d2000130fa0022d70b01c000b35427272191729171e2f839206e9430812dcade02a812a07581058e82100966018070f837a00170f836a0bcf2b020923034e30d02923031e30df864f03808090084c8821005138d912502cb1fcb3ff844cf165006cf16c9544266801071226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00009e22f0155bc88210d53276db5802cb1fcb3fc97581058e82100966018070f83776fb0212700180108306226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb000096345b32f841f2e0c9c882108b7717355802cb1fcb3ff84201cbfff843cf16c9700180108042226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00015e8e873110344013db3ce030316c228210ae7df95bba8e12f841b3f2e0c8f846c705f2e0467ff861f038e030840ff2f00c01a0f841f2e0c9f84414c705f2e047fa40f40401d0fa00f404f404301034342070547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e2550233f8465260c70525105b50a443300d04faf839206e9430812d20de5aa058a05003a001aa00a00170f836a081391b70f836a081121e70f836a080648200a9fa8209e1338070f837a07581058e82100966018070f837a0bcf2b0248e123034c88210d53276db580302cb1fcb3ff400e30d70f861f038218e107581058e82100966018070f83776fb02de7022e30f030e0f10110060c88210bcd19310f844102510464303081582106c582059500502cb1fcb3f12cb1f01fa02f40001cf16f844cf1613f400000480180004801001189381009093810082e213db3c1200988e48c85801cb055004cf1658fa02547120ed41ed43ed44ed45ed479d5bc85003cf17c9127158cb6acced67ed65ed64ed63ed61737fed11977001cb6a01cf17ed41edf101f2ffc901fb00db050013a2fd2210e0007970a6c00045ae3e11723e10f3c5be11b3c5be1133c5b2723e104072803e108072fff33d00327b5520007ba11f9fda89a1a40003f0c3a7fe03f0c5a803a1f48003f0c7f48003f0cdf48061f0c9e80861f0cbf08335f083f085f087f089f08bc1f083f085f0871604db387929ff" }
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{ "hash": "
|
|
1
|
+
{ "hash": "10be820c5430a474d5c0cb66c22eb1fc992556acbeb5be47398ab2dec280fe6c", "hashBase64": "EL6CDFQwpHTVwMtmwi6x/JklVqy+tb5HOYqy3sKA/mw=", "hex": "b5ee9c7241020d01000381000114ff00f4a413f4bcf2c80b01020162020c04f6d020c700925f04e001d0d3030171b0925f04e0fa40fa4031fa0031f401fa0031fa00013170f83a02d31f0101d33f01125165a1800f811d588209e1338070f83766b608a15155a1ed44d0fa4001f861fa4001f862fa4030f863218210ae7df95bbae3022182107817b330bae30221821005138d91bae302306c33200304050900c05b6c22f84112c705f2e0468020d721fa40fa4030c882105fcc3d14580402cb1fcb3f22cf1658cf167001ca0070fa027001ca00c9700180108050226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000c45b32f841c705f2e046fa40fa40fa0030c882105fcc3d14580602cb1fcb3f21cf1601cf167001ca005003fa027001ca00c90176fb0270018010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0001783101fa40f40401d0fa00f404f404301034342070547000246ec0008e156c3101d0d300fa00fa0023963403fa0030039130e29134e255023324104a0306029e04aa015003a001a001a001a0811e0870f836a081391b70f836a081128170f836a0812dca70f836a0801981269582100966018070f837a080648200a9fa8209e1338070f837a014be226eb321b0e30f070800c430c8471382108b0929625120071582106c582059500502cb1fcb3f12cb1f01fa02f40001cf1601cf1601cf1612ccc90176fb02f84170588010810082226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb0000b835355bc882105fcc3d14580502cb1fcb3f22cf1658cf167001ca0070fa027001ca00c912700180108050226eb32091719170e2c8500401cb055006cf165004fa02cb6a039358cc019130e201c901fb00f80f938100c8928064e2f2f002e08210581879bcba8e2730f84212c705f2e047fa4030f863f8438b02c705f2d050c8f841cf16f842cf16f843cf16c9ed54e020821060094a1bba8e1c5bf842c705f2e0478b02f863c8f841cf16f842cf16f843cf16c9ed54e02082106a4fbe34bae302821020faec53bae3025b840ff2f00a0b00525bf843c705f2e048f8438b02c705f2d050f843f8628b02f863c8f841cf16f842cf16f843cf16c9ed54002cf84212c705f2e047d421fb0401d0ed1eed53d430ed540035a0844bda89a1f48003f0c3f48003f0c5f48061f0c7f083f085f0871d6c5f98" }
|
|
@@ -5,6 +5,7 @@ export type CrossChainLayerConfig = {
|
|
|
5
5
|
adminAddress: string;
|
|
6
6
|
newAdminAddress?: string;
|
|
7
7
|
sequencerMultisigAddress: string;
|
|
8
|
+
groupPublicKey?: bigint;
|
|
8
9
|
maxRootsSize: number;
|
|
9
10
|
merkleRoots?: MerkleRoot[];
|
|
10
11
|
prevEpoch?: number;
|
|
@@ -25,6 +26,7 @@ export type EpochInfo = {
|
|
|
25
26
|
messageCollectEndTime: number;
|
|
26
27
|
nextVotingTime: number;
|
|
27
28
|
epochDelay: number;
|
|
29
|
+
groupPublicKey: bigint;
|
|
28
30
|
};
|
|
29
31
|
export type ExecutorData = {
|
|
30
32
|
address: Address;
|
|
@@ -57,6 +59,7 @@ export declare const CrossChainLayerOpCodes: {
|
|
|
57
59
|
newAdmin_confirmChangingAdminAddress: number;
|
|
58
60
|
sequencerMultisig_changeSequencerMultisigAddress: number;
|
|
59
61
|
sequencerMultisig_updateMerkleRoot: number;
|
|
62
|
+
sequencerMultisig_updateGroupPublicKey: number;
|
|
60
63
|
};
|
|
61
64
|
export declare const CrossChainLayerErrors: {
|
|
62
65
|
noErrors: number;
|
|
@@ -73,6 +76,9 @@ export declare const CrossChainLayerErrors: {
|
|
|
73
76
|
votingNotActive: number;
|
|
74
77
|
messageCollectEndTimeLow: number;
|
|
75
78
|
notEnoughProtocolFee: number;
|
|
79
|
+
messageCollectEndTimeHigh: number;
|
|
80
|
+
invalidSenderSignature: number;
|
|
81
|
+
unknownOp: number;
|
|
76
82
|
};
|
|
77
83
|
export declare function crossChainLayerConfigToCell(config: CrossChainLayerConfig): Cell;
|
|
78
84
|
export declare class CrossChainLayer implements Contract {
|
|
@@ -111,7 +117,12 @@ export declare class CrossChainLayer implements Contract {
|
|
|
111
117
|
payload: Cell;
|
|
112
118
|
responseAddress: Address;
|
|
113
119
|
}): Promise<void>;
|
|
114
|
-
|
|
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: {
|
|
115
126
|
queryId?: number;
|
|
116
127
|
merkleRoot: bigint;
|
|
117
128
|
messageCollectEndTime: number;
|
|
@@ -161,4 +172,5 @@ export declare class CrossChainLayer implements Contract {
|
|
|
161
172
|
getCurrentEpochInfo(provider: ContractProvider): Promise<EpochInfo>;
|
|
162
173
|
getExecutorAddress(provider: ContractProvider, payload: Cell): Promise<Address>;
|
|
163
174
|
getExecutorData(provider: ContractProvider, payload: Cell): Promise<ExecutorData>;
|
|
175
|
+
getEvmMsgToTvmFees(provider: ContractProvider, payload: Cell, proofBits: bigint, proofCells: bigint, executorFeeAmount: bigint, executorFeeToken: Address): Promise<bigint>;
|
|
164
176
|
}
|
|
@@ -3,6 +3,7 @@ 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");
|
|
6
7
|
const Constants_1 = require("./Constants");
|
|
7
8
|
const GasUtils_1 = require("./utils/GasUtils");
|
|
8
9
|
const MerkleRoots_1 = require("./utils/MerkleRoots");
|
|
@@ -33,7 +34,8 @@ exports.CrossChainLayerOpCodes = {
|
|
|
33
34
|
admin_updateTacProtocolFee: 0x3531465c,
|
|
34
35
|
newAdmin_confirmChangingAdminAddress: 0x6a4fbe34,
|
|
35
36
|
sequencerMultisig_changeSequencerMultisigAddress: 0x5cec6be0,
|
|
36
|
-
sequencerMultisig_updateMerkleRoot:
|
|
37
|
+
sequencerMultisig_updateMerkleRoot: 0x4b19e42a,
|
|
38
|
+
sequencerMultisig_updateGroupPublicKey: 0x74cd76b2,
|
|
37
39
|
};
|
|
38
40
|
exports.CrossChainLayerErrors = {
|
|
39
41
|
noErrors: 0,
|
|
@@ -50,6 +52,9 @@ exports.CrossChainLayerErrors = {
|
|
|
50
52
|
votingNotActive: 202,
|
|
51
53
|
messageCollectEndTimeLow: 203,
|
|
52
54
|
notEnoughProtocolFee: 204,
|
|
55
|
+
messageCollectEndTimeHigh: 205,
|
|
56
|
+
invalidSenderSignature: 32,
|
|
57
|
+
unknownOp: 0xfffff,
|
|
53
58
|
};
|
|
54
59
|
function crossChainLayerConfigToCell(config) {
|
|
55
60
|
return (0, core_1.beginCell)()
|
|
@@ -57,6 +62,9 @@ function crossChainLayerConfigToCell(config) {
|
|
|
57
62
|
.storeAddress(config.newAdminAddress ? core_1.Address.parse(config.newAdminAddress) : null)
|
|
58
63
|
.storeAddress(core_1.Address.parse(config.sequencerMultisigAddress))
|
|
59
64
|
.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)()
|
|
60
68
|
.storeCoins(config.tacProtocolFee ? (0, core_1.toNano)(config.tacProtocolFee.toFixed(9)) : 0)
|
|
61
69
|
.storeCoins(config.tonProtocolFee ? (0, core_1.toNano)(config.tonProtocolFee.toFixed(9)) : 0)
|
|
62
70
|
.storeCoins(config.protocolFeeSupply ? (0, core_1.toNano)(config.protocolFeeSupply.toFixed(9)) : 0)
|
|
@@ -134,18 +142,34 @@ class CrossChainLayer {
|
|
|
134
142
|
.endCell(),
|
|
135
143
|
});
|
|
136
144
|
}
|
|
137
|
-
async
|
|
145
|
+
async sendUpdateGroupPublicKey(provider, via, value, opts) {
|
|
138
146
|
await provider.internal(via, {
|
|
139
147
|
value,
|
|
140
148
|
sendMode: core_1.SendMode.PAY_GAS_SEPARATELY,
|
|
141
149
|
body: (0, core_1.beginCell)()
|
|
142
|
-
.storeUint(exports.CrossChainLayerOpCodes.
|
|
150
|
+
.storeUint(exports.CrossChainLayerOpCodes.sequencerMultisig_updateGroupPublicKey, Constants_1.Params.bitsize.op)
|
|
143
151
|
.storeUint(opts.queryId || 0, Constants_1.Params.bitsize.queryId)
|
|
144
|
-
.storeUint(opts.
|
|
145
|
-
.storeUint(opts.messageCollectEndTime, Constants_1.Params.bitsize.time)
|
|
152
|
+
.storeUint(opts.groupPublicKey, Constants_1.Params.bitsize.hash)
|
|
146
153
|
.endCell(),
|
|
147
154
|
});
|
|
148
155
|
}
|
|
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
|
+
}
|
|
149
173
|
async sendAddProtocolFee(provider, via, value, opts) {
|
|
150
174
|
await provider.internal(via, {
|
|
151
175
|
value,
|
|
@@ -280,10 +304,12 @@ class CrossChainLayer {
|
|
|
280
304
|
const tonProtocolFee = Number((0, core_1.fromNano)(result.stack.readNumber()));
|
|
281
305
|
const protocolFeeSupply = Number((0, core_1.fromNano)(result.stack.readNumber()));
|
|
282
306
|
const executorCode = result.stack.readCell();
|
|
307
|
+
const groupPublicKey = result.stack.readBigNumber();
|
|
283
308
|
return {
|
|
284
309
|
adminAddress,
|
|
285
310
|
newAdminAddress,
|
|
286
311
|
sequencerMultisigAddress,
|
|
312
|
+
groupPublicKey,
|
|
287
313
|
maxRootsSize,
|
|
288
314
|
merkleRoots: (0, MerkleRoots_1.cellToArray)(merkleRoots),
|
|
289
315
|
prevEpoch,
|
|
@@ -306,6 +332,7 @@ class CrossChainLayer {
|
|
|
306
332
|
const nextVotingTime = result.stack.readNumber();
|
|
307
333
|
const epochDelay = result.stack.readNumber();
|
|
308
334
|
const maxRootsSize = result.stack.readNumber();
|
|
335
|
+
const groupPublicKey = result.stack.readBigNumber();
|
|
309
336
|
return {
|
|
310
337
|
lastMerkleRoot,
|
|
311
338
|
prevEpoch,
|
|
@@ -314,6 +341,7 @@ class CrossChainLayer {
|
|
|
314
341
|
nextVotingTime,
|
|
315
342
|
epochDelay,
|
|
316
343
|
maxRootsSize,
|
|
344
|
+
groupPublicKey,
|
|
317
345
|
};
|
|
318
346
|
}
|
|
319
347
|
async getExecutorAddress(provider, payload) {
|
|
@@ -329,8 +357,18 @@ class CrossChainLayer {
|
|
|
329
357
|
stateInit,
|
|
330
358
|
};
|
|
331
359
|
}
|
|
360
|
+
async getEvmMsgToTvmFees(provider, payload, proofBits, proofCells, executorFeeAmount, executorFeeToken) {
|
|
361
|
+
const result = await provider.get('calculate_evm_msg_to_tvm_fees', [
|
|
362
|
+
{ type: 'cell', cell: payload },
|
|
363
|
+
{ type: 'int', value: proofBits },
|
|
364
|
+
{ type: 'int', value: proofCells },
|
|
365
|
+
{ type: 'int', value: executorFeeAmount },
|
|
366
|
+
{ type: 'slice', cell: (0, core_1.beginCell)().storeAddress(executorFeeToken).endCell() },
|
|
367
|
+
]);
|
|
368
|
+
return result.stack.readBigNumber();
|
|
369
|
+
}
|
|
332
370
|
}
|
|
333
371
|
exports.CrossChainLayer = CrossChainLayer;
|
|
334
372
|
CrossChainLayer.minStorageDuration = 365 * 24 * 3600; //1 year
|
|
335
|
-
CrossChainLayer.storageStats = new GasUtils_1.StorageStats(
|
|
336
|
-
CrossChainLayer.addFeeGasConsumption =
|
|
373
|
+
CrossChainLayer.storageStats = new GasUtils_1.StorageStats(36550n, 90n);
|
|
374
|
+
CrossChainLayer.addFeeGasConsumption = 7525n;
|
|
@@ -19,7 +19,7 @@ export declare const JettonMinterErrors: {
|
|
|
19
19
|
};
|
|
20
20
|
export type JettonMinterConfig = {
|
|
21
21
|
totalSupply: bigint;
|
|
22
|
-
adminAddress
|
|
22
|
+
adminAddress?: Address;
|
|
23
23
|
newAdminAddress?: Address;
|
|
24
24
|
content: Cell;
|
|
25
25
|
jettonWalletCode: Cell;
|
|
@@ -28,7 +28,7 @@ export type JettonMinterConfig = {
|
|
|
28
28
|
export type JettonMinterData = {
|
|
29
29
|
totalSupply: bigint;
|
|
30
30
|
mintable: boolean;
|
|
31
|
-
adminAddress
|
|
31
|
+
adminAddress?: Address;
|
|
32
32
|
content: Cell;
|
|
33
33
|
walletCode: Cell;
|
|
34
34
|
};
|
|
@@ -166,7 +166,7 @@ class JettonMinter {
|
|
|
166
166
|
const res = await provider.get('get_jetton_data', []);
|
|
167
167
|
const totalSupply = res.stack.readBigNumber();
|
|
168
168
|
const mintable = res.stack.readBoolean();
|
|
169
|
-
const adminAddress = res.stack.
|
|
169
|
+
const adminAddress = res.stack.readAddressOpt() ?? undefined;
|
|
170
170
|
const content = res.stack.readCell();
|
|
171
171
|
const walletCode = res.stack.readCell();
|
|
172
172
|
return {
|
|
@@ -184,7 +184,7 @@ class JettonMinter {
|
|
|
184
184
|
async getFullData(provider) {
|
|
185
185
|
const res = await provider.get('get_full_data', []);
|
|
186
186
|
const totalSupply = res.stack.readBigNumber();
|
|
187
|
-
const adminAddress = res.stack.
|
|
187
|
+
const adminAddress = res.stack.readAddressOpt() ?? undefined;
|
|
188
188
|
const newAdminAddress = res.stack.readAddressOpt() ?? undefined;
|
|
189
189
|
const content = res.stack.readCell();
|
|
190
190
|
const jettonWalletCode = res.stack.readCell();
|
|
@@ -92,9 +92,20 @@ async function createDefaultRetryableOpener(tonRpcEndpoint, networkType, maxRetr
|
|
|
92
92
|
});
|
|
93
93
|
openers.push({ opener: tonClient, retries: maxRetries, retryDelay });
|
|
94
94
|
if (networkType !== Struct_1.Network.DEV) {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
95
|
+
try {
|
|
96
|
+
const opener4 = await (0, contractOpener_1.orbsOpener4)(networkType);
|
|
97
|
+
openers.push({ opener: opener4, retries: maxRetries, retryDelay });
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
// skip opener in case of failure
|
|
101
|
+
}
|
|
102
|
+
try {
|
|
103
|
+
const opener = await (0, contractOpener_1.orbsOpener)(networkType);
|
|
104
|
+
openers.push({ opener: opener, retries: maxRetries, retryDelay });
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// skip opener in case of failure
|
|
108
|
+
}
|
|
98
109
|
}
|
|
99
110
|
return new RetryableContractOpener(openers);
|
|
100
111
|
}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AssetFactory = void 0;
|
|
4
4
|
const errors_1 = require("../errors");
|
|
5
|
+
const Consts_1 = require("../sdk/Consts");
|
|
5
6
|
const Struct_1 = require("../structs/Struct");
|
|
6
7
|
const AssetCache_1 = require("./AssetCache");
|
|
7
8
|
const FT_1 = require("./FT");
|
|
@@ -9,7 +10,9 @@ const NFT_1 = require("./NFT");
|
|
|
9
10
|
const TON_1 = require("./TON");
|
|
10
11
|
class AssetFactory {
|
|
11
12
|
static async from(configuration, token) {
|
|
12
|
-
if (token.address === '' ||
|
|
13
|
+
if (token.address === '' ||
|
|
14
|
+
token.address === configuration.nativeTONAddress ||
|
|
15
|
+
token.address === Consts_1.TON_BURN_ADDRESS) {
|
|
13
16
|
if (token.tokenType !== Struct_1.AssetType.FT)
|
|
14
17
|
throw (0, errors_1.unknownTokenTypeError)(token.address, 'detected TON, but token type is not FT');
|
|
15
18
|
return TON_1.TON.create(configuration);
|
|
@@ -26,7 +29,10 @@ class AssetFactory {
|
|
|
26
29
|
}
|
|
27
30
|
static async createFTAsset(configuration, address) {
|
|
28
31
|
const ton = TON_1.TON.create(configuration);
|
|
29
|
-
if (address === configuration.nativeTONAddress ||
|
|
32
|
+
if (address === configuration.nativeTONAddress ||
|
|
33
|
+
address === '' ||
|
|
34
|
+
address === (await ton.getEVMAddress()) ||
|
|
35
|
+
address === Consts_1.TON_BURN_ADDRESS) {
|
|
30
36
|
return ton;
|
|
31
37
|
}
|
|
32
38
|
return FT_1.FT.fromAddress(configuration, address);
|
package/dist/src/assets/TON.d.ts
CHANGED
|
@@ -2,13 +2,14 @@ import { Cell } from '@ton/ton';
|
|
|
2
2
|
import { Asset, IConfiguration } from '../interfaces';
|
|
3
3
|
import type { SenderAbstraction } from '../sender';
|
|
4
4
|
import type { ShardTransaction } from '../structs/InternalStruct';
|
|
5
|
-
import { AssetType, FeeParams } from '../structs/Struct';
|
|
5
|
+
import { AssetType, FeeParams, Origin } from '../structs/Struct';
|
|
6
6
|
export declare class TON implements Asset {
|
|
7
7
|
readonly address: string;
|
|
8
8
|
readonly type: AssetType;
|
|
9
9
|
private evmAddress;
|
|
10
10
|
private _rawAmount;
|
|
11
11
|
private _config;
|
|
12
|
+
readonly origin: Origin;
|
|
12
13
|
constructor(config: IConfiguration);
|
|
13
14
|
static create(config: IConfiguration): TON;
|
|
14
15
|
get rawAmount(): bigint;
|
package/dist/src/assets/TON.js
CHANGED
|
@@ -32,4 +32,3 @@ export declare const missingJettonDataError: MetadataError;
|
|
|
32
32
|
export declare const zeroRawAmountError: (assetAddress: string) => TokenError;
|
|
33
33
|
export declare const sendCrossChainTransactionFailedError: (msg: string) => WalletError;
|
|
34
34
|
export declare const convertCurrencyNegativeOrZeroValueError: FormatError;
|
|
35
|
-
export declare const gasPriceFetchError: (msg: string, inner?: unknown) => FetchError;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
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;
|
|
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);
|
|
@@ -56,5 +56,3 @@ exports.zeroRawAmountError = zeroRawAmountError;
|
|
|
56
56
|
const sendCrossChainTransactionFailedError = (msg) => new errors_1.WalletError(`failed to send cross chain transaction: ${msg}`, 131);
|
|
57
57
|
exports.sendCrossChainTransactionFailedError = sendCrossChainTransactionFailedError;
|
|
58
58
|
exports.convertCurrencyNegativeOrZeroValueError = new errors_1.FormatError('Value cannot be negative or zero for currency conversion', 132);
|
|
59
|
-
const gasPriceFetchError = (msg, inner) => new errors_1.FetchError(`failed to fetch gas price: ${msg}`, 133, inner);
|
|
60
|
-
exports.gasPriceFetchError = gasPriceFetchError;
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import type { Cell } from '@ton/ton';
|
|
2
|
-
import { AssetType, FeeParams } from '../structs/Struct';
|
|
2
|
+
import { AssetType, FeeParams, Origin } from '../structs/Struct';
|
|
3
3
|
export interface Asset {
|
|
4
4
|
address: string;
|
|
5
5
|
type: AssetType;
|
|
6
6
|
rawAmount: bigint;
|
|
7
7
|
clone: Asset;
|
|
8
|
+
origin: Origin;
|
|
8
9
|
/**
|
|
9
10
|
* Returns a new asset instance with the specified transfer amount in human-readable units.
|
|
10
11
|
* Does not mutate the current asset instance.
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConvertCurrencyParams, ConvertedCurrencyResult, ExecutionStagesByOperationId, GetTVMExecutorFeeParams, OperationIdsByShardsKey, OperationType, StatusInfosByOperationId, SuggestedTVMExecutorFee, TACSimulationParams, TACSimulationResult,
|
|
1
|
+
import { ConvertCurrencyParams, ConvertedCurrencyResult, ExecutionStagesByOperationId, GetTVMExecutorFeeParams, OperationIdsByShardsKey, OperationType, StatusInfosByOperationId, SuggestedTVMExecutorFee, TACSimulationParams, TACSimulationResult, TransactionLinker } from '../structs/Struct';
|
|
2
2
|
export interface ILiteSequencerClient {
|
|
3
3
|
/** Retrieves the operation type by id. */
|
|
4
4
|
getOperationType(operationId: string): Promise<OperationType>;
|
|
@@ -40,9 +40,4 @@ export interface ILiteSequencerClient {
|
|
|
40
40
|
* @returns Promise resolving to detailed simulation result.
|
|
41
41
|
*/
|
|
42
42
|
simulateTACMessage(params: TACSimulationParams): Promise<TACSimulationResult>;
|
|
43
|
-
/**
|
|
44
|
-
* Gets TAC gas price.
|
|
45
|
-
* @returns Promise resolving to TAC gas price.
|
|
46
|
-
*/
|
|
47
|
-
getTACGasPrice(): Promise<TacGasPriceResponse>;
|
|
48
43
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ConvertCurrencyParams, ConvertedCurrencyResult, ExecutionStages, ExecutionStagesByOperationId, GetTVMExecutorFeeParams, OperationIdsByShardsKey, OperationType, SimplifiedStatuses, StatusInfo, StatusInfosByOperationId, SuggestedTVMExecutorFee, TACSimulationParams, TACSimulationResult,
|
|
1
|
+
import { ConvertCurrencyParams, ConvertedCurrencyResult, ExecutionStages, ExecutionStagesByOperationId, GetTVMExecutorFeeParams, OperationIdsByShardsKey, OperationType, SimplifiedStatuses, StatusInfo, StatusInfosByOperationId, SuggestedTVMExecutorFee, TACSimulationParams, TACSimulationResult, TransactionLinker, WaitOptions } from '../structs/Struct';
|
|
2
2
|
export interface IOperationTracker {
|
|
3
3
|
/**
|
|
4
4
|
* Returns the operation type for the given id, optionally waiting according to the provided policy.
|
|
@@ -78,9 +78,4 @@ export interface IOperationTracker {
|
|
|
78
78
|
* @returns Promise with suggested fee information.
|
|
79
79
|
*/
|
|
80
80
|
getTVMExecutorFee(params: GetTVMExecutorFeeParams, waitOptions?: WaitOptions<SuggestedTVMExecutorFee>): Promise<SuggestedTVMExecutorFee>;
|
|
81
|
-
/**
|
|
82
|
-
* Gets TAC gas price.
|
|
83
|
-
* @returns Promise resolving to TAC gas price.
|
|
84
|
-
*/
|
|
85
|
-
getTACGasPrice(): Promise<TacGasPriceResponse>;
|
|
86
81
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SenderAbstraction } from '../sender';
|
|
2
2
|
import { CrosschainTx, ExecutionFeeEstimationResult } from '../structs/Struct';
|
|
3
|
+
import { Asset } from './Asset';
|
|
3
4
|
export interface ISimulator {
|
|
4
5
|
/**
|
|
5
6
|
* Simulates a list of cross-chain transactions for a given sender.
|
|
@@ -15,4 +16,10 @@ export interface ISimulator {
|
|
|
15
16
|
* @returns Promise with fee estimation and execution info.
|
|
16
17
|
*/
|
|
17
18
|
getSimulationInfo(sender: SenderAbstraction, tx: CrosschainTx): Promise<ExecutionFeeEstimationResult>;
|
|
19
|
+
/**
|
|
20
|
+
* Estimates the total TON network fees required for a cross-chain transaction.
|
|
21
|
+
* @param assets Assets to be included in the transaction.
|
|
22
|
+
* @returns The total estimated fee in nanotons (1 TON = 10^9 nanotons) for processing all provided assets.
|
|
23
|
+
*/
|
|
24
|
+
estimateTONFees(assets: Asset[]): number;
|
|
18
25
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { SenderAbstraction } from '../sender';
|
|
2
|
-
import { BatchCrossChainTx, CrossChainTransactionsOptions, CrosschainTx, EvmProxyMsg, TransactionLinkerWithOperationId } from '../structs/Struct';
|
|
2
|
+
import { BatchCrossChainTx, CrossChainPayloadResult, CrossChainTransactionOptions, CrossChainTransactionsOptions, CrosschainTx, EvmProxyMsg, FeeParams, TransactionLinkerWithOperationId } from '../structs/Struct';
|
|
3
|
+
import { Asset } from './Asset';
|
|
3
4
|
export interface ITONTransactionManager {
|
|
4
5
|
/**
|
|
5
6
|
* Sends a single cross-chain transaction.
|
|
@@ -17,4 +18,22 @@ export interface ITONTransactionManager {
|
|
|
17
18
|
* @returns Array of transaction linkers, one per submitted transaction.
|
|
18
19
|
*/
|
|
19
20
|
sendCrossChainTransactions(sender: SenderAbstraction, txs: BatchCrossChainTx[], options?: CrossChainTransactionsOptions): Promise<TransactionLinkerWithOperationId[]>;
|
|
21
|
+
/**
|
|
22
|
+
* Builds the fee parameters for a cross-chain transaction.
|
|
23
|
+
* @param options Transaction configuration options.
|
|
24
|
+
* @param evmProxyMsg Encoded EVM proxy message.
|
|
25
|
+
* @param sender Sender abstraction for TVM message sending.
|
|
26
|
+
* @param tx Cross-chain transaction to bridge.
|
|
27
|
+
* @returns Promise with the fee parameters.
|
|
28
|
+
*/
|
|
29
|
+
buildFeeParams(options: CrossChainTransactionOptions, evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, tx: CrosschainTx): Promise<FeeParams>;
|
|
30
|
+
/**
|
|
31
|
+
* Prepares the transaction payloads required for a cross-chain operation without sending them.
|
|
32
|
+
* @param evmProxyMsg Encoded EVM proxy message.
|
|
33
|
+
* @param senderAddress TVM address of the transaction sender (wallet address).
|
|
34
|
+
* @param assets Assets to be included in the transaction.
|
|
35
|
+
* @param options Optional transaction configuration including error handling and executor settings.
|
|
36
|
+
* @returns Promise with the prepared transaction payloads.
|
|
37
|
+
*/
|
|
38
|
+
prepareCrossChainTransactionPayload(evmProxyMsg: EvmProxyMsg, senderAddress: string, assets: Asset[], options?: CrossChainTransactionOptions): Promise<CrossChainPayloadResult[]>;
|
|
20
39
|
}
|
|
@@ -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, BatchCrossChainTxWithAssetLike, CrossChainPayloadResult, CrossChainTransactionOptions, CrossChainTransactionsOptions, CrosschainTx, EVMAddress, EvmProxyMsg, ExecutionFeeEstimationResult, NFTAddressType, 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';
|
|
@@ -182,4 +182,13 @@ export interface ITacSDK {
|
|
|
182
182
|
* Returns the operation tracker instance used for querying operation statuses and utilities.
|
|
183
183
|
*/
|
|
184
184
|
getOperationTracker(): IOperationTracker;
|
|
185
|
+
/**
|
|
186
|
+
* Prepares the transaction payloads required for a cross-chain operation without sending them.
|
|
187
|
+
* @param evmProxyMsg Encoded EVM proxy message.
|
|
188
|
+
* @param senderAddress TVM address of the transaction sender (wallet address).
|
|
189
|
+
* @param assets Assets to be included in the transaction.
|
|
190
|
+
* @param options Optional transaction configuration including error handling and executor settings.
|
|
191
|
+
* @returns Promise with the prepared transaction payloads.
|
|
192
|
+
*/
|
|
193
|
+
prepareCrossChainTransactionPayload(evmProxyMsg: EvmProxyMsg, senderAddress: string, assets?: AssetLike[], options?: CrossChainTransactionOptions): Promise<CrossChainPayloadResult[]>;
|
|
185
194
|
}
|
package/dist/src/sdk/Consts.d.ts
CHANGED
package/dist/src/sdk/Consts.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TAC_DECIMALS = exports.TON_DECIMALS = exports.FIFTEEN_MINUTES = exports.TAC_SYMBOL = exports.TON_SYMBOL = exports.MAX_MSG_DEPTH = exports.MAX_HIGHLOAD_GROUP_MSG_NUM = exports.MAX_EXT_MSG_SIZE = exports.SOLIDITY_METHOD_NAME_REGEX = exports.SOLIDITY_SIGNATURE_REGEX = exports.DEFAULT_DELAY = exports.MAX_ITERATION_COUNT = exports.NFT_TRANSFER_FORWARD_TON_AMOUNT = exports.JETTON_TRANSFER_FORWARD_TON_AMOUNT = exports.TRANSACTION_TON_AMOUNT = void 0;
|
|
3
|
+
exports.TON_BURN_ADDRESS = exports.TAC_DECIMALS = exports.TON_DECIMALS = exports.FIFTEEN_MINUTES = exports.TAC_SYMBOL = exports.TON_SYMBOL = exports.MAX_MSG_DEPTH = exports.MAX_HIGHLOAD_GROUP_MSG_NUM = exports.MAX_EXT_MSG_SIZE = exports.SOLIDITY_METHOD_NAME_REGEX = exports.SOLIDITY_SIGNATURE_REGEX = exports.DEFAULT_DELAY = exports.MAX_ITERATION_COUNT = exports.NFT_TRANSFER_FORWARD_TON_AMOUNT = exports.JETTON_TRANSFER_FORWARD_TON_AMOUNT = exports.TRANSACTION_TON_AMOUNT = void 0;
|
|
4
4
|
const ton_1 = require("@ton/ton");
|
|
5
5
|
exports.TRANSACTION_TON_AMOUNT = (0, ton_1.toNano)(0.55);
|
|
6
6
|
exports.JETTON_TRANSFER_FORWARD_TON_AMOUNT = (0, ton_1.toNano)(0.2);
|
|
@@ -17,3 +17,4 @@ exports.TAC_SYMBOL = 'TAC';
|
|
|
17
17
|
exports.FIFTEEN_MINUTES = 15 * 60 * 1000;
|
|
18
18
|
exports.TON_DECIMALS = 9;
|
|
19
19
|
exports.TAC_DECIMALS = 18;
|
|
20
|
+
exports.TON_BURN_ADDRESS = 'EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAM9c';
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { IHttpClient, ILiteSequencerClient } from '../interfaces';
|
|
2
|
-
import { TacGasPriceResponse } from '../structs/InternalStruct';
|
|
3
2
|
import { ConvertCurrencyParams, ConvertedCurrencyResult, ExecutionStagesByOperationId, GetTVMExecutorFeeParams, OperationIdsByShardsKey, OperationType, StatusInfosByOperationId, SuggestedTVMExecutorFee, TACSimulationParams, TACSimulationResult, TransactionLinker } from '../structs/Struct';
|
|
4
3
|
export declare class LiteSequencerClient implements ILiteSequencerClient {
|
|
5
4
|
private readonly endpoint;
|
|
@@ -14,7 +13,6 @@ export declare class LiteSequencerClient implements ILiteSequencerClient {
|
|
|
14
13
|
getOperationStatuses(operationIds: string[], chunkSize?: number): Promise<StatusInfosByOperationId>;
|
|
15
14
|
convertCurrency(params: ConvertCurrencyParams): Promise<ConvertedCurrencyResult>;
|
|
16
15
|
simulateTACMessage(params: TACSimulationParams): Promise<TACSimulationResult>;
|
|
17
|
-
getTACGasPrice(): Promise<TacGasPriceResponse>;
|
|
18
16
|
getTVMExecutorFee(params: GetTVMExecutorFeeParams): Promise<SuggestedTVMExecutorFee>;
|
|
19
17
|
private processChunkedRequest;
|
|
20
18
|
}
|
|
@@ -164,15 +164,6 @@ class LiteSequencerClient {
|
|
|
164
164
|
throw (0, instances_1.simulationFetchError)(`endpoint ${this.endpoint} failed to complete request`, error);
|
|
165
165
|
}
|
|
166
166
|
}
|
|
167
|
-
async getTACGasPrice() {
|
|
168
|
-
try {
|
|
169
|
-
const response = await this.httpClient.get(new URL('stats', 'https://explorer.tac.build/api/v2/').toString());
|
|
170
|
-
return response.data;
|
|
171
|
-
}
|
|
172
|
-
catch (error) {
|
|
173
|
-
throw (0, instances_1.gasPriceFetchError)(`endpoint https://explorer.tac.build/api/v2/ failed to complete request`, error);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
167
|
async getTVMExecutorFee(params) {
|
|
177
168
|
try {
|
|
178
169
|
const response = await this.httpClient.post(new URL('/ton/calculator/ton-executor-fee', this.endpoint).toString(), params, {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ILiteSequencerClient, ILiteSequencerClientFactory, ILogger, IOperationTracker } from '../interfaces';
|
|
2
|
-
import { ConvertCurrencyParams, ConvertedCurrencyResult, ExecutionStages, ExecutionStagesByOperationId, GetTVMExecutorFeeParams, Network, OperationIdsByShardsKey, OperationType, SimplifiedStatuses, StatusInfo, StatusInfosByOperationId, SuggestedTVMExecutorFee,
|
|
2
|
+
import { ConvertCurrencyParams, ConvertedCurrencyResult, ExecutionStages, ExecutionStagesByOperationId, GetTVMExecutorFeeParams, Network, OperationIdsByShardsKey, OperationType, SimplifiedStatuses, StatusInfo, StatusInfosByOperationId, SuggestedTVMExecutorFee, TACSimulationParams, TACSimulationResult, TransactionLinker, WaitOptions } from '../structs/Struct';
|
|
3
3
|
export declare class DefaultLiteSequencerClientFactory implements ILiteSequencerClientFactory {
|
|
4
4
|
createClients(endpoints: string[]): ILiteSequencerClient[];
|
|
5
5
|
}
|
|
@@ -18,6 +18,5 @@ export declare class OperationTracker implements IOperationTracker {
|
|
|
18
18
|
getSimplifiedOperationStatus(transactionLinker: TransactionLinker): Promise<SimplifiedStatuses>;
|
|
19
19
|
convertCurrency(params: ConvertCurrencyParams, waitOptions?: WaitOptions<ConvertedCurrencyResult>): Promise<ConvertedCurrencyResult>;
|
|
20
20
|
simulateTACMessage(params: TACSimulationParams, waitOptions?: WaitOptions<TACSimulationResult>): Promise<TACSimulationResult>;
|
|
21
|
-
getTACGasPrice(): Promise<TacGasPriceResponse>;
|
|
22
21
|
getTVMExecutorFee(params: GetTVMExecutorFeeParams, waitOptions?: WaitOptions<SuggestedTVMExecutorFee>): Promise<SuggestedTVMExecutorFee>;
|
|
23
22
|
}
|
|
@@ -287,26 +287,6 @@ class OperationTracker {
|
|
|
287
287
|
? await (0, Utils_1.waitUntilSuccess)(waitOptions, requestFn, 'OperationTracker: Simulating TAC message')
|
|
288
288
|
: await requestFn();
|
|
289
289
|
}
|
|
290
|
-
async getTACGasPrice() {
|
|
291
|
-
this.logger.debug(`Getting TAC gas price`);
|
|
292
|
-
const requestFn = async () => {
|
|
293
|
-
let lastError;
|
|
294
|
-
for (const client of this.clients) {
|
|
295
|
-
try {
|
|
296
|
-
const result = await client.getTACGasPrice();
|
|
297
|
-
this.logger.debug(`TAC gas price retrieved successfully`);
|
|
298
|
-
return result;
|
|
299
|
-
}
|
|
300
|
-
catch (error) {
|
|
301
|
-
this.logger.warn(`Failed to get TAC gas price using one of the endpoints`);
|
|
302
|
-
lastError = error;
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
this.logger.error('All endpoints failed to get TAC gas price');
|
|
306
|
-
throw (0, errors_1.allEndpointsFailedError)(lastError);
|
|
307
|
-
};
|
|
308
|
-
return await requestFn();
|
|
309
|
-
}
|
|
310
290
|
async getTVMExecutorFee(params, waitOptions) {
|
|
311
291
|
this.logger.debug(`get TVM executor fee: ${(0, Utils_1.formatObjectForLogging)(params)}`);
|
|
312
292
|
const requestFn = async () => {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IConfiguration, ILogger, IOperationTracker, ISimulator } from '../interfaces';
|
|
1
|
+
import { Asset, IConfiguration, ILogger, IOperationTracker, ISimulator } from '../interfaces';
|
|
2
2
|
import type { SenderAbstraction } from '../sender';
|
|
3
3
|
import { CrosschainTx, ExecutionFeeEstimationResult } from '../structs/Struct';
|
|
4
4
|
export declare class Simulator implements ISimulator {
|
|
@@ -8,4 +8,23 @@ export declare class Simulator implements ISimulator {
|
|
|
8
8
|
constructor(config: IConfiguration, operationTracker: IOperationTracker, logger?: ILogger);
|
|
9
9
|
getSimulationsInfo(sender: SenderAbstraction, txs: CrosschainTx[]): Promise<ExecutionFeeEstimationResult[]>;
|
|
10
10
|
getSimulationInfo(sender: SenderAbstraction, tx: CrosschainTx): Promise<ExecutionFeeEstimationResult>;
|
|
11
|
+
calculateTONFees({ accountBits, accountCells, timeDelta, msgBits, msgCells, gasUsed, bitPricePs, cellPricePs, lumpPrice, gasPrice, firstFrac, ihrPriceFactor, }: {
|
|
12
|
+
accountBits: number;
|
|
13
|
+
accountCells: number;
|
|
14
|
+
timeDelta: number;
|
|
15
|
+
msgBits: number;
|
|
16
|
+
msgCells: number;
|
|
17
|
+
gasUsed: number;
|
|
18
|
+
bitPricePs?: number;
|
|
19
|
+
cellPricePs?: number;
|
|
20
|
+
lumpPrice?: number;
|
|
21
|
+
gasPrice?: number;
|
|
22
|
+
firstFrac?: number;
|
|
23
|
+
ihrPriceFactor?: number;
|
|
24
|
+
}): number;
|
|
25
|
+
private readonly TON_FEE_CONSTANTS;
|
|
26
|
+
private readonly TRANSACTION_STEPS;
|
|
27
|
+
private calculateStepFee;
|
|
28
|
+
private calculateTransactionPipeline;
|
|
29
|
+
estimateTONFees(assets: Asset[]): number;
|
|
11
30
|
}
|
|
@@ -2,11 +2,71 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Simulator = void 0;
|
|
4
4
|
const ton_1 = require("@ton/ton");
|
|
5
|
+
const assets_1 = require("../assets");
|
|
6
|
+
const errors_1 = require("../errors");
|
|
7
|
+
const Struct_1 = require("../structs/Struct");
|
|
5
8
|
const Logger_1 = require("./Logger");
|
|
6
9
|
const Utils_1 = require("./Utils");
|
|
7
10
|
const Validator_1 = require("./Validator");
|
|
8
11
|
class Simulator {
|
|
9
12
|
constructor(config, operationTracker, logger = new Logger_1.NoopLogger()) {
|
|
13
|
+
this.TON_FEE_CONSTANTS = {
|
|
14
|
+
messageSizes: {
|
|
15
|
+
jetton: { bits: 1500, cells: 4 },
|
|
16
|
+
nft: { bits: 1300, cells: 4 },
|
|
17
|
+
ton: { bits: 500, cells: 1 },
|
|
18
|
+
},
|
|
19
|
+
walletSendTokenPrice: 0.006 * 10 ** 9, // 0.006 TON in nanotons
|
|
20
|
+
storageTimeDelta: 1 * 24 * 3600, // 1 day in seconds
|
|
21
|
+
messageOverhead: { bits: 847, cells: 3 },
|
|
22
|
+
};
|
|
23
|
+
this.TRANSACTION_STEPS = {
|
|
24
|
+
crossChainLayer: {
|
|
25
|
+
accountBits: 34534,
|
|
26
|
+
accountCells: 85,
|
|
27
|
+
gasUsed: 13636,
|
|
28
|
+
},
|
|
29
|
+
jettonWallet: {
|
|
30
|
+
accountBits: 949,
|
|
31
|
+
accountCells: 3,
|
|
32
|
+
gasUsed: 11000,
|
|
33
|
+
},
|
|
34
|
+
jettonWalletTransfer: {
|
|
35
|
+
accountBits: 949,
|
|
36
|
+
accountCells: 3,
|
|
37
|
+
gasUsed: 12000,
|
|
38
|
+
},
|
|
39
|
+
jettonWalletBurn: {
|
|
40
|
+
accountBits: 949,
|
|
41
|
+
accountCells: 3,
|
|
42
|
+
gasUsed: 8653,
|
|
43
|
+
},
|
|
44
|
+
jettonProxy: {
|
|
45
|
+
accountBits: 7760,
|
|
46
|
+
accountCells: 16,
|
|
47
|
+
gasUsed: 8515,
|
|
48
|
+
},
|
|
49
|
+
jettonMinter: {
|
|
50
|
+
accountBits: 10208,
|
|
51
|
+
accountCells: 28,
|
|
52
|
+
gasUsed: 10357,
|
|
53
|
+
},
|
|
54
|
+
nftItem: {
|
|
55
|
+
accountBits: 1422,
|
|
56
|
+
accountCells: 5,
|
|
57
|
+
gasUsed: 11722,
|
|
58
|
+
},
|
|
59
|
+
nftItemBurn: {
|
|
60
|
+
accountBits: 1422,
|
|
61
|
+
accountCells: 5,
|
|
62
|
+
gasUsed: 11552,
|
|
63
|
+
},
|
|
64
|
+
nftProxy: {
|
|
65
|
+
accountBits: 7512,
|
|
66
|
+
accountCells: 15,
|
|
67
|
+
gasUsed: 7688,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
10
70
|
this.config = config;
|
|
11
71
|
this.operationTracker = operationTracker;
|
|
12
72
|
this.logger = logger;
|
|
@@ -66,5 +126,105 @@ class Simulator {
|
|
|
66
126
|
}
|
|
67
127
|
return { feeParams, simulation };
|
|
68
128
|
}
|
|
129
|
+
calculateTONFees({
|
|
130
|
+
// Contract usage
|
|
131
|
+
accountBits, accountCells, timeDelta,
|
|
132
|
+
// Message size
|
|
133
|
+
msgBits, msgCells,
|
|
134
|
+
// Gas and computation
|
|
135
|
+
gasUsed,
|
|
136
|
+
// Config values (defaults for BaseChain)
|
|
137
|
+
bitPricePs = 1, cellPricePs = 500, lumpPrice = 400000, gasPrice = 400, firstFrac = 21845, ihrPriceFactor = 0, }) {
|
|
138
|
+
// Storage Fee (nanotons)
|
|
139
|
+
const storageFee = Math.ceil(((accountBits * bitPricePs + accountCells * cellPricePs) * timeDelta) / 2 ** 16);
|
|
140
|
+
// Computation Fee (nanotons)
|
|
141
|
+
const computeFee = gasUsed * gasPrice;
|
|
142
|
+
// Forwarding Fee (nanotons)
|
|
143
|
+
const msgFwdFees = lumpPrice + Math.ceil((bitPricePs * msgBits + cellPricePs * msgCells) / 2 ** 16);
|
|
144
|
+
const ihrFwdFees = Math.ceil((msgFwdFees * ihrPriceFactor) / 2 ** 16);
|
|
145
|
+
const totalFwdFees = msgFwdFees + ihrFwdFees;
|
|
146
|
+
// Action Fee (nanotons)
|
|
147
|
+
const actionFee = Math.floor((msgFwdFees * firstFrac) / 2 ** 16);
|
|
148
|
+
// Combine all fees
|
|
149
|
+
const totalFees = storageFee + computeFee + actionFee + totalFwdFees;
|
|
150
|
+
return totalFees;
|
|
151
|
+
}
|
|
152
|
+
calculateStepFee(step, messageSize) {
|
|
153
|
+
return this.calculateTONFees({
|
|
154
|
+
...step,
|
|
155
|
+
timeDelta: this.TON_FEE_CONSTANTS.storageTimeDelta,
|
|
156
|
+
msgBits: messageSize.bits,
|
|
157
|
+
msgCells: messageSize.cells,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
calculateTransactionPipeline(steps) {
|
|
161
|
+
return steps.reduce((total, { step, messageSize }) => total + this.calculateStepFee(step, messageSize), this.TON_FEE_CONSTANTS.walletSendTokenPrice);
|
|
162
|
+
}
|
|
163
|
+
estimateTONFees(assets) {
|
|
164
|
+
const { messageSizes, messageOverhead } = this.TON_FEE_CONSTANTS;
|
|
165
|
+
return assets.reduce((totalFees, asset) => {
|
|
166
|
+
const assetFee = (() => {
|
|
167
|
+
switch (asset.type) {
|
|
168
|
+
case Struct_1.AssetType.FT:
|
|
169
|
+
if (asset instanceof assets_1.TON) {
|
|
170
|
+
// Pipeline: wallet -> ccl -> log
|
|
171
|
+
return this.calculateTransactionPipeline([
|
|
172
|
+
{ step: this.TRANSACTION_STEPS.crossChainLayer, messageSize: messageSizes.ton },
|
|
173
|
+
]);
|
|
174
|
+
}
|
|
175
|
+
if (asset.origin === Struct_1.Origin.TON) {
|
|
176
|
+
// Pipeline: wallet -> jetton wallet -> jetton wallet -> jetton proxy -> ccl -> log
|
|
177
|
+
return this.calculateTransactionPipeline([
|
|
178
|
+
{
|
|
179
|
+
step: this.TRANSACTION_STEPS.jettonWallet,
|
|
180
|
+
messageSize: {
|
|
181
|
+
bits: messageSizes.jetton.bits + messageOverhead.bits,
|
|
182
|
+
cells: messageSizes.jetton.cells + messageOverhead.cells,
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
{ step: this.TRANSACTION_STEPS.jettonWalletTransfer, messageSize: messageSizes.jetton },
|
|
186
|
+
{ step: this.TRANSACTION_STEPS.jettonProxy, messageSize: messageSizes.jetton },
|
|
187
|
+
{ step: this.TRANSACTION_STEPS.crossChainLayer, messageSize: messageSizes.jetton },
|
|
188
|
+
]);
|
|
189
|
+
}
|
|
190
|
+
if (asset.origin === Struct_1.Origin.TAC) {
|
|
191
|
+
// Pipeline: wallet -> jetton wallet -> jetton minter -> ccl -> log
|
|
192
|
+
return this.calculateTransactionPipeline([
|
|
193
|
+
{
|
|
194
|
+
step: this.TRANSACTION_STEPS.jettonWalletBurn,
|
|
195
|
+
messageSize: {
|
|
196
|
+
bits: messageSizes.jetton.bits + messageOverhead.bits,
|
|
197
|
+
cells: messageSizes.jetton.cells + messageOverhead.cells,
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
{ step: this.TRANSACTION_STEPS.jettonMinter, messageSize: messageSizes.jetton },
|
|
201
|
+
{ step: this.TRANSACTION_STEPS.crossChainLayer, messageSize: messageSizes.jetton },
|
|
202
|
+
]);
|
|
203
|
+
}
|
|
204
|
+
return 0;
|
|
205
|
+
case Struct_1.AssetType.NFT:
|
|
206
|
+
if (asset.origin === Struct_1.Origin.TON) {
|
|
207
|
+
// Pipeline: wallet -> nft item -> nft proxy -> ccl -> log
|
|
208
|
+
return this.calculateTransactionPipeline([
|
|
209
|
+
{ step: this.TRANSACTION_STEPS.nftItem, messageSize: messageSizes.nft },
|
|
210
|
+
{ step: this.TRANSACTION_STEPS.nftProxy, messageSize: messageSizes.nft },
|
|
211
|
+
{ step: this.TRANSACTION_STEPS.crossChainLayer, messageSize: messageSizes.nft },
|
|
212
|
+
]);
|
|
213
|
+
}
|
|
214
|
+
if (asset.origin === Struct_1.Origin.TAC) {
|
|
215
|
+
// Pipeline: wallet -> nft item -> ccl -> log
|
|
216
|
+
return this.calculateTransactionPipeline([
|
|
217
|
+
{ step: this.TRANSACTION_STEPS.nftItemBurn, messageSize: messageSizes.nft },
|
|
218
|
+
{ step: this.TRANSACTION_STEPS.crossChainLayer, messageSize: messageSizes.nft },
|
|
219
|
+
]);
|
|
220
|
+
}
|
|
221
|
+
return 0;
|
|
222
|
+
default:
|
|
223
|
+
throw (0, errors_1.unknownTokenTypeError)(asset.type);
|
|
224
|
+
}
|
|
225
|
+
})();
|
|
226
|
+
return totalFees + assetFee;
|
|
227
|
+
}, 0);
|
|
228
|
+
}
|
|
69
229
|
}
|
|
70
230
|
exports.Simulator = Simulator;
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { IConfiguration, ILogger, IOperationTracker, ISimulator, ITONTransactionManager } from '../interfaces';
|
|
1
|
+
import { Asset, 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 { BatchCrossChainTx, CrossChainPayloadResult, CrossChainTransactionOptions, CrossChainTransactionsOptions, CrosschainTx, EvmProxyMsg, FeeParams, TransactionLinkerWithOperationId } 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
|
-
|
|
10
|
+
buildFeeParams(options: CrossChainTransactionOptions, evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, tx: CrosschainTx): Promise<FeeParams>;
|
|
11
11
|
private prepareCrossChainTransaction;
|
|
12
12
|
private generateCrossChainMessages;
|
|
13
13
|
sendCrossChainTransaction(evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, tx: CrosschainTx): Promise<TransactionLinkerWithOperationId>;
|
|
14
14
|
sendCrossChainTransactions(sender: SenderAbstraction, txs: BatchCrossChainTx[], options?: CrossChainTransactionsOptions): Promise<TransactionLinkerWithOperationId[]>;
|
|
15
15
|
private prepareBatchTransactions;
|
|
16
16
|
private waitForOperationIds;
|
|
17
|
+
prepareCrossChainTransactionPayload(evmProxyMsg: EvmProxyMsg, senderAddress: string, assets?: Asset[], options?: CrossChainTransactionOptions): Promise<CrossChainPayloadResult[]>;
|
|
17
18
|
}
|
|
@@ -111,6 +111,9 @@ class TONTransactionManager {
|
|
|
111
111
|
address: this.config.TONParams.crossChainLayerAddress,
|
|
112
112
|
value: crossChainTonAmount + feeTonAmount + Consts_1.TRANSACTION_TON_AMOUNT,
|
|
113
113
|
payload: await ton.generatePayload({ excessReceiver: caller, evmData, feeParams }),
|
|
114
|
+
extra: {
|
|
115
|
+
networkFeeIncluded: Consts_1.TRANSACTION_TON_AMOUNT,
|
|
116
|
+
},
|
|
114
117
|
},
|
|
115
118
|
];
|
|
116
119
|
}
|
|
@@ -129,6 +132,9 @@ class TONTransactionManager {
|
|
|
129
132
|
address,
|
|
130
133
|
value: crossChainTonAmount + feeTonAmount + Consts_1.TRANSACTION_TON_AMOUNT,
|
|
131
134
|
payload,
|
|
135
|
+
extra: {
|
|
136
|
+
networkFeeIncluded: Consts_1.TRANSACTION_TON_AMOUNT,
|
|
137
|
+
},
|
|
132
138
|
});
|
|
133
139
|
crossChainTonAmount = 0n;
|
|
134
140
|
feeTonAmount = 0n;
|
|
@@ -208,7 +214,7 @@ class TONTransactionManager {
|
|
|
208
214
|
this.logger.debug(`Operation IDs: ${(0, Utils_1.formatObjectForLogging)(operationIds)}`);
|
|
209
215
|
return transactionLinkers.map((linker) => ({
|
|
210
216
|
...linker,
|
|
211
|
-
operationId: operationIds[linker.shardsKey].operationIds
|
|
217
|
+
operationId: operationIds[linker.shardsKey].operationIds[0],
|
|
212
218
|
}));
|
|
213
219
|
}
|
|
214
220
|
catch (error) {
|
|
@@ -216,5 +222,22 @@ class TONTransactionManager {
|
|
|
216
222
|
return transactionLinkers;
|
|
217
223
|
}
|
|
218
224
|
}
|
|
225
|
+
async prepareCrossChainTransactionPayload(evmProxyMsg, senderAddress, assets = [], options) {
|
|
226
|
+
this.logger.debug('Preparing cross-chain transaction payload');
|
|
227
|
+
const mockSender = {
|
|
228
|
+
getSenderAddress: () => senderAddress,
|
|
229
|
+
sendShardTransaction: async () => ({ success: true }),
|
|
230
|
+
sendShardTransactions: async () => [],
|
|
231
|
+
getBalance: async () => 0n,
|
|
232
|
+
getBalanceOf: async () => 0n,
|
|
233
|
+
};
|
|
234
|
+
const result = await this.prepareCrossChainTransaction(evmProxyMsg, mockSender, assets, options, true);
|
|
235
|
+
return result.transaction.messages.map((r) => ({
|
|
236
|
+
body: r.payload,
|
|
237
|
+
destinationAddress: r.address,
|
|
238
|
+
tonAmount: r.value,
|
|
239
|
+
networkFee: r.extra.networkFeeIncluded,
|
|
240
|
+
}));
|
|
241
|
+
}
|
|
219
242
|
}
|
|
220
243
|
exports.TONTransactionManager = TONTransactionManager;
|
package/dist/src/sdk/TacSdk.d.ts
CHANGED
|
@@ -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, BatchCrossChainTxWithAssetLike, CrossChainPayloadResult, CrossChainTransactionOptions, CrossChainTransactionsOptions, CrosschainTx, EVMAddress, EvmProxyMsg, ExecutionFeeEstimationResult, NFTAddressType, SDKParams, SuggestedTVMExecutorFee, TACSimulationParams, TACSimulationResult, TransactionLinkerWithOperationId, TVMAddress, UserWalletBalanceExtended } from '../structs/Struct';
|
|
7
7
|
export declare class TacSdk implements ITacSDK {
|
|
8
8
|
readonly config: IConfiguration;
|
|
9
9
|
readonly operationTracker: IOperationTracker;
|
|
@@ -16,11 +16,6 @@ export declare class TacSdk implements ITacSDK {
|
|
|
16
16
|
get nativeTONAddress(): string;
|
|
17
17
|
getSmartAccountAddressForTvmWallet(tvmWallet: string, applicationAddress: string): Promise<string>;
|
|
18
18
|
nativeTACAddress(): Promise<string>;
|
|
19
|
-
getTACGasPrice(): Promise<{
|
|
20
|
-
average: number;
|
|
21
|
-
fast: number;
|
|
22
|
-
slow: number;
|
|
23
|
-
}>;
|
|
24
19
|
get getTrustedTACExecutors(): string[];
|
|
25
20
|
get getTrustedTONExecutors(): string[];
|
|
26
21
|
getSimulationInfo(evmProxyMsg: EvmProxyMsg, sender: SenderAbstraction, assets?: AssetLike[], options?: CrossChainTransactionOptions): Promise<ExecutionFeeEstimationResult>;
|
|
@@ -46,4 +41,5 @@ export declare class TacSdk implements ITacSDK {
|
|
|
46
41
|
getTVMNFTAddress(evmNFTAddress: string, tokenId?: number | bigint): Promise<string>;
|
|
47
42
|
getEVMNFTAddress(tvmNFTAddress: string, addressType: NFTAddressType): Promise<string>;
|
|
48
43
|
getOperationTracker(): IOperationTracker;
|
|
44
|
+
prepareCrossChainTransactionPayload(evmProxyMsg: EvmProxyMsg, senderAddress: string, assets?: AssetLike[], options?: CrossChainTransactionOptions): Promise<CrossChainPayloadResult[]>;
|
|
49
45
|
}
|
package/dist/src/sdk/TacSdk.js
CHANGED
|
@@ -57,14 +57,6 @@ class TacSdk {
|
|
|
57
57
|
async nativeTACAddress() {
|
|
58
58
|
return this.config.nativeTACAddress();
|
|
59
59
|
}
|
|
60
|
-
async getTACGasPrice() {
|
|
61
|
-
const response = await this.operationTracker.getTACGasPrice();
|
|
62
|
-
return {
|
|
63
|
-
average: response.gas_prices.average,
|
|
64
|
-
fast: response.gas_prices.fast,
|
|
65
|
-
slow: response.gas_prices.slow,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
60
|
get getTrustedTACExecutors() {
|
|
69
61
|
return this.config.getTrustedTACExecutors;
|
|
70
62
|
}
|
|
@@ -185,5 +177,9 @@ class TacSdk {
|
|
|
185
177
|
getOperationTracker() {
|
|
186
178
|
return this.operationTracker;
|
|
187
179
|
}
|
|
180
|
+
async prepareCrossChainTransactionPayload(evmProxyMsg, senderAddress, assets = [], options) {
|
|
181
|
+
const normalizedAssets = await (0, Utils_1.normalizeAssets)(this.config, assets);
|
|
182
|
+
return this.tonTransactionManager.prepareCrossChainTransactionPayload(evmProxyMsg, senderAddress, normalizedAssets, options);
|
|
183
|
+
}
|
|
188
184
|
}
|
|
189
185
|
exports.TacSdk = TacSdk;
|
|
@@ -7,6 +7,9 @@ export type ShardMessage = {
|
|
|
7
7
|
address: string;
|
|
8
8
|
value: bigint;
|
|
9
9
|
payload: Cell;
|
|
10
|
+
extra: {
|
|
11
|
+
networkFeeIncluded: bigint;
|
|
12
|
+
};
|
|
10
13
|
};
|
|
11
14
|
export type ShardTransaction = {
|
|
12
15
|
validUntil: number;
|
|
@@ -91,13 +94,6 @@ export type TransactionDepth = {
|
|
|
91
94
|
hash: string;
|
|
92
95
|
depth: number;
|
|
93
96
|
};
|
|
94
|
-
export type TacGasPriceResponse = {
|
|
95
|
-
gas_prices: {
|
|
96
|
-
average: number;
|
|
97
|
-
fast: number;
|
|
98
|
-
slow: number;
|
|
99
|
-
};
|
|
100
|
-
};
|
|
101
97
|
export type AdjacentTransactionsResponse = {
|
|
102
98
|
transactions: ToncenterTransaction[];
|
|
103
99
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { SandboxContract } from '@ton/sandbox';
|
|
2
|
-
import { OpenedContract } from '@ton/ton';
|
|
2
|
+
import { Cell, OpenedContract } from '@ton/ton';
|
|
3
3
|
import { AbstractProvider } from 'ethers';
|
|
4
4
|
import { JettonMinter, JettonMinterData } from '../../artifacts/tonTypes';
|
|
5
5
|
import type { FT, NFT } from '../assets';
|
|
@@ -418,10 +418,9 @@ export type FTOriginAndData = {
|
|
|
418
418
|
evmAddress?: string;
|
|
419
419
|
jettonData?: JettonMinterData;
|
|
420
420
|
};
|
|
421
|
-
export type
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
};
|
|
421
|
+
export type CrossChainPayloadResult = {
|
|
422
|
+
body: Cell;
|
|
423
|
+
destinationAddress: string;
|
|
424
|
+
tonAmount: bigint;
|
|
425
|
+
networkFee: bigint;
|
|
427
426
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tonappchain/sdk",
|
|
3
|
-
"version": "0.7.2-
|
|
3
|
+
"version": "0.7.2-payload-builder-0.1",
|
|
4
4
|
"repository": "https://github.com/TacBuild/tac-sdk.git",
|
|
5
5
|
"author": "TAC. <developers@tac>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -49,7 +49,6 @@
|
|
|
49
49
|
"dist"
|
|
50
50
|
],
|
|
51
51
|
"scripts": {
|
|
52
|
-
"prebuild": "git submodule update --init --recursive",
|
|
53
52
|
"litebuild": "rm -rf dist && tsc --declaration",
|
|
54
53
|
"build": "rm -rf dist && npm run build:artifacts && tsc --declaration",
|
|
55
54
|
"build:artifacts:tac:dev": "cd artifacts/dev/l2-evm && npm i && npx hardhat compile && rsync -avh --delete ./artifacts ./scripts ./typechain-types ../tac/internal/",
|
|
@@ -60,7 +59,7 @@
|
|
|
60
59
|
"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/",
|
|
61
60
|
"build:artifacts:ton:all": "npm run build:artifacts:ton:dev && npm run build:artifacts:ton:testnet && npm run build:artifacts:ton:mainnet",
|
|
62
61
|
"build:artifacts:tac:all": "npm run build:artifacts:tac:dev && npm run build:artifacts:tac:testnet && npm run build:artifacts:tac:mainnet",
|
|
63
|
-
"build:artifacts": "npm run
|
|
62
|
+
"build:artifacts": "npm run build:artifacts:ton:all && npm run build:artifacts:tac:all",
|
|
64
63
|
"test": "jest --verbose --runInBand",
|
|
65
64
|
"release": "yarn build && yarn release-it --npm.yarn1",
|
|
66
65
|
"lint": "eslint .",
|