@bitgo-beta/sdk-coin-eth 4.4.1-beta.1746 → 4.4.1-beta.1747

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.
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { BitGoBase, CoinConstructor, MPCAlgorithm, NamedCoinConstructor } from '@bitgo-beta/sdk-core';
5
5
  import { Erc7984TokenConfig } from '@bitgo-beta/statics';
6
- import { CoinNames } from '@bitgo-beta/abstract-eth';
6
+ import { CoinNames, DecryptionDelegationBuilder } from '@bitgo-beta/abstract-eth';
7
7
  import { Eth } from './eth';
8
8
  import { TransactionBuilder } from './lib';
9
9
  export { Erc7984TokenConfig };
@@ -29,7 +29,11 @@ export declare class Erc7984Token extends Eth {
29
29
  */
30
30
  valuelessTransferAllowed(): boolean;
31
31
  /**
32
- * Flag for sending data along with transactions.
32
+ * Flag for sending data along with transactions via the standard token-send API.
33
+ * Returns false because ERC-7984 sends use confidentialTransfer() calldata built
34
+ * by WP, not an arbitrary data field on the send params.
35
+ * Note: this does not prevent calldata-based flows like getDelegationBuilder(),
36
+ * which bypass the token-send path entirely.
33
37
  */
34
38
  transactionDataAllowed(): boolean;
35
39
  /** @inheritDoc */
@@ -37,5 +41,23 @@ export declare class Erc7984Token extends Eth {
37
41
  /** @inheritDoc */
38
42
  getMPCAlgorithm(): MPCAlgorithm;
39
43
  protected getTransactionBuilder(): TransactionBuilder;
44
+ /**
45
+ * Returns a DecryptionDelegationBuilder for constructing Zama ACL decryption
46
+ * delegation transactions.
47
+ *
48
+ * The builder produces a DecryptionDelegationTxRequest {to, data, value} that is
49
+ * wallet-type-agnostic — WP routes it to the correct signing path:
50
+ * - MPC: submit as a raw TSS transaction
51
+ * - Multisig: wrap in sendMultiSig(walletContract, to, 0, data, ...)
52
+ *
53
+ * Example:
54
+ * const req = coin.getDecryptionDelegationBuilder().build({
55
+ * aclContractAddress: '0xf0Ff...',
56
+ * delegateAddress: enterpriseViewingKey,
57
+ * tokenContractAddresses: [tokenAddress],
58
+ * expiryTimestamp: Math.floor(Date.now() / 1000) + 365 * 86400,
59
+ * });
60
+ */
61
+ getDecryptionDelegationBuilder(): DecryptionDelegationBuilder;
40
62
  }
41
63
  //# sourceMappingURL=erc7984Token.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"erc7984Token.d.ts","sourceRoot":"","sources":["../../src/erc7984Token.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEtG,OAAO,EAAS,kBAAkB,EAAU,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AAErD,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,qBAAa,YAAa,SAAQ,GAAG;IACnC,SAAgB,WAAW,EAAE,kBAAkB,CAAC;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,mBAAmB,CAAC;IACxE,MAAM,CAAC,SAAS,EAAE,SAAS,CAGzB;gBAEU,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB;IAO7D,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,eAAe;IAI1E,MAAM,CAAC,uBAAuB,CAC5B,YAAY,GAAE,kBAAkB,EAG/B,GACA,oBAAoB,EAAE;IAUzB,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,WAEP;IAED,IAAI,IAAI,WAEP;IAED,IAAI,OAAO,WAEV;IAED,IAAI,oBAAoB,WAEvB;IAED,IAAI,aAAa,WAEhB;IAED,QAAQ;IAIR,WAAW;IAIX,aAAa;IAIb;;;OAGG;IACH,wBAAwB;IAIxB;;OAEG;IACH,sBAAsB;IAItB,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,kBAAkB;IAClB,eAAe,IAAI,YAAY;IAI/B,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;CAGtD"}
1
+ {"version":3,"file":"erc7984Token.d.ts","sourceRoot":"","sources":["../../src/erc7984Token.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEtG,OAAO,EAAS,kBAAkB,EAAU,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAElF,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,qBAAa,YAAa,SAAQ,GAAG;IACnC,SAAgB,WAAW,EAAE,kBAAkB,CAAC;IAChD,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,cAAc,GAAG,mBAAmB,CAAC;IACxE,MAAM,CAAC,SAAS,EAAE,SAAS,CAGzB;gBAEU,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,kBAAkB;IAO7D,MAAM,CAAC,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,eAAe;IAI1E,MAAM,CAAC,uBAAuB,CAC5B,YAAY,GAAE,kBAAkB,EAG/B,GACA,oBAAoB,EAAE;IAUzB,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,oBAAoB,IAAI,MAAM,CAEjC;IAED,IAAI,aAAa,IAAI,MAAM,CAE1B;IAED,QAAQ,IAAI,MAAM;IAIlB,WAAW,IAAI,MAAM;IAIrB,aAAa,IAAI,MAAM;IAIvB;;;OAGG;IACH,wBAAwB,IAAI,OAAO;IAInC;;;;;;OAMG;IACH,sBAAsB,IAAI,OAAO;IAIjC,kBAAkB;IAClB,WAAW,IAAI,OAAO;IAItB,kBAAkB;IAClB,eAAe,IAAI,YAAY;IAI/B,SAAS,CAAC,qBAAqB,IAAI,kBAAkB;IAIrD;;;;;;;;;;;;;;;;OAgBG;IACH,8BAA8B,IAAI,2BAA2B;CAG9D"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Erc7984Token = void 0;
4
4
  const statics_1 = require("@bitgo-beta/statics");
5
+ const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
5
6
  const eth_1 = require("./eth");
6
7
  const lib_1 = require("./lib");
7
8
  class Erc7984Token extends eth_1.Eth {
@@ -61,7 +62,11 @@ class Erc7984Token extends eth_1.Eth {
61
62
  return false;
62
63
  }
63
64
  /**
64
- * Flag for sending data along with transactions.
65
+ * Flag for sending data along with transactions via the standard token-send API.
66
+ * Returns false because ERC-7984 sends use confidentialTransfer() calldata built
67
+ * by WP, not an arbitrary data field on the send params.
68
+ * Note: this does not prevent calldata-based flows like getDelegationBuilder(),
69
+ * which bypass the token-send path entirely.
65
70
  */
66
71
  transactionDataAllowed() {
67
72
  return false;
@@ -77,10 +82,30 @@ class Erc7984Token extends eth_1.Eth {
77
82
  getTransactionBuilder() {
78
83
  return new lib_1.TransactionBuilder(statics_1.coins.get(this.getBaseChain()));
79
84
  }
85
+ /**
86
+ * Returns a DecryptionDelegationBuilder for constructing Zama ACL decryption
87
+ * delegation transactions.
88
+ *
89
+ * The builder produces a DecryptionDelegationTxRequest {to, data, value} that is
90
+ * wallet-type-agnostic — WP routes it to the correct signing path:
91
+ * - MPC: submit as a raw TSS transaction
92
+ * - Multisig: wrap in sendMultiSig(walletContract, to, 0, data, ...)
93
+ *
94
+ * Example:
95
+ * const req = coin.getDecryptionDelegationBuilder().build({
96
+ * aclContractAddress: '0xf0Ff...',
97
+ * delegateAddress: enterpriseViewingKey,
98
+ * tokenContractAddresses: [tokenAddress],
99
+ * expiryTimestamp: Math.floor(Date.now() / 1000) + 365 * 86400,
100
+ * });
101
+ */
102
+ getDecryptionDelegationBuilder() {
103
+ return new abstract_eth_1.DecryptionDelegationBuilder();
104
+ }
80
105
  }
81
106
  exports.Erc7984Token = Erc7984Token;
82
107
  Erc7984Token.coinNames = {
83
108
  Mainnet: 'eth',
84
109
  Testnet: 'hteth',
85
110
  };
86
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJjNzk4NFRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VyYzc5ODRUb2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxpREFBd0U7QUFHeEUsK0JBQTRCO0FBQzVCLCtCQUEyQztBQUkzQyxNQUFhLFlBQWEsU0FBUSxTQUFHO0lBUW5DLFlBQVksS0FBZ0IsRUFBRSxXQUErQjtRQUMzRCxNQUFNLFdBQVcsR0FBRyxlQUFLLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFDM0UsS0FBSyxDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMxQixJQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsQ0FBQztRQUMvQixJQUFJLENBQUMsY0FBYyxHQUFHLG1CQUFtQixDQUFDO0lBQzVDLENBQUM7SUFFRCxNQUFNLENBQUMsc0JBQXNCLENBQUMsTUFBMEI7UUFDdEQsT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBRSxDQUFDLElBQUksWUFBWSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztJQUMvRCxDQUFDO0lBRUQsTUFBTSxDQUFDLHVCQUF1QixDQUM1QixlQUFxQztRQUNuQyxHQUFHLGdCQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0I7UUFDeEMsR0FBRyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCO0tBQ3pDO1FBRUQsTUFBTSxXQUFXLEdBQTJCLEVBQUUsQ0FBQztRQUMvQyxLQUFLLE1BQU0sS0FBSyxJQUFJLFlBQVksRUFBRSxDQUFDO1lBQ2pDLE1BQU0sZ0JBQWdCLEdBQUcsWUFBWSxDQUFDLHNCQUFzQixDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ3BFLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1lBQzFFLFdBQVcsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxnQkFBZ0IsRUFBRSxDQUFDLENBQUM7UUFDNUYsQ0FBQztRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3JCLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLElBQUk7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDO0lBQ2xDLENBQUM7SUFFRCxJQUFJLG9CQUFvQjtRQUN0QixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsb0JBQW9CLENBQUM7SUFDL0MsQ0FBQztJQUVELElBQUksYUFBYTtRQUNmLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUM7SUFDeEMsQ0FBQztJQUVELFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDO0lBQy9CLENBQUM7SUFFRCxXQUFXO1FBQ1QsT0FBTyw0QkFBNEIsQ0FBQztJQUN0QyxDQUFDO0lBRUQsYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsd0JBQXdCO1FBQ3RCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVEOztPQUVHO0lBQ0gsc0JBQXNCO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixXQUFXO1FBQ1QsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLGVBQWU7UUFDYixPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBRVMscUJBQXFCO1FBQzdCLE9BQU8sSUFBSSx3QkFBa0IsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDaEUsQ0FBQzs7QUFqR0gsb0NBa0dDO0FBL0ZRLHNCQUFTLEdBQWM7SUFDNUIsT0FBTyxFQUFFLEtBQUs7SUFDZCxPQUFPLEVBQUUsT0FBTztDQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgQml0R29CYXNlLCBDb2luQ29uc3RydWN0b3IsIE1QQ0FsZ29yaXRobSwgTmFtZWRDb2luQ29uc3RydWN0b3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IGNvaW5zLCBFcmM3OTg0VG9rZW5Db25maWcsIHRva2VucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQ29pbk5hbWVzIH0gZnJvbSAnQGJpdGdvLWJldGEvYWJzdHJhY3QtZXRoJztcblxuaW1wb3J0IHsgRXRoIH0gZnJvbSAnLi9ldGgnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi9saWInO1xuXG5leHBvcnQgeyBFcmM3OTg0VG9rZW5Db25maWcgfTtcblxuZXhwb3J0IGNsYXNzIEVyYzc5ODRUb2tlbiBleHRlbmRzIEV0aCB7XG4gIHB1YmxpYyByZWFkb25seSB0b2tlbkNvbmZpZzogRXJjNzk4NFRva2VuQ29uZmlnO1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgc2VuZE1ldGhvZE5hbWU6ICdzZW5kTXVsdGlTaWcnIHwgJ3NlbmRNdWx0aVNpZ1Rva2VuJztcbiAgc3RhdGljIGNvaW5OYW1lczogQ29pbk5hbWVzID0ge1xuICAgIE1haW5uZXQ6ICdldGgnLFxuICAgIFRlc3RuZXQ6ICdodGV0aCcsXG4gIH07XG5cbiAgY29uc3RydWN0b3IoYml0Z286IEJpdEdvQmFzZSwgdG9rZW5Db25maWc6IEVyYzc5ODRUb2tlbkNvbmZpZykge1xuICAgIGNvbnN0IHN0YXRpY3NDb2luID0gY29pbnMuZ2V0KEVyYzc5ODRUb2tlbi5jb2luTmFtZXNbdG9rZW5Db25maWcubmV0d29ya10pO1xuICAgIHN1cGVyKGJpdGdvLCBzdGF0aWNzQ29pbik7XG4gICAgdGhpcy50b2tlbkNvbmZpZyA9IHRva2VuQ29uZmlnO1xuICAgIHRoaXMuc2VuZE1ldGhvZE5hbWUgPSAnc2VuZE11bHRpU2lnVG9rZW4nO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRva2VuQ29uc3RydWN0b3IoY29uZmlnOiBFcmM3OTg0VG9rZW5Db25maWcpOiBDb2luQ29uc3RydWN0b3Ige1xuICAgIHJldHVybiAoYml0Z286IEJpdEdvQmFzZSkgPT4gbmV3IEVyYzc5ODRUb2tlbihiaXRnbywgY29uZmlnKTtcbiAgfVxuXG4gIHN0YXRpYyBjcmVhdGVUb2tlbkNvbnN0cnVjdG9ycyhcbiAgICB0b2tlbkNvbmZpZ3M6IEVyYzc5ODRUb2tlbkNvbmZpZ1tdID0gW1xuICAgICAgLi4udG9rZW5zLmJpdGNvaW4uZXRoLmNvbmZpZGVudGlhbFRva2VucyxcbiAgICAgIC4uLnRva2Vucy50ZXN0bmV0LmV0aC5jb25maWRlbnRpYWxUb2tlbnMsXG4gICAgXVxuICApOiBOYW1lZENvaW5Db25zdHJ1Y3RvcltdIHtcbiAgICBjb25zdCB0b2tlbnNDdG9yczogTmFtZWRDb2luQ29uc3RydWN0b3JbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgdG9rZW4gb2YgdG9rZW5Db25maWdzKSB7XG4gICAgICBjb25zdCB0b2tlbkNvbnN0cnVjdG9yID0gRXJjNzk4NFRva2VuLmNyZWF0ZVRva2VuQ29uc3RydWN0b3IodG9rZW4pO1xuICAgICAgdG9rZW5zQ3RvcnMucHVzaCh7IG5hbWU6IHRva2VuLnR5cGUsIGNvaW5Db25zdHJ1Y3RvcjogdG9rZW5Db25zdHJ1Y3RvciB9KTtcbiAgICAgIHRva2Vuc0N0b3JzLnB1c2goeyBuYW1lOiB0b2tlbi50b2tlbkNvbnRyYWN0QWRkcmVzcywgY29pbkNvbnN0cnVjdG9yOiB0b2tlbkNvbnN0cnVjdG9yIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdG9rZW5zQ3RvcnM7XG4gIH1cblxuICBnZXQgdHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy50eXBlO1xuICB9XG5cbiAgZ2V0IG5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcubmFtZTtcbiAgfVxuXG4gIGdldCBjb2luKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLmNvaW47XG4gIH1cblxuICBnZXQgbmV0d29yaygpIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5uZXR3b3JrO1xuICB9XG5cbiAgZ2V0IHRva2VuQ29udHJhY3RBZGRyZXNzKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLnRva2VuQ29udHJhY3RBZGRyZXNzO1xuICB9XG5cbiAgZ2V0IGRlY2ltYWxQbGFjZXMoKSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuZGVjaW1hbFBsYWNlcztcbiAgfVxuXG4gIGdldENoYWluKCkge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLnR5cGU7XG4gIH1cblxuICBnZXRGdWxsTmFtZSgpIHtcbiAgICByZXR1cm4gJ0VSQzc5ODQgQ29uZmlkZW50aWFsIFRva2VuJztcbiAgfVxuXG4gIGdldEJhc2VGYWN0b3IoKSB7XG4gICAgcmV0dXJuIE1hdGgucG93KDEwLCB0aGlzLnRva2VuQ29uZmlnLmRlY2ltYWxQbGFjZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgZm9yIHNlbmRpbmcgdmFsdWUgb2YgMC5cbiAgICogRVJDLTc5ODQgY29uZmlkZW50aWFsIHRyYW5zZmVycyBhbHdheXMgY2FycnkgYW4gZW5jcnlwdGVkIGFtb3VudDsgemVyby12YWx1ZSBzZW5kcyBhcmUgbm90IG1lYW5pbmdmdWwuXG4gICAqL1xuICB2YWx1ZWxlc3NUcmFuc2ZlckFsbG93ZWQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZsYWcgZm9yIHNlbmRpbmcgZGF0YSBhbG9uZyB3aXRoIHRyYW5zYWN0aW9ucy5cbiAgICovXG4gIHRyYW5zYWN0aW9uRGF0YUFsbG93ZWQoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIHN1cHBvcnRzVHNzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLyoqIEBpbmhlcml0RG9jICovXG4gIGdldE1QQ0FsZ29yaXRobSgpOiBNUENBbGdvcml0aG0ge1xuICAgIHJldHVybiAnZWNkc2EnO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFRyYW5zYWN0aW9uQnVpbGRlcigpOiBUcmFuc2FjdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyKGNvaW5zLmdldCh0aGlzLmdldEJhc2VDaGFpbigpKSk7XG4gIH1cbn1cbiJdfQ==
111
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJjNzk4NFRva2VuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VyYzc5ODRUb2tlbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQSxpREFBd0U7QUFDeEUsMkRBQWtGO0FBRWxGLCtCQUE0QjtBQUM1QiwrQkFBMkM7QUFJM0MsTUFBYSxZQUFhLFNBQVEsU0FBRztJQVFuQyxZQUFZLEtBQWdCLEVBQUUsV0FBK0I7UUFDM0QsTUFBTSxXQUFXLEdBQUcsZUFBSyxDQUFDLEdBQUcsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBQzNFLEtBQUssQ0FBQyxLQUFLLEVBQUUsV0FBVyxDQUFDLENBQUM7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxXQUFXLENBQUM7UUFDL0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxtQkFBbUIsQ0FBQztJQUM1QyxDQUFDO0lBRUQsTUFBTSxDQUFDLHNCQUFzQixDQUFDLE1BQTBCO1FBQ3RELE9BQU8sQ0FBQyxLQUFnQixFQUFFLEVBQUUsQ0FBQyxJQUFJLFlBQVksQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyx1QkFBdUIsQ0FDNUIsZUFBcUM7UUFDbkMsR0FBRyxnQkFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCO1FBQ3hDLEdBQUcsZ0JBQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtLQUN6QztRQUVELE1BQU0sV0FBVyxHQUEyQixFQUFFLENBQUM7UUFDL0MsS0FBSyxNQUFNLEtBQUssSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQyxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNwRSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUMxRSxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssQ0FBQyxvQkFBb0IsRUFBRSxlQUFlLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO1FBQzVGLENBQUM7UUFDRCxPQUFPLFdBQVcsQ0FBQztJQUNyQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxJQUFJO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1QsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBSSxvQkFBb0I7UUFDdEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixDQUFDO0lBQy9DLENBQUM7SUFFRCxJQUFJLGFBQWE7UUFDZixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQztJQUMvQixDQUFDO0lBRUQsV0FBVztRQUNULE9BQU8sNEJBQTRCLENBQUM7SUFDdEMsQ0FBQztJQUVELGFBQWE7UUFDWCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdEQsQ0FBQztJQUVEOzs7T0FHRztJQUNILHdCQUF3QjtRQUN0QixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxzQkFBc0I7UUFDcEIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLFdBQVc7UUFDVCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsZUFBZTtRQUNiLE9BQU8sT0FBTyxDQUFDO0lBQ2pCLENBQUM7SUFFUyxxQkFBcUI7UUFDN0IsT0FBTyxJQUFJLHdCQUFrQixDQUFDLGVBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7T0FnQkc7SUFDSCw4QkFBOEI7UUFDNUIsT0FBTyxJQUFJLDBDQUEyQixFQUFFLENBQUM7SUFDM0MsQ0FBQzs7QUExSEgsb0NBMkhDO0FBeEhRLHNCQUFTLEdBQWM7SUFDNUIsT0FBTyxFQUFFLEtBQUs7SUFDZCxPQUFPLEVBQUUsT0FBTztDQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IHsgQml0R29CYXNlLCBDb2luQ29uc3RydWN0b3IsIE1QQ0FsZ29yaXRobSwgTmFtZWRDb2luQ29uc3RydWN0b3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmltcG9ydCB7IGNvaW5zLCBFcmM3OTg0VG9rZW5Db25maWcsIHRva2VucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQ29pbk5hbWVzLCBEZWNyeXB0aW9uRGVsZWdhdGlvbkJ1aWxkZXIgfSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1ldGgnO1xuXG5pbXBvcnQgeyBFdGggfSBmcm9tICcuL2V0aCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkJ1aWxkZXIgfSBmcm9tICcuL2xpYic7XG5cbmV4cG9ydCB7IEVyYzc5ODRUb2tlbkNvbmZpZyB9O1xuXG5leHBvcnQgY2xhc3MgRXJjNzk4NFRva2VuIGV4dGVuZHMgRXRoIHtcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuQ29uZmlnOiBFcmM3OTg0VG9rZW5Db25maWc7XG4gIHByb3RlY3RlZCByZWFkb25seSBzZW5kTWV0aG9kTmFtZTogJ3NlbmRNdWx0aVNpZycgfCAnc2VuZE11bHRpU2lnVG9rZW4nO1xuICBzdGF0aWMgY29pbk5hbWVzOiBDb2luTmFtZXMgPSB7XG4gICAgTWFpbm5ldDogJ2V0aCcsXG4gICAgVGVzdG5ldDogJ2h0ZXRoJyxcbiAgfTtcblxuICBjb25zdHJ1Y3RvcihiaXRnbzogQml0R29CYXNlLCB0b2tlbkNvbmZpZzogRXJjNzk4NFRva2VuQ29uZmlnKSB7XG4gICAgY29uc3Qgc3RhdGljc0NvaW4gPSBjb2lucy5nZXQoRXJjNzk4NFRva2VuLmNvaW5OYW1lc1t0b2tlbkNvbmZpZy5uZXR3b3JrXSk7XG4gICAgc3VwZXIoYml0Z28sIHN0YXRpY3NDb2luKTtcbiAgICB0aGlzLnRva2VuQ29uZmlnID0gdG9rZW5Db25maWc7XG4gICAgdGhpcy5zZW5kTWV0aG9kTmFtZSA9ICdzZW5kTXVsdGlTaWdUb2tlbic7XG4gIH1cblxuICBzdGF0aWMgY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcihjb25maWc6IEVyYzc5ODRUb2tlbkNvbmZpZyk6IENvaW5Db25zdHJ1Y3RvciB7XG4gICAgcmV0dXJuIChiaXRnbzogQml0R29CYXNlKSA9PiBuZXcgRXJjNzk4NFRva2VuKGJpdGdvLCBjb25maWcpO1xuICB9XG5cbiAgc3RhdGljIGNyZWF0ZVRva2VuQ29uc3RydWN0b3JzKFxuICAgIHRva2VuQ29uZmlnczogRXJjNzk4NFRva2VuQ29uZmlnW10gPSBbXG4gICAgICAuLi50b2tlbnMuYml0Y29pbi5ldGguY29uZmlkZW50aWFsVG9rZW5zLFxuICAgICAgLi4udG9rZW5zLnRlc3RuZXQuZXRoLmNvbmZpZGVudGlhbFRva2VucyxcbiAgICBdXG4gICk6IE5hbWVkQ29pbkNvbnN0cnVjdG9yW10ge1xuICAgIGNvbnN0IHRva2Vuc0N0b3JzOiBOYW1lZENvaW5Db25zdHJ1Y3RvcltdID0gW107XG4gICAgZm9yIChjb25zdCB0b2tlbiBvZiB0b2tlbkNvbmZpZ3MpIHtcbiAgICAgIGNvbnN0IHRva2VuQ29uc3RydWN0b3IgPSBFcmM3OTg0VG9rZW4uY3JlYXRlVG9rZW5Db25zdHJ1Y3Rvcih0b2tlbik7XG4gICAgICB0b2tlbnNDdG9ycy5wdXNoKHsgbmFtZTogdG9rZW4udHlwZSwgY29pbkNvbnN0cnVjdG9yOiB0b2tlbkNvbnN0cnVjdG9yIH0pO1xuICAgICAgdG9rZW5zQ3RvcnMucHVzaCh7IG5hbWU6IHRva2VuLnRva2VuQ29udHJhY3RBZGRyZXNzLCBjb2luQ29uc3RydWN0b3I6IHRva2VuQ29uc3RydWN0b3IgfSk7XG4gICAgfVxuICAgIHJldHVybiB0b2tlbnNDdG9ycztcbiAgfVxuXG4gIGdldCB0eXBlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcudHlwZTtcbiAgfVxuXG4gIGdldCBuYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcubmFtZTtcbiAgfVxuXG4gIGdldCBjb2luKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcuY29pbjtcbiAgfVxuXG4gIGdldCBuZXR3b3JrKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5Db25maWcubmV0d29yaztcbiAgfVxuXG4gIGdldCB0b2tlbkNvbnRyYWN0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnRva2VuQ29uZmlnLnRva2VuQ29udHJhY3RBZGRyZXNzO1xuICB9XG5cbiAgZ2V0IGRlY2ltYWxQbGFjZXMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy5kZWNpbWFsUGxhY2VzO1xuICB9XG5cbiAgZ2V0Q2hhaW4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b2tlbkNvbmZpZy50eXBlO1xuICB9XG5cbiAgZ2V0RnVsbE5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJ0VSQzc5ODQgQ29uZmlkZW50aWFsIFRva2VuJztcbiAgfVxuXG4gIGdldEJhc2VGYWN0b3IoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gTWF0aC5wb3coMTAsIHRoaXMudG9rZW5Db25maWcuZGVjaW1hbFBsYWNlcyk7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyBmb3Igc2VuZGluZyB2YWx1ZSBvZiAwLlxuICAgKiBFUkMtNzk4NCBjb25maWRlbnRpYWwgdHJhbnNmZXJzIGFsd2F5cyBjYXJyeSBhbiBlbmNyeXB0ZWQgYW1vdW50OyB6ZXJvLXZhbHVlIHNlbmRzIGFyZSBub3QgbWVhbmluZ2Z1bC5cbiAgICovXG4gIHZhbHVlbGVzc1RyYW5zZmVyQWxsb3dlZCgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICAvKipcbiAgICogRmxhZyBmb3Igc2VuZGluZyBkYXRhIGFsb25nIHdpdGggdHJhbnNhY3Rpb25zIHZpYSB0aGUgc3RhbmRhcmQgdG9rZW4tc2VuZCBBUEkuXG4gICAqIFJldHVybnMgZmFsc2UgYmVjYXVzZSBFUkMtNzk4NCBzZW5kcyB1c2UgY29uZmlkZW50aWFsVHJhbnNmZXIoKSBjYWxsZGF0YSBidWlsdFxuICAgKiBieSBXUCwgbm90IGFuIGFyYml0cmFyeSBkYXRhIGZpZWxkIG9uIHRoZSBzZW5kIHBhcmFtcy5cbiAgICogTm90ZTogdGhpcyBkb2VzIG5vdCBwcmV2ZW50IGNhbGxkYXRhLWJhc2VkIGZsb3dzIGxpa2UgZ2V0RGVsZWdhdGlvbkJ1aWxkZXIoKSxcbiAgICogd2hpY2ggYnlwYXNzIHRoZSB0b2tlbi1zZW5kIHBhdGggZW50aXJlbHkuXG4gICAqL1xuICB0cmFuc2FjdGlvbkRhdGFBbGxvd2VkKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBzdXBwb3J0c1RzcygpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdERvYyAqL1xuICBnZXRNUENBbGdvcml0aG0oKTogTVBDQWxnb3JpdGhtIHtcbiAgICByZXR1cm4gJ2VjZHNhJztcbiAgfVxuXG4gIHByb3RlY3RlZCBnZXRUcmFuc2FjdGlvbkJ1aWxkZXIoKTogVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgICByZXR1cm4gbmV3IFRyYW5zYWN0aW9uQnVpbGRlcihjb2lucy5nZXQodGhpcy5nZXRCYXNlQ2hhaW4oKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBEZWNyeXB0aW9uRGVsZWdhdGlvbkJ1aWxkZXIgZm9yIGNvbnN0cnVjdGluZyBaYW1hIEFDTCBkZWNyeXB0aW9uXG4gICAqIGRlbGVnYXRpb24gdHJhbnNhY3Rpb25zLlxuICAgKlxuICAgKiBUaGUgYnVpbGRlciBwcm9kdWNlcyBhIERlY3J5cHRpb25EZWxlZ2F0aW9uVHhSZXF1ZXN0IHt0bywgZGF0YSwgdmFsdWV9IHRoYXQgaXNcbiAgICogd2FsbGV0LXR5cGUtYWdub3N0aWMg4oCUIFdQIHJvdXRlcyBpdCB0byB0aGUgY29ycmVjdCBzaWduaW5nIHBhdGg6XG4gICAqIC0gTVBDOiBzdWJtaXQgYXMgYSByYXcgVFNTIHRyYW5zYWN0aW9uXG4gICAqIC0gTXVsdGlzaWc6IHdyYXAgaW4gc2VuZE11bHRpU2lnKHdhbGxldENvbnRyYWN0LCB0bywgMCwgZGF0YSwgLi4uKVxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKiAgIGNvbnN0IHJlcSA9IGNvaW4uZ2V0RGVjcnlwdGlvbkRlbGVnYXRpb25CdWlsZGVyKCkuYnVpbGQoe1xuICAgKiAgICAgYWNsQ29udHJhY3RBZGRyZXNzOiAnMHhmMEZmLi4uJyxcbiAgICogICAgIGRlbGVnYXRlQWRkcmVzczogICAgZW50ZXJwcmlzZVZpZXdpbmdLZXksXG4gICAqICAgICB0b2tlbkNvbnRyYWN0QWRkcmVzc2VzOiBbdG9rZW5BZGRyZXNzXSxcbiAgICogICAgIGV4cGlyeVRpbWVzdGFtcDogICAgTWF0aC5mbG9vcihEYXRlLm5vdygpIC8gMTAwMCkgKyAzNjUgKiA4NjQwMCxcbiAgICogICB9KTtcbiAgICovXG4gIGdldERlY3J5cHRpb25EZWxlZ2F0aW9uQnVpbGRlcigpOiBEZWNyeXB0aW9uRGVsZWdhdGlvbkJ1aWxkZXIge1xuICAgIHJldHVybiBuZXcgRGVjcnlwdGlvbkRlbGVnYXRpb25CdWlsZGVyKCk7XG4gIH1cbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=decryptionDelegation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decryptionDelegation.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/decryptionDelegation.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /**
7
+ * Standalone calldata tests for Zama ERC-7984 decryption delegation.
8
+ *
9
+ * Zama helpers are imported from the @bitgo-beta/abstract-eth public package entry (re-exports
10
+ * ./lib including zamaUtils). TransactionType is imported from the sdk-core enum dist path
11
+ * to avoid loading the full @bitgo-beta/sdk-core barrel (pre-existing io-ts issue in the TSS graph).
12
+ *
13
+ * TransactionBuilder build/rebuild tests live in decryptionDelegationTxBuilder.ts.
14
+ */
15
+ const should_1 = __importDefault(require("should"));
16
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
17
+ const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
18
+ const DELEGATE_ADDRESS = '0x1111111111111111111111111111111111111111';
19
+ const TOKEN_ADDRESS = '0x94167129172A35ab093B44b8b96213DDbc3cD387';
20
+ const TOKEN_ADDRESS_2 = '0x4E7B06D78965594eB5EF5414c357ca21E1554491';
21
+ const ACL_ADDRESS = '0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D';
22
+ const EXPIRY = Math.floor(Date.now() / 1000) + 365 * 86400;
23
+ describe('DecryptionDelegation TransactionType (standalone)', () => {
24
+ it('should be a valid numeric type distinct from ContractCall/Send/FlushTokens', () => {
25
+ should_1.default.exist(sdk_core_1.TransactionType.DecryptionDelegation);
26
+ (typeof sdk_core_1.TransactionType.DecryptionDelegation).should.equal('number');
27
+ sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.ContractCall);
28
+ sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.Send);
29
+ sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.FlushTokens);
30
+ sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.FlushERC721);
31
+ sdk_core_1.TransactionType.DecryptionDelegation.should.not.equal(sdk_core_1.TransactionType.FlushERC1155);
32
+ });
33
+ });
34
+ describe('DecryptionDelegation calldata selectors (standalone)', () => {
35
+ it('single-token calldata uses multicall selector 0xac9650d8', () => {
36
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
37
+ calldata.slice(0, 10).should.equal(abstract_eth_1.aclMulticallMethodId);
38
+ calldata.slice(0, 10).should.equal('0xac9650d8');
39
+ });
40
+ it('multi-token calldata uses multicall selector 0xac9650d8', () => {
41
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS, TOKEN_ADDRESS_2], EXPIRY);
42
+ calldata.slice(0, 10).should.equal(abstract_eth_1.aclMulticallMethodId);
43
+ });
44
+ it('forwarder-wrapped calldata uses callFromParent selector 0x77e60b35', () => {
45
+ const inner = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
46
+ const wrapped = (0, abstract_eth_1.wrapInCallFromParent)(ACL_ADDRESS, inner);
47
+ wrapped.slice(0, 10).should.equal(abstract_eth_1.callFromParentMethodId);
48
+ wrapped.slice(0, 10).should.equal('0x77e60b35');
49
+ });
50
+ it('delegate address is ABI-encoded in calldata', () => {
51
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
52
+ calldata.should.containEql(DELEGATE_ADDRESS.slice(2).toLowerCase().padStart(64, '0'));
53
+ });
54
+ it('token address is ABI-encoded in calldata', () => {
55
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
56
+ calldata.should.containEql(TOKEN_ADDRESS.slice(2).toLowerCase().padStart(64, '0'));
57
+ });
58
+ });
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdGlvbkRlbGVnYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL2RlY3J5cHRpb25EZWxlZ2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7O0dBUUc7QUFDSCxvREFBNEI7QUFDNUIsbURBQXVEO0FBQ3ZELDJEQUtrQztBQUVsQyxNQUFNLGdCQUFnQixHQUFHLDRDQUE0QyxDQUFDO0FBQ3RFLE1BQU0sYUFBYSxHQUFHLDRDQUE0QyxDQUFDO0FBQ25FLE1BQU0sZUFBZSxHQUFHLDRDQUE0QyxDQUFDO0FBQ3JFLE1BQU0sV0FBVyxHQUFHLDRDQUE0QyxDQUFDO0FBQ2pFLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFFM0QsUUFBUSxDQUFDLG1EQUFtRCxFQUFFLEdBQUcsRUFBRTtJQUNqRSxFQUFFLENBQUMsNEVBQTRFLEVBQUUsR0FBRyxFQUFFO1FBQ3BGLGdCQUFNLENBQUMsS0FBSyxDQUFDLDBCQUFlLENBQUMsb0JBQW9CLENBQUMsQ0FBQztRQUNuRCxDQUFDLE9BQU8sMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckUsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQywwQkFBZSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3BGLDBCQUFlLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsMEJBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM1RSwwQkFBZSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLDBC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dGFuZGFsb25lIGNhbGxkYXRhIHRlc3RzIGZvciBaYW1hIEVSQy03OTg0IGRlY3J5cHRpb24gZGVsZWdhdGlvbi5cbiAqXG4gKiBaYW1hIGhlbHBlcnMgYXJlIGltcG9ydGVkIGZyb20gdGhlIEBiaXRnby1iZXRhL2Fic3RyYWN0LWV0aCBwdWJsaWMgcGFja2FnZSBlbnRyeSAocmUtZXhwb3J0c1xuICogLi9saWIgaW5jbHVkaW5nIHphbWFVdGlscykuIFRyYW5zYWN0aW9uVHlwZSBpcyBpbXBvcnRlZCBmcm9tIHRoZSBzZGstY29yZSBlbnVtIGRpc3QgcGF0aFxuICogdG8gYXZvaWQgbG9hZGluZyB0aGUgZnVsbCBAYml0Z28tYmV0YS9zZGstY29yZSBiYXJyZWwgKHByZS1leGlzdGluZyBpby10cyBpc3N1ZSBpbiB0aGUgVFNTIGdyYXBoKS5cbiAqXG4gKiBUcmFuc2FjdGlvbkJ1aWxkZXIgYnVpbGQvcmVidWlsZCB0ZXN0cyBsaXZlIGluIGRlY3J5cHRpb25EZWxlZ2F0aW9uVHhCdWlsZGVyLnRzLlxuICovXG5pbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvblR5cGUgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQge1xuICBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YSxcbiAgY2FsbEZyb21QYXJlbnRNZXRob2RJZCxcbiAgYWNsTXVsdGljYWxsTWV0aG9kSWQsXG4gIHdyYXBJbkNhbGxGcm9tUGFyZW50LFxufSBmcm9tICdAYml0Z28tYmV0YS9hYnN0cmFjdC1ldGgnO1xuXG5jb25zdCBERUxFR0FURV9BRERSRVNTID0gJzB4MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc7XG5jb25zdCBUT0tFTl9BRERSRVNTID0gJzB4OTQxNjcxMjkxNzJBMzVhYjA5M0I0NGI4Yjk2MjEzRERiYzNjRDM4Nyc7XG5jb25zdCBUT0tFTl9BRERSRVNTXzIgPSAnMHg0RTdCMDZENzg5NjU1OTRlQjVFRjU0MTRjMzU3Y2EyMUUxNTU0NDkxJztcbmNvbnN0IEFDTF9BRERSRVNTID0gJzB4ZjBGZmRjOTNiN0UxODZiQzJmOENCM2RBQTc1RDg2ZDE5MzBBNDMzRCc7XG5jb25zdCBFWFBJUlkgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSArIDM2NSAqIDg2NDAwO1xuXG5kZXNjcmliZSgnRGVjcnlwdGlvbkRlbGVnYXRpb24gVHJhbnNhY3Rpb25UeXBlIChzdGFuZGFsb25lKScsICgpID0+IHtcbiAgaXQoJ3Nob3VsZCBiZSBhIHZhbGlkIG51bWVyaWMgdHlwZSBkaXN0aW5jdCBmcm9tIENvbnRyYWN0Q2FsbC9TZW5kL0ZsdXNoVG9rZW5zJywgKCkgPT4ge1xuICAgIHNob3VsZC5leGlzdChUcmFuc2FjdGlvblR5cGUuRGVjcnlwdGlvbkRlbGVnYXRpb24pO1xuICAgICh0eXBlb2YgVHJhbnNhY3Rpb25UeXBlLkRlY3J5cHRpb25EZWxlZ2F0aW9uKS5zaG91bGQuZXF1YWwoJ251bWJlcicpO1xuICAgIFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbi5zaG91bGQubm90LmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbi5zaG91bGQubm90LmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5TZW5kKTtcbiAgICBUcmFuc2FjdGlvblR5cGUuRGVjcnlwdGlvbkRlbGVnYXRpb24uc2hvdWxkLm5vdC5lcXVhbChUcmFuc2FjdGlvblR5cGUuRmx1c2hUb2tlbnMpO1xuICAgIFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbi5zaG91bGQubm90LmVxdWFsKFRyYW5zYWN0aW9uVHlwZS5GbHVzaEVSQzcyMSk7XG4gICAgVHJhbnNhY3Rpb25UeXBlLkRlY3J5cHRpb25EZWxlZ2F0aW9uLnNob3VsZC5ub3QuZXF1YWwoVHJhbnNhY3Rpb25UeXBlLkZsdXNoRVJDMTE1NSk7XG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdEZWNyeXB0aW9uRGVsZWdhdGlvbiBjYWxsZGF0YSBzZWxlY3RvcnMgKHN0YW5kYWxvbmUpJywgKCkgPT4ge1xuICBpdCgnc2luZ2xlLXRva2VuIGNhbGxkYXRhIHVzZXMgbXVsdGljYWxsIHNlbGVjdG9yIDB4YWM5NjUwZDgnLCAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTU10sIEVYUElSWSk7XG4gICAgY2FsbGRhdGEuc2xpY2UoMCwgMTApLnNob3VsZC5lcXVhbChhY2xNdWx0aWNhbGxNZXRob2RJZCk7XG4gICAgY2FsbGRhdGEuc2xpY2UoMCwgMTApLnNob3VsZC5lcXVhbCgnMHhhYzk2NTBkOCcpO1xuICB9KTtcblxuICBpdCgnbXVsdGktdG9rZW4gY2FsbGRhdGEgdXNlcyBtdWx0aWNhbGwgc2VsZWN0b3IgMHhhYzk2NTBkOCcsICgpID0+IHtcbiAgICBjb25zdCBjYWxsZGF0YSA9IGJ1aWxkTXVsdGljYWxsRGVsZWdhdGlvbkNhbGxkYXRhKERFTEVHQVRFX0FERFJFU1MsIFtUT0tFTl9BRERSRVNTLCBUT0tFTl9BRERSRVNTXzJdLCBFWFBJUlkpO1xuICAgIGNhbGxkYXRhLnNsaWNlKDAsIDEwKS5zaG91bGQuZXF1YWwoYWNsTXVsdGljYWxsTWV0aG9kSWQpO1xuICB9KTtcblxuICBpdCgnZm9yd2FyZGVyLXdyYXBwZWQgY2FsbGRhdGEgdXNlcyBjYWxsRnJvbVBhcmVudCBzZWxlY3RvciAweDc3ZTYwYjM1JywgKCkgPT4ge1xuICAgIGNvbnN0IGlubmVyID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIGNvbnN0IHdyYXBwZWQgPSB3cmFwSW5DYWxsRnJvbVBhcmVudChBQ0xfQUREUkVTUywgaW5uZXIpO1xuICAgIHdyYXBwZWQuc2xpY2UoMCwgMTApLnNob3VsZC5lcXVhbChjYWxsRnJvbVBhcmVudE1ldGhvZElkKTtcbiAgICB3cmFwcGVkLnNsaWNlKDAsIDEwKS5zaG91bGQuZXF1YWwoJzB4NzdlNjBiMzUnKTtcbiAgfSk7XG5cbiAgaXQoJ2RlbGVnYXRlIGFkZHJlc3MgaXMgQUJJLWVuY29kZWQgaW4gY2FsbGRhdGEnLCAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTU10sIEVYUElSWSk7XG4gICAgY2FsbGRhdGEuc2hvdWxkLmNvbnRhaW5FcWwoREVMRUdBVEVfQUREUkVTUy5zbGljZSgyKS50b0xvd2VyQ2FzZSgpLnBhZFN0YXJ0KDY0LCAnMCcpKTtcbiAgfSk7XG5cbiAgaXQoJ3Rva2VuIGFkZHJlc3MgaXMgQUJJLWVuY29kZWQgaW4gY2FsbGRhdGEnLCAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTU10sIEVYUElSWSk7XG4gICAgY2FsbGRhdGEuc2hvdWxkLmNvbnRhaW5FcWwoVE9LRU5fQUREUkVTUy5zbGljZSgyKS50b0xvd2VyQ2FzZSgpLnBhZFN0YXJ0KDY0LCAnMCcpKTtcbiAgfSk7XG59KTtcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=decryptionDelegationTxBuilder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decryptionDelegationTxBuilder.d.ts","sourceRoot":"","sources":["../../../../test/unit/transactionBuilder/decryptionDelegationTxBuilder.ts"],"names":[],"mappings":""}
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ /**
7
+ * TransactionBuilder build and rebuild tests for Zama ERC-7984 decryption delegation.
8
+ *
9
+ * Pattern mirrors contractCall.ts: imports TransactionType from @bitgo-beta/sdk-core and
10
+ * TransactionBuilder from '../../../src'. These are subject to the same pre-existing
11
+ * io-ts crash (sdk-core/src/bitgo/utils/tss/eddsa/typesEddsaMPCv2) that affects ALL
12
+ * TransactionBuilder tests in this monorepo. They run in the full CI test suite.
13
+ *
14
+ * Three flows verified:
15
+ * Flow 1 — root wallet: ContractCall + multicall data → build → from(hex) → rebuild
16
+ * Flow 2 — explicit DecryptionDelegation type → build → from(hex) → rebuild
17
+ * Flow 3 — forwarder: ContractCall + callFromParent data → build → from(hex) → rebuild
18
+ */
19
+ const should_1 = __importDefault(require("should"));
20
+ const sdk_core_1 = require("@bitgo-beta/sdk-core");
21
+ const abstract_eth_1 = require("@bitgo-beta/abstract-eth");
22
+ const getBuilder_1 = require("../getBuilder");
23
+ const ACL_ADDRESS = '0xf0Ffdc93b7E186bC2f8CB3dAA75D86d1930A433D';
24
+ const DELEGATE_ADDRESS = '0x1111111111111111111111111111111111111111';
25
+ const TOKEN_ADDRESS = '0x94167129172A35ab093B44b8b96213DDbc3cD387';
26
+ const TOKEN_ADDRESS_2 = '0x4E7B06D78965594eB5EF5414c357ca21E1554491';
27
+ const FORWARDER_ADDRESS = '0xDeADbeefdEAdbeefdEadbEEFdeadbeEFdEaDbeeF';
28
+ const EXPIRY = Math.floor(Date.now() / 1000) + 365 * 86400;
29
+ describe('DecryptionDelegation TransactionBuilder', () => {
30
+ let txBuilder;
31
+ beforeEach(() => {
32
+ txBuilder = (0, getBuilder_1.getBuilder)('hteth');
33
+ txBuilder.fee({ fee: '1000000000', gasLimit: '200000' });
34
+ txBuilder.counter(1);
35
+ });
36
+ // ---- Flow 1: root wallet, ContractCall type --------------------------------
37
+ it('Flow 1: should build a ContractCall tx with multicall delegation data', async () => {
38
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS, TOKEN_ADDRESS_2], EXPIRY);
39
+ txBuilder.type(sdk_core_1.TransactionType.ContractCall);
40
+ txBuilder.contract(ACL_ADDRESS);
41
+ txBuilder.data(calldata);
42
+ const tx = await txBuilder.build();
43
+ const json = tx.toJson();
44
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.ContractCall);
45
+ json.to.should.equal(ACL_ADDRESS.toLowerCase());
46
+ json.data.should.startWith(abstract_eth_1.aclMulticallMethodId);
47
+ json.value.should.equal('0');
48
+ });
49
+ it('Flow 1: should rebuild from hex — multicall delegation round-trip', async () => {
50
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS, TOKEN_ADDRESS_2], EXPIRY);
51
+ txBuilder.type(sdk_core_1.TransactionType.ContractCall);
52
+ txBuilder.contract(ACL_ADDRESS);
53
+ txBuilder.data(calldata);
54
+ const originalTx = await txBuilder.build();
55
+ const rawHex = originalTx.toBroadcastFormat();
56
+ const rebuiltBuilder = (0, getBuilder_1.getBuilder)('hteth');
57
+ rebuiltBuilder.from(rawHex);
58
+ const rebuiltTx = await rebuiltBuilder.build();
59
+ should_1.default.equal(rebuiltTx.toBroadcastFormat(), rawHex);
60
+ rebuiltTx.toJson().to.should.equal(ACL_ADDRESS.toLowerCase());
61
+ rebuiltTx.toJson().data.should.startWith(abstract_eth_1.aclMulticallMethodId);
62
+ });
63
+ // ---- Flow 2: explicit DecryptionDelegation type ---------------------------
64
+ it('Flow 2: should build with explicit DecryptionDelegation type', async () => {
65
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
66
+ txBuilder.type(sdk_core_1.TransactionType.DecryptionDelegation);
67
+ txBuilder.contract(ACL_ADDRESS);
68
+ txBuilder.data(calldata);
69
+ const tx = await txBuilder.build();
70
+ const json = tx.toJson();
71
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.ContractCall);
72
+ json.to.should.equal(ACL_ADDRESS.toLowerCase());
73
+ json.data.should.startWith(abstract_eth_1.aclMulticallMethodId);
74
+ json.value.should.equal('0');
75
+ });
76
+ it('Flow 2: should rebuild from hex — DecryptionDelegation type round-trip', async () => {
77
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
78
+ txBuilder.type(sdk_core_1.TransactionType.DecryptionDelegation);
79
+ txBuilder.contract(ACL_ADDRESS);
80
+ txBuilder.data(calldata);
81
+ const originalTx = await txBuilder.build();
82
+ const rawHex = originalTx.toBroadcastFormat();
83
+ // classifyTransaction sees 0xac9650d8 → ContractCall (multicall not mapped)
84
+ // ContractCall rebuild path handles it identically to DecryptionDelegation
85
+ const rebuiltBuilder = (0, getBuilder_1.getBuilder)('hteth');
86
+ rebuiltBuilder.from(rawHex);
87
+ const rebuiltTx = await rebuiltBuilder.build();
88
+ should_1.default.equal(rebuiltTx.toBroadcastFormat(), rawHex);
89
+ });
90
+ // ---- Flow 3: forwarder callFromParent path --------------------------------
91
+ it('Flow 3: should build a forwarder delegation tx targeting the forwarder', async () => {
92
+ const innerCalldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
93
+ const outerCalldata = (0, abstract_eth_1.wrapInCallFromParent)(ACL_ADDRESS, innerCalldata);
94
+ txBuilder.type(sdk_core_1.TransactionType.ContractCall);
95
+ txBuilder.contract(FORWARDER_ADDRESS);
96
+ txBuilder.data(outerCalldata);
97
+ const tx = await txBuilder.build();
98
+ const json = tx.toJson();
99
+ should_1.default.equal(tx.type, sdk_core_1.TransactionType.ContractCall);
100
+ json.to.should.equal(FORWARDER_ADDRESS.toLowerCase());
101
+ json.data.should.startWith(abstract_eth_1.callFromParentMethodId);
102
+ json.value.should.equal('0');
103
+ });
104
+ it('Flow 3: should rebuild from hex — forwarder delegation round-trip', async () => {
105
+ const innerCalldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
106
+ const outerCalldata = (0, abstract_eth_1.wrapInCallFromParent)(ACL_ADDRESS, innerCalldata);
107
+ txBuilder.type(sdk_core_1.TransactionType.ContractCall);
108
+ txBuilder.contract(FORWARDER_ADDRESS);
109
+ txBuilder.data(outerCalldata);
110
+ const originalTx = await txBuilder.build();
111
+ const rawHex = originalTx.toBroadcastFormat();
112
+ const rebuiltBuilder = (0, getBuilder_1.getBuilder)('hteth');
113
+ rebuiltBuilder.from(rawHex);
114
+ const rebuiltTx = await rebuiltBuilder.build();
115
+ should_1.default.equal(rebuiltTx.toBroadcastFormat(), rawHex);
116
+ rebuiltTx.toJson().to.should.equal(FORWARDER_ADDRESS.toLowerCase());
117
+ rebuiltTx.toJson().data.should.startWith(abstract_eth_1.callFromParentMethodId);
118
+ });
119
+ // ---- Validation -----------------------------------------------------------
120
+ it('should throw for DecryptionDelegation when contract address is missing', async () => {
121
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
122
+ txBuilder.type(sdk_core_1.TransactionType.DecryptionDelegation);
123
+ txBuilder.data(calldata);
124
+ await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing contract address');
125
+ });
126
+ it('should throw for DecryptionDelegation when data field is missing', async () => {
127
+ txBuilder.type(sdk_core_1.TransactionType.DecryptionDelegation);
128
+ txBuilder.contract(ACL_ADDRESS);
129
+ await txBuilder.build().should.be.rejectedWith('Invalid transaction: missing contract call data field');
130
+ });
131
+ it('should throw when data() is called before type is set to a contract call type', () => {
132
+ const calldata = (0, abstract_eth_1.buildMulticallDelegationCalldata)(DELEGATE_ADDRESS, [TOKEN_ADDRESS], EXPIRY);
133
+ should_1.default.throws(() => txBuilder.data(calldata), /data can only be set for contract call transaction types/);
134
+ });
135
+ });
136
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVjcnlwdGlvbkRlbGVnYXRpb25UeEJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi90ZXN0L3VuaXQvdHJhbnNhY3Rpb25CdWlsZGVyL2RlY3J5cHRpb25EZWxlZ2F0aW9uVHhCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsb0RBQTRCO0FBQzVCLG1EQUF1RDtBQUV2RCwyREFLa0M7QUFDbEMsOENBQTJDO0FBRTNDLE1BQU0sV0FBVyxHQUFHLDRDQUE0QyxDQUFDO0FBQ2pFLE1BQU0sZ0JBQWdCLEdBQUcsNENBQTRDLENBQUM7QUFDdEUsTUFBTSxhQUFhLEdBQUcsNENBQTRDLENBQUM7QUFDbkUsTUFBTSxlQUFlLEdBQUcsNENBQTRDLENBQUM7QUFDckUsTUFBTSxpQkFBaUIsR0FBRyw0Q0FBNEMsQ0FBQztBQUN2RSxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsS0FBSyxDQUFDO0FBRTNELFFBQVEsQ0FBQyx5Q0FBeUMsRUFBRSxHQUFHLEVBQUU7SUFDdkQsSUFBSSxTQUE2QixDQUFDO0lBRWxDLFVBQVUsQ0FBQyxHQUFHLEVBQUU7UUFDZCxTQUFTLEdBQUcsSUFBQSx1QkFBVSxFQUFDLE9BQU8sQ0FBdUIsQ0FBQztRQUN0RCxTQUFTLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztRQUN6RCxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxDQUFDO0lBRUgsK0VBQStFO0lBRS9FLEVBQUUsQ0FBQyx1RUFBdUUsRUFBRSxLQUFLLElBQUksRUFBRTtRQUNyRixNQUFNLFFBQVEsR0FBRyxJQUFBLCtDQUFnQyxFQUFDLGdC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QVksQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0lBQ2xHLENBQUMsQ0FBQyxDQUFDO0lBRUgsRUFBRSxDQUFDLGtFQUFrRSxFQUFFLEtBQUssSUFBSSxFQUFFO1FBQ2hGLFNBQVMsQ0FBQyxJQUFJLENBQUMsMEJBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO1FBQ3JELFNBQVMsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUM7UUFDaEMsTUFBTSxTQUFTLENBQUMsS0FBSyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsdURBQXVELENBQUMsQ0FBQztJQUMxRyxDQUFDLENBQUMsQ0FBQztJQUVILEVBQUUsQ0FBQywrRUFBK0UsRUFBRSxHQUFHLEVBQUU7UUFDdkYsTUFBTSxRQUFRLEdBQUcsSUFBQSwrQ0FBZ0MsRUFBQyxnQkFBZ0IsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQzdGLGdCQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsMERBQTBELENBQUMsQ0FBQztJQUM1RyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUcmFuc2FjdGlvbkJ1aWxkZXIgYnVpbGQgYW5kIHJlYnVpbGQgdGVzdHMgZm9yIFphbWEgRVJDLTc5ODQgZGVjcnlwdGlvbiBkZWxlZ2F0aW9uLlxuICpcbiAqIFBhdHRlcm4gbWlycm9ycyBjb250cmFjdENhbGwudHM6IGltcG9ydHMgVHJhbnNhY3Rpb25UeXBlIGZyb20gQGJpdGdvLWJldGEvc2RrLWNvcmUgYW5kXG4gKiBUcmFuc2FjdGlvbkJ1aWxkZXIgZnJvbSAnLi4vLi4vLi4vc3JjJy4gVGhlc2UgYXJlIHN1YmplY3QgdG8gdGhlIHNhbWUgcHJlLWV4aXN0aW5nXG4gKiBpby10cyBjcmFzaCAoc2RrLWNvcmUvc3JjL2JpdGdvL3V0aWxzL3Rzcy9lZGRzYS90eXBlc0VkZHNhTVBDdjIpIHRoYXQgYWZmZWN0cyBBTExcbiAqIFRyYW5zYWN0aW9uQnVpbGRlciB0ZXN0cyBpbiB0aGlzIG1vbm9yZXBvLiBUaGV5IHJ1biBpbiB0aGUgZnVsbCBDSSB0ZXN0IHN1aXRlLlxuICpcbiAqIFRocmVlIGZsb3dzIHZlcmlmaWVkOlxuICogICBGbG93IDEg4oCUIHJvb3Qgd2FsbGV0OiBDb250cmFjdENhbGwgKyBtdWx0aWNhbGwgZGF0YSDihpIgYnVpbGQg4oaSIGZyb20oaGV4KSDihpIgcmVidWlsZFxuICogICBGbG93IDIg4oCUIGV4cGxpY2l0IERlY3J5cHRpb25EZWxlZ2F0aW9uIHR5cGUg4oaSIGJ1aWxkIOKGkiBmcm9tKGhleCkg4oaSIHJlYnVpbGRcbiAqICAgRmxvdyAzIOKAlCBmb3J3YXJkZXI6IENvbnRyYWN0Q2FsbCArIGNhbGxGcm9tUGFyZW50IGRhdGEg4oaSIGJ1aWxkIOKGkiBmcm9tKGhleCkg4oaSIHJlYnVpbGRcbiAqL1xuaW1wb3J0IHNob3VsZCBmcm9tICdzaG91bGQnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25UeXBlIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyIH0gZnJvbSAnLi4vLi4vLi4vc3JjJztcbmltcG9ydCB7XG4gIGJ1aWxkTXVsdGljYWxsRGVsZWdhdGlvbkNhbGxkYXRhLFxuICB3cmFwSW5DYWxsRnJvbVBhcmVudCxcbiAgYWNsTXVsdGljYWxsTWV0aG9kSWQsXG4gIGNhbGxGcm9tUGFyZW50TWV0aG9kSWQsXG59IGZyb20gJ0BiaXRnby1iZXRhL2Fic3RyYWN0LWV0aCc7XG5pbXBvcnQgeyBnZXRCdWlsZGVyIH0gZnJvbSAnLi4vZ2V0QnVpbGRlcic7XG5cbmNvbnN0IEFDTF9BRERSRVNTID0gJzB4ZjBGZmRjOTNiN0UxODZiQzJmOENCM2RBQTc1RDg2ZDE5MzBBNDMzRCc7XG5jb25zdCBERUxFR0FURV9BRERSRVNTID0gJzB4MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMSc7XG5jb25zdCBUT0tFTl9BRERSRVNTID0gJzB4OTQxNjcxMjkxNzJBMzVhYjA5M0I0NGI4Yjk2MjEzRERiYzNjRDM4Nyc7XG5jb25zdCBUT0tFTl9BRERSRVNTXzIgPSAnMHg0RTdCMDZENzg5NjU1OTRlQjVFRjU0MTRjMzU3Y2EyMUUxNTU0NDkxJztcbmNvbnN0IEZPUldBUkRFUl9BRERSRVNTID0gJzB4RGVBRGJlZWZkRUFkYmVlZmRFYWRiRUVGZGVhZGJlRUZkRWFEYmVlRic7XG5jb25zdCBFWFBJUlkgPSBNYXRoLmZsb29yKERhdGUubm93KCkgLyAxMDAwKSArIDM2NSAqIDg2NDAwO1xuXG5kZXNjcmliZSgnRGVjcnlwdGlvbkRlbGVnYXRpb24gVHJhbnNhY3Rpb25CdWlsZGVyJywgKCkgPT4ge1xuICBsZXQgdHhCdWlsZGVyOiBUcmFuc2FjdGlvbkJ1aWxkZXI7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgdHhCdWlsZGVyID0gZ2V0QnVpbGRlcignaHRldGgnKSBhcyBUcmFuc2FjdGlvbkJ1aWxkZXI7XG4gICAgdHhCdWlsZGVyLmZlZSh7IGZlZTogJzEwMDAwMDAwMDAnLCBnYXNMaW1pdDogJzIwMDAwMCcgfSk7XG4gICAgdHhCdWlsZGVyLmNvdW50ZXIoMSk7XG4gIH0pO1xuXG4gIC8vIC0tLS0gRmxvdyAxOiByb290IHdhbGxldCwgQ29udHJhY3RDYWxsIHR5cGUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICBpdCgnRmxvdyAxOiBzaG91bGQgYnVpbGQgYSBDb250cmFjdENhbGwgdHggd2l0aCBtdWx0aWNhbGwgZGVsZWdhdGlvbiBkYXRhJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1MsIFRPS0VOX0FERFJFU1NfMl0sIEVYUElSWSk7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KEFDTF9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuZGF0YShjYWxsZGF0YSk7XG5cbiAgICBjb25zdCB0eCA9IGF3YWl0IHR4QnVpbGRlci5idWlsZCgpO1xuICAgIGNvbnN0IGpzb24gPSB0eC50b0pzb24oKTtcblxuICAgIHNob3VsZC5lcXVhbCh0eC50eXBlLCBUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsKTtcbiAgICBqc29uLnRvLnNob3VsZC5lcXVhbChBQ0xfQUREUkVTUy50b0xvd2VyQ2FzZSgpKTtcbiAgICBqc29uLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChhY2xNdWx0aWNhbGxNZXRob2RJZCk7XG4gICAganNvbi52YWx1ZS5zaG91bGQuZXF1YWwoJzAnKTtcbiAgfSk7XG5cbiAgaXQoJ0Zsb3cgMTogc2hvdWxkIHJlYnVpbGQgZnJvbSBoZXgg4oCUIG11bHRpY2FsbCBkZWxlZ2F0aW9uIHJvdW5kLXRyaXAnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTUywgVE9LRU5fQUREUkVTU18yXSwgRVhQSVJZKTtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuQ29udHJhY3RDYWxsKTtcbiAgICB0eEJ1aWxkZXIuY29udHJhY3QoQUNMX0FERFJFU1MpO1xuICAgIHR4QnVpbGRlci5kYXRhKGNhbGxkYXRhKTtcblxuICAgIGNvbnN0IG9yaWdpbmFsVHggPSBhd2FpdCB0eEJ1aWxkZXIuYnVpbGQoKTtcbiAgICBjb25zdCByYXdIZXggPSBvcmlnaW5hbFR4LnRvQnJvYWRjYXN0Rm9ybWF0KCk7XG5cbiAgICBjb25zdCByZWJ1aWx0QnVpbGRlciA9IGdldEJ1aWxkZXIoJ2h0ZXRoJykgYXMgVHJhbnNhY3Rpb25CdWlsZGVyO1xuICAgIHJlYnVpbHRCdWlsZGVyLmZyb20ocmF3SGV4KTtcbiAgICBjb25zdCByZWJ1aWx0VHggPSBhd2FpdCByZWJ1aWx0QnVpbGRlci5idWlsZCgpO1xuXG4gICAgc2hvdWxkLmVxdWFsKHJlYnVpbHRUeC50b0Jyb2FkY2FzdEZvcm1hdCgpLCByYXdIZXgpO1xuICAgIHJlYnVpbHRUeC50b0pzb24oKS50by5zaG91bGQuZXF1YWwoQUNMX0FERFJFU1MudG9Mb3dlckNhc2UoKSk7XG4gICAgcmVidWlsdFR4LnRvSnNvbigpLmRhdGEuc2hvdWxkLnN0YXJ0V2l0aChhY2xNdWx0aWNhbGxNZXRob2RJZCk7XG4gIH0pO1xuXG4gIC8vIC0tLS0gRmxvdyAyOiBleHBsaWNpdCBEZWNyeXB0aW9uRGVsZWdhdGlvbiB0eXBlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGl0KCdGbG93IDI6IHNob3VsZCBidWlsZCB3aXRoIGV4cGxpY2l0IERlY3J5cHRpb25EZWxlZ2F0aW9uIHR5cGUnLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgY2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTU10sIEVYUElSWSk7XG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkRlY3J5cHRpb25EZWxlZ2F0aW9uKTtcbiAgICB0eEJ1aWxkZXIuY29udHJhY3QoQUNMX0FERFJFU1MpO1xuICAgIHR4QnVpbGRlci5kYXRhKGNhbGxkYXRhKTtcblxuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIGpzb24udG8uc2hvdWxkLmVxdWFsKEFDTF9BRERSRVNTLnRvTG93ZXJDYXNlKCkpO1xuICAgIGpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKGFjbE11bHRpY2FsbE1ldGhvZElkKTtcbiAgICBqc29uLnZhbHVlLnNob3VsZC5lcXVhbCgnMCcpO1xuICB9KTtcblxuICBpdCgnRmxvdyAyOiBzaG91bGQgcmVidWlsZCBmcm9tIGhleCDigJQgRGVjcnlwdGlvbkRlbGVnYXRpb24gdHlwZSByb3VuZC10cmlwJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbik7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KEFDTF9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuZGF0YShjYWxsZGF0YSk7XG5cbiAgICBjb25zdCBvcmlnaW5hbFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgcmF3SGV4ID0gb3JpZ2luYWxUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgLy8gY2xhc3NpZnlUcmFuc2FjdGlvbiBzZWVzIDB4YWM5NjUwZDgg4oaSIENvbnRyYWN0Q2FsbCAobXVsdGljYWxsIG5vdCBtYXBwZWQpXG4gICAgLy8gQ29udHJhY3RDYWxsIHJlYnVpbGQgcGF0aCBoYW5kbGVzIGl0IGlkZW50aWNhbGx5IHRvIERlY3J5cHRpb25EZWxlZ2F0aW9uXG4gICAgY29uc3QgcmVidWlsdEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCdodGV0aCcpIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICByZWJ1aWx0QnVpbGRlci5mcm9tKHJhd0hleCk7XG4gICAgY29uc3QgcmVidWlsdFR4ID0gYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgcmF3SGV4KTtcbiAgfSk7XG5cbiAgLy8gLS0tLSBGbG93IDM6IGZvcndhcmRlciBjYWxsRnJvbVBhcmVudCBwYXRoIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgaXQoJ0Zsb3cgMzogc2hvdWxkIGJ1aWxkIGEgZm9yd2FyZGVyIGRlbGVnYXRpb24gdHggdGFyZ2V0aW5nIHRoZSBmb3J3YXJkZXInLCBhc3luYyAoKSA9PiB7XG4gICAgY29uc3QgaW5uZXJDYWxsZGF0YSA9IGJ1aWxkTXVsdGljYWxsRGVsZWdhdGlvbkNhbGxkYXRhKERFTEVHQVRFX0FERFJFU1MsIFtUT0tFTl9BRERSRVNTXSwgRVhQSVJZKTtcbiAgICBjb25zdCBvdXRlckNhbGxkYXRhID0gd3JhcEluQ2FsbEZyb21QYXJlbnQoQUNMX0FERFJFU1MsIGlubmVyQ2FsbGRhdGEpO1xuXG4gICAgdHhCdWlsZGVyLnR5cGUoVHJhbnNhY3Rpb25UeXBlLkNvbnRyYWN0Q2FsbCk7XG4gICAgdHhCdWlsZGVyLmNvbnRyYWN0KEZPUldBUkRFUl9BRERSRVNTKTtcbiAgICB0eEJ1aWxkZXIuZGF0YShvdXRlckNhbGxkYXRhKTtcblxuICAgIGNvbnN0IHR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QganNvbiA9IHR4LnRvSnNvbigpO1xuXG4gICAgc2hvdWxkLmVxdWFsKHR4LnR5cGUsIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIGpzb24udG8uc2hvdWxkLmVxdWFsKEZPUldBUkRFUl9BRERSRVNTLnRvTG93ZXJDYXNlKCkpO1xuICAgIGpzb24uZGF0YS5zaG91bGQuc3RhcnRXaXRoKGNhbGxGcm9tUGFyZW50TWV0aG9kSWQpO1xuICAgIGpzb24udmFsdWUuc2hvdWxkLmVxdWFsKCcwJyk7XG4gIH0pO1xuXG4gIGl0KCdGbG93IDM6IHNob3VsZCByZWJ1aWxkIGZyb20gaGV4IOKAlCBmb3J3YXJkZXIgZGVsZWdhdGlvbiByb3VuZC10cmlwJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGlubmVyQ2FsbGRhdGEgPSBidWlsZE11bHRpY2FsbERlbGVnYXRpb25DYWxsZGF0YShERUxFR0FURV9BRERSRVNTLCBbVE9LRU5fQUREUkVTU10sIEVYUElSWSk7XG4gICAgY29uc3Qgb3V0ZXJDYWxsZGF0YSA9IHdyYXBJbkNhbGxGcm9tUGFyZW50KEFDTF9BRERSRVNTLCBpbm5lckNhbGxkYXRhKTtcblxuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwpO1xuICAgIHR4QnVpbGRlci5jb250cmFjdChGT1JXQVJERVJfQUREUkVTUyk7XG4gICAgdHhCdWlsZGVyLmRhdGEob3V0ZXJDYWxsZGF0YSk7XG5cbiAgICBjb25zdCBvcmlnaW5hbFR4ID0gYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCk7XG4gICAgY29uc3QgcmF3SGV4ID0gb3JpZ2luYWxUeC50b0Jyb2FkY2FzdEZvcm1hdCgpO1xuXG4gICAgY29uc3QgcmVidWlsdEJ1aWxkZXIgPSBnZXRCdWlsZGVyKCdodGV0aCcpIGFzIFRyYW5zYWN0aW9uQnVpbGRlcjtcbiAgICByZWJ1aWx0QnVpbGRlci5mcm9tKHJhd0hleCk7XG4gICAgY29uc3QgcmVidWlsdFR4ID0gYXdhaXQgcmVidWlsdEJ1aWxkZXIuYnVpbGQoKTtcblxuICAgIHNob3VsZC5lcXVhbChyZWJ1aWx0VHgudG9Ccm9hZGNhc3RGb3JtYXQoKSwgcmF3SGV4KTtcbiAgICByZWJ1aWx0VHgudG9Kc29uKCkudG8uc2hvdWxkLmVxdWFsKEZPUldBUkRFUl9BRERSRVNTLnRvTG93ZXJDYXNlKCkpO1xuICAgIHJlYnVpbHRUeC50b0pzb24oKS5kYXRhLnNob3VsZC5zdGFydFdpdGgoY2FsbEZyb21QYXJlbnRNZXRob2RJZCk7XG4gIH0pO1xuXG4gIC8vIC0tLS0gVmFsaWRhdGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIGl0KCdzaG91bGQgdGhyb3cgZm9yIERlY3J5cHRpb25EZWxlZ2F0aW9uIHdoZW4gY29udHJhY3QgYWRkcmVzcyBpcyBtaXNzaW5nJywgYXN5bmMgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIHR4QnVpbGRlci50eXBlKFRyYW5zYWN0aW9uVHlwZS5EZWNyeXB0aW9uRGVsZWdhdGlvbik7XG4gICAgdHhCdWlsZGVyLmRhdGEoY2FsbGRhdGEpO1xuICAgIGF3YWl0IHR4QnVpbGRlci5idWlsZCgpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ0ludmFsaWQgdHJhbnNhY3Rpb246IG1pc3NpbmcgY29udHJhY3QgYWRkcmVzcycpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGZvciBEZWNyeXB0aW9uRGVsZWdhdGlvbiB3aGVuIGRhdGEgZmllbGQgaXMgbWlzc2luZycsIGFzeW5jICgpID0+IHtcbiAgICB0eEJ1aWxkZXIudHlwZShUcmFuc2FjdGlvblR5cGUuRGVjcnlwdGlvbkRlbGVnYXRpb24pO1xuICAgIHR4QnVpbGRlci5jb250cmFjdChBQ0xfQUREUkVTUyk7XG4gICAgYXdhaXQgdHhCdWlsZGVyLmJ1aWxkKCkuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnSW52YWxpZCB0cmFuc2FjdGlvbjogbWlzc2luZyBjb250cmFjdCBjYWxsIGRhdGEgZmllbGQnKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyB3aGVuIGRhdGEoKSBpcyBjYWxsZWQgYmVmb3JlIHR5cGUgaXMgc2V0IHRvIGEgY29udHJhY3QgY2FsbCB0eXBlJywgKCkgPT4ge1xuICAgIGNvbnN0IGNhbGxkYXRhID0gYnVpbGRNdWx0aWNhbGxEZWxlZ2F0aW9uQ2FsbGRhdGEoREVMRUdBVEVfQUREUkVTUywgW1RPS0VOX0FERFJFU1NdLCBFWFBJUlkpO1xuICAgIHNob3VsZC50aHJvd3MoKCkgPT4gdHhCdWlsZGVyLmRhdGEoY2FsbGRhdGEpLCAvZGF0YSBjYW4gb25seSBiZSBzZXQgZm9yIGNvbnRyYWN0IGNhbGwgdHJhbnNhY3Rpb24gdHlwZXMvKTtcbiAgfSk7XG59KTtcbiJdfQ==