@bitgo-beta/sdk-coin-sol 2.4.3-beta.94 → 2.4.3-beta.941

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 (62) hide show
  1. package/CHANGELOG.md +965 -0
  2. package/dist/src/index.js +6 -2
  3. package/dist/src/lib/ataInitializationBuilder.d.ts.map +1 -1
  4. package/dist/src/lib/ataInitializationBuilder.js +38 -19
  5. package/dist/src/lib/closeAtaBuilder.d.ts +19 -0
  6. package/dist/src/lib/closeAtaBuilder.d.ts.map +1 -0
  7. package/dist/src/lib/closeAtaBuilder.js +69 -0
  8. package/dist/src/lib/constants.d.ts +35 -8
  9. package/dist/src/lib/constants.d.ts.map +1 -1
  10. package/dist/src/lib/constants.js +39 -10
  11. package/dist/src/lib/iface.d.ts +40 -4
  12. package/dist/src/lib/iface.d.ts.map +1 -1
  13. package/dist/src/lib/iface.js +1 -1
  14. package/dist/src/lib/index.d.ts +11 -9
  15. package/dist/src/lib/index.d.ts.map +1 -1
  16. package/dist/src/lib/index.js +44 -26
  17. package/dist/src/lib/instructionParamsFactory.d.ts +1 -1
  18. package/dist/src/lib/instructionParamsFactory.d.ts.map +1 -1
  19. package/dist/src/lib/instructionParamsFactory.js +246 -52
  20. package/dist/src/lib/keyPair.js +5 -5
  21. package/dist/src/lib/solInstructionFactory.d.ts.map +1 -1
  22. package/dist/src/lib/solInstructionFactory.js +128 -52
  23. package/dist/src/lib/stakingActivateBuilder.d.ts +9 -2
  24. package/dist/src/lib/stakingActivateBuilder.d.ts.map +1 -1
  25. package/dist/src/lib/stakingActivateBuilder.js +23 -10
  26. package/dist/src/lib/stakingAuthorizeBuilder.js +7 -7
  27. package/dist/src/lib/stakingDeactivateBuilder.d.ts +26 -1
  28. package/dist/src/lib/stakingDeactivateBuilder.d.ts.map +1 -1
  29. package/dist/src/lib/stakingDeactivateBuilder.js +106 -25
  30. package/dist/src/lib/stakingDelegateBuilder.d.ts +42 -0
  31. package/dist/src/lib/stakingDelegateBuilder.d.ts.map +1 -0
  32. package/dist/src/lib/stakingDelegateBuilder.js +120 -0
  33. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -1
  34. package/dist/src/lib/stakingRawMsgAuthorizeBuilder.js +9 -5
  35. package/dist/src/lib/stakingWithdrawBuilder.js +6 -6
  36. package/dist/src/lib/tokenTransferBuilder.d.ts.map +1 -1
  37. package/dist/src/lib/tokenTransferBuilder.js +32 -16
  38. package/dist/src/lib/transaction.d.ts +2 -3
  39. package/dist/src/lib/transaction.d.ts.map +1 -1
  40. package/dist/src/lib/transaction.js +45 -26
  41. package/dist/src/lib/transactionBuilder.d.ts +2 -1
  42. package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
  43. package/dist/src/lib/transactionBuilder.js +29 -19
  44. package/dist/src/lib/transactionBuilderFactory.d.ts +22 -9
  45. package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
  46. package/dist/src/lib/transactionBuilderFactory.js +31 -10
  47. package/dist/src/lib/transferBuilder.js +4 -4
  48. package/dist/src/lib/transferBuilderV2.d.ts +11 -1
  49. package/dist/src/lib/transferBuilderV2.d.ts.map +1 -1
  50. package/dist/src/lib/transferBuilderV2.js +71 -10
  51. package/dist/src/lib/utils.d.ts +16 -6
  52. package/dist/src/lib/utils.d.ts.map +1 -1
  53. package/dist/src/lib/utils.js +144 -53
  54. package/dist/src/lib/walletInitializationBuilder.js +6 -6
  55. package/dist/src/sol.d.ts +71 -25
  56. package/dist/src/sol.d.ts.map +1 -1
  57. package/dist/src/sol.js +615 -81
  58. package/dist/src/solToken.d.ts +2 -1
  59. package/dist/src/solToken.d.ts.map +1 -1
  60. package/dist/src/solToken.js +6 -3
  61. package/dist/src/tsol.js +1 -1
  62. package/package.json +10 -9
@@ -15,7 +15,7 @@ class KeyPair extends sdk_core_1.Ed25519KeyPair {
15
15
  }
16
16
  /** @inheritdoc */
