@kaspacom/kcc20-tx-builder 0.6.1 → 0.6.3

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.
@@ -100,6 +100,8 @@ export declare function buildKcc20TransferTokenOperation(wallet: Kcc20ActionWall
100
100
  };
101
101
  export declare function buildKcc20NativeConsolidationOperation(wallet: Kcc20ActionWalletInfo, input: {
102
102
  token: Kcc20ActionTokenInfo;
103
+ /** From authenticated token readiness; construction rechecks every source script. */
104
+ tokenProfileId: string;
103
105
  activeUtxos: readonly Kcc20IndexedCovenantUtxo[];
104
106
  sourceOutpoints?: readonly string[];
105
107
  }, options?: Kcc20TokenOperationOptions): {
@@ -3,6 +3,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildKcc20MintTokenOperation = buildKcc20MintTokenOperation;
4
4
  exports.buildKcc20TransferTokenOperation = buildKcc20TransferTokenOperation;
5
5
  exports.buildKcc20NativeConsolidationOperation = buildKcc20NativeConsolidationOperation;
6
+ const token_profiles_js_1 = require("./token-profiles.js");
7
+ const token_profiles_generated_js_1 = require("./token-profiles.generated.js");
6
8
  const action_source_resolver_js_1 = require("./action-source-resolver.js");
7
9
  const token_amount_js_1 = require("./token-amount.js");
8
10
  const paid_mint_amount_js_1 = require("./paid-mint-amount.js");
@@ -173,8 +175,11 @@ function buildKcc20TransferTokenOperation(wallet, input, options = {}) {
173
175
  function buildKcc20NativeConsolidationOperation(wallet, input, options = {}) {
174
176
  const covenantId = requireHex32(input.token.covenantId, "covenantId");
175
177
  const owner = (0, token_amount_js_1.normalizeKcc20OwnerIdentifier)(wallet.kcc20Owner, "wallet owner");
178
+ const profile = (0, token_profiles_js_1.resolveAuthenticatedTokenProfile)({ manifest: token_profiles_generated_js_1.BUNDLED_TOKEN_PROFILES, sha256: token_profiles_generated_js_1.BUNDLED_TOKEN_PROFILE_DIGEST }, input.tokenProfileId);
179
+ if (profile.maxTokenInputs < 2 || !profile.operations.includes("transfer"))
180
+ throw new Error("token profile does not support consolidation");
176
181
  const compatible = (0, action_source_resolver_js_1.ownerNativeHolderUtxos)(input.activeUtxos, owner);
177
- const selected = (0, action_source_resolver_js_1.selectConsolidationBatch)(compatible, input.sourceOutpoints, 8);
182
+ const selected = (0, action_source_resolver_js_1.selectConsolidationBatch)(compatible, input.sourceOutpoints, profile.maxTokenInputs);
178
183
  if (selected.length < 2)
179
184
  throw new Error("at least two compatible KCC20 holder UTXOs are required for consolidation");
180
185
  const nativeIds = new Set(selected.map((utxo) => utxo.covenantId ?? covenantId));
@@ -219,7 +224,7 @@ function buildKcc20NativeConsolidationOperation(wallet, input, options = {}) {
219
224
  },
220
225
  ],
221
226
  warnings: [
222
- "Consolidation merges between two and eight wallet-owned holder UTXOs into one larger holder UTXO.",
227
+ `Consolidation merges between two and ${profile.maxTokenInputs} wallet-owned holder UTXOs into one larger holder UTXO.`,
223
228
  "Repeat consolidation when more compatible holder UTXOs remain.",
224
229
  ],
225
230
  }, options);
@@ -1 +1 @@
1
- {"version":3,"file":"token-operation.js","sourceRoot":"","sources":["../../src/token-operation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-operation.js","sourceRoot":"","sources":["../../src/token-operation.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAwErD,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,cAAc,CAAC,EAAE;QACf,mBAAmB,CAAC,IAAI,EAAE;YAAE,SAAS,EAAE,MAAM,EAAE,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACtE,CAAC;IACF,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,GAAG,CAAC;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yBAAyB,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IACjE,gFAAgF;IAChF,oBAAoB,CAAC,EAAE;QAAE,QAAQ,EAAE,oBAAoB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E;AAED,MAAM,WAAW,8BAA8B;IAC7C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,qCAAqC,CAAC,KAAK,EAAE;QAC3C,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC5C,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,6BAA6B,GACrC,sBAAsB,CAihaxB"}
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAwErD,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,gBAAgB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,cAAc,CAAC,EAAE;QACf,mBAAmB,CAAC,IAAI,EAAE;YAAE,SAAS,EAAE,MAAM,EAAE,CAAA;SAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACtE,CAAC;IACF,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,GAAG,CAAC;IAC5C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,yBAAyB,CAAC,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;IACjE,gFAAgF;IAChF,oBAAoB,CAAC,EAAE;QAAE,QAAQ,EAAE,oBAAoB,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CAC3E;AAED,MAAM,WAAW,8BAA8B;IAC7C,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxD,kBAAkB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrE,qCAAqC,CAAC,KAAK,EAAE;QAC3C,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,kBAAkB,EAAE,MAAM,CAAC;QAC3B,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;IAC5C,QAAQ,EAAE,oBAAoB,CAAC;CAChC;AAED,wBAAgB,4BAA4B,CAC1C,OAAO,EAAE,6BAA6B,GACrC,sBAAsB,CA0kaxB"}
package/dist/engine.js CHANGED
@@ -424,7 +424,7 @@ export function createKcc20PsktBuilderEngine(options) {
424
424
  }
425
425
  requireMatchingCovenantId(rootEntry, rootId, "active FeeTicket root UTXO");
426
426
  const rootOutputIndex = 0;
427
- const fundingEntry = selectFundingEntry(walletUtxos.entries, priorityFee + 10000n);
427
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, priorityFee + 10000n, [], request.params?.fundingOutpoint);
428
428
  const fundingInputIndex = 1;
429
429
  const fundingChangeOutputIndex = 1;
430
430
  const fundingChange = utxoAmountSompi(fundingEntry) - priorityFee;
@@ -616,7 +616,7 @@ export function createKcc20PsktBuilderEngine(options) {
616
616
  utilityInputSompi +
617
617
  10000n
618
618
  : priorityFee + 10000n;
619
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
619
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
620
620
  const fundingInputIndex = 2;
621
621
  const change = rootInputSompi +
622
622
  utilityInputSompi +
@@ -794,7 +794,7 @@ export function createKcc20PsktBuilderEngine(options) {
794
794
  return entry;
795
795
  });
796
796
  const outputs = entries.map((entry, index) => new TransactionOutput(utxoAmountSompi(entry), p2pkScriptPubKey(kw, bytesToHex(states[index].ownerIdentifier))));
797
- const fundingEntry = selectFundingEntry(walletUtxos.entries, priorityFee + 10000n);
797
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, priorityFee + 10000n, [], request.params?.fundingOutpoint);
798
798
  const fundingInputIndex = entries.length;
799
799
  const fundingChangeOutputIndex = outputs.length;
800
800
  const fundingChange = utxoAmountSompi(fundingEntry) - priorityFee;
@@ -944,7 +944,7 @@ export function createKcc20PsktBuilderEngine(options) {
944
944
  ownerIdentifier: hexToBytes(recipientOwner),
945
945
  }));
946
946
  const outputs = entries.map((entry, index) => new TransactionOutput(utxoAmountSompi(entry), payToScriptHashScript(buildKcc20FeeTicketScriptForState(artifactInfos[index].artifact.script, recipientStates[index])), new CovenantBinding(index, new Hash(ticketId))));
947
- const fundingEntry = selectFundingEntry(walletUtxos.entries, priorityFee + 10000n);
947
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, priorityFee + 10000n, [], request.params?.fundingOutpoint);
948
948
  const fundingInputIndex = entries.length;
949
949
  const fundingChangeOutputIndex = outputs.length;
950
950
  const fundingChange = utxoAmountSompi(fundingEntry) - priorityFee;
@@ -1746,7 +1746,7 @@ export function createKcc20PsktBuilderEngine(options) {
1746
1746
  evidence.address)
1747
1747
  throw new Error("token evidence script does not match RPC");
1748
1748
  const utxos = await getUtxosByAddresses(rpc, [walletAddress]);
1749
- const fundingEntry = selectFundingEntry(utxos.entries, deploySompi * 2n + priorityFee + 10000000n);
1749
+ const fundingEntry = selectFundingEntry(utxos.entries, deploySompi * 2n + priorityFee + 10000000n, [], request.params?.fundingOutpoint);
1750
1750
  const fundingChangeOutputIndex = 2;
1751
1751
  const change = utxoAmountSompi(fundingEntry) - deploySompi * 2n - priorityFee;
1752
1752
  if (change <= 10000n) {
@@ -2034,7 +2034,7 @@ export function createKcc20PsktBuilderEngine(options) {
2034
2034
  const requiredFunding = outputSompi + priorityFee > covenantInputSompi
2035
2035
  ? outputSompi + priorityFee - covenantInputSompi + 10000n
2036
2036
  : priorityFee + 10000n;
2037
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
2037
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
2038
2038
  const fundingInputIndex = 2;
2039
2039
  const change = covenantInputSompi +
2040
2040
  utxoAmountSompi(fundingEntry) -
@@ -2329,7 +2329,7 @@ export function createKcc20PsktBuilderEngine(options) {
2329
2329
  const requiredFunding = outputSompi + priorityFee > covenantInputSompi
2330
2330
  ? outputSompi + priorityFee - covenantInputSompi + 10000n
2331
2331
  : priorityFee + 10000n;
2332
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
2332
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
2333
2333
  const fundingInputIndex = 3;
2334
2334
  const change = covenantInputSompi +
2335
2335
  utxoAmountSompi(fundingEntry) -
@@ -2605,7 +2605,7 @@ export function createKcc20PsktBuilderEngine(options) {
2605
2605
  const requiredFunding = outputSompi + priorityFee > covenantInputSompi
2606
2606
  ? outputSompi + priorityFee - covenantInputSompi + 10000n
2607
2607
  : priorityFee + 10000n;
2608
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
2608
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
2609
2609
  const fundingInputIndex = 1;
2610
2610
  const change = covenantInputSompi +
2611
2611
  utxoAmountSompi(fundingEntry) -
@@ -2887,7 +2887,7 @@ export function createKcc20PsktBuilderEngine(options) {
2887
2887
  const requiredFunding = outputSompi + priorityFee > covenantInputSompi
2888
2888
  ? outputSompi + priorityFee - covenantInputSompi + 10000n
2889
2889
  : priorityFee + 10000n;
2890
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
2890
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
2891
2891
  const ticketInputIndex = ticketEntry ? 1 : -1;
2892
2892
  const fundingInputIndex = ticketEntry ? 2 : 1;
2893
2893
  const change = covenantInputSompi +
@@ -3244,7 +3244,7 @@ export function createKcc20PsktBuilderEngine(options) {
3244
3244
  const requiredFunding = outputSompi + priorityFee > covenantInputSompi
3245
3245
  ? outputSompi + priorityFee - covenantInputSompi + 10000n
3246
3246
  : priorityFee + 10000n;
3247
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
3247
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
3248
3248
  const ticketInputIndex = ticketEntry ? 2 : -1;
3249
3249
  const fundingInputIndex = ticketEntry ? 3 : 2;
3250
3250
  const change = covenantInputSompi +
@@ -3625,7 +3625,7 @@ export function createKcc20PsktBuilderEngine(options) {
3625
3625
  covenantInputSompi +
3626
3626
  MIN_FUNDING_CHANGE_SOMPI
3627
3627
  : priorityFee + MIN_FUNDING_CHANGE_SOMPI;
3628
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
3628
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
3629
3629
  const fundingInputIndex = resolvedLegs.length + (sharedTicketEntry ? 1 : 0);
3630
3630
  const change = covenantInputSompi +
3631
3631
  utxoAmountSompi(fundingEntry) -
@@ -4079,7 +4079,7 @@ export function createKcc20PsktBuilderEngine(options) {
4079
4079
  : priorityFee + 10000n;
4080
4080
  let fundingEntry;
4081
4081
  try {
4082
- fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
4082
+ fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
4083
4083
  }
4084
4084
  catch (error) {
4085
4085
  if (totalSellerFundedHolderTopUpSompi > 0n) {
@@ -4565,7 +4565,7 @@ export function createKcc20PsktBuilderEngine(options) {
4565
4565
  : priorityFee + 10000n;
4566
4566
  let fundingEntry;
4567
4567
  try {
4568
- fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
4568
+ fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
4569
4569
  }
4570
4570
  catch (error) {
4571
4571
  if (totalSellerFundedHolderTopUpSompi > 0n) {
@@ -4888,7 +4888,7 @@ export function createKcc20PsktBuilderEngine(options) {
4888
4888
  new TransactionOutput(refundSompi, payToAddressScript(walletAddress)),
4889
4889
  ];
4890
4890
  const requiredFunding = priorityFee + MIN_FUNDING_CHANGE_SOMPI;
4891
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
4891
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
4892
4892
  const fundingInputIndex = entries.length;
4893
4893
  const change = utxoAmountSompi(fundingEntry) - priorityFee;
4894
4894
  let fundingChangeOutputIndex = -1;
@@ -5264,7 +5264,7 @@ export function createKcc20PsktBuilderEngine(options) {
5264
5264
  const requiredFunding = outputSompi + transactionFeeReserve > covenantInputSompi
5265
5265
  ? outputSompi + transactionFeeReserve - covenantInputSompi + 10000n
5266
5266
  : transactionFeeReserve + 10000n;
5267
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
5267
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
5268
5268
  const ticketInputIndex = ticketEntry ? 2 : -1;
5269
5269
  const fundingInputIndex = ticketEntry ? 3 : 2;
5270
5270
  const change = covenantInputSompi +
@@ -5543,7 +5543,7 @@ export function createKcc20PsktBuilderEngine(options) {
5543
5543
  const requiredFunding = outputSompi + priorityFee > covenantInputSompi
5544
5544
  ? outputSompi + priorityFee - covenantInputSompi + 10000n
5545
5545
  : priorityFee + 10000n;
5546
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
5546
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
5547
5547
  const fundingInputIndex = 1;
5548
5548
  const change = covenantInputSompi +
5549
5549
  utxoAmountSompi(fundingEntry) -
@@ -5786,7 +5786,7 @@ export function createKcc20PsktBuilderEngine(options) {
5786
5786
  const requiredFunding = outputSompi + priorityFee > minterInputSompi
5787
5787
  ? outputSompi + priorityFee - minterInputSompi + 10000n
5788
5788
  : priorityFee + 10000n;
5789
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
5789
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
5790
5790
  const fundingInputIndex = 1;
5791
5791
  const change = minterInputSompi +
5792
5792
  BigInt(fundingEntry.amount) -
@@ -6061,7 +6061,7 @@ export function createKcc20PsktBuilderEngine(options) {
6061
6061
  minterInputSompi: BigInt(minterEntry.amount),
6062
6062
  };
6063
6063
  });
6064
- const fundingEntry = selectFundingEntry(walletUtxos.entries, priorityFee + 10000n);
6064
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, priorityFee + 10000n, [], request.params?.fundingOutpoint);
6065
6065
  const fundingInputIndex = resolvedLanes.length;
6066
6066
  const fundingChange = BigInt(fundingEntry.amount) - priorityFee;
6067
6067
  const outputs = resolvedLanes.map((lane, laneIndex) => tokenOutput(kaspaWasm, lane.resolvedArtifact.artifact, lane.outputState, lane.minterInputSompi, lane.spendCovenantId, laneIndex));
@@ -6203,8 +6203,16 @@ export function createKcc20PsktBuilderEngine(options) {
6203
6203
  const holderUtxos = Array.isArray(params.activeHolderUtxos)
6204
6204
  ? params.activeHolderUtxos
6205
6205
  : [];
6206
- if (holderUtxos.length < 2 || holderUtxos.length > 3) {
6207
- throw new Error("between two and three KCC20 holder UTXOs are required");
6206
+ if (holderUtxos.length < 2) {
6207
+ throw new Error("at least two KCC20 holder UTXOs are required");
6208
+ }
6209
+ const maximumProfileInputs = Math.max(0, ...tokenProfiles.profiles.map((p) => p.maxTokenInputs));
6210
+ if (holderUtxos.length > maximumProfileInputs) {
6211
+ throw new Error(`consolidation exceeds the token profile input bound (${maximumProfileInputs})`);
6212
+ }
6213
+ const sourceOutpoints = holderUtxos.map((u) => `${requireHex32(u.txidHex, "holder txid")}:${parseVout(u.vout, "holder vout")}`);
6214
+ if (new Set(sourceOutpoints).size !== holderUtxos.length) {
6215
+ throw new Error("consolidation requires distinct holder outpoints");
6208
6216
  }
6209
6217
  const covenantId = requireHex32(params.activeHolderNativeCovenantId || params.covenantId, "canonical covenant id");
6210
6218
  const appCanonicalTokenId = requireHex32(params.appCanonicalCovenantId || params.covenantId || covenantId, "app canonical token id");
@@ -6228,7 +6236,7 @@ export function createKcc20PsktBuilderEngine(options) {
6228
6236
  }
6229
6237
  const profile = resolvedArtifacts[0].profile;
6230
6238
  if (holderUtxos.length > profile.maxTokenInputs) {
6231
- throw new Error("consolidation exceeds the token profile input bound");
6239
+ throw new Error(`consolidation exceeds the token profile input bound (${profile.maxTokenInputs})`);
6232
6240
  }
6233
6241
  const artifact = resolvedArtifacts[0].artifact;
6234
6242
  for (const peerState of states.slice(1)) {
@@ -6244,7 +6252,8 @@ export function createKcc20PsktBuilderEngine(options) {
6244
6252
  const txid = requireHex32(utxo.txidHex, `holder ${index} txid`);
6245
6253
  const vout = parseVout(utxo.vout, `holder ${index} vout`);
6246
6254
  const address = requireKaspaAddress(utxo.address);
6247
- const script = buildNativeKcc20ScriptForState(artifact.script, states[index]);
6255
+ // Resolution already authenticated this profile's complete state layout.
6256
+ const script = resolvedArtifacts[index].script;
6248
6257
  assertScriptAddress(kw, script, address, network, `holder ${index} UTXO address`);
6249
6258
  return { txid, vout, address, script };
6250
6259
  });
@@ -6287,7 +6296,7 @@ export function createKcc20PsktBuilderEngine(options) {
6287
6296
  new TransactionOutput(refundSompi, payToAddressScript(walletAddress)),
6288
6297
  ];
6289
6298
  const requiredFunding = priorityFee + MIN_FUNDING_CHANGE_SOMPI;
6290
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
6299
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
6291
6300
  const fundingInputIndex = entries.length;
6292
6301
  const change = utxoAmountSompi(fundingEntry) - priorityFee;
6293
6302
  let fundingChangeOutputIndex = -1;
@@ -6428,7 +6437,7 @@ export function createKcc20PsktBuilderEngine(options) {
6428
6437
  tokenOutput(kw, artifact, inputState, tokenOutputSompi, spendCovenantId, 0),
6429
6438
  ];
6430
6439
  const requiredFunding = priorityFee + 10000n;
6431
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
6440
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
6432
6441
  const fundingInputIndex = 1;
6433
6442
  const change = utxoAmountSompi(fundingEntry) - priorityFee;
6434
6443
  let fundingChangeOutputIndex = -1;
@@ -6619,7 +6628,7 @@ export function createKcc20PsktBuilderEngine(options) {
6619
6628
  const requiredFunding = outputSompi + priorityFee > tokenInputSompi
6620
6629
  ? outputSompi + priorityFee - tokenInputSompi + 10000n
6621
6630
  : priorityFee + 10000n;
6622
- const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding);
6631
+ const fundingEntry = selectFundingEntry(walletUtxos.entries, requiredFunding, [], request.params?.fundingOutpoint);
6623
6632
  const fundingInputIndex = 1;
6624
6633
  const change = tokenInputSompi +
6625
6634
  utxoAmountSompi(fundingEntry) -
@@ -7014,7 +7023,7 @@ export function createKcc20PsktBuilderEngine(options) {
7014
7023
  await rpc.connect();
7015
7024
  try {
7016
7025
  const utxos = await getUtxosByAddresses(rpc, [walletAddress]);
7017
- const fundingEntry = selectFundingEntry(utxos.entries, deploySompi + priorityFee + 10000000n);
7026
+ const fundingEntry = selectFundingEntry(utxos.entries, deploySompi + priorityFee + 10000000n, [], request.params?.fundingOutpoint);
7018
7027
  const created = await createTransactions({
7019
7028
  entries: [fundingEntry],
7020
7029
  outputs: [{ address: contractAddress, amount: deploySompi }],