@bitgo-beta/sdk-coin-stx 1.1.1-beta.234 → 1.1.1-beta.2340

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 (140) hide show
  1. package/dist/src/index.d.ts +2 -0
  2. package/dist/src/index.d.ts.map +1 -1
  3. package/dist/src/index.js +25 -9
  4. package/dist/src/lib/abstractContractBuilder.d.ts +18 -2
  5. package/dist/src/lib/abstractContractBuilder.d.ts.map +1 -1
  6. package/dist/src/lib/abstractContractBuilder.js +43 -10
  7. package/dist/src/lib/btcAddressUtils.d.ts +30 -0
  8. package/dist/src/lib/btcAddressUtils.d.ts.map +1 -0
  9. package/dist/src/lib/btcAddressUtils.js +134 -0
  10. package/dist/src/lib/constants.d.ts +16 -2
  11. package/dist/src/lib/constants.d.ts.map +1 -1
  12. package/dist/src/lib/constants.js +30 -5
  13. package/dist/src/lib/contractBuilder.d.ts +14 -0
  14. package/dist/src/lib/contractBuilder.d.ts.map +1 -1
  15. package/dist/src/lib/contractBuilder.js +72 -16
  16. package/dist/src/lib/fungibleTokenTransferBuilder.d.ts +62 -0
  17. package/dist/src/lib/fungibleTokenTransferBuilder.d.ts.map +1 -0
  18. package/dist/src/lib/fungibleTokenTransferBuilder.js +136 -0
  19. package/dist/src/lib/iface.d.ts +61 -0
  20. package/dist/src/lib/iface.d.ts.map +1 -1
  21. package/dist/src/lib/iface.js +1 -1
  22. package/dist/src/lib/index.d.ts +6 -0
  23. package/dist/src/lib/index.d.ts.map +1 -1
  24. package/dist/src/lib/index.js +29 -9
  25. package/dist/src/lib/keyPair.d.ts +1 -1
  26. package/dist/src/lib/keyPair.d.ts.map +1 -1
  27. package/dist/src/lib/keyPair.js +24 -21
  28. package/dist/src/lib/network.d.ts +16 -0
  29. package/dist/src/lib/network.d.ts.map +1 -0
  30. package/dist/src/lib/network.js +30 -0
  31. package/dist/src/lib/postConditions.d.ts +31 -0
  32. package/dist/src/lib/postConditions.d.ts.map +1 -0
  33. package/dist/src/lib/postConditions.js +61 -0
  34. package/dist/src/lib/pox5Builder.d.ts +78 -0
  35. package/dist/src/lib/pox5Builder.d.ts.map +1 -0
  36. package/dist/src/lib/pox5Builder.js +148 -0
  37. package/dist/src/lib/sbtcWithdrawBuilder.d.ts +38 -0
  38. package/dist/src/lib/sbtcWithdrawBuilder.d.ts.map +1 -0
  39. package/dist/src/lib/sbtcWithdrawBuilder.js +152 -0
  40. package/dist/src/lib/sendmanyBuilder.d.ts +1 -1
  41. package/dist/src/lib/sendmanyBuilder.d.ts.map +1 -1
  42. package/dist/src/lib/sendmanyBuilder.js +14 -12
  43. package/dist/src/lib/transaction.d.ts +3 -3
  44. package/dist/src/lib/transaction.d.ts.map +1 -1
  45. package/dist/src/lib/transaction.js +47 -29
  46. package/dist/src/lib/transactionBuilder.d.ts +0 -1
  47. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  48. package/dist/src/lib/transactionBuilder.js +31 -22
  49. package/dist/src/lib/transactionBuilderFactory.d.ts +6 -0
  50. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  51. package/dist/src/lib/transactionBuilderFactory.js +23 -2
  52. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  53. package/dist/src/lib/transferBuilder.js +7 -8
  54. package/dist/src/lib/utils.d.ts +47 -5
  55. package/dist/src/lib/utils.d.ts.map +1 -1
  56. package/dist/src/lib/utils.js +220 -70
  57. package/dist/src/register.d.ts.map +1 -1
  58. package/dist/src/register.js +7 -1
  59. package/dist/src/sip10Token.d.ts +22 -0
  60. package/dist/src/sip10Token.d.ts.map +1 -0
  61. package/dist/src/sip10Token.js +130 -0
  62. package/dist/src/stx.d.ts +154 -2
  63. package/dist/src/stx.d.ts.map +1 -1
  64. package/dist/src/stx.js +489 -11
  65. package/dist/src/tstx.js +1 -1
  66. package/dist/src/tstxsignet.d.ts +20 -0
  67. package/dist/src/tstxsignet.d.ts.map +1 -0
  68. package/dist/src/tstxsignet.js +36 -0
  69. package/dist/test/fixtures.d.ts +104 -0
  70. package/dist/test/fixtures.d.ts.map +1 -0
  71. package/dist/test/fixtures.js +134 -0
  72. package/dist/test/unit/btcAddressUtils.d.ts +2 -0
  73. package/dist/test/unit/btcAddressUtils.d.ts.map +1 -0
  74. package/dist/test/unit/btcAddressUtils.js +135 -0
  75. package/dist/test/unit/keyPair.d.ts +2 -0
  76. package/dist/test/unit/keyPair.d.ts.map +1 -0
  77. package/dist/test/unit/keyPair.js +149 -0
  78. package/dist/test/unit/network.d.ts +2 -0
  79. package/dist/test/unit/network.d.ts.map +1 -0
  80. package/dist/test/unit/network.js +50 -0
  81. package/dist/test/unit/postConditions.d.ts +2 -0
  82. package/dist/test/unit/postConditions.d.ts.map +1 -0
  83. package/dist/test/unit/postConditions.js +56 -0
  84. package/dist/test/unit/register.d.ts +2 -0
  85. package/dist/test/unit/register.d.ts.map +1 -0
  86. package/dist/test/unit/register.js +94 -0
  87. package/dist/test/unit/registerForBondRealArgs.d.ts +2 -0
  88. package/dist/test/unit/registerForBondRealArgs.d.ts.map +1 -0
  89. package/dist/test/unit/registerForBondRealArgs.js +22 -0
  90. package/dist/test/unit/resources.d.ts +99 -0
  91. package/dist/test/unit/resources.d.ts.map +1 -0
  92. package/dist/test/unit/resources.js +147 -0
  93. package/dist/test/unit/sip10Token.d.ts +2 -0
  94. package/dist/test/unit/sip10Token.d.ts.map +1 -0
  95. package/dist/test/unit/sip10Token.js +420 -0
  96. package/dist/test/unit/stx.d.ts +2 -0
  97. package/dist/test/unit/stx.d.ts.map +1 -0
  98. package/dist/test/unit/stx.js +731 -0
  99. package/dist/test/unit/stxNodeErrors.d.ts +2 -0
  100. package/dist/test/unit/stxNodeErrors.d.ts.map +1 -0
  101. package/dist/test/unit/stxNodeErrors.js +118 -0
  102. package/dist/test/unit/transaction.d.ts +2 -0
  103. package/dist/test/unit/transaction.d.ts.map +1 -0
  104. package/dist/test/unit/transaction.js +106 -0
  105. package/dist/test/unit/transactionBuilder/builderValidators.d.ts +2 -0
  106. package/dist/test/unit/transactionBuilder/builderValidators.d.ts.map +1 -0
  107. package/dist/test/unit/transactionBuilder/builderValidators.js +119 -0
  108. package/dist/test/unit/transactionBuilder/contractBuilder.d.ts +2 -0
  109. package/dist/test/unit/transactionBuilder/contractBuilder.d.ts.map +1 -0
  110. package/dist/test/unit/transactionBuilder/contractBuilder.js +497 -0
  111. package/dist/test/unit/transactionBuilder/fungibleTokenTransferBuilder.d.ts +2 -0
  112. package/dist/test/unit/transactionBuilder/fungibleTokenTransferBuilder.d.ts.map +1 -0
  113. package/dist/test/unit/transactionBuilder/fungibleTokenTransferBuilder.js +274 -0
  114. package/dist/test/unit/transactionBuilder/pox5Builder.d.ts +2 -0
  115. package/dist/test/unit/transactionBuilder/pox5Builder.d.ts.map +1 -0
  116. package/dist/test/unit/transactionBuilder/pox5Builder.js +513 -0
  117. package/dist/test/unit/transactionBuilder/sbtcWithdrawBuilder.d.ts +2 -0
  118. package/dist/test/unit/transactionBuilder/sbtcWithdrawBuilder.d.ts.map +1 -0
  119. package/dist/test/unit/transactionBuilder/sbtcWithdrawBuilder.js +373 -0
  120. package/dist/test/unit/transactionBuilder/sendmanyBuilder.d.ts +2 -0
  121. package/dist/test/unit/transactionBuilder/sendmanyBuilder.d.ts.map +1 -0
  122. package/dist/test/unit/transactionBuilder/sendmanyBuilder.js +163 -0
  123. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
  124. package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
  125. package/dist/test/unit/transactionBuilder/transferBuilder.js +413 -0
  126. package/dist/test/unit/transactionBuilderFactory.d.ts +2 -0
  127. package/dist/test/unit/transactionBuilderFactory.d.ts.map +1 -0
  128. package/dist/test/unit/transactionBuilderFactory.js +63 -0
  129. package/dist/test/unit/tstxsignet.d.ts +2 -0
  130. package/dist/test/unit/tstxsignet.d.ts.map +1 -0
  131. package/dist/test/unit/tstxsignet.js +71 -0
  132. package/dist/test/unit/util.d.ts +2 -0
  133. package/dist/test/unit/util.d.ts.map +1 -0
  134. package/dist/test/unit/util.js +434 -0
  135. package/dist/tsconfig.tsbuildinfo +1 -0
  136. package/package.json +18 -14
  137. package/.eslintignore +0 -5
  138. package/.mocharc.yml +0 -8
  139. package/CHANGELOG.md +0 -127
  140. package/LICENSE +0 -191
@@ -1,6 +1,8 @@
1
1
  export * as StxLib from './lib';
2
2
  export * from './stx';
3
3
  export * from './tstx';
4
+ export * from './tstxsignet';
4
5
  export * from './types';
5
6
  export * from './register';
7
+ export * from './sip10Token';
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,OAAO,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,OAAO,CAAC;AAChC,cAAc,OAAO,CAAC;AACtB,cAAc,QAAQ,CAAC;AACvB,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,7 +1,11 @@
1
1
  "use strict";
2
2
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
3
  if (k2 === undefined) k2 = k;
4
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
5
9
  }) : (function(o, m, k, k2) {
6
10
  if (k2 === undefined) k2 = k;
7
11
  o[k2] = m[k];
@@ -11,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
11
15
  }) : function(o, v) {
12
16
  o["default"] = v;
13
17
  });
14
- var __importStar = (this && this.__importStar) || function (mod) {
15
- if (mod && mod.__esModule) return mod;
16
- var result = {};
17
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
- __setModuleDefault(result, mod);
19
- return result;
20
- };
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
21
35
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
22
36
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
23
37
  };