17
17
  recordKeysFromPrivateKeyInProtocolFormat(prv) {
18
- const prvKey = utils_1.base58ToUint8Array(prv);
18
+ const prvKey = (0, utils_1.base58ToUint8Array)(prv);
19
19
  const keyPair = web3_js_1.Keypair.fromSecretKey(prvKey);
20
20
  return {
21
21
  pub: keyPair.publicKey.toBuffer().toString('hex'),
@@ -25,7 +25,7 @@ class KeyPair extends sdk_core_1.Ed25519KeyPair {
25
25
  /** @inheritdoc */
26
26
  recordKeysFromPublicKeyInProtocolFormat(pub) {
27
27
  return {
28
- pub: Buffer.from(utils_1.base58ToUint8Array(pub)).toString('hex'),
28
+ pub: Buffer.from((0, utils_1.base58ToUint8Array)(pub)).toString('hex'),
29
29
  };
30
30
  }
31
31
  /**
@@ -37,7 +37,7 @@ class KeyPair extends sdk_core_1.Ed25519KeyPair {
37
37
  getKeys(raw = false) {
38
38
  // keys are originally created in hex, but we need base58
39
39
  const publicKeyBuffer = Buffer.from(this.keyPair.pub, 'hex');
40
- const base58Pub = utils_1.Uint8ArrayTobase58(publicKeyBuffer);
40
+ const base58Pub = (0, utils_1.Uint8ArrayTobase58)(publicKeyBuffer);
41
41
  const result = { pub: base58Pub };
42
42
  if (!!this.keyPair.prv) {
43
43
  const secretKeyBuffer = Buffer.from(this.keyPair.prv, 'hex');
@@ -48,7 +48,7 @@ class KeyPair extends sdk_core_1.Ed25519KeyPair {
48
48
  result.prv = solanaSecretKey;
49
49
  }
50
50
  else {
51
- result.prv = utils_1.Uint8ArrayTobase58(solanaSecretKey);
51
+ result.prv = (0, utils_1.Uint8ArrayTobase58)(solanaSecretKey);
52
52
  }
53
53
  }
54
54
  return result;
@@ -60,4 +60,4 @@ class KeyPair extends sdk_core_1.Ed25519KeyPair {
60
60
  }
61
61
  }
62
62
  exports.KeyPair = KeyPair;
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBd0Q7QUFDeEQsbURBQW1GO0FBRW5GLG1DQUFpRTtBQUVqRSxNQUFhLE9BQVEsU0FBUSx5QkFBYztJQUl6Qzs7OztPQUlHO0lBQ0gsWUFBWSxNQUF1QjtRQUNqQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix3Q0FBd0MsQ0FBQyxHQUFXO1FBQ2xELE1BQU0sTUFBTSxHQUFHLDBCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxHQUFHLGlCQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRWpELE9BQU87WUFDTCxHQUFHLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1lBQ2pELEdBQUcsRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7U0FDakUsQ0FBQztJQUNKLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsdUNBQXVDLENBQUMsR0FBVztRQUNqRCxPQUFPO1lBQ0wsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsMEJBQWtCLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDO1NBQzFELENBQUM7SUFDSixDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsR0FBRyxHQUFHLEtBQUs7UUFDakIseURBQXlEO1FBQ3pELE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDN0QsTUFBTSxTQUFTLEdBQUcsMEJBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFdEQsTUFBTSxNQUFNLEdBQWUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUU7WUFDdEIsTUFBTSxlQUFlLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztZQUM3RCxNQUFNLGVBQWUsR0FBRyxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUMzQyxlQUFlLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ3JDLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBRXpDLElBQUksR0FBRyxFQUFFO2dCQUNQLE1BQU0sQ0FBQyxHQUFHLEdBQUcsZUFBZSxDQUFDO2FBQzlCO2lCQUFNO2dCQUNMLE1BQU0sQ0FBQyxHQUFHLEdBQUcsMEJBQWtCLENBQUMsZUFBZSxDQUFDLENBQUM7YUFDbEQ7U0FDRjtRQUNELE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsVUFBVTtRQUNSLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDbEIsQ0FBQztDQUNGO0FBL0RELDBCQStEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleXBhaXIgYXMgU29sS2V5cGFpciB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5pbXBvcnQgeyBEZWZhdWx0S2V5cywgS2V5UGFpck9wdGlvbnMsIEVkMjU1MTlLZXlQYWlyIH0gZnJvbSAnQGJpdGdvLWJldGEvc2RrLWNvcmUnO1xuaW1wb3J0IHsgU29sYW5hS2V5cyB9IGZyb20gJy4vaWZhY2UnO1xuaW1wb3J0IHsgYmFzZTU4VG9VaW50OEFycmF5LCBVaW50OEFycmF5VG9iYXNlNTggfSBmcm9tICcuL3V0aWxzJztcblxuZXhwb3J0IGNsYXNzIEtleVBhaXIgZXh0ZW5kcyBFZDI1NTE5S2V5UGFpciB7XG4gIHByb3RlY3RlZCBrZXlQYWlyOiBEZWZhdWx0S2V5cztcbiAgcHJvdGVjdGVkIHNvdXJjZT86IEtleVBhaXJPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBrZXkgcGFpciB3aXRoIGEgcmFuZG9tIG1hc3RlciBzZWVkLlxuICAgKlxuICAgKiBAcGFyYW0geyBLZXlQYWlyT3B0aW9ucyB9IHNvdXJjZSBFaXRoZXIgYSBtYXN0ZXIgc2VlZCwgYSBwcml2YXRlIGtleSwgb3IgYSBwdWJsaWMga2V5XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIHN1cGVyKHNvdXJjZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5SW5Qcm90b2NvbEZvcm1hdChwcnY6IHN0cmluZyk6IERlZmF1bHRLZXlzIHtcbiAgICBjb25zdCBwcnZLZXkgPSBiYXNlNThUb1VpbnQ4QXJyYXkocHJ2KTtcbiAgICBjb25zdCBrZXlQYWlyID0gU29sS2V5cGFpci5mcm9tU2VjcmV0S2V5KHBydktleSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgcHViOiBrZXlQYWlyLnB1YmxpY0tleS50b0J1ZmZlcigpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICAgIHBydjogQnVmZmVyLmZyb20oa2V5UGFpci5zZWNyZXRLZXkuc2xpY2UoMCwgMzIpKS50b1N0cmluZygnaGV4JyksXG4gICAgfTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICByZWNvcmRLZXlzRnJvbVB1YmxpY0tleUluUHJvdG9jb2xGb3JtYXQocHViOiBzdHJpbmcpOiBEZWZhdWx0S2V5cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHB1YjogQnVmZmVyLmZyb20oYmFzZTU4VG9VaW50OEFycmF5KHB1YikpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFNvbGFuYSBkZWZhdWx0IGtleXMgZm9ybWF0IHB1YmxpYyBrZXkgYXMgYSBiYXNlNTggc3RyaW5nIGFuZCBzZWNyZXQga2V5IGFzIFVpbnQ4QXJyYXlcbiAgICpcbiAgICogQHBhcmFtIHtib29sZWFufSByYXcgZGVmaW5lcyBpZiB0aGUgcHJ2IGtleSBpcyByZXR1cm5lZCBpbiBVaW50OEFycmF5LCBkZWZhdWx0IGlzIGJhc2U1OFxuICAgKiBAcmV0dXJucyB7U29sYW5hS2V5c30gVGhlIGtleXMgaW4gdGhlIGRlZmluZWQgZm9ybWF0XG4gICAqL1xuICBnZXRLZXlzKHJhdyA9IGZhbHNlKTogU29sYW5hS2V5cyB7XG4gICAgLy8ga2V5cyBhcmUgb3JpZ2luYWxseSBjcmVhdGVkIGluIGhleCwgYnV0IHdlIG5lZWQgYmFzZTU4XG4gICAgY29uc3QgcHVibGljS2V5QnVmZmVyID0gQnVmZmVyLmZyb20odGhpcy5rZXlQYWlyLnB1YiwgJ2hleCcpO1xuICAgIGNvbnN0IGJhc2U1OFB1YiA9IFVpbnQ4QXJyYXlUb2Jhc2U1OChwdWJsaWNLZXlCdWZmZXIpO1xuXG4gICAgY29uc3QgcmVzdWx0OiBTb2xhbmFLZXlzID0geyBwdWI6IGJhc2U1OFB1YiB9O1xuICAgIGlmICghIXRoaXMua2V5UGFpci5wcnYpIHtcbiAgICAgIGNvbnN0IHNlY3JldEtleUJ1ZmZlciA9IEJ1ZmZlci5mcm9tKHRoaXMua2V5UGFpci5wcnYsICdoZXgnKTtcbiAgICAgIGNvbnN0IHNvbGFuYVNlY3JldEtleSA9IG5ldyBVaW50OEFycmF5KDY0KTtcbiAgICAgIHNvbGFuYVNlY3JldEtleS5zZXQoc2VjcmV0S2V5QnVmZmVyKTtcbiAgICAgIHNvbGFuYVNlY3JldEtleS5zZXQocHVibGljS2V5QnVmZmVyLCAzMik7XG5cbiAgICAgIGlmIChyYXcpIHtcbiAgICAgICAgcmVzdWx0LnBydiA9IHNvbGFuYVNlY3JldEtleTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wcnYgPSBVaW50OEFycmF5VG9iYXNlNTgoc29sYW5hU2VjcmV0S2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRBZGRyZXNzKCk6IHN0cmluZyB7XG4gICAgY29uc3Qga2V5cyA9IHRoaXMuZ2V0S2V5cygpO1xuICAgIHJldHVybiBrZXlzLnB1YjtcbiAgfVxufVxuIl19
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIva2V5UGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBd0Q7QUFDeEQsbURBQW1GO0FBRW5GLG1DQUFpRTtBQUVqRSxNQUFhLE9BQVEsU0FBUSx5QkFBYztJQUl6Qzs7OztPQUlHO0lBQ0gsWUFBWSxNQUF1QjtRQUNqQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix3Q0FBd0MsQ0FBQyxHQUFXO1FBQ2xELE1BQU0sTUFBTSxHQUFHLElBQUEsMEJBQWtCLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsTUFBTSxPQUFPLEdBQUcsaUJBQVUsQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFakQsT0FBTztZQUNMLEdBQUcsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7WUFDakQsR0FBRyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztTQUNqRSxDQUFDO0lBQ0osQ0FBQztJQUVELGtCQUFrQjtJQUNsQix1Q0FBdUMsQ0FBQyxHQUFXO1FBQ2pELE9BQU87WUFDTCxHQUFHLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFBLDBCQUFrQixFQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztTQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsT0FBTyxDQUFDLEdBQUcsR0FBRyxLQUFLO1FBQ2pCLHlEQUF5RDtRQUN6RCxNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdELE1BQU0sU0FBUyxHQUFHLElBQUEsMEJBQWtCLEVBQUMsZUFBZSxDQUFDLENBQUM7UUFFdEQsTUFBTSxNQUFNLEdBQWUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDOUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN2QixNQUFNLGVBQWUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBQzdELE1BQU0sZUFBZSxHQUFHLElBQUksVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQzNDLGVBQWUsQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7WUFDckMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFDLENBQUM7WUFFekMsSUFBSSxHQUFHLEVBQUUsQ0FBQztnQkFDUixNQUFNLENBQUMsR0FBRyxHQUFHLGVBQWUsQ0FBQztZQUMvQixDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxDQUFDLEdBQUcsR0FBRyxJQUFBLDBCQUFrQixFQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25ELENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTyxNQUFNLENBQUM7SUFDaEIsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixVQUFVO1FBQ1IsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQztJQUNsQixDQUFDO0NBQ0Y7QUEvREQsMEJBK0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgS2V5cGFpciBhcyBTb2xLZXlwYWlyIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCB7IERlZmF1bHRLZXlzLCBLZXlQYWlyT3B0aW9ucywgRWQyNTUxOUtleVBhaXIgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5pbXBvcnQgeyBTb2xhbmFLZXlzIH0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBiYXNlNThUb1VpbnQ4QXJyYXksIFVpbnQ4QXJyYXlUb2Jhc2U1OCB9IGZyb20gJy4vdXRpbHMnO1xuXG5leHBvcnQgY2xhc3MgS2V5UGFpciBleHRlbmRzIEVkMjU1MTlLZXlQYWlyIHtcbiAgcHJvdGVjdGVkIGtleVBhaXI6IERlZmF1bHRLZXlzO1xuICBwcm90ZWN0ZWQgc291cmNlPzogS2V5UGFpck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIFB1YmxpYyBjb25zdHJ1Y3Rvci4gQnkgZGVmYXVsdCwgY3JlYXRlcyBhIGtleSBwYWlyIHdpdGggYSByYW5kb20gbWFzdGVyIHNlZWQuXG4gICAqXG4gICAqIEBwYXJhbSB7IEtleVBhaXJPcHRpb25zIH0gc291cmNlIEVpdGhlciBhIG1hc3RlciBzZWVkLCBhIHByaXZhdGUga2V5LCBvciBhIHB1YmxpYyBrZXlcbiAgICovXG4gIGNvbnN0cnVjdG9yKHNvdXJjZT86IEtleVBhaXJPcHRpb25zKSB7XG4gICAgc3VwZXIoc291cmNlKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICByZWNvcmRLZXlzRnJvbVByaXZhdGVLZXlJblByb3RvY29sRm9ybWF0KHBydjogc3RyaW5nKTogRGVmYXVsdEtleXMge1xuICAgIGNvbnN0IHBydktleSA9IGJhc2U1OFRvVWludDhBcnJheShwcnYpO1xuICAgIGNvbnN0IGtleVBhaXIgPSBTb2xLZXlwYWlyLmZyb21TZWNyZXRLZXkocHJ2S2V5KTtcblxuICAgIHJldHVybiB7XG4gICAgICBwdWI6IGtleVBhaXIucHVibGljS2V5LnRvQnVmZmVyKCkudG9TdHJpbmcoJ2hleCcpLFxuICAgICAgcHJ2OiBCdWZmZXIuZnJvbShrZXlQYWlyLnNlY3JldEtleS5zbGljZSgwLCAzMikpLnRvU3RyaW5nKCdoZXgnKSxcbiAgICB9O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIHJlY29yZEtleXNGcm9tUHVibGljS2V5SW5Qcm90b2NvbEZvcm1hdChwdWI6IHN0cmluZyk6IERlZmF1bHRLZXlzIHtcbiAgICByZXR1cm4ge1xuICAgICAgcHViOiBCdWZmZXIuZnJvbShiYXNlNThUb1VpbnQ4QXJyYXkocHViKSkudG9TdHJpbmcoJ2hleCcpLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogU29sYW5hIGRlZmF1bHQga2V5cyBmb3JtYXQgcHVibGljIGtleSBhcyBhIGJhc2U1OCBzdHJpbmcgYW5kIHNlY3JldCBrZXkgYXMgVWludDhBcnJheVxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhdyBkZWZpbmVzIGlmIHRoZSBwcnYga2V5IGlzIHJldHVybmVkIGluIFVpbnQ4QXJyYXksIGRlZmF1bHQgaXMgYmFzZTU4XG4gICAqIEByZXR1cm5zIHtTb2xhbmFLZXlzfSBUaGUga2V5cyBpbiB0aGUgZGVmaW5lZCBmb3JtYXRcbiAgICovXG4gIGdldEtleXMocmF3ID0gZmFsc2UpOiBTb2xhbmFLZXlzIHtcbiAgICAvLyBrZXlzIGFyZSBvcmlnaW5hbGx5IGNyZWF0ZWQgaW4gaGV4LCBidXQgd2UgbmVlZCBiYXNlNThcbiAgICBjb25zdCBwdWJsaWNLZXlCdWZmZXIgPSBCdWZmZXIuZnJvbSh0aGlzLmtleVBhaXIucHViLCAnaGV4Jyk7XG4gICAgY29uc3QgYmFzZTU4UHViID0gVWludDhBcnJheVRvYmFzZTU4KHB1YmxpY0tleUJ1ZmZlcik7XG5cbiAgICBjb25zdCByZXN1bHQ6IFNvbGFuYUtleXMgPSB7IHB1YjogYmFzZTU4UHViIH07XG4gICAgaWYgKCEhdGhpcy5rZXlQYWlyLnBydikge1xuICAgICAgY29uc3Qgc2VjcmV0S2V5QnVmZmVyID0gQnVmZmVyLmZyb20odGhpcy5rZXlQYWlyLnBydiwgJ2hleCcpO1xuICAgICAgY29uc3Qgc29sYW5hU2VjcmV0S2V5ID0gbmV3IFVpbnQ4QXJyYXkoNjQpO1xuICAgICAgc29sYW5hU2VjcmV0S2V5LnNldChzZWNyZXRLZXlCdWZmZXIpO1xuICAgICAgc29sYW5hU2VjcmV0S2V5LnNldChwdWJsaWNLZXlCdWZmZXIsIDMyKTtcblxuICAgICAgaWYgKHJhdykge1xuICAgICAgICByZXN1bHQucHJ2ID0gc29sYW5hU2VjcmV0S2V5O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVzdWx0LnBydiA9IFVpbnQ4QXJyYXlUb2Jhc2U1OChzb2xhbmFTZWNyZXRLZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldEFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXlzID0gdGhpcy5nZXRLZXlzKCk7XG4gICAgcmV0dXJuIGtleXMucHViO1xuICB9XG59XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"solInstructionFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/solInstructionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAML,sBAAsB,EAGvB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAEL,iBAAiB,EAUlB,MAAM,SAAS,CAAC;AAIjB;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,sBAAsB,EAAE,CAyBrG"}
1
+ {"version":3,"file":"solInstructionFactory.d.ts","sourceRoot":"","sources":["../../../src/lib/solInstructionFactory.ts"],"names":[],"mappings":"AAOA,OAAO,EAQL,sBAAsB,EAEvB,MAAM,iBAAiB,CAAC;AAIzB,OAAO,EAGL,iBAAiB,EAYlB,MAAM,SAAS,CAAC;AAEjB;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,sBAAsB,EAAE,CA+BrG"}
@@ -3,13 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.solInstructionFactory = void 0;
6
+ exports.solInstructionFactory = solInstructionFactory;
7
+ const statics_1 = require("@bitgo-beta/statics");
8
+ const spl_token_1 = require("@solana/spl-token");
7
9
  const web3_js_1 = require("@solana/web3.js");
8
10
  const assert_1 = __importDefault(require("assert"));
9
11
  const bignumber_js_1 = __importDefault(require("bignumber.js"));
10
12
  const constants_1 = require("./constants");
11
- const statics_1 = require("@bitgo-beta/statics");
12
- const spl_token_1 = require("@solana/spl-token");
13
13
  /**
14
14
  * Construct Solana instructions from instructions params
15
15
  *
@@ -36,13 +36,18 @@ function solInstructionFactory(instructionToBuild) {
36
36
  return stakingWithdrawInstruction(instructionToBuild);
37
37
  case constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount:
38
38
  return createATAInstruction(instructionToBuild);
39
+ case constants_1.InstructionBuilderTypes.CloseAssociatedTokenAccount:
40
+ return closeATAInstruction(instructionToBuild);
39
41
  case constants_1.InstructionBuilderTypes.StakingAuthorize:
40
42
  return stakingAuthorizeInstruction(instructionToBuild);
43
+ case constants_1.InstructionBuilderTypes.StakingDelegate:
44
+ return stakingDelegateInstruction(instructionToBuild);
45
+ case constants_1.InstructionBuilderTypes.SetPriorityFee:
46
+ return fetchPriorityFeeInstruction(instructionToBuild);
41
47
  default:
42
48
  throw new Error(`Invalid instruction type or not supported`);
43
49
  }
44
50
  }
45
- exports.solInstructionFactory = solInstructionFactory;
46
51
  /**
47
52
  * Construct Advance Nonce Solana instructions
48
53
  *
@@ -51,14 +56,20 @@ exports.solInstructionFactory = solInstructionFactory;
51
56
  */
52
57
  function advanceNonceInstruction(data) {
53
58
  const { params: { authWalletAddress, walletNonceAddress }, } = data;
54
- assert_1.default(authWalletAddress, 'Missing authWalletAddress param');
55
- assert_1.default(walletNonceAddress, 'Missing walletNonceAddress param');
59
+ (0, assert_1.default)(authWalletAddress, 'Missing authWalletAddress param');
60
+ (0, assert_1.default)(walletNonceAddress, 'Missing walletNonceAddress param');
56
61
  const nonceInstruction = web3_js_1.SystemProgram.nonceAdvance({
57
62
  noncePubkey: new web3_js_1.PublicKey(walletNonceAddress),
58
63
  authorizedPubkey: new web3_js_1.PublicKey(authWalletAddress),
59
64
  });
60
65
  return [nonceInstruction];
61
66
  }
67
+ function fetchPriorityFeeInstruction(instructionToBuild) {
68
+ const addPriorityFee = web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({
69
+ microLamports: instructionToBuild.params.fee,
70
+ });
71
+ return [addPriorityFee];
72
+ }
62
73
  /**
63
74
  * Construct Memo Solana instructions
64
75
  *
@@ -67,7 +78,7 @@ function advanceNonceInstruction(data) {
67
78
  */
68
79
  function memoInstruction(data) {
69
80
  const { params: { memo }, } = data;
70
- assert_1.default(memo, 'Missing memo param');
81
+ (0, assert_1.default)(memo, 'Missing memo param');
71
82
  const memoInstruction = new web3_js_1.TransactionInstruction({
72
83
  keys: [],
73
84
  programId: new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK),
@@ -83,9 +94,9 @@ function memoInstruction(data) {
83
94
  */
84
95
  function transferInstruction(data) {
85
96
  const { params: { fromAddress, toAddress, amount }, } = data;
86
- assert_1.default(fromAddress, 'Missing fromAddress param');
87
- assert_1.default(toAddress, 'Missing toAddress param');
88
- assert_1.default(amount, 'Missing toAddress param');
97
+ (0, assert_1.default)(fromAddress, 'Missing fromAddress param');
98
+ (0, assert_1.default)(toAddress, 'Missing toAddress param');
99
+ (0, assert_1.default)(amount, 'Missing toAddress param');
89
100
  const transferInstruction = web3_js_1.SystemProgram.transfer({
90
101
  fromPubkey: new web3_js_1.PublicKey(fromAddress),
91
102
  toPubkey: new web3_js_1.PublicKey(toAddress),
@@ -101,14 +112,20 @@ function transferInstruction(data) {
101
112
  */
102
113
  function tokenTransferInstruction(data) {
103
114
  const { params: { fromAddress, toAddress, amount, tokenName, sourceAddress }, } = data;
104
- assert_1.default(fromAddress, 'Missing fromAddress (owner) param');
105
- assert_1.default(toAddress, 'Missing toAddress param');
106
- assert_1.default(amount, 'Missing amount param');
107
- assert_1.default(tokenName, 'Missing token name');
108
- assert_1.default(sourceAddress, 'Missing ata address');
115
+ (0, assert_1.default)(fromAddress, 'Missing fromAddress (owner) param');
116
+ (0, assert_1.default)(toAddress, 'Missing toAddress param');
117
+ (0, assert_1.default)(amount, 'Missing amount param');
118
+ (0, assert_1.default)(tokenName, 'Missing token name');
119
+ (0, assert_1.default)(sourceAddress, 'Missing ata address');
109
120
  const token = statics_1.coins.get(data.params.tokenName);
110
- assert_1.default(token instanceof statics_1.SolCoin);
111
- const transferInstruction = spl_token_1.createTransferCheckedInstruction(new web3_js_1.PublicKey(sourceAddress), new web3_js_1.PublicKey(token.tokenAddress), new web3_js_1.PublicKey(toAddress), new web3_js_1.PublicKey(fromAddress), BigInt(amount), token.decimalPlaces);
121
+ (0, assert_1.default)(token instanceof statics_1.SolCoin);
122
+ let transferInstruction;
123
+ if (token.programId === spl_token_1.TOKEN_2022_PROGRAM_ID.toString()) {
124
+ transferInstruction = (0, spl_token_1.createTransferCheckedInstruction)(new web3_js_1.PublicKey(sourceAddress), new web3_js_1.PublicKey(token.tokenAddress), new web3_js_1.PublicKey(toAddress), new web3_js_1.PublicKey(fromAddress), BigInt(amount), token.decimalPlaces, [], spl_token_1.TOKEN_2022_PROGRAM_ID);
125
+ }
126
+ else {
127
+ transferInstruction = (0, spl_token_1.createTransferCheckedInstruction)(new web3_js_1.PublicKey(sourceAddress), new web3_js_1.PublicKey(token.tokenAddress), new web3_js_1.PublicKey(toAddress), new web3_js_1.PublicKey(fromAddress), BigInt(amount), token.decimalPlaces);
128
+ }
112
129
  return [transferInstruction];
113
130
  }
114
131
  /**
@@ -119,10 +136,10 @@ function tokenTransferInstruction(data) {
119
136
  */
120
137
  function createNonceAccountInstruction(data) {
121
138
  const { params: { fromAddress, nonceAddress, authAddress, amount }, } = data;
122
- assert_1.default(fromAddress, 'Missing fromAddress param');
123
- assert_1.default(nonceAddress, 'Missing nonceAddress param');
124
- assert_1.default(authAddress, 'Missing authAddress param');
125
- assert_1.default(amount, 'Missing amount param');
139
+ (0, assert_1.default)(fromAddress, 'Missing fromAddress param');
140
+ (0, assert_1.default)(nonceAddress, 'Missing nonceAddress param');
141
+ (0, assert_1.default)(authAddress, 'Missing authAddress param');
142
+ (0, assert_1.default)(amount, 'Missing amount param');
126
143
  const nonceAccountInstruction = web3_js_1.SystemProgram.createNonceAccount({
127
144
  fromPubkey: new web3_js_1.PublicKey(fromAddress),
128
145
  noncePubkey: new web3_js_1.PublicKey(nonceAddress),
@@ -138,28 +155,33 @@ function createNonceAccountInstruction(data) {
138
155
  * @returns {TransactionInstruction[]} An array containing Create Staking Account and Delegate Solana instructions
139
156
  */
140
157
  function stakingInitializeInstruction(data) {
141
- const { params: { fromAddress, stakingAddress, amount, validator }, } = data;
142
- assert_1.default(fromAddress, 'Missing fromAddress param');
143
- assert_1.default(stakingAddress, 'Missing stakingAddress param');
144
- assert_1.default(amount, 'Missing amount param');
145
- assert_1.default(validator, 'Missing validator param');
158
+ const { params: { fromAddress, stakingAddress, amount, validator, isMarinade }, } = data;
159
+ (0, assert_1.default)(fromAddress, 'Missing fromAddress param');
160
+ (0, assert_1.default)(stakingAddress, 'Missing stakingAddress param');
161
+ (0, assert_1.default)(amount, 'Missing amount param');
162
+ (0, assert_1.default)(validator, 'Missing validator param');
163
+ (0, assert_1.default)(isMarinade !== undefined, 'Missing isMarinade param');
146
164
  const fromPubkey = new web3_js_1.PublicKey(fromAddress);
147
165
  const stakePubkey = new web3_js_1.PublicKey(stakingAddress);
166
+ const validatorPubkey = new web3_js_1.PublicKey(validator);
148
167
  const tx = new web3_js_1.Transaction();
168
+ const stakerPubkey = isMarinade ? validatorPubkey : fromPubkey;
149
169
  const walletInitStaking = web3_js_1.StakeProgram.createAccount({
150
170
  fromPubkey,
151
171
  stakePubkey,
152
- authorized: new web3_js_1.Authorized(fromPubkey, fromPubkey),
153
- lockup: new web3_js_1.Lockup(0, 0, fromPubkey),
172
+ authorized: new web3_js_1.Authorized(stakerPubkey, fromPubkey), // staker and withdrawer
173
+ lockup: new web3_js_1.Lockup(0, 0, fromPubkey), // No minimum epoch to withdraw
154
174
  lamports: new bignumber_js_1.default(amount).toNumber(),
155
175
  });
156
176
  tx.add(walletInitStaking);
157
- const delegateStaking = web3_js_1.StakeProgram.delegate({
158
- stakePubkey: new web3_js_1.PublicKey(stakingAddress),
159
- authorizedPubkey: new web3_js_1.PublicKey(fromAddress),
160
- votePubkey: new web3_js_1.PublicKey(validator),
161
- });
162
- tx.add(delegateStaking);
177
+ if (!isMarinade) {
178
+ const delegateStaking = web3_js_1.StakeProgram.delegate({
179
+ stakePubkey: new web3_js_1.PublicKey(stakingAddress),
180
+ authorizedPubkey: new web3_js_1.PublicKey(fromAddress),
181
+ votePubkey: new web3_js_1.PublicKey(validator),
182
+ });
183
+ tx.add(delegateStaking);
184
+ }
163
185
  return tx.instructions;
164
186
  }
165
187
  /**
@@ -169,9 +191,23 @@ function stakingInitializeInstruction(data) {
169
191
  * @returns {TransactionInstruction[]} An array containing staking deactivate instruction
170
192
  */
171
193
  function stakingDeactivateInstruction(data) {
172
- const { params: { fromAddress, stakingAddress }, } = data;
173
- assert_1.default(fromAddress, 'Missing fromAddress param');
174
- assert_1.default(stakingAddress, 'Missing stakingAddress param');
194
+ const { params: { fromAddress, stakingAddress, isMarinade, recipients }, } = data;
195
+ (0, assert_1.default)(fromAddress, 'Missing fromAddress param');
196
+ if (!isMarinade) {
197
+ (0, assert_1.default)(stakingAddress, 'Missing stakingAddress param');
198
+ }
199
+ if (isMarinade) {
200
+ const tx = new web3_js_1.Transaction();
201
+ (0, assert_1.default)(recipients, 'Missing recipients param');
202
+ const toPubkeyAddress = new web3_js_1.PublicKey(recipients[0].address || '');
203
+ const transferInstruction = web3_js_1.SystemProgram.transfer({
204
+ fromPubkey: new web3_js_1.PublicKey(fromAddress),
205
+ toPubkey: toPubkeyAddress,
206
+ lamports: parseInt(recipients[0].amount, 10),
207
+ });
208
+ tx.add(transferInstruction);
209
+ return tx.instructions;
210
+ }
175
211
  if (data.params.amount && data.params.unstakingAddress) {
176
212
  const tx = new web3_js_1.Transaction();
177
213
  const unstakingAddress = new web3_js_1.PublicKey(data.params.unstakingAddress);
@@ -190,7 +226,7 @@ function stakingDeactivateInstruction(data) {
190
226
  authorizedPubkey: new web3_js_1.PublicKey(fromAddress),
191
227
  splitStakePubkey: unstakingAddress,
192
228
  lamports: new bignumber_js_1.default(data.params.amount).toNumber(),
193
- });
229
+ }, 0);
194
230
  tx.add(splitStake.instructions[1]);
195
231
  const deactivateStaking = web3_js_1.StakeProgram.deactivate({
196
232
  stakePubkey: unstakingAddress,
@@ -215,9 +251,9 @@ function stakingDeactivateInstruction(data) {
215
251
  */
216
252
  function stakingWithdrawInstruction(data) {
217
253
  const { params: { fromAddress, stakingAddress, amount }, } = data;
218
- assert_1.default(fromAddress, 'Missing fromAddress param');
219
- assert_1.default(stakingAddress, 'Missing stakingAddress param');
220
- assert_1.default(amount, 'Missing amount param');
254
+ (0, assert_1.default)(fromAddress, 'Missing fromAddress param');
255
+ (0, assert_1.default)(stakingAddress, 'Missing stakingAddress param');
256
+ (0, assert_1.default)(amount, 'Missing amount param');
221
257
  const withdrawStaking = web3_js_1.StakeProgram.withdraw({
222
258
  stakePubkey: new web3_js_1.PublicKey(stakingAddress),
223
259
  authorizedPubkey: new web3_js_1.PublicKey(fromAddress),
@@ -233,14 +269,34 @@ function stakingWithdrawInstruction(data) {
233
269
  * @returns {TransactionInstruction[]} An array containing Create and Initialize Nonce Solana instruction
234
270
  */
235
271
  function createATAInstruction(data) {
236
- const { params: { mintAddress, ataAddress, ownerAddress, payerAddress }, } = data;
237
- assert_1.default(mintAddress, 'Missing mintAddress param');
238
- assert_1.default(ataAddress, 'Missing ataAddress param');
239
- assert_1.default(ownerAddress, 'Missing ownerAddress param');
240
- assert_1.default(payerAddress, 'Missing payerAddress param');
241
- const associatedTokenAccountInstruction = spl_token_1.createAssociatedTokenAccountInstruction(new web3_js_1.PublicKey(payerAddress), new web3_js_1.PublicKey(ataAddress), new web3_js_1.PublicKey(ownerAddress), new web3_js_1.PublicKey(mintAddress));
272
+ const { params: { mintAddress, ataAddress, ownerAddress, payerAddress, programId }, } = data;
273
+ (0, assert_1.default)(mintAddress, 'Missing mintAddress param');
274
+ (0, assert_1.default)(ataAddress, 'Missing ataAddress param');
275
+ (0, assert_1.default)(ownerAddress, 'Missing ownerAddress param');
276
+ (0, assert_1.default)(payerAddress, 'Missing payerAddress param');
277
+ let associatedTokenAccountInstruction;
278
+ if (programId && programId === spl_token_1.TOKEN_2022_PROGRAM_ID.toString()) {
279
+ associatedTokenAccountInstruction = (0, spl_token_1.createAssociatedTokenAccountInstruction)(new web3_js_1.PublicKey(payerAddress), new web3_js_1.PublicKey(ataAddress), new web3_js_1.PublicKey(ownerAddress), new web3_js_1.PublicKey(mintAddress), spl_token_1.TOKEN_2022_PROGRAM_ID);
280
+ }
281
+ else {
282
+ associatedTokenAccountInstruction = (0, spl_token_1.createAssociatedTokenAccountInstruction)(new web3_js_1.PublicKey(payerAddress), new web3_js_1.PublicKey(ataAddress), new web3_js_1.PublicKey(ownerAddress), new web3_js_1.PublicKey(mintAddress));
283
+ }
242
284
  return [associatedTokenAccountInstruction];
243
285
  }
286
+ /**
287
+ * Construct Close ATA Solana instructions
288
+ *
289
+ * @param {WalletInit} data - the data to build the instruction
290
+ * @returns {TransactionInstruction[]} An array containing Close ATA Solana instruction
291
+ */
292
+ function closeATAInstruction(data) {
293
+ const { params: { accountAddress, destinationAddress, authorityAddress }, } = data;
294
+ (0, assert_1.default)(accountAddress, 'Missing accountAddress param');
295
+ (0, assert_1.default)(destinationAddress, 'Missing destinationAddress param');
296
+ (0, assert_1.default)(authorityAddress, 'Missing authorityAddress param');
297
+ const closeAssociatedTokenAccountInstruction = (0, spl_token_1.createCloseAccountInstruction)(new web3_js_1.PublicKey(accountAddress), new web3_js_1.PublicKey(destinationAddress), new web3_js_1.PublicKey(authorityAddress));
298
+ return [closeAssociatedTokenAccountInstruction];
299
+ }
244
300
  /**
245
301
  * Construct Staking Account Authorize Solana instructions
246
302
  *
@@ -249,10 +305,10 @@ function createATAInstruction(data) {
249
305
  */
250
306
  function stakingAuthorizeInstruction(data) {
251
307
  const { params: { stakingAddress, oldAuthorizeAddress, newAuthorizeAddress, newWithdrawAddress }, } = data;
252
- assert_1.default(stakingAddress, 'Missing stakingAddress param');
253
- assert_1.default(oldAuthorizeAddress, 'Missing oldAuthorizeAddress param');
254
- assert_1.default(newAuthorizeAddress, 'Missing newAuthorizeAddress param');
255
- assert_1.default(newWithdrawAddress, 'Missing newWithdrawAddress param');
308
+ (0, assert_1.default)(stakingAddress, 'Missing stakingAddress param');
309
+ (0, assert_1.default)(oldAuthorizeAddress, 'Missing oldAuthorizeAddress param');
310
+ (0, assert_1.default)(newAuthorizeAddress, 'Missing newAuthorizeAddress param');
311
+ (0, assert_1.default)(newWithdrawAddress, 'Missing newWithdrawAddress param');
256
312
  const tx = new web3_js_1.Transaction();
257
313
  const authorizeStaking = web3_js_1.StakeProgram.authorize({
258
314
  stakePubkey: new web3_js_1.PublicKey(stakingAddress),
@@ -271,4 +327,24 @@ function stakingAuthorizeInstruction(data) {
271
327
  tx.add(authorizeWithdraw);
272
328
  return tx.instructions;
273
329
  }
274
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sSW5zdHJ1Y3Rpb25GYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zb2xJbnN0cnVjdGlvbkZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkNBU3lCO0FBQ3pCLG9EQUE0QjtBQUM1QixnRUFBcUM7QUFDckMsMkNBQXVFO0FBY3ZFLGlEQUFxRDtBQUNyRCxpREFBOEc7QUFFOUc7Ozs7O0dBS0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxrQkFBcUM7SUFDekUsUUFBUSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7UUFDL0IsS0FBSyxtQ0FBdUIsQ0FBQyxZQUFZO1lBQ3ZDLE9BQU8sdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRCxLQUFLLG1DQUF1QixDQUFDLElBQUk7WUFDL0IsT0FBTyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3QyxLQUFLLG1DQUF1QixDQUFDLFFBQVE7WUFDbkMsT0FBTyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pELEtBQUssbUNBQXVCLENBQUMsYUFBYTtZQUN4QyxPQUFPLHdCQUF3QixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDdEQsS0FBSyxtQ0FBdUIsQ0FBQyxrQkFBa0I7WUFDN0MsT0FBTyw2QkFBNkIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzNELEtBQUssbUNBQXVCLENBQUMsZUFBZTtZQUMxQyxPQUFPLDRCQUE0QixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDMUQsS0FBSyxtQ0FBdUIsQ0FBQyxpQkFBaUI7WUFDNUMsT0FBTyw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzFELEtBQUssbUNBQXVCLENBQUMsZUFBZTtZQUMxQyxPQUFPLDBCQUEwQixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDeEQsS0FBSyxtQ0FBdUIsQ0FBQyw0QkFBNEI7WUFDdkQsT0FBTyxvQkFBb0IsQ0FB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QUFFLENBQUMsWUFBWSxDQUFDO0FBQ3pCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBdXRob3JpemVkLFxuICBMb2NrdXAsXG4gIFB1YmxpY0tleSxcbiAgU3Rha2VQcm9ncmFtLFxuICBTeXN0ZW1Qcm9ncmFtLFxuICBUcmFuc2FjdGlvbkluc3RydWN0aW9uLFxuICBUcmFuc2FjdGlvbixcbiAgU3Rha2VBdXRob3JpemF0aW9uTGF5b3V0LFxufSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMsIE1FTU9fUFJPR1JBTV9QSyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIEF0YUluaXQsXG4gIEluc3RydWN0aW9uUGFyYW1zLFxuICBNZW1vLFxuICBOb25jZSxcbiAgU3Rha2luZ0FjdGl2YXRlLFxuICBTdGFraW5nQXV0aG9yaXplLFxuICBTdGFraW5nRGVhY3RpdmF0ZSxcbiAgU3Rha2luZ1dpdGhkcmF3LFxuICBUb2tlblRyYW5zZmVyLFxuICBUcmFuc2ZlcixcbiAgV2FsbGV0SW5pdCxcbn0gZnJvbSAnLi9pZmFjZSc7XG5pbXBvcnQgeyBjb2lucywgU29sQ29pbiB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgY3JlYXRlVHJhbnNmZXJDaGVja2VkSW5zdHJ1Y3Rpb24sIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbiB9IGZyb20gJ0Bzb2xhbmEvc3BsLXRva2VuJztcblxuLyoqXG4gKiBDb25zdHJ1Y3QgU29sYW5hIGluc3RydWN0aW9ucyBmcm9tIGluc3RydWN0aW9ucyBwYXJhbXNcbiAqXG4gKiBAcGFyYW0ge0luc3RydWN0aW9uUGFyYW1zfSBpbnN0cnVjdGlvblRvQnVpbGQgLSB0aGUgZGF0YSBjb250YWluaW5nIHRoZSBpbnN0cnVjdGlvbiBwYXJhbXNcbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgc3VwcG9ydGVkIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNvbEluc3RydWN0aW9uRmFjdG9yeShpbnN0cnVjdGlvblRvQnVpbGQ6IEluc3RydWN0aW9uUGFyYW1zKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgc3dpdGNoIChpbnN0cnVjdGlvblRvQnVpbGQudHlwZSkge1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTm9uY2VBZHZhbmNlOlxuICAgICAgcmV0dXJuIGFkdmFuY2VOb25jZUluc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vOlxuICAgICAgcmV0dXJuIG1lbW9JbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVHJhbnNmZXI6XG4gICAgICByZXR1cm4gdHJhbnNmZXJJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVG9rZW5UcmFuc2ZlcjpcbiAgICAgIHJldHVybiB0b2tlblRyYW5zZmVySW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkKTtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZU5vbmNlQWNjb3VudDpcbiAgICAgIHJldHVybiBjcmVhdGVOb25jZUFjY291bnRJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0FjdGl2YXRlOlxuICAgICAgcmV0dXJuIHN0YWtpbmdJbml0aWFsaXplSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkKTtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdEZWFjdGl2YXRlOlxuICAgICAgcmV0dXJuIHN0YWtpbmdEZWFjdGl2YXRlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkKTtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdXaXRoZHJhdzpcbiAgICAgIHJldHVybiBzdGFraW5nV2l0aGRyYXdJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudDpcbiAgICAgIHJldHVybiBjcmVhdGVBVEFJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0F1dGhvcml6ZTpcbiAgICAgIHJldHVybiBzdGFraW5nQXV0aG9yaXplSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkKTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGluc3RydWN0aW9uIHR5cGUgb3Igbm90IHN1cHBvcnRlZGApO1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0IEFkdmFuY2UgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7Tm9uY2V9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgQWR2YW5jZSBOb25jZSBTb2xhbmEgaW5zdHJ1Y3Rpb25cbiAqL1xuZnVuY3Rpb24gYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24oZGF0YTogTm9uY2UpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGF1dGhXYWxsZXRBZGRyZXNzLCB3YWxsZXROb25jZUFkZHJlc3MgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChhdXRoV2FsbGV0QWRkcmVzcywgJ01pc3NpbmcgYXV0aFdhbGxldEFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KHdhbGxldE5vbmNlQWRkcmVzcywgJ01pc3Npbmcgd2FsbGV0Tm9uY2VBZGRyZXNzIHBhcmFtJyk7XG4gIGNvbnN0IG5vbmNlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1Qcm9ncmFtLm5vbmNlQWR2YW5jZSh7XG4gICAgbm9uY2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkod2FsbGV0Tm9uY2VBZGRyZXNzKSxcbiAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhXYWxsZXRBZGRyZXNzKSxcbiAgfSk7XG4gIHJldHVybiBbbm9uY2VJbnN0cnVjdGlvbl07XG59XG5cbi8qKlxuICogQ29uc3RydWN0IE1lbW8gU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7TWVtb30gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBNZW1vIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiBtZW1vSW5zdHJ1Y3Rpb24oZGF0YTogTWVtbyk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgbWVtbyB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KG1lbW8sICdNaXNzaW5nIG1lbW8gcGFyYW0nKTtcbiAgY29uc3QgbWVtb0luc3RydWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24oe1xuICAgIGtleXM6IFtdLFxuICAgIHByb2dyYW1JZDogbmV3IFB1YmxpY0tleShNRU1PX1BST0dSQU1fUEspLFxuICAgIGRhdGE6IEJ1ZmZlci5mcm9tKG1lbW8pLFxuICB9KTtcbiAgcmV0dXJuIFttZW1vSW5zdHJ1Y3Rpb25dO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBUcmFuc2ZlciBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKlxuICogQHBhcmFtIHtUcmFuc2Zlcn0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBUcmFuc2ZlciBTb2xhbmEgaW5zdHJ1Y3Rpb25cbiAqL1xuZnVuY3Rpb24gdHJhbnNmZXJJbnN0cnVjdGlvbihkYXRhOiBUcmFuc2Zlcik6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgZnJvbUFkZHJlc3MsIHRvQWRkcmVzcywgYW1vdW50IH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQoZnJvbUFkZHJlc3MsICdNaXNzaW5nIGZyb21BZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydCh0b0FkZHJlc3MsICdNaXNzaW5nIHRvQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoYW1vdW50LCAnTWlzc2luZyB0b0FkZHJlc3MgcGFyYW0nKTtcbiAgY29uc3QgdHJhbnNmZXJJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0udHJhbnNmZXIoe1xuICAgIGZyb21QdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIHRvUHVia2V5OiBuZXcgUHVibGljS2V5KHRvQWRkcmVzcyksXG4gICAgbGFtcG9ydHM6IHBhcnNlSW50KGFtb3VudCwgMTApLFxuICB9KTtcbiAgcmV0dXJuIFt0cmFuc2Zlckluc3RydWN0aW9uXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgVHJhbnNmZXIgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7VHJhbnNmZXJ9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgVHJhbnNmZXIgU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIHRva2VuVHJhbnNmZXJJbnN0cnVjdGlvbihkYXRhOiBUb2tlblRyYW5zZmVyKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzcywgdG9BZGRyZXNzLCBhbW91bnQsIHRva2VuTmFtZSwgc291cmNlQWRkcmVzcyB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KGZyb21BZGRyZXNzLCAnTWlzc2luZyBmcm9tQWRkcmVzcyAob3duZXIpIHBhcmFtJyk7XG4gIGFzc2VydCh0b0FkZHJlc3MsICdNaXNzaW5nIHRvQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoYW1vdW50LCAnTWlzc2luZyBhbW91bnQgcGFyYW0nKTtcbiAgYXNzZXJ0KHRva2VuTmFtZSwgJ01pc3NpbmcgdG9rZW4gbmFtZScpO1xuICBhc3NlcnQoc291cmNlQWRkcmVzcywgJ01pc3NpbmcgYXRhIGFkZHJlc3MnKTtcbiAgY29uc3QgdG9rZW4gPSBjb2lucy5nZXQoZGF0YS5wYXJhbXMudG9rZW5OYW1lKTtcbiAgYXNzZXJ0KHRva2VuIGluc3RhbmNlb2YgU29sQ29pbik7XG4gIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBjcmVhdGVUcmFuc2ZlckNoZWNrZWRJbnN0cnVjdGlvbihcbiAgICBuZXcgUHVibGljS2V5KHNvdXJjZUFkZHJlc3MpLFxuICAgIG5ldyBQdWJsaWNLZXkodG9rZW4udG9rZW5BZGRyZXNzKSxcbiAgICBuZXcgUHVibGljS2V5KHRvQWRkcmVzcyksXG4gICAgbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgQmlnSW50KGFtb3VudCksXG4gICAgdG9rZW4uZGVjaW1hbFBsYWNlc1xuICApO1xuICByZXR1cm4gW3RyYW5zZmVySW5zdHJ1Y3Rpb25dO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBDcmVhdGUgYW5kIEluaXRpYWxpemUgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7V2FsbGV0SW5pdH0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBDcmVhdGUgYW5kIEluaXRpYWxpemUgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU5vbmNlQWNjb3VudEluc3RydWN0aW9uKGRhdGE6IFdhbGxldEluaXQpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCBub25jZUFkZHJlc3MsIGF1dGhBZGRyZXNzLCBhbW91bnQgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KG5vbmNlQWRkcmVzcywgJ01pc3Npbmcgbm9uY2VBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChhdXRoQWRkcmVzcywgJ01pc3NpbmcgYXV0aEFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgYW1vdW50IHBhcmFtJyk7XG4gIGNvbnN0IG5vbmNlQWNjb3VudEluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS5jcmVhdGVOb25jZUFjY291bnQoe1xuICAgIGZyb21QdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KG5vbmNlQWRkcmVzcyksXG4gICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWRkcmVzcyksXG4gICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICB9KTtcbiAgcmV0dXJuIG5vbmNlQWNjb3VudEluc3RydWN0aW9uLmluc3RydWN0aW9ucztcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgQ3JlYXRlIFN0YWtpbmcgQWNjb3VudCBhbmQgRGVsZWdhdGUgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7U3Rha2luZ0FjdGl2YXRlfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIENyZWF0ZSBTdGFraW5nIEFjY291bnQgYW5kIERlbGVnYXRlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqL1xuZnVuY3Rpb24gc3Rha2luZ0luaXRpYWxpemVJbnN0cnVjdGlvbihkYXRhOiBTdGFraW5nQWN0aXZhdGUpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCBzdGFraW5nQWRkcmVzcywgYW1vdW50LCB2YWxpZGF0b3IgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KHN0YWtpbmdBZGRyZXNzLCAnTWlzc2luZyBzdGFraW5nQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoYW1vdW50LCAnTWlzc2luZyBhbW91bnQgcGFyYW0nKTtcbiAgYXNzZXJ0KHZhbGlkYXRvciwgJ01pc3NpbmcgdmFsaWRhdG9yIHBhcmFtJyk7XG5cbiAgY29uc3QgZnJvbVB1YmtleSA9IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpO1xuICBjb25zdCBzdGFrZVB1YmtleSA9IG5ldyBQdWJsaWNLZXkoc3Rha2luZ0FkZHJlc3MpO1xuXG4gIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKCk7XG5cbiAgY29uc3Qgd2FsbGV0SW5pdFN0YWtpbmcgPSBTdGFrZVByb2dyYW0uY3JlYXRlQWNjb3VudCh7XG4gICAgZnJvbVB1YmtleSxcbiAgICBzdGFrZVB1YmtleSxcbiAgICBhdXRob3JpemVkOiBuZXcgQXV0aG9yaXplZChmcm9tUHVia2V5LCBmcm9tUHVia2V5KSwgLy8gc3Rha2VyIGFuZCB3aXRoZHJhd2VyXG4gICAgbG9ja3VwOiBuZXcgTG9ja3VwKDAsIDAsIGZyb21QdWJrZXkpLCAvLyBMb29rdXAgc2V0cyB0aGUgbWluaW11bSBlcG9jaCB0byB3aXRoZHJhdywgYnkgZGVmYXVsdCBpcyAwLDAgd2hpY2ggbWVhbnMgdGhlcmUncyBubyBtaW5pbXVtIGxpbWl0XG4gICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICB9KTtcbiAgdHguYWRkKHdhbGxldEluaXRTdGFraW5nKTtcblxuICBjb25zdCBkZWxlZ2F0ZVN0YWtpbmcgPSBTdGFrZVByb2dyYW0uZGVsZWdhdGUoe1xuICAgIHN0YWtlUHVia2V5OiBuZXcgUHVibGljS2V5KHN0YWtpbmdBZGRyZXNzKSxcbiAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICB2b3RlUHVia2V5OiBuZXcgUHVibGljS2V5KHZhbGlkYXRvciksXG4gIH0pO1xuICB0eC5hZGQoZGVsZWdhdGVTdGFraW5nKTtcblxuICByZXR1cm4gdHguaW5zdHJ1Y3Rpb25zO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBzdGFraW5nIGRlYWN0aXZhdGUgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7U3Rha2luZ0RlYWN0aXZhdGV9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgc3Rha2luZyBkZWFjdGl2YXRlIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIHN0YWtpbmdEZWFjdGl2YXRlSW5zdHJ1Y3Rpb24oZGF0YTogU3Rha2luZ0RlYWN0aXZhdGUpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCBzdGFraW5nQWRkcmVzcyB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KGZyb21BZGRyZXNzLCAnTWlzc2luZyBmcm9tQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoc3Rha2luZ0FkZHJlc3MsICdNaXNzaW5nIHN0YWtpbmdBZGRyZXNzIHBhcmFtJyk7XG5cbiAgaWYgKGRhdGEucGFyYW1zLmFtb3VudCAmJiBkYXRhLnBhcmFtcy51bnN0YWtpbmdBZGRyZXNzKSB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oKTtcblxuICAgIGNvbnN0IHVuc3Rha2luZ0FkZHJlc3MgPSBuZXcgUHVibGljS2V5KGRhdGEucGFyYW1zLnVuc3Rha2luZ0FkZHJlc3MpO1xuICAgIGNvbnN0IGFsbG9jYXRlQWNjb3VudCA9IFN5c3RlbVByb2dyYW0uYWxsb2NhdGUoe1xuICAgICAgYWNjb3VudFB1YmtleTogdW5zdGFraW5nQWRkcmVzcyxcbiAgICAgIHNwYWNlOiBTdGFrZVByb2dyYW0uc3BhY2UsXG4gICAgfSk7XG4gICAgdHguYWRkKGFsbG9jYXRlQWNjb3VudCk7XG5cbiAgICBjb25zdCBhc3NpZ25BY2NvdW50ID0gU3lzdGVtUHJvZ3JhbS5hc3NpZ24oe1xuICAgICAgYWNjb3VudFB1YmtleTogdW5zdGFraW5nQWRkcmVzcyxcbiAgICAgIHByb2dyYW1JZDogU3Rha2VQcm9ncmFtLnByb2dyYW1JZCxcbiAgICB9KTtcbiAgICB0eC5hZGQoYXNzaWduQWNjb3VudCk7XG5cbiAgICBjb25zdCBzcGxpdFN0YWtlID0gU3Rha2VQcm9ncmFtLnNwbGl0KHtcbiAgICAgIHN0YWtlUHVia2V5OiBuZXcgUHVibGljS2V5KHN0YWtpbmdBZGRyZXNzKSxcbiAgICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgICAgc3BsaXRTdGFrZVB1YmtleTogdW5zdGFraW5nQWRkcmVzcyxcbiAgICAgIGxhbXBvcnRzOiBuZXcgQmlnTnVtYmVyKGRhdGEucGFyYW1zLmFtb3VudCkudG9OdW1iZXIoKSxcbiAgICB9KTtcbiAgICB0eC5hZGQoc3BsaXRTdGFrZS5pbnN0cnVjdGlvbnNbMV0pO1xuXG4gICAgY29uc3QgZGVhY3RpdmF0ZVN0YWtpbmcgPSBTdGFrZVByb2dyYW0uZGVhY3RpdmF0ZSh7XG4gICAgICBzdGFrZVB1YmtleTogdW5zdGFraW5nQWRkcmVzcyxcbiAgICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIH0pO1xuICAgIHR4LmFkZChkZWFjdGl2YXRlU3Rha2luZyk7XG5cbiAgICByZXR1cm4gdHguaW5zdHJ1Y3Rpb25zO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IGRlYWN0aXZhdGVTdGFraW5nID0gU3Rha2VQcm9ncmFtLmRlYWN0aXZhdGUoe1xuICAgICAgc3Rha2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkoc3Rha2luZ0FkZHJlc3MpLFxuICAgICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgfSk7XG5cbiAgICByZXR1cm4gZGVhY3RpdmF0ZVN0YWtpbmcuaW5zdHJ1Y3Rpb25zO1xuICB9XG59XG5cbi8qKlxuICogQ29uc3RydWN0IFN0YWtpbmcgV2l0aGRyYXcgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7U3Rha2luZ1dpdGhkcmF3fSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIFN0YWtpbmcgV2l0aGRyYXcgIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqL1xuZnVuY3Rpb24gc3Rha2luZ1dpdGhkcmF3SW5zdHJ1Y3Rpb24oZGF0YTogU3Rha2luZ1dpdGhkcmF3KTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzcywgc3Rha2luZ0FkZHJlc3MsIGFtb3VudCB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KGZyb21BZGRyZXNzLCAnTWlzc2luZyBmcm9tQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoc3Rha2luZ0FkZHJlc3MsICdNaXNzaW5nIHN0YWtpbmdBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChhbW91bnQsICdNaXNzaW5nIGFtb3VudCBwYXJhbScpO1xuXG4gIGNvbnN0IHdpdGhkcmF3U3Rha2luZyA9IFN0YWtlUHJvZ3JhbS53aXRoZHJhdyh7XG4gICAgc3Rha2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkoc3Rha2luZ0FkZHJlc3MpLFxuICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIHRvUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICBsYW1wb3J0czogbmV3IEJpZ051bWJlcihhbW91bnQpLnRvTnVtYmVyKCksXG4gIH0pO1xuXG4gIHJldHVybiB3aXRoZHJhd1N0YWtpbmcuaW5zdHJ1Y3Rpb25zO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBDcmVhdGUgYW5kIEluaXRpYWxpemUgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7V2FsbGV0SW5pdH0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBDcmVhdGUgYW5kIEluaXRpYWxpemUgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZUFUQUluc3RydWN0aW9uKGRhdGE6IEF0YUluaXQpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IG1pbnRBZGRyZXNzLCBhdGFBZGRyZXNzLCBvd25lckFkZHJlc3MsIHBheWVyQWRkcmVzcyB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KG1pbnRBZGRyZXNzLCAnTWlzc2luZyBtaW50QWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoYXRhQWRkcmVzcywgJ01pc3NpbmcgYXRhQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQob3duZXJBZGRyZXNzLCAnTWlzc2luZyBvd25lckFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KHBheWVyQWRkcmVzcywgJ01pc3NpbmcgcGF5ZXJBZGRyZXNzIHBhcmFtJyk7XG5cbiAgY29uc3QgYXNzb2NpYXRlZFRva2VuQWNjb3VudEluc3RydWN0aW9uID0gY3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudEluc3RydWN0aW9uKFxuICAgIG5ldyBQdWJsaWNLZXkocGF5ZXJBZGRyZXNzKSxcbiAgICBuZXcgUHVibGljS2V5KGF0YUFkZHJlc3MpLFxuICAgIG5ldyBQdWJsaWNLZXkob3duZXJBZGRyZXNzKSxcbiAgICBuZXcgUHVibGljS2V5KG1pbnRBZGRyZXNzKVxuICApO1xuICByZXR1cm4gW2Fzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbl07XG59XG5cbi8qKlxuICogQ29uc3RydWN0IFN0YWtpbmcgQWNjb3VudCBBdXRob3JpemUgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7U3Rha2luZ0F1dGhvcml6ZX0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBTdGFraW5nIEFjY291bnQgQXV0aG9yaXplIGluc3RydWN0aW9uc1xuICovXG5mdW5jdGlvbiBzdGFraW5nQXV0aG9yaXplSW5zdHJ1Y3Rpb24oZGF0YTogU3Rha2luZ0F1dGhvcml6ZSk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgc3Rha2luZ0FkZHJlc3MsIG9sZEF1dGhvcml6ZUFkZHJlc3MsIG5ld0F1dGhvcml6ZUFkZHJlc3MsIG5ld1dpdGhkcmF3QWRkcmVzcyB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KHN0YWtpbmdBZGRyZXNzLCAnTWlzc2luZyBzdGFraW5nQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQob2xkQXV0aG9yaXplQWRkcmVzcywgJ01pc3Npbmcgb2xkQXV0aG9yaXplQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQobmV3QXV0aG9yaXplQWRkcmVzcywgJ01pc3NpbmcgbmV3QXV0aG9yaXplQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQobmV3V2l0aGRyYXdBZGRyZXNzLCAnTWlzc2luZyBuZXdXaXRoZHJhd0FkZHJlc3MgcGFyYW0nKTtcblxuICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbigpO1xuXG4gIGNvbnN0IGF1dGhvcml6ZVN0YWtpbmcgPSBTdGFrZVByb2dyYW0uYXV0aG9yaXplKHtcbiAgICBzdGFrZVB1YmtleTogbmV3IFB1YmxpY0tleShzdGFraW5nQWRkcmVzcyksXG4gICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShvbGRBdXRob3JpemVBZGRyZXNzKSxcbiAgICBuZXdBdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KG5ld0F1dGhvcml6ZUFkZHJlc3MpLFxuICAgIHN0YWtlQXV0aG9yaXphdGlvblR5cGU6IFN0YWtlQXV0aG9yaXphdGlvbkxheW91dC5TdGFrZXIsXG4gIH0pO1xuXG4gIGNvbnN0IGF1dGhvcml6ZVdpdGhkcmF3ID0gU3Rha2VQcm9ncmFtLmF1dGhvcml6ZSh7XG4gICAgc3Rha2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkoc3Rha2luZ0FkZHJlc3MpLFxuICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkob2xkQXV0aG9yaXplQWRkcmVzcyksXG4gICAgbmV3QXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShuZXdBdXRob3JpemVBZGRyZXNzKSxcbiAgICBzdGFrZUF1dGhvcml6YXRpb25UeXBlOiBTdGFrZUF1dGhvcml6YXRpb25MYXlvdXQuV2l0aGRyYXdlcixcbiAgICBjdXN0b2RpYW5QdWJrZXk6IG5ldyBQdWJsaWNLZXkobmV3V2l0aGRyYXdBZGRyZXNzKSxcbiAgfSk7XG4gIHR4LmFkZChhdXRob3JpemVTdGFraW5nKTtcbiAgdHguYWRkKGF1dGhvcml6ZVdpdGhkcmF3KTtcblxuICByZXR1cm4gdHguaW5zdHJ1Y3Rpb25zO1xufVxuIl19
330
+ /**
331
+ * Construct Delegate Solana instructions
332
+ *
333
+ * @param {StakingActivate} data - the data to build the instruction
334
+ * @returns {TransactionInstruction[]} An array containing Delegate Solana instructions
335
+ */
336
+ function stakingDelegateInstruction(data) {
337
+ const { params: { fromAddress, stakingAddress, validator }, } = data;
338
+ (0, assert_1.default)(fromAddress, 'Missing fromAddress param');
339
+ (0, assert_1.default)(stakingAddress, 'Missing stakingAddress param');
340
+ (0, assert_1.default)(validator, 'Missing validator param');
341
+ const tx = new web3_js_1.Transaction();
342
+ const delegateStaking = web3_js_1.StakeProgram.delegate({
343
+ stakePubkey: new web3_js_1.PublicKey(stakingAddress),
344
+ authorizedPubkey: new web3_js_1.PublicKey(fromAddress),
345
+ votePubkey: new web3_js_1.PublicKey(validator),
346
+ });
347
+ tx.add(delegateStaking);
348
+ return tx.instructions;
349
+ }
350
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sSW5zdHJ1Y3Rpb25GYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9zb2xJbnN0cnVjdGlvbkZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUE0Q0Esc0RBK0JDO0FBM0VELGlEQUFxRDtBQUNyRCxpREFLMkI7QUFDM0IsNkNBVXlCO0FBQ3pCLG9EQUE0QjtBQUM1QixnRUFBcUM7QUFDckMsMkNBQXVFO0FBa0J2RTs7Ozs7R0FLRztBQUNILFNBQWdCLHFCQUFxQixDQUFDLGtCQUFxQztJQUN6RSxRQUFRLGtCQUFrQixDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2hDLEtBQUssbUNBQXVCLENBQUMsWUFBWTtZQUN2QyxPQUFPLHVCQUF1QixDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDckQsS0FBSyxtQ0FBdUIsQ0FBQyxJQUFJO1lBQy9CLE9BQU8sZUFBZSxDQUFDLGtCQUFrQixDQUFDLENBQUM7UUFDN0MsS0FBSyxtQ0FBdUIsQ0FBQyxRQUFRO1lBQ25DLE9BQU8sbUJBQW1CLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNqRCxLQUFLLG1DQUF1QixDQUFDLGFBQWE7WUFDeEMsT0FBTyx3QkFBd0IsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3RELEtBQUssbUNBQXVCLENBQUMsa0JBQWtCO1lBQzdDLE9BQU8sNkJBQTZCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMzRCxLQUFLLG1DQUF1QixDQUFDLGVBQWU7WUFDMUMsT0FBTyw0QkFBNEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQzFELEtBQUssbUNBQXVCLENBQUMsaUJBQWlCO1lBQzVDLE9BQU8sNEJBQTRCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMxRCxLQUFLLG1DQUF1QixDQUFDLGVBQWU7WUFDMUMsT0FBTywwQkFBMEIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3hELEtBQUssbUNBQXVCLENBQUMsNEJBQTRCO1lB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RUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0lBQ2pELElBQUEsZ0JBQU0sRUFBQyxjQUFjLEVBQUUsOEJBQThCLENBQUMsQ0FBQztJQUN2RCxJQUFBLGdCQUFNLEVBQUMsU0FBUyxFQUFFLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsTUFBTSxFQUFFLEdBQUcsSUFBSSxxQkFBVyxFQUFFLENBQUM7SUFDN0IsTUFBTSxlQUFlLEdBQUcsc0JBQVksQ0FBQyxRQUFRLENBQUM7UUFDNUMsV0FBVyxFQUFFLElBQUksbUJBQVMsQ0FBQyxjQUFjLENBQUM7UUFDMUMsZ0JBQWdCLEVBQUUsSUFBSSxtQkFBUyxDQUFDLFdBQVcsQ0FBQztRQUM1QyxVQUFVLEVBQUUsSUFBSSxtQkFBUyxDQUFDLFNBQVMsQ0FBQztLQUNyQyxDQUFDLENBQUM7SUFDSCxFQUFFLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRXhCLE9BQU8sRUFBRSxDQUFDLFlBQVksQ0FBQztBQUN6QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY29pbnMsIFNvbENvaW4gfSBmcm9tICdAYml0Z28tYmV0YS9zdGF0aWNzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbixcbiAgY3JlYXRlQ2xvc2VBY2NvdW50SW5zdHJ1Y3Rpb24sXG4gIGNyZWF0ZVRyYW5zZmVyQ2hlY2tlZEluc3RydWN0aW9uLFxuICBUT0tFTl8yMDIyX1BST0dSQU1fSUQsXG59IGZyb20gJ0Bzb2xhbmEvc3BsLXRva2VuJztcbmltcG9ydCB7XG4gIEF1dGhvcml6ZWQsXG4gIExvY2t1cCxcbiAgUHVibGljS2V5LFxuICBTdGFrZUF1dGhvcml6YXRpb25MYXlvdXQsXG4gIFN0YWtlUHJvZ3JhbSxcbiAgU3lzdGVtUHJvZ3JhbSxcbiAgVHJhbnNhY3Rpb24sXG4gIFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24sXG4gIENvbXB1dGVCdWRnZXRQcm9ncmFtLFxufSBmcm9tICdAc29sYW5hL3dlYjMuanMnO1xuaW1wb3J0IGFzc2VydCBmcm9tICdhc3NlcnQnO1xuaW1wb3J0IEJpZ051bWJlciBmcm9tICdiaWdudW1iZXIuanMnO1xuaW1wb3J0IHsgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMsIE1FTU9fUFJPR1JBTV9QSyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7XG4gIEF0YUNsb3NlLFxuICBBdGFJbml0LFxuICBJbnN0cnVjdGlvblBhcmFtcyxcbiAgTWVtbyxcbiAgTm9uY2UsXG4gIFN0YWtpbmdBY3RpdmF0ZSxcbiAgU3Rha2luZ0F1dGhvcml6ZSxcbiAgU3Rha2luZ0RlYWN0aXZhdGUsXG4gIFN0YWtpbmdEZWxlZ2F0ZSxcbiAgU3Rha2luZ1dpdGhkcmF3LFxuICBUb2tlblRyYW5zZmVyLFxuICBUcmFuc2ZlcixcbiAgV2FsbGV0SW5pdCxcbiAgU2V0UHJpb3JpdHlGZWUsXG59IGZyb20gJy4vaWZhY2UnO1xuXG4vKipcbiAqIENvbnN0cnVjdCBTb2xhbmEgaW5zdHJ1Y3Rpb25zIGZyb20gaW5zdHJ1Y3Rpb25zIHBhcmFtc1xuICpcbiAqIEBwYXJhbSB7SW5zdHJ1Y3Rpb25QYXJhbXN9IGluc3RydWN0aW9uVG9CdWlsZCAtIHRoZSBkYXRhIGNvbnRhaW5pbmcgdGhlIGluc3RydWN0aW9uIHBhcmFtc1xuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBzdXBwb3J0ZWQgU29sYW5hIGluc3RydWN0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gc29sSW5zdHJ1Y3Rpb25GYWN0b3J5KGluc3RydWN0aW9uVG9CdWlsZDogSW5zdHJ1Y3Rpb25QYXJhbXMpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBzd2l0Y2ggKGluc3RydWN0aW9uVG9CdWlsZC50eXBlKSB7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2U6XG4gICAgICByZXR1cm4gYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkKTtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW86XG4gICAgICByZXR1cm4gbWVtb0luc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5UcmFuc2ZlcjpcbiAgICAgIHJldHVybiB0cmFuc2Zlckluc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ub2tlblRyYW5zZmVyOlxuICAgICAgcmV0dXJuIHRva2VuVHJhbnNmZXJJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlTm9uY2VBY2NvdW50OlxuICAgICAgcmV0dXJuIGNyZWF0ZU5vbmNlQWNjb3VudEluc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5TdGFraW5nQWN0aXZhdGU6XG4gICAgICByZXR1cm4gc3Rha2luZ0luaXRpYWxpemVJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0RlYWN0aXZhdGU6XG4gICAgICByZXR1cm4gc3Rha2luZ0RlYWN0aXZhdGVJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ1dpdGhkcmF3OlxuICAgICAgcmV0dXJuIHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50OlxuICAgICAgcmV0dXJuIGNyZWF0ZUFUQUluc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgY2FzZSBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5DbG9zZUFzc29jaWF0ZWRUb2tlbkFjY291bnQ6XG4gICAgICByZXR1cm4gY2xvc2VBVEFJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU3Rha2luZ0F1dGhvcml6ZTpcbiAgICAgIHJldHVybiBzdGFraW5nQXV0aG9yaXplSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkKTtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlN0YWtpbmdEZWxlZ2F0ZTpcbiAgICAgIHJldHVybiBzdGFraW5nRGVsZWdhdGVJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuU2V0UHJpb3JpdHlGZWU6XG4gICAgICByZXR1cm4gZmV0Y2hQcmlvcml0eUZlZUluc3RydWN0aW9uKGluc3RydWN0aW9uVG9CdWlsZCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBpbnN0cnVjdGlvbiB0eXBlIG9yIG5vdCBzdXBwb3J0ZWRgKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdCBBZHZhbmNlIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge05vbmNlfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIEFkdmFuY2UgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGFkdmFuY2VOb25jZUluc3RydWN0aW9uKGRhdGE6IE5vbmNlKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBhdXRoV2FsbGV0QWRkcmVzcywgd2FsbGV0Tm9uY2VBZGRyZXNzIH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQoYXV0aFdhbGxldEFkZHJlc3MsICdNaXNzaW5nIGF1dGhXYWxsZXRBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydCh3YWxsZXROb25jZUFkZHJlc3MsICdNaXNzaW5nIHdhbGxldE5vbmNlQWRkcmVzcyBwYXJhbScpO1xuICBjb25zdCBub25jZUluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS5ub25jZUFkdmFuY2Uoe1xuICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KHdhbGxldE5vbmNlQWRkcmVzcyksXG4gICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoV2FsbGV0QWRkcmVzcyksXG4gIH0pO1xuICByZXR1cm4gW25vbmNlSW5zdHJ1Y3Rpb25dO1xufVxuXG5mdW5jdGlvbiBmZXRjaFByaW9yaXR5RmVlSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkOiBTZXRQcmlvcml0eUZlZSk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IGFkZFByaW9yaXR5RmVlID0gQ29tcHV0ZUJ1ZGdldFByb2dyYW0uc2V0Q29tcHV0ZVVuaXRQcmljZSh7XG4gICAgbWljcm9MYW1wb3J0czogaW5zdHJ1Y3Rpb25Ub0J1aWxkLnBhcmFtcy5mZWUsXG4gIH0pO1xuXG4gIHJldHVybiBbYWRkUHJpb3JpdHlGZWVdO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBNZW1vIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge01lbW99IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgTWVtbyBTb2xhbmEgaW5zdHJ1Y3Rpb25cbiAqL1xuZnVuY3Rpb24gbWVtb0luc3RydWN0aW9uKGRhdGE6IE1lbW8pOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IG1lbW8gfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChtZW1vLCAnTWlzc2luZyBtZW1vIHBhcmFtJyk7XG4gIGNvbnN0IG1lbW9JbnN0cnVjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbkluc3RydWN0aW9uKHtcbiAgICBrZXlzOiBbXSxcbiAgICBwcm9ncmFtSWQ6IG5ldyBQdWJsaWNLZXkoTUVNT19QUk9HUkFNX1BLKSxcbiAgICBkYXRhOiBCdWZmZXIuZnJvbShtZW1vKSxcbiAgfSk7XG4gIHJldHVybiBbbWVtb0luc3RydWN0aW9uXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgVHJhbnNmZXIgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7VHJhbnNmZXJ9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgVHJhbnNmZXIgU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIHRyYW5zZmVySW5zdHJ1Y3Rpb24oZGF0YTogVHJhbnNmZXIpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCB0b0FkZHJlc3MsIGFtb3VudCB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KGZyb21BZGRyZXNzLCAnTWlzc2luZyBmcm9tQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQodG9BZGRyZXNzLCAnTWlzc2luZyB0b0FkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgdG9BZGRyZXNzIHBhcmFtJyk7XG4gIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBTeXN0ZW1Qcm9ncmFtLnRyYW5zZmVyKHtcbiAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICB0b1B1YmtleTogbmV3IFB1YmxpY0tleSh0b0FkZHJlc3MpLFxuICAgIGxhbXBvcnRzOiBwYXJzZUludChhbW91bnQsIDEwKSxcbiAgfSk7XG4gIHJldHVybiBbdHJhbnNmZXJJbnN0cnVjdGlvbl07XG59XG5cbi8qKlxuICogQ29uc3RydWN0IFRyYW5zZmVyIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1RyYW5zZmVyfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIFRyYW5zZmVyIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiB0b2tlblRyYW5zZmVySW5zdHJ1Y3Rpb24oZGF0YTogVG9rZW5UcmFuc2Zlcik6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgZnJvbUFkZHJlc3MsIHRvQWRkcmVzcywgYW1vdW50LCB0b2tlbk5hbWUsIHNvdXJjZUFkZHJlc3MgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgKG93bmVyKSBwYXJhbScpO1xuICBhc3NlcnQodG9BZGRyZXNzLCAnTWlzc2luZyB0b0FkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgYW1vdW50IHBhcmFtJyk7XG4gIGFzc2VydCh0b2tlbk5hbWUsICdNaXNzaW5nIHRva2VuIG5hbWUnKTtcbiAgYXNzZXJ0KHNvdXJjZUFkZHJlc3MsICdNaXNzaW5nIGF0YSBhZGRyZXNzJyk7XG4gIGNvbnN0IHRva2VuID0gY29pbnMuZ2V0KGRhdGEucGFyYW1zLnRva2VuTmFtZSk7XG4gIGFzc2VydCh0b2tlbiBpbnN0YW5jZW9mIFNvbENvaW4pO1xuICBsZXQgdHJhbnNmZXJJbnN0cnVjdGlvbjogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbjtcbiAgaWYgKHRva2VuLnByb2dyYW1JZCA9PT0gVE9LRU5fMjAyMl9QUk9HUkFNX0lELnRvU3RyaW5nKCkpIHtcbiAgICB0cmFuc2Zlckluc3RydWN0aW9uID0gY3JlYXRlVHJhbnNmZXJDaGVja2VkSW5zdHJ1Y3Rpb24oXG4gICAgICBuZXcgUHVibGljS2V5KHNvdXJjZUFkZHJlc3MpLFxuICAgICAgbmV3IFB1YmxpY0tleSh0b2tlbi50b2tlbkFkZHJlc3MpLFxuICAgICAgbmV3IFB1YmxpY0tleSh0b0FkZHJlc3MpLFxuICAgICAgbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgICBCaWdJbnQoYW1vdW50KSxcbiAgICAgIHRva2VuLmRlY2ltYWxQbGFjZXMsXG4gICAgICBbXSxcbiAgICAgIFRPS0VOXzIwMjJfUFJPR1JBTV9JRFxuICAgICk7XG4gIH0gZWxzZSB7XG4gICAgdHJhbnNmZXJJbnN0cnVjdGlvbiA9IGNyZWF0ZVRyYW5zZmVyQ2hlY2tlZEluc3RydWN0aW9uKFxuICAgICAgbmV3IFB1YmxpY0tleShzb3VyY2VBZGRyZXNzKSxcbiAgICAgIG5ldyBQdWJsaWNLZXkodG9rZW4udG9rZW5BZGRyZXNzKSxcbiAgICAgIG5ldyBQdWJsaWNLZXkodG9BZGRyZXNzKSxcbiAgICAgIG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgICAgQmlnSW50KGFtb3VudCksXG4gICAgICB0b2tlbi5kZWNpbWFsUGxhY2VzXG4gICAgKTtcbiAgfVxuICByZXR1cm4gW3RyYW5zZmVySW5zdHJ1Y3Rpb25dO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBDcmVhdGUgYW5kIEluaXRpYWxpemUgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7V2FsbGV0SW5pdH0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBDcmVhdGUgYW5kIEluaXRpYWxpemUgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU5vbmNlQWNjb3VudEluc3RydWN0aW9uKGRhdGE6IFdhbGxldEluaXQpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCBub25jZUFkZHJlc3MsIGF1dGhBZGRyZXNzLCBhbW91bnQgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KG5vbmNlQWRkcmVzcywgJ01pc3Npbmcgbm9uY2VBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChhdXRoQWRkcmVzcywgJ01pc3NpbmcgYXV0aEFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgYW1vdW50IHBhcmFtJyk7XG4gIGNvbnN0IG5vbmNlQWNjb3VudEluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS5jcmVhdGVOb25jZUFjY291bnQoe1xuICAgIGZyb21QdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KG5vbmNlQWRkcmVzcyksXG4gICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWRkcmVzcyksXG4gICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICB9KTtcbiAgcmV0dXJuIG5vbmNlQWNjb3VudEluc3RydWN0aW9uLmluc3RydWN0aW9ucztcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgQ3JlYXRlIFN0YWtpbmcgQWNjb3VudCBhbmQgRGVsZWdhdGUgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7U3Rha2luZ0FjdGl2YXRlfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIENyZWF0ZSBTdGFraW5nIEFjY291bnQgYW5kIERlbGVnYXRlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqL1xuZnVuY3Rpb24gc3Rha2luZ0luaXRpYWxpemVJbnN0cnVjdGlvbihkYXRhOiBTdGFraW5nQWN0aXZhdGUpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCBzdGFraW5nQWRkcmVzcywgYW1vdW50LCB2YWxpZGF0b3IsIGlzTWFyaW5hZGUgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KHN0YWtpbmdBZGRyZXNzLCAnTWlzc2luZyBzdGFraW5nQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoYW1vdW50LCAnTWlzc2luZyBhbW91bnQgcGFyYW0nKTtcbiAgYXNzZXJ0KHZhbGlkYXRvciwgJ01pc3NpbmcgdmFsaWRhdG9yIHBhcmFtJyk7XG4gIGFzc2VydChpc01hcmluYWRlICE9PSB1bmRlZmluZWQsICdNaXNzaW5nIGlzTWFyaW5hZGUgcGFyYW0nKTtcblxuICBjb25zdCBmcm9tUHVia2V5ID0gbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyk7XG4gIGNvbnN0IHN0YWtlUHVia2V5ID0gbmV3IFB1YmxpY0tleShzdGFraW5nQWRkcmVzcyk7XG4gIGNvbnN0IHZhbGlkYXRvclB1YmtleSA9IG5ldyBQdWJsaWNLZXkodmFsaWRhdG9yKTtcbiAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oKTtcblxuICBjb25zdCBzdGFrZXJQdWJrZXkgPSBpc01hcmluYWRlID8gdmFsaWRhdG9yUHVia2V5IDogZnJvbVB1YmtleTtcbiAgY29uc3Qgd2FsbGV0SW5pdFN0YWtpbmcgPSBTdGFrZVByb2dyYW0uY3JlYXRlQWNjb3VudCh7XG4gICAgZnJvbVB1YmtleSxcbiAgICBzdGFrZVB1YmtleSxcbiAgICBhdXRob3JpemVkOiBuZXcgQXV0aG9yaXplZChzdGFrZXJQdWJrZXksIGZyb21QdWJrZXkpLCAvLyBzdGFrZXIgYW5kIHdpdGhkcmF3ZXJcbiAgICBsb2NrdXA6IG5ldyBMb2NrdXAoMCwgMCwgZnJvbVB1YmtleSksIC8vIE5vIG1pbmltdW0gZXBvY2ggdG8gd2l0aGRyYXdcbiAgICBsYW1wb3J0czogbmV3IEJpZ051bWJlcihhbW91bnQpLnRvTnVtYmVyKCksXG4gIH0pO1xuICB0eC5hZGQod2FsbGV0SW5pdFN0YWtpbmcpO1xuXG4gIGlmICghaXNNYXJpbmFkZSkge1xuICAgIGNvbnN0IGRlbGVnYXRlU3Rha2luZyA9IFN0YWtlUHJvZ3JhbS5kZWxlZ2F0ZSh7XG4gICAgICBzdGFrZVB1YmtleTogbmV3IFB1YmxpY0tleShzdGFraW5nQWRkcmVzcyksXG4gICAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICAgIHZvdGVQdWJrZXk6IG5ldyBQdWJsaWNLZXkodmFsaWRhdG9yKSxcbiAgICB9KTtcbiAgICB0eC5hZGQoZGVsZWdhdGVTdGFraW5nKTtcbiAgfVxuXG4gIHJldHVybiB0eC5pbnN0cnVjdGlvbnM7XG59XG5cbi8qKlxuICogQ29uc3RydWN0IHN0YWtpbmcgZGVhY3RpdmF0ZSBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKlxuICogQHBhcmFtIHtTdGFraW5nRGVhY3RpdmF0ZX0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBzdGFraW5nIGRlYWN0aXZhdGUgaW5zdHJ1Y3Rpb25cbiAqL1xuZnVuY3Rpb24gc3Rha2luZ0RlYWN0aXZhdGVJbnN0cnVjdGlvbihkYXRhOiBTdGFraW5nRGVhY3RpdmF0ZSk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgZnJvbUFkZHJlc3MsIHN0YWtpbmdBZGRyZXNzLCBpc01hcmluYWRlLCByZWNpcGllbnRzIH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQoZnJvbUFkZHJlc3MsICdNaXNzaW5nIGZyb21BZGRyZXNzIHBhcmFtJyk7XG4gIGlmICghaXNNYXJpbmFkZSkge1xuICAgIGFzc2VydChzdGFraW5nQWRkcmVzcywgJ01pc3Npbmcgc3Rha2luZ0FkZHJlc3MgcGFyYW0nKTtcbiAgfVxuXG4gIGlmIChpc01hcmluYWRlKSB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oKTtcbiAgICBhc3NlcnQocmVjaXBpZW50cywgJ01pc3NpbmcgcmVjaXBpZW50cyBwYXJhbScpO1xuICAgIGNvbnN0IHRvUHVia2V5QWRkcmVzcyA9IG5ldyBQdWJsaWNLZXkocmVjaXBpZW50c1swXS5hZGRyZXNzIHx8ICcnKTtcbiAgICBjb25zdCB0cmFuc2Zlckluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS50cmFuc2Zlcih7XG4gICAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICAgIHRvUHVia2V5OiB0b1B1YmtleUFkZHJlc3MsXG4gICAgICBsYW1wb3J0czogcGFyc2VJbnQocmVjaXBpZW50c1swXS5hbW91bnQsIDEwKSxcbiAgICB9KTtcblxuICAgIHR4LmFkZCh0cmFuc2Zlckluc3RydWN0aW9uKTtcbiAgICByZXR1cm4gdHguaW5zdHJ1Y3Rpb25zO1xuICB9XG5cbiAgaWYgKGRhdGEucGFyYW1zLmFtb3VudCAmJiBkYXRhLnBhcmFtcy51bnN0YWtpbmdBZGRyZXNzKSB7XG4gICAgY29uc3QgdHggPSBuZXcgVHJhbnNhY3Rpb24oKTtcbiAgICBjb25zdCB1bnN0YWtpbmdBZGRyZXNzID0gbmV3IFB1YmxpY0tleShkYXRhLnBhcmFtcy51bnN0YWtpbmdBZGRyZXNzKTtcblxuICAgIGNvbnN0IGFsbG9jYXRlQWNjb3VudCA9IFN5c3RlbVByb2dyYW0uYWxsb2NhdGUoe1xuICAgICAgYWNjb3VudFB1YmtleTogdW5zdGFraW5nQWRkcmVzcyxcbiAgICAgIHNwYWNlOiBTdGFrZVByb2dyYW0uc3BhY2UsXG4gICAgfSk7XG4gICAgdHguYWRkKGFsbG9jYXRlQWNjb3VudCk7XG5cbiAgICBjb25zdCBhc3NpZ25BY2NvdW50ID0gU3lzdGVtUHJvZ3JhbS5hc3NpZ24oe1xuICAgICAgYWNjb3VudFB1YmtleTogdW5zdGFraW5nQWRkcmVzcyxcbiAgICAgIHByb2dyYW1JZDogU3Rha2VQcm9ncmFtLnByb2dyYW1JZCxcbiAgICB9KTtcbiAgICB0eC5hZGQoYXNzaWduQWNjb3VudCk7XG5cbiAgICBjb25zdCBzcGxpdFN0YWtlID0gU3Rha2VQcm9ncmFtLnNwbGl0KFxuICAgICAge1xuICAgICAgICBzdGFrZVB1YmtleTogbmV3IFB1YmxpY0tleShzdGFraW5nQWRkcmVzcyksXG4gICAgICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgICAgICBzcGxpdFN0YWtlUHVia2V5OiB1bnN0YWtpbmdBZGRyZXNzLFxuICAgICAgICBsYW1wb3J0czogbmV3IEJpZ051bWJlcihkYXRhLnBhcmFtcy5hbW91bnQpLnRvTnVtYmVyKCksXG4gICAgICB9LFxuICAgICAgMFxuICAgICk7XG4gICAgdHguYWRkKHNwbGl0U3Rha2UuaW5zdHJ1Y3Rpb25zWzFdKTtcblxuICAgIGNvbnN0IGRlYWN0aXZhdGVTdGFraW5nID0gU3Rha2VQcm9ncmFtLmRlYWN0aXZhdGUoe1xuICAgICAgc3Rha2VQdWJrZXk6IHVuc3Rha2luZ0FkZHJlc3MsXG4gICAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICB9KTtcbiAgICB0eC5hZGQoZGVhY3RpdmF0ZVN0YWtpbmcpO1xuXG4gICAgcmV0dXJuIHR4Lmluc3RydWN0aW9ucztcbiAgfSBlbHNlIHtcbiAgICBjb25zdCBkZWFjdGl2YXRlU3Rha2luZyA9IFN0YWtlUHJvZ3JhbS5kZWFjdGl2YXRlKHtcbiAgICAgIHN0YWtlUHVia2V5OiBuZXcgUHVibGljS2V5KHN0YWtpbmdBZGRyZXNzKSxcbiAgICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRlYWN0aXZhdGVTdGFraW5nLmluc3RydWN0aW9ucztcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdCBTdGFraW5nIFdpdGhkcmF3IFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1N0YWtpbmdXaXRoZHJhd30gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBTdGFraW5nIFdpdGhkcmF3ICBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKi9cbmZ1bmN0aW9uIHN0YWtpbmdXaXRoZHJhd0luc3RydWN0aW9uKGRhdGE6IFN0YWtpbmdXaXRoZHJhdyk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgZnJvbUFkZHJlc3MsIHN0YWtpbmdBZGRyZXNzLCBhbW91bnQgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KHN0YWtpbmdBZGRyZXNzLCAnTWlzc2luZyBzdGFraW5nQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoYW1vdW50LCAnTWlzc2luZyBhbW91bnQgcGFyYW0nKTtcblxuICBjb25zdCB3aXRoZHJhd1N0YWtpbmcgPSBTdGFrZVByb2dyYW0ud2l0aGRyYXcoe1xuICAgIHN0YWtlUHVia2V5OiBuZXcgUHVibGljS2V5KHN0YWtpbmdBZGRyZXNzKSxcbiAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGZyb21BZGRyZXNzKSxcbiAgICB0b1B1YmtleTogbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICB9KTtcblxuICByZXR1cm4gd2l0aGRyYXdTdGFraW5nLmluc3RydWN0aW9ucztcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgQ3JlYXRlIGFuZCBJbml0aWFsaXplIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1dhbGxldEluaXR9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgQ3JlYXRlIGFuZCBJbml0aWFsaXplIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiBjcmVhdGVBVEFJbnN0cnVjdGlvbihkYXRhOiBBdGFJbml0KTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBtaW50QWRkcmVzcywgYXRhQWRkcmVzcywgb3duZXJBZGRyZXNzLCBwYXllckFkZHJlc3MsIHByb2dyYW1JZCB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KG1pbnRBZGRyZXNzLCAnTWlzc2luZyBtaW50QWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoYXRhQWRkcmVzcywgJ01pc3NpbmcgYXRhQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQob3duZXJBZGRyZXNzLCAnTWlzc2luZyBvd25lckFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KHBheWVyQWRkcmVzcywgJ01pc3NpbmcgcGF5ZXJBZGRyZXNzIHBhcmFtJyk7XG5cbiAgbGV0IGFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbjogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbjtcbiAgaWYgKHByb2dyYW1JZCAmJiBwcm9ncmFtSWQgPT09IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b1N0cmluZygpKSB7XG4gICAgYXNzb2NpYXRlZFRva2VuQWNjb3VudEluc3RydWN0aW9uID0gY3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudEluc3RydWN0aW9uKFxuICAgICAgbmV3IFB1YmxpY0tleShwYXllckFkZHJlc3MpLFxuICAgICAgbmV3IFB1YmxpY0tleShhdGFBZGRyZXNzKSxcbiAgICAgIG5ldyBQdWJsaWNLZXkob3duZXJBZGRyZXNzKSxcbiAgICAgIG5ldyBQdWJsaWNLZXkobWludEFkZHJlc3MpLFxuICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lEXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICBhc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5zdHJ1Y3Rpb24gPSBjcmVhdGVBc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5zdHJ1Y3Rpb24oXG4gICAgICBuZXcgUHVibGljS2V5KHBheWVyQWRkcmVzcyksXG4gICAgICBuZXcgUHVibGljS2V5KGF0YUFkZHJlc3MpLFxuICAgICAgbmV3IFB1YmxpY0tleShvd25lckFkZHJlc3MpLFxuICAgICAgbmV3IFB1YmxpY0tleShtaW50QWRkcmVzcylcbiAgICApO1xuICB9XG4gIHJldHVybiBbYXNzb2NpYXRlZFRva2VuQWNjb3VudEluc3RydWN0aW9uXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgQ2xvc2UgQVRBIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1dhbGxldEluaXR9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgQ2xvc2UgQVRBIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiBjbG9zZUFUQUluc3RydWN0aW9uKGRhdGE6IEF0YUNsb3NlKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBhY2NvdW50QWRkcmVzcywgZGVzdGluYXRpb25BZGRyZXNzLCBhdXRob3JpdHlBZGRyZXNzIH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQoYWNjb3VudEFkZHJlc3MsICdNaXNzaW5nIGFjY291bnRBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChkZXN0aW5hdGlvbkFkZHJlc3MsICdNaXNzaW5nIGRlc3RpbmF0aW9uQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQoYXV0aG9yaXR5QWRkcmVzcywgJ01pc3NpbmcgYXV0aG9yaXR5QWRkcmVzcyBwYXJhbScpO1xuXG4gIGNvbnN0IGNsb3NlQXNzb2NpYXRlZFRva2VuQWNjb3VudEluc3RydWN0aW9uID0gY3JlYXRlQ2xvc2VBY2NvdW50SW5zdHJ1Y3Rpb24oXG4gICAgbmV3IFB1YmxpY0tleShhY2NvdW50QWRkcmVzcyksXG4gICAgbmV3IFB1YmxpY0tleShkZXN0aW5hdGlvbkFkZHJlc3MpLFxuICAgIG5ldyBQdWJsaWNLZXkoYXV0aG9yaXR5QWRkcmVzcylcbiAgKTtcbiAgcmV0dXJuIFtjbG9zZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbl07XG59XG5cbi8qKlxuICogQ29uc3RydWN0IFN0YWtpbmcgQWNjb3VudCBBdXRob3JpemUgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7U3Rha2luZ0F1dGhvcml6ZX0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBTdGFraW5nIEFjY291bnQgQXV0aG9yaXplIGluc3RydWN0aW9uc1xuICovXG5mdW5jdGlvbiBzdGFraW5nQXV0aG9yaXplSW5zdHJ1Y3Rpb24oZGF0YTogU3Rha2luZ0F1dGhvcml6ZSk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgc3Rha2luZ0FkZHJlc3MsIG9sZEF1dGhvcml6ZUFkZHJlc3MsIG5ld0F1dGhvcml6ZUFkZHJlc3MsIG5ld1dpdGhkcmF3QWRkcmVzcyB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KHN0YWtpbmdBZGRyZXNzLCAnTWlzc2luZyBzdGFraW5nQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQob2xkQXV0aG9yaXplQWRkcmVzcywgJ01pc3Npbmcgb2xkQXV0aG9yaXplQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQobmV3QXV0aG9yaXplQWRkcmVzcywgJ01pc3NpbmcgbmV3QXV0aG9yaXplQWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQobmV3V2l0aGRyYXdBZGRyZXNzLCAnTWlzc2luZyBuZXdXaXRoZHJhd0FkZHJlc3MgcGFyYW0nKTtcblxuICBjb25zdCB0eCA9IG5ldyBUcmFuc2FjdGlvbigpO1xuXG4gIGNvbnN0IGF1dGhvcml6ZVN0YWtpbmcgPSBTdGFrZVByb2dyYW0uYXV0aG9yaXplKHtcbiAgICBzdGFrZVB1YmtleTogbmV3IFB1YmxpY0tleShzdGFraW5nQWRkcmVzcyksXG4gICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShvbGRBdXRob3JpemVBZGRyZXNzKSxcbiAgICBuZXdBdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KG5ld0F1dGhvcml6ZUFkZHJlc3MpLFxuICAgIHN0YWtlQXV0aG9yaXphdGlvblR5cGU6IFN0YWtlQXV0aG9yaXphdGlvbkxheW91dC5TdGFrZXIsXG4gIH0pO1xuXG4gIGNvbnN0IGF1dGhvcml6ZVdpdGhkcmF3ID0gU3Rha2VQcm9ncmFtLmF1dGhvcml6ZSh7XG4gICAgc3Rha2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkoc3Rha2luZ0FkZHJlc3MpLFxuICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkob2xkQXV0aG9yaXplQWRkcmVzcyksXG4gICAgbmV3QXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShuZXdBdXRob3JpemVBZGRyZXNzKSxcbiAgICBzdGFrZUF1dGhvcml6YXRpb25UeXBlOiBTdGFrZUF1dGhvcml6YXRpb25MYXlvdXQuV2l0aGRyYXdlcixcbiAgICBjdXN0b2RpYW5QdWJrZXk6IG5ldyBQdWJsaWNLZXkobmV3V2l0aGRyYXdBZGRyZXNzKSxcbiAgfSk7XG4gIHR4LmFkZChhdXRob3JpemVTdGFraW5nKTtcbiAgdHguYWRkKGF1dGhvcml6ZVdpdGhkcmF3KTtcblxuICByZXR1cm4gdHguaW5zdHJ1Y3Rpb25zO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBEZWxlZ2F0ZSBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKlxuICogQHBhcmFtIHtTdGFraW5nQWN0aXZhdGV9IGRhdGEgLSB0aGUgZGF0YSB0byBidWlsZCB0aGUgaW5zdHJ1Y3Rpb25cbiAqIEByZXR1cm5zIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IEFuIGFycmF5IGNvbnRhaW5pbmcgRGVsZWdhdGUgU29sYW5hIGluc3RydWN0aW9uc1xuICovXG5mdW5jdGlvbiBzdGFraW5nRGVsZWdhdGVJbnN0cnVjdGlvbihkYXRhOiBTdGFraW5nRGVsZWdhdGUpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCBzdGFraW5nQWRkcmVzcywgdmFsaWRhdG9yIH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQoZnJvbUFkZHJlc3MsICdNaXNzaW5nIGZyb21BZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChzdGFraW5nQWRkcmVzcywgJ01pc3Npbmcgc3Rha2luZ0FkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KHZhbGlkYXRvciwgJ01pc3NpbmcgdmFsaWRhdG9yIHBhcmFtJyk7XG4gIGNvbnN0IHR4ID0gbmV3IFRyYW5zYWN0aW9uKCk7XG4gIGNvbnN0IGRlbGVnYXRlU3Rha2luZyA9IFN0YWtlUHJvZ3JhbS5kZWxlZ2F0ZSh7XG4gICAgc3Rha2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkoc3Rha2luZ0FkZHJlc3MpLFxuICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIHZvdGVQdWJrZXk6IG5ldyBQdWJsaWNLZXkodmFsaWRhdG9yKSxcbiAgfSk7XG4gIHR4LmFkZChkZWxlZ2F0ZVN0YWtpbmcpO1xuXG4gIHJldHVybiB0eC5pbnN0cnVjdGlvbnM7XG59XG4iXX0=
@@ -6,6 +6,7 @@ export declare class StakingActivateBuilder extends TransactionBuilder {
6
6
  protected _amount: string;
7
7
  protected _stakingAddress: string;
8
8
  protected _validator: string;
9
+ protected _isMarinade: boolean;
9
10
  constructor(_coinConfig: Readonly<CoinConfig>);
10
11
  protected get transactionType(): TransactionType;
11
12
  /** @inheritdoc */
@@ -22,7 +23,7 @@ export declare class StakingActivateBuilder extends TransactionBuilder {
22
23
  * The address of the staking account.
23
24
  *
24
25
  * @param {string} stakingAddress public address of the staking account.
25
- * @returns {StakeBuilder} This staking builder.
26
+ * @returns {StakingActivateBuilder} This staking builder.
26
27
  *
27
28
  * @see https://docs.solana.com/staking/stake-accounts#account-address
28
29
  */
@@ -31,10 +32,16 @@ export declare class StakingActivateBuilder extends TransactionBuilder {
31
32
  * Set validator address to delegate funds to.
32
33
  *
33
34
  * @param {string} validator Validator address to delegate funds to.
34
- * @returns {StakeBuilder} This staking builder.
35
+ * @returns {StakingActivateBuilder} This staking builder.
35
36
  *
36
37
  */
37
38
  validator(validator: string): this;
39
+ /**
40
+ * Set isMarinade flag
41
+ * @param {boolean} flag - true if the transaction is for Marinade, false by default if not set
42
+ * @returns {StakingActivateBuilder} This staking builder
43
+ */
44
+ isMarinade(flag: boolean): this;
38
45
  /** @inheritdoc */
39
46
  protected buildImplementation(): Promise<Transaction>;
40
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stakingActivateBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/stakingActivateBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEjB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAalC;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;;;OAOG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAM5C;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMlC,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAuB5D"}
1
+ {"version":3,"file":"stakingActivateBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/stakingActivateBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAO1D,qBAAa,sBAAuB,SAAQ,kBAAkB;IAC5D,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC;IAC7B,SAAS,CAAC,WAAW,UAAS;gBAElB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,kBAAkB;IAClB,WAAW,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAclC;;;;;;OAMG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAQ5B;;;;;;;OAOG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAM5C;;;;;;OAMG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAMlC;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAK/B,kBAAkB;cACF,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;CAyB5D"}