@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
@@ -0,0 +1,432 @@
1
+ import { Cell as CoreCell } from '@ton/core';
2
+ import { ChainError, ChainErrorKinds } from "../errors.js";
3
+ import { tonNormalizedExternalHash } from "./ton_messages.js";
4
+ /**
5
+ * A provider failure. `retryable` is true only for failures that say nothing
6
+ * about the answer (transport, timeout, 429, 5xx); the fallback retries those
7
+ * and nothing else.
8
+ */
9
+ export class TonProviderError extends ChainError {
10
+ retryable;
11
+ constructor(kind, message, retryable, meta, cause) {
12
+ super(kind, message, meta, cause);
13
+ this.name = 'TonProviderError';
14
+ this.retryable = retryable;
15
+ }
16
+ }
17
+ /**
18
+ * A broadcast whose outcome is unknown: a provider failed without an answer,
19
+ * so the message may have reached the network even if another provider then
20
+ * refused it (a refusal can mean it was already accepted). Read the status of
21
+ * `meta.txHash`, or wait until the request is expired, before signing again.
22
+ */
23
+ export class TonBroadcastUncertainError extends TonProviderError {
24
+ constructor(message, meta, cause) {
25
+ super(ChainErrorKinds.BroadcastUncertain, message, false, meta, cause);
26
+ this.name = 'TonBroadcastUncertainError';
27
+ }
28
+ }
29
+ /**
30
+ * TON Center v3 first; TonAPI only when TON Center fails without an answer.
31
+ *
32
+ * A definite answer from the primary (not found, a refused emulation, a
33
+ * refused broadcast) is final. A broadcast retried on the fallback sends the
34
+ * same BOC: the wallet's seqno makes a second landing impossible.
35
+ */
36
+ export class TonFallbackProvider {
37
+ primary;
38
+ fallback;
39
+ onFallback;
40
+ name;
41
+ constructor(primary, fallback, onFallback = () => { }) {
42
+ this.primary = primary;
43
+ this.fallback = fallback;
44
+ this.onFallback = onFallback;
45
+ this.name = fallback === null ? primary.name : `${primary.name}+${fallback.name}`;
46
+ }
47
+ getAccountState(address) {
48
+ return this.call('getAccountState', (p) => p.getAccountState(address));
49
+ }
50
+ getSeqno(address) {
51
+ return this.call('getSeqno', (p) => p.getSeqno(address));
52
+ }
53
+ getJettonWalletAddress(jettonMaster, owner) {
54
+ return this.call('getJettonWalletAddress', (p) => p.getJettonWalletAddress(jettonMaster, owner));
55
+ }
56
+ getJettonBalance(jettonWallet) {
57
+ return this.call('getJettonBalance', (p) => p.getJettonBalance(jettonWallet));
58
+ }
59
+ getJettonContent(jettonMaster) {
60
+ return this.call('getJettonContent', (p) => p.getJettonContent(jettonMaster));
61
+ }
62
+ getJettonWalletData(jettonWallet) {
63
+ return this.call('getJettonWalletData', (p) => p.getJettonWalletData(jettonWallet));
64
+ }
65
+ /**
66
+ * A refusal is definite only when no provider failed before it: once one
67
+ * failed without an answer, the message may already be in flight, and a
68
+ * later refusal may be the network rejecting a duplicate.
69
+ */
70
+ async sendBoc(boc) {
71
+ try {
72
+ await this.primary.sendBoc(boc);
73
+ return;
74
+ }
75
+ catch (err) {
76
+ if (!(err instanceof TonProviderError) || !err.retryable)
77
+ throw err;
78
+ if (this.fallback === null)
79
+ throw new TonBroadcastUncertainError(`broadcast outcome unknown: ${err.message}`, undefined, err);
80
+ this.onFallback('sendBoc', err);
81
+ try {
82
+ await this.fallback.sendBoc(boc);
83
+ }
84
+ catch (fallbackErr) {
85
+ throw new TonBroadcastUncertainError(`broadcast outcome unknown: ${err.message}; then ${fallbackErr.message}`, undefined, fallbackErr);
86
+ }
87
+ }
88
+ }
89
+ getTrace(hash) {
90
+ return this.call('getTrace', (p) => p.getTrace(hash));
91
+ }
92
+ emulate(boc) {
93
+ return this.call('emulate', (p) => p.emulate(boc));
94
+ }
95
+ getMasterchainHead() {
96
+ return this.call('getMasterchainHead', (p) => p.getMasterchainHead());
97
+ }
98
+ /**
99
+ * Runs several reads on one provider throughout: the primary, or — when any
100
+ * of them fails without an answer — all of them again on the fallback. Reads
101
+ * that must see the chain at one point never mix providers that lag
102
+ * differently.
103
+ */
104
+ onOneProvider(method, run) {
105
+ return this.call(method, run);
106
+ }
107
+ async call(method, run) {
108
+ try {
109
+ return await run(this.primary);
110
+ }
111
+ catch (err) {
112
+ if (this.fallback === null || !(err instanceof TonProviderError) || !err.retryable)
113
+ throw err;
114
+ this.onFallback(method, err);
115
+ return run(this.fallback);
116
+ }
117
+ }
118
+ }
119
+ const DEFAULT_TIMEOUT_MS = 10_000;
120
+ /** Enough of an error reply to keep the lite server's exit code, which follows a long preamble. */
121
+ const ERROR_TEXT_LIMIT = 1_000;
122
+ /** One JSON request; maps every failure to a {@link TonProviderError}. Returns `null` on a 404. */
123
+ export async function tonHttpJson(provider, endpoint, path, init) {
124
+ const url = `${endpoint.url.replace(/\/$/, '')}${path}`;
125
+ let response;
126
+ try {
127
+ response = await fetch(url, {
128
+ method: init.method ?? 'GET',
129
+ headers: { accept: 'application/json', ...(init.body === undefined ? {} : { 'content-type': 'application/json' }), ...init.headers },
130
+ body: init.body === undefined ? undefined : JSON.stringify(init.body),
131
+ signal: AbortSignal.timeout(endpoint.timeoutMs ?? DEFAULT_TIMEOUT_MS),
132
+ redirect: 'error',
133
+ });
134
+ }
135
+ catch (err) {
136
+ throw new TonProviderError(ChainErrorKinds.RpcError, `${provider} ${path} request failed: ${err.message}`, true, undefined, err);
137
+ }
138
+ const text = await response.text();
139
+ if (response.status === 404)
140
+ return null;
141
+ if (response.status === 429 || response.status >= 500) {
142
+ throw new TonProviderError(ChainErrorKinds.RpcError, `${provider} ${path} answered HTTP ${response.status}: ${text.slice(0, ERROR_TEXT_LIMIT)}`, true);
143
+ }
144
+ let payload;
145
+ try {
146
+ payload = text.length === 0 ? {} : JSON.parse(text);
147
+ }
148
+ catch {
149
+ throw new TonProviderError(ChainErrorKinds.RpcError, `${provider} ${path} answered non-JSON (HTTP ${response.status})`, true);
150
+ }
151
+ if (response.status >= 400) {
152
+ const message = errorMessageOf(payload) ?? text.slice(0, ERROR_TEXT_LIMIT);
153
+ throw new TonProviderError(ChainErrorKinds.RpcError, `${provider} ${path} refused (HTTP ${response.status}): ${message}`, false);
154
+ }
155
+ return payload;
156
+ }
157
+ const EXTERNAL_MESSAGE_REFUSED = /cannot apply external message/i;
158
+ const EXTERNAL_MESSAGE_DUPLICATE = /duplicate message/i;
159
+ const REFUSAL_EXIT_CODE = /exit\s*code\s*[=:]?\s*(-?\d+)/i;
160
+ /**
161
+ * The wallets' refusals of an external request, by exit code.
162
+ *
163
+ * W5R1 checks the signature, then the seqno (133), the wallet id, then
164
+ * `valid_until`: a message that already landed fails on the seqno, and only
165
+ * there — every later refusal means the seqno still matched.
166
+ *
167
+ * v3r2 and v4r2 check `valid_until` first (v3r2: 35, which is also its bad
168
+ * signature; v4r2: 36), then the seqno (33), the wallet id (34), the
169
+ * signature (35). An expiry refusal therefore says nothing about whether the
170
+ * message landed earlier.
171
+ */
172
+ const SEQNO_MOVED_EXIT_CODES = new Set([133, 33]);
173
+ /**
174
+ * The account refused to run the request at all — typically it holds nothing
175
+ * to pay for it, as a wallet that sent everything away does. No check ran, so
176
+ * this says nothing about whether the same request landed earlier.
177
+ */
178
+ const REFUSED_BEFORE_EXECUTION = /before smart-contract execution/i;
179
+ const MAYBE_LANDED_EXIT_CODES = new Set([35, 36]);
180
+ /**
181
+ * The reply to a broadcast, read for what the lite server said rather than
182
+ * the HTTP status (both answers come as HTTP 500 from TON Center, and from
183
+ * TonAPI as 500 or 406):
184
+ * - "duplicate message": the network already has this exact message, so the
185
+ * broadcast succeeded;
186
+ * - "cannot apply external message": the wallet does not accept it now. On a
187
+ * seqno check (W5 133, v3r2 / v4r2 33) this is `NonceTooLow` — this
188
+ * message or another with its seqno already landed, so read the status
189
+ * before signing again; on a v3r2 / v4r2 expiry (35, 36), or a refusal "before
190
+ * smart-contract execution" (an account that cannot pay to run it), it may
191
+ * have landed earlier, so it is `BroadcastUncertain`; any other refusal is
192
+ * a definite `BroadcastRejected`.
193
+ */
194
+ export async function tonBroadcastReply(provider, reply) {
195
+ try {
196
+ return await reply;
197
+ }
198
+ catch (err) {
199
+ if (!(err instanceof TonProviderError))
200
+ throw err;
201
+ if (EXTERNAL_MESSAGE_DUPLICATE.test(err.message))
202
+ return {};
203
+ if (EXTERNAL_MESSAGE_REFUSED.test(err.message)) {
204
+ if (REFUSED_BEFORE_EXECUTION.test(err.message)) {
205
+ throw new TonBroadcastUncertainError(`${provider} refused the message before running it (the account cannot pay for it); it may be a request that landed earlier: ${err.message}`, undefined, err);
206
+ }
207
+ const exitCode = Number(REFUSAL_EXIT_CODE.exec(err.message)?.[1]);
208
+ if (MAYBE_LANDED_EXIT_CODES.has(exitCode)) {
209
+ throw new TonBroadcastUncertainError(`${provider} refused the message as expired (v3r2 / v4r2 check that first, so it may have landed earlier) or for its signature: ${err.message}`, undefined, err);
210
+ }
211
+ if (SEQNO_MOVED_EXIT_CODES.has(exitCode)) {
212
+ throw new TonProviderError(ChainErrorKinds.NonceTooLow, `${provider} refused the message: the wallet's seqno has moved past it, so it or another request with its seqno landed: ${err.message}`, false, undefined, err);
213
+ }
214
+ throw new TonProviderError(ChainErrorKinds.BroadcastRejected, `${provider} refused the message: ${err.message}`, false, undefined, err);
215
+ }
216
+ throw err;
217
+ }
218
+ }
219
+ /** The `error` field some replies carry with a 2xx status. */
220
+ export function errorMessageOf(payload) {
221
+ if (payload === null || typeof payload !== 'object')
222
+ return null;
223
+ const error = payload.error;
224
+ return typeof error === 'string' && error.length > 0 ? error : null;
225
+ }
226
+ export function asRecord(value, what) {
227
+ if (value === null || typeof value !== 'object' || Array.isArray(value)) {
228
+ throw new TonProviderError(ChainErrorKinds.RpcError, `Malformed TON provider reply: ${what} is not an object`, false);
229
+ }
230
+ return value;
231
+ }
232
+ export function asBigInt(value, what) {
233
+ if (typeof value === 'bigint')
234
+ return value;
235
+ if ((typeof value === 'number' && Number.isInteger(value)) || (typeof value === 'string' && /^-?(\d+|0x[0-9a-fA-F]+)$/.test(value))) {
236
+ return BigInt(value);
237
+ }
238
+ if (value === undefined || value === null)
239
+ return 0n;
240
+ throw new TonProviderError(ChainErrorKinds.RpcError, `Malformed TON provider reply: ${what} is not an integer`, false);
241
+ }
242
+ /** A required integer field; a reply without one says nothing definite, so the fallback is asked. */
243
+ export function asRequiredInteger(value, what) {
244
+ const parsed = typeof value === 'number' ? value : typeof value === 'string' && /^-?\d+$/.test(value) ? Number(value) : NaN;
245
+ if (!Number.isSafeInteger(parsed)) {
246
+ throw new TonProviderError(ChainErrorKinds.RpcError, `Malformed TON provider reply: ${what} is missing or not an integer`, true);
247
+ }
248
+ return parsed;
249
+ }
250
+ function malformed(what) {
251
+ return new TonProviderError(ChainErrorKinds.RpcError, `Malformed TON provider reply: ${what}`, true);
252
+ }
253
+ /** A required object field; a reply without one says nothing definite, so the fallback is asked. */
254
+ export function asRequiredRecord(value, what) {
255
+ if (value === null || typeof value !== 'object' || Array.isArray(value))
256
+ throw malformed(`${what} is missing or not an object`);
257
+ return value;
258
+ }
259
+ /** A get-method stack entry that is a cell or slice: TON Center gives base64 (`value`), TonAPI hex (`cell`). */
260
+ export function stackCellOf(item, what) {
261
+ const entry = asRequiredRecord(item, what);
262
+ if (entry.type !== 'cell' && entry.type !== 'slice')
263
+ throw malformed(`${what} is not a cell`);
264
+ try {
265
+ if (typeof entry.value === 'string')
266
+ return CoreCell.fromBase64(entry.value);
267
+ if (typeof entry.cell === 'string')
268
+ return CoreCell.fromBoc(Buffer.from(entry.cell, 'hex'))[0];
269
+ }
270
+ catch {
271
+ throw malformed(`${what} is not a valid cell`);
272
+ }
273
+ throw malformed(`${what} carries no cell`);
274
+ }
275
+ /** `get_wallet_data`'s stack — balance, owner, master, code — as both providers give it. */
276
+ export function jettonWalletDataOf(stack) {
277
+ if (!Array.isArray(stack) || stack.length < 3)
278
+ throw malformed('get_wallet_data returned a short stack');
279
+ const balanceEntry = asRequiredRecord(stack[0], 'jetton balance');
280
+ const balance = asBigInt(balanceEntry.value ?? balanceEntry.num, 'jetton balance');
281
+ try {
282
+ return {
283
+ balance,
284
+ owner: stackCellOf(stack[1], 'jetton wallet owner').beginParse().loadAddress().toRawString(),
285
+ jettonMaster: stackCellOf(stack[2], 'jetton master').beginParse().loadAddress().toRawString(),
286
+ };
287
+ }
288
+ catch (err) {
289
+ if (err instanceof TonProviderError)
290
+ throw err;
291
+ throw malformed('get_wallet_data returned no addresses');
292
+ }
293
+ }
294
+ /** A required boolean field; see {@link asRequiredRecord}. */
295
+ export function asRequiredBoolean(value, what) {
296
+ if (typeof value !== 'boolean')
297
+ throw malformed(`${what} is missing or not a boolean`);
298
+ return value;
299
+ }
300
+ /**
301
+ * A transaction succeeds when its compute phase succeeded — or was skipped
302
+ * only because the account has no code yet — and its action phase, if any,
303
+ * succeeded without skipping a message. Phases that cannot be what the chain
304
+ * recorded (a successful compute phase without an action phase) are a
305
+ * malformed reply, never a success.
306
+ */
307
+ export function tonTransactionOutcome(phases) {
308
+ const ran = phases.computeSkipped === null;
309
+ if (ran && phases.computeSuccess && phases.action === null)
310
+ throw malformed('a compute phase that succeeded has no action phase');
311
+ if ((!ran || !phases.computeSuccess) && phases.action !== null)
312
+ throw malformed('an action phase follows a compute phase that did not succeed');
313
+ const computeOk = ran ? phases.computeSuccess : phases.computeSkipped === 'no_state';
314
+ const skippedActions = phases.action?.skippedActions ?? 0;
315
+ return {
316
+ success: computeOk && (phases.action === null || (phases.action.success && skippedActions === 0)),
317
+ skippedActions,
318
+ aborted: phases.aborted,
319
+ computeExitCode: ran ? phases.computeExitCode : null,
320
+ actionResultCode: phases.action?.resultCode ?? null,
321
+ };
322
+ }
323
+ /** An account's status as the provider stated it; anything else says nothing definite. */
324
+ export function asStatedAccountStatus(value) {
325
+ if (value === 'active' || value === 'frozen' || value === 'uninit' || value === 'nonexist')
326
+ return value;
327
+ throw new TonProviderError(ChainErrorKinds.RpcError, `Malformed TON provider reply: unknown account status ${String(value)}`, true);
328
+ }
329
+ export function asAccountStatus(value) {
330
+ return value === 'active' || value === 'frozen' || value === 'uninit' || value === 'nonexist' ? value : 'nonexist';
331
+ }
332
+ /** A decoded message in the trace form (raw addresses, opcode from the body). */
333
+ export function tonTraceMessageOf(message) {
334
+ const info = message.info;
335
+ const body = message.body.bits.length === 0 && message.body.refs.length === 0 ? null : message.body;
336
+ return {
337
+ source: info.type === 'external-in' || info.src === null ? null : info.src.toRawString(),
338
+ destination: info.type === 'external-out' ? null : info.dest.toRawString(),
339
+ value: info.type === 'internal' ? info.value.coins : 0n,
340
+ fwdFee: info.type === 'internal' ? info.forwardFee : 0n,
341
+ bounce: info.type === 'internal' && info.bounce,
342
+ bounced: info.type === 'internal' && info.bounced,
343
+ opcode: body !== null && body.bits.length >= 32 ? body.beginParse().loadUint(32) : null,
344
+ createdLt: info.type === 'external-in' ? null : info.createdLt,
345
+ body,
346
+ };
347
+ }
348
+ /**
349
+ * Checks a trace before anything is judged from it. On TON every internal
350
+ * message produces a transaction where it lands, so a provider's trace must
351
+ * hold together:
352
+ * - one root (the first transaction); every other transaction has a parent in
353
+ * the trace and an incoming message. A trace still running may lack a
354
+ * parent, the root included;
355
+ * - every internal message sent names its source and `created_lt`;
356
+ * - every incoming message is one its parent sent: same source, `created_lt`,
357
+ * destination and value;
358
+ * - in a complete trace, every internal message sent has the transaction
359
+ * that received it.
360
+ * A trace that breaks any of these is the provider's error, not the chain's:
361
+ * the error is retryable, so the fallback provider is asked instead, and no
362
+ * gap is ever read as an undelivered message.
363
+ */
364
+ export function assertTraceConsistent(source, trace) {
365
+ const inconsistent = (detail) => new TonProviderError(ChainErrorKinds.RpcError, `Inconsistent trace from ${source}: ${detail}`, true);
366
+ const byHash = new Map(trace.transactions.map((tx) => [tx.hash, tx]));
367
+ const received = new Set();
368
+ trace.transactions.forEach((tx, index) => {
369
+ const unnamed = tx.outMsgs.find((m) => m.destination !== null && (m.source === null || m.createdLt === null));
370
+ if (unnamed !== undefined)
371
+ throw inconsistent(`transaction ${tx.hash} sent a message to ${unnamed.destination} with no source or created_lt`);
372
+ if (index === 0 && tx.parent === null)
373
+ return;
374
+ if (tx.parent === null)
375
+ throw inconsistent(`transaction ${tx.hash} has no parent but is not the root`);
376
+ if (tx.inMsg === null || tx.inMsg.source === null || tx.inMsg.createdLt === null) {
377
+ throw inconsistent(`transaction ${tx.hash} has no incoming internal message`);
378
+ }
379
+ const parent = byHash.get(tx.parent);
380
+ if (parent === undefined) {
381
+ if (trace.complete)
382
+ throw inconsistent(`transaction ${tx.hash} names a parent ${tx.parent} the trace does not hold`);
383
+ return;
384
+ }
385
+ const inMsg = tx.inMsg;
386
+ const sent = parent.outMsgs.find((m) => m.source === inMsg.source && m.createdLt === inMsg.createdLt);
387
+ if (sent === undefined || sent.destination !== tx.account || sent.value !== inMsg.value) {
388
+ throw inconsistent(`transaction ${tx.hash} received no message its parent ${parent.hash} sent`);
389
+ }
390
+ received.add(`${parent.hash}:${inMsg.createdLt}`);
391
+ });
392
+ if (trace.complete) {
393
+ for (const tx of trace.transactions) {
394
+ const lost = tx.outMsgs.find((m) => m.destination !== null && !received.has(`${tx.hash}:${m.createdLt}`));
395
+ if (lost !== undefined) {
396
+ throw inconsistent(`the trace is complete, but the message ${tx.hash} sent to ${lost.destination} reached no transaction`);
397
+ }
398
+ }
399
+ }
400
+ return trace;
401
+ }
402
+ /**
403
+ * The trace a provider returned for `hash` must be that message's: its root
404
+ * received an external message whose normalized hash is `hash`. A trace still
405
+ * running may not hold its root yet.
406
+ */
407
+ export function assertTraceOf(source, hash, trace) {
408
+ const root = trace.transactions[0];
409
+ if (root === undefined || root.parent !== null)
410
+ return trace;
411
+ const inMsg = root.inMsg;
412
+ if (inMsg === null || inMsg.source !== null || inMsg.body === null || tonNormalizedExternalHash(root.account, inMsg.body) !== hash) {
413
+ throw new TonProviderError(ChainErrorKinds.RpcError, `${source} returned the trace of another message than ${hash}`, true);
414
+ }
415
+ return trace;
416
+ }
417
+ const TX_HASH_REGEX = /^[0-9a-f]{64}$/;
418
+ /**
419
+ * Refuses anything but a transaction id as the SDK gives it — the normalized
420
+ * external-message hash, 64 lowercase hex characters. A base64 hash or a typo
421
+ * would otherwise find no trace, and "no trace" counts as "never landed".
422
+ */
423
+ export function assertTonTxHash(hash) {
424
+ if (typeof hash !== 'string' || !TX_HASH_REGEX.test(hash)) {
425
+ throw new TonProviderError(ChainErrorKinds.InvalidArgument, `A TON transaction id is 64 lowercase hex characters, got ${JSON.stringify(hash)}`, false);
426
+ }
427
+ return hash;
428
+ }
429
+ export function definiteError(kind, message) {
430
+ return new TonProviderError(kind, message, false);
431
+ }
432
+ //# sourceMappingURL=ton_provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ton_provider.js","sourceRoot":"","sources":["../../../ton/ton_provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { Cell } from '@ton/core';
2
+ import { type TonAccountState, type TonHttpEndpoint, type TonJettonWalletData, type TonMasterchainHead, type TonProvider, type TonTrace } from './ton_provider.ts';
3
+ /** TonAPI (`/v2`), the fallback provider. */
4
+ export declare class TonapiProvider implements TonProvider {
5
+ private readonly endpoint;
6
+ readonly name = "TonAPI";
7
+ constructor(endpoint: TonHttpEndpoint);
8
+ getAccountState(address: string): Promise<TonAccountState>;
9
+ getSeqno(address: string): Promise<number>;
10
+ getJettonWalletAddress(jettonMaster: string, owner: string): Promise<string>;
11
+ /**
12
+ * 0 only for a jetton wallet with no code: TonAPI answers a get-method on
13
+ * one with 404 (or exit code -13), which other failures can also produce, so
14
+ * the account state confirms it. Any other failure throws.
15
+ */
16
+ getJettonBalance(jettonWallet: string): Promise<bigint>;
17
+ getJettonContent(jettonMaster: string): Promise<Cell>;
18
+ /** `null` only for a jetton wallet with no code, confirmed by the account state as for the balance. */
19
+ getJettonWalletData(jettonWallet: string): Promise<TonJettonWalletData | null>;
20
+ sendBoc(boc: string): Promise<void>;
21
+ getTrace(hash: string): Promise<TonTrace | null>;
22
+ emulate(boc: string): Promise<TonTrace>;
23
+ getMasterchainHead(): Promise<TonMasterchainHead>;
24
+ /**
25
+ * Resolves each transaction's masterchain block: its own block on the
26
+ * masterchain, the shard block's `master_ref` otherwise. TonAPI serves only
27
+ * committed blocks, so a transaction it returns is final; `master_ref` is the
28
+ * masterchain block the shard block points back to, which can be a few
29
+ * blocks before the one TON Center reports as committing it.
30
+ */
31
+ private withMasterchainSeqnos;
32
+ private masterchainSeqnoOf;
33
+ /** The reply of a get-method that ran, or `null` when the account has no code to run it. */
34
+ private runGetMethod;
35
+ private getMethodPath;
36
+ private get;
37
+ private headers;
38
+ }
39
+ //# sourceMappingURL=ton_tonapi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ton_tonapi.d.ts","sourceRoot":"","sources":["../../../ton/ton_tonapi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAqC,MAAM,WAAW,CAAC;AAIpE,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAEhB,KAAK,QAAQ,EAmBd,MAAM,mBAAmB,CAAC;AAc3B,6CAA6C;AAC7C,qBAAa,cAAe,YAAW,WAAW;IAGpC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,QAAQ,CAAC,IAAI,YAAQ;gBAEQ,QAAQ,EAAE,eAAe;IAEhD,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAY1D,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAM1C,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IASlF;;;;OAIG;IACG,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAiBvD,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAS3D,uGAAuG;IACjG,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAc9E,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASnC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAYhD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAcvC,kBAAkB,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAKvD;;;;;;OAMG;YACW,qBAAqB;YASrB,kBAAkB;IAShC,4FAA4F;YAC9E,YAAY;IAO1B,OAAO,CAAC,aAAa;IAKrB,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,OAAO;CAGhB"}