@@ -26,6 +40,8 @@ exports.StxLib = void 0;
26
40
  exports.StxLib = __importStar(require("./lib"));
27
41
  __exportStar(require("./stx"), exports);
28
42
  __exportStar(require("./tstx"), exports);
43
+ __exportStar(require("./tstxsignet"), exports);
29
44
  __exportStar(require("./types"), exports);
30
45
  __exportStar(require("./register"), exports);
31
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGdEQUFnQztBQUNoQyx3Q0FBc0I7QUFDdEIseUNBQXVCO0FBQ3ZCLDBDQUF3QjtBQUN4Qiw2Q0FBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBhcyBTdHhMaWIgZnJvbSAnLi9saWInO1xuZXhwb3J0ICogZnJvbSAnLi9zdHgnO1xuZXhwb3J0ICogZnJvbSAnLi90c3R4JztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlcic7XG4iXX0=
46
+ __exportStar(require("./sip10Token"), exports);
47
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQWdDO0FBQ2hDLHdDQUFzQjtBQUN0Qix5Q0FBdUI7QUFDdkIsK0NBQTZCO0FBQzdCLDBDQUF3QjtBQUN4Qiw2Q0FBMkI7QUFDM0IsK0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogYXMgU3R4TGliIGZyb20gJy4vbGliJztcbmV4cG9ydCAqIGZyb20gJy4vc3R4JztcbmV4cG9ydCAqIGZyb20gJy4vdHN0eCc7XG5leHBvcnQgKiBmcm9tICcuL3RzdHhzaWduZXQnO1xuZXhwb3J0ICogZnJvbSAnLi90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3JlZ2lzdGVyJztcbmV4cG9ydCAqIGZyb20gJy4vc2lwMTBUb2tlbic7XG4iXX0=
@@ -1,5 +1,5 @@
1
1
  import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
2
- import { ClarityValue, PostCondition, PostConditionMode } from '@stacks/transactions';
2
+ import { ClarityValue, PostCondition, PostConditionMode, PostConditionWire } from '@stacks/transactions';
3
3
  import { Transaction } from './transaction';
4
4
  import { TransactionBuilder } from './transactionBuilder';
5
5
  export declare abstract class AbstractContractBuilder extends TransactionBuilder {
@@ -8,10 +8,26 @@ export declare abstract class AbstractContractBuilder extends TransactionBuilder
8
8
  protected _contractName: string;
9
9
  protected _functionName: string;
10
10
  protected _postConditionMode?: PostConditionMode;
11
- protected _postConditions?: PostCondition[];
11
+ protected _postConditions?: (PostCondition | PostConditionWire | string)[];
12
12
  protected _functionArgs: ClarityValue[];
13
13
  constructor(_coinConfig: Readonly<CoinConfig>);
14
14
  initBuilder(tx: Transaction): void;
15
+ /**
16
+ * Set the post-condition mode (`Allow` / `Deny`) for this contract call.
17
+ *
18
+ * @obligation callers building a contract call that moves assets MUST set a mode AND matching
19
+ * post-conditions, or leave this unset and let the caller attach explicit post-conditions —
20
+ * consequence: an unset mode defaults to `Deny` in `@stacks/transactions`, so any asset movement
21
+ * not covered by a post-condition aborts the tx on-chain
22
+ * @returns {AbstractContractBuilder} this builder
23
+ */
24
+ postConditionMode(mode: PostConditionMode): this;
25
+ /**
26
+ * Set the post-conditions for this contract call.
27
+ *
28
+ * @returns {AbstractContractBuilder} this builder
29
+ */
30
+ postConditions(postConditions: PostCondition[]): this;
15
31
  /** @inheritdoc */
16
32
  protected buildImplementation(): Promise<Transaction>;
17
33
  private buildContractCallOptions;
@@ -1 +1 @@
1
- {"version":3,"file":"abstractContractBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/abstractContractBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EACL,YAAY,EAIZ,aAAa,EACb,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,8BAAsB,uBAAwB,SAAQ,kBAAkB;IACtE,OAAO,CAAC,QAAQ,CAAoE;IACpF,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACjD,SAAS,CAAC,eAAe,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5C,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC;gBAE5B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAgBlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAO3D,OAAO,CAAC,wBAAwB;CA4BjC"}
1
+ {"version":3,"file":"abstractContractBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/abstractContractBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAEL,YAAY,EAKZ,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EAGlB,MAAM,sBAAsB,CAAC;AAO9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,8BAAsB,uBAAwB,SAAQ,kBAAkB;IACtE,OAAO,CAAC,QAAQ,CAAoE;IACpF,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC;IACnC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC;IAChC,SAAS,CAAC,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;IACjD,SAAS,CAAC,eAAe,CAAC,EAAE,CAAC,aAAa,GAAG,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC;IAC3E,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,CAAC;gBAE5B,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IA2BlC;;;;;;;;OAQG;IACH,iBAAiB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI;IAKhD;;;;OAIG;IACH,cAAc,CAAC,cAAc,EAAE,aAAa,EAAE,GAAG,IAAI;IAKrD,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;IAO3D,OAAO,CAAC,wBAAwB;CA4BjC"}
@@ -18,21 +18,54 @@ class AbstractContractBuilder extends transactionBuilder_1.TransactionBuilder {
18
18
  throw new sdk_core_1.InvalidTransactionError('payload must not be undefined');
19
19
  }
20
20
  if (txData.payload.payloadType === transactions_1.PayloadType.ContractCall) {
21
- this._contractAddress = txData.payload.contractAddress;
22
- this._contractName = txData.payload.contractName;
23
- this._functionName = txData.payload.functionName;
24
- this._functionArgs = txData.payload.functionArgs;
21
+ // Read the contract call fields from the deserialized payload. `toJson()` stringifies the
22
+ // clarity args (plain `{ type, data | list }` objects) for API consumers, and those are not
23
+ // valid ClarityValues under v7 — use the raw payload values so a rebuild stays byte-identical.
24
+ const payload = tx.stxTransaction.payload;
25
+ this._contractAddress = (0, transactions_1.addressToString)(payload.contractAddress);
26
+ this._contractName = payload.contractName.content;
27
+ this._functionName = payload.functionName.content;
28
+ this._functionArgs = payload.functionArgs;
29
+ // Restore post-conditions from the deserialized tx — `toJson()` does not carry them, so
30
+ // without this a re-build (e.g. the fee re-build via `factory.from(hex)`) would drop them and
31
+ // a `Deny`-mode contract call would abort on-chain (SIP-005 post-condition check).
32
+ if (tx.stxTransaction) {
33
+ this._postConditionMode = tx.stxTransaction.postConditionMode;
34
+ this._postConditions = tx.stxTransaction.postConditions.values;
35
+ }
25
36
  super.initBuilder(tx);
26
37
  }
27
38
  else {
28
39
  throw new sdk_core_1.BuildTransactionError('Transaction should be contract call');
29
40
  }
30
41
  }
42
+ /**
43
+ * Set the post-condition mode (`Allow` / `Deny`) for this contract call.
44
+ *
45
+ * @obligation callers building a contract call that moves assets MUST set a mode AND matching
46
+ * post-conditions, or leave this unset and let the caller attach explicit post-conditions —
47
+ * consequence: an unset mode defaults to `Deny` in `@stacks/transactions`, so any asset movement
48
+ * not covered by a post-condition aborts the tx on-chain
49
+ * @returns {AbstractContractBuilder} this builder
50
+ */
51
+ postConditionMode(mode) {
52
+ this._postConditionMode = mode;
53
+ return this;
54
+ }
55
+ /**
56
+ * Set the post-conditions for this contract call.
57
+ *
58
+ * @returns {AbstractContractBuilder} this builder
59
+ */
60
+ postConditions(postConditions) {
61
+ this._postConditions = postConditions;
62
+ return this;
63
+ }
31
64
  /** @inheritdoc */
32
65
  async buildImplementation() {
33
66
  this._options = this.buildContractCallOptions();
34
67
  this.transaction.setTransactionType(sdk_core_1.TransactionType.ContractCall);
35
- this.transaction.stxTransaction = await transactions_1.makeUnsignedContractCall(this._options);
68
+ this.transaction.stxTransaction = await (0, transactions_1.makeUnsignedContractCall)(this._options);
36
69
  return await super.buildImplementation();
37
70
  }
38
71
  buildContractCallOptions() {
@@ -41,12 +74,12 @@ class AbstractContractBuilder extends transactionBuilder_1.TransactionBuilder {
41
74
  contractName: this._contractName,
42
75
  functionName: this._functionName,
43
76
  functionArgs: this._functionArgs,
44
- postConditionMode: this._postConditionMode,
77
+ // v7 requires an explicit post-condition mode; v2 defaulted an unset mode to `Deny`.
78
+ postConditionMode: this._postConditionMode ?? transactions_1.PostConditionMode.Deny,
45
79
  postConditions: this._postConditions,
46
- anchorMode: this._anchorMode,
47
80
  network: this._network,
48
- fee: new bn_js_1.default(this._fee.fee),
49
- nonce: new bn_js_1.default(this._nonce),
81
+ fee: new bn_js_1.default(this._fee.fee).toString(),
82
+ nonce: new bn_js_1.default(this._nonce).toString(),
50
83
  };
51
84
  if (this._fromPubKeys.length === 1) {
52
85
  return {
@@ -67,4 +100,4 @@ class AbstractContractBuilder extends transactionBuilder_1.TransactionBuilder {
67
100
  }
68
101
  }
69
102
  exports.AbstractContractBuilder = AbstractContractBuilder;
70
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RDb250cmFjdEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2Fic3RyYWN0Q29udHJhY3RCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLGtEQUEyQjtBQUMzQix1REFTOEI7QUFDOUIsbURBSzhCO0FBRTlCLDZEQUEwRDtBQUUxRCxNQUFzQix1QkFBd0IsU0FBUSx1Q0FBa0I7SUFTdEUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQ2hDLE1BQU0sSUFBSSxrQ0FBdUIsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ3BFO1FBQ0QsSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLFdBQVcsS0FBSywwQkFBVyxDQUFDLFlBQVksRUFBRTtZQUMzRCxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUM7WUFDdkQsSUFBSSxDQUFDLGFBQWEsR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUNqRCxJQUFJLENBQUMsYUFBYSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1lBQ2pELElBQUksQ0FBQyxhQUFhLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUM7WUFDakQsS0FBSyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUMsQ0FBQztTQUN2QjthQUFNO1lBQ0wsTUFBTSxJQUFJLGdDQUFxQixDQUFDLHFDQUFxQyxDQUFDLENBQUM7U0FDeEU7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1IsS0FBSyxDQUFDLG1CQUFtQjtRQUNqQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO1FBQ2hELElBQUksQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsMEJBQWUsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNsRSxJQUFJLENBQUMsV0FBVyxDQUFDLGNBQWMsR0FBRyxNQUFNLHVDQUF3QixDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRixPQUFPLE1BQU0sS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVPLHdCQUF3QjtRQUM5QixNQUFNLFdBQVcsR0FBd0I7WUFDdkMsZUFBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7WUFDdEMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2hDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNoQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDaEMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtZQUMxQyxjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDcEMsVUFBVSxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzVCLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN0QixHQUFHLEVBQUUsSUFBSSxlQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7WUFDOUIsS0FBSyxFQUFFLElBQUksZUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7U0FDL0IsQ0FBQztRQUNGLElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1lBQ2xDLE9BQU87Z0JBQ0wsR0FBRyxXQUFXO2dCQUNkLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzthQUNoQyxDQUFDO1NBQ0g7YUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUN2QyxPQUFPO2dCQUNMLEdBQUcsV0FBVztnQkFDZCxVQUFVLEVBQUUsSUFBSSxDQUFDLFlBQVk7Z0JBQzdCLGFBQWEsRUFBRSxJQUFJLENBQUMsaUJBQWlCO2FBQ3RDLENBQUM7U0FDSDthQUFNO1lBQ0wsTUFBTSxJQUFJLHFDQUEwQixDQUFDLDhCQUE4QixDQUFDLENBQUM7U0FDdEU7SUFDSCxDQUFDO0NBQ0Y7QUFqRUQsMERBaUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IEJpZ051bSBmcm9tICdibi5qcyc7XG5pbXBvcnQge1xuICBDbGFyaXR5VmFsdWUsXG4gIENvbnRyYWN0Q2FsbE9wdGlvbnMsXG4gIG1ha2VVbnNpZ25lZENvbnRyYWN0Q2FsbCxcbiAgUGF5bG9hZFR5cGUsXG4gIFBvc3RDb25kaXRpb24sXG4gIFBvc3RDb25kaXRpb25Nb2RlLFxuICBVbnNpZ25lZENvbnRyYWN0Q2FsbE9wdGlvbnMsXG4gIFVuc2lnbmVkTXVsdGlTaWdDb250cmFjdENhbGxPcHRpb25zLFxufSBmcm9tICdAc3RhY2tzL3RyYW5zYWN0aW9ucyc7XG5pbXBvcnQge1xuICBCdWlsZFRyYW5zYWN0aW9uRXJyb3IsXG4gIEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yLFxuICBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcixcbiAgVHJhbnNhY3Rpb25UeXBlLFxufSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbiB9IGZyb20gJy4vdHJhbnNhY3Rpb24nO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi90cmFuc2FjdGlvbkJ1aWxkZXInO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RDb250cmFjdEJ1aWxkZXIgZXh0ZW5kcyBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICBwcml2YXRlIF9vcHRpb25zOiBVbnNpZ25lZENvbnRyYWN0Q2FsbE9wdGlvbnMgfCBVbnNpZ25lZE11bHRpU2lnQ29udHJhY3RDYWxsT3B0aW9ucztcbiAgcHJvdGVjdGVkIF9jb250cmFjdEFkZHJlc3M6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9jb250cmFjdE5hbWU6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9mdW5jdGlvbk5hbWU6IHN0cmluZztcbiAgcHJvdGVjdGVkIF9wb3N0Q29uZGl0aW9uTW9kZT86IFBvc3RDb25kaXRpb25Nb2RlO1xuICBwcm90ZWN0ZWQgX3Bvc3RDb25kaXRpb25zPzogUG9zdENvbmRpdGlvbltdO1xuICBwcm90ZWN0ZWQgX2Z1bmN0aW9uQXJnczogQ2xhcml0eVZhbHVlW107XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgdHhEYXRhID0gdHgudG9Kc29uKCk7XG4gICAgaWYgKHR4RGF0YS5wYXlsb2FkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcigncGF5bG9hZCBtdXN0IG5vdCBiZSB1bmRlZmluZWQnKTtcbiAgICB9XG4gICAgaWYgKHR4RGF0YS5wYXlsb2FkLnBheWxvYWRUeXBlID09PSBQYXlsb2FkVHlwZS5Db250cmFjdENhbGwpIHtcbiAgICAgIHRoaXMuX2NvbnRyYWN0QWRkcmVzcyA9IHR4RGF0YS5wYXlsb2FkLmNvbnRyYWN0QWRkcmVzcztcbiAgICAgIHRoaXMuX2NvbnRyYWN0TmFtZSA9IHR4RGF0YS5wYXlsb2FkLmNvbnRyYWN0TmFtZTtcbiAgICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IHR4RGF0YS5wYXlsb2FkLmZ1bmN0aW9uTmFtZTtcbiAgICAgIHRoaXMuX2Z1bmN0aW9uQXJncyA9IHR4RGF0YS5wYXlsb2FkLmZ1bmN0aW9uQXJncztcbiAgICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gc2hvdWxkIGJlIGNvbnRyYWN0IGNhbGwnKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcHJvdGVjdGVkIGFzeW5jIGJ1aWxkSW1wbGVtZW50YXRpb24oKTogUHJvbWlzZTxUcmFuc2FjdGlvbj4ge1xuICAgIHRoaXMuX29wdGlvbnMgPSB0aGlzLmJ1aWxkQ29udHJhY3RDYWxsT3B0aW9ucygpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc2V0VHJhbnNhY3Rpb25UeXBlKFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIHRoaXMudHJhbnNhY3Rpb24uc3R4VHJhbnNhY3Rpb24gPSBhd2FpdCBtYWtlVW5zaWduZWRDb250cmFjdENhbGwodGhpcy5fb3B0aW9ucyk7XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmJ1aWxkSW1wbGVtZW50YXRpb24oKTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb250cmFjdENhbGxPcHRpb25zKCk6IFVuc2lnbmVkQ29udHJhY3RDYWxsT3B0aW9ucyB8IFVuc2lnbmVkTXVsdGlTaWdDb250cmFjdENhbGxPcHRpb25zIHtcbiAgICBjb25zdCBkZWZhdWx0T3B0czogQ29udHJhY3RDYWxsT3B0aW9ucyA9IHtcbiAgICAgIGNvbnRyYWN0QWRkcmVzczogdGhpcy5fY29udHJhY3RBZGRyZXNzLFxuICAgICAgY29udHJhY3ROYW1lOiB0aGlzLl9jb250cmFjdE5hbWUsXG4gICAgICBmdW5jdGlvbk5hbWU6IHRoaXMuX2Z1bmN0aW9uTmFtZSxcbiAgICAgIGZ1bmN0aW9uQXJnczogdGhpcy5fZnVuY3Rpb25BcmdzLFxuICAgICAgcG9zdENvbmRpdGlvbk1vZGU6IHRoaXMuX3Bvc3RDb25kaXRpb25Nb2RlLFxuICAgICAgcG9zdENvbmRpdGlvbnM6IHRoaXMuX3Bvc3RDb25kaXRpb25zLFxuICAgICAgYW5jaG9yTW9kZTogdGhpcy5fYW5jaG9yTW9kZSxcbiAgICAgIG5ldHdvcms6IHRoaXMuX25ldHdvcmssXG4gICAgICBmZWU6IG5ldyBCaWdOdW0odGhpcy5fZmVlLmZlZSksXG4gICAgICBub25jZTogbmV3IEJpZ051bSh0aGlzLl9ub25jZSksXG4gICAgfTtcbiAgICBpZiAodGhpcy5fZnJvbVB1YktleXMubGVuZ3RoID09PSAxKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5kZWZhdWx0T3B0cyxcbiAgICAgICAgcHVibGljS2V5OiB0aGlzLl9mcm9tUHViS2V5c1swXSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0aGlzLl9mcm9tUHViS2V5cy5sZW5ndGggPiAxKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5kZWZhdWx0T3B0cyxcbiAgICAgICAgcHVibGljS2V5czogdGhpcy5fZnJvbVB1YktleXMsXG4gICAgICAgIG51bVNpZ25hdHVyZXM6IHRoaXMuX251bWJlclNpZ25hdHVyZXMsXG4gICAgICB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IoJ3N1cHBseSBhdCBsZWFzdCAxIHB1YmxpYyBrZXknKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
103
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWJzdHJhY3RDb250cmFjdEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2Fic3RyYWN0Q29udHJhY3RCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLGtEQUEyQjtBQUMzQix1REFZOEI7QUFDOUIsbURBSzhCO0FBRTlCLDZEQUEwRDtBQUUxRCxNQUFzQix1QkFBd0IsU0FBUSx1Q0FBa0I7SUFTdEUsWUFBWSxXQUFpQztRQUMzQyxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVELFdBQVcsQ0FBQyxFQUFlO1FBQ3pCLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMzQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEtBQUssU0FBUyxFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLGtDQUF1QixDQUFDLCtCQUErQixDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEtBQUssMEJBQVcsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUM1RCwwRkFBMEY7WUFDMUYsNEZBQTRGO1lBQzVGLCtGQUErRjtZQUMvRixNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQThCLENBQUM7WUFDakUsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUEsOEJBQWUsRUFBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDakUsSUFBSSxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztZQUNsRCxJQUFJLENBQUMsYUFBYSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDO1lBQ2xELElBQUksQ0FBQyxhQUFhLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztZQUMxQyx3RkFBd0Y7WUFDeEYsOEZBQThGO1lBQzlGLG1GQUFtRjtZQUNuRixJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsaUJBQWlCLENBQUM7Z0JBQzlELElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDLGNBQWMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDO1lBQ2pFLENBQUM7WUFDRCxLQUFLLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3hCLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLGdDQUFxQixDQUFDLHFDQUFxQyxDQUFDLENBQUM7UUFDekUsQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILGlCQUFpQixDQUFDLElBQXVCO1FBQ3ZDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILGNBQWMsQ0FBQyxjQUErQjtRQUM1QyxJQUFJLENBQUMsZUFBZSxHQUFHLGNBQWMsQ0FBQztRQUN0QyxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDUixLQUFLLENBQUMsbUJBQW1CO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQywwQkFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2xFLElBQUksQ0FBQyxXQUFXLENBQUMsY0FBYyxHQUFHLE1BQU0sSUFBQSx1Q0FBd0IsRUFBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEYsT0FBTyxNQUFNLEtBQUssQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzNDLENBQUM7SUFFTyx3QkFBd0I7UUFDOUIsTUFBTSxXQUFXLEdBQXdCO1lBQ3ZDLGVBQWUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO1lBQ3RDLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtZQUNoQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWE7WUFDaEMsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhO1lBQ2hDLHFGQUFxRjtZQUNyRixpQkFBaUIsRUFBRSxJQUFJLENBQUMsa0JBQWtCLElBQUksZ0NBQWlCLENBQUMsSUFBSTtZQUNwRSxjQUFjLEVBQUUsSUFBSSxDQUFDLGVBQWU7WUFDcEMsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3RCLEdBQUcsRUFBRSxJQUFJLGVBQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUN6QyxLQUFLLEVBQUUsSUFBSSxlQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRTtTQUMxQyxDQUFDO1FBQ0YsSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxPQUFPO2dCQUNMLEdBQUcsV0FBVztnQkFDZCxTQUFTLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUM7YUFDaEMsQ0FBQztRQUNKLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3hDLE9BQU87Z0JBQ0wsR0FBRyxXQUFXO2dCQUNkLFVBQVUsRUFBRSxJQUFJLENBQUMsWUFBWTtnQkFDN0IsYUFBYSxFQUFFLElBQUksQ0FBQyxpQkFBaUI7YUFDdEMsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxJQUFJLHFDQUEwQixDQUFDLDhCQUE4QixDQUFDLENBQUM7UUFDdkUsQ0FBQztJQUNILENBQUM7Q0FDRjtBQXBHRCwwREFvR0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlQ29pbiBhcyBDb2luQ29uZmlnIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgQmlnTnVtIGZyb20gJ2JuLmpzJztcbmltcG9ydCB7XG4gIGFkZHJlc3NUb1N0cmluZyxcbiAgQ2xhcml0eVZhbHVlLFxuICBDb250cmFjdENhbGxPcHRpb25zLFxuICBDb250cmFjdENhbGxQYXlsb2FkLFxuICBtYWtlVW5zaWduZWRDb250cmFjdENhbGwsXG4gIFBheWxvYWRUeXBlLFxuICBQb3N0Q29uZGl0aW9uLFxuICBQb3N0Q29uZGl0aW9uTW9kZSxcbiAgUG9zdENvbmRpdGlvbldpcmUsXG4gIFVuc2lnbmVkQ29udHJhY3RDYWxsT3B0aW9ucyxcbiAgVW5zaWduZWRNdWx0aVNpZ0NvbnRyYWN0Q2FsbE9wdGlvbnMsXG59IGZyb20gJ0BzdGFja3MvdHJhbnNhY3Rpb25zJztcbmltcG9ydCB7XG4gIEJ1aWxkVHJhbnNhY3Rpb25FcnJvcixcbiAgSW52YWxpZFBhcmFtZXRlclZhbHVlRXJyb3IsXG4gIEludmFsaWRUcmFuc2FjdGlvbkVycm9yLFxuICBUcmFuc2FjdGlvblR5cGUsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IFRyYW5zYWN0aW9uIH0gZnJvbSAnLi90cmFuc2FjdGlvbic7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL3RyYW5zYWN0aW9uQnVpbGRlcic7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdENvbnRyYWN0QnVpbGRlciBleHRlbmRzIFRyYW5zYWN0aW9uQnVpbGRlciB7XG4gIHByaXZhdGUgX29wdGlvbnM6IFVuc2lnbmVkQ29udHJhY3RDYWxsT3B0aW9ucyB8IFVuc2lnbmVkTXVsdGlTaWdDb250cmFjdENhbGxPcHRpb25zO1xuICBwcm90ZWN0ZWQgX2NvbnRyYWN0QWRkcmVzczogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2NvbnRyYWN0TmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX2Z1bmN0aW9uTmFtZTogc3RyaW5nO1xuICBwcm90ZWN0ZWQgX3Bvc3RDb25kaXRpb25Nb2RlPzogUG9zdENvbmRpdGlvbk1vZGU7XG4gIHByb3RlY3RlZCBfcG9zdENvbmRpdGlvbnM/OiAoUG9zdENvbmRpdGlvbiB8IFBvc3RDb25kaXRpb25XaXJlIHwgc3RyaW5nKVtdO1xuICBwcm90ZWN0ZWQgX2Z1bmN0aW9uQXJnczogQ2xhcml0eVZhbHVlW107XG5cbiAgY29uc3RydWN0b3IoX2NvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgc3VwZXIoX2NvaW5Db25maWcpO1xuICB9XG5cbiAgaW5pdEJ1aWxkZXIodHg6IFRyYW5zYWN0aW9uKTogdm9pZCB7XG4gICAgY29uc3QgdHhEYXRhID0gdHgudG9Kc29uKCk7XG4gICAgaWYgKHR4RGF0YS5wYXlsb2FkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkVHJhbnNhY3Rpb25FcnJvcigncGF5bG9hZCBtdXN0IG5vdCBiZSB1bmRlZmluZWQnKTtcbiAgICB9XG4gICAgaWYgKHR4RGF0YS5wYXlsb2FkLnBheWxvYWRUeXBlID09PSBQYXlsb2FkVHlwZS5Db250cmFjdENhbGwpIHtcbiAgICAgIC8vIFJlYWQgdGhlIGNvbnRyYWN0IGNhbGwgZmllbGRzIGZyb20gdGhlIGRlc2VyaWFsaXplZCBwYXlsb2FkLiBgdG9Kc29uKClgIHN0cmluZ2lmaWVzIHRoZVxuICAgICAgLy8gY2xhcml0eSBhcmdzIChwbGFpbiBgeyB0eXBlLCBkYXRhIHwgbGlzdCB9YCBvYmplY3RzKSBmb3IgQVBJIGNvbnN1bWVycywgYW5kIHRob3NlIGFyZSBub3RcbiAgICAgIC8vIHZhbGlkIENsYXJpdHlWYWx1ZXMgdW5kZXIgdjcg4oCUIHVzZSB0aGUgcmF3IHBheWxvYWQgdmFsdWVzIHNvIGEgcmVidWlsZCBzdGF5cyBieXRlLWlkZW50aWNhbC5cbiAgICAgIGNvbnN0IHBheWxvYWQgPSB0eC5zdHhUcmFuc2FjdGlvbi5wYXlsb2FkIGFzIENvbnRyYWN0Q2FsbFBheWxvYWQ7XG4gICAgICB0aGlzLl9jb250cmFjdEFkZHJlc3MgPSBhZGRyZXNzVG9TdHJpbmcocGF5bG9hZC5jb250cmFjdEFkZHJlc3MpO1xuICAgICAgdGhpcy5fY29udHJhY3ROYW1lID0gcGF5bG9hZC5jb250cmFjdE5hbWUuY29udGVudDtcbiAgICAgIHRoaXMuX2Z1bmN0aW9uTmFtZSA9IHBheWxvYWQuZnVuY3Rpb25OYW1lLmNvbnRlbnQ7XG4gICAgICB0aGlzLl9mdW5jdGlvbkFyZ3MgPSBwYXlsb2FkLmZ1bmN0aW9uQXJncztcbiAgICAgIC8vIFJlc3RvcmUgcG9zdC1jb25kaXRpb25zIGZyb20gdGhlIGRlc2VyaWFsaXplZCB0eCDigJQgYHRvSnNvbigpYCBkb2VzIG5vdCBjYXJyeSB0aGVtLCBzb1xuICAgICAgLy8gd2l0aG91dCB0aGlzIGEgcmUtYnVpbGQgKGUuZy4gdGhlIGZlZSByZS1idWlsZCB2aWEgYGZhY3RvcnkuZnJvbShoZXgpYCkgd291bGQgZHJvcCB0aGVtIGFuZFxuICAgICAgLy8gYSBgRGVueWAtbW9kZSBjb250cmFjdCBjYWxsIHdvdWxkIGFib3J0IG9uLWNoYWluIChTSVAtMDA1IHBvc3QtY29uZGl0aW9uIGNoZWNrKS5cbiAgICAgIGlmICh0eC5zdHhUcmFuc2FjdGlvbikge1xuICAgICAgICB0aGlzLl9wb3N0Q29uZGl0aW9uTW9kZSA9IHR4LnN0eFRyYW5zYWN0aW9uLnBvc3RDb25kaXRpb25Nb2RlO1xuICAgICAgICB0aGlzLl9wb3N0Q29uZGl0aW9ucyA9IHR4LnN0eFRyYW5zYWN0aW9uLnBvc3RDb25kaXRpb25zLnZhbHVlcztcbiAgICAgIH1cbiAgICAgIHN1cGVyLmluaXRCdWlsZGVyKHR4KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVHJhbnNhY3Rpb24gc2hvdWxkIGJlIGNvbnRyYWN0IGNhbGwnKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHRoZSBwb3N0LWNvbmRpdGlvbiBtb2RlIChgQWxsb3dgIC8gYERlbnlgKSBmb3IgdGhpcyBjb250cmFjdCBjYWxsLlxuICAgKlxuICAgKiBAb2JsaWdhdGlvbiBjYWxsZXJzIGJ1aWxkaW5nIGEgY29udHJhY3QgY2FsbCB0aGF0IG1vdmVzIGFzc2V0cyBNVVNUIHNldCBhIG1vZGUgQU5EIG1hdGNoaW5nXG4gICAqICAgcG9zdC1jb25kaXRpb25zLCBvciBsZWF2ZSB0aGlzIHVuc2V0IGFuZCBsZXQgdGhlIGNhbGxlciBhdHRhY2ggZXhwbGljaXQgcG9zdC1jb25kaXRpb25zIOKAlFxuICAgKiAgIGNvbnNlcXVlbmNlOiBhbiB1bnNldCBtb2RlIGRlZmF1bHRzIHRvIGBEZW55YCBpbiBgQHN0YWNrcy90cmFuc2FjdGlvbnNgLCBzbyBhbnkgYXNzZXQgbW92ZW1lbnRcbiAgICogICBub3QgY292ZXJlZCBieSBhIHBvc3QtY29uZGl0aW9uIGFib3J0cyB0aGUgdHggb24tY2hhaW5cbiAgICogQHJldHVybnMge0Fic3RyYWN0Q29udHJhY3RCdWlsZGVyfSB0aGlzIGJ1aWxkZXJcbiAgICovXG4gIHBvc3RDb25kaXRpb25Nb2RlKG1vZGU6IFBvc3RDb25kaXRpb25Nb2RlKTogdGhpcyB7XG4gICAgdGhpcy5fcG9zdENvbmRpdGlvbk1vZGUgPSBtb2RlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFNldCB0aGUgcG9zdC1jb25kaXRpb25zIGZvciB0aGlzIGNvbnRyYWN0IGNhbGwuXG4gICAqXG4gICAqIEByZXR1cm5zIHtBYnN0cmFjdENvbnRyYWN0QnVpbGRlcn0gdGhpcyBidWlsZGVyXG4gICAqL1xuICBwb3N0Q29uZGl0aW9ucyhwb3N0Q29uZGl0aW9uczogUG9zdENvbmRpdGlvbltdKTogdGhpcyB7XG4gICAgdGhpcy5fcG9zdENvbmRpdGlvbnMgPSBwb3N0Q29uZGl0aW9ucztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBwcm90ZWN0ZWQgYXN5bmMgYnVpbGRJbXBsZW1lbnRhdGlvbigpOiBQcm9taXNlPFRyYW5zYWN0aW9uPiB7XG4gICAgdGhpcy5fb3B0aW9ucyA9IHRoaXMuYnVpbGRDb250cmFjdENhbGxPcHRpb25zKCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zZXRUcmFuc2FjdGlvblR5cGUoVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgdGhpcy50cmFuc2FjdGlvbi5zdHhUcmFuc2FjdGlvbiA9IGF3YWl0IG1ha2VVbnNpZ25lZENvbnRyYWN0Q2FsbCh0aGlzLl9vcHRpb25zKTtcbiAgICByZXR1cm4gYXdhaXQgc3VwZXIuYnVpbGRJbXBsZW1lbnRhdGlvbigpO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZENvbnRyYWN0Q2FsbE9wdGlvbnMoKTogVW5zaWduZWRDb250cmFjdENhbGxPcHRpb25zIHwgVW5zaWduZWRNdWx0aVNpZ0NvbnRyYWN0Q2FsbE9wdGlvbnMge1xuICAgIGNvbnN0IGRlZmF1bHRPcHRzOiBDb250cmFjdENhbGxPcHRpb25zID0ge1xuICAgICAgY29udHJhY3RBZGRyZXNzOiB0aGlzLl9jb250cmFjdEFkZHJlc3MsXG4gICAgICBjb250cmFjdE5hbWU6IHRoaXMuX2NvbnRyYWN0TmFtZSxcbiAgICAgIGZ1bmN0aW9uTmFtZTogdGhpcy5fZnVuY3Rpb25OYW1lLFxuICAgICAgZnVuY3Rpb25BcmdzOiB0aGlzLl9mdW5jdGlvbkFyZ3MsXG4gICAgICAvLyB2NyByZXF1aXJlcyBhbiBleHBsaWNpdCBwb3N0LWNvbmRpdGlvbiBtb2RlOyB2MiBkZWZhdWx0ZWQgYW4gdW5zZXQgbW9kZSB0byBgRGVueWAuXG4gICAgICBwb3N0Q29uZGl0aW9uTW9kZTogdGhpcy5fcG9zdENvbmRpdGlvbk1vZGUgPz8gUG9zdENvbmRpdGlvbk1vZGUuRGVueSxcbiAgICAgIHBvc3RDb25kaXRpb25zOiB0aGlzLl9wb3N0Q29uZGl0aW9ucyxcbiAgICAgIG5ldHdvcms6IHRoaXMuX25ldHdvcmssXG4gICAgICBmZWU6IG5ldyBCaWdOdW0odGhpcy5fZmVlLmZlZSkudG9TdHJpbmcoKSxcbiAgICAgIG5vbmNlOiBuZXcgQmlnTnVtKHRoaXMuX25vbmNlKS50b1N0cmluZygpLFxuICAgIH07XG4gICAgaWYgKHRoaXMuX2Zyb21QdWJLZXlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGVmYXVsdE9wdHMsXG4gICAgICAgIHB1YmxpY0tleTogdGhpcy5fZnJvbVB1YktleXNbMF0sXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAodGhpcy5fZnJvbVB1YktleXMubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4uZGVmYXVsdE9wdHMsXG4gICAgICAgIHB1YmxpY0tleXM6IHRoaXMuX2Zyb21QdWJLZXlzLFxuICAgICAgICBudW1TaWduYXR1cmVzOiB0aGlzLl9udW1iZXJTaWduYXR1cmVzLFxuICAgICAgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRQYXJhbWV0ZXJWYWx1ZUVycm9yKCdzdXBwbHkgYXQgbGVhc3QgMSBwdWJsaWMga2V5Jyk7XG4gICAgfVxuICB9XG59XG4iXX0=
@@ -0,0 +1,30 @@
1
+ /**
2
+ * sBTC address version bytes as defined by the sBTC withdrawal contract.
3
+ */
4
+ export declare enum SbtcAddressVersion {
5
+ P2PKH = 0,
6
+ P2SH = 1,
7
+ P2WPKH = 4,
8
+ P2WSH = 5,
9
+ P2TR = 6
10
+ }
11
+ interface DecodedBtcAddress {
12
+ version: SbtcAddressVersion;
13
+ hashBytes: Buffer;
14
+ }
15
+ /**
16
+ * Decode a Bitcoin address into an sBTC version byte and hash bytes.
17
+ *
18
+ * @param {string} address - A Bitcoin address (P2PKH, P2SH, P2WPKH, P2WSH, or P2TR)
19
+ * @returns {DecodedBtcAddress} The sBTC version and raw hash bytes
20
+ */
21
+ export declare function decodeBtcAddress(address: string): DecodedBtcAddress;
22
+ /**
23
+ * Check whether a string is a valid Bitcoin address decodable for sBTC withdrawals.
24
+ *
25
+ * @param {string} address - The address to validate
26
+ * @returns {boolean} true if the address can be decoded
27
+ */
28
+ export declare function isValidBtcAddress(address: string): boolean;
29
+ export {};
30
+ //# sourceMappingURL=btcAddressUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"btcAddressUtils.d.ts","sourceRoot":"","sources":["../../../src/lib/btcAddressUtils.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,oBAAY,kBAAkB;IAC5B,KAAK,IAAO;IACZ,IAAI,IAAO;IACX,MAAM,IAAO;IACb,KAAK,IAAO;IACZ,IAAI,IAAO;CACZ;AAED,UAAU,iBAAiB;IACzB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CA4DnE;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAO1D"}
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SbtcAddressVersion = void 0;
37
+ exports.decodeBtcAddress = decodeBtcAddress;
38
+ exports.isValidBtcAddress = isValidBtcAddress;
39
+ const bs58check = __importStar(require("bs58check"));
40
+ const bech32_1 = require("bech32");
41
+ /**
42
+ * sBTC address version bytes as defined by the sBTC withdrawal contract.
43
+ */
44
+ var SbtcAddressVersion;
45
+ (function (SbtcAddressVersion) {
46
+ SbtcAddressVersion[SbtcAddressVersion["P2PKH"] = 0] = "P2PKH";
47
+ SbtcAddressVersion[SbtcAddressVersion["P2SH"] = 1] = "P2SH";
48
+ SbtcAddressVersion[SbtcAddressVersion["P2WPKH"] = 4] = "P2WPKH";
49
+ SbtcAddressVersion[SbtcAddressVersion["P2WSH"] = 5] = "P2WSH";
50
+ SbtcAddressVersion[SbtcAddressVersion["P2TR"] = 6] = "P2TR";
51
+ })(SbtcAddressVersion || (exports.SbtcAddressVersion = SbtcAddressVersion = {}));
52
+ const BASE58_MAINNET_P2PKH = 0x00;
53
+ const BASE58_MAINNET_P2SH = 0x05;
54
+ const BASE58_TESTNET_P2PKH = 0x6f;
55
+ const BASE58_TESTNET_P2SH = 0xc4;
56
+ /**
57
+ * Decode a Bitcoin address into an sBTC version byte and hash bytes.
58
+ *
59
+ * @param {string} address - A Bitcoin address (P2PKH, P2SH, P2WPKH, P2WSH, or P2TR)
60
+ * @returns {DecodedBtcAddress} The sBTC version and raw hash bytes
61
+ */
62
+ function decodeBtcAddress(address) {
63
+ // Try base58check first (P2PKH / P2SH)
64
+ try {
65
+ const decoded = bs58check.decode(address);
66
+ const versionByte = decoded[0];
67
+ const hash = decoded.slice(1);
68
+ if (hash.length !== 20) {
69
+ throw new Error(`Invalid base58check hash length: ${hash.length}`);
70
+ }
71
+ switch (versionByte) {
72
+ case BASE58_MAINNET_P2PKH:
73
+ case BASE58_TESTNET_P2PKH:
74
+ return { version: SbtcAddressVersion.P2PKH, hashBytes: Buffer.from(hash) };
75
+ case BASE58_MAINNET_P2SH:
76
+ case BASE58_TESTNET_P2SH:
77
+ return { version: SbtcAddressVersion.P2SH, hashBytes: Buffer.from(hash) };
78
+ default:
79
+ throw new Error(`Unknown base58check version byte: 0x${versionByte.toString(16)}`);
80
+ }
81
+ }
82
+ catch (e) {
83
+ // Not base58check, try bech32/bech32m below
84
+ }
85
+ // Try bech32 (P2WPKH / P2WSH) and bech32m (P2TR)
86
+ let decoded;
87
+ let isBech32m = false;
88
+ try {
89
+ decoded = bech32_1.bech32.decode(address);
90
+ }
91
+ catch {
92
+ try {
93
+ decoded = bech32_1.bech32m.decode(address);
94
+ isBech32m = true;
95
+ }
96
+ catch {
97
+ throw new Error(`Unable to decode Bitcoin address: ${address}`);
98
+ }
99
+ }
100
+ const witnessVersion = decoded.words[0];
101
+ const data = Buffer.from(bech32_1.bech32.fromWords(decoded.words.slice(1)));
102
+ if (witnessVersion === 0 && !isBech32m) {
103
+ if (data.length === 20) {
104
+ return { version: SbtcAddressVersion.P2WPKH, hashBytes: data };
105
+ }
106
+ else if (data.length === 32) {
107
+ return { version: SbtcAddressVersion.P2WSH, hashBytes: data };
108
+ }
109
+ throw new Error(`Invalid witness v0 program length: ${data.length}`);
110
+ }
111
+ if (witnessVersion === 1 && isBech32m) {
112
+ if (data.length === 32) {
113
+ return { version: SbtcAddressVersion.P2TR, hashBytes: data };
114
+ }
115
+ throw new Error(`Invalid witness v1 program length: ${data.length}`);
116
+ }
117
+ throw new Error(`Unsupported witness version ${witnessVersion} for address: ${address}`);
118
+ }
119
+ /**
120
+ * Check whether a string is a valid Bitcoin address decodable for sBTC withdrawals.
121
+ *
122
+ * @param {string} address - The address to validate
123
+ * @returns {boolean} true if the address can be decoded
124
+ */
125
+ function isValidBtcAddress(address) {
126
+ try {
127
+ decodeBtcAddress(address);
128
+ return true;
129
+ }
130
+ catch {
131
+ return false;
132
+ }
133
+ }
134
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnRjQWRkcmVzc1V0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9idGNBZGRyZXNzVXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBOEJBLDRDQTREQztBQVFELDhDQU9DO0FBekdELHFEQUF1QztBQUN2QyxtQ0FBeUM7QUFFekM7O0dBRUc7QUFDSCxJQUFZLGtCQU1YO0FBTkQsV0FBWSxrQkFBa0I7SUFDNUIsNkRBQVksQ0FBQTtJQUNaLDJEQUFXLENBQUE7SUFDWCwrREFBYSxDQUFBO0lBQ2IsNkRBQVksQ0FBQTtJQUNaLDJEQUFXLENBQUE7QUFDYixDQUFDLEVBTlcsa0JBQWtCLGtDQUFsQixrQkFBa0IsUUFNN0I7QUFPRCxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQztBQUNsQyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQztBQUNqQyxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQztBQUNsQyxNQUFNLG1CQUFtQixHQUFHLElBQUksQ0FBQztBQUVqQzs7Ozs7R0FLRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLE9BQWU7SUFDOUMsdUNBQXVDO0lBQ3ZDLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLFNBQVMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUMsTUFBTSxXQUFXLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFOUIsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ3ZCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3JFLENBQUM7UUFFRCxRQUFRLFdBQVcsRUFBRSxDQUFDO1lBQ3BCLEtBQUssb0JBQW9CLENBQUM7WUFDMUIsS0FBSyxvQkFBb0I7Z0JBQ3ZCLE9BQU8sRUFBRSxPQUFPLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxFQUFFLFNBQVMsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDN0UsS0FBSyxtQkFBbUIsQ0FBQztZQUN6QixLQUFLLG1CQUFtQjtnQkFDdEIsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM1RTtnQkFDRSxNQUFNLElBQUksS0FBSyxDQUFDLHVDQUF1QyxXQUFXLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN2RixDQUFDO0lBQ0gsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCw0Q0FBNEM7SUFDOUMsQ0FBQztJQUVELGlEQUFpRDtJQUNqRCxJQUFJLE9BQTRDLENBQUM7SUFDakQsSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRXRCLElBQUksQ0FBQztRQUNILE9BQU8sR0FBRyxlQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFBQyxNQUFNLENBQUM7UUFDUCxJQUFJLENBQUM7WUFDSCxPQUFPLEdBQUcsZ0JBQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDbEMsU0FBUyxHQUFHLElBQUksQ0FBQztRQUNuQixDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQ0FBcUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNsRSxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDeEMsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxlQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVuRSxJQUFJLGNBQWMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztRQUN2QyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDdkIsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ2pFLENBQUM7YUFBTSxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssRUFBRSxFQUFFLENBQUM7WUFDOUIsT0FBTyxFQUFFLE9BQU8sRUFBRSxrQkFBa0IsQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDO1FBQ2hFLENBQUM7UUFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsSUFBSSxjQUFjLEtBQUssQ0FBQyxJQUFJLFNBQVMsRUFBRSxDQUFDO1FBQ3RDLElBQUksSUFBSSxDQUFDLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUN2QixPQUFPLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDL0QsQ0FBQztRQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZFLENBQUM7SUFFRCxNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixjQUFjLGlCQUFpQixPQUFPLEVBQUUsQ0FBQyxDQUFDO0FBQzNGLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQWdCLGlCQUFpQixDQUFDLE9BQWU7SUFDL0MsSUFBSSxDQUFDO1FBQ0gsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDMUIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGJzNThjaGVjayBmcm9tICdiczU4Y2hlY2snO1xuaW1wb3J0IHsgYmVjaDMyLCBiZWNoMzJtIH0gZnJvbSAnYmVjaDMyJztcblxuLyoqXG4gKiBzQlRDIGFkZHJlc3MgdmVyc2lvbiBieXRlcyBhcyBkZWZpbmVkIGJ5IHRoZSBzQlRDIHdpdGhkcmF3YWwgY29udHJhY3QuXG4gKi9cbmV4cG9ydCBlbnVtIFNidGNBZGRyZXNzVmVyc2lvbiB7XG4gIFAyUEtIID0gMHgwMCxcbiAgUDJTSCA9IDB4MDEsXG4gIFAyV1BLSCA9IDB4MDQsXG4gIFAyV1NIID0gMHgwNSxcbiAgUDJUUiA9IDB4MDYsXG59XG5cbmludGVyZmFjZSBEZWNvZGVkQnRjQWRkcmVzcyB7XG4gIHZlcnNpb246IFNidGNBZGRyZXNzVmVyc2lvbjtcbiAgaGFzaEJ5dGVzOiBCdWZmZXI7XG59XG5cbmNvbnN0IEJBU0U1OF9NQUlOTkVUX1AyUEtIID0gMHgwMDtcbmNvbnN0IEJBU0U1OF9NQUlOTkVUX1AyU0ggPSAweDA1O1xuY29uc3QgQkFTRTU4X1RFU1RORVRfUDJQS0ggPSAweDZmO1xuY29uc3QgQkFTRTU4X1RFU1RORVRfUDJTSCA9IDB4YzQ7XG5cbi8qKlxuICogRGVjb2RlIGEgQml0Y29pbiBhZGRyZXNzIGludG8gYW4gc0JUQyB2ZXJzaW9uIGJ5dGUgYW5kIGhhc2ggYnl0ZXMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBBIEJpdGNvaW4gYWRkcmVzcyAoUDJQS0gsIFAyU0gsIFAyV1BLSCwgUDJXU0gsIG9yIFAyVFIpXG4gKiBAcmV0dXJucyB7RGVjb2RlZEJ0Y0FkZHJlc3N9IFRoZSBzQlRDIHZlcnNpb24gYW5kIHJhdyBoYXNoIGJ5dGVzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBkZWNvZGVCdGNBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IERlY29kZWRCdGNBZGRyZXNzIHtcbiAgLy8gVHJ5IGJhc2U1OGNoZWNrIGZpcnN0IChQMlBLSCAvIFAyU0gpXG4gIHRyeSB7XG4gICAgY29uc3QgZGVjb2RlZCA9IGJzNThjaGVjay5kZWNvZGUoYWRkcmVzcyk7XG4gICAgY29uc3QgdmVyc2lvbkJ5dGUgPSBkZWNvZGVkWzBdO1xuICAgIGNvbnN0IGhhc2ggPSBkZWNvZGVkLnNsaWNlKDEpO1xuXG4gICAgaWYgKGhhc2gubGVuZ3RoICE9PSAyMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGJhc2U1OGNoZWNrIGhhc2ggbGVuZ3RoOiAke2hhc2gubGVuZ3RofWApO1xuICAgIH1cblxuICAgIHN3aXRjaCAodmVyc2lvbkJ5dGUpIHtcbiAgICAgIGNhc2UgQkFTRTU4X01BSU5ORVRfUDJQS0g6XG4gICAgICBjYXNlIEJBU0U1OF9URVNUTkVUX1AyUEtIOlxuICAgICAgICByZXR1cm4geyB2ZXJzaW9uOiBTYnRjQWRkcmVzc1ZlcnNpb24uUDJQS0gsIGhhc2hCeXRlczogQnVmZmVyLmZyb20oaGFzaCkgfTtcbiAgICAgIGNhc2UgQkFTRTU4X01BSU5ORVRfUDJTSDpcbiAgICAgIGNhc2UgQkFTRTU4X1RFU1RORVRfUDJTSDpcbiAgICAgICAgcmV0dXJuIHsgdmVyc2lvbjogU2J0Y0FkZHJlc3NWZXJzaW9uLlAyU0gsIGhhc2hCeXRlczogQnVmZmVyLmZyb20oaGFzaCkgfTtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5rbm93biBiYXNlNThjaGVjayB2ZXJzaW9uIGJ5dGU6IDB4JHt2ZXJzaW9uQnl0ZS50b1N0cmluZygxNil9YCk7XG4gICAgfVxuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gTm90IGJhc2U1OGNoZWNrLCB0cnkgYmVjaDMyL2JlY2gzMm0gYmVsb3dcbiAgfVxuXG4gIC8vIFRyeSBiZWNoMzIgKFAyV1BLSCAvIFAyV1NIKSBhbmQgYmVjaDMybSAoUDJUUilcbiAgbGV0IGRlY29kZWQ6IHsgcHJlZml4OiBzdHJpbmc7IHdvcmRzOiBudW1iZXJbXSB9O1xuICBsZXQgaXNCZWNoMzJtID0gZmFsc2U7XG5cbiAgdHJ5IHtcbiAgICBkZWNvZGVkID0gYmVjaDMyLmRlY29kZShhZGRyZXNzKTtcbiAgfSBjYXRjaCB7XG4gICAgdHJ5IHtcbiAgICAgIGRlY29kZWQgPSBiZWNoMzJtLmRlY29kZShhZGRyZXNzKTtcbiAgICAgIGlzQmVjaDMybSA9IHRydWU7XG4gICAgfSBjYXRjaCB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuYWJsZSB0byBkZWNvZGUgQml0Y29pbiBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgd2l0bmVzc1ZlcnNpb24gPSBkZWNvZGVkLndvcmRzWzBdO1xuICBjb25zdCBkYXRhID0gQnVmZmVyLmZyb20oYmVjaDMyLmZyb21Xb3JkcyhkZWNvZGVkLndvcmRzLnNsaWNlKDEpKSk7XG5cbiAgaWYgKHdpdG5lc3NWZXJzaW9uID09PSAwICYmICFpc0JlY2gzMm0pIHtcbiAgICBpZiAoZGF0YS5sZW5ndGggPT09IDIwKSB7XG4gICAgICByZXR1cm4geyB2ZXJzaW9uOiBTYnRjQWRkcmVzc1ZlcnNpb24uUDJXUEtILCBoYXNoQnl0ZXM6IGRhdGEgfTtcbiAgICB9IGVsc2UgaWYgKGRhdGEubGVuZ3RoID09PSAzMikge1xuICAgICAgcmV0dXJuIHsgdmVyc2lvbjogU2J0Y0FkZHJlc3NWZXJzaW9uLlAyV1NILCBoYXNoQnl0ZXM6IGRhdGEgfTtcbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIHdpdG5lc3MgdjAgcHJvZ3JhbSBsZW5ndGg6ICR7ZGF0YS5sZW5ndGh9YCk7XG4gIH1cblxuICBpZiAod2l0bmVzc1ZlcnNpb24gPT09IDEgJiYgaXNCZWNoMzJtKSB7XG4gICAgaWYgKGRhdGEubGVuZ3RoID09PSAzMikge1xuICAgICAgcmV0dXJuIHsgdmVyc2lvbjogU2J0Y0FkZHJlc3NWZXJzaW9uLlAyVFIsIGhhc2hCeXRlczogZGF0YSB9O1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgd2l0bmVzcyB2MSBwcm9ncmFtIGxlbmd0aDogJHtkYXRhLmxlbmd0aH1gKTtcbiAgfVxuXG4gIHRocm93IG5ldyBFcnJvcihgVW5zdXBwb3J0ZWQgd2l0bmVzcyB2ZXJzaW9uICR7d2l0bmVzc1ZlcnNpb259IGZvciBhZGRyZXNzOiAke2FkZHJlc3N9YCk7XG59XG5cbi8qKlxuICogQ2hlY2sgd2hldGhlciBhIHN0cmluZyBpcyBhIHZhbGlkIEJpdGNvaW4gYWRkcmVzcyBkZWNvZGFibGUgZm9yIHNCVEMgd2l0aGRyYXdhbHMuXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFkZHJlc3MgLSBUaGUgYWRkcmVzcyB0byB2YWxpZGF0ZVxuICogQHJldHVybnMge2Jvb2xlYW59IHRydWUgaWYgdGhlIGFkZHJlc3MgY2FuIGJlIGRlY29kZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzVmFsaWRCdGNBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICB0cnkge1xuICAgIGRlY29kZUJ0Y0FkZHJlc3MoYWRkcmVzcyk7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gY2F0Y2gge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuIl19
@@ -1,8 +1,22 @@
1
1
  export declare const FUNCTION_NAME_SENDMANY = "send-many";
2
2
  export declare const CONTRACT_NAME_SENDMANY = "send-many-memo";
3
- export declare const CONTRACT_NAME_STAKING = "pox-2";
3
+ export declare const CONTRACT_NAME_STAKING = "pox-4";
4
+ export declare const CONTRACT_NAME_POX5 = "pox-5";
5
+ export declare const VALID_STAKING_CONTRACT_NAMES: string[];
6
+ export declare const FUNCTION_NAME_TRANSFER = "transfer";
7
+ export declare const CONTRACT_NAME_SBTC_WITHDRAWAL = "sbtc-withdrawal";
8
+ export declare const FUNCTION_NAME_INITIATE_WITHDRAWAL = "initiate-withdrawal-request";
9
+ export declare const FUNCTION_NAME_STAKE = "stake";
10
+ export declare const FUNCTION_NAME_STAKE_UPDATE = "stake-update";
11
+ export declare const FUNCTION_NAME_UNSTAKE = "unstake";
12
+ export declare const FUNCTION_NAME_REGISTER_FOR_BOND = "register-for-bond";
13
+ export declare const FUNCTION_NAME_ANNOUNCE_L1_EARLY_EXIT = "announce-l1-early-exit";
14
+ export declare const FUNCTION_NAME_UPDATE_BOND_REGISTRATION = "update-bond-registration";
15
+ export declare const FUNCTION_NAME_CLAIM_REWARDS = "claim-rewards";
16
+ export declare const FUNCTION_NAME_CLAIM_STAKER_REWARDS = "claim-staker-rewards-for-signer";
17
+ export declare const FUNCTION_NAME_CALCULATE_REWARDS = "calculate-rewards";
18
+ export declare const VALID_POX5_CONTRACT_FUNCTION_NAMES: string[];
4
19
  export declare const VALID_CONTRACT_FUNCTION_NAMES: string[];
5
20
  export declare const DEFAULT_SEED_SIZE_BYTES = 64;
6
- export declare const ANCHOR_MODE = 3;
7
21
  export declare const DEFAULT_MULTISIG_SIG_NUMBER = 2;
8
22
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAClD,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAE7C,eAAO,MAAM,6BAA6B,UAOzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAG1C,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,2BAA2B,IAAI,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,sBAAsB,cAAc,CAAC;AAClD,eAAO,MAAM,sBAAsB,mBAAmB,CAAC;AACvD,eAAO,MAAM,qBAAqB,UAAU,CAAC;AAC7C,eAAO,MAAM,kBAAkB,UAAU,CAAC;AAC1C,eAAO,MAAM,4BAA4B,UAA8C,CAAC;AACxF,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,eAAO,MAAM,6BAA6B,oBAAoB,CAAC;AAC/D,eAAO,MAAM,iCAAiC,gCAAgC,CAAC;AAE/E,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAC3C,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AACzD,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAC/C,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AACnE,eAAO,MAAM,oCAAoC,2BAA2B,CAAC;AAC7E,eAAO,MAAM,sCAAsC,6BAA6B,CAAC;AACjF,eAAO,MAAM,2BAA2B,kBAAkB,CAAC;AAC3D,eAAO,MAAM,kCAAkC,oCAAoC,CAAC;AACpF,eAAO,MAAM,+BAA+B,sBAAsB,CAAC;AAEnE,eAAO,MAAM,kCAAkC,UAU9C,CAAC;AAEF,eAAO,MAAM,6BAA6B,UASzC,CAAC;AAEF,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAE1C,eAAO,MAAM,2BAA2B,IAAI,CAAC"}
@@ -1,9 +1,34 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.DEFAULT_MULTISIG_SIG_NUMBER = exports.ANCHOR_MODE = exports.DEFAULT_SEED_SIZE_BYTES = exports.VALID_CONTRACT_FUNCTION_NAMES = exports.CONTRACT_NAME_STAKING = exports.CONTRACT_NAME_SENDMANY = exports.FUNCTION_NAME_SENDMANY = void 0;
3
+ exports.DEFAULT_MULTISIG_SIG_NUMBER = exports.DEFAULT_SEED_SIZE_BYTES = exports.VALID_CONTRACT_FUNCTION_NAMES = exports.VALID_POX5_CONTRACT_FUNCTION_NAMES = exports.FUNCTION_NAME_CALCULATE_REWARDS = exports.FUNCTION_NAME_CLAIM_STAKER_REWARDS = exports.FUNCTION_NAME_CLAIM_REWARDS = exports.FUNCTION_NAME_UPDATE_BOND_REGISTRATION = exports.FUNCTION_NAME_ANNOUNCE_L1_EARLY_EXIT = exports.FUNCTION_NAME_REGISTER_FOR_BOND = exports.FUNCTION_NAME_UNSTAKE = exports.FUNCTION_NAME_STAKE_UPDATE = exports.FUNCTION_NAME_STAKE = exports.FUNCTION_NAME_INITIATE_WITHDRAWAL = exports.CONTRACT_NAME_SBTC_WITHDRAWAL = exports.FUNCTION_NAME_TRANSFER = exports.VALID_STAKING_CONTRACT_NAMES = exports.CONTRACT_NAME_POX5 = exports.CONTRACT_NAME_STAKING = exports.CONTRACT_NAME_SENDMANY = exports.FUNCTION_NAME_SENDMANY = void 0;
4
4
  exports.FUNCTION_NAME_SENDMANY = 'send-many';
5
5
  exports.CONTRACT_NAME_SENDMANY = 'send-many-memo';
6
- exports.CONTRACT_NAME_STAKING = 'pox-2';
6
+ exports.CONTRACT_NAME_STAKING = 'pox-4';
7
+ exports.CONTRACT_NAME_POX5 = 'pox-5';
8
+ exports.VALID_STAKING_CONTRACT_NAMES = [exports.CONTRACT_NAME_STAKING, exports.CONTRACT_NAME_POX5];
9
+ exports.FUNCTION_NAME_TRANSFER = 'transfer';
10
+ exports.CONTRACT_NAME_SBTC_WITHDRAWAL = 'sbtc-withdrawal';
11
+ exports.FUNCTION_NAME_INITIATE_WITHDRAWAL = 'initiate-withdrawal-request';
12
+ exports.FUNCTION_NAME_STAKE = 'stake';
13
+ exports.FUNCTION_NAME_STAKE_UPDATE = 'stake-update';
14
+ exports.FUNCTION_NAME_UNSTAKE = 'unstake';
15
+ exports.FUNCTION_NAME_REGISTER_FOR_BOND = 'register-for-bond';
16
+ exports.FUNCTION_NAME_ANNOUNCE_L1_EARLY_EXIT = 'announce-l1-early-exit';
17
+ exports.FUNCTION_NAME_UPDATE_BOND_REGISTRATION = 'update-bond-registration';
18
+ exports.FUNCTION_NAME_CLAIM_REWARDS = 'claim-rewards';
19
+ exports.FUNCTION_NAME_CLAIM_STAKER_REWARDS = 'claim-staker-rewards-for-signer';
20
+ exports.FUNCTION_NAME_CALCULATE_REWARDS = 'calculate-rewards';
21
+ exports.VALID_POX5_CONTRACT_FUNCTION_NAMES = [
22
+ exports.FUNCTION_NAME_STAKE,
23
+ exports.FUNCTION_NAME_STAKE_UPDATE,
24
+ exports.FUNCTION_NAME_UNSTAKE,
25
+ exports.FUNCTION_NAME_REGISTER_FOR_BOND,
26
+ exports.FUNCTION_NAME_UPDATE_BOND_REGISTRATION,
27
+ exports.FUNCTION_NAME_ANNOUNCE_L1_EARLY_EXIT,
28
+ exports.FUNCTION_NAME_CLAIM_REWARDS,
29
+ exports.FUNCTION_NAME_CLAIM_STAKER_REWARDS,
30
+ exports.FUNCTION_NAME_CALCULATE_REWARDS,
31
+ ];
7
32
  exports.VALID_CONTRACT_FUNCTION_NAMES = [
8
33
  'stack-stx',
9
34
  'delegate-stx',
@@ -11,9 +36,9 @@ exports.VALID_CONTRACT_FUNCTION_NAMES = [
11
36
  'stack-aggregation-commit',
12
37
  'revoke-delegate-stx',
13
38
  'send-many',
39
+ 'transfer',
40
+ 'initiate-withdrawal-request',
14
41
  ];
15
42
  exports.DEFAULT_SEED_SIZE_BYTES = 64;
16
- // https://github.com/stacksgov/sips/blob/main/sips/sip-005/sip-005-blocks-and-transactions.md#transaction-encoding
17
- exports.ANCHOR_MODE = 3;
18
43
  exports.DEFAULT_MULTISIG_SIG_NUMBER = 2;
19
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxzQkFBc0IsR0FBRyxXQUFXLENBQUM7QUFDckMsUUFBQSxzQkFBc0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUMxQyxRQUFBLHFCQUFxQixHQUFHLE9BQU8sQ0FBQztBQUVoQyxRQUFBLDZCQUE2QixHQUFHO0lBQzNDLFdBQVc7SUFDWCxjQUFjO0lBQ2Qsb0JBQW9CO0lBQ3BCLDBCQUEwQjtJQUMxQixxQkFBcUI7SUFDckIsV0FBVztDQUNaLENBQUM7QUFFVyxRQUFBLHVCQUF1QixHQUFHLEVBQUUsQ0FBQztBQUUxQyxtSEFBbUg7QUFDdEcsUUFBQSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLFFBQUEsMkJBQTJCLEdBQUcsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IEZVTkNUSU9OX05BTUVfU0VORE1BTlkgPSAnc2VuZC1tYW55JztcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9OQU1FX1NFTkRNQU5ZID0gJ3NlbmQtbWFueS1tZW1vJztcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9OQU1FX1NUQUtJTkcgPSAncG94LTInO1xuXG5leHBvcnQgY29uc3QgVkFMSURfQ09OVFJBQ1RfRlVOQ1RJT05fTkFNRVMgPSBbXG4gICdzdGFjay1zdHgnLFxuICAnZGVsZWdhdGUtc3R4JyxcbiAgJ2RlbGVnYXRlLXN0YWNrLXN0eCcsXG4gICdzdGFjay1hZ2dyZWdhdGlvbi1jb21taXQnLFxuICAncmV2b2tlLWRlbGVnYXRlLXN0eCcsXG4gICdzZW5kLW1hbnknLFxuXTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU0VFRF9TSVpFX0JZVEVTID0gNjQ7XG5cbi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9zdGFja3Nnb3Yvc2lwcy9ibG9iL21haW4vc2lwcy9zaXAtMDA1L3NpcC0wMDUtYmxvY2tzLWFuZC10cmFuc2FjdGlvbnMubWQjdHJhbnNhY3Rpb24tZW5jb2RpbmdcbmV4cG9ydCBjb25zdCBBTkNIT1JfTU9ERSA9IDM7XG5leHBvcnQgY29uc3QgREVGQVVMVF9NVUxUSVNJR19TSUdfTlVNQkVSID0gMjtcbiJdfQ==
44
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQWEsUUFBQSxzQkFBc0IsR0FBRyxXQUFXLENBQUM7QUFDckMsUUFBQSxzQkFBc0IsR0FBRyxnQkFBZ0IsQ0FBQztBQUMxQyxRQUFBLHFCQUFxQixHQUFHLE9BQU8sQ0FBQztBQUNoQyxRQUFBLGtCQUFrQixHQUFHLE9BQU8sQ0FBQztBQUM3QixRQUFBLDRCQUE0QixHQUFHLENBQUMsNkJBQXFCLEVBQUUsMEJBQWtCLENBQUMsQ0FBQztBQUMzRSxRQUFBLHNCQUFzQixHQUFHLFVBQVUsQ0FBQztBQUNwQyxRQUFBLDZCQUE2QixHQUFHLGlCQUFpQixDQUFDO0FBQ2xELFFBQUEsaUNBQWlDLEdBQUcsNkJBQTZCLENBQUM7QUFFbEUsUUFBQSxtQkFBbUIsR0FBRyxPQUFPLENBQUM7QUFDOUIsUUFBQSwwQkFBMEIsR0FBRyxjQUFjLENBQUM7QUFDNUMsUUFBQSxxQkFBcUIsR0FBRyxTQUFTLENBQUM7QUFDbEMsUUFBQSwrQkFBK0IsR0FBRyxtQkFBbUIsQ0FBQztBQUN0RCxRQUFBLG9DQUFvQyxHQUFHLHdCQUF3QixDQUFDO0FBQ2hFLFFBQUEsc0NBQXNDLEdBQUcsMEJBQTBCLENBQUM7QUFDcEUsUUFBQSwyQkFBMkIsR0FBRyxlQUFlLENBQUM7QUFDOUMsUUFBQSxrQ0FBa0MsR0FBRyxpQ0FBaUMsQ0FBQztBQUN2RSxRQUFBLCtCQUErQixHQUFHLG1CQUFtQixDQUFDO0FBRXRELFFBQUEsa0NBQWtDLEdBQUc7SUFDaEQsMkJBQW1CO0lBQ25CLGtDQUEwQjtJQUMxQiw2QkFBcUI7SUFDckIsdUNBQStCO0lBQy9CLDhDQUFzQztJQUN0Qyw0Q0FBb0M7SUFDcEMsbUNBQTJCO0lBQzNCLDBDQUFrQztJQUNsQyx1Q0FBK0I7Q0FDaEMsQ0FBQztBQUVXLFFBQUEsNkJBQTZCLEdBQUc7SUFDM0MsV0FBVztJQUNYLGNBQWM7SUFDZCxvQkFBb0I7SUFDcEIsMEJBQTBCO0lBQzFCLHFCQUFxQjtJQUNyQixXQUFXO0lBQ1gsVUFBVTtJQUNWLDZCQUE2QjtDQUM5QixDQUFDO0FBRVcsUUFBQSx1QkFBdUIsR0FBRyxFQUFFLENBQUM7QUFFN0IsUUFBQSwyQkFBMkIsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgRlVOQ1RJT05fTkFNRV9TRU5ETUFOWSA9ICdzZW5kLW1hbnknO1xuZXhwb3J0IGNvbnN0IENPTlRSQUNUX05BTUVfU0VORE1BTlkgPSAnc2VuZC1tYW55LW1lbW8nO1xuZXhwb3J0IGNvbnN0IENPTlRSQUNUX05BTUVfU1RBS0lORyA9ICdwb3gtNCc7XG5leHBvcnQgY29uc3QgQ09OVFJBQ1RfTkFNRV9QT1g1ID0gJ3BveC01JztcbmV4cG9ydCBjb25zdCBWQUxJRF9TVEFLSU5HX0NPTlRSQUNUX05BTUVTID0gW0NPTlRSQUNUX05BTUVfU1RBS0lORywgQ09OVFJBQ1RfTkFNRV9QT1g1XTtcbmV4cG9ydCBjb25zdCBGVU5DVElPTl9OQU1FX1RSQU5TRkVSID0gJ3RyYW5zZmVyJztcbmV4cG9ydCBjb25zdCBDT05UUkFDVF9OQU1FX1NCVENfV0lUSERSQVdBTCA9ICdzYnRjLXdpdGhkcmF3YWwnO1xuZXhwb3J0IGNvbnN0IEZVTkNUSU9OX05BTUVfSU5JVElBVEVfV0lUSERSQVdBTCA9ICdpbml0aWF0ZS13aXRoZHJhd2FsLXJlcXVlc3QnO1xuXG5leHBvcnQgY29uc3QgRlVOQ1RJT05fTkFNRV9TVEFLRSA9ICdzdGFrZSc7XG5leHBvcnQgY29uc3QgRlVOQ1RJT05fTkFNRV9TVEFLRV9VUERBVEUgPSAnc3Rha2UtdXBkYXRlJztcbmV4cG9ydCBjb25zdCBGVU5DVElPTl9OQU1FX1VOU1RBS0UgPSAndW5zdGFrZSc7XG5leHBvcnQgY29uc3QgRlVOQ1RJT05fTkFNRV9SRUdJU1RFUl9GT1JfQk9ORCA9ICdyZWdpc3Rlci1mb3ItYm9uZCc7XG5leHBvcnQgY29uc3QgRlVOQ1RJT05fTkFNRV9BTk5PVU5DRV9MMV9FQVJMWV9FWElUID0gJ2Fubm91bmNlLWwxLWVhcmx5LWV4aXQnO1xuZXhwb3J0IGNvbnN0IEZVTkNUSU9OX05BTUVfVVBEQVRFX0JPTkRfUkVHSVNUUkFUSU9OID0gJ3VwZGF0ZS1ib25kLXJlZ2lzdHJhdGlvbic7XG5leHBvcnQgY29uc3QgRlVOQ1RJT05fTkFNRV9DTEFJTV9SRVdBUkRTID0gJ2NsYWltLXJld2FyZHMnO1xuZXhwb3J0IGNvbnN0IEZVTkNUSU9OX05BTUVfQ0xBSU1fU1RBS0VSX1JFV0FSRFMgPSAnY2xhaW0tc3Rha2VyLXJld2FyZHMtZm9yLXNpZ25lcic7XG5leHBvcnQgY29uc3QgRlVOQ1RJT05fTkFNRV9DQUxDVUxBVEVfUkVXQVJEUyA9ICdjYWxjdWxhdGUtcmV3YXJkcyc7XG5cbmV4cG9ydCBjb25zdCBWQUxJRF9QT1g1X0NPTlRSQUNUX0ZVTkNUSU9OX05BTUVTID0gW1xuICBGVU5DVElPTl9OQU1FX1NUQUtFLFxuICBGVU5DVElPTl9OQU1FX1NUQUtFX1VQREFURSxcbiAgRlVOQ1RJT05fTkFNRV9VTlNUQUtFLFxuICBGVU5DVElPTl9OQU1FX1JFR0lTVEVSX0ZPUl9CT05ELFxuICBGVU5DVElPTl9OQU1FX1VQREFURV9CT05EX1JFR0lTVFJBVElPTixcbiAgRlVOQ1RJT05fTkFNRV9BTk5PVU5DRV9MMV9FQVJMWV9FWElULFxuICBGVU5DVElPTl9OQU1FX0NMQUlNX1JFV0FSRFMsXG4gIEZVTkNUSU9OX05BTUVfQ0xBSU1fU1RBS0VSX1JFV0FSRFMsXG4gIEZVTkNUSU9OX05BTUVfQ0FMQ1VMQVRFX1JFV0FSRFMsXG5dO1xuXG5leHBvcnQgY29uc3QgVkFMSURfQ09OVFJBQ1RfRlVOQ1RJT05fTkFNRVMgPSBbXG4gICdzdGFjay1zdHgnLFxuICAnZGVsZWdhdGUtc3R4JyxcbiAgJ2RlbGVnYXRlLXN0YWNrLXN0eCcsXG4gICdzdGFjay1hZ2dyZWdhdGlvbi1jb21taXQnLFxuICAncmV2b2tlLWRlbGVnYXRlLXN0eCcsXG4gICdzZW5kLW1hbnknLFxuICAndHJhbnNmZXInLFxuICAnaW5pdGlhdGUtd2l0aGRyYXdhbC1yZXF1ZXN0Jyxcbl07XG5cbmV4cG9ydCBjb25zdCBERUZBVUxUX1NFRURfU0laRV9CWVRFUyA9IDY0O1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9NVUxUSVNJR19TSUdfTlVNQkVSID0gMjtcbiJdfQ==
@@ -4,6 +4,9 @@ import { Transaction } from './transaction';
4
4
  import { ClarityValueJson } from './iface';
5
5
  import { AbstractContractBuilder } from './abstractContractBuilder';
6
6
  export declare class ContractBuilder extends AbstractContractBuilder {
7
+ private static readonly CLARITY_TYPE_VALUES;
8
+ /** Clarity values that carry no `value` property in v7. */
9
+ private static readonly VALUELESS_CLARITY_TYPES;
7
10
  constructor(_coinConfig: Readonly<CoinConfig>);
8
11
  initBuilder(tx: Transaction): void;
9
12
  /**
@@ -28,6 +31,17 @@ export declare class ContractBuilder extends AbstractContractBuilder {
28
31
  */
29
32
  functionName(name: string): this;
30
33
  functionArgs(args: ClarityValueJson[] | ClarityValue[]): this;
34
+ /**
35
+ * Positive shape check: a fully-formed `ClarityValue` vs a JSON `ClarityValueJson` descriptor.
36
+ *
37
+ * In `@stacks/transactions` v7 the `ClarityType` values are lower-case strings (`'uint'`,
38
+ * `'contract'`, `'address'`, ...). A raw clarity value carries a `type` that is one of those values
39
+ * AND a `value` property (except the valueless `none` / `true` / `false`), and never a `val` field.
40
+ * JSON descriptors use `type` names (e.g. `optional`, `list`, `response`, `tuple`, `buffer`,
41
+ * `contractPrincipal`) and always carry `val` — a malformed descriptor like `{ type: 'list' }`
42
+ * therefore falls through to `parseCv` so its validation errors still surface.
43
+ */
44
+ private isClarityValue;
31
45
  private parseCv;
32
46
  }
33
47
  //# sourceMappingURL=contractBuilder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contractBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/contractBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAuC,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAKL,YAAY,EAKb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,eAAgB,SAAQ,uBAAuB;gBAC9C,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAUlC;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAWtC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWhC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWhC,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI;IAY7D,OAAO,CAAC,OAAO;CA8BhB"}
1
+ {"version":3,"file":"contractBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/contractBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAuC,MAAM,qBAAqB,CAAC;AAClG,OAAO,EAKL,YAAY,EAQb,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAG3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,qBAAa,eAAgB,SAAQ,uBAAuB;IAC1D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAA+C;IAC1F,2DAA2D;IAC3D,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CAI5C;gBAES,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAUlC;;;;;OAKG;IACH,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAWtC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAchC;;;;;OAKG;IACH,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAWhC,YAAY,CAAC,IAAI,EAAE,gBAAgB,EAAE,GAAG,YAAY,EAAE,GAAG,IAAI;IAW7D;;;;;;;;;OASG;IACH,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,OAAO;CA2DhB"}