@1sat/actions 0.0.197 → 0.0.198
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/apply/applyIntent.d.ts +7 -15
- package/dist/apply/applyIntent.d.ts.map +1 -1
- package/dist/apply/applyIntent.js +75 -25
- package/dist/apply/applyIntent.js.map +1 -1
- package/dist/apply/index.d.ts +1 -1
- package/dist/apply/index.d.ts.map +1 -1
- package/dist/apply/index.js +1 -1
- package/dist/apply/index.js.map +1 -1
- package/dist/apply/inscribeSigma.d.ts +1 -1
- package/dist/apply/inscribeSigma.d.ts.map +1 -1
- package/dist/apply/inscribeSigma.js +20 -13
- package/dist/apply/inscribeSigma.js.map +1 -1
- package/dist/apply/prepare.d.ts +18 -7
- package/dist/apply/prepare.d.ts.map +1 -1
- package/dist/apply/prepare.js +10 -20
- package/dist/apply/prepare.js.map +1 -1
- package/dist/apply/registry.d.ts +3 -2
- package/dist/apply/registry.d.ts.map +1 -1
- package/dist/apply/registry.js +5 -26
- package/dist/apply/registry.js.map +1 -1
- package/dist/collections/index.d.ts.map +1 -1
- package/dist/collections/index.js +77 -51
- package/dist/collections/index.js.map +1 -1
- package/dist/constants.d.ts +1 -1
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +1 -1
- package/dist/constants.js.map +1 -1
- package/dist/cosign/finalize.js +1 -2
- package/dist/cosign/finalize.js.map +1 -1
- package/dist/index.d.ts +11 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/inscriptions/index.d.ts.map +1 -1
- package/dist/inscriptions/index.js +34 -39
- package/dist/inscriptions/index.js.map +1 -1
- package/dist/locks/index.d.ts +1 -1
- package/dist/locks/index.d.ts.map +1 -1
- package/dist/locks/index.js +28 -13
- package/dist/locks/index.js.map +1 -1
- package/dist/opns/index.d.ts.map +1 -1
- package/dist/opns/index.js +60 -50
- package/dist/opns/index.js.map +1 -1
- package/dist/ordinals/index.d.ts +1 -2
- package/dist/ordinals/index.d.ts.map +1 -1
- package/dist/ordinals/index.js +84 -93
- package/dist/ordinals/index.js.map +1 -1
- package/dist/pipeline/index.d.ts +4 -0
- package/dist/pipeline/index.d.ts.map +1 -0
- package/dist/pipeline/index.js +4 -0
- package/dist/pipeline/index.js.map +1 -0
- package/dist/pipeline/runPipeline.d.ts +30 -0
- package/dist/pipeline/runPipeline.d.ts.map +1 -0
- package/dist/pipeline/runPipeline.js +85 -0
- package/dist/pipeline/runPipeline.js.map +1 -0
- package/dist/pipeline/spendTargets.d.ts +52 -0
- package/dist/pipeline/spendTargets.d.ts.map +1 -0
- package/dist/pipeline/spendTargets.js +87 -0
- package/dist/pipeline/spendTargets.js.map +1 -0
- package/dist/pipeline/unlockInput.d.ts +49 -0
- package/dist/pipeline/unlockInput.d.ts.map +1 -0
- package/dist/pipeline/unlockInput.js +316 -0
- package/dist/pipeline/unlockInput.js.map +1 -0
- package/dist/signing/index.d.ts +1 -1
- package/dist/signing/index.d.ts.map +1 -1
- package/dist/signing/index.js +1 -1
- package/dist/signing/index.js.map +1 -1
- package/dist/signing/sigma.d.ts +13 -17
- package/dist/signing/sigma.d.ts.map +1 -1
- package/dist/signing/sigma.js +37 -40
- package/dist/signing/sigma.js.map +1 -1
- package/dist/sweep/index.d.ts.map +1 -1
- package/dist/sweep/index.js +20 -17
- package/dist/sweep/index.js.map +1 -1
- package/dist/sync/syncCosignDeliveries.d.ts.map +1 -1
- package/dist/sync/syncCosignDeliveries.js +30 -20
- package/dist/sync/syncCosignDeliveries.js.map +1 -1
- package/dist/tokens/index.d.ts +8 -0
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +246 -174
- package/dist/tokens/index.js.map +1 -1
- package/dist/types.d.ts +16 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/bsv21Remittance.d.ts +63 -0
- package/dist/utils/bsv21Remittance.d.ts.map +1 -0
- package/dist/utils/bsv21Remittance.js +146 -0
- package/dist/utils/bsv21Remittance.js.map +1 -0
- package/dist/utils/bsv21Remittance.test.d.ts +2 -0
- package/dist/utils/bsv21Remittance.test.d.ts.map +1 -0
- package/dist/utils/bsv21Remittance.test.js +115 -0
- package/dist/utils/bsv21Remittance.test.js.map +1 -0
- package/dist/utils/createTrackedAction.d.ts +42 -38
- package/dist/utils/createTrackedAction.d.ts.map +1 -1
- package/dist/utils/createTrackedAction.js +154 -77
- package/dist/utils/createTrackedAction.js.map +1 -1
- package/dist/utils/hasOneSatModule.d.ts +14 -0
- package/dist/utils/hasOneSatModule.d.ts.map +1 -0
- package/dist/utils/hasOneSatModule.js +31 -0
- package/dist/utils/hasOneSatModule.js.map +1 -0
- package/dist/utils/internalizeBeef.d.ts.map +1 -1
- package/dist/utils/internalizeBeef.js +37 -12
- package/dist/utils/internalizeBeef.js.map +1 -1
- package/dist/utils/loadBasketOutput.d.ts +1 -1
- package/dist/utils/loadBasketOutput.d.ts.map +1 -1
- package/dist/utils/loadBasketOutput.js +11 -3
- package/dist/utils/loadBasketOutput.js.map +1 -1
- package/dist/utils/moveBasket.d.ts +37 -0
- package/dist/utils/moveBasket.d.ts.map +1 -0
- package/dist/utils/moveBasket.js +115 -0
- package/dist/utils/moveBasket.js.map +1 -0
- package/dist/utils/ordinalRemittance.d.ts +33 -0
- package/dist/utils/ordinalRemittance.d.ts.map +1 -0
- package/dist/utils/ordinalRemittance.js +70 -0
- package/dist/utils/ordinalRemittance.js.map +1 -0
- package/dist/utils/ordinalSeedTags.d.ts +5 -3
- package/dist/utils/ordinalSeedTags.d.ts.map +1 -1
- package/dist/utils/ordinalSeedTags.js +34 -7
- package/dist/utils/ordinalSeedTags.js.map +1 -1
- package/dist/utils/resolveDestination.d.ts +3 -6
- package/dist/utils/resolveDestination.d.ts.map +1 -1
- package/dist/utils/resolveDestination.js +5 -1
- package/dist/utils/resolveDestination.js.map +1 -1
- package/dist/utils/signOrdinalInput.d.ts +3 -2
- package/dist/utils/signOrdinalInput.d.ts.map +1 -1
- package/dist/utils/signOrdinalInput.js +18 -13
- package/dist/utils/signOrdinalInput.js.map +1 -1
- package/dist/utils/stampBsv21OutputCi.d.ts +16 -0
- package/dist/utils/stampBsv21OutputCi.d.ts.map +1 -0
- package/dist/utils/stampBsv21OutputCi.js +90 -0
- package/dist/utils/stampBsv21OutputCi.js.map +1 -0
- package/dist/utils/stampOrdinalOutputCi.d.ts +15 -0
- package/dist/utils/stampOrdinalOutputCi.d.ts.map +1 -0
- package/dist/utils/stampOrdinalOutputCi.js +103 -0
- package/dist/utils/stampOrdinalOutputCi.js.map +1 -0
- package/dist/utils/walletMetadataCi.d.ts +23 -0
- package/dist/utils/walletMetadataCi.d.ts.map +1 -0
- package/dist/utils/walletMetadataCi.js +70 -0
- package/dist/utils/walletMetadataCi.js.map +1 -0
- package/package.json +7 -7
|
@@ -8,7 +8,7 @@ export interface LoadBasketOutputResult {
|
|
|
8
8
|
}
|
|
9
9
|
/**
|
|
10
10
|
* Load a single wallet-owned basket UTXO by tracking id.
|
|
11
|
-
*
|
|
11
|
+
* Always returns plaintext customInstructions (peels WPM metadata encryption).
|
|
12
12
|
*/
|
|
13
13
|
export declare function loadBasketOutput(wallet: WalletInterface, basket: string, id: string, opts?: {
|
|
14
14
|
includeBeef?: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadBasketOutput.d.ts","sourceRoot":"","sources":["../../src/utils/loadBasketOutput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"loadBasketOutput.d.ts","sourceRoot":"","sources":["../../src/utils/loadBasketOutput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAGnE,+CAA+C;AAC/C,wBAAgB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAI1C;AAED,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,YAAY,CAAA;IACpB,uCAAuC;IACvC,IAAI,CAAC,EAAE,IAAI,CAAA;CACX;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,EACV,IAAI,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9B,OAAO,CAAC,sBAAsB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAsCrD;AAED,6CAA6C;AAC7C,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,EAAE,EAAE,MAAM,GACR,OAAO,CAAC;IAAE,MAAM,EAAE,YAAY,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CASvE"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ensurePlaintextCi } from './walletMetadataCi';
|
|
1
2
|
/** Accept bare id value or full `id:…` tag. */
|
|
2
3
|
export function toIdTag(id) {
|
|
3
4
|
const t = id.trim();
|
|
@@ -7,7 +8,7 @@ export function toIdTag(id) {
|
|
|
7
8
|
}
|
|
8
9
|
/**
|
|
9
10
|
* Load a single wallet-owned basket UTXO by tracking id.
|
|
10
|
-
*
|
|
11
|
+
* Always returns plaintext customInstructions (peels WPM metadata encryption).
|
|
11
12
|
*/
|
|
12
13
|
export async function loadBasketOutput(wallet, basket, id, opts) {
|
|
13
14
|
let idTag;
|
|
@@ -26,10 +27,17 @@ export async function loadBasketOutput(wallet, basket, id, opts) {
|
|
|
26
27
|
...(opts?.includeBeef ? { include: 'entire transactions' } : {}),
|
|
27
28
|
limit: 1,
|
|
28
29
|
});
|
|
29
|
-
const
|
|
30
|
-
if (!
|
|
30
|
+
const row = result.outputs[0];
|
|
31
|
+
if (!row) {
|
|
31
32
|
return { error: `output-not-found:${idTag}` };
|
|
32
33
|
}
|
|
34
|
+
const customInstructions = await ensurePlaintextCi(wallet, row.customInstructions);
|
|
35
|
+
const output = {
|
|
36
|
+
...row,
|
|
37
|
+
...(customInstructions !== undefined
|
|
38
|
+
? { customInstructions }
|
|
39
|
+
: { customInstructions: undefined }),
|
|
40
|
+
};
|
|
33
41
|
return {
|
|
34
42
|
output,
|
|
35
43
|
...(opts?.includeBeef && result.BEEF ? { BEEF: result.BEEF } : {}),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadBasketOutput.js","sourceRoot":"","sources":["../../src/utils/loadBasketOutput.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"loadBasketOutput.js","sourceRoot":"","sources":["../../src/utils/loadBasketOutput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEtD,+CAA+C;AAC/C,MAAM,UAAU,OAAO,CAAC,EAAU;IACjC,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,EAAE,CAAA;IACnB,IAAI,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAA;IACnC,OAAO,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAA;AAC3C,CAAC;AAQD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACrC,MAAuB,EACvB,MAAc,EACd,EAAU,EACV,IAAgC;IAEhC,IAAI,KAAa,CAAA;IACjB,IAAI,CAAC;QACJ,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,CAAA;IACpB,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAA;IAC7B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC;QACvC,MAAM;QACN,IAAI,EAAE,CAAC,KAAK,CAAC;QACb,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,IAAI;QACjB,yBAAyB,EAAE,IAAI;QAC/B,GAAG,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,qBAA8B,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,KAAK,EAAE,CAAC;KACR,CAAC,CAAA;IAEF,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,IAAI,CAAC,GAAG,EAAE,CAAC;QACV,OAAO,EAAE,KAAK,EAAE,oBAAoB,KAAK,EAAE,EAAE,CAAA;IAC9C,CAAC;IAED,MAAM,kBAAkB,GAAG,MAAM,iBAAiB,CACjD,MAAM,EACN,GAAG,CAAC,kBAAkB,CACtB,CAAA;IACD,MAAM,MAAM,GAAiB;QAC5B,GAAG,GAAG;QACN,GAAG,CAAC,kBAAkB,KAAK,SAAS;YACnC,CAAC,CAAC,EAAE,kBAAkB,EAAE;YACxB,CAAC,CAAC,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC;KACrC,CAAA;IAED,OAAO;QACN,MAAM;QACN,GAAG,CAAC,IAAI,EAAE,WAAW,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClE,CAAA;AACF,CAAC;AAED,6CAA6C;AAC7C,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,MAAuB,EACvB,MAAc,EACd,EAAU;IAEV,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE;QACzD,WAAW,EAAE,IAAI;KACjB,CAAC,CAAA;IACF,IAAI,OAAO,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IACpC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,KAAK,EAAE,WAAW,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,CAAA;IAC3C,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAA;AAChE,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { WalletInterface } from '@bsv/sdk';
|
|
2
|
+
export interface MoveBasketOptions {
|
|
3
|
+
/** Max outputs to move per call (default 1000). */
|
|
4
|
+
limit?: number;
|
|
5
|
+
/** Offset into listOutputs (default 0). */
|
|
6
|
+
offset?: number;
|
|
7
|
+
}
|
|
8
|
+
export interface MoveBasketResult {
|
|
9
|
+
from: string;
|
|
10
|
+
to: string;
|
|
11
|
+
moved: number;
|
|
12
|
+
skipped: number;
|
|
13
|
+
outpoints: string[];
|
|
14
|
+
errors: Array<{
|
|
15
|
+
outpoint: string;
|
|
16
|
+
error: string;
|
|
17
|
+
}>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Re-file spendable outputs from one basket into another via
|
|
21
|
+
* `internalizeAction` basket insertion (merge updates `basketId` in place).
|
|
22
|
+
* Tags and customInstructions are preserved. No chain spend.
|
|
23
|
+
*
|
|
24
|
+
* Each outpoint is internalized with an AtomicBEEF for **its** tx — outputs
|
|
25
|
+
* from different txs cannot share one subject BEEF.
|
|
26
|
+
*/
|
|
27
|
+
export declare function moveBasketOutputs(wallet: WalletInterface, fromBasket: string, toBasket: string, opts?: MoveBasketOptions): Promise<MoveBasketResult>;
|
|
28
|
+
export interface MigrateLegacyBasketsResult {
|
|
29
|
+
results: MoveBasketResult[];
|
|
30
|
+
totalMoved: number;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Move every known legacy `p 1sat …` basket into its preferred plain name.
|
|
34
|
+
* Idempotent when source baskets are empty.
|
|
35
|
+
*/
|
|
36
|
+
export declare function migrateLegacyP1SatBaskets(wallet: WalletInterface, opts?: MoveBasketOptions): Promise<MigrateLegacyBasketsResult>;
|
|
37
|
+
//# sourceMappingURL=moveBasket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moveBasket.d.ts","sourceRoot":"","sources":["../../src/utils/moveBasket.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,UAAU,CAAA;AAG/C,MAAM,WAAW,iBAAiB;IACjC,mDAAmD;IACnD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,MAAM,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAClD;AAED;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CACtC,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,iBAAsB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAgG3B;AAED,MAAM,WAAW,0BAA0B;IAC1C,OAAO,EAAE,gBAAgB,EAAE,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;CAClB;AAED;;;GAGG;AACH,wBAAsB,yBAAyB,CAC9C,MAAM,EAAE,eAAe,EACvB,IAAI,GAAE,iBAAsB,GAC1B,OAAO,CAAC,0BAA0B,CAAC,CASrC"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { LEGACY_P1SAT_BASKET_MIGRATIONS } from '@1sat/types';
|
|
2
|
+
import { Beef } from '@bsv/sdk';
|
|
3
|
+
/**
|
|
4
|
+
* Re-file spendable outputs from one basket into another via
|
|
5
|
+
* `internalizeAction` basket insertion (merge updates `basketId` in place).
|
|
6
|
+
* Tags and customInstructions are preserved. No chain spend.
|
|
7
|
+
*
|
|
8
|
+
* Each outpoint is internalized with an AtomicBEEF for **its** tx — outputs
|
|
9
|
+
* from different txs cannot share one subject BEEF.
|
|
10
|
+
*/
|
|
11
|
+
export async function moveBasketOutputs(wallet, fromBasket, toBasket, opts = {}) {
|
|
12
|
+
const from = fromBasket.trim();
|
|
13
|
+
const to = toBasket.trim();
|
|
14
|
+
if (!from || !to)
|
|
15
|
+
throw new Error('moveBasket: from and to baskets required');
|
|
16
|
+
if (from === to) {
|
|
17
|
+
return { from, to, moved: 0, skipped: 0, outpoints: [], errors: [] };
|
|
18
|
+
}
|
|
19
|
+
const listed = await wallet.listOutputs({
|
|
20
|
+
basket: from,
|
|
21
|
+
include: 'entire transactions',
|
|
22
|
+
includeTags: true,
|
|
23
|
+
includeCustomInstructions: true,
|
|
24
|
+
limit: opts.limit ?? 1000,
|
|
25
|
+
offset: opts.offset ?? 0,
|
|
26
|
+
});
|
|
27
|
+
const beefBin = listed.BEEF;
|
|
28
|
+
if (!beefBin?.length && listed.outputs.length > 0) {
|
|
29
|
+
throw new Error(`moveBasket: listOutputs returned no BEEF for basket ${from}`);
|
|
30
|
+
}
|
|
31
|
+
const beef = beefBin?.length ? Beef.fromBinary(Array.from(beefBin)) : null;
|
|
32
|
+
const errors = [];
|
|
33
|
+
const outpoints = [];
|
|
34
|
+
let moved = 0;
|
|
35
|
+
let skipped = 0;
|
|
36
|
+
for (const o of listed.outputs) {
|
|
37
|
+
const outpoint = o.outpoint;
|
|
38
|
+
if (!outpoint?.includes('.')) {
|
|
39
|
+
skipped++;
|
|
40
|
+
errors.push({ outpoint: outpoint ?? '?', error: 'bad-outpoint' });
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
const [txid, voutStr] = outpoint.split('.');
|
|
44
|
+
const vout = Number(voutStr);
|
|
45
|
+
if (!txid || !Number.isFinite(vout)) {
|
|
46
|
+
skipped++;
|
|
47
|
+
errors.push({ outpoint, error: 'bad-vout' });
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
if (!beef) {
|
|
51
|
+
skipped++;
|
|
52
|
+
errors.push({ outpoint, error: 'no-beef' });
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
let atomic;
|
|
56
|
+
try {
|
|
57
|
+
if (!beef.findTxid(txid)) {
|
|
58
|
+
skipped++;
|
|
59
|
+
errors.push({ outpoint, error: `beef-missing-txid:${txid.slice(0, 12)}` });
|
|
60
|
+
continue;
|
|
61
|
+
}
|
|
62
|
+
atomic = Array.from(beef.toBinaryAtomic(txid));
|
|
63
|
+
}
|
|
64
|
+
catch (e) {
|
|
65
|
+
skipped++;
|
|
66
|
+
errors.push({
|
|
67
|
+
outpoint,
|
|
68
|
+
error: e instanceof Error ? e.message : 'atomic-beef-failed',
|
|
69
|
+
});
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
await wallet.internalizeAction({
|
|
74
|
+
tx: atomic,
|
|
75
|
+
outputs: [
|
|
76
|
+
{
|
|
77
|
+
outputIndex: vout,
|
|
78
|
+
protocol: 'basket insertion',
|
|
79
|
+
insertionRemittance: {
|
|
80
|
+
basket: to,
|
|
81
|
+
tags: o.tags ?? [],
|
|
82
|
+
customInstructions: o.customInstructions,
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
],
|
|
86
|
+
description: `move basket ${from} → ${to}`,
|
|
87
|
+
});
|
|
88
|
+
moved++;
|
|
89
|
+
outpoints.push(outpoint);
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
skipped++;
|
|
93
|
+
errors.push({
|
|
94
|
+
outpoint,
|
|
95
|
+
error: err instanceof Error ? err.message : String(err),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return { from, to, moved, skipped, outpoints, errors };
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Move every known legacy `p 1sat …` basket into its preferred plain name.
|
|
103
|
+
* Idempotent when source baskets are empty.
|
|
104
|
+
*/
|
|
105
|
+
export async function migrateLegacyP1SatBaskets(wallet, opts = {}) {
|
|
106
|
+
const results = [];
|
|
107
|
+
let totalMoved = 0;
|
|
108
|
+
for (const { from, to } of LEGACY_P1SAT_BASKET_MIGRATIONS) {
|
|
109
|
+
const r = await moveBasketOutputs(wallet, from, to, opts);
|
|
110
|
+
results.push(r);
|
|
111
|
+
totalMoved += r.moved;
|
|
112
|
+
}
|
|
113
|
+
return { results, totalMoved };
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=moveBasket.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moveBasket.js","sourceRoot":"","sources":["../../src/utils/moveBasket.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BRC-147 load-bearing remittance fields mirrored from filter tags
|
|
3
|
+
* (origin / content / app / collection). Outpoint values normalized to `_`.
|
|
4
|
+
*/
|
|
5
|
+
export declare function remittanceFromOrdinalTags(tags: string[] | undefined): {
|
|
6
|
+
origin?: string;
|
|
7
|
+
content?: string;
|
|
8
|
+
app?: string;
|
|
9
|
+
collection?: string;
|
|
10
|
+
};
|
|
11
|
+
/** Spend-derivation CI plus BRC-147 remittance dual-stamped from tags. */
|
|
12
|
+
export declare function buildOrdinalCustomInstructions(opts: {
|
|
13
|
+
protocolID: unknown;
|
|
14
|
+
keyID: string;
|
|
15
|
+
counterparty?: string;
|
|
16
|
+
tags?: string[];
|
|
17
|
+
name?: string;
|
|
18
|
+
/** Extra fields merged last (e.g. listing metadata). */
|
|
19
|
+
extra?: Record<string, unknown>;
|
|
20
|
+
}): string;
|
|
21
|
+
export type OrdinalRemittanceFields = {
|
|
22
|
+
origin?: string;
|
|
23
|
+
content?: string;
|
|
24
|
+
app?: string;
|
|
25
|
+
collection?: string;
|
|
26
|
+
name?: string;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Overwrite BRC-147 remittance fields on existing CI JSON.
|
|
30
|
+
* Keeps derivation and any other keys. Only sets fields present on `auth`.
|
|
31
|
+
*/
|
|
32
|
+
export declare function overwriteOrdinalCiFields(existingJson: string, auth: OrdinalRemittanceFields): string;
|
|
33
|
+
//# sourceMappingURL=ordinalRemittance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordinalRemittance.d.ts","sourceRoot":"","sources":["../../src/utils/ordinalRemittance.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAS,GACxB;IACF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;CACnB,CAwBA;AAED,0EAA0E;AAC1E,wBAAgB,8BAA8B,CAAC,IAAI,EAAE;IACpD,UAAU,EAAE,OAAO,CAAA;IACnB,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAC/B,GAAG,MAAM,CAYT;AAED,MAAM,MAAM,uBAAuB,GAAG;IACrC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,IAAI,CAAC,EAAE,MAAM,CAAA;CACb,CAAA;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACvC,YAAY,EAAE,MAAM,EACpB,IAAI,EAAE,uBAAuB,GAC3B,MAAM,CAWR"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { displayNameForCi, formatOrdinalOutpoint } from '@1sat/types';
|
|
2
|
+
/**
|
|
3
|
+
* BRC-147 load-bearing remittance fields mirrored from filter tags
|
|
4
|
+
* (origin / content / app / collection). Outpoint values normalized to `_`.
|
|
5
|
+
*/
|
|
6
|
+
export function remittanceFromOrdinalTags(tags) {
|
|
7
|
+
if (!tags?.length)
|
|
8
|
+
return {};
|
|
9
|
+
let origin;
|
|
10
|
+
let content;
|
|
11
|
+
let app;
|
|
12
|
+
let collection;
|
|
13
|
+
for (const t of tags) {
|
|
14
|
+
const n = t.trim();
|
|
15
|
+
if (n.startsWith('origin:') && !origin) {
|
|
16
|
+
origin = formatOrdinalOutpoint(n.slice(7));
|
|
17
|
+
}
|
|
18
|
+
else if (n.startsWith('content:') && !content) {
|
|
19
|
+
content = formatOrdinalOutpoint(n.slice(8));
|
|
20
|
+
}
|
|
21
|
+
else if (n.startsWith('app:') && !app) {
|
|
22
|
+
app = n.slice(4);
|
|
23
|
+
}
|
|
24
|
+
else if (n.startsWith('collection:') && !collection) {
|
|
25
|
+
collection = formatOrdinalOutpoint(n.slice(11));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return {
|
|
29
|
+
...(origin && { origin }),
|
|
30
|
+
...(content && { content }),
|
|
31
|
+
...(app && { app }),
|
|
32
|
+
...(collection && { collection }),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/** Spend-derivation CI plus BRC-147 remittance dual-stamped from tags. */
|
|
36
|
+
export function buildOrdinalCustomInstructions(opts) {
|
|
37
|
+
const name = displayNameForCi(opts.name);
|
|
38
|
+
return JSON.stringify({
|
|
39
|
+
protocolID: opts.protocolID,
|
|
40
|
+
keyID: opts.keyID,
|
|
41
|
+
...(opts.counterparty !== undefined && {
|
|
42
|
+
counterparty: opts.counterparty,
|
|
43
|
+
}),
|
|
44
|
+
...remittanceFromOrdinalTags(opts.tags),
|
|
45
|
+
...(name && { name }),
|
|
46
|
+
...opts.extra,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Overwrite BRC-147 remittance fields on existing CI JSON.
|
|
51
|
+
* Keeps derivation and any other keys. Only sets fields present on `auth`.
|
|
52
|
+
*/
|
|
53
|
+
export function overwriteOrdinalCiFields(existingJson, auth) {
|
|
54
|
+
const o = JSON.parse(existingJson);
|
|
55
|
+
if (auth.origin !== undefined)
|
|
56
|
+
o.origin = auth.origin;
|
|
57
|
+
if (auth.content !== undefined)
|
|
58
|
+
o.content = auth.content;
|
|
59
|
+
if (auth.app !== undefined)
|
|
60
|
+
o.app = auth.app;
|
|
61
|
+
if (auth.collection !== undefined)
|
|
62
|
+
o.collection = auth.collection;
|
|
63
|
+
if (auth.name !== undefined) {
|
|
64
|
+
const n = displayNameForCi(auth.name);
|
|
65
|
+
if (n)
|
|
66
|
+
o.name = n;
|
|
67
|
+
}
|
|
68
|
+
return JSON.stringify(o);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=ordinalRemittance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ordinalRemittance.js","sourceRoot":"","sources":["../../src/utils/ordinalRemittance.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { WalletOutput } from '@bsv/sdk';
|
|
2
2
|
/**
|
|
3
|
-
* Ordinal identity tags to file on a self-kept spend of `source
|
|
4
|
-
* Bare `origin`
|
|
5
|
-
*
|
|
3
|
+
* Ordinal identity tags to file on a self-kept spend of `source` (BRC-147).
|
|
4
|
+
* - Bare `origin` → `origin:<spent outpoint>` (underscore form)
|
|
5
|
+
* - Copy `origin:…` / `content:…` / `collection:…` / `type:…` / `app:…` / `creator:…`
|
|
6
|
+
* - Does not copy `name:` (display name lives in CI)
|
|
7
|
+
* - Does not include id:, listing markers, or domain flags
|
|
6
8
|
*/
|
|
7
9
|
export declare function ordinalSeedTags(source: WalletOutput): string[];
|
|
8
10
|
//# sourceMappingURL=ordinalSeedTags.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ordinalSeedTags.d.ts","sourceRoot":"","sources":["../../src/utils/ordinalSeedTags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ordinalSeedTags.d.ts","sourceRoot":"","sources":["../../src/utils/ordinalSeedTags.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,EAAE,CAoC9D"}
|
|
@@ -1,24 +1,51 @@
|
|
|
1
|
+
import { formatOrdinalOutpoint } from '@1sat/types';
|
|
1
2
|
/**
|
|
2
|
-
* Ordinal identity tags to file on a self-kept spend of `source
|
|
3
|
-
* Bare `origin`
|
|
4
|
-
*
|
|
3
|
+
* Ordinal identity tags to file on a self-kept spend of `source` (BRC-147).
|
|
4
|
+
* - Bare `origin` → `origin:<spent outpoint>` (underscore form)
|
|
5
|
+
* - Copy `origin:…` / `content:…` / `collection:…` / `type:…` / `app:…` / `creator:…`
|
|
6
|
+
* - Does not copy `name:` (display name lives in CI)
|
|
7
|
+
* - Does not include id:, listing markers, or domain flags
|
|
5
8
|
*/
|
|
6
9
|
export function ordinalSeedTags(source) {
|
|
7
10
|
const out = [];
|
|
8
11
|
for (const t of source.tags ?? []) {
|
|
9
12
|
if (t === 'origin') {
|
|
10
|
-
const promoted = `origin:${source.outpoint}`;
|
|
13
|
+
const promoted = `origin:${formatOrdinalOutpoint(source.outpoint)}`;
|
|
11
14
|
if (!out.includes(promoted))
|
|
12
15
|
out.push(promoted);
|
|
13
16
|
continue;
|
|
14
17
|
}
|
|
15
|
-
if (t.startsWith('origin:')
|
|
16
|
-
t.
|
|
17
|
-
|
|
18
|
+
if (t.startsWith('origin:')) {
|
|
19
|
+
const normalized = `origin:${formatOrdinalOutpoint(t.slice(7))}`;
|
|
20
|
+
if (!out.includes(normalized))
|
|
21
|
+
out.push(normalized);
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (t.startsWith('content:')) {
|
|
25
|
+
const normalized = `content:${formatOrdinalOutpoint(t.slice(8))}`;
|
|
26
|
+
if (!out.includes(normalized))
|
|
27
|
+
out.push(normalized);
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (t.startsWith('collection:')) {
|
|
31
|
+
const normalized = `collection:${formatOrdinalOutpoint(t.slice(11))}`;
|
|
32
|
+
if (!out.includes(normalized))
|
|
33
|
+
out.push(normalized);
|
|
34
|
+
continue;
|
|
35
|
+
}
|
|
36
|
+
if (t.startsWith('type:') || t.startsWith('app:') || t.startsWith('creator:')) {
|
|
18
37
|
if (!out.includes(t))
|
|
19
38
|
out.push(t);
|
|
20
39
|
}
|
|
21
40
|
}
|
|
41
|
+
// Drop hierarchical category-only type when a more specific type: exists
|
|
42
|
+
const types = out.filter((t) => t.startsWith('type:'));
|
|
43
|
+
if (types.length > 1) {
|
|
44
|
+
const full = types.filter((t) => t.includes('/'));
|
|
45
|
+
if (full.length > 0) {
|
|
46
|
+
return out.filter((t) => !t.startsWith('type:') || full.includes(t));
|
|
47
|
+
}
|
|
48
|
+
}
|
|
22
49
|
return out;
|
|
23
50
|
}
|
|
24
51
|
//# sourceMappingURL=ordinalSeedTags.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ordinalSeedTags.js","sourceRoot":"","sources":["../../src/utils/ordinalSeedTags.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ordinalSeedTags.js","sourceRoot":"","sources":["../../src/utils/ordinalSeedTags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAGnD;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,MAAoB;IACnD,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,UAAU,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAA;YACnE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;YAC/C,SAAQ;QACT,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,UAAU,GAAG,UAAU,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YAChE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACnD,SAAQ;QACT,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9B,MAAM,UAAU,GAAG,WAAW,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;YACjE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACnD,SAAQ;QACT,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,MAAM,UAAU,GAAG,cAAc,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;YACrE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YACnD,SAAQ;QACT,CAAC;QACD,IAAI,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/E,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAClC,CAAC;IACF,CAAC;IACD,yEAAyE;IACzE,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAA;IACtD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;QACjD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAA;QACrE,CAAC;IACF,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC"}
|
|
@@ -37,13 +37,10 @@ export interface ResolveDestinationOptions {
|
|
|
37
37
|
/** Prefix for the generated keyID — used for counterparty/self. */
|
|
38
38
|
keyIDPrefix: string;
|
|
39
39
|
/**
|
|
40
|
-
*
|
|
41
|
-
*
|
|
42
|
-
* before building outputs and stamp it on the args via
|
|
43
|
-
* `buildActionIdLabel`, so `createTrackedAction` reuses the same value.
|
|
44
|
-
* Falls back to a wall-clock value, which is not recoverable.
|
|
40
|
+
* Optional keyID suffix. When omitted, a random hex suffix is minted
|
|
41
|
+
* (`${keyIDPrefix}-${hex}`). Not tied to the action/tracking id.
|
|
45
42
|
*/
|
|
46
|
-
|
|
43
|
+
keyIDSuffix?: string;
|
|
47
44
|
}
|
|
48
45
|
/**
|
|
49
46
|
* Resolve a {@link Destination} into a locking script and (when applicable)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveDestination.d.ts","sourceRoot":"","sources":["../../src/utils/resolveDestination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EACN,aAAa,EAGb,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,+CAA+C;IAC/C,aAAa,EAAE,aAAa,CAAA;IAC5B;;;;;;;;;;;;;;;;OAgBG;IACH,kBAAkB,CAAC,EAAE;QACpB,UAAU,EAAE,cAAc,CAAA;QAC1B,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,CAAC,EAAE,kBAAkB,CAAA;QACjC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KACxB,CAAA;CACD;AAED,MAAM,WAAW,yBAAyB;IACzC,uEAAuE;IACvE,UAAU,EAAE,cAAc,CAAA;IAC1B,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAA;IACnB
|
|
1
|
+
{"version":3,"file":"resolveDestination.d.ts","sourceRoot":"","sources":["../../src/utils/resolveDestination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAC9C,OAAO,EACN,aAAa,EAGb,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAE7C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IACnC,+CAA+C;IAC/C,aAAa,EAAE,aAAa,CAAA;IAC5B;;;;;;;;;;;;;;;;OAgBG;IACH,kBAAkB,CAAC,EAAE;QACpB,UAAU,EAAE,cAAc,CAAA;QAC1B,KAAK,EAAE,MAAM,CAAA;QACb,YAAY,CAAC,EAAE,kBAAkB,CAAA;QACjC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAA;KACxB,CAAA;CACD;AAED,MAAM,WAAW,yBAAyB;IACzC,uEAAuE;IACvE,UAAU,EAAE,cAAc,CAAA;IAC1B,mEAAmE;IACnE,WAAW,EAAE,MAAM,CAAA;IACnB;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CACvC,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,WAAW,GAAG,SAAS,EACpC,IAAI,EAAE,yBAAyB,GAC7B,OAAO,CAAC,mBAAmB,CAAC,CAoE9B"}
|
|
@@ -49,7 +49,11 @@ export async function resolveDestination(ctx, destination, opts) {
|
|
|
49
49
|
// counterparty path — also covers the default (undefined → 'self').
|
|
50
50
|
const counterparty = destination?.counterparty ?? 'self';
|
|
51
51
|
const isSelf = counterparty === 'self';
|
|
52
|
-
const
|
|
52
|
+
const suffix = opts.keyIDSuffix ??
|
|
53
|
+
Array.from(crypto.getRandomValues(new Uint8Array(8)))
|
|
54
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
55
|
+
.join('');
|
|
56
|
+
const keyID = `${opts.keyIDPrefix}-${suffix}`;
|
|
53
57
|
const { publicKey } = await ctx.wallet.getPublicKey({
|
|
54
58
|
protocolID: opts.protocolID,
|
|
55
59
|
keyID,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveDestination.js","sourceRoot":"","sources":["../../src/utils/resolveDestination.ts"],"names":[],"mappings":"AACA,OAAO,EACN,aAAa,EACb,KAAK,EACL,SAAS,GAGT,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"resolveDestination.js","sourceRoot":"","sources":["../../src/utils/resolveDestination.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export interface OrdinalCustomInstructions {
|
|
|
10
10
|
protocolID: WalletProtocol;
|
|
11
11
|
keyID: string;
|
|
12
12
|
counterparty?: WalletCounterparty;
|
|
13
|
+
/** @deprecated ignored — script shape decides unlock */
|
|
13
14
|
template?: string;
|
|
14
15
|
name?: string;
|
|
15
16
|
}
|
|
@@ -18,8 +19,8 @@ export declare function parseOrdinalCustomInstructions(customInstructions: strin
|
|
|
18
19
|
};
|
|
19
20
|
export declare function unlockingScriptLengthForInstructions(customInstructions: string | undefined): number;
|
|
20
21
|
/**
|
|
21
|
-
* Unlock an ordinal input
|
|
22
|
-
*
|
|
22
|
+
* Unlock an ordinal input. Script shape decides PushDrop vs P2PKH;
|
|
23
|
+
* CI supplies key material only.
|
|
23
24
|
*/
|
|
24
25
|
export declare function signOrdinalInput(ctx: OneSatContext, tx: Transaction, inputIndex: number, customInstructions: string): Promise<string | {
|
|
25
26
|
error: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signOrdinalInput.d.ts","sourceRoot":"","sources":["../../src/utils/signOrdinalInput.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"signOrdinalInput.d.ts","sourceRoot":"","sources":["../../src/utils/signOrdinalInput.ts"],"names":[],"mappings":"AACA,OAAO,EAIN,KAAK,WAAW,EAGhB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,MAAM,UAAU,CAAA;AACjB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAG7C,8DAA8D;AAC9D,eAAO,MAAM,iBAAiB,aAAyB,CAAA;AAEvD,6DAA6D;AAC7D,eAAO,MAAM,sBAAsB,KAAK,CAAA;AAExC,8CAA8C;AAC9C,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAEtC,MAAM,WAAW,yBAAyB;IACzC,UAAU,EAAE,cAAc,CAAA;IAC1B,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,kBAAkB,CAAA;IACjC,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;CACb;AAED,wBAAgB,8BAA8B,CAC7C,kBAAkB,EAAE,MAAM,GACxB,yBAAyB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAM/C;AAED,wBAAgB,oCAAoC,CACnD,kBAAkB,EAAE,MAAM,GAAG,SAAS,GACpC,MAAM,CAKR;AAsED;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,WAAW,EACf,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,MAAM,GACxB,OAAO,CAAC,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAoCrC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { OPNS_PUSHDROP_TEMPLATE } from '@1sat/types';
|
|
2
|
-
import { Hash, Signature, TransactionSignature, UnlockingScript, } from '@bsv/sdk';
|
|
2
|
+
import { Hash, PushDrop, Signature, TransactionSignature, UnlockingScript, } from '@bsv/sdk';
|
|
3
3
|
import { signP2PKHInput } from './signP2PKH';
|
|
4
4
|
/** @deprecated use OPNS_PUSHDROP_TEMPLATE from @1sat/types */
|
|
5
5
|
export const PUSHDROP_TEMPLATE = OPNS_PUSHDROP_TEMPLATE;
|
|
@@ -16,14 +16,10 @@ export function parseOrdinalCustomInstructions(customInstructions) {
|
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
export function unlockingScriptLengthForInstructions(customInstructions) {
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
return P2PKH_UNLOCK_LENGTH;
|
|
24
|
-
return ci.template === OPNS_PUSHDROP_TEMPLATE
|
|
25
|
-
? PUSHDROP_UNLOCK_LENGTH
|
|
26
|
-
: P2PKH_UNLOCK_LENGTH;
|
|
19
|
+
// Default P2PKH; callers with known PushDrop should pass length explicitly.
|
|
20
|
+
// CI template is no longer authoritative.
|
|
21
|
+
void customInstructions;
|
|
22
|
+
return P2PKH_UNLOCK_LENGTH;
|
|
27
23
|
}
|
|
28
24
|
/**
|
|
29
25
|
* Unlock a PushDrop CHECKSIG input (OpNS published bind).
|
|
@@ -80,8 +76,8 @@ async function signPushDropInput(ctx, tx, inputIndex, protocolID, keyID, counter
|
|
|
80
76
|
]).toHex();
|
|
81
77
|
}
|
|
82
78
|
/**
|
|
83
|
-
* Unlock an ordinal input
|
|
84
|
-
*
|
|
79
|
+
* Unlock an ordinal input. Script shape decides PushDrop vs P2PKH;
|
|
80
|
+
* CI supplies key material only.
|
|
85
81
|
*/
|
|
86
82
|
export async function signOrdinalInput(ctx, tx, inputIndex, customInstructions) {
|
|
87
83
|
const ci = parseOrdinalCustomInstructions(customInstructions);
|
|
@@ -90,8 +86,17 @@ export async function signOrdinalInput(ctx, tx, inputIndex, customInstructions)
|
|
|
90
86
|
if (!ci.protocolID || !ci.keyID) {
|
|
91
87
|
return { error: 'missing-protocol-or-key-id' };
|
|
92
88
|
}
|
|
93
|
-
|
|
94
|
-
|
|
89
|
+
const txInput = tx.inputs[inputIndex];
|
|
90
|
+
const sourceLockingScript = txInput?.sourceTransaction?.outputs[txInput.sourceOutputIndex]
|
|
91
|
+
?.lockingScript;
|
|
92
|
+
if (sourceLockingScript) {
|
|
93
|
+
try {
|
|
94
|
+
PushDrop.decode(sourceLockingScript);
|
|
95
|
+
return signPushDropInput(ctx, tx, inputIndex, ci.protocolID, ci.keyID, ci.counterparty ?? 'anyone');
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
// not pushdrop
|
|
99
|
+
}
|
|
95
100
|
}
|
|
96
101
|
return signP2PKHInput(ctx, tx, inputIndex, ci.protocolID, ci.keyID, ci.counterparty ?? 'self');
|
|
97
102
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"signOrdinalInput.js","sourceRoot":"","sources":["../../src/utils/signOrdinalInput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EACN,IAAI,EACJ,SAAS,EAET,oBAAoB,EACpB,eAAe,GAGf,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAE5C,8DAA8D;AAC9D,MAAM,CAAC,MAAM,iBAAiB,GAAG,sBAAsB,CAAA;AAEvD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,CAAA;AAExC,8CAA8C;AAC9C,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;
|
|
1
|
+
{"version":3,"file":"signOrdinalInput.js","sourceRoot":"","sources":["../../src/utils/signOrdinalInput.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Authoritative BSV-21 CI stamp — shared by local apply and module embellish.
|
|
3
|
+
*
|
|
4
|
+
* For each output that already has CI and a BSV-21 locking script:
|
|
5
|
+
* - Start from caller CI (keep derivation / extras)
|
|
6
|
+
* - Overwrite load-bearing fields from script + spent-input carry
|
|
7
|
+
* - Preserve encryption state: plaintext in → plaintext out; ciphertext in →
|
|
8
|
+
* peel → merge → re-encrypt (WPM encrypts before module onRequest)
|
|
9
|
+
*/
|
|
10
|
+
import { type CreateActionArgs, type WalletInterface } from '@bsv/sdk';
|
|
11
|
+
/**
|
|
12
|
+
* Overwrite BSV-21 token fields on output CI from script + input carry.
|
|
13
|
+
* Call from {@link applyP1SatCreateAction} so local and module paths share it.
|
|
14
|
+
*/
|
|
15
|
+
export declare function stampBsv21OutputCustomInstructions(wallet: WalletInterface, args: CreateActionArgs): Promise<void>;
|
|
16
|
+
//# sourceMappingURL=stampBsv21OutputCi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stampBsv21OutputCi.d.ts","sourceRoot":"","sources":["../../src/utils/stampBsv21OutputCi.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACN,KAAK,gBAAgB,EAErB,KAAK,eAAe,EACpB,MAAM,UAAU,CAAA;AAwCjB;;;GAGG;AACH,wBAAsB,kCAAkC,CACvD,MAAM,EAAE,eAAe,EACvB,IAAI,EAAE,gBAAgB,GACpB,OAAO,CAAC,IAAI,CAAC,CA8Cf"}
|