tbc-tx-parser 0.1.7 → 0.1.8
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/README.md +65 -8
- package/dist/decode-tx-raw.d.ts.map +1 -1
- package/dist/decode-tx-raw.js +28 -5
- package/dist/decode-tx-raw.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/protocols/ft/index.d.ts +12 -0
- package/dist/protocols/ft/index.d.ts.map +1 -1
- package/dist/protocols/ft/index.js +141 -18
- package/dist/protocols/ft/index.js.map +1 -1
- package/dist/render-transaction-description.d.ts +8 -0
- package/dist/render-transaction-description.d.ts.map +1 -0
- package/dist/render-transaction-description.js +32 -0
- package/dist/render-transaction-description.js.map +1 -0
- package/dist/result/classification-description.d.ts +11 -0
- package/dist/result/classification-description.d.ts.map +1 -0
- package/dist/result/classification-description.js +570 -0
- package/dist/result/classification-description.js.map +1 -0
- package/dist/result/classification.d.ts +20 -0
- package/dist/result/classification.d.ts.map +1 -0
- package/dist/result/classification.js +495 -0
- package/dist/result/classification.js.map +1 -0
- package/dist/result/index.d.ts +2 -1
- package/dist/result/index.d.ts.map +1 -1
- package/dist/result/index.js +22 -0
- package/dist/result/index.js.map +1 -1
- package/dist/types/result.d.ts +44 -0
- package/dist/types/result.d.ts.map +1 -1
- package/dist/types.d.ts +1 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -16,7 +16,7 @@ pnpm add tbc-tx-parser
|
|
|
16
16
|
|
|
17
17
|
Currently supported:
|
|
18
18
|
|
|
19
|
-
- Native TBC transfers, coinbase rewards,
|
|
19
|
+
- Native TBC transfers, coinbase rewards, source-linked returns, fees, and common locking-script outputs.
|
|
20
20
|
- FT / StableCoin mint, transfer, merge, and mixed FT/TBC transactions.
|
|
21
21
|
- NFT collection mint, ordinary NFT mint/transfer, and hash-only Hold transfer destinations.
|
|
22
22
|
- OrderBook placement, cancellation, update, and matching semantics.
|
|
@@ -36,6 +36,40 @@ const result = await decodeTxRaw(txraw, {
|
|
|
36
36
|
});
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
+
### Classification TBC display unit
|
|
40
|
+
|
|
41
|
+
Native TBC values in `classification.description` use satoshis by default. Callers may request TBC display values without changing any structured amount fields:
|
|
42
|
+
|
|
43
|
+
```ts
|
|
44
|
+
const result = await decodeTxRaw(txraw, {
|
|
45
|
+
inputUtxos,
|
|
46
|
+
display: {
|
|
47
|
+
tbcUnit: 'tbc', // "satoshi" (default) or "tbc"
|
|
48
|
+
},
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
For example, the same description can be rendered as either:
|
|
53
|
+
|
|
54
|
+
```text
|
|
55
|
+
Sends 100,000,000 satoshis to address ...; network fee: 80 satoshis.
|
|
56
|
+
Sends 100 TBC to address ...; network fee: 0.000080 TBC.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
This option affects only native amounts embedded in `classification.description`. Fields such as `chain.outputs[].satoshis`, `chain.fee.satoshis`, and `assetFlows[].amount.satoshis` always remain exact satoshi values. Normal TBC amounts use up to six decimal places with trailing zeroes removed; network fees use exactly six decimal places.
|
|
60
|
+
|
|
61
|
+
To switch units after a transaction has already been decoded, render the description directly from the existing result:
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
import { renderTransactionDescription } from 'tbc-tx-parser';
|
|
65
|
+
|
|
66
|
+
const description = renderTransactionDescription(result, {
|
|
67
|
+
tbcUnit: 'tbc',
|
|
68
|
+
});
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
`renderTransactionDescription` is synchronous and does not parse `txraw`, fetch input UTXOs, mutate the result, or repeat protocol classification. This makes it suitable for a UI unit selector while keeping structured amounts unchanged.
|
|
72
|
+
|
|
39
73
|
## Input UTXOs
|
|
40
74
|
|
|
41
75
|
Asset-flow decoding requires the prevout for every input. Passing only `txraw` throws because the parser cannot reliably determine where assets originated:
|
|
@@ -92,6 +126,8 @@ result.chain.inputs;
|
|
|
92
126
|
result.chain.outputs;
|
|
93
127
|
result.chain.fee;
|
|
94
128
|
result.assetFlows;
|
|
129
|
+
result.unspendableAssetFlows;
|
|
130
|
+
result.classification;
|
|
95
131
|
```
|
|
96
132
|
|
|
97
133
|
Common fields:
|
|
@@ -100,8 +136,28 @@ Common fields:
|
|
|
100
136
|
- `chain.outputs`: transaction outputs, addresses, script classifications, and protocol tape state.
|
|
101
137
|
- `chain.fee`: transaction fee.
|
|
102
138
|
- `assetFlows`: primary asset-flow data for application displays.
|
|
139
|
+
- `unspendableAssetFlows`: optional FT declarations excluded from normal asset flows after a verified token-amount conservation violation.
|
|
140
|
+
- `classification`: deterministic transaction type, protocol conformance, and an English result description.
|
|
141
|
+
|
|
142
|
+
The SDK exposes transaction classification separately from asset flows so applications can show a concise conclusion without treating weak protocol evidence as definitive:
|
|
143
|
+
|
|
144
|
+
```ts
|
|
145
|
+
result.classification.protocol; // e.g. "orderBook"
|
|
146
|
+
result.classification.action; // e.g. "match"
|
|
147
|
+
result.classification.conformance; // standard | nonstandard | indeterminate
|
|
148
|
+
result.classification.description; // fact-based English conclusion for this transaction
|
|
149
|
+
result.classification.issues; // optional stable issue codes
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
`standard` means the transaction matches a supported protocol action and every invariant currently implemented by this SDK for that action. It is not a consensus-validity or spendability guarantee. `nonstandard` means the protocol family or action is recognizable but an implemented rule is violated. `indeterminate` means the available chain evidence is insufficient to run the relevant checks; missing associated prevouts are not reported as protocol violations.
|
|
153
|
+
|
|
154
|
+
For non-mint FT transactions, classification includes token-amount conservation. If declared FT outputs exceed fully verified FT inputs, the result is `nonstandard` with issue code `FT_OUTPUT_AMOUNT_EXCEEDS_VERIFIED_INPUT`. Those FT declarations are excluded from `assetFlows` and returned in `unspendableAssetFlows`; their decoded scripts also remain available in `chain.outputs`. The field name describes the SDK's conservative application view and does not independently prove consensus-level unspendability. If the relevant FT input amounts are incomplete, conformance is `indeterminate` instead of reporting a violation.
|
|
155
|
+
|
|
156
|
+
`protocol` and `action` form the structured transaction type. Their TypeScript definitions are correlated, so unsupported combinations are rejected at compile time. Classification confidence remains an internal parsing concern rather than a public result field.
|
|
157
|
+
|
|
158
|
+
`description` is generated from the classified action together with the transaction's verified `assetFlows`, endpoint types, and network fee. It summarizes the primary business action instead of replacing the full chain or asset-flow data, for example: `Sends 1,000 PFT to address 1Pz2eAg3JjXQSqs5nGQj7XGhPzvBEbaiP9; network fee: 445 satoshis.` A single verified destination includes its full address, multisignature address, pool ID, or hash; callers decide whether to shorten it in the UI. Multiple destinations are deduplicated and summarized using one total amount and a destination count, never per-destination amounts. Source-linked `self` flows remain available in `assetFlows`, but are omitted from descriptions that already contain an external transfer. Transactions containing only `self` flows use neutral `Internal transfer ...; no funds were sent ...` wording without describing UTXO split/merge mechanics or unknown attached data. Protocol carrier values are omitted from material secondary transfers unless they also match a standalone payment output. When evidence is incomplete, the wording becomes explicitly cautious and does not invent amounts or actions. The final `network fee` clause is the chain transaction fee only; protocol-specific trading or liquidity fees are not folded into it.
|
|
103
159
|
|
|
104
|
-
The
|
|
160
|
+
The first classification release is intentionally fixture-driven: it covers native TBC coinbase, transfer, and MultiSig transactions; StableCoin bootstrap and token actions; and the FT, NFT, PiggyBank, OrderBook, and PoolNFT actions already represented by the SDK test corpus. Unknown contracts remain `indeterminate` instead of receiving a guessed definitive type.
|
|
105
161
|
|
|
106
162
|
The current version also keeps internal `semantic`, `protocolDetails`, and `unsupported` data private. These remain internal protocol-classification and diagnostic capabilities and can later be exposed through an optional diagnostic result if an explorer or protocol-details view needs them.
|
|
107
163
|
|
|
@@ -121,23 +177,24 @@ Canonical flow combinations and endpoint rules:
|
|
|
121
177
|
|
|
122
178
|
| Purpose | Direction | Endpoints |
|
|
123
179
|
| --- | --- | --- |
|
|
124
|
-
| `self` | `self` | `
|
|
180
|
+
| `self` | `self` | `to` matches a verified source endpoint; this covers address returns and consolidations without asserting wallet intent |
|
|
125
181
|
| `transfer` | `out` | both `from` and `to` are present |
|
|
126
182
|
| `mint` | `in` | no `from`; `to` is present only when a recipient is decoded |
|
|
127
183
|
| `burn` | `out` | `from` is present; no `to` |
|
|
128
184
|
| `lock` | `out` | both `from` and `to` are present |
|
|
129
185
|
| `release` | `in` | both `from` and `to` are present |
|
|
130
186
|
|
|
131
|
-
The parser never emits public `purpose: "transfer"` with `direction: "self"`; a verified
|
|
187
|
+
The parser never emits public `purpose: "transfer"` with `direction: "self"`; a verified source-linked return is normalized to `self/self`. A self flow retains both endpoints even when they are equal, but its presence alone does not make the whole transaction a self-transfer. When a consumed asset's source address or hash is unavailable, `from` uses the verified input `{ txid, vout }`, or `outpoints` for multiple source UTXOs, instead of guessing an address. Explicitly partial `unknown` flows may keep optional endpoints.
|
|
132
188
|
|
|
133
189
|
A mint may omit `to` when asset creation is verified but no recipient identity is decoded. PoolNFT create is the canonical example: its Pool Code output is a state anchor, so the contract outpoint remains in `chain.outputs` and is not presented as an asset-flow destination.
|
|
134
190
|
|
|
135
|
-
Protocol-specific flows retain a generic `purpose` and may include `context`. For example, PiggyBank freeze and OrderBook placement both use `purpose: "lock"`, while `context.protocol` and `context.action` distinguish `piggyBank/freeze` from `orderBook/placeBuy` or `orderBook/placeSell`. Recognized OrderBook context is attached only to placement locks. Match settlement and match fee-recipient payments are plain transfers, cancellation refunds are releases, and recreated partial-fill or update order state is read from `chain.outputs[].script.data.orderBook` rather than exposed as an asset flow. OrderBook fee-recipient payments use `purpose: "transfer"`. PoolNFT reserve snapshots are likewise read from `chain.outputs[].script.data.poolNft`; `assetFlows` contains only the pool's observable transfers, LP mint/burn,
|
|
191
|
+
Protocol-specific flows retain a generic `purpose` and may include `context`. For example, PiggyBank freeze and OrderBook placement both use `purpose: "lock"`, while `context.protocol` and `context.action` distinguish `piggyBank/freeze` from `orderBook/placeBuy` or `orderBook/placeSell`. Recognized OrderBook context is attached only to placement locks. Match settlement and match fee-recipient payments are plain transfers, cancellation refunds are releases, and recreated partial-fill or update order state is read from `chain.outputs[].script.data.orderBook` rather than exposed as an asset flow. OrderBook fee-recipient payments use `purpose: "transfer"`. PoolNFT reserve snapshots are likewise read from `chain.outputs[].script.data.poolNft`; `assetFlows` contains only the pool's observable transfers, LP mint/burn, source-linked returns, and visible fee flows. Unknown contract carriers remain `purpose: "transfer"` and use `protocol: "unknown"` with `recognized: false`; marker evidence may be included without guessing a protocol name. When no source address or hash can be extracted from a locking script, the destination is represented by `to.script`.
|
|
136
192
|
|
|
137
193
|
Display guidance:
|
|
138
194
|
|
|
139
195
|
- Summarize what a transaction does from `assetFlows`, script facts, and application context.
|
|
140
196
|
- Use `assetFlows` as the primary source for showing how assets move.
|
|
197
|
+
- Treat `self` as a source-linked structural flow. Do not present it as change or returned funds; omit it from the primary description when external `transfer` flows are also present.
|
|
141
198
|
- Read `chain.inputs` / `chain.outputs` `script.data` when displaying contract state or protocol tape fields.
|
|
142
199
|
|
|
143
200
|
## Amount Units
|
|
@@ -174,7 +231,7 @@ Current PoolNFT coverage includes the primary paths and several false-positive p
|
|
|
174
231
|
|
|
175
232
|
- Reserve delta, FT A amount, and fee relationships for both swap directions.
|
|
176
233
|
- FT A, LP, and TBC relationships for increase / consume liquidity.
|
|
177
|
-
- LP
|
|
234
|
+
- Returned LP amounts, no-visible-fee cases, and small TBC rounding boundaries during consume.
|
|
178
235
|
- Current FT A reserve validation for merge FT in pool.
|
|
179
236
|
- Standalone FTLP merges remain FT self flows without recreating PoolNFT state.
|
|
180
237
|
- Standalone FTLP burns remain FT burn flows without recreating PoolNFT state.
|
|
@@ -216,7 +273,7 @@ TBC_POOL_NFT_JOURNAL=/absolute/path/to/pool-nft-broadcast-journal.json \
|
|
|
216
273
|
npm run pool-nft:fixtures
|
|
217
274
|
```
|
|
218
275
|
|
|
219
|
-
The generator re-fetches every target raw transaction from testnet, verifies its txid, decodes its prevouts, validates lock flags, rejects public `purpose: "state"` flows, and writes candidates under `scripts/pool-nft-generated/`. Pool reserve state belongs under `chain.outputs[].script.data.poolNft`; only observable transfers, mint/burn,
|
|
276
|
+
The generator re-fetches every target raw transaction from testnet, verifies its txid, decodes its prevouts, validates lock flags, rejects public `purpose: "state"` flows, and writes candidates under `scripts/pool-nft-generated/`. Pool reserve state belongs under `chain.outputs[].script.data.poolNft`; only observable transfers, mint/burn, source-linked returns, and visible fees belong in `assetFlows`.
|
|
220
277
|
|
|
221
278
|
## Notes
|
|
222
279
|
|
|
@@ -224,7 +281,7 @@ The generator re-fetches every target raw transaction from testnet, verifies its
|
|
|
224
281
|
- The SDK does not accept a `network` parameter.
|
|
225
282
|
- The SDK does not query transactions by `txid`.
|
|
226
283
|
- The SDK does not fetch input prevouts; callers must provide `inputUtxos`.
|
|
227
|
-
- The SDK
|
|
284
|
+
- The SDK exposes top-level `classification`; internal `semantic`, `protocolDetails`, and `unsupported` fields remain private.
|
|
228
285
|
- TBC addresses use canonical TBC address encoding.
|
|
229
286
|
- `tbc-lib-js` and `tbc-contract` are runtime dependencies installed with the npm package.
|
|
230
287
|
- `docs/`, `scripts/`, and `tests/` are not published to npm; the package contains only `dist`, `README.md`, and `package.json`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode-tx-raw.d.ts","sourceRoot":"","sources":["../src/decode-tx-raw.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"decode-tx-raw.d.ts","sourceRoot":"","sources":["../src/decode-tx-raw.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EASlB,MAAM,YAAY,CAAC;AAiapB,wBAAsB,WAAW,CAC/B,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,kBAAuB,GAC/B,OAAO,CAAC,iBAAiB,CAAC,CAgG5B"}
|
package/dist/decode-tx-raw.js
CHANGED
|
@@ -3,9 +3,10 @@ import { calculateChainStats, inferScriptKind, parseScriptWithHex } from './core
|
|
|
3
3
|
import { parseInputUtxo } from './core/input-utxos.js';
|
|
4
4
|
import { compressPublicInputs, compressPublicOutputs } from './core/public-chain-compression.js';
|
|
5
5
|
import { sanitizeScriptForPublicResult } from './core/public-script.js';
|
|
6
|
-
import { buildAssetFlows } from './result/index.js';
|
|
6
|
+
import { buildAssetFlows, buildUnspendableFtAssetFlows } from './result/index.js';
|
|
7
|
+
import { buildTransactionClassification } from './result/classification.js';
|
|
7
8
|
import { buildFallbackSemantic, buildSemantic } from './result/semantic.js';
|
|
8
|
-
import { collectFtMovements, inferFtTransactionType } from './protocols/ft/index.js';
|
|
9
|
+
import { collectFtMovements, inferFtTransactionType, validateFtConservation } from './protocols/ft/index.js';
|
|
9
10
|
import { collectNftMovements, inferNftTransactionType, optimizeCollectionMintOutputs } from './protocols/nft/index.js';
|
|
10
11
|
import { collectOrderBookOrders, inferOrderBookTransactionType } from './protocols/order-book/index.js';
|
|
11
12
|
import { collectPiggyBankMovements, inferPiggyBankTransactionType } from './protocols/piggy-bank/index.js';
|
|
@@ -307,6 +308,11 @@ export async function decodeTxRaw(txraw, options = {}) {
|
|
|
307
308
|
if (!normalizedTxraw || !/^[0-9a-f]+$/.test(normalizedTxraw) || normalizedTxraw.length % 2 !== 0) {
|
|
308
309
|
throw new Error('Invalid txraw hex');
|
|
309
310
|
}
|
|
311
|
+
if (options.display?.tbcUnit !== undefined &&
|
|
312
|
+
options.display.tbcUnit !== 'satoshi' &&
|
|
313
|
+
options.display.tbcUnit !== 'tbc') {
|
|
314
|
+
throw new Error('Invalid display.tbcUnit; expected "satoshi" or "tbc"');
|
|
315
|
+
}
|
|
310
316
|
const txObject = parseTransactionObject(normalizedTxraw);
|
|
311
317
|
const isCoinbase = isCoinbaseTransaction(txObject);
|
|
312
318
|
if (!isCoinbase && (!options.inputUtxos || Object.keys(options.inputUtxos).length === 0)) {
|
|
@@ -328,12 +334,27 @@ export async function decodeTxRaw(txraw, options = {}) {
|
|
|
328
334
|
inferNftTransactionType(nftMovements) ??
|
|
329
335
|
inferFtTransactionType(inputs, outputs, ftMovements) ??
|
|
330
336
|
inferTransactionType(protocolAnalyses, protocols, ftMovements);
|
|
337
|
+
const ftConformance = validateFtConservation(transactionType, inputs, ftMovements);
|
|
331
338
|
const chainStats = calculateChainStats(inputs, outputs, size);
|
|
332
|
-
const protocolDetails = buildProtocolDetails(
|
|
339
|
+
const protocolDetails = buildProtocolDetails(ftConformance.movements, nftMovements, piggyBankMovements, poolNftMovements, orderBookOrders);
|
|
333
340
|
const unsupported = buildUnsupportedProtocols(inputs, outputs, protocols, protocolDetails);
|
|
334
|
-
const semantic = buildSemantic(transactionType, inputs, outputs,
|
|
341
|
+
const semantic = buildSemantic(transactionType, inputs, outputs, ftConformance.movements, nftMovements, orderBookOrders, poolNftMovements) ??
|
|
335
342
|
buildFallbackSemantic(transactionType, unsupported);
|
|
336
|
-
const assetFlows = buildAssetFlows(transactionType, inputs, outputs,
|
|
343
|
+
const assetFlows = buildAssetFlows(transactionType, inputs, outputs, ftConformance.movements, nftMovements, piggyBankMovements, poolNftMovements, orderBookOrders, semantic, unsupported);
|
|
344
|
+
const unspendableAssetFlows = buildUnspendableFtAssetFlows(ftConformance.unspendableMovements);
|
|
345
|
+
const classification = buildTransactionClassification({
|
|
346
|
+
transactionType,
|
|
347
|
+
semantic,
|
|
348
|
+
protocolDetails,
|
|
349
|
+
unsupported,
|
|
350
|
+
protocolMarkers: protocols,
|
|
351
|
+
inputs,
|
|
352
|
+
outputs,
|
|
353
|
+
assetFlows,
|
|
354
|
+
feeSatoshis: chainStats.fee,
|
|
355
|
+
display: options.display,
|
|
356
|
+
conformanceIssues: ftConformance.issues,
|
|
357
|
+
});
|
|
337
358
|
return {
|
|
338
359
|
txid: txObject.hash,
|
|
339
360
|
version: txObject.version,
|
|
@@ -345,6 +366,8 @@ export async function decodeTxRaw(txraw, options = {}) {
|
|
|
345
366
|
...(chainStats.fee === undefined ? {} : { fee: { satoshis: chainStats.fee, satoshisPerKB: chainStats.feeRate ?? 0 } }),
|
|
346
367
|
},
|
|
347
368
|
assetFlows,
|
|
369
|
+
...(unspendableAssetFlows.length ? { unspendableAssetFlows } : {}),
|
|
370
|
+
classification,
|
|
348
371
|
};
|
|
349
372
|
}
|
|
350
373
|
//# sourceMappingURL=decode-tx-raw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decode-tx-raw.js","sourceRoot":"","sources":["../src/decode-tx-raw.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"decode-tx-raw.js","sourceRoot":"","sources":["../src/decode-tx-raw.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AACjG,OAAO,EAAE,6BAA6B,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAClF,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC7G,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACvH,OAAO,EAAE,sBAAsB,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AACxG,OAAO,EAAE,yBAAyB,EAAE,6BAA6B,EAAE,MAAM,iCAAiC,CAAC;AAC3G,OAAO,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AACrG,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAoD5C,0GAA0G;AAC1G,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;AACjD,CAAC;AAED,4FAA4F;AAC5F,SAAS,iBAAiB,CAAC,GAAW;IACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,UAAU,CAAC,MAAc,EAAE,MAAc;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;IAC9C,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,CAAC;AACnF,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAe,EACf,QAAgB,EAChB,MAAiG,EACjG,OAAoD;IAEpD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAChC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IACjC,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IAClC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAExC,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAChC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjF,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAClF,CAAC;IAEF,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC;QACtD,MAAM;QACN,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACrD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnD,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;KACpD,CAAC,CAAC,CAAC;IAEJ,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAa;IAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAC3C,MAAM,IAAI,CAAC,CAAC;IAEZ,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC3B,MAAM,SAAS,GAA8F,EAAE,CAAC;IAChH,MAAM,MAAM,GAAgC,EAAE,CAAC;IAE/C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,EAAE,CAAC;QACb,MAAM,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAChD,MAAM,IAAI,CAAC,CAAC;QACZ,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC;QAC7B,MAAM,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,CAAC;QAEZ,SAAS,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC;QACnE,MAAM,CAAC,IAAI,CAAC;YACV,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC;YAC1D,WAAW;YACX,cAAc;YACd,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/C,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAC5B,MAAM,UAAU,GAAgD,EAAE,CAAC;IACnE,MAAM,OAAO,GAAiC,EAAE,CAAC;IAEjD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,CAAC,KAAK,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;QACxD,MAAM,IAAI,CAAC,CAAC;QACZ,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QACpE,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC;QAE7B,UAAU,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC;YACX,QAAQ;YACR,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;SAC/B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC9C,OAAO;QACL,IAAI,EAAE,gBAAgB,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC;QACjE,OAAO;QACP,SAAS;QACT,MAAM;QACN,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAgC;IACvD,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,WAAW,KAAK,UAAU,CAAC;AAC1E,CAAC;AAED,SAAS,qBAAqB,CAAC,QAA8B;IAC3D,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAE,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAa;IAC3C,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,WAAW,CAAC,QAAQ,EAA0B,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,8GAA8G;AAC9G,SAAS,oBAAoB,CAC3B,gBAAoC,EACpC,eAAyB,EACzB,WAAoC;IAEpC,MAAM,eAAe,GAAG,gBAAgB,CAAC,IAAI,CAC3C,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,CACvF,CAAC;IACF,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,eAAe,CAAC,eAAe,CAAC;IACzC,CAAC;IAED,IAAI,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC/G,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;QACzC,OAAO,UAAU,CAAC;IACpB,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,wGAAwG;AACxG,SAAS,oBAAoB,CAC3B,WAAoC,EACpC,YAA2B,EAC3B,kBAAuC,EACvC,gBAAmC,EACnC,eAAiC;IAEjC,MAAM,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC7E,MAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACpF,MAAM,OAAO,GAAoB;QAC/B,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,IAAa,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,GAAG,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,YAAqB,EAAE,SAAS,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtH,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,KAAc,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,GAAG,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAoB,EAAE,OAAO,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChH,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,SAAkB,EAAE,OAAO,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxG,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,WAAoB,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC1G,CAAC;IAEF,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC;AAED,SAAS,uBAAuB,CAAC,OAAoC;IACnE,OAAO,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;AAClE,CAAC;AAED,wHAAwH;AACxH,SAAS,mCAAmC,CAAC,OAAwB;IACnE,MAAM,EACJ,MAAM,EACN,cAAc,EACd,gBAAgB,EAChB,GAAG,YAAY,EAChB,GAAG,OAAO,CAAC;IAEZ,OAAO;QACL,GAAG,YAAY;QACf,MAAM,EAAE,6BAA6B,CAAC,MAAM,CAAC;QAC7C,GAAG,CAAC,cAAc;YAChB,CAAC,CAAC;gBACA,cAAc,EAAE;oBACd,GAAG,cAAc;oBACjB,MAAM,EAAE,6BAA6B,CAAC,cAAc,CAAC,MAAM,CAAC;iBAC7D;aACF;YACD,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,gBAAgB;YAClB,CAAC,CAAC;gBACA,gBAAgB,EAAE;oBAChB,GAAG,gBAAgB;oBACnB,MAAM,EAAE,6BAA6B,CAAC,gBAAgB,CAAC,MAAM,CAAC;iBAC/D;aACF;YACD,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,6BAA6B,CAAC,MAAsB;IAC3D,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,EAAE,gBAAgB,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QAC/E,GAAG,KAAK;QACR,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,mCAAmC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS;KAC5E,CAAC,CAAC,CAAC;AACN,CAAC;AAED,sHAAsH;AACtH,SAAS,8BAA8B,CAAC,OAAwB;IAC9D,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9D,GAAG,MAAM;QACT,MAAM,EAAE,6BAA6B,CAAC,MAAM,CAAC,MAAM,CAAC;KACrD,CAAC,CAAC,CAAC;AACN,CAAC;AAED,6FAA6F;AAC7F,SAAS,yBAAyB,CAChC,MAAsB,EACtB,OAAwB,EACxB,eAAyB,EACzB,OAAoC;IAEpC,IAAI,uBAAuB,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAA0B,EAAE,CAAC;IAC9C,MAAM,iBAAiB,GAAG,eAAe,CAAC,QAAQ,CAAC,eAAe,CAAC;QACjE,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEnE,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QACxH,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;YACjD,SAAS;QACX,CAAC;QAED,WAAW,CAAC,IAAI,CAAC;YACf,UAAU,EAAE,KAAK,CAAC,KAAK;YACvB,MAAM;YACN,MAAM,EAAE,4FAA4F;SACrG,CAAC,CAAC;IACL,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5I,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,IAAI,MAAM,CAAC,UAAU,KAAK,UAAU,IAAI,MAAM,EAAE,CAAC;YAC/C,WAAW,CAAC,IAAI,CAAC;gBACf,WAAW,EAAE,MAAM,CAAC,KAAK;gBACzB,MAAM;gBACN,MAAM,EAAE,qFAAqF;aAC9F,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,iHAAiH;AACjH,SAAS,YAAY,CACnB,QAA8B,EAC9B,OAA2B;IAE3B,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC1C,MAAM,eAAe,GAAG,kBAAkB,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QAElF,OAAO;YACL,KAAK;YACL,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,IAAI,EAAE,KAAK,CAAC,WAAW;YACvB,QAAQ,EAAE,KAAK,CAAC,cAAc;YAC9B,eAAe;YACf,OAAO;SACR,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,oGAAoG;AACpG,SAAS,aAAa,CACpB,QAA8B;IAE9B,MAAM,aAAa,GAAoB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;QAC5E,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjD,OAAO;YACL,KAAK;YACL,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,MAAM;YACN,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,EAAE,OAAO;YAC/C,UAAU,EAAE,eAAe,CAAC,MAAM,CAAC;SACpC,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,aAAa;QACb,OAAO,EAAE,6BAA6B,CAAC,aAAa,CAAC;KACtD,CAAC;AACJ,CAAC;AAED,sGAAsG;AACtG,SAAS,oBAAoB,CAC3B,QAA8B,EAC9B,MAAsB,EACtB,aAA8B,EAC9B,OAAwB;IAExB,MAAM,YAAY,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IAC/E,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/D,MAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAClD,MAAM,WAAW,GAAG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvE,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;IAC/F,MAAM,eAAe,GAAG,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE9F,IAAI,kBAAkB,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClE,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;IACD,IAAI,gBAAgB,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9D,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC5B,CAAC;IACD,IAAI,eAAe,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9B,CAAC;IAED,OAAO;QACL,gBAAgB;QAChB,SAAS;QACT,WAAW;QACX,YAAY;QACZ,kBAAkB;QAClB,gBAAgB;QAChB,eAAe;KAChB,CAAC;AACJ,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAa,EACb,UAA8B,EAAE;IAEhC,MAAM,eAAe,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IAE9C,IAAI,CAAC,eAAe,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACvC,CAAC;IACD,IACE,OAAO,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS;QACtC,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS;QACrC,OAAO,CAAC,OAAO,CAAC,OAAO,KAAK,KAAK,EACjC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,QAAQ,GAAG,sBAAsB,CAAC,eAAe,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;QACzF,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,IAAI,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5G,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,6FAA6F,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC;IACrI,CAAC;IACD,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAC3D,MAAM,EACJ,gBAAgB,EAChB,SAAS,EACT,WAAW,EACX,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,GAChB,GAAG,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACnE,MAAM,eAAe,GAAG,UAAU;QAChC,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,6BAA6B,CAAC,kBAAkB,CAAC;YACjD,2BAA2B,CAAC,gBAAgB,CAAC;YAC7C,6BAA6B,CAAC,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC;YACpE,uBAAuB,CAAC,YAAY,CAAC;YACrC,sBAAsB,CAAC,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC;YACpD,oBAAoB,CAAC,gBAAgB,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,sBAAsB,CAAC,eAAe,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACnF,MAAM,UAAU,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC9D,MAAM,eAAe,GAAG,oBAAoB,CAC1C,aAAa,CAAC,SAAS,EACvB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,CAChB,CAAC;IACF,MAAM,WAAW,GAAG,yBAAyB,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IAC3F,MAAM,QAAQ,GAAG,aAAa,CAAC,eAAe,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,SAAS,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,CAAC;QACxI,qBAAqB,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,eAAe,CAChC,eAAe,EACf,MAAM,EACN,OAAO,EACP,aAAa,CAAC,SAAS,EACvB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,QAAQ,EACR,WAAW,CACZ,CAAC;IACF,MAAM,qBAAqB,GAAG,4BAA4B,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC;IAC/F,MAAM,cAAc,GAAG,8BAA8B,CAAC;QACpD,eAAe;QACf,QAAQ;QACR,eAAe;QACf,WAAW;QACX,eAAe,EAAE,SAAS;QAC1B,MAAM;QACN,OAAO;QACP,UAAU;QACV,WAAW,EAAE,UAAU,CAAC,GAAG;QAC3B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,iBAAiB,EAAE,aAAa,CAAC,MAAM;KACxC,CAAC,CAAC;IACH,OAAO;QACL,IAAI,EAAE,QAAQ,CAAC,IAAI;QACnB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,QAAQ,EAAE,QAAQ,CAAC,SAAS,IAAI,CAAC;QACjC,IAAI;QACJ,KAAK,EAAE;YACL,MAAM,EAAE,oBAAoB,CAAC,6BAA6B,CAAC,MAAM,CAAC,CAAC;YACnE,OAAO,EAAE,qBAAqB,CAAC,8BAA8B,CAAC,OAAO,CAAC,CAAC;YACvE,GAAG,CAAC,UAAU,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,UAAU,CAAC,GAAG,EAAE,aAAa,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,EAAE,EAAE,CAAC;SACvH;QACD,UAAU;QACV,GAAG,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,qBAAqB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,cAAc;KACf,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
export { decodeTxRaw } from './decode-tx-raw.js';
|
|
2
|
-
export
|
|
2
|
+
export { renderTransactionDescription } from './render-transaction-description.js';
|
|
3
|
+
export type { DecodeInputUtxo, DecodeDisplayOptions, DecodeTxRawOptions, DecodeTxRawResult, ChainLayer, CollectionTapeData, CompactPublicAsm, CompactPublicHex, DecodedInput, DecodedOutput, AssetFlow, AssetFlowContext, AssetFlowDirection, AssetFlowEndpoint, AssetFlowOutpoint, AssetFlowPurpose, FungibleTokenMovement, InputUTXODetail, NftMovement, NftTapeData, OrderBookData, OrderBookOrder, PiggyBankData, PiggyBankMovement, PoolNftMovement, PoolNftTapeData, PublicScriptHex, PublicScriptDetail, PublicCollectionTapeData, PublicNftTapeData, ProtocolDetails, ScriptKind, ScriptType, ScriptDetail, ScriptOpReturnData, TransactionAmount, TransactionAction, TransactionActionMap, TransactionAsset, TransactionClassification, TransactionClassificationBase, TransactionConformance, TransactionProtocol, TbcDisplayUnit, UnspendableAssetFlow, UnsupportedProtocol, } from './types.js';
|
|
3
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EACV,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC;AACnF,YAAY,EACV,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,WAAW,EACX,WAAW,EACX,aAAa,EACb,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,UAAU,EACV,YAAY,EACZ,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,yBAAyB,EACzB,6BAA6B,EAC7B,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,4BAA4B,EAAE,MAAM,qCAAqC,CAAC"}
|
|
@@ -4,4 +4,16 @@ import type { ProtocolDecoder } from '../types.js';
|
|
|
4
4
|
export declare const ftProtocolDecoder: ProtocolDecoder;
|
|
5
5
|
export declare function collectFtMovements(outputs: DecodedOutput[], inputs?: DecodedInput[], txid?: string): FungibleTokenMovement[];
|
|
6
6
|
export declare function inferFtTransactionType(inputs: DecodedInput[], outputs: DecodedOutput[], movements: FungibleTokenMovement[]): string | undefined;
|
|
7
|
+
export interface FtConformanceIssue {
|
|
8
|
+
protocol: 'ft';
|
|
9
|
+
conformance: 'nonstandard' | 'indeterminate';
|
|
10
|
+
code: 'FT_OUTPUT_AMOUNT_EXCEEDS_VERIFIED_INPUT' | 'INSUFFICIENT_FT_AMOUNT_EVIDENCE';
|
|
11
|
+
description: string;
|
|
12
|
+
}
|
|
13
|
+
export interface FtConformanceResult {
|
|
14
|
+
movements: FungibleTokenMovement[];
|
|
15
|
+
unspendableMovements: FungibleTokenMovement[];
|
|
16
|
+
issues: FtConformanceIssue[];
|
|
17
|
+
}
|
|
18
|
+
export declare function validateFtConservation(transactionType: string, inputs: DecodedInput[], movements: FungibleTokenMovement[]): FtConformanceResult;
|
|
7
19
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/protocols/ft/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,aAAa,CAAC;AAMrE,eAAO,MAAM,iBAAiB,EAAE,eAoB/B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/protocols/ft/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAc,KAAK,YAAY,EAAE,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACnF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AACrE,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,aAAa,CAAC;AAMrE,eAAO,MAAM,iBAAiB,EAAE,eAoB/B,CAAC;AA8UF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,aAAa,EAAE,EAAE,MAAM,GAAE,YAAY,EAAO,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,qBAAqB,EAAE,CAqHhI;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,YAAY,EAAE,EACtB,OAAO,EAAE,aAAa,EAAE,EACxB,SAAS,EAAE,qBAAqB,EAAE,sBAwDnC;AAqBD,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,IAAI,CAAC;IACf,WAAW,EAAE,aAAa,GAAG,eAAe,CAAC;IAC7C,IAAI,EAAE,yCAAyC,GAAG,iCAAiC,CAAC;IACpF,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,qBAAqB,EAAE,CAAC;IACnC,oBAAoB,EAAE,qBAAqB,EAAE,CAAC;IAC9C,MAAM,EAAE,kBAAkB,EAAE,CAAC;CAC9B;AAcD,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,YAAY,EAAE,EACtB,SAAS,EAAE,qBAAqB,EAAE,GACjC,mBAAmB,CA8FrB"}
|
|
@@ -145,12 +145,6 @@ function coinSupplySnapshot(nftTape) {
|
|
|
145
145
|
coinDecimal: numberValue(nftTape?.coinDecimal),
|
|
146
146
|
};
|
|
147
147
|
}
|
|
148
|
-
function inputCoinSupplySnapshots(inputs) {
|
|
149
|
-
return inputs.flatMap((input) => [
|
|
150
|
-
coinSupplySnapshot(input.prevout?.script.data?.nftTape),
|
|
151
|
-
coinSupplySnapshot(input.prevout?.associatedTape?.script.data?.nftTape),
|
|
152
|
-
].filter((snapshot) => snapshot !== undefined));
|
|
153
|
-
}
|
|
154
148
|
function outputCoinSupplySnapshots(outputs) {
|
|
155
149
|
return outputs
|
|
156
150
|
.map((output) => coinSupplySnapshot(output.script.data?.nftTape))
|
|
@@ -199,21 +193,29 @@ function hasMergedAmountSlots(movement) {
|
|
|
199
193
|
}
|
|
200
194
|
}).length > 1;
|
|
201
195
|
}
|
|
202
|
-
function
|
|
196
|
+
function stablecoinMintSourceInput(inputs, outputs, movement) {
|
|
203
197
|
if (!movement.isStableCoin) {
|
|
204
|
-
return
|
|
198
|
+
return undefined;
|
|
205
199
|
}
|
|
206
200
|
let rawAmount;
|
|
207
201
|
try {
|
|
208
202
|
rawAmount = BigInt(movement.rawAmount);
|
|
209
203
|
}
|
|
210
204
|
catch {
|
|
211
|
-
return
|
|
205
|
+
return undefined;
|
|
212
206
|
}
|
|
213
|
-
|
|
214
|
-
|
|
207
|
+
const currentSnapshots = outputCoinSupplySnapshots(outputs);
|
|
208
|
+
return inputs.find((input) => [
|
|
209
|
+
coinSupplySnapshot(input.prevout?.script.data?.nftTape),
|
|
210
|
+
coinSupplySnapshot(input.prevout?.associatedTape?.script.data?.nftTape),
|
|
211
|
+
].some((previous) => previous !== undefined &&
|
|
212
|
+
coinDecimalMatches(previous, movement) &&
|
|
213
|
+
currentSnapshots.some((current) => current.identity === previous.identity &&
|
|
215
214
|
coinDecimalMatches(current, movement) &&
|
|
216
|
-
current.supply - previous.supply === rawAmount));
|
|
215
|
+
current.supply - previous.supply === rawAmount)));
|
|
216
|
+
}
|
|
217
|
+
function isStablecoinMintMovement(inputs, outputs, movement) {
|
|
218
|
+
return stablecoinMintSourceInput(inputs, outputs, movement) !== undefined;
|
|
217
219
|
}
|
|
218
220
|
function isOrderBookContext(inputs, outputs) {
|
|
219
221
|
return outputs.some((output) => Boolean(output.script.data?.orderBook)) ||
|
|
@@ -321,6 +323,12 @@ export function collectFtMovements(outputs, inputs = [], txid) {
|
|
|
321
323
|
if (!amountSlotsSumMatchesRawAmount(movement)) {
|
|
322
324
|
continue;
|
|
323
325
|
}
|
|
326
|
+
if (!movement.contractId && movement.isStableCoin) {
|
|
327
|
+
const certificateContractId = stablecoinMintSourceInput(inputs, outputs, movement)?.prevout?.contractId;
|
|
328
|
+
if (certificateContractId) {
|
|
329
|
+
movement.contractId = certificateContractId;
|
|
330
|
+
}
|
|
331
|
+
}
|
|
324
332
|
outputMovements.push({
|
|
325
333
|
codeIdentity,
|
|
326
334
|
movement,
|
|
@@ -379,16 +387,131 @@ export function inferFtTransactionType(inputs, outputs, movements) {
|
|
|
379
387
|
if (isMint) {
|
|
380
388
|
return `${prefix} mint`;
|
|
381
389
|
}
|
|
390
|
+
// A verified token merge can carry ordinary TBC outputs, but the merged
|
|
391
|
+
// amount slots remain the primary action.
|
|
392
|
+
if (movements.length === 1 && hasMergedSlots) {
|
|
393
|
+
return `${prefix} merge`;
|
|
394
|
+
}
|
|
382
395
|
const firstReceiver = firstMovement?.receiver;
|
|
383
|
-
const
|
|
384
|
-
|
|
385
|
-
|
|
396
|
+
const nativeInputAddresses = new Set(inputs
|
|
397
|
+
.filter((input) => input.prevout?.script.type === ScriptType.P2PKH ||
|
|
398
|
+
input.prevout?.script.type === ScriptType.MULTISIG)
|
|
399
|
+
.flatMap((input) => [input.prevout?.address, input.prevout?.script.address])
|
|
400
|
+
.filter((address) => Boolean(address)));
|
|
401
|
+
const nativeOutputs = outputs.filter((output) => output.satoshis > 500 && Boolean(output.address) && output.script.type === ScriptType.P2PKH);
|
|
402
|
+
const hasNativeTransfer = nativeOutputs.some((output) => output.address === firstReceiver ||
|
|
403
|
+
(nativeInputAddresses.size > 0 && !nativeInputAddresses.has(output.address)));
|
|
404
|
+
const hasNativeChangeCandidate = nativeOutputs.some((output) => nativeInputAddresses.has(output.address) ||
|
|
405
|
+
Boolean(firstReceiver && output.address !== firstReceiver));
|
|
386
406
|
if (hasNativeTransfer && (movements.length > 1 || hasNativeChangeCandidate || inputs.length <= 1)) {
|
|
387
407
|
return `${prefix} transfer with TBC`;
|
|
388
408
|
}
|
|
389
|
-
if (movements.length === 1 && hasMergedSlots) {
|
|
390
|
-
return `${prefix} merge`;
|
|
391
|
-
}
|
|
392
409
|
return `${prefix} transfer`;
|
|
393
410
|
}
|
|
411
|
+
const CONSERVING_FT_TRANSACTION_TYPES = new Set([
|
|
412
|
+
'FT transfer',
|
|
413
|
+
'FT transfer with TBC',
|
|
414
|
+
'FT merge',
|
|
415
|
+
]);
|
|
416
|
+
function verifiedFtInputRawAmount(input, contractId) {
|
|
417
|
+
if (!isVerifiedFtCodePrevout(input) || input.prevout?.contractId !== contractId) {
|
|
418
|
+
return undefined;
|
|
419
|
+
}
|
|
420
|
+
const tape = input.prevout.associatedTape?.script.data?.ftTape;
|
|
421
|
+
if (!tape || tape.isStableCoin) {
|
|
422
|
+
return undefined;
|
|
423
|
+
}
|
|
424
|
+
return parseNonNegativeBigInt(tape.rawAmount);
|
|
425
|
+
}
|
|
426
|
+
function ftActionSubject(transactionType) {
|
|
427
|
+
if (transactionType === 'FT merge') {
|
|
428
|
+
return 'an FT merge';
|
|
429
|
+
}
|
|
430
|
+
if (transactionType === 'FT transfer with TBC') {
|
|
431
|
+
return 'a combined FT and TBC transfer';
|
|
432
|
+
}
|
|
433
|
+
return 'an FT transfer';
|
|
434
|
+
}
|
|
435
|
+
export function validateFtConservation(transactionType, inputs, movements) {
|
|
436
|
+
if (!CONSERVING_FT_TRANSACTION_TYPES.has(transactionType)) {
|
|
437
|
+
return { movements, unspendableMovements: [], issues: [] };
|
|
438
|
+
}
|
|
439
|
+
const movementsByContract = new Map();
|
|
440
|
+
let hasIncompleteEvidence = false;
|
|
441
|
+
for (const movement of movements) {
|
|
442
|
+
if (movement.isStableCoin || movement.isFtLp) {
|
|
443
|
+
continue;
|
|
444
|
+
}
|
|
445
|
+
if (!movement.contractId) {
|
|
446
|
+
hasIncompleteEvidence = true;
|
|
447
|
+
continue;
|
|
448
|
+
}
|
|
449
|
+
const grouped = movementsByContract.get(movement.contractId) ?? [];
|
|
450
|
+
grouped.push(movement);
|
|
451
|
+
movementsByContract.set(movement.contractId, grouped);
|
|
452
|
+
}
|
|
453
|
+
const ftInputCandidates = inputs.filter(isFtCodePrevoutCandidate);
|
|
454
|
+
const inputsWithUnknownContract = ftInputCandidates.filter((input) => !input.prevout?.contractId);
|
|
455
|
+
const rejectedOutputIndexes = new Set();
|
|
456
|
+
let hasConservationViolation = false;
|
|
457
|
+
for (const [contractId, contractMovements] of movementsByContract) {
|
|
458
|
+
const contractInputs = ftInputCandidates.filter((input) => input.prevout?.contractId === contractId);
|
|
459
|
+
const hasPossiblyMatchingUnknownInput = inputsWithUnknownContract.some((input) => {
|
|
460
|
+
const tape = input.prevout?.associatedTape?.script.data?.ftTape;
|
|
461
|
+
if (!tape || tape.isStableCoin) {
|
|
462
|
+
return true;
|
|
463
|
+
}
|
|
464
|
+
return contractMovements.some((movement) => movement.symbol === tape.symbol &&
|
|
465
|
+
movement.name === tape.name &&
|
|
466
|
+
movement.decimal === tape.decimal);
|
|
467
|
+
});
|
|
468
|
+
if (!contractInputs.length || hasPossiblyMatchingUnknownInput) {
|
|
469
|
+
hasIncompleteEvidence = true;
|
|
470
|
+
continue;
|
|
471
|
+
}
|
|
472
|
+
const parsedInputAmounts = contractInputs.map((input) => verifiedFtInputRawAmount(input, contractId));
|
|
473
|
+
if (parsedInputAmounts.some((amount) => amount === undefined)) {
|
|
474
|
+
hasIncompleteEvidence = true;
|
|
475
|
+
continue;
|
|
476
|
+
}
|
|
477
|
+
const inputAmounts = parsedInputAmounts.filter((amount) => amount !== undefined);
|
|
478
|
+
const inputRaw = inputAmounts.reduce((sum, amount) => sum + amount, 0n);
|
|
479
|
+
const outputAmounts = contractMovements
|
|
480
|
+
.map((movement) => parseNonNegativeBigInt(movement.rawAmount));
|
|
481
|
+
if (outputAmounts.some((amount) => amount === undefined)) {
|
|
482
|
+
hasIncompleteEvidence = true;
|
|
483
|
+
continue;
|
|
484
|
+
}
|
|
485
|
+
const declaredOutputRaw = outputAmounts
|
|
486
|
+
.reduce((sum, amount) => sum + (amount ?? 0n), 0n);
|
|
487
|
+
if (declaredOutputRaw <= inputRaw) {
|
|
488
|
+
continue;
|
|
489
|
+
}
|
|
490
|
+
hasConservationViolation = true;
|
|
491
|
+
contractMovements.forEach((movement) => rejectedOutputIndexes.add(movement.outputIndex));
|
|
492
|
+
}
|
|
493
|
+
const subject = ftActionSubject(transactionType);
|
|
494
|
+
const issues = [];
|
|
495
|
+
if (hasConservationViolation) {
|
|
496
|
+
issues.push({
|
|
497
|
+
protocol: 'ft',
|
|
498
|
+
conformance: 'nonstandard',
|
|
499
|
+
code: 'FT_OUTPUT_AMOUNT_EXCEEDS_VERIFIED_INPUT',
|
|
500
|
+
description: `Looks like ${subject}, but the declared token amount exceeds the verified available balance.`,
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
if (hasIncompleteEvidence) {
|
|
504
|
+
issues.push({
|
|
505
|
+
protocol: 'ft',
|
|
506
|
+
conformance: 'indeterminate',
|
|
507
|
+
code: 'INSUFFICIENT_FT_AMOUNT_EVIDENCE',
|
|
508
|
+
description: `Likely ${subject}, but the FT input amounts needed to verify token conservation are incomplete.`,
|
|
509
|
+
});
|
|
510
|
+
}
|
|
511
|
+
return {
|
|
512
|
+
movements: movements.filter((movement) => !rejectedOutputIndexes.has(movement.outputIndex)),
|
|
513
|
+
unspendableMovements: movements.filter((movement) => rejectedOutputIndexes.has(movement.outputIndex)),
|
|
514
|
+
issues,
|
|
515
|
+
};
|
|
516
|
+
}
|
|
394
517
|
//# sourceMappingURL=index.js.map
|