@getomnichain/omnichain 0.6.2 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/cjs/chain_ids.js +2 -2
  3. package/dist/cjs/chain_ids.js.map +1 -1
  4. package/dist/cjs/errors.js +6 -0
  5. package/dist/cjs/errors.js.map +1 -1
  6. package/dist/cjs/index.js +1 -1
  7. package/dist/cjs/index.js.map +1 -1
  8. package/dist/cjs/ton/index.js +12 -0
  9. package/dist/cjs/ton/index.js.map +1 -1
  10. package/dist/cjs/ton/ton_address.js +72 -14
  11. package/dist/cjs/ton/ton_address.js.map +1 -1
  12. package/dist/cjs/ton/ton_asset.js +21 -0
  13. package/dist/cjs/ton/ton_asset.js.map +1 -0
  14. package/dist/cjs/ton/ton_assets.js +10 -0
  15. package/dist/cjs/ton/ton_assets.js.map +1 -0
  16. package/dist/cjs/ton/ton_chain.js +483 -0
  17. package/dist/cjs/ton/ton_chain.js.map +1 -0
  18. package/dist/cjs/ton/ton_chains.js +21 -0
  19. package/dist/cjs/ton/ton_chains.js.map +1 -0
  20. package/dist/cjs/ton/ton_jetton_metadata.js +107 -0
  21. package/dist/cjs/ton/ton_jetton_metadata.js.map +1 -0
  22. package/dist/cjs/ton/ton_messages.js +174 -0
  23. package/dist/cjs/ton/ton_messages.js.map +1 -0
  24. package/dist/cjs/ton/ton_provider.js +456 -0
  25. package/dist/cjs/ton/ton_provider.js.map +1 -0
  26. package/dist/cjs/ton/ton_tonapi.js +243 -0
  27. package/dist/cjs/ton/ton_tonapi.js.map +1 -0
  28. package/dist/cjs/ton/ton_toncenter.js +252 -0
  29. package/dist/cjs/ton/ton_toncenter.js.map +1 -0
  30. package/dist/cjs/ton/ton_transaction_status.js +231 -0
  31. package/dist/cjs/ton/ton_transaction_status.js.map +1 -0
  32. package/dist/cjs/ton/ton_transactions.js +107 -0
  33. package/dist/cjs/ton/ton_transactions.js.map +1 -0
  34. package/dist/cjs/ton/ton_wallet.js +285 -0
  35. package/dist/cjs/ton/ton_wallet.js.map +1 -0
  36. package/dist/cjs/tron/index.js +1 -0
  37. package/dist/cjs/tron/index.js.map +1 -1
  38. package/dist/cjs/tron/tron_chain.js +88 -45
  39. package/dist/cjs/tron/tron_chain.js.map +1 -1
  40. package/dist/cjs/tron/tron_memo.js +17 -0
  41. package/dist/cjs/tron/tron_memo.js.map +1 -0
  42. package/dist/cjs/tron/tron_raw_data.js +213 -0
  43. package/dist/cjs/tron/tron_raw_data.js.map +1 -0
  44. package/dist/cjs/tron/tron_transaction_builder.js +34 -13
  45. package/dist/cjs/tron/tron_transaction_builder.js.map +1 -1
  46. package/dist/cjs/tron/tron_transaction_status.js +10 -7
  47. package/dist/cjs/tron/tron_transaction_status.js.map +1 -1
  48. package/dist/cjs/tron/tron_transactions.js +1 -1
  49. package/dist/cjs/tron/tron_transactions.js.map +1 -1
  50. package/dist/esm/chain_ids.js +2 -2
  51. package/dist/esm/chain_ids.js.map +1 -1
  52. package/dist/esm/errors.d.ts +3 -0
  53. package/dist/esm/errors.d.ts.map +1 -1
  54. package/dist/esm/errors.js +5 -0
  55. package/dist/esm/errors.js.map +1 -1
  56. package/dist/esm/index.d.ts +1 -1
  57. package/dist/esm/index.d.ts.map +1 -1
  58. package/dist/esm/index.js +1 -1
  59. package/dist/esm/index.js.map +1 -1
  60. package/dist/esm/ton/index.d.ts +12 -0
  61. package/dist/esm/ton/index.d.ts.map +1 -1
  62. package/dist/esm/ton/index.js +12 -0
  63. package/dist/esm/ton/index.js.map +1 -1
  64. package/dist/esm/ton/ton_address.d.ts +26 -2
  65. package/dist/esm/ton/ton_address.d.ts.map +1 -1
  66. package/dist/esm/ton/ton_address.js +70 -14
  67. package/dist/esm/ton/ton_address.js.map +1 -1
  68. package/dist/esm/ton/ton_asset.d.ts +12 -0
  69. package/dist/esm/ton/ton_asset.d.ts.map +1 -0
  70. package/dist/esm/ton/ton_asset.js +17 -0
  71. package/dist/esm/ton/ton_asset.js.map +1 -0
  72. package/dist/esm/ton/ton_assets.d.ts +6 -0
  73. package/dist/esm/ton/ton_assets.d.ts.map +1 -0
  74. package/dist/esm/ton/ton_assets.js +7 -0
  75. package/dist/esm/ton/ton_assets.js.map +1 -0
  76. package/dist/esm/ton/ton_chain.d.ts +205 -0
  77. package/dist/esm/ton/ton_chain.d.ts.map +1 -0
  78. package/dist/esm/ton/ton_chain.js +479 -0
  79. package/dist/esm/ton/ton_chain.js.map +1 -0
  80. package/dist/esm/ton/ton_chains.d.ts +11 -0
  81. package/dist/esm/ton/ton_chains.d.ts.map +1 -0
  82. package/dist/esm/ton/ton_chains.js +18 -0
  83. package/dist/esm/ton/ton_chains.js.map +1 -0
  84. package/dist/esm/ton/ton_jetton_metadata.d.ts +36 -0
  85. package/dist/esm/ton/ton_jetton_metadata.d.ts.map +1 -0
  86. package/dist/esm/ton/ton_jetton_metadata.js +103 -0
  87. package/dist/esm/ton/ton_jetton_metadata.js.map +1 -0
  88. package/dist/esm/ton/ton_messages.d.ts +133 -0
  89. package/dist/esm/ton/ton_messages.d.ts.map +1 -0
  90. package/dist/esm/ton/ton_messages.js +159 -0
  91. package/dist/esm/ton/ton_messages.js.map +1 -0
  92. package/dist/esm/ton/ton_provider.d.ts +261 -0
  93. package/dist/esm/ton/ton_provider.d.ts.map +1 -0
  94. package/dist/esm/ton/ton_provider.js +432 -0
  95. package/dist/esm/ton/ton_provider.js.map +1 -0
  96. package/dist/esm/ton/ton_tonapi.d.ts +39 -0
  97. package/dist/esm/ton/ton_tonapi.d.ts.map +1 -0
  98. package/dist/esm/ton/ton_tonapi.js +239 -0
  99. package/dist/esm/ton/ton_tonapi.js.map +1 -0
  100. package/dist/esm/ton/ton_toncenter.d.ts +25 -0
  101. package/dist/esm/ton/ton_toncenter.d.ts.map +1 -0
  102. package/dist/esm/ton/ton_toncenter.js +248 -0
  103. package/dist/esm/ton/ton_toncenter.js.map +1 -0
  104. package/dist/esm/ton/ton_transaction_status.d.ts +116 -0
  105. package/dist/esm/ton/ton_transaction_status.d.ts.map +1 -0
  106. package/dist/esm/ton/ton_transaction_status.js +226 -0
  107. package/dist/esm/ton/ton_transaction_status.js.map +1 -0
  108. package/dist/esm/ton/ton_transactions.d.ts +54 -0
  109. package/dist/esm/ton/ton_transactions.d.ts.map +1 -0
  110. package/dist/esm/ton/ton_transactions.js +100 -0
  111. package/dist/esm/ton/ton_transactions.js.map +1 -0
  112. package/dist/esm/ton/ton_wallet.d.ts +134 -0
  113. package/dist/esm/ton/ton_wallet.d.ts.map +1 -0
  114. package/dist/esm/ton/ton_wallet.js +278 -0
  115. package/dist/esm/ton/ton_wallet.js.map +1 -0
  116. package/dist/esm/tron/index.d.ts +1 -0
  117. package/dist/esm/tron/index.d.ts.map +1 -1
  118. package/dist/esm/tron/index.js +1 -0
  119. package/dist/esm/tron/index.js.map +1 -1
  120. package/dist/esm/tron/tron_chain.d.ts +13 -1
  121. package/dist/esm/tron/tron_chain.d.ts.map +1 -1
  122. package/dist/esm/tron/tron_chain.js +89 -46
  123. package/dist/esm/tron/tron_chain.js.map +1 -1
  124. package/dist/esm/tron/tron_memo.d.ts +2 -0
  125. package/dist/esm/tron/tron_memo.d.ts.map +1 -0
  126. package/dist/esm/tron/tron_memo.js +14 -0
  127. package/dist/esm/tron/tron_memo.js.map +1 -0
  128. package/dist/esm/tron/tron_raw_data.d.ts +4 -0
  129. package/dist/esm/tron/tron_raw_data.d.ts.map +1 -0
  130. package/dist/esm/tron/tron_raw_data.js +209 -0
  131. package/dist/esm/tron/tron_raw_data.js.map +1 -0
  132. package/dist/esm/tron/tron_transaction_builder.d.ts +4 -0
  133. package/dist/esm/tron/tron_transaction_builder.d.ts.map +1 -1
  134. package/dist/esm/tron/tron_transaction_builder.js +34 -13
  135. package/dist/esm/tron/tron_transaction_builder.js.map +1 -1
  136. package/dist/esm/tron/tron_transaction_status.d.ts +16 -2
  137. package/dist/esm/tron/tron_transaction_status.d.ts.map +1 -1
  138. package/dist/esm/tron/tron_transaction_status.js +10 -7
  139. package/dist/esm/tron/tron_transaction_status.js.map +1 -1
  140. package/dist/esm/tron/tron_transactions.js +1 -1
  141. package/dist/esm/tron/tron_transactions.js.map +1 -1
  142. package/docs/README.md +2 -1
  143. package/docs/ton.md +164 -0
  144. package/docs/tron.md +21 -11
  145. package/package.json +5 -1
@@ -1,44 +1,100 @@
1
1
  import { NetworkType } from "../network_type.js";
2
2
  import { Address } from "../address.js";
3
3
  const TON_USER_FRIENDLY_REGEX = /^[A-Za-z0-9_-]{48}$/;
4
- const TON_RAW_REGEX = /^-?\d+:[a-fA-F0-9]{64}$/;
4
+ const TON_RAW_REGEX = /^(-?\d+):([a-fA-F0-9]{64})$/;
5
5
  const USER_FRIENDLY_BYTE_LENGTH = 36;
6
6
  const CRC_POLYNOMIAL = 0x1021;
7
+ const FLAG_BOUNCEABLE = 0x11;
8
+ const FLAG_NON_BOUNCEABLE = 0x51;
9
+ const FLAG_TEST_ONLY = 0x80;
10
+ /**
11
+ * A TON address in any of its forms: raw `<workchain>:<64 hex>` or the 48-char
12
+ * user-friendly base64url form. `canonical()` is the raw form with a lowercase
13
+ * hash, so every form of one account compares equal.
14
+ *
15
+ * Self-contained (no `@ton/core`) so the root entry keeps loading no TON
16
+ * dependency.
17
+ */
7
18
  export class TonAddress extends Address {
19
+ #parsed;
8
20
  constructor(raw) {
9
21
  super(raw);
10
- TonAddress.assertValid(raw);
22
+ this.#parsed = TonAddress.parse(raw);
11
23
  }
12
24
  canonical() {
13
- return this.raw;
25
+ return `${this.#parsed.workchain}:${this.#parsed.hash.toString('hex')}`;
14
26
  }
15
27
  get networkType() {
16
28
  return NetworkType.TON;
17
29
  }
18
- static assertValid(raw) {
30
+ get workchain() {
31
+ return this.#parsed.workchain;
32
+ }
33
+ /** The flag the input carried; `null` for a raw address, which has none. */
34
+ get isBounceable() {
35
+ return this.#parsed.bounceable;
36
+ }
37
+ get isTestOnly() {
38
+ return this.#parsed.testOnly;
39
+ }
40
+ toUserFriendly(opts = {}) {
41
+ const bounceable = opts.bounceable ?? true;
42
+ let tag = bounceable ? FLAG_BOUNCEABLE : FLAG_NON_BOUNCEABLE;
43
+ if (opts.testOnly === true)
44
+ tag |= FLAG_TEST_ONLY;
45
+ const bytes = Buffer.alloc(USER_FRIENDLY_BYTE_LENGTH);
46
+ bytes[0] = tag;
47
+ bytes[1] = this.#parsed.workchain & 0xff;
48
+ this.#parsed.hash.copy(bytes, 2);
49
+ bytes.writeUInt16BE(crc16CcittXmodem(bytes.subarray(0, 34)), 34);
50
+ return bytes.toString('base64url');
51
+ }
52
+ static parse(raw) {
19
53
  if (typeof raw !== 'string') {
20
54
  throw new Error(`Invalid TON address: not a string`);
21
55
  }
22
- if (TON_RAW_REGEX.test(raw))
23
- return;
24
- if (TON_USER_FRIENDLY_REGEX.test(raw)) {
25
- TonAddress.assertUserFriendlyChecksum(raw);
26
- return;
56
+ const rawMatch = TON_RAW_REGEX.exec(raw);
57
+ if (rawMatch !== null) {
58
+ const workchain = Number(rawMatch[1]);
59
+ if (!Number.isSafeInteger(workchain) || workchain < -128 || workchain > 127) {
60
+ throw new Error(`Invalid TON address workchain: "${raw}"`);
61
+ }
62
+ return { workchain, hash: Buffer.from(rawMatch[2], 'hex'), bounceable: null, testOnly: false };
27
63
  }
64
+ if (TON_USER_FRIENDLY_REGEX.test(raw))
65
+ return TonAddress.parseUserFriendly(raw);
28
66
  throw new Error(`Invalid TON address: "${raw}"`);
29
67
  }
30
- static assertUserFriendlyChecksum(userFriendly) {
31
- const bytes = Buffer.from(userFriendly.replace(/-/g, '+').replace(/_/g, '/'), 'base64');
68
+ static parseUserFriendly(userFriendly) {
69
+ const bytes = Buffer.from(userFriendly, 'base64url');
32
70
  if (bytes.length !== USER_FRIENDLY_BYTE_LENGTH) {
33
71
  throw new Error(`Invalid TON address: "${userFriendly}"`);
34
72
  }
35
- const claimedCrc = (bytes[34] << 8) | bytes[35];
36
- const computedCrc = crc16CcittXmodem(bytes.subarray(0, 34));
37
- if (claimedCrc !== computedCrc) {
73
+ const claimedCrc = bytes.readUInt16BE(34);
74
+ if (claimedCrc !== crc16CcittXmodem(bytes.subarray(0, 34))) {
38
75
  throw new Error(`Invalid TON address checksum: "${userFriendly}"`);
39
76
  }
77
+ const testOnly = (bytes[0] & FLAG_TEST_ONLY) !== 0;
78
+ const tag = bytes[0] & ~FLAG_TEST_ONLY;
79
+ if (tag !== FLAG_BOUNCEABLE && tag !== FLAG_NON_BOUNCEABLE) {
80
+ throw new Error(`Invalid TON address flags: "${userFriendly}"`);
81
+ }
82
+ return {
83
+ workchain: bytes.readInt8(1),
84
+ hash: Buffer.from(bytes.subarray(2, 34)),
85
+ bounceable: tag === FLAG_BOUNCEABLE,
86
+ testOnly,
87
+ };
40
88
  }
41
89
  }
90
+ /** The canonical raw form (`0:<lowercase hex>`) of any TON address form. */
91
+ export function tonRawAddress(address) {
92
+ return new TonAddress(address).canonical();
93
+ }
94
+ /** The user-friendly form of any TON address form; bounceable unless told otherwise. */
95
+ export function tonUserFriendlyAddress(address, opts = {}) {
96
+ return new TonAddress(address).toUserFriendly(opts);
97
+ }
42
98
  function crc16CcittXmodem(bytes) {
43
99
  let crc = 0;
44
100
  for (const byte of bytes) {
@@ -1 +1 @@
1
- {"version":3,"file":"ton_address.js","sourceRoot":"","sources":["../../../ton/ton_address.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AACtD,MAAM,aAAa,GAAG,yBAAyB,CAAC;AAChD,MAAM,yBAAyB,GAAG,EAAE,CAAC;AACrC,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,MAAM,OAAO,UAAW,SAAQ,OAAO;IACrC,YAAY,GAAW;QACrB,KAAK,CAAC,GAAG,CAAC,CAAC;QACX,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC9B,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,WAAW,CAAC,GAAG,CAAC;IACzB,CAAC;IAEO,MAAM,CAAC,WAAW,CAAC,GAAW;QACpC,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;QACvD,CAAC;QACD,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO;QACpC,IAAI,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,UAAU,CAAC,0BAA0B,CAAC,GAAG,CAAC,CAAC;YAC3C,OAAO;QACT,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC,CAAC;IACnD,CAAC;IAEO,MAAM,CAAC,0BAA0B,CAAC,YAAoB;QAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CACvB,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAClD,QAAQ,CACT,CAAC;QACF,IAAI,KAAK,CAAC,MAAM,KAAK,yBAAyB,EAAE,CAAC;YAC/C,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,GAAG,CAAC,CAAC;QAC5D,CAAC;QACD,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5D,IAAI,UAAU,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,kCAAkC,YAAY,GAAG,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;CACF;AAED,SAAS,gBAAgB,CAAC,KAAiB;IACzC,IAAI,GAAG,GAAG,CAAC,CAAC;IACZ,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,GAAG,IAAI,IAAI,IAAI,CAAC,CAAC;QACjB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC;YACjC,GAAG;gBACD,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,cAAc,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;QACxF,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"ton_address.js","sourceRoot":"","sources":["../../../ton/ton_address.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { Token } from '../token.ts';
2
+ /**
3
+ * Native TON (`identifier` undefined, 9 decimals) or a jetton, identified by
4
+ * its master contract in canonical raw form.
5
+ */
6
+ export declare class TonAsset extends Token {
7
+ static readonly NATIVE_DECIMALS = 9;
8
+ constructor(chainId: number, symbol: string, jettonMaster: string | null, decimals: number);
9
+ /** The jetton master's raw address, or `null` for native TON. */
10
+ get jettonMaster(): string | null;
11
+ }
12
+ //# sourceMappingURL=ton_asset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ton_asset.d.ts","sourceRoot":"","sources":["../../../ton/ton_asset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpC;;;GAGG;AACH,qBAAa,QAAS,SAAQ,KAAK;IACjC,MAAM,CAAC,QAAQ,CAAC,eAAe,KAAK;gBAExB,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM;IAI1F,iEAAiE;IACjE,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAEhC;CACF"}
@@ -0,0 +1,17 @@
1
+ import { Token } from "../token.js";
2
+ import { tonRawAddress } from "./ton_address.js";
3
+ /**
4
+ * Native TON (`identifier` undefined, 9 decimals) or a jetton, identified by
5
+ * its master contract in canonical raw form.
6
+ */
7
+ export class TonAsset extends Token {
8
+ static NATIVE_DECIMALS = 9;
9
+ constructor(chainId, symbol, jettonMaster, decimals) {
10
+ super(chainId, symbol, jettonMaster === null ? undefined : tonRawAddress(jettonMaster), decimals);
11
+ }
12
+ /** The jetton master's raw address, or `null` for native TON. */
13
+ get jettonMaster() {
14
+ return this.identifier ?? null;
15
+ }
16
+ }
17
+ //# sourceMappingURL=ton_asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ton_asset.js","sourceRoot":"","sources":["../../../ton/ton_asset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD;;;GAGG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IACjC,MAAM,CAAU,eAAe,GAAG,CAAC,CAAC;IAEpC,YAAY,OAAe,EAAE,MAAc,EAAE,YAA2B,EAAE,QAAgB;QACxF,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpG,CAAC;IAED,iEAAiE;IACjE,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;IACjC,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { FiatCurrency } from '../chain_type.ts';
2
+ import type { TonAsset } from './ton_asset.ts';
3
+ export declare const TON_TON: TonAsset;
4
+ export declare const TON_USDT: TonAsset;
5
+ export declare const TON_MAINNET_STABLECOINS_PEG: ReadonlyMap<TonAsset, FiatCurrency>;
6
+ //# sourceMappingURL=ton_assets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ton_assets.d.ts","sourceRoot":"","sources":["../../../ton/ton_assets.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,OAAO,UAAyB,CAAC;AAE9C,eAAO,MAAM,QAAQ,UAA2F,CAAC;AAEjH,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,QAAQ,EAAE,YAAY,CAAwE,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { AssetMap } from "../asset_map.js";
2
+ import { FiatCurrency } from "../chain_type.js";
3
+ import { TonMainnet } from "./ton_chains.js";
4
+ export const TON_TON = TonMainnet.nativeAsset;
5
+ export const TON_USDT = TonMainnet.getJettonAsset('USD₮', 'EQCxE6mUtQJKFnGfaROTKOt1lZbDiiX1kCixRv7Nw2Id_sDs', 6);
6
+ export const TON_MAINNET_STABLECOINS_PEG = new AssetMap([[TON_USDT, FiatCurrency.USD]]);
7
+ //# sourceMappingURL=ton_assets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ton_assets.js","sourceRoot":"","sources":["../../../ton/ton_assets.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,CAAC,MAAM,OAAO,GAAG,UAAU,CAAC,WAAW,CAAC;AAE9C,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC,cAAc,CAAC,MAAM,EAAE,kDAAkD,EAAE,CAAC,CAAC,CAAC;AAEjH,MAAM,CAAC,MAAM,2BAA2B,GAAwC,IAAI,QAAQ,CAAyB,CAAC,CAAC,QAAQ,EAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC"}
@@ -0,0 +1,205 @@
1
+ import { type BroadcastOpts, Chain, type CreateTransferRequest, type GetTransactionStatusOpts, type VerifyMessageSignatureRequest } from '../chain.base.ts';
2
+ import { ChainType } from '../chain_type.ts';
3
+ import type { AbstractSignedMessage } from '../wallet.base.ts';
4
+ import { TonAsset } from './ton_asset.ts';
5
+ import { type TonJettonMetadata, type TonMetadataFetcher } from './ton_jetton_metadata.ts';
6
+ import { type TonAccountState, type TonProvider, type TonTrace } from './ton_provider.ts';
7
+ import { type TonTraceSummary, TonTransactionStatus } from './ton_transaction_status.ts';
8
+ import { TonSignedTransaction, TonUnsignedTransaction } from './ton_transactions.ts';
9
+ /** TON a jetton transfer carries to the sender's jetton wallet; the excess returns to `responseDestination`. */
10
+ export declare const DEFAULT_JETTON_TRANSFER_ATTACHED_NANOTON = 50000000n;
11
+ /** TON forwarded to the jetton recipient with the transfer notification. */
12
+ export declare const DEFAULT_JETTON_FORWARD_NANOTON = 1n;
13
+ /**
14
+ * How far past a request's `validUntil` the masterchain must be before the
15
+ * request counts as expired; shard blocks and the provider's state can trail
16
+ * the masterchain head by a few seconds.
17
+ */
18
+ export declare const REQUEST_EXPIRY_MARGIN_SECONDS = 60;
19
+ /** Where a signed request stands; see `TonChain.getRequestState`. */
20
+ export type TonRequestState = 'live' | 'expired' | 'consumed';
21
+ export interface TonProviderEndpoint {
22
+ url: string;
23
+ /**
24
+ * Required: the family never calls a provider without a key. When absent it
25
+ * is read at first use from `TONCENTER_API_KEY` / `TONAPI_API_KEY`.
26
+ */
27
+ apiKey?: string | null;
28
+ timeoutMs?: number;
29
+ }
30
+ export interface TonChainInit {
31
+ chainId: number;
32
+ name: string;
33
+ explorerUrl: string;
34
+ /** The main provider, TON Center v3. */
35
+ toncenter: TonProviderEndpoint;
36
+ /** The fallback, TonAPI; without a key there is no fallback. */
37
+ tonapi?: TonProviderEndpoint | null;
38
+ /** Replaces both, e.g. in tests. */
39
+ provider?: TonProvider;
40
+ /** Fetches a jetton's off-chain metadata JSON (https); replaceable, e.g. in tests. */
41
+ fetchMetadata?: TonMetadataFetcher;
42
+ }
43
+ /** A transfer, with TON's own options; see `TonChain.createTransferUnsignedTransaction`. */
44
+ export interface TonTransferOptions extends CreateTransferRequest {
45
+ /** Overrides the message's bounce flag. */
46
+ bounce?: boolean;
47
+ /** Overrides the send mode. */
48
+ sendMode?: number;
49
+ /** Jetton transfers: TON attached to the sender's jetton wallet. */
50
+ jettonAttachedNanoton?: bigint;
51
+ /** Jetton transfers: TON forwarded to the recipient with the transfer notification. */
52
+ forwardTonAmountNanoton?: bigint;
53
+ }
54
+ export interface TonGetTransactionStatusOpts extends GetTransactionStatusOpts {
55
+ /** Masterchain blocks required after the trace is final. 0 by default: TON finality needs none. */
56
+ minMasterchainDepth?: number;
57
+ }
58
+ export interface TonEmulationResult extends TonTraceSummary {
59
+ trace: TonTrace;
60
+ }
61
+ /**
62
+ * A TON chain, read through TON Center v3 with TonAPI as the fallback.
63
+ *
64
+ * Transaction ids are normalized external-message hashes (lowercase hex), and
65
+ * a transaction's status covers its whole trace.
66
+ */
67
+ export declare class TonChain extends Chain {
68
+ #private;
69
+ private readonly _nativeAsset;
70
+ constructor(init: TonChainInit);
71
+ /** The configured provider, built on first use so a chain without keys can still be constructed. */
72
+ get provider(): TonProvider;
73
+ get chainType(): ChainType;
74
+ get nativeToken(): TonAsset;
75
+ get nativeAsset(): TonAsset;
76
+ getWalletExplorerUrl(address: string): string;
77
+ /** A jetton master is a contract, so its link uses the bounceable (`EQ…`) form. */
78
+ getTokenExplorerUrl(tokenIdentifier?: string): string;
79
+ /** `null` for native TON. */
80
+ getAssetExplorerUrl(asset: TonAsset): string | null;
81
+ getTransactionExplorerUrl(txHash: string): string;
82
+ validateAddress(raw: string): boolean;
83
+ validateTokenIdentifier(raw: string | undefined): boolean;
84
+ getAccountState(address: string): Promise<TonAccountState>;
85
+ /**
86
+ * The wallet's seqno, read live from its get-method rather than from the
87
+ * indexed account state, which can trail a deploy; 0 while it has no code.
88
+ */
89
+ getSeqno(address: string): Promise<number>;
90
+ /**
91
+ * Native TON for no identifier; otherwise the jetton whose master
92
+ * `identifier` names, its symbol and decimals read from its TEP-64
93
+ * metadata ({@link getJettonMetadata}). Resolved jettons are kept for the
94
+ * chain's lifetime.
95
+ */
96
+ resolveAsset(identifier: string | null | undefined): Promise<TonAsset>;
97
+ /**
98
+ * A jetton's TEP-64 metadata: the master's `get_jetton_data` content, and the
99
+ * off-chain JSON its URI names (https) for what the content lacks. Throws
100
+ * `InvalidTokenIdentifier` for anything that is not a jetton master, and
101
+ * (retryably) when the decimals cannot be read.
102
+ */
103
+ getJettonMetadata(jettonMaster: string): Promise<TonJettonMetadata>;
104
+ createAsset(symbol: string, identifier: string | null | undefined, decimals: number): TonAsset;
105
+ getJettonAsset(symbol: string, jettonMaster: string, decimals: number): TonAsset;
106
+ /** The jetton wallet `owner` has (or will have) for `jettonMaster`, raw. */
107
+ getJettonWalletAddress(jettonMaster: string, owner: string): Promise<string>;
108
+ /** Nanotons, or the jetton's smallest unit when `tokenIdentifier` is a jetton master. */
109
+ getBalance(owner: string, tokenIdentifier?: string): Promise<bigint>;
110
+ /**
111
+ * A transfer from `from`: native TON (with `memo` as a text comment), or a
112
+ * jetton through the sender's jetton wallet, the excess returned to the
113
+ * sender. `amountHr` takes the jetton's decimals from its metadata.
114
+ *
115
+ * - `isFullBalance`: native TON sends everything the wallet holds (send mode
116
+ * 128 + 2, value 0); a jetton sends the jetton wallet's whole balance.
117
+ * - Native `bounce`, unless given: only to a bounceable (`EQ…`) address
118
+ * that is deployed — a contract that fails then returns the TON, and a
119
+ * wallet not deployed yet still receives it, as TON wallets send.
120
+ * - Jetton transfers are always bounceable unless `bounce` says otherwise,
121
+ * carry {@link DEFAULT_JETTON_TRANSFER_ATTACHED_NANOTON} and forward
122
+ * {@link DEFAULT_JETTON_FORWARD_NANOTON}; `jettonAttachedNanoton`,
123
+ * `forwardTonAmountNanoton` and `sendMode` override.
124
+ */
125
+ createTransferUnsignedTransaction(req: TonTransferOptions): Promise<TonUnsignedTransaction>;
126
+ /**
127
+ * Emulates the whole trace of an external message (signature ignored): what
128
+ * it would cost, and whether every transaction would succeed with nothing
129
+ * bounced. Throws `SimulationFailed` when the message would be refused
130
+ * outright.
131
+ */
132
+ emulate(boc: string): Promise<TonEmulationResult>;
133
+ /**
134
+ * Sends an external message (base64 BOC or bytes) and returns its normalized
135
+ * hash. Throws `TonBroadcastUncertainError` when the message may have reached
136
+ * the network anyway; re-signing then can pay twice.
137
+ */
138
+ broadcast(signed: string | Uint8Array, opts?: BroadcastOpts): Promise<string>;
139
+ broadcastSignedTransaction(signed: TonSignedTransaction): Promise<string>;
140
+ getTransactionStatus(txHash: string, opts?: TonGetTransactionStatusOpts): Promise<TonTransactionStatus>;
141
+ getTransactionStatus(txHashes: string[], opts?: TonGetTransactionStatusOpts): Promise<TonTransactionStatus[]>;
142
+ /** The masterchain's latest block. */
143
+ getChainTipHeight(): Promise<number>;
144
+ /**
145
+ * Where a signed request stands, so it is never replaced while it can still
146
+ * execute — the one check to make before signing a replacement, after a
147
+ * `Failed` relayed request or an uncertain broadcast:
148
+ * - `consumed`: the wallet's seqno has moved past the request's, or (given
149
+ * `hash`, for an external request) the request has a trace. It executed —
150
+ * or another request signed with the same seqno did. Do not re-sign it;
151
+ * read its status (`getTransactionStatus(hash)`, or the relay's).
152
+ * - `expired`: the chain's own time (not this machine's) is past
153
+ * `validUntil` by {@link REQUEST_EXPIRY_MARGIN_SECONDS}, with the seqno
154
+ * not moved past it and no trace. It can never execute; replacing it is
155
+ * safe.
156
+ * - `live`: neither yet. It can still execute — a relayed request that
157
+ * failed included: W5 keeps an internal request's seqno only when the
158
+ * transaction succeeds, so anyone can deliver it again from the trace
159
+ * until `validUntil`.
160
+ *
161
+ * `wallet` is the wallet that signed it: the sender of an external request,
162
+ * the target of a relayed one (pass no `hash` for a relayed request; a
163
+ * relay's own hash is the relayer's request). All reads come from one
164
+ * provider.
165
+ */
166
+ getRequestState(args: {
167
+ wallet: string;
168
+ seqno: number;
169
+ validUntil: number;
170
+ hash?: string;
171
+ }): Promise<TonRequestState>;
172
+ /** Native TON bounces only to a bounceable (`EQ…`) address that is deployed. */
173
+ private bouncesByDefault;
174
+ private assertTxHash;
175
+ private onOneProvider;
176
+ /**
177
+ * Whether `signedMessage` is `publicKey`'s signature of `message`
178
+ * (`TonWallet.signMessage`: ed25519 over {@link tonMessageHash}). Needs only
179
+ * the public key — 32 bytes, or 64 hex characters — as Tron's and
180
+ * Stellar's do. A signature must be exactly 128 hex characters.
181
+ */
182
+ static verifySignature(publicKey: Uint8Array | string, message: string, signedMessage: AbstractSignedMessage): boolean;
183
+ /**
184
+ * TON addresses do not reveal their key, so a signature cannot be checked
185
+ * against an address alone: use `TonChain.verifySignature` with the
186
+ * signer's public key (its W5 address is `WalletContractV5R1.create({
187
+ * publicKey, workchain: 0 }).address`).
188
+ */
189
+ verifyMessageSignature(_req: VerifyMessageSignatureRequest): Promise<boolean>;
190
+ private statusOf;
191
+ /**
192
+ * Adds the jetton balance changes of the trace's wallet-to-wallet jetton
193
+ * transfers (TEP-74 \`transfer\` → \`internal_transfer\`) to
194
+ * \`balanceChanges\`: the sending owner loses the amount and the recipient
195
+ * gains it, in the jetton's asset ({@link resolveAsset}).
196
+ *
197
+ * A transfer counts only once its master vouches for both jetton wallets:
198
+ * the sender's must be the master's wallet for the owner it reports, and
199
+ * the receiving one the master's wallet for the recipient the transfer
200
+ * named. Anything else — a contract posing as a jetton wallet, a mint or a
201
+ * burn — moves no balance here.
202
+ */
203
+ private addJettonBalanceChanges;
204
+ }
205
+ //# sourceMappingURL=ton_chain.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ton_chain.d.ts","sourceRoot":"","sources":["../../../ton/ton_chain.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,EACL,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC7B,KAAK,6BAA6B,EAEnC,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAI7C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAyB,MAAM,0BAA0B,CAAC;AASlH,OAAO,EACL,KAAK,eAAe,EAKpB,KAAK,WAAW,EAEhB,KAAK,QAAQ,EAGd,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EAAwB,KAAK,eAAe,EAAE,oBAAoB,EAAqB,MAAM,6BAA6B,CAAC;AAClI,OAAO,EAAE,oBAAoB,EAAE,sBAAsB,EAAsB,MAAM,uBAAuB,CAAC;AAEzG,gHAAgH;AAChH,eAAO,MAAM,wCAAwC,YAAc,CAAC;AACpE,4EAA4E;AAC5E,eAAO,MAAM,8BAA8B,KAAK,CAAC;AACjD;;;;GAIG;AACH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAShD,qEAAqE;AACrE,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9D,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,wCAAwC;IACxC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,gEAAgE;IAChE,MAAM,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACpC,oCAAoC;IACpC,QAAQ,CAAC,EAAE,WAAW,CAAC;IACvB,sFAAsF;IACtF,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACpC;AAED,4FAA4F;AAC5F,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,2CAA2C;IAC3C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oEAAoE;IACpE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uFAAuF;IACvF,uBAAuB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,2BAA4B,SAAQ,wBAAwB;IAC3E,mGAAmG;IACnG,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAmB,SAAQ,eAAe;IACzD,KAAK,EAAE,QAAQ,CAAC;CACjB;AAED;;;;;GAKG;AACH,qBAAa,QAAS,SAAQ,KAAK;;IAIjC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAW;gBAE5B,IAAI,EAAE,YAAY;IAO9B,oGAAoG;IACpG,IAAI,QAAQ,IAAI,WAAW,CAkB1B;IAED,IAAI,SAAS,IAAI,SAAS,CAEzB;IAED,IAAI,WAAW,IAAI,QAAQ,CAE1B;IAED,IAAI,WAAW,IAAI,QAAQ,CAE1B;IAED,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAI7C,mFAAmF;IACnF,mBAAmB,CAAC,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM;IAKrD,6BAA6B;IAC7B,mBAAmB,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI;IAOnD,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAIjD,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IASrC,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;IAIzD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAI1D;;;OAGG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI1C;;;;;OAKG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC;IAa5E;;;;;OAKG;IACG,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAIzE,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAU9F,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAIhF,4EAA4E;IAC5E,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAI5E,yFAAyF;IACnF,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK1E;;;;;;;;;;;;;;OAcG;IACG,iCAAiC,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAuDjG;;;;;OAKG;IACG,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAOvD;;;;OAIG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,EAAE,IAAI,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC;IAoBnF,0BAA0B,CAAC,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAOzE,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,oBAAoB,CAAC;IACvG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,IAAI,CAAC,EAAE,2BAA2B,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAa7G,sCAAsC;IAChC,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC;IAI1C;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,eAAe,CAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,CAAC;IAmC3H,gFAAgF;YAClE,gBAAgB;IAK9B,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,aAAa;IAKrB;;;;;OAKG;IACH,MAAM,CAAC,eAAe,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,qBAAqB,GAAG,OAAO;IActH;;;;;OAKG;IACG,sBAAsB,CAAC,IAAI,EAAE,6BAA6B,GAAG,OAAO,CAAC,OAAO,CAAC;YAQrE,QAAQ;IActB;;;;;;;;;;;OAWG;YACW,uBAAuB;CA8BtC"}