@bitgo-beta/sdk-coin-canton 1.0.1-beta.54 → 1.0.1-beta.540

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 (117) hide show
  1. package/dist/src/canton.d.ts +15 -1
  2. package/dist/src/canton.d.ts.map +1 -1
  3. package/dist/src/canton.js +124 -8
  4. package/dist/src/cantonToken.d.ts +19 -0
  5. package/dist/src/cantonToken.d.ts.map +1 -0
  6. package/dist/src/cantonToken.js +52 -0
  7. package/dist/src/index.d.ts +2 -0
  8. package/dist/src/index.d.ts.map +1 -1
  9. package/dist/src/index.js +3 -1
  10. package/dist/src/lib/allocationAllocateBuilder.d.ts +126 -0
  11. package/dist/src/lib/allocationAllocateBuilder.d.ts.map +1 -0
  12. package/dist/src/lib/allocationAllocateBuilder.js +250 -0
  13. package/dist/src/lib/allocationRequestBuilder.d.ts +116 -0
  14. package/dist/src/lib/allocationRequestBuilder.d.ts.map +1 -0
  15. package/dist/src/lib/allocationRequestBuilder.js +246 -0
  16. package/dist/src/lib/constant.d.ts +2 -0
  17. package/dist/src/lib/constant.d.ts.map +1 -1
  18. package/dist/src/lib/constant.js +4 -2
  19. package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts +56 -0
  20. package/dist/src/lib/cosignDelegationAcceptBuilder.d.ts.map +1 -0
  21. package/dist/src/lib/cosignDelegationAcceptBuilder.js +112 -0
  22. package/dist/src/lib/cosignDelegationProposalBuilder.d.ts +60 -0
  23. package/dist/src/lib/cosignDelegationProposalBuilder.d.ts.map +1 -0
  24. package/dist/src/lib/cosignDelegationProposalBuilder.js +111 -0
  25. package/dist/src/lib/iface.d.ts +115 -3
  26. package/dist/src/lib/iface.d.ts.map +1 -1
  27. package/dist/src/lib/iface.js +1 -1
  28. package/dist/src/lib/index.d.ts +10 -0
  29. package/dist/src/lib/index.d.ts.map +1 -1
  30. package/dist/src/lib/index.js +22 -2
  31. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts +15 -5
  32. package/dist/src/lib/oneStepPreApprovalBuilder.d.ts.map +1 -1
  33. package/dist/src/lib/oneStepPreApprovalBuilder.js +31 -3
  34. package/dist/src/lib/transaction/transaction.d.ts +17 -2
  35. package/dist/src/lib/transaction/transaction.d.ts.map +1 -1
  36. package/dist/src/lib/transaction/transaction.js +259 -9
  37. package/dist/src/lib/transactionBuilder.d.ts +3 -3
  38. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  39. package/dist/src/lib/transactionBuilder.js +1 -5
  40. package/dist/src/lib/transactionBuilderFactory.d.ts +18 -0
  41. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  42. package/dist/src/lib/transactionBuilderFactory.js +71 -4
  43. package/dist/src/lib/transferAcceptanceBuilder.d.ts +59 -0
  44. package/dist/src/lib/transferAcceptanceBuilder.d.ts.map +1 -0
  45. package/dist/src/lib/transferAcceptanceBuilder.js +116 -0
  46. package/dist/src/lib/transferAcknowledgeBuilder.d.ts +72 -0
  47. package/dist/src/lib/transferAcknowledgeBuilder.d.ts.map +1 -0
  48. package/dist/src/lib/transferAcknowledgeBuilder.js +133 -0
  49. package/dist/src/lib/transferBuilder.d.ts +87 -3
  50. package/dist/src/lib/transferBuilder.d.ts.map +1 -1
  51. package/dist/src/lib/transferBuilder.js +169 -1
  52. package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts +67 -0
  53. package/dist/src/lib/transferOfferWithdrawnBuilder.d.ts.map +1 -0
  54. package/dist/src/lib/transferOfferWithdrawnBuilder.js +130 -0
  55. package/dist/src/lib/transferRejectionBuilder.d.ts +59 -0
  56. package/dist/src/lib/transferRejectionBuilder.d.ts.map +1 -0
  57. package/dist/src/lib/transferRejectionBuilder.js +116 -0
  58. package/dist/src/lib/utils.d.ts +22 -2
  59. package/dist/src/lib/utils.d.ts.map +1 -1
  60. package/dist/src/lib/utils.js +373 -44
  61. package/dist/src/lib/walletInitBuilder.d.ts +2 -1
  62. package/dist/src/lib/walletInitBuilder.d.ts.map +1 -1
  63. package/dist/src/lib/walletInitBuilder.js +4 -1
  64. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts +2 -1
  65. package/dist/src/lib/walletInitialization/walletInitTransaction.d.ts.map +1 -1
  66. package/dist/src/lib/walletInitialization/walletInitTransaction.js +14 -1
  67. package/dist/src/register.d.ts.map +1 -1
  68. package/dist/src/register.js +5 -1
  69. package/dist/test/helper.d.ts +3 -0
  70. package/dist/test/helper.d.ts.map +1 -0
  71. package/dist/test/helper.js +9 -0
  72. package/dist/test/integration/canton.integration.d.ts +2 -0
  73. package/dist/test/integration/canton.integration.d.ts.map +1 -0
  74. package/dist/test/integration/canton.integration.js +157 -0
  75. package/dist/test/integration/canton.token.integration.d.ts +2 -0
  76. package/dist/test/integration/canton.token.integration.d.ts.map +1 -0
  77. package/dist/test/integration/canton.token.integration.js +51 -0
  78. package/dist/test/resources.d.ts +186 -2
  79. package/dist/test/resources.d.ts.map +1 -1
  80. package/dist/test/resources.js +191 -7
  81. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts +2 -0
  82. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.d.ts.map +1 -0
  83. package/dist/test/unit/builder/allocationAllocate/allocationAllocateBuilder.js +309 -0
  84. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts +2 -0
  85. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.d.ts.map +1 -0
  86. package/dist/test/unit/builder/allocationRequest/allocationRequestBuilder.js +386 -0
  87. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts +2 -0
  88. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.d.ts.map +1 -0
  89. package/dist/test/unit/builder/cosignDelegationAccept/cosignDelegationAcceptBuilder.js +75 -0
  90. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts +2 -0
  91. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.d.ts.map +1 -0
  92. package/dist/test/unit/builder/cosignDelegationProposal/cosignDelegationProposalBuilder.js +74 -0
  93. package/dist/test/unit/builder/oneStepEnablement/oneStepEnablementBuilder.js +26 -8
  94. package/dist/test/unit/builder/transfer/transferBuilder.d.ts +2 -0
  95. package/dist/test/unit/builder/transfer/transferBuilder.d.ts.map +1 -0
  96. package/dist/test/unit/builder/transfer/transferBuilder.js +84 -0
  97. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.d.ts +2 -0
  98. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.d.ts.map +1 -0
  99. package/dist/test/unit/builder/transferAccept/transferAcceptBuilder.js +120 -0
  100. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts +2 -0
  101. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.d.ts.map +1 -0
  102. package/dist/test/unit/builder/transferAcknowledge/transferAcknowledgeBuilder.js +32 -0
  103. package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts +2 -0
  104. package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.d.ts.map +1 -0
  105. package/dist/test/unit/builder/transferOfferWithdrawn/transferOfferWithdrawnBuilder.js +64 -0
  106. package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts +2 -0
  107. package/dist/test/unit/builder/transferReject/transferRejectBuilder.d.ts.map +1 -0
  108. package/dist/test/unit/builder/transferReject/transferRejectBuilder.js +96 -0
  109. package/dist/test/unit/canton.d.ts +2 -0
  110. package/dist/test/unit/canton.d.ts.map +1 -0
  111. package/dist/test/unit/canton.js +201 -0
  112. package/dist/test/unit/index.d.ts +1 -0
  113. package/dist/test/unit/index.d.ts.map +1 -1
  114. package/dist/test/unit/index.js +2 -1
  115. package/dist/test/unit/utils.js +76 -5
  116. package/dist/tsconfig.tsbuildinfo +1 -1
  117. package/package.json +11 -8
@@ -1,9 +1,16 @@
1
- import { AuditDecryptedKeyParams, BaseCoin, BitGoBase, KeyPair, MPCAlgorithm, MultisigType, ParsedTransaction, ParseTransactionOptions, SignedTransaction, SignTransactionOptions, TssVerifyAddressOptions, VerifyTransactionOptions } from '@bitgo-beta/sdk-core';
1
+ import { AuditDecryptedKeyParams, BaseCoin, BitGoBase, KeyPair, MPCAlgorithm, MultisigType, ParsedTransaction, ParseTransactionOptions, SignedTransaction, SignTransactionOptions, TransactionType, VerifyTransactionOptions, TransactionExplanation as BaseTransactionExplanation, PopulatedIntent, PrebuildTransactionWithIntentOptions, TssVerifyAddressOptions, TokenEnablementConfig } from '@bitgo-beta/sdk-core';
2
2
  import { BaseCoin as StaticsBaseCoin } from '@bitgo-beta/statics';
3
+ export interface TransactionExplanation extends BaseTransactionExplanation {
4
+ type: TransactionType;
5
+ }
6
+ export interface ExplainTransactionOptions {
7
+ txHex: string;
8
+ }
3
9
  export declare class Canton extends BaseCoin {
4
10
  protected readonly _staticsCoin: Readonly<StaticsBaseCoin>;
5
11
  protected constructor(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>);
6
12
  static createInstance(bitgo: BitGoBase, staticsCoin?: Readonly<StaticsBaseCoin>): BaseCoin;
13
+ private getBuilder;
7
14
  /** @inheritDoc */
8
15
  getBaseFactor(): number;
9
16
  /** @inheritDoc */
@@ -28,12 +35,19 @@ export declare class Canton extends BaseCoin {
28
35
  /** @inheritDoc */
29
36
  generateKeyPair(seed?: Buffer): KeyPair;
30
37
  /** @inheritDoc */
38
+ explainTransaction(params: ExplainTransactionOptions): Promise<TransactionExplanation>;
39
+ /** @inheritDoc */
31
40
  isValidPub(pub: string): boolean;
32
41
  /** @inheritDoc */
33
42
  isValidAddress(address: string): boolean;
34
43
  /** @inheritDoc */
44
+ getTokenEnablementConfig(): TokenEnablementConfig;
45
+ getAddressFromPublicKey(publicKeyHex: string): string;
46
+ /** @inheritDoc */
35
47
  signTransaction(params: SignTransactionOptions): Promise<SignedTransaction>;
36
48
  /** @inheritDoc */
37
49
  auditDecryptedKey({ multiSigType, prv, publicKey }: AuditDecryptedKeyParams): void;
50
+ /** @inheritDoc */
51
+ setCoinSpecificFieldsInIntent(intent: PopulatedIntent, params: PrebuildTransactionWithIntentOptions): void;
38
52
  }
39
53
  //# sourceMappingURL=canton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"canton.d.ts","sourceRoot":"","sources":["../../src/canton.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,YAAY,EACZ,YAAY,EAEZ,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EAEtB,uBAAuB,EACvB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAS,MAAM,qBAAqB,CAAC;AAKzE,qBAAa,MAAO,SAAQ,QAAQ;IAClC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAE3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,kBAAkB;IACX,aAAa,IAAI,MAAM;IAI9B,kBAAkB;IACX,QAAQ,IAAI,MAAM;IAIzB,kBAAkB;IACX,SAAS,IAAI,MAAM;IAI1B,kBAAkB;IACX,WAAW,IAAI,MAAM;IAI5B,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,oBAAoB;IACpB,sBAAsB,IAAI,YAAY;IAItC,oBAAoB;IACpB,uCAAuC,IAAI,OAAO;IAIlD,eAAe,IAAI,YAAY;IAI/B,kBAAkB;IACZ,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqB3E,kBAAkB;IAClB,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE,kBAAkB;IAClB,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7E,kBAAkB;IAClB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAYvC,kBAAkB;IAClB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMxC,kBAAkB;IAClB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI3E,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,uBAAuB,GAAG,IAAI;CAMnF"}
1
+ {"version":3,"file":"canton.d.ts","sourceRoot":"","sources":["../../src/canton.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,QAAQ,EACR,SAAS,EACT,OAAO,EACP,YAAY,EACZ,YAAY,EAEZ,iBAAiB,EACjB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,eAAe,EACf,wBAAwB,EACxB,sBAAsB,IAAI,0BAA0B,EAEpD,eAAe,EACf,oCAAoC,EACpC,uBAAuB,EAIvB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAS,MAAM,qBAAqB,CAAC;AAMzE,MAAM,WAAW,sBAAuB,SAAQ,0BAA0B;IACxE,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,MAAO,SAAQ,QAAQ;IAClC,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAE3D,SAAS,aAAa,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC;IAU/E,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GAAG,QAAQ;IAI1F,OAAO,CAAC,UAAU;IAIlB,kBAAkB;IACX,aAAa,IAAI,MAAM;IAI9B,kBAAkB;IACX,QAAQ,IAAI,MAAM;IAIzB,kBAAkB;IACX,SAAS,IAAI,MAAM;IAI1B,kBAAkB;IACX,WAAW,IAAI,MAAM;IAI5B,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,oBAAoB;IACpB,sBAAsB,IAAI,YAAY;IAItC,oBAAoB;IACpB,uCAAuC,IAAI,OAAO;IAIlD,eAAe,IAAI,YAAY;IAI/B,kBAAkB;IACZ,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC;IAsF3E,kBAAkB;IACZ,eAAe,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,OAAO,CAAC;IAqBxE,kBAAkB;IAClB,gBAAgB,CAAC,MAAM,EAAE,uBAAuB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI7E,kBAAkB;IAClB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO;IAYvC,kBAAkB;IAClB,kBAAkB,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAatF,kBAAkB;IAClB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIhC,kBAAkB;IAClB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAMxC,kBAAkB;IAClB,wBAAwB,IAAI,qBAAqB;IAOjD,uBAAuB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM;IAKrD,kBAAkB;IAClB,eAAe,CAAC,MAAM,EAAE,sBAAsB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAI3E,kBAAkB;IAClB,iBAAiB,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,SAAS,EAAE,EAAE,uBAAuB,GAAG,IAAI;IAOlF,kBAAkB;IAClB,6BAA6B,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,oCAAoC,GAAG,IAAI;CAW3G"}
@@ -21,6 +21,9 @@ class Canton extends sdk_core_1.BaseCoin {
21
21
  static createInstance(bitgo, staticsCoin) {
22
22
  return new Canton(bitgo, staticsCoin);
23
23
  }
24
+ getBuilder() {
25
+ return new lib_1.TransactionBuilderFactory(statics_1.coins.get(this.getChain()));
26
+ }
24
27
  /** @inheritDoc */
25
28
  getBaseFactor() {
26
29
  return 1e10;
@@ -55,27 +58,103 @@ class Canton extends sdk_core_1.BaseCoin {
55
58
  /** @inheritDoc */
56
59
  async verifyTransaction(params) {
57
60
  const coinConfig = statics_1.coins.get(this.getChain());
58
- // extract `txParams` when verifying other transaction types
59
- const { txPrebuild: txPrebuild } = params;
61
+ const { txPrebuild: txPrebuild, txParams } = params;
60
62
  const rawTx = txPrebuild.txHex;
61
63
  if (!rawTx) {
62
64
  throw new Error('missing required tx prebuild property txHex');
63
65
  }
64
66
  const txBuilder = new lib_1.TransactionBuilderFactory(coinConfig).from(rawTx);
65
67
  const transaction = txBuilder.transaction;
68
+ const explainedTx = transaction.explainTransaction();
66
69
  switch (transaction.type) {
67
- case sdk_core_1.TransactionType.WalletInitialization: {
68
- // there is no input for this type of transaction, so always return true
70
+ case sdk_core_1.TransactionType.WalletInitialization:
71
+ case sdk_core_1.TransactionType.TransferAccept:
72
+ case sdk_core_1.TransactionType.TransferReject:
73
+ case sdk_core_1.TransactionType.TransferAcknowledge:
74
+ case sdk_core_1.TransactionType.TransferOfferWithdrawn:
75
+ case sdk_core_1.TransactionType.CosignDelegationAccept:
76
+ case sdk_core_1.TransactionType.CosignDelegationProposal:
77
+ // There is no input for these type of transactions, so always return true.
78
+ return true;
79
+ case sdk_core_1.TransactionType.OneStepPreApproval:
80
+ // Canton is always a TSS wallet. The SDK's buildTokenEnablements passes enableTokens
81
+ // through unchanged for TSS wallets (no conversion to recipients), so txParams.enableTokens
82
+ // is the only source of user intent here.
83
+ //
84
+ // Receiver validation: the receiver of a OneStepPreApproval is always the wallet's root address.
85
+ // We use enableToken.address if explicitly provided, otherwise fall back to
86
+ // wallet.coinSpecific().rootAddress (the Canton party ID stored at wallet creation time).
87
+ // Token name validation: checked when the token is resolvable from statics.
88
+ if (txParams.type === 'enabletoken' &&
89
+ txParams.enableTokens !== undefined &&
90
+ txParams.enableTokens.length > 0) {
91
+ const txData = transaction.toJson();
92
+ const enableToken = txParams.enableTokens[0];
93
+ const walletRootAddress = params.wallet?.coinSpecific?.()?.rootAddress;
94
+ const expectedReceiver = enableToken.address ?? walletRootAddress;
95
+ if (expectedReceiver) {
96
+ // Strip ?memoId suffix if present in the stored address
97
+ const [expectedReceiverBase] = expectedReceiver.split('?memoId=');
98
+ if (txData.receiver !== expectedReceiverBase) {
99
+ throw new Error(`OneStepPreApproval receiver mismatch: expected '${expectedReceiverBase}', got '${txData.receiver}'`);
100
+ }
101
+ }
102
+ if (txData.token !== undefined && txData.token !== enableToken.name) {
103
+ throw new Error(`OneStepPreApproval token name mismatch: expected '${enableToken.name}', got '${txData.token}'`);
104
+ }
105
+ }
106
+ return true;
107
+ case sdk_core_1.TransactionType.Send:
108
+ if (txParams.recipients !== undefined) {
109
+ const filteredRecipients = txParams.recipients?.map((recipient) => {
110
+ const { address, amount, tokenName } = recipient;
111
+ const [addressPart, memoId] = address.split('?memoId=');
112
+ return {
113
+ address: addressPart,
114
+ amount,
115
+ ...(memoId && { memo: memoId }),
116
+ ...(tokenName && { tokenName }),
117
+ };
118
+ });
119
+ const filteredOutputs = explainedTx.outputs?.map((output) => {
120
+ const { address, amount, tokenName, memo } = output;
121
+ return {
122
+ address,
123
+ amount,
124
+ ...(memo && { memo }),
125
+ ...(tokenName && { tokenName }),
126
+ };
127
+ });
128
+ if (JSON.stringify(filteredRecipients) !== JSON.stringify(filteredOutputs)) {
129
+ throw new Error('Tx outputs do not match with expected txParams recipients');
130
+ }
131
+ }
69
132
  return true;
70
- }
71
133
  default: {
72
134
  throw new Error(`unknown transaction type, ${transaction.type}`);
73
135
  }
74
136
  }
75
137
  }
76
138
  /** @inheritDoc */
77
- isWalletAddress(params) {
78
- throw new Error('Method not implemented.');
139
+ async isWalletAddress(params) {
140
+ // TODO: refactor this and use the `verifyEddsaMemoBasedWalletAddress` once published from sdk-core
141
+ // https://bitgoinc.atlassian.net/browse/COIN-6347
142
+ const { keychains, address: newAddress, index } = params;
143
+ const [addressPart, memoId] = newAddress.split('?memoId=');
144
+ if (!this.isValidAddress(addressPart)) {
145
+ throw new sdk_core_1.InvalidAddressError(`invalid address: ${newAddress}`);
146
+ }
147
+ if (memoId && memoId !== `${index}`) {
148
+ throw new sdk_core_1.InvalidAddressError(`invalid memoId index: ${memoId}`);
149
+ }
150
+ const commonKeychain = (0, sdk_core_1.extractCommonKeychain)(keychains);
151
+ const MPC = await sdk_core_1.EDDSAMethods.getInitializedMpcInstance();
152
+ const derivationPath = 'm/0';
153
+ const derivedPublicKey = MPC.deriveUnhardened(commonKeychain, derivationPath).slice(0, 64);
154
+ const publicKeyBase64 = Buffer.from(derivedPublicKey, 'hex').toString('base64');
155
+ const rootAddressFingerprint = utils_1.default.getAddressFromPublicKey(publicKeyBase64);
156
+ const rootAddress = `${rootAddressFingerprint.slice(0, 5)}::${rootAddressFingerprint}`;
157
+ return addressPart === rootAddress;
79
158
  }
80
159
  /** @inheritDoc */
81
160
  parseTransaction(params) {
@@ -94,6 +173,20 @@ class Canton extends sdk_core_1.BaseCoin {
94
173
  };
95
174
  }
96
175
  /** @inheritDoc */
176
+ explainTransaction(params) {
177
+ const factory = this.getBuilder();
178
+ let rebuiltTransaction;
179
+ const txRaw = params.txHex;
180
+ try {
181
+ const txBuilder = factory.from(txRaw);
182
+ rebuiltTransaction = txBuilder.transaction;
183
+ }
184
+ catch (e) {
185
+ throw new Error('Invalid transaction');
186
+ }
187
+ return rebuiltTransaction.explainTransaction();
188
+ }
189
+ /** @inheritDoc */
97
190
  isValidPub(pub) {
98
191
  return utils_1.default.isValidPublicKey(pub);
99
192
  }
@@ -104,6 +197,17 @@ class Canton extends sdk_core_1.BaseCoin {
104
197
  return utils_1.default.isValidAddress(address);
105
198
  }
106
199
  /** @inheritDoc */
200
+ getTokenEnablementConfig() {
201
+ return {
202
+ requiresTokenEnablement: true,
203
+ supportsMultipleTokenEnablements: false,
204
+ };
205
+ }
206
+ getAddressFromPublicKey(publicKeyHex) {
207
+ const publicKeyBase64 = Buffer.from(publicKeyHex, 'hex').toString('base64');
208
+ return utils_1.default.getAddressFromPublicKey(publicKeyBase64);
209
+ }
210
+ /** @inheritDoc */
107
211
  signTransaction(params) {
108
212
  throw new Error('Method not implemented.');
109
213
  }
@@ -114,6 +218,18 @@ class Canton extends sdk_core_1.BaseCoin {
114
218
  }
115
219
  (0, sdk_lib_mpc_1.auditEddsaPrivateKey)(prv, publicKey ?? '');
116
220
  }
221
+ /** @inheritDoc */
222
+ setCoinSpecificFieldsInIntent(intent, params) {
223
+ if (params.txRequestId) {
224
+ intent.txRequestId = params.txRequestId;
225
+ }
226
+ if (params.transferOfferId) {
227
+ intent.transferOfferId = params.transferOfferId;
228
+ }
229
+ if (params.unspents) {
230
+ intent.unspents = params.unspents;
231
+ }
232
+ }
117
233
  }
118
234
  exports.Canton = Canton;
119
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NhbnRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREFlOEI7QUFDOUIseURBQStEO0FBQy9ELGlEQUF5RTtBQUN6RSwrQkFBa0Q7QUFDbEQsMkNBQXlEO0FBQ3pELHdEQUFnQztBQUVoQyxNQUFhLE1BQU8sU0FBUSxtQkFBUTtJQUdsQyxZQUFzQixLQUFnQixFQUFFLFdBQXVDO1FBQzdFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUViLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNqQixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7UUFDeEUsQ0FBQztRQUVELElBQUksQ0FBQyxZQUFZLEdBQUcsV0FBVyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCLEVBQUUsV0FBdUM7UUFDN0UsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVELGtCQUFrQjtJQUNYLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsUUFBUTtRQUNiLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxTQUFTO1FBQ2QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNYLFdBQVc7UUFDaEIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLHNCQUFzQjtRQUNwQixPQUFPLHdCQUFhLENBQUMsR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFFRCxvQkFBb0I7SUFDcEIsdUNBQXVDO1FBQ3JDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVELGVBQWU7UUFDYixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxNQUFnQztRQUN0RCxNQUFNLFVBQVUsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLDREQUE0RDtRQUM1RCxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQztRQUMxQyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDO1FBQy9CLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztRQUNqRSxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsSUFBSSwrQkFBeUIsQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDeEUsTUFBTSxXQUFXLEdBQUcsU0FBUyxDQUFDLFdBQVcsQ0FBQztRQUMxQyxRQUFRLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUN6QixLQUFLLDBCQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO2dCQUMxQyx3RUFBd0U7Z0JBQ3hFLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztZQUNELE9BQU8sQ0FBQyxDQUFDLENBQUM7Z0JBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7WUFDbkUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGVBQWUsQ0FBQyxNQUErQjtRQUM3QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixnQkFBZ0IsQ0FBQyxNQUErQjtRQUM5QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixlQUFlLENBQUMsSUFBYTtRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksaUJBQWEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksaUJBQWEsRUFBRSxDQUFDO1FBQ3pFLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUMvQixJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO1FBQ3BELENBQUM7UUFDRCxPQUFPO1lBQ0wsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1lBQ2IsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHO1NBQ2QsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsVUFBVSxDQUFDLEdBQVc7UUFDcEIsT0FBTyxlQUFLLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixjQUFjLENBQUMsT0FBZTtRQUM1QiwyREFBMkQ7UUFDM0QsdUVBQXVFO1FBQ3ZFLE9BQU8sZUFBSyxDQUFDLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGVBQWUsQ0FBQyxNQUE4QjtRQUM1QyxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixpQkFBaUIsQ0FBQyxFQUFFLFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUEyQjtRQUN6RSxJQUFJLFlBQVksS0FBSyx3QkFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBQSxrQ0FBb0IsRUFBQyxHQUFHLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7Q0FDRjtBQTdIRCx3QkE2SEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyxcbiAgQmFzZUNvaW4sXG4gIEJpdEdvQmFzZSxcbiAgS2V5UGFpcixcbiAgTVBDQWxnb3JpdGhtLFxuICBNdWx0aXNpZ1R5cGUsXG4gIG11bHRpc2lnVHlwZXMsXG4gIFBhcnNlZFRyYW5zYWN0aW9uLFxuICBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgU2lnbmVkVHJhbnNhY3Rpb24sXG4gIFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFRyYW5zYWN0aW9uVHlwZSxcbiAgVHNzVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbn0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgYXVkaXRFZGRzYVByaXZhdGVLZXkgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstbGliLW1wYyc7XG5pbXBvcnQgeyBCYXNlQ29pbiBhcyBTdGF0aWNzQmFzZUNvaW4sIGNvaW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5IH0gZnJvbSAnLi9saWInO1xuaW1wb3J0IHsgS2V5UGFpciBhcyBDYW50b25LZXlQYWlyIH0gZnJvbSAnLi9saWIva2V5UGFpcic7XG5pbXBvcnQgdXRpbHMgZnJvbSAnLi9saWIvdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgQ2FudG9uIGV4dGVuZHMgQmFzZUNvaW4ge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX3N0YXRpY3NDb2luOiBSZWFkb25seTxTdGF0aWNzQmFzZUNvaW4+O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pIHtcbiAgICBzdXBlcihiaXRnbyk7XG5cbiAgICBpZiAoIXN0YXRpY3NDb2luKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgY29uc3RydWN0b3IgcGFyYW1ldGVyIHN0YXRpY3NDb2luJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc3RhdGljc0NvaW4gPSBzdGF0aWNzQ29pbjtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVJbnN0YW5jZShiaXRnbzogQml0R29CYXNlLCBzdGF0aWNzQ29pbj86IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj4pOiBCYXNlQ29pbiB7XG4gICAgcmV0dXJuIG5ldyBDYW50b24oYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0QmFzZUZhY3RvcigpOiBudW1iZXIge1xuICAgIHJldHVybiAxZTEwO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiAnY2FudG9uJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0RmFtaWx5KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICdjYW50b24nO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHB1YmxpYyBnZXRGdWxsTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnQ2FudG9uJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBpbmhlcml0ZWQgZG9jICovXG4gIGdldERlZmF1bHRNdWx0aXNpZ1R5cGUoKTogTXVsdGlzaWdUeXBlIHtcbiAgICByZXR1cm4gbXVsdGlzaWdUeXBlcy50c3M7XG4gIH1cblxuICAvKiogaW5oZXJpdGVkIGRvYyAqL1xuICByZXF1aXJlc1dhbGxldEluaXRpYWxpemF0aW9uVHJhbnNhY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VkZHNhJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhc3luYyB2ZXJpZnlUcmFuc2FjdGlvbihwYXJhbXM6IFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGNvbnN0IGNvaW5Db25maWcgPSBjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKTtcbiAgICAvLyBleHRyYWN0IGB0eFBhcmFtc2Agd2hlbiB2ZXJpZnlpbmcgb3RoZXIgdHJhbnNhY3Rpb24gdHlwZXNcbiAgICBjb25zdCB7IHR4UHJlYnVpbGQ6IHR4UHJlYnVpbGQgfSA9IHBhcmFtcztcbiAgICBjb25zdCByYXdUeCA9IHR4UHJlYnVpbGQudHhIZXg7XG4gICAgaWYgKCFyYXdUeCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdtaXNzaW5nIHJlcXVpcmVkIHR4IHByZWJ1aWxkIHByb3BlcnR5IHR4SGV4Jyk7XG4gICAgfVxuICAgIGNvbnN0IHR4QnVpbGRlciA9IG5ldyBUcmFuc2FjdGlvbkJ1aWxkZXJGYWN0b3J5KGNvaW5Db25maWcpLmZyb20ocmF3VHgpO1xuICAgIGNvbnN0IHRyYW5zYWN0aW9uID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uO1xuICAgIHN3aXRjaCAodHJhbnNhY3Rpb24udHlwZSkge1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb246IHtcbiAgICAgICAgLy8gdGhlcmUgaXMgbm8gaW5wdXQgZm9yIHRoaXMgdHlwZSBvZiB0cmFuc2FjdGlvbiwgc28gYWx3YXlzIHJldHVybiB0cnVlXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gdHJhbnNhY3Rpb24gdHlwZSwgJHt0cmFuc2FjdGlvbi50eXBlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBUc3NWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIHRocm93IG5ldyBFcnJvcignTWV0aG9kIG5vdCBpbXBsZW1lbnRlZC4nKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwYXJzZVRyYW5zYWN0aW9uKHBhcmFtczogUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFBhcnNlZFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdlbmVyYXRlS2V5UGFpcihzZWVkPzogQnVmZmVyKTogS2V5UGFpciB7XG4gICAgY29uc3Qga2V5UGFpciA9IHNlZWQgPyBuZXcgQ2FudG9uS2V5UGFpcih7IHNlZWQgfSkgOiBuZXcgQ2FudG9uS2V5UGFpcigpO1xuICAgIGNvbnN0IGtleXMgPSBrZXlQYWlyLmdldEtleXMoKTtcbiAgICBpZiAoIWtleXMucHJ2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ01pc3NpbmcgcHJ2IGluIGtleSBnZW5lcmF0aW9uLicpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiBrZXlzLnB1YixcbiAgICAgIHBydjoga2V5cy5wcnYsXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBpc1ZhbGlkUHViKHB1Yjogc3RyaW5nKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHV0aWxzLmlzVmFsaWRQdWJsaWNLZXkocHViKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBpc1ZhbGlkQWRkcmVzcyhhZGRyZXNzOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICAvLyBjYW50b24gYWRkcmVzc2VzIGFyZSBvZiB0aGUgZm9ybSwgcGFydHlIaW50OjpmaW5nZXJwcmludFxuICAgIC8vIHdoZXJlIHBhcnR5SGludCBpcyBvZiBsZW5ndGggNSBhbmQgZmluZ2VycHJpbnQgaXMgNjggY2hhcmFjdGVycyBsb25nXG4gICAgcmV0dXJuIHV0aWxzLmlzVmFsaWRBZGRyZXNzKGFkZHJlc3MpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHsgbXVsdGlTaWdUeXBlLCBwcnYsIHB1YmxpY0tleSB9OiBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyk6IHZvaWQge1xuICAgIGlmIChtdWx0aVNpZ1R5cGUgIT09IG11bHRpc2lnVHlwZXMudHNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG11bHRpU2lnVHlwZScpO1xuICAgIH1cbiAgICBhdWRpdEVkZHNhUHJpdmF0ZUtleShwcnYsIHB1YmxpY0tleSA/PyAnJyk7XG4gIH1cbn1cbiJdfQ==
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NhbnRvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxtREF1QjhCO0FBQzlCLHlEQUErRDtBQUMvRCxpREFBeUU7QUFDekUsK0JBQWtEO0FBQ2xELDJDQUF5RDtBQUV6RCx3REFBZ0M7QUFVaEMsTUFBYSxNQUFPLFNBQVEsbUJBQVE7SUFHbEMsWUFBc0IsS0FBZ0IsRUFBRSxXQUF1QztRQUM3RSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDakIsTUFBTSxJQUFJLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO1FBQ3hFLENBQUM7UUFFRCxJQUFJLENBQUMsWUFBWSxHQUFHLFdBQVcsQ0FBQztJQUNsQyxDQUFDO0lBRUQsTUFBTSxDQUFDLGNBQWMsQ0FBQyxLQUFnQixFQUFFLFdBQXVDO1FBQzdFLE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTyxVQUFVO1FBQ2hCLE9BQU8sSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDbkUsQ0FBQztJQUVELGtCQUFrQjtJQUNYLGFBQWE7UUFDbEIsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ1gsUUFBUTtRQUNiLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxrQkFBa0I7SUFDWCxTQUFTO1FBQ2QsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNYLFdBQVc7UUFDaEIsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsb0JBQW9CO0lBQ3BCLHNC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LFlBQVksRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUEyQjtRQUN6RSxJQUFJLFlBQVksS0FBSyx3QkFBYSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ3ZDLE1BQU0sSUFBSSxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUM5QyxDQUFDO1FBQ0QsSUFBQSxrQ0FBb0IsRUFBQyxHQUFHLEVBQUUsU0FBUyxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsNkJBQTZCLENBQUMsTUFBdUIsRUFBRSxNQUE0QztRQUNqRyxJQUFJLE1BQU0sQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUN2QixNQUFNLENBQUMsV0FBVyxHQUFHLE1BQU0sQ0FBQyxXQUFXLENBQUM7UUFDMUMsQ0FBQztRQUNELElBQUksTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO1lBQzNCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNsRCxDQUFDO1FBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDcEIsTUFBTSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO1FBQ3BDLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUEzUEQsd0JBMlBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQXVkaXREZWNyeXB0ZWRLZXlQYXJhbXMsXG4gIEJhc2VDb2luLFxuICBCaXRHb0Jhc2UsXG4gIEtleVBhaXIsXG4gIE1QQ0FsZ29yaXRobSxcbiAgTXVsdGlzaWdUeXBlLFxuICBtdWx0aXNpZ1R5cGVzLFxuICBQYXJzZWRUcmFuc2FjdGlvbixcbiAgUGFyc2VUcmFuc2FjdGlvbk9wdGlvbnMsXG4gIFNpZ25lZFRyYW5zYWN0aW9uLFxuICBTaWduVHJhbnNhY3Rpb25PcHRpb25zLFxuICBUcmFuc2FjdGlvblR5cGUsXG4gIFZlcmlmeVRyYW5zYWN0aW9uT3B0aW9ucyxcbiAgVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiBhcyBCYXNlVHJhbnNhY3Rpb25FeHBsYW5hdGlvbixcbiAgQmFzZVRyYW5zYWN0aW9uLFxuICBQb3B1bGF0ZWRJbnRlbnQsXG4gIFByZWJ1aWxkVHJhbnNhY3Rpb25XaXRoSW50ZW50T3B0aW9ucyxcbiAgVHNzVmVyaWZ5QWRkcmVzc09wdGlvbnMsXG4gIEludmFsaWRBZGRyZXNzRXJyb3IsXG4gIGV4dHJhY3RDb21tb25LZXljaGFpbixcbiAgRUREU0FNZXRob2RzLFxuICBUb2tlbkVuYWJsZW1lbnRDb25maWcsXG59IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IGF1ZGl0RWRkc2FQcml2YXRlS2V5IH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWxpYi1tcGMnO1xuaW1wb3J0IHsgQmFzZUNvaW4gYXMgU3RhdGljc0Jhc2VDb2luLCBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4vbGliJztcbmltcG9ydCB7IEtleVBhaXIgYXMgQ2FudG9uS2V5UGFpciB9IGZyb20gJy4vbGliL2tleVBhaXInO1xuaW1wb3J0IHsgVHhEYXRhIH0gZnJvbSAnLi9saWIvaWZhY2UnO1xuaW1wb3J0IHV0aWxzIGZyb20gJy4vbGliL3V0aWxzJztcblxuZXhwb3J0IGludGVyZmFjZSBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uIGV4dGVuZHMgQmFzZVRyYW5zYWN0aW9uRXhwbGFuYXRpb24ge1xuICB0eXBlOiBUcmFuc2FjdGlvblR5cGU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXhwbGFpblRyYW5zYWN0aW9uT3B0aW9ucyB7XG4gIHR4SGV4OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBDYW50b24gZXh0ZW5kcyBCYXNlQ29pbiB7XG4gIHByb3RlY3RlZCByZWFkb25seSBfc3RhdGljc0NvaW46IFJlYWRvbmx5PFN0YXRpY3NCYXNlQ29pbj47XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPikge1xuICAgIHN1cGVyKGJpdGdvKTtcblxuICAgIGlmICghc3RhdGljc0NvaW4pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignbWlzc2luZyByZXF1aXJlZCBjb25zdHJ1Y3RvciBwYXJhbWV0ZXIgc3RhdGljc0NvaW4nKTtcbiAgICB9XG5cbiAgICB0aGlzLl9zdGF0aWNzQ29pbiA9IHN0YXRpY3NDb2luO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZUluc3RhbmNlKGJpdGdvOiBCaXRHb0Jhc2UsIHN0YXRpY3NDb2luPzogUmVhZG9ubHk8U3RhdGljc0Jhc2VDb2luPik6IEJhc2VDb2luIHtcbiAgICByZXR1cm4gbmV3IENhbnRvbihiaXRnbywgc3RhdGljc0NvaW4pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRCdWlsZGVyKCk6IFRyYW5zYWN0aW9uQnVpbGRlckZhY3Rvcnkge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQodGhpcy5nZXRDaGFpbigpKSk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGdldEJhc2VGYWN0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gMWUxMDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ2NhbnRvbic7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgcHVibGljIGdldEZhbWlseSgpOiBzdHJpbmcge1xuICAgIHJldHVybiAnY2FudG9uJztcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBwdWJsaWMgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ0NhbnRvbic7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgc3VwcG9ydHNUc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKiogaW5oZXJpdGVkIGRvYyAqL1xuICBnZXREZWZhdWx0TXVsdGlzaWdUeXBlKCk6IE11bHRpc2lnVHlwZSB7XG4gICAgcmV0dXJuIG11bHRpc2lnVHlwZXMudHNzO1xuICB9XG5cbiAgLyoqIGluaGVyaXRlZCBkb2MgKi9cbiAgcmVxdWlyZXNXYWxsZXRJbml0aWFsaXphdGlvblRyYW5zYWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgZ2V0TVBDQWxnb3JpdGhtKCk6IE1QQ0FsZ29yaXRobSB7XG4gICAgcmV0dXJuICdlZGRzYSc7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgYXN5bmMgdmVyaWZ5VHJhbnNhY3Rpb24ocGFyYW1zOiBWZXJpZnlUcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBjb2luQ29uZmlnID0gY29pbnMuZ2V0KHRoaXMuZ2V0Q2hhaW4oKSk7XG4gICAgY29uc3QgeyB0eFByZWJ1aWxkOiB0eFByZWJ1aWxkLCB0eFBhcmFtcyB9ID0gcGFyYW1zO1xuICAgIGNvbnN0IHJhd1R4ID0gdHhQcmVidWlsZC50eEhleDtcbiAgICBpZiAoIXJhd1R4KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ21pc3NpbmcgcmVxdWlyZWQgdHggcHJlYnVpbGQgcHJvcGVydHkgdHhIZXgnKTtcbiAgICB9XG4gICAgY29uc3QgdHhCdWlsZGVyID0gbmV3IFRyYW5zYWN0aW9uQnVpbGRlckZhY3RvcnkoY29pbkNvbmZpZykuZnJvbShyYXdUeCk7XG4gICAgY29uc3QgdHJhbnNhY3Rpb24gPSB0eEJ1aWxkZXIudHJhbnNhY3Rpb247XG4gICAgY29uc3QgZXhwbGFpbmVkVHggPSB0cmFuc2FjdGlvbi5leHBsYWluVHJhbnNhY3Rpb24oKTtcbiAgICBzd2l0Y2ggKHRyYW5zYWN0aW9uLnR5cGUpIHtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLldhbGxldEluaXRpYWxpemF0aW9uOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuVHJhbnNmZXJBY2NlcHQ6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2ZlclJlamVjdDpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlRyYW5zZmVyQWNrbm93bGVkZ2U6XG4gICAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5UcmFuc2Zlck9mZmVyV2l0aGRyYXduOlxuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuQ29zaWduRGVsZWdhdGlvbkFjY2VwdDpcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLkNvc2lnbkRlbGVnYXRpb25Qcm9wb3NhbDpcbiAgICAgICAgLy8gVGhlcmUgaXMgbm8gaW5wdXQgZm9yIHRoZXNlIHR5cGUgb2YgdHJhbnNhY3Rpb25zLCBzbyBhbHdheXMgcmV0dXJuIHRydWUuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgY2FzZSBUcmFuc2FjdGlvblR5cGUuT25lU3RlcFByZUFwcHJvdmFsOlxuICAgICAgICAvLyBDYW50b24gaXMgYWx3YXlzIGEgVFNTIHdhbGxldC4gVGhlIFNESydzIGJ1aWxkVG9rZW5FbmFibGVtZW50cyBwYXNzZXMgZW5hYmxlVG9rZW5zXG4gICAgICAgIC8vIHRocm91Z2ggdW5jaGFuZ2VkIGZvciBUU1Mgd2FsbGV0cyAobm8gY29udmVyc2lvbiB0byByZWNpcGllbnRzKSwgc28gdHhQYXJhbXMuZW5hYmxlVG9rZW5zXG4gICAgICAgIC8vIGlzIHRoZSBvbmx5IHNvdXJjZSBvZiB1c2VyIGludGVudCBoZXJlLlxuICAgICAgICAvL1xuICAgICAgICAvLyBSZWNlaXZlciB2YWxpZGF0aW9uOiB0aGUgcmVjZWl2ZXIgb2YgYSBPbmVTdGVwUHJlQXBwcm92YWwgaXMgYWx3YXlzIHRoZSB3YWxsZXQncyByb290IGFkZHJlc3MuXG4gICAgICAgIC8vIFdlIHVzZSBlbmFibGVUb2tlbi5hZGRyZXNzIGlmIGV4cGxpY2l0bHkgcHJvdmlkZWQsIG90aGVyd2lzZSBmYWxsIGJhY2sgdG9cbiAgICAgICAgLy8gd2FsbGV0LmNvaW5TcGVjaWZpYygpLnJvb3RBZGRyZXNzICh0aGUgQ2FudG9uIHBhcnR5IElEIHN0b3JlZCBhdCB3YWxsZXQgY3JlYXRpb24gdGltZSkuXG4gICAgICAgIC8vIFRva2VuIG5hbWUgdmFsaWRhdGlvbjogY2hlY2tlZCB3aGVuIHRoZSB0b2tlbiBpcyByZXNvbHZhYmxlIGZyb20gc3RhdGljcy5cbiAgICAgICAgaWYgKFxuICAgICAgICAgIHR4UGFyYW1zLnR5cGUgPT09ICdlbmFibGV0b2tlbicgJiZcbiAgICAgICAgICB0eFBhcmFtcy5lbmFibGVUb2tlbnMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgIHR4UGFyYW1zLmVuYWJsZVRva2Vucy5sZW5ndGggPiAwXG4gICAgICAgICkge1xuICAgICAgICAgIGNvbnN0IHR4RGF0YSA9IHRyYW5zYWN0aW9uLnRvSnNvbigpIGFzIFR4RGF0YTtcbiAgICAgICAgICBjb25zdCBlbmFibGVUb2tlbiA9IHR4UGFyYW1zLmVuYWJsZVRva2Vuc1swXTtcbiAgICAgICAgICBjb25zdCB3YWxsZXRSb290QWRkcmVzcyA9IHBhcmFtcy53YWxsZXQ/LmNvaW5TcGVjaWZpYz8uKCk/LnJvb3RBZGRyZXNzO1xuICAgICAgICAgIGNvbnN0IGV4cGVjdGVkUmVjZWl2ZXIgPSBlbmFibGVUb2tlbi5hZGRyZXNzID8/IHdhbGxldFJvb3RBZGRyZXNzO1xuICAgICAgICAgIGlmIChleHBlY3RlZFJlY2VpdmVyKSB7XG4gICAgICAgICAgICAvLyBTdHJpcCA/bWVtb0lkIHN1ZmZpeCBpZiBwcmVzZW50IGluIHRoZSBzdG9yZWQgYWRkcmVzc1xuICAgICAgICAgICAgY29uc3QgW2V4cGVjdGVkUmVjZWl2ZXJCYXNlXSA9IGV4cGVjdGVkUmVjZWl2ZXIuc3BsaXQoJz9tZW1vSWQ9Jyk7XG4gICAgICAgICAgICBpZiAodHhEYXRhLnJlY2VpdmVyICE9PSBleHBlY3RlZFJlY2VpdmVyQmFzZSkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgICAgYE9uZVN0ZXBQcmVBcHByb3ZhbCByZWNlaXZlciBtaXNtYXRjaDogZXhwZWN0ZWQgJyR7ZXhwZWN0ZWRSZWNlaXZlckJhc2V9JywgZ290ICcke3R4RGF0YS5yZWNlaXZlcn0nYFxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAodHhEYXRhLnRva2VuICE9PSB1bmRlZmluZWQgJiYgdHhEYXRhLnRva2VuICE9PSBlbmFibGVUb2tlbi5uYW1lKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBPbmVTdGVwUHJlQXBwcm92YWwgdG9rZW4gbmFtZSBtaXNtYXRjaDogZXhwZWN0ZWQgJyR7ZW5hYmxlVG9rZW4ubmFtZX0nLCBnb3QgJyR7dHhEYXRhLnRva2VufSdgXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIGNhc2UgVHJhbnNhY3Rpb25UeXBlLlNlbmQ6XG4gICAgICAgIGlmICh0eFBhcmFtcy5yZWNpcGllbnRzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBjb25zdCBmaWx0ZXJlZFJlY2lwaWVudHMgPSB0eFBhcmFtcy5yZWNpcGllbnRzPy5tYXAoKHJlY2lwaWVudCkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBhZGRyZXNzLCBhbW91bnQsIHRva2VuTmFtZSB9ID0gcmVjaXBpZW50O1xuICAgICAgICAgICAgY29uc3QgW2FkZHJlc3NQYXJ0LCBtZW1vSWRdID0gYWRkcmVzcy5zcGxpdCgnP21lbW9JZD0nKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGFkZHJlc3M6IGFkZHJlc3NQYXJ0LFxuICAgICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICAgIC4uLihtZW1vSWQgJiYgeyBtZW1vOiBtZW1vSWQgfSksXG4gICAgICAgICAgICAgIC4uLih0b2tlbk5hbWUgJiYgeyB0b2tlbk5hbWUgfSksXG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGNvbnN0IGZpbHRlcmVkT3V0cHV0cyA9IGV4cGxhaW5lZFR4Lm91dHB1dHM/Lm1hcCgob3V0cHV0KSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IGFkZHJlc3MsIGFtb3VudCwgdG9rZW5OYW1lLCBtZW1vIH0gPSBvdXRwdXQ7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBhZGRyZXNzLFxuICAgICAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgICAgIC4uLihtZW1vICYmIHsgbWVtbyB9KSxcbiAgICAgICAgICAgICAgLi4uKHRva2VuTmFtZSAmJiB7IHRva2VuTmFtZSB9KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KGZpbHRlcmVkUmVjaXBpZW50cykgIT09IEpTT04uc3RyaW5naWZ5KGZpbHRlcmVkT3V0cHV0cykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignVHggb3V0cHV0cyBkbyBub3QgbWF0Y2ggd2l0aCBleHBlY3RlZCB0eFBhcmFtcyByZWNpcGllbnRzJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgZGVmYXVsdDoge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYHVua25vd24gdHJhbnNhY3Rpb24gdHlwZSwgJHt0cmFuc2FjdGlvbi50eXBlfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBhc3luYyBpc1dhbGxldEFkZHJlc3MocGFyYW1zOiBUc3NWZXJpZnlBZGRyZXNzT3B0aW9ucyk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIC8vIFRPRE86IHJlZmFjdG9yIHRoaXMgYW5kIHVzZSB0aGUgYHZlcmlmeUVkZHNhTWVtb0Jhc2VkV2FsbGV0QWRkcmVzc2Agb25jZSBwdWJsaXNoZWQgZnJvbSBzZGstY29yZVxuICAgIC8vIGh0dHBzOi8vYml0Z29pbmMuYXRsYXNzaWFuLm5ldC9icm93c2UvQ09JTi02MzQ3XG4gICAgY29uc3QgeyBrZXljaGFpbnMsIGFkZHJlc3M6IG5ld0FkZHJlc3MsIGluZGV4IH0gPSBwYXJhbXM7XG4gICAgY29uc3QgW2FkZHJlc3NQYXJ0LCBtZW1vSWRdID0gbmV3QWRkcmVzcy5zcGxpdCgnP21lbW9JZD0nKTtcbiAgICBpZiAoIXRoaXMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzc1BhcnQpKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBhZGRyZXNzOiAke25ld0FkZHJlc3N9YCk7XG4gICAgfVxuICAgIGlmIChtZW1vSWQgJiYgbWVtb0lkICE9PSBgJHtpbmRleH1gKSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEFkZHJlc3NFcnJvcihgaW52YWxpZCBtZW1vSWQgaW5kZXg6ICR7bWVtb0lkfWApO1xuICAgIH1cbiAgICBjb25zdCBjb21tb25LZXljaGFpbiA9IGV4dHJhY3RDb21tb25LZXljaGFpbihrZXljaGFpbnMpO1xuICAgIGNvbnN0IE1QQyA9IGF3YWl0IEVERFNBTWV0aG9kcy5nZXRJbml0aWFsaXplZE1wY0luc3RhbmNlKCk7XG4gICAgY29uc3QgZGVyaXZhdGlvblBhdGggPSAnbS8wJztcbiAgICBjb25zdCBkZXJpdmVkUHVibGljS2V5ID0gTVBDLmRlcml2ZVVuaGFyZGVuZWQoY29tbW9uS2V5Y2hhaW4sIGRlcml2YXRpb25QYXRoKS5zbGljZSgwLCA2NCk7XG4gICAgY29uc3QgcHVibGljS2V5QmFzZTY0ID0gQnVmZmVyLmZyb20oZGVyaXZlZFB1YmxpY0tleSwgJ2hleCcpLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICBjb25zdCByb290QWRkcmVzc0ZpbmdlcnByaW50ID0gdXRpbHMuZ2V0QWRkcmVzc0Zyb21QdWJsaWNLZXkocHVibGljS2V5QmFzZTY0KTtcbiAgICBjb25zdCByb290QWRkcmVzcyA9IGAke3Jvb3RBZGRyZXNzRmluZ2VycHJpbnQuc2xpY2UoMCwgNSl9Ojoke3Jvb3RBZGRyZXNzRmluZ2VycHJpbnR9YDtcbiAgICByZXR1cm4gYWRkcmVzc1BhcnQgPT09IHJvb3RBZGRyZXNzO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHBhcnNlVHJhbnNhY3Rpb24ocGFyYW1zOiBQYXJzZVRyYW5zYWN0aW9uT3B0aW9ucyk6IFByb21pc2U8UGFyc2VkVHJhbnNhY3Rpb24+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ01ldGhvZCBub3QgaW1wbGVtZW50ZWQuJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2VuZXJhdGVLZXlQYWlyKHNlZWQ/OiBCdWZmZXIpOiBLZXlQYWlyIHtcbiAgICBjb25zdCBrZXlQYWlyID0gc2VlZCA/IG5ldyBDYW50b25LZXlQYWlyKHsgc2VlZCB9KSA6IG5ldyBDYW50b25LZXlQYWlyKCk7XG4gICAgY29uc3Qga2V5cyA9IGtleVBhaXIuZ2V0S2V5cygpO1xuICAgIGlmICgha2V5cy5wcnYpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTWlzc2luZyBwcnYgaW4ga2V5IGdlbmVyYXRpb24uJyk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleXMucHViLFxuICAgICAgcHJ2OiBrZXlzLnBydixcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGV4cGxhaW5UcmFuc2FjdGlvbihwYXJhbXM6IEV4cGxhaW5UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFRyYW5zYWN0aW9uRXhwbGFuYXRpb24+IHtcbiAgICBjb25zdCBmYWN0b3J5ID0gdGhpcy5nZXRCdWlsZGVyKCk7XG4gICAgbGV0IHJlYnVpbHRUcmFuc2FjdGlvbjogQmFzZVRyYW5zYWN0aW9uO1xuICAgIGNvbnN0IHR4UmF3ID0gcGFyYW1zLnR4SGV4O1xuICAgIHRyeSB7XG4gICAgICBjb25zdCB0eEJ1aWxkZXIgPSBmYWN0b3J5LmZyb20odHhSYXcpO1xuICAgICAgcmVidWlsdFRyYW5zYWN0aW9uID0gdHhCdWlsZGVyLnRyYW5zYWN0aW9uO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCB0cmFuc2FjdGlvbicpO1xuICAgIH1cbiAgICByZXR1cm4gcmVidWlsdFRyYW5zYWN0aW9uLmV4cGxhaW5UcmFuc2FjdGlvbigpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGlzVmFsaWRQdWIocHViOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZFB1YmxpY0tleShwdWIpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGlzVmFsaWRBZGRyZXNzKGFkZHJlc3M6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIC8vIGNhbnRvbiBhZGRyZXNzZXMgYXJlIG9mIHRoZSBmb3JtLCBwYXJ0eUhpbnQ6OmZpbmdlcnByaW50XG4gICAgLy8gd2hlcmUgcGFydHlIaW50IGlzIG9mIGxlbmd0aCA1IGFuZCBmaW5nZXJwcmludCBpcyA2OCBjaGFyYWN0ZXJzIGxvbmdcbiAgICByZXR1cm4gdXRpbHMuaXNWYWxpZEFkZHJlc3MoYWRkcmVzcyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgZ2V0VG9rZW5FbmFibGVtZW50Q29uZmlnKCk6IFRva2VuRW5hYmxlbWVudENvbmZpZyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVpcmVzVG9rZW5FbmFibGVtZW50OiB0cnVlLFxuICAgICAgc3VwcG9ydHNNdWx0aXBsZVRva2VuRW5hYmxlbWVudHM6IGZhbHNlLFxuICAgIH07XG4gIH1cblxuICBnZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXlIZXg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgcHVibGljS2V5QmFzZTY0ID0gQnVmZmVyLmZyb20ocHVibGljS2V5SGV4LCAnaGV4JykudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgIHJldHVybiB1dGlscy5nZXRBZGRyZXNzRnJvbVB1YmxpY0tleShwdWJsaWNLZXlCYXNlNjQpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHNpZ25UcmFuc2FjdGlvbihwYXJhbXM6IFNpZ25UcmFuc2FjdGlvbk9wdGlvbnMpOiBQcm9taXNlPFNpZ25lZFRyYW5zYWN0aW9uPiB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdNZXRob2Qgbm90IGltcGxlbWVudGVkLicpO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGF1ZGl0RGVjcnlwdGVkS2V5KHsgbXVsdGlTaWdUeXBlLCBwcnYsIHB1YmxpY0tleSB9OiBBdWRpdERlY3J5cHRlZEtleVBhcmFtcyk6IHZvaWQge1xuICAgIGlmIChtdWx0aVNpZ1R5cGUgIT09IG11bHRpc2lnVHlwZXMudHNzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIG11bHRpU2lnVHlwZScpO1xuICAgIH1cbiAgICBhdWRpdEVkZHNhUHJpdmF0ZUtleShwcnYsIHB1YmxpY0tleSA/PyAnJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXREb2MgKi9cbiAgc2V0Q29pblNwZWNpZmljRmllbGRzSW5JbnRlbnQoaW50ZW50OiBQb3B1bGF0ZWRJbnRlbnQsIHBhcmFtczogUHJlYnVpbGRUcmFuc2FjdGlvbldpdGhJbnRlbnRPcHRpb25zKTogdm9pZCB7XG4gICAgaWYgKHBhcmFtcy50eFJlcXVlc3RJZCkge1xuICAgICAgaW50ZW50LnR4UmVxdWVzdElkID0gcGFyYW1zLnR4UmVxdWVzdElkO1xuICAgIH1cbiAgICBpZiAocGFyYW1zLnRyYW5zZmVyT2ZmZXJJZCkge1xuICAgICAgaW50ZW50LnRyYW5zZmVyT2ZmZXJJZCA9IHBhcmFtcy50cmFuc2Zlck9mZmVySWQ7XG4gICAgfVxuICAgIGlmIChwYXJhbXMudW5zcGVudHMpIHtcbiAgICAgIGludGVudC51bnNwZW50cyA9IHBhcmFtcy51bnNwZW50cztcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,19 @@
1
+ import { BitGoBase, CoinConstructor, NamedCoinConstructor } from '@bitgo-beta/sdk-core';
2
+ import { CantonTokenConfig } from '@bitgo-beta/statics';
3
+ import { Canton } from './canton';
4
+ export declare class CantonToken extends Canton {
5
+ readonly tokenConfig: CantonTokenConfig;
6
+ constructor(bitgo: BitGoBase, tokenConfig: CantonTokenConfig);
7
+ static createTokenConstructor(config: CantonTokenConfig): CoinConstructor;
8
+ static createTokenConstructors(tokenConfig?: CantonTokenConfig[]): NamedCoinConstructor[];
9
+ get name(): string;
10
+ get coin(): string;
11
+ get baseUrl(): string;
12
+ get contractAddress(): string;
13
+ get decimalPlaces(): number;
14
+ getChain(): string;
15
+ getBaseChain(): string;
16
+ getFullName(): string;
17
+ getBaseFactor(): number;
18
+ }
19
+ //# sourceMappingURL=cantonToken.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cantonToken.d.ts","sourceRoot":"","sources":["../../src/cantonToken.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAS,iBAAiB,EAAuB,MAAM,qBAAqB,CAAC;AAEpF,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAElC,qBAAa,WAAY,SAAQ,MAAM;IACrC,SAAgB,WAAW,EAAE,iBAAiB,CAAC;gBAEnC,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB;IAM5D,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,eAAe;IAIzE,MAAM,CAAC,uBAAuB,CAC5B,WAAW,GAAE,iBAAiB,EAAuE,GACpG,oBAAoB,EAAE;IASzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,eAAe,IAAI,MAAM,CAE5B;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,QAAQ,IAAI,MAAM;IAIlB,YAAY,IAAI,MAAM;IAItB,WAAW,IAAI,MAAM;IAIrB,aAAa,IAAI,MAAM;CAGxB"}
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CantonToken = void 0;
4
+ const statics_1 = require("@bitgo-beta/statics");
5
+ const canton_1 = require("./canton");
6
+ class CantonToken extends canton_1.Canton {
7
+ constructor(bitgo, tokenConfig) {
8
+ const staticsCoin = tokenConfig.network === statics_1.NetworkType.MAINNET ? statics_1.coins.get('canton') : statics_1.coins.get('tcanton');
9
+ super(bitgo, staticsCoin);
10
+ this.tokenConfig = tokenConfig;
11
+ }
12
+ static createTokenConstructor(config) {
13
+ return (bitgo) => new CantonToken(bitgo, config);
14
+ }
15
+ static createTokenConstructors(tokenConfig = [...statics_1.tokens.bitcoin.canton.tokens, ...statics_1.tokens.testnet.canton.tokens]) {
16
+ const tokensCtors = [];
17
+ for (const token of tokenConfig) {
18
+ const tokenConstructor = CantonToken.createTokenConstructor(token);
19
+ tokensCtors.push({ name: token.type, coinConstructor: tokenConstructor });
20
+ }
21
+ return tokensCtors;
22
+ }
23
+ get name() {
24
+ return this.tokenConfig.name;
25
+ }
26
+ get coin() {
27
+ return this.tokenConfig.coin;
28
+ }
29
+ get baseUrl() {
30
+ return this.tokenConfig.baseUrl;
31
+ }
32
+ get contractAddress() {
33
+ return this.tokenConfig.contractAddress;
34
+ }
35
+ get decimalPlaces() {
36
+ return this.tokenConfig.decimalPlaces;
37
+ }
38
+ getChain() {
39
+ return this.tokenConfig.type;
40
+ }
41
+ getBaseChain() {
42
+ return this.coin;
43
+ }
44
+ getFullName() {
45
+ return 'Canton Token';
46
+ }
47
+ getBaseFactor() {
48
+ return Math.pow(10, this.tokenConfig.decimalPlaces);
49
+ }
50
+ }
51
+ exports.CantonToken = CantonToken;
52
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FudG9uVG9rZW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY2FudG9uVG9rZW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsaURBQW9GO0FBRXBGLHFDQUFrQztBQUVsQyxNQUFhLFdBQVksU0FBUSxlQUFNO0lBR3JDLFlBQVksS0FBZ0IsRUFBRSxXQUE4QjtRQUMxRCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsT0FBTyxLQUFLLHFCQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQzdHLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7SUFDakMsQ0FBQztJQUVELE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxNQUF5QjtRQUNyRCxPQUFPLENBQUMsS0FBZ0IsRUFBRSxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxNQUFNLENBQUMsdUJBQXVCLENBQzVCLGNBQW1DLENBQUMsR0FBRyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLEdBQUcsZ0JBQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUVyRyxNQUFNLFdBQVcsR0FBMkIsRUFBRSxDQUFDO1FBQy9DLEtBQUssTUFBTSxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7WUFDaEMsTUFBTSxnQkFBZ0IsR0FBRyxXQUFXLENBQUMsc0JBQXNCLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDbkUsV0FBVyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDNUUsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGVBQWUsQ0FBQztJQUMxQyxDQUFDO0lBRUQsSUFBSSxhQUFhO1FBQ2YsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsQ0FBQztJQUN4QyxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7SUFDL0IsQ0FBQztJQUVELFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDbkIsQ0FBQztJQUVELFdBQVc7UUFDVCxPQUFPLGNBQWMsQ0FBQztJQUN4QixDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RCxDQUFDO0NBQ0Y7QUEzREQsa0NBMkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQml0R29CYXNlLCBDb2luQ29uc3RydWN0b3IsIE5hbWVkQ29pbkNvbnN0cnVjdG9yIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgY29pbnMsIENhbnRvblRva2VuQ29uZmlnLCBOZXR3b3JrVHlwZSwgdG9rZW5zIH0gZnJvbSAnQGJpdGdvLWJldGEvc3RhdGljcyc7XG5cbmltcG9ydCB7IENhbnRvbiB9IGZyb20gJy4vY2FudG9uJztcblxuZXhwb3J0IGNsYXNzIENhbnRvblRva2VuIGV4dGVuZHMgQ2FudG9uIHtcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuQ29uZmlnOiBDYW50b25Ub2tlbkNvbmZpZztcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCB0b2tlbkNvbmZpZzogQ2FudG9uVG9rZW5Db25maWcpIHtcbiAgICBjb25zdCBzdGF0aWNzQ29pbiA9IHRva2VuQ29uZmlnLm5ldHdvcmsgPT09IE5ldHdvcmtUeXBlLk1BSU5ORVQgPyBjb2lucy5nZXQoJ2NhbnRvbicpIDogY29pbnMuZ2V0KCd0Y2FudG9uJyk7XG4gICAgc3VwZXIoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgICB0aGlzLnRva2VuQ29uZmlnID0gdG9rZW5Db25maWc7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcihjb25maWc6IENhbnRvblRva2VuQ29uZmlnKTogQ29pbkNvbnN0cnVjdG9yIHtcbiAgICByZXR1cm4gKGJpdGdvOiBCaXRHb0Jhc2UpID0+IG5ldyBDYW50b25Ub2tlbihiaXRnbywgY29uZmlnKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhcbiAgICB0b2tlbkNvbmZpZzogQ2FudG9uVG9rZW5Db25maWdbXSA9IFsuLi50b2tlbnMuYml0Y29pbi5jYW50b24udG9rZW5zLCAuLi50b2tlbnMudGVzdG5ldC5jYW50b24udG9rZW5zXVxuICApOiBOYW1lZENvaW5Db25zdHJ1Y3RvcltdIHtcbiAgICBjb25zdCB0b2tlbnNDdG9yczogTmFtZWRDb2luQ29uc3RydWN0b3JbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5Db25maWcpIHtcbiAgICAgIGNvbnN0IHRva2VuQ29uc3RydWN0b3IgPSBDYW50b25Ub2tlbi5jcmVhdGVUb2tlbkNvbnN0cnVjdG9yKHRva2VuKTtcbiAgICAgIHRva2Vuc0N0b3JzLnB1c2goeyBuYW1lOiB0b2tlbi50eXBlLCBjb2luQ29uc3RydWN0b3I6IHRva2VuQ29uc3RydWN0b3IgfSk7XG4gICAgfVxuICAgIHJldHVybiB0b2tlbnNDdG9ycztcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcubmFtZTtcbiAgfVxuXG4gIGdldCBjb2luKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuY29pbjtcbiAgfVxuXG4gIGdldCBiYXNlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuYmFzZVVybDtcbiAgfVxuXG4gIGdldCBjb250cmFjdEFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5jb250cmFjdEFkZHJlc3M7XG4gIH1cblxuICBnZXQgZGVjaW1hbFBsYWNlcygpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLmRlY2ltYWxQbGFjZXM7XG4gIH1cblxuICBnZXRDaGFpbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLnR5cGU7XG4gIH1cblxuICBnZXRCYXNlQ2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5jb2luO1xuICB9XG5cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ0NhbnRvbiBUb2tlbic7XG4gIH1cblxuICBnZXRCYXNlRmFjdG9yKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIE1hdGgucG93KDEwLCB0aGlzLnRva2VuQ29uZmlnLmRlY2ltYWxQbGFjZXMpO1xuICB9XG59XG4iXX0=
@@ -1,4 +1,6 @@
1
1
  export * from './lib';
2
2
  export * from './canton';
3
3
  export * from './tcanton';
4
+ export * from './register';
5
+ export * from './cantonToken';
4
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,OAAO,CAAC;AACtB,cAAc,UAAU,CAAC;AACzB,cAAc,WAAW,CAAC;AAC1B,cAAc,YAAY,CAAC;AAC3B,cAAc,eAAe,CAAC"}
package/dist/src/index.js CHANGED
@@ -17,4 +17,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  __exportStar(require("./lib"), exports);
18
18
  __exportStar(require("./canton"), exports);
19
19
  __exportStar(require("./tcanton"), exports);
20
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQjtBQUN0QiwyQ0FBeUI7QUFDekIsNENBQTBCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9saWInO1xuZXhwb3J0ICogZnJvbSAnLi9jYW50b24nO1xuZXhwb3J0ICogZnJvbSAnLi90Y2FudG9uJztcbiJdfQ==
20
+ __exportStar(require("./register"), exports);
21
+ __exportStar(require("./cantonToken"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQjtBQUN0QiwyQ0FBeUI7QUFDekIsNENBQTBCO0FBQzFCLDZDQUEyQjtBQUMzQixnREFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYic7XG5leHBvcnQgKiBmcm9tICcuL2NhbnRvbic7XG5leHBvcnQgKiBmcm9tICcuL3RjYW50b24nO1xuZXhwb3J0ICogZnJvbSAnLi9yZWdpc3Rlcic7XG5leHBvcnQgKiBmcm9tICcuL2NhbnRvblRva2VuJztcbiJdfQ==
@@ -0,0 +1,126 @@
1
+ import { PublicKey, TransactionType } from '@bitgo-beta/sdk-core';
2
+ import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
3
+ import { TransactionBuilder } from './transactionBuilder';
4
+ import { Transaction } from './transaction/transaction';
5
+ import { CantonAllocationAllocateRequest, CantonPrepareCommandResponse } from './iface';
6
+ export declare class AllocationAllocateBuilder extends TransactionBuilder {
7
+ private _commandId;
8
+ private _amount;
9
+ private _token;
10
+ private _operatorId;
11
+ private _contractId;
12
+ private _tradeId;
13
+ private _transferLegId;
14
+ private _allocateBefore;
15
+ private _settleBefore;
16
+ private _receiverPartyId;
17
+ private _senderPartyId;
18
+ private _comment?;
19
+ constructor(_coinConfig: Readonly<CoinConfig>);
20
+ initBuilder(tx: Transaction): void;
21
+ get transactionType(): TransactionType;
22
+ setTransactionType(): void;
23
+ setTransaction(transaction: CantonPrepareCommandResponse): void;
24
+ /** @inheritDoc */
25
+ addSignature(publicKey: PublicKey, signature: Buffer): void;
26
+ /**
27
+ * Sets the unique command id for the allocation
28
+ * Also sets the _id of the transaction
29
+ *
30
+ * @param id - A uuid
31
+ * @returns The current builder instance for chaining.
32
+ * @throws Error if id is empty.
33
+ */
34
+ commandId(id: string): this;
35
+ /**
36
+ * Sets the allocation amount
37
+ * @param amount - allocation amount
38
+ * @returns The current builder instance for chaining.
39
+ * @throws Error if amount is not positive
40
+ */
41
+ amount(amount: number): this;
42
+ /**
43
+ * Sets the token for the allocation
44
+ * @param token - token identifier
45
+ * @returns The current builder instance for chaining.
46
+ * @throws Error if token is empty.
47
+ */
48
+ token(token: string): this;
49
+ /**
50
+ * Sets the operator party id
51
+ * @param id - operator party id
52
+ * @returns The current builder instance for chaining.
53
+ * @throws Error if id is empty.
54
+ */
55
+ operatorId(id: string): this;
56
+ /**
57
+ * Sets the contract id
58
+ * @param id - canton contract id
59
+ * @returns The current builder instance for chaining.
60
+ * @throws Error if id is empty.
61
+ */
62
+ contractId(id: string): this;
63
+ /**
64
+ * Sets the trade id
65
+ * @param id - trade id
66
+ * @returns The current builder instance for chaining.
67
+ * @throws Error if id is empty.
68
+ */
69
+ tradeId(id: string): this;
70
+ /**
71
+ * Sets the transfer leg id (e.g. `${tradeId}-security-leg` or `${tradeId}-cash-leg`)
72
+ * @param id - transfer leg id
73
+ * @returns The current builder instance for chaining.
74
+ * @throws Error if id is empty.
75
+ */
76
+ transferLegId(id: string): this;
77
+ /**
78
+ * Sets the allocate-before deadline (ISO 8601)
79
+ * @param deadline - allocation deadline
80
+ * @returns The current builder instance for chaining.
81
+ * @throws Error if deadline is empty.
82
+ */
83
+ allocateBefore(deadline: string): this;
84
+ /**
85
+ * Sets the settle-before deadline (ISO 8601)
86
+ * @param deadline - settlement deadline
87
+ * @returns The current builder instance for chaining.
88
+ * @throws Error if deadline is empty.
89
+ */
90
+ settleBefore(deadline: string): this;
91
+ /**
92
+ * Sets the sender party id
93
+ * @param id - sender party id
94
+ * @returns The current builder instance for chaining.
95
+ * @throws Error if id is empty.
96
+ */
97
+ senderPartyId(id: string): this;
98
+ /**
99
+ * Sets the receiver party id
100
+ * @param id - receiver party id
101
+ * @returns The current builder instance for chaining.
102
+ * @throws Error if id is empty.
103
+ */
104
+ receiverPartyId(id: string): this;
105
+ /**
106
+ * Sets the optional comment
107
+ * @param comment - free-form comment
108
+ * @returns The current builder instance for chaining.
109
+ */
110
+ comment(comment: string): this;
111
+ /**
112
+ * Builds and returns the CantonAllocationAllocateRequest object from the builder's internal state.
113
+ *
114
+ * @returns {CantonAllocationAllocateRequest} - A fully constructed and validated request object.
115
+ * @throws {Error} If any required field is missing or fails validation.
116
+ */
117
+ toRequestObject(): CantonAllocationAllocateRequest;
118
+ /**
119
+ * Validates the internal state of the builder before building the request object.
120
+ *
121
+ * @private
122
+ * @throws {Error} If any required field is missing.
123
+ */
124
+ private validate;
125
+ }
126
+ //# sourceMappingURL=allocationAllocateBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allocationAllocateBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/allocationAllocateBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,SAAS,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC3F,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EAAE,+BAA+B,EAAE,4BAA4B,EAAE,MAAM,SAAS,CAAC;AAGxF,qBAAa,yBAA0B,SAAQ,kBAAkB;IAC/D,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,aAAa,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,CAAS;gBAEd,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAKlC,IAAI,eAAe,IAAI,eAAe,CAErC;IAED,kBAAkB,IAAI,IAAI;IAI1B,cAAc,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI;IAI/D,kBAAkB;IAClB,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI;IAU3D;;;;;;;OAOG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAS3B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAQ1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQzB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;;;OAKG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQtC;;;;;OAKG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAQpC;;;;;OAKG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQ/B;;;;;OAKG;IACH,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAQjC;;;;OAIG;IACH,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAK9B;;;;;OAKG;IACH,eAAe,IAAI,+BAA+B;IAqBlD;;;;;OAKG;IACH,OAAO,CAAC,QAAQ;CAajB"}