@1sat/actions 0.0.197 → 0.0.199

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 (143) hide show
  1. package/dist/apply/applyIntent.d.ts +7 -15
  2. package/dist/apply/applyIntent.d.ts.map +1 -1
  3. package/dist/apply/applyIntent.js +76 -25
  4. package/dist/apply/applyIntent.js.map +1 -1
  5. package/dist/apply/index.d.ts +1 -1
  6. package/dist/apply/index.d.ts.map +1 -1
  7. package/dist/apply/index.js +1 -1
  8. package/dist/apply/index.js.map +1 -1
  9. package/dist/apply/inscribeSigma.d.ts +1 -1
  10. package/dist/apply/inscribeSigma.d.ts.map +1 -1
  11. package/dist/apply/inscribeSigma.js +20 -13
  12. package/dist/apply/inscribeSigma.js.map +1 -1
  13. package/dist/apply/prepare.d.ts +12 -7
  14. package/dist/apply/prepare.d.ts.map +1 -1
  15. package/dist/apply/prepare.js +3 -21
  16. package/dist/apply/prepare.js.map +1 -1
  17. package/dist/apply/registry.d.ts +3 -2
  18. package/dist/apply/registry.d.ts.map +1 -1
  19. package/dist/apply/registry.js +7 -26
  20. package/dist/apply/registry.js.map +1 -1
  21. package/dist/apply/stampScriptTags.d.ts.map +1 -1
  22. package/dist/apply/stampScriptTags.js +8 -1
  23. package/dist/apply/stampScriptTags.js.map +1 -1
  24. package/dist/collections/index.d.ts.map +1 -1
  25. package/dist/collections/index.js +77 -51
  26. package/dist/collections/index.js.map +1 -1
  27. package/dist/constants.d.ts +1 -1
  28. package/dist/constants.d.ts.map +1 -1
  29. package/dist/constants.js +1 -1
  30. package/dist/constants.js.map +1 -1
  31. package/dist/cosign/finalize.js +1 -2
  32. package/dist/cosign/finalize.js.map +1 -1
  33. package/dist/index.d.ts +11 -2
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +10 -2
  36. package/dist/index.js.map +1 -1
  37. package/dist/inscriptions/index.d.ts.map +1 -1
  38. package/dist/inscriptions/index.js +34 -39
  39. package/dist/inscriptions/index.js.map +1 -1
  40. package/dist/locks/index.d.ts +1 -1
  41. package/dist/locks/index.d.ts.map +1 -1
  42. package/dist/locks/index.js +28 -13
  43. package/dist/locks/index.js.map +1 -1
  44. package/dist/opns/index.d.ts.map +1 -1
  45. package/dist/opns/index.js +60 -50
  46. package/dist/opns/index.js.map +1 -1
  47. package/dist/ordinals/index.d.ts +1 -2
  48. package/dist/ordinals/index.d.ts.map +1 -1
  49. package/dist/ordinals/index.js +84 -93
  50. package/dist/ordinals/index.js.map +1 -1
  51. package/dist/pipeline/index.d.ts +4 -0
  52. package/dist/pipeline/index.d.ts.map +1 -0
  53. package/dist/pipeline/index.js +4 -0
  54. package/dist/pipeline/index.js.map +1 -0
  55. package/dist/pipeline/runPipeline.d.ts +30 -0
  56. package/dist/pipeline/runPipeline.d.ts.map +1 -0
  57. package/dist/pipeline/runPipeline.js +82 -0
  58. package/dist/pipeline/runPipeline.js.map +1 -0
  59. package/dist/pipeline/spendTargets.d.ts +52 -0
  60. package/dist/pipeline/spendTargets.d.ts.map +1 -0
  61. package/dist/pipeline/spendTargets.js +87 -0
  62. package/dist/pipeline/spendTargets.js.map +1 -0
  63. package/dist/pipeline/unlockInput.d.ts +49 -0
  64. package/dist/pipeline/unlockInput.d.ts.map +1 -0
  65. package/dist/pipeline/unlockInput.js +316 -0
  66. package/dist/pipeline/unlockInput.js.map +1 -0
  67. package/dist/signing/index.d.ts +1 -1
  68. package/dist/signing/index.d.ts.map +1 -1
  69. package/dist/signing/index.js +1 -1
  70. package/dist/signing/index.js.map +1 -1
  71. package/dist/signing/sigma.d.ts +13 -17
  72. package/dist/signing/sigma.d.ts.map +1 -1
  73. package/dist/signing/sigma.js +37 -40
  74. package/dist/signing/sigma.js.map +1 -1
  75. package/dist/sweep/index.d.ts.map +1 -1
  76. package/dist/sweep/index.js +20 -17
  77. package/dist/sweep/index.js.map +1 -1
  78. package/dist/sync/syncCosignDeliveries.d.ts.map +1 -1
  79. package/dist/sync/syncCosignDeliveries.js +30 -20
  80. package/dist/sync/syncCosignDeliveries.js.map +1 -1
  81. package/dist/tokens/index.d.ts +8 -0
  82. package/dist/tokens/index.d.ts.map +1 -1
  83. package/dist/tokens/index.js +246 -174
  84. package/dist/tokens/index.js.map +1 -1
  85. package/dist/types.d.ts +16 -5
  86. package/dist/types.d.ts.map +1 -1
  87. package/dist/types.js.map +1 -1
  88. package/dist/utils/bsv21Remittance.d.ts +63 -0
  89. package/dist/utils/bsv21Remittance.d.ts.map +1 -0
  90. package/dist/utils/bsv21Remittance.js +146 -0
  91. package/dist/utils/bsv21Remittance.js.map +1 -0
  92. package/dist/utils/bsv21Remittance.test.d.ts +2 -0
  93. package/dist/utils/bsv21Remittance.test.d.ts.map +1 -0
  94. package/dist/utils/bsv21Remittance.test.js +115 -0
  95. package/dist/utils/bsv21Remittance.test.js.map +1 -0
  96. package/dist/utils/createTrackedAction.d.ts +42 -38
  97. package/dist/utils/createTrackedAction.d.ts.map +1 -1
  98. package/dist/utils/createTrackedAction.js +147 -79
  99. package/dist/utils/createTrackedAction.js.map +1 -1
  100. package/dist/utils/hasOneSatModule.d.ts +14 -0
  101. package/dist/utils/hasOneSatModule.d.ts.map +1 -0
  102. package/dist/utils/hasOneSatModule.js +31 -0
  103. package/dist/utils/hasOneSatModule.js.map +1 -0
  104. package/dist/utils/internalizeBeef.d.ts.map +1 -1
  105. package/dist/utils/internalizeBeef.js +37 -12
  106. package/dist/utils/internalizeBeef.js.map +1 -1
  107. package/dist/utils/loadBasketOutput.d.ts +1 -1
  108. package/dist/utils/loadBasketOutput.d.ts.map +1 -1
  109. package/dist/utils/loadBasketOutput.js +11 -3
  110. package/dist/utils/loadBasketOutput.js.map +1 -1
  111. package/dist/utils/moveBasket.d.ts +37 -0
  112. package/dist/utils/moveBasket.d.ts.map +1 -0
  113. package/dist/utils/moveBasket.js +115 -0
  114. package/dist/utils/moveBasket.js.map +1 -0
  115. package/dist/utils/ordinalRemittance.d.ts +33 -0
  116. package/dist/utils/ordinalRemittance.d.ts.map +1 -0
  117. package/dist/utils/ordinalRemittance.js +70 -0
  118. package/dist/utils/ordinalRemittance.js.map +1 -0
  119. package/dist/utils/ordinalSeedTags.d.ts +5 -3
  120. package/dist/utils/ordinalSeedTags.d.ts.map +1 -1
  121. package/dist/utils/ordinalSeedTags.js +34 -7
  122. package/dist/utils/ordinalSeedTags.js.map +1 -1
  123. package/dist/utils/resolveDestination.d.ts +3 -6
  124. package/dist/utils/resolveDestination.d.ts.map +1 -1
  125. package/dist/utils/resolveDestination.js +5 -1
  126. package/dist/utils/resolveDestination.js.map +1 -1
  127. package/dist/utils/signOrdinalInput.d.ts +3 -2
  128. package/dist/utils/signOrdinalInput.d.ts.map +1 -1
  129. package/dist/utils/signOrdinalInput.js +18 -13
  130. package/dist/utils/signOrdinalInput.js.map +1 -1
  131. package/dist/utils/stampBsv21OutputCi.d.ts +16 -0
  132. package/dist/utils/stampBsv21OutputCi.d.ts.map +1 -0
  133. package/dist/utils/stampBsv21OutputCi.js +90 -0
  134. package/dist/utils/stampBsv21OutputCi.js.map +1 -0
  135. package/dist/utils/stampOrdinalOutputCi.d.ts +15 -0
  136. package/dist/utils/stampOrdinalOutputCi.d.ts.map +1 -0
  137. package/dist/utils/stampOrdinalOutputCi.js +103 -0
  138. package/dist/utils/stampOrdinalOutputCi.js.map +1 -0
  139. package/dist/utils/walletMetadataCi.d.ts +23 -0
  140. package/dist/utils/walletMetadataCi.d.ts.map +1 -0
  141. package/dist/utils/walletMetadataCi.js +70 -0
  142. package/dist/utils/walletMetadataCi.js.map +1 -0
  143. package/package.json +7 -7
@@ -0,0 +1,82 @@
1
+ import { applyP1SatCreateAction } from '../apply/applyIntent';
2
+ import { completeSignedAction, } from '../utils/completeSignedAction';
3
+ import { PENDING_RESOLVED_SPENDS_KEY, mergeResolvedSpends, } from './spendTargets';
4
+ import { buildSpendsForResolved, materializeSpends } from './unlockInput';
5
+ /**
6
+ * Shared createAction pipeline (local and module base wallet):
7
+ * embellish → materialize spends → createAction → unlock → signAction.
8
+ */
9
+ export async function runCreateActionPipeline(wallet, args, spends = [], opts = {}) {
10
+ const argsCopy = {
11
+ ...args,
12
+ outputs: args.outputs?.map((o) => ({
13
+ ...o,
14
+ tags: o.tags ? [...o.tags] : undefined,
15
+ })),
16
+ inputs: args.inputs?.map((i) => ({ ...i })),
17
+ labels: args.labels ? [...args.labels] : undefined,
18
+ options: args.options ? { ...args.options } : undefined,
19
+ };
20
+ const actionId = await applyP1SatCreateAction(wallet, argsCopy);
21
+ const records = await collectOutputRecords(wallet, argsCopy, spends);
22
+ if ('error' in records) {
23
+ return { error: records.error, actionId };
24
+ }
25
+ const { options, ...rest } = argsCopy;
26
+ const createResult = await wallet.createAction({
27
+ ...rest,
28
+ options: {
29
+ ...options,
30
+ signAndProcess: false,
31
+ },
32
+ });
33
+ const beef = opts.inputBEEF ??
34
+ (Array.isArray(argsCopy.inputBEEF)
35
+ ? argsCopy.inputBEEF
36
+ : undefined);
37
+ return finishCreateAction(wallet, createResult, records, beef, actionId);
38
+ }
39
+ /**
40
+ * After createAction: unlock from resolved records + signAction.
41
+ */
42
+ export async function finishCreateAction(wallet, createResult, outputRecords, inputBEEF, actionId) {
43
+ const id = actionId ?? 'unknown';
44
+ if (!createResult.signableTransaction) {
45
+ return {
46
+ txid: createResult.txid,
47
+ tx: createResult.tx ? Array.from(createResult.tx) : undefined,
48
+ noSendChange: createResult.noSendChange,
49
+ actionId: id,
50
+ };
51
+ }
52
+ const result = await completeSignedAction(wallet, createResult, inputBEEF, async (tx) => {
53
+ if (outputRecords.length === 0)
54
+ return {};
55
+ const unlocks = await buildSpendsForResolved(wallet, tx, outputRecords);
56
+ if ('error' in unlocks)
57
+ throw new Error(unlocks.error);
58
+ return unlocks;
59
+ });
60
+ return { ...result, actionId: id };
61
+ }
62
+ /**
63
+ * Embellish + materialize spends (module onRequest after approve).
64
+ * Module always materializes basket+id from storage; never trusts dApp CI.
65
+ */
66
+ export async function embellishCreateActionArgs(wallet, args, spends = []) {
67
+ const actionId = await applyP1SatCreateAction(wallet, args);
68
+ const records = await collectOutputRecords(wallet, args, spends);
69
+ if ('error' in records) {
70
+ throw new Error(records.error);
71
+ }
72
+ return { args, actionId, resolvedSpends: records };
73
+ }
74
+ /** Pending (Sigma) + materialize caller spends → finish list. */
75
+ async function collectOutputRecords(wallet, args, spends) {
76
+ const pending = args[PENDING_RESOLVED_SPENDS_KEY] ?? [];
77
+ const fromSpends = await materializeSpends(wallet, spends);
78
+ if ('error' in fromSpends)
79
+ return fromSpends;
80
+ return mergeResolvedSpends(pending, fromSpends);
81
+ }
82
+ //# sourceMappingURL=runPipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runPipeline.js","sourceRoot":"","sources":["../../src/pipeline/runPipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { type PermissionSchemeId } from '@1sat/types';
2
+ /**
3
+ * One input the pipeline must unlock.
4
+ *
5
+ * - Wallet inventory: set `basket` + `id` (and outpoint+CI if already loaded).
6
+ * - Buy / external: set `outpoint` + `scheme` (or basket to derive scheme).
7
+ * - Sigma (etc.): set `outpoint` + `customInstructions` after create.
8
+ *
9
+ * Finish only needs outpoint + optional CI. Basket+id is for load + module labels.
10
+ */
11
+ export interface Spend {
12
+ outpoint?: string;
13
+ customInstructions?: string;
14
+ basket?: string;
15
+ id?: string;
16
+ /** Permission scheme for external outpoint labels. */
17
+ scheme?: PermissionSchemeId;
18
+ }
19
+ /** Finish input: outpoint + optional CI (after materialize). */
20
+ export interface ResolvedSpend {
21
+ outpoint: string;
22
+ customInstructions?: string;
23
+ }
24
+ /** Module label for a spend (pointers only — never CI). */
25
+ export declare function spendToLabel(s: Spend): string | undefined;
26
+ export declare function labelsFromSpends(spends: Spend[]): string[];
27
+ /**
28
+ * Parse `p <scheme> input …` labels into spends (module wire).
29
+ * - `p <scheme> input id <key>` — wallet-held row
30
+ * - `p <scheme> input <outpoint>` — external / buy
31
+ */
32
+ export declare function spendsFromLabels(labels: string[] | undefined): Spend[];
33
+ /** Merge by outpoint; prefer entry that has CI. */
34
+ export declare function mergeResolvedSpends(...lists: ResolvedSpend[][]): ResolvedSpend[];
35
+ /** Stash key on CreateActionArgs for records created during embellish (Sigma). */
36
+ export declare const PENDING_RESOLVED_SPENDS_KEY: "__pendingResolvedSpends";
37
+ export type ArgsWithPendingSpends = {
38
+ [PENDING_RESOLVED_SPENDS_KEY]?: ResolvedSpend[];
39
+ };
40
+ /** @deprecated use Spend */
41
+ export type SpendTarget = Spend;
42
+ /** @deprecated use Spend */
43
+ export type BasketSpendTarget = Spend;
44
+ /** @deprecated use Spend */
45
+ export type OutpointSpendTarget = Spend;
46
+ /** @deprecated use labelsFromSpends */
47
+ export declare const labelsFromSpendTargets: typeof labelsFromSpends;
48
+ /** @deprecated use spendToLabel */
49
+ export declare const spendTargetToLabel: (t: Spend) => string;
50
+ /** @deprecated use spendsFromLabels */
51
+ export declare const spendTargetsFromLabels: typeof spendsFromLabels;
52
+ //# sourceMappingURL=spendTargets.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spendTargets.d.ts","sourceRoot":"","sources":["../../src/pipeline/spendTargets.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,KAAK,kBAAkB,EAKvB,MAAM,aAAa,CAAA;AAEpB;;;;;;;;GAQG;AACH,MAAM,WAAW,KAAK;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,sDAAsD;IACtD,MAAM,CAAC,EAAE,kBAAkB,CAAA;CAC3B;AAED,gEAAgE;AAChE,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC3B;AAED,2DAA2D;AAC3D,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAUzD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,EAAE,CAU1D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,GAAG,KAAK,EAAE,CA0BtE;AAED,mDAAmD;AACnD,wBAAgB,mBAAmB,CAClC,GAAG,KAAK,EAAE,aAAa,EAAE,EAAE,GACzB,aAAa,EAAE,CAYjB;AAOD,kFAAkF;AAClF,eAAO,MAAM,2BAA2B,EAAG,yBAAkC,CAAA;AAE7E,MAAM,MAAM,qBAAqB,GAAG;IACnC,CAAC,2BAA2B,CAAC,CAAC,EAAE,aAAa,EAAE,CAAA;CAC/C,CAAA;AAGD,4BAA4B;AAC5B,MAAM,MAAM,WAAW,GAAG,KAAK,CAAA;AAC/B,4BAA4B;AAC5B,MAAM,MAAM,iBAAiB,GAAG,KAAK,CAAA;AACrC,4BAA4B;AAC5B,MAAM,MAAM,mBAAmB,GAAG,KAAK,CAAA;AACvC,uCAAuC;AACvC,eAAO,MAAM,sBAAsB,yBAAmB,CAAA;AACtD,mCAAmC;AACnC,eAAO,MAAM,kBAAkB,GAAI,GAAG,KAAK,WAA0B,CAAA;AACrE,uCAAuC;AACvC,eAAO,MAAM,sBAAsB,yBAAmB,CAAA"}
@@ -0,0 +1,87 @@
1
+ import { buildExternalInputLabel, buildInputAssetLabel, parseOneInputLabel, schemeForBasket, } from '@1sat/types';
2
+ /** Module label for a spend (pointers only — never CI). */
3
+ export function spendToLabel(s) {
4
+ if (s.basket && s.id)
5
+ return buildInputAssetLabel(s.basket, s.id);
6
+ if (s.outpoint) {
7
+ const scheme = s.scheme ??
8
+ (s.basket ? schemeForBasket(s.basket) : undefined) ??
9
+ '1sat';
10
+ return buildExternalInputLabel(scheme, s.outpoint);
11
+ }
12
+ return undefined;
13
+ }
14
+ export function labelsFromSpends(spends) {
15
+ const out = [];
16
+ const seen = new Set();
17
+ for (const s of spends) {
18
+ const label = spendToLabel(s);
19
+ if (!label || seen.has(label))
20
+ continue;
21
+ seen.add(label);
22
+ out.push(label);
23
+ }
24
+ return out;
25
+ }
26
+ /**
27
+ * Parse `p <scheme> input …` labels into spends (module wire).
28
+ * - `p <scheme> input id <key>` — wallet-held row
29
+ * - `p <scheme> input <outpoint>` — external / buy
30
+ */
31
+ export function spendsFromLabels(labels) {
32
+ if (!labels?.length)
33
+ return [];
34
+ const out = [];
35
+ const seen = new Set();
36
+ for (const label of labels) {
37
+ const parsed = parseOneInputLabel(label);
38
+ if (!parsed)
39
+ continue;
40
+ if (parsed.kind === 'outpoint') {
41
+ const key = `op:${parsed.outpoint}`;
42
+ if (seen.has(key))
43
+ continue;
44
+ seen.add(key);
45
+ out.push({ outpoint: parsed.outpoint, scheme: parsed.scheme });
46
+ continue;
47
+ }
48
+ const key = `b:${parsed.basket}:${parsed.id}`;
49
+ if (seen.has(key))
50
+ continue;
51
+ seen.add(key);
52
+ out.push({
53
+ basket: parsed.basket,
54
+ id: parsed.id,
55
+ scheme: parsed.scheme,
56
+ });
57
+ }
58
+ return out;
59
+ }
60
+ /** Merge by outpoint; prefer entry that has CI. */
61
+ export function mergeResolvedSpends(...lists) {
62
+ const map = new Map();
63
+ for (const list of lists) {
64
+ for (const r of list) {
65
+ const op = normalizeOutpointDot(r.outpoint);
66
+ const prev = map.get(op);
67
+ if (!prev || (!prev.customInstructions && r.customInstructions)) {
68
+ map.set(op, { ...r, outpoint: op });
69
+ }
70
+ }
71
+ }
72
+ return [...map.values()];
73
+ }
74
+ function normalizeOutpointDot(s) {
75
+ if (s.length >= 66 && s[64] === '_')
76
+ return `${s.slice(0, 64)}.${s.slice(65)}`;
77
+ return s;
78
+ }
79
+ /** Stash key on CreateActionArgs for records created during embellish (Sigma). */
80
+ export const PENDING_RESOLVED_SPENDS_KEY = '__pendingResolvedSpends';
81
+ /** @deprecated use labelsFromSpends */
82
+ export const labelsFromSpendTargets = labelsFromSpends;
83
+ /** @deprecated use spendToLabel */
84
+ export const spendTargetToLabel = (t) => spendToLabel(t) ?? '';
85
+ /** @deprecated use spendsFromLabels */
86
+ export const spendTargetsFromLabels = spendsFromLabels;
87
+ //# sourceMappingURL=spendTargets.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spendTargets.js","sourceRoot":"","sources":["../../src/pipeline/spendTargets.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { type LockingScript, type Transaction, UnlockingScript, type WalletCounterparty, type WalletInterface, type WalletProtocol } from '@bsv/sdk';
2
+ import type { ResolvedSpend, Spend } from './spendTargets';
3
+ export type UnlockResult = {
4
+ unlockingScript: string;
5
+ } | {
6
+ error: string;
7
+ skip?: boolean;
8
+ };
9
+ interface KeyCi {
10
+ protocolID: WalletProtocol;
11
+ keyID: string;
12
+ counterparty?: WalletCounterparty;
13
+ }
14
+ /**
15
+ * Turn spends into finish records (outpoint + CI).
16
+ * - Already has outpoint+CI → use as-is (local load).
17
+ * - basket+id without usable CI → load from wallet storage.
18
+ * - outpoint only → buy/external (no CI).
19
+ */
20
+ export declare function materializeSpends(wallet: WalletInterface, spends: Spend[]): Promise<ResolvedSpend[] | {
21
+ error: string;
22
+ }>;
23
+ /** @deprecated use materializeSpends */
24
+ export declare const resolveSpendTargets: typeof materializeSpends;
25
+ /**
26
+ * Build unlocking scripts from resolved spends + signable tx.
27
+ * Script/sats from tx inputs (BEEF); CI from the record when present.
28
+ */
29
+ export declare function buildSpendsForResolved(wallet: WalletInterface, tx: Transaction, resolved: ResolvedSpend[]): Promise<Record<number, {
30
+ unlockingScript: string;
31
+ }> | {
32
+ error: string;
33
+ }>;
34
+ /** @deprecated prefer materializeSpends + buildSpendsForResolved */
35
+ export declare function buildSpendsForTargets(wallet: WalletInterface, tx: Transaction, targets: Spend[]): Promise<Record<number, {
36
+ unlockingScript: string;
37
+ }> | {
38
+ error: string;
39
+ }>;
40
+ /**
41
+ * Unlock one input from locking-script shape.
42
+ * - OrdLock + CI → cancel; OrdLock without → purchase unlock
43
+ * - PushDrop / Lock / P2PKH → need CI
44
+ */
45
+ export declare function unlockByScript(wallet: WalletInterface, tx: Transaction, inputIndex: number, lockingScript: LockingScript, sourceSatoshis: number, keyCi?: KeyCi): Promise<UnlockResult>;
46
+ /** OrdLock purchase unlock. */
47
+ export declare function buildPurchaseUnlockingScript(tx: Transaction, inputIndex: number, sourceSatoshis: number, lockingScript: LockingScript): UnlockingScript;
48
+ export {};
49
+ //# sourceMappingURL=unlockInput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlockInput.d.ts","sourceRoot":"","sources":["../../src/pipeline/unlockInput.ts"],"names":[],"mappings":"AACA,OAAO,EAGN,KAAK,aAAa,EAIlB,KAAK,WAAW,EAEhB,eAAe,EAEf,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,MAAM,UAAU,CAAA;AAGjB,OAAO,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAA;AAG1D,MAAM,MAAM,YAAY,GACrB;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,GAC3B;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,CAAA;AAEpC,UAAU,KAAK;IACd,UAAU,EAAE,cAAc,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,kBAAkB,CAAA;CACjC;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CACtC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,KAAK,EAAE,GACb,OAAO,CAAC,aAAa,EAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAyC9C;AAED,wCAAwC;AACxC,eAAO,MAAM,mBAAmB,0BAAoB,CAAA;AAEpD;;;GAGG;AACH,wBAAsB,sBAAsB,CAC3C,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,WAAW,EACf,QAAQ,EAAE,aAAa,EAAE,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAkD1E;AAED,oEAAoE;AACpE,wBAAsB,qBAAqB,CAC1C,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,WAAW,EACf,OAAO,EAAE,KAAK,EAAE,GACd,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;IAAE,eAAe,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAI1E;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CACnC,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,WAAW,EACf,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,aAAa,EAC5B,cAAc,EAAE,MAAM,EACtB,KAAK,CAAC,EAAE,KAAK,GACX,OAAO,CAAC,YAAY,CAAC,CA4EvB;AAqBD,+BAA+B;AAC/B,wBAAgB,4BAA4B,CAC3C,EAAE,EAAE,WAAW,EACf,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,aAAa,EAAE,aAAa,GAC1B,eAAe,CAiDjB"}
@@ -0,0 +1,316 @@
1
+ import { Lock, OrdLock } from '@1sat/templates';
2
+ import { BigNumber, Hash, OP, PushDrop, Signature, TransactionSignature, UnlockingScript, Utils, } from '@bsv/sdk';
3
+ import { loadBasketOutput } from '../utils/loadBasketOutput';
4
+ import { ensurePlaintextCi } from '../utils/walletMetadataCi';
5
+ import { mergeResolvedSpends } from './spendTargets';
6
+ /**
7
+ * Turn spends into finish records (outpoint + CI).
8
+ * - Already has outpoint+CI → use as-is (local load).
9
+ * - basket+id without usable CI → load from wallet storage.
10
+ * - outpoint only → buy/external (no CI).
11
+ */
12
+ export async function materializeSpends(wallet, spends) {
13
+ const out = [];
14
+ for (const s of spends) {
15
+ if (s.outpoint && s.customInstructions) {
16
+ // Caller-supplied CI may still be WPM ciphertext (base wallet).
17
+ const ci = (await ensurePlaintextCi(wallet, s.customInstructions)) ??
18
+ s.customInstructions;
19
+ out.push({
20
+ outpoint: s.outpoint.replace('_', '.'),
21
+ customInstructions: ci,
22
+ });
23
+ continue;
24
+ }
25
+ if (s.basket && s.id) {
26
+ // loadBasketOutput always returns plaintext CI.
27
+ const loaded = await loadBasketOutput(wallet, s.basket, s.id);
28
+ if ('error' in loaded)
29
+ return { error: loaded.error };
30
+ if (!loaded.output.customInstructions) {
31
+ return {
32
+ error: `missing-ci-after-load:${s.basket}:${s.id}`,
33
+ };
34
+ }
35
+ out.push({
36
+ outpoint: loaded.output.outpoint.replace('_', '.'),
37
+ customInstructions: loaded.output.customInstructions,
38
+ });
39
+ continue;
40
+ }
41
+ if (s.outpoint) {
42
+ out.push({ outpoint: s.outpoint.replace('_', '.') });
43
+ continue;
44
+ }
45
+ return { error: 'spend-missing-outpoint-or-basket-id' };
46
+ }
47
+ return mergeResolvedSpends(out);
48
+ }
49
+ /** @deprecated use materializeSpends */
50
+ export const resolveSpendTargets = materializeSpends;
51
+ /**
52
+ * Build unlocking scripts from resolved spends + signable tx.
53
+ * Script/sats from tx inputs (BEEF); CI from the record when present.
54
+ */
55
+ export async function buildSpendsForResolved(wallet, tx, resolved) {
56
+ const spends = {};
57
+ const inputByOutpoint = new Map();
58
+ for (let i = 0; i < tx.inputs.length; i++) {
59
+ const inp = tx.inputs[i];
60
+ const txid = inp.sourceTXID ?? inp.sourceTransaction?.id('hex');
61
+ if (!txid)
62
+ continue;
63
+ inputByOutpoint.set(`${txid}.${inp.sourceOutputIndex}`, i);
64
+ }
65
+ for (const r of resolved) {
66
+ const norm = r.outpoint.replace('_', '.');
67
+ let inputIndex = inputByOutpoint.get(norm) ?? inputByOutpoint.get(r.outpoint);
68
+ if (inputIndex === undefined) {
69
+ for (const [k, v] of inputByOutpoint) {
70
+ if (k.replace('_', '.') === norm) {
71
+ inputIndex = v;
72
+ break;
73
+ }
74
+ }
75
+ }
76
+ if (inputIndex === undefined) {
77
+ return { error: `spend-not-in-tx:${r.outpoint}` };
78
+ }
79
+ const inp = tx.inputs[inputIndex];
80
+ const lockingScript = inp.sourceTransaction?.outputs[inp.sourceOutputIndex]?.lockingScript;
81
+ const sourceSatoshis = inp.sourceTransaction?.outputs[inp.sourceOutputIndex]?.satoshis ?? 1;
82
+ if (!lockingScript) {
83
+ return { error: `missing-locking-script:input-${inputIndex}` };
84
+ }
85
+ const keyCi = parseKeyCi(r.customInstructions);
86
+ const unlocked = await unlockByScript(wallet, tx, inputIndex, lockingScript, sourceSatoshis, keyCi);
87
+ if ('error' in unlocked) {
88
+ if (unlocked.skip)
89
+ continue;
90
+ return { error: unlocked.error };
91
+ }
92
+ spends[inputIndex] = { unlockingScript: unlocked.unlockingScript };
93
+ }
94
+ return spends;
95
+ }
96
+ /** @deprecated prefer materializeSpends + buildSpendsForResolved */
97
+ export async function buildSpendsForTargets(wallet, tx, targets) {
98
+ const resolved = await materializeSpends(wallet, targets);
99
+ if ('error' in resolved)
100
+ return resolved;
101
+ return buildSpendsForResolved(wallet, tx, resolved);
102
+ }
103
+ /**
104
+ * Unlock one input from locking-script shape.
105
+ * - OrdLock + CI → cancel; OrdLock without → purchase unlock
106
+ * - PushDrop / Lock / P2PKH → need CI
107
+ */
108
+ export async function unlockByScript(wallet, tx, inputIndex, lockingScript, sourceSatoshis, keyCi) {
109
+ if (OrdLock.decode(lockingScript)) {
110
+ if (keyCi?.protocolID && keyCi.keyID) {
111
+ try {
112
+ const unlocker = OrdLock.cancelWithWallet(wallet, keyCi.protocolID, keyCi.keyID, keyCi.counterparty ?? 'self');
113
+ const unlockingScript = await unlocker.sign(tx, inputIndex);
114
+ return { unlockingScript: unlockingScript.toHex() };
115
+ }
116
+ catch (e) {
117
+ return {
118
+ error: e instanceof Error ? e.message : 'ordlock-cancel-failed',
119
+ };
120
+ }
121
+ }
122
+ try {
123
+ const script = buildPurchaseUnlockingScript(tx, inputIndex, sourceSatoshis, lockingScript);
124
+ return { unlockingScript: script.toHex() };
125
+ }
126
+ catch (e) {
127
+ return {
128
+ error: e instanceof Error ? e.message : 'ordlock-purchase-unlock-failed',
129
+ };
130
+ }
131
+ }
132
+ if (!keyCi?.protocolID || !keyCi.keyID) {
133
+ return { error: `missing-key-ci-for-input-${inputIndex}` };
134
+ }
135
+ if (Lock.decode(lockingScript)) {
136
+ try {
137
+ const unlocker = Lock.unlockWithWallet(wallet, keyCi.protocolID, keyCi.keyID, keyCi.counterparty ?? 'self');
138
+ const unlockingScript = await unlocker.sign(tx, inputIndex);
139
+ return { unlockingScript: unlockingScript.toHex() };
140
+ }
141
+ catch (e) {
142
+ return {
143
+ error: e instanceof Error ? e.message : 'lock-unlock-failed',
144
+ };
145
+ }
146
+ }
147
+ try {
148
+ PushDrop.decode(lockingScript);
149
+ return signPushDropInput(wallet, tx, inputIndex, keyCi.protocolID, keyCi.keyID, keyCi.counterparty ?? 'anyone');
150
+ }
151
+ catch {
152
+ // not pushdrop
153
+ }
154
+ return signP2PKHInputWallet(wallet, tx, inputIndex, keyCi.protocolID, keyCi.keyID, keyCi.counterparty ?? 'self');
155
+ }
156
+ function parseKeyCi(raw) {
157
+ if (!raw)
158
+ return undefined;
159
+ try {
160
+ const o = JSON.parse(raw);
161
+ if (!o.protocolID || !o.keyID)
162
+ return undefined;
163
+ return o;
164
+ }
165
+ catch {
166
+ return undefined;
167
+ }
168
+ }
169
+ function buildSerializedOutput(satoshis, script) {
170
+ const writer = new Utils.Writer();
171
+ writer.writeUInt64LEBn(new BigNumber(satoshis));
172
+ writer.writeVarIntNum(script.length);
173
+ writer.write(script);
174
+ return writer.toArray();
175
+ }
176
+ /** OrdLock purchase unlock. */
177
+ export function buildPurchaseUnlockingScript(tx, inputIndex, sourceSatoshis, lockingScript) {
178
+ if (tx.outputs.length < 2) {
179
+ throw new Error('Malformed transaction: requires at least 2 outputs');
180
+ }
181
+ const script = new UnlockingScript().writeBin(buildSerializedOutput(tx.outputs[0].satoshis ?? 0, tx.outputs[0].lockingScript.toBinary()));
182
+ if (tx.outputs.length > 2) {
183
+ const writer = new Utils.Writer();
184
+ for (const output of tx.outputs.slice(2)) {
185
+ writer.write(buildSerializedOutput(output.satoshis ?? 0, output.lockingScript.toBinary()));
186
+ }
187
+ script.writeBin(writer.toArray());
188
+ }
189
+ else {
190
+ script.writeOpCode(OP.OP_0);
191
+ }
192
+ const input = tx.inputs[inputIndex];
193
+ const sourceTXID = input.sourceTXID ?? input.sourceTransaction?.id('hex');
194
+ if (!sourceTXID)
195
+ throw new Error('sourceTXID is required');
196
+ const preimage = TransactionSignature.format({
197
+ sourceTXID,
198
+ sourceOutputIndex: input.sourceOutputIndex,
199
+ sourceSatoshis,
200
+ transactionVersion: tx.version,
201
+ otherInputs: [],
202
+ inputIndex,
203
+ outputs: tx.outputs,
204
+ inputSequence: input.sequence ?? 0xffffffff,
205
+ subscript: lockingScript,
206
+ lockTime: tx.lockTime,
207
+ scope: TransactionSignature.SIGHASH_ALL |
208
+ TransactionSignature.SIGHASH_ANYONECANPAY |
209
+ TransactionSignature.SIGHASH_FORKID,
210
+ });
211
+ return script.writeBin(preimage).writeOpCode(OP.OP_0);
212
+ }
213
+ async function signPushDropInput(wallet, tx, inputIndex, protocolID, keyID, counterparty) {
214
+ const txInput = tx.inputs[inputIndex];
215
+ const sourceLockingScript = txInput.sourceTransaction?.outputs[txInput.sourceOutputIndex]?.lockingScript;
216
+ if (!sourceLockingScript) {
217
+ return { error: `missing-source-locking-script-for-input-${inputIndex}` };
218
+ }
219
+ const sourceTXID = txInput.sourceTXID ?? txInput.sourceTransaction?.id('hex');
220
+ if (!sourceTXID) {
221
+ return { error: `missing-source-txid-for-input-${inputIndex}` };
222
+ }
223
+ const sourceSatoshis = txInput.sourceTransaction?.outputs[txInput.sourceOutputIndex]?.satoshis ?? 1;
224
+ const scope = TransactionSignature.SIGHASH_ALL | TransactionSignature.SIGHASH_FORKID;
225
+ const preimage = TransactionSignature.format({
226
+ sourceTXID,
227
+ sourceOutputIndex: txInput.sourceOutputIndex,
228
+ sourceSatoshis,
229
+ transactionVersion: tx.version,
230
+ otherInputs: tx.inputs
231
+ .filter((_, idx) => idx !== inputIndex)
232
+ .map((inp) => ({
233
+ sourceTXID: inp.sourceTXID ?? inp.sourceTransaction?.id('hex') ?? '',
234
+ sourceOutputIndex: inp.sourceOutputIndex,
235
+ sequence: inp.sequence ?? 0xffffffff,
236
+ })),
237
+ inputIndex,
238
+ outputs: tx.outputs,
239
+ inputSequence: txInput.sequence ?? 0xffffffff,
240
+ subscript: sourceLockingScript,
241
+ lockTime: tx.lockTime,
242
+ scope,
243
+ });
244
+ const sighash = Hash.sha256(Hash.sha256(preimage));
245
+ const { signature: bareSignature } = await wallet.createSignature({
246
+ protocolID,
247
+ keyID,
248
+ counterparty,
249
+ data: Array.from(preimage),
250
+ hashToDirectlySign: Array.from(sighash),
251
+ });
252
+ const signature = Signature.fromDER([...bareSignature]);
253
+ const txSignature = new TransactionSignature(signature.r, signature.s, scope);
254
+ const sigForScript = txSignature.toChecksigFormat();
255
+ return {
256
+ unlockingScript: new UnlockingScript([
257
+ { op: sigForScript.length, data: sigForScript },
258
+ ]).toHex(),
259
+ };
260
+ }
261
+ async function signP2PKHInputWallet(wallet, tx, inputIndex, protocolID, keyID, counterparty) {
262
+ const txInput = tx.inputs[inputIndex];
263
+ const sourceLockingScript = txInput.sourceTransaction?.outputs[txInput.sourceOutputIndex]?.lockingScript;
264
+ if (!sourceLockingScript) {
265
+ return { error: `missing-source-locking-script-for-input-${inputIndex}` };
266
+ }
267
+ const sourceTXID = txInput.sourceTXID ?? txInput.sourceTransaction?.id('hex');
268
+ if (!sourceTXID) {
269
+ return { error: `missing-source-txid-for-input-${inputIndex}` };
270
+ }
271
+ const sourceSatoshis = txInput.sourceTransaction?.outputs[txInput.sourceOutputIndex]?.satoshis ?? 1;
272
+ const preimage = TransactionSignature.format({
273
+ sourceTXID,
274
+ sourceOutputIndex: txInput.sourceOutputIndex,
275
+ sourceSatoshis,
276
+ transactionVersion: tx.version,
277
+ otherInputs: tx.inputs
278
+ .filter((_, idx) => idx !== inputIndex)
279
+ .map((inp) => ({
280
+ sourceTXID: inp.sourceTXID ?? inp.sourceTransaction?.id('hex') ?? '',
281
+ sourceOutputIndex: inp.sourceOutputIndex,
282
+ sequence: inp.sequence ?? 0xffffffff,
283
+ })),
284
+ inputIndex,
285
+ outputs: tx.outputs,
286
+ inputSequence: txInput.sequence ?? 0xffffffff,
287
+ subscript: sourceLockingScript,
288
+ lockTime: tx.lockTime,
289
+ scope: TransactionSignature.SIGHASH_ALL | TransactionSignature.SIGHASH_FORKID,
290
+ });
291
+ const sighash = Hash.sha256(Hash.sha256(preimage));
292
+ const { signature } = await wallet.createSignature({
293
+ protocolID,
294
+ keyID,
295
+ counterparty,
296
+ data: Array.from(preimage),
297
+ hashToDirectlySign: Array.from(sighash),
298
+ });
299
+ const { publicKey } = await wallet.getPublicKey({
300
+ protocolID,
301
+ keyID,
302
+ counterparty,
303
+ forSelf: true,
304
+ });
305
+ const sigWithHashtype = [
306
+ ...signature,
307
+ TransactionSignature.SIGHASH_ALL | TransactionSignature.SIGHASH_FORKID,
308
+ ];
309
+ return {
310
+ unlockingScript: new UnlockingScript()
311
+ .writeBin(sigWithHashtype)
312
+ .writeBin(Utils.toArray(publicKey, 'hex'))
313
+ .toHex(),
314
+ };
315
+ }
316
+ //# sourceMappingURL=unlockInput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unlockInput.js","sourceRoot":"","sources":["../../src/pipeline/unlockInput.ts"],"names":[],"mappings":"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"}
@@ -35,7 +35,7 @@ export declare const signBsm: Action<SignBsmRequest, SignBsmResponse>;
35
35
  export declare const signingActions: (Action<import("./authToken").AuthTokenRequest, import("./authToken").AuthTokenResponse> | Action<import("./counterpartyCrypto").EncryptRequest, import("./counterpartyCrypto").EncryptResponse> | Action<import("./counterpartyCrypto").DecryptRequest, import("./counterpartyCrypto").DecryptResponse> | Action<import("./friendPubKey").FriendPubKeyRequest, import("./friendPubKey").FriendPubKeyResponse> | Action<SignBsmRequest, SignBsmResponse>)[];
36
36
  export { applyAip, applyBapAip, resolveBapSigner, resolveCurrentKeyId, } from './aip';
37
37
  export { signWithBap, type BapSignature } from './bap';
38
- export { appendSigmaPlaceholder, sealSigma, resolveSigmaAddress, SIGMA_COMPACT_SIG_LEN, } from './sigma';
38
+ export { appendSigmaPlaceholder, sealSigma, resolveSigmaAddress, SIGMA_COMPACT_SIG_LEN, SIGMA_ADDRESS_PLACEHOLDER_LEN, } from './sigma';
39
39
  export { getAuthToken, type AuthTokenRequest, type AuthTokenResponse, } from './authToken';
40
40
  export { getFriendPublicKey, type FriendPubKeyRequest, type FriendPubKeyResponse, } from './friendPubKey';
41
41
  export { encryptForCounterparty, decryptFromCounterparty, type EncryptRequest, type EncryptResponse, type DecryptRequest, type DecryptResponse, } from './counterpartyCrypto';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAMtC,MAAM,WAAW,cAAc;IAC9B,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;IACpC,uCAAuC;IACvC,GAAG,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAA;QACb,EAAE,EAAE,MAAM,CAAA;QACV,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC5B,CAAA;CACD;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,eAAgB,SAAQ,OAAO,CAAC,aAAa,CAAC;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAMD;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,eAAe,CAqE3D,CAAA;AAaD,uCAAuC;AACvC,eAAO,MAAM,cAAc,6bAM1B,CAAA;AAGD,OAAO,EACN,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,mBAAmB,GACnB,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,EACN,sBAAsB,EACtB,SAAS,EACT,mBAAmB,EACnB,qBAAqB,GACrB,MAAM,SAAS,CAAA;AAChB,OAAO,EACN,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACtB,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GACzB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACN,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,GACpB,MAAM,sBAAsB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/signing/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAMtC,MAAM,WAAW,cAAc;IAC9B,sBAAsB;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,uBAAuB;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAA;IACpC,uCAAuC;IACvC,GAAG,CAAC,EAAE;QACL,KAAK,EAAE,MAAM,CAAA;QACb,EAAE,EAAE,MAAM,CAAA;QACV,MAAM,EAAE,MAAM,CAAA;QACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;KAC5B,CAAA;CACD;AAED,MAAM,WAAW,aAAa;IAC7B,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAA;CACrC;AAED,MAAM,WAAW,eAAgB,SAAQ,OAAO,CAAC,aAAa,CAAC;IAC9D,KAAK,CAAC,EAAE,MAAM,CAAA;CACd;AAMD;;GAEG;AACH,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,cAAc,EAAE,eAAe,CAqE3D,CAAA;AAaD,uCAAuC;AACvC,eAAO,MAAM,cAAc,6bAM1B,CAAA;AAGD,OAAO,EACN,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,mBAAmB,GACnB,MAAM,OAAO,CAAA;AACd,OAAO,EAAE,WAAW,EAAE,KAAK,YAAY,EAAE,MAAM,OAAO,CAAA;AACtD,OAAO,EACN,sBAAsB,EACtB,SAAS,EACT,mBAAmB,EACnB,qBAAqB,EACrB,6BAA6B,GAC7B,MAAM,SAAS,CAAA;AAChB,OAAO,EACN,YAAY,EACZ,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,GACtB,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,kBAAkB,EAClB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GACzB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EACN,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,cAAc,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,eAAe,GACpB,MAAM,sBAAsB,CAAA"}