@bitgo/account-lib 2.17.2-rc.1 → 2.17.2-rc.5

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 (96) hide show
  1. package/dist/browser/bitgo-account-lib.min.js +1 -1
  2. package/dist/browser/bitgo-account-lib.min.js.LICENSE.txt +4 -0
  3. package/dist/package.json +7 -3
  4. package/dist/src/coin/algo/utils.d.ts +39 -22
  5. package/dist/src/coin/algo/utils.d.ts.map +1 -1
  6. package/dist/src/coin/algo/utils.js +88 -73
  7. package/dist/src/coin/baseCoin/baseTransaction.d.ts +6 -0
  8. package/dist/src/coin/baseCoin/baseTransaction.d.ts.map +1 -1
  9. package/dist/src/coin/baseCoin/baseTransaction.js +8 -1
  10. package/dist/src/coin/baseCoin/baseTransactionBuilder.d.ts.map +1 -1
  11. package/dist/src/coin/baseCoin/baseTransactionBuilder.js +1 -1
  12. package/dist/src/coin/baseCoin/iface.d.ts +37 -0
  13. package/dist/src/coin/baseCoin/iface.d.ts.map +1 -1
  14. package/dist/src/coin/baseCoin/iface.js +1 -1
  15. package/dist/src/coin/cspr/utils.js +2 -2
  16. package/dist/src/coin/dot/errors.d.ts +3 -0
  17. package/dist/src/coin/dot/errors.d.ts.map +1 -1
  18. package/dist/src/coin/dot/errors.js +12 -2
  19. package/dist/src/coin/dot/iface.d.ts +13 -13
  20. package/dist/src/coin/dot/iface.d.ts.map +1 -1
  21. package/dist/src/coin/dot/iface.js +1 -1
  22. package/dist/src/coin/dot/index.d.ts +6 -0
  23. package/dist/src/coin/dot/index.d.ts.map +1 -1
  24. package/dist/src/coin/dot/index.js +14 -2
  25. package/dist/src/coin/dot/keyPair.d.ts +15 -2
  26. package/dist/src/coin/dot/keyPair.d.ts.map +1 -1
  27. package/dist/src/coin/dot/keyPair.js +41 -6
  28. package/dist/src/coin/dot/stakingBuilder.d.ts +2 -2
  29. package/dist/src/coin/dot/stakingBuilder.d.ts.map +1 -1
  30. package/dist/src/coin/dot/stakingBuilder.js +2 -7
  31. package/dist/src/coin/dot/transaction.d.ts +37 -3
  32. package/dist/src/coin/dot/transaction.d.ts.map +1 -1
  33. package/dist/src/coin/dot/transaction.js +345 -7
  34. package/dist/src/coin/dot/transactionBuilder.d.ts +106 -10
  35. package/dist/src/coin/dot/transactionBuilder.d.ts.map +1 -1
  36. package/dist/src/coin/dot/transactionBuilder.js +311 -15
  37. package/dist/src/coin/dot/transactionBuilderFactory.d.ts +12 -16
  38. package/dist/src/coin/dot/transactionBuilderFactory.d.ts.map +1 -1
  39. package/dist/src/coin/dot/transactionBuilderFactory.js +60 -25
  40. package/dist/src/coin/dot/transferBuilder.d.ts +62 -4
  41. package/dist/src/coin/dot/transferBuilder.d.ts.map +1 -1
  42. package/dist/src/coin/dot/transferBuilder.js +158 -44
  43. package/dist/src/coin/dot/txnSchema.d.ts.map +1 -1
  44. package/dist/src/coin/dot/txnSchema.js +1 -2
  45. package/dist/src/coin/dot/unstakeBuilder.d.ts +4 -4
  46. package/dist/src/coin/dot/unstakeBuilder.d.ts.map +1 -1
  47. package/dist/src/coin/dot/unstakeBuilder.js +4 -9
  48. package/dist/src/coin/dot/utils.d.ts +69 -0
  49. package/dist/src/coin/dot/utils.d.ts.map +1 -1
  50. package/dist/src/coin/dot/utils.js +144 -4
  51. package/dist/src/coin/dot/walletInitializationBuilder.d.ts +51 -5
  52. package/dist/src/coin/dot/walletInitializationBuilder.d.ts.map +1 -1
  53. package/dist/src/coin/dot/walletInitializationBuilder.js +108 -45
  54. package/dist/src/coin/sol/constants.d.ts +24 -0
  55. package/dist/src/coin/sol/constants.d.ts.map +1 -0
  56. package/dist/src/coin/sol/constants.js +35 -0
  57. package/dist/src/coin/sol/iface.d.ts +55 -0
  58. package/dist/src/coin/sol/iface.d.ts.map +1 -1
  59. package/dist/src/coin/sol/iface.js +3 -1
  60. package/dist/src/coin/sol/instructionParamsFactory.d.ts +12 -0
  61. package/dist/src/coin/sol/instructionParamsFactory.d.ts.map +1 -0
  62. package/dist/src/coin/sol/instructionParamsFactory.js +99 -0
  63. package/dist/src/coin/sol/keyPair.d.ts +32 -6
  64. package/dist/src/coin/sol/keyPair.d.ts.map +1 -1
  65. package/dist/src/coin/sol/keyPair.js +107 -29
  66. package/dist/src/coin/sol/solInstructionFactory.d.ts +10 -0
  67. package/dist/src/coin/sol/solInstructionFactory.d.ts.map +1 -0
  68. package/dist/src/coin/sol/solInstructionFactory.js +102 -0
  69. package/dist/src/coin/sol/transaction.d.ts +36 -17
  70. package/dist/src/coin/sol/transaction.d.ts.map +1 -1
  71. package/dist/src/coin/sol/transaction.js +311 -20
  72. package/dist/src/coin/sol/transactionBuilder.d.ts +64 -4
  73. package/dist/src/coin/sol/transactionBuilder.d.ts.map +1 -1
  74. package/dist/src/coin/sol/transactionBuilder.js +212 -10
  75. package/dist/src/coin/sol/transactionBuilderFactory.d.ts +13 -3
  76. package/dist/src/coin/sol/transactionBuilderFactory.d.ts.map +1 -1
  77. package/dist/src/coin/sol/transactionBuilderFactory.js +36 -6
  78. package/dist/src/coin/sol/transferBuilder.d.ts +15 -8
  79. package/dist/src/coin/sol/transferBuilder.d.ts.map +1 -1
  80. package/dist/src/coin/sol/transferBuilder.js +62 -15
  81. package/dist/src/coin/sol/utils.d.ts +84 -2
  82. package/dist/src/coin/sol/utils.d.ts.map +1 -1
  83. package/dist/src/coin/sol/utils.js +162 -6
  84. package/dist/src/coin/sol/walletInitializationBuilder.d.ts +15 -8
  85. package/dist/src/coin/sol/walletInitializationBuilder.d.ts.map +1 -1
  86. package/dist/src/coin/sol/walletInitializationBuilder.js +61 -13
  87. package/dist/src/index.d.ts +2 -0
  88. package/dist/src/index.d.ts.map +1 -1
  89. package/dist/src/index.js +6 -2
  90. package/dist/src/utils/crypto.d.ts +8 -0
  91. package/dist/src/utils/crypto.d.ts.map +1 -1
  92. package/dist/src/utils/crypto.js +13 -2
  93. package/package.json +7 -3
  94. package/resources/dot/index.ts +2 -0
  95. package/resources/dot/mainnet.ts +2 -0
  96. package/resources/dot/westend.ts +2 -0
@@ -0,0 +1,12 @@
1
+ import { TransactionInstruction } from '@solana/web3.js';
2
+ import { TransactionType } from '../baseCoin';
3
+ import { InstructionParams } from './iface';
4
+ /**
5
+ * Construct instructions params from Solana instructions
6
+ *
7
+ * @param {TransactionType} type - the transaction type
8
+ * @param {TransactionInstruction[]} instructions - solana instructions
9
+ * @returns {InstructionParams[]} An array containing instruction params
10
+ */
11
+ export declare function instructionParamsFactory(type: TransactionType, instructions: TransactionInstruction[]): InstructionParams[];
12
+ //# sourceMappingURL=instructionParamsFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructionParamsFactory.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/instructionParamsFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EAAE,iBAAiB,EAAqC,MAAM,SAAS,CAAC;AAG/E;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,eAAe,EACrB,YAAY,EAAE,sBAAsB,EAAE,GACrC,iBAAiB,EAAE,CASrB"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.instructionParamsFactory = void 0;
4
+ var web3_js_1 = require("@solana/web3.js");
5
+ var baseCoin_1 = require("../baseCoin");
6
+ var errors_1 = require("../baseCoin/errors");
7
+ var constants_1 = require("./constants");
8
+ var utils_1 = require("./utils");
9
+ /**
10
+ * Construct instructions params from Solana instructions
11
+ *
12
+ * @param {TransactionType} type - the transaction type
13
+ * @param {TransactionInstruction[]} instructions - solana instructions
14
+ * @returns {InstructionParams[]} An array containing instruction params
15
+ */
16
+ function instructionParamsFactory(type, instructions) {
17
+ switch (type) {
18
+ case baseCoin_1.TransactionType.WalletInitialization:
19
+ return parseWalletInitInstructions(instructions);
20
+ case baseCoin_1.TransactionType.Send:
21
+ return parseSendInstructions(instructions);
22
+ default:
23
+ throw new errors_1.NotSupported('Invalid transaction, transaction type not supported: ' + type);
24
+ }
25
+ }
26
+ exports.instructionParamsFactory = instructionParamsFactory;
27
+ /**
28
+ * Parses Solana instructions to Wallet initialization tx instructions params
29
+ *
30
+ * @param {TransactionInstruction[]} instructions - containing create and initialize nonce solana instructions
31
+ * @returns {InstructionParams[]} An array containing instruction params for Wallet initialization tx
32
+ */
33
+ function parseWalletInitInstructions(instructions) {
34
+ var instructionData = [];
35
+ var createInstruction = web3_js_1.SystemInstruction.decodeCreateAccount(instructions[constants_1.walletInitInstructionIndexes.Create]);
36
+ var nonceInitInstruction = web3_js_1.SystemInstruction.decodeNonceInitialize(instructions[constants_1.walletInitInstructionIndexes.InitializeNonce]);
37
+ var walletInit = {
38
+ type: constants_1.InstructionBuilderTypes.CreateNonceAccount,
39
+ params: {
40
+ fromAddress: createInstruction.fromPubkey.toString(),
41
+ nonceAddress: nonceInitInstruction.noncePubkey.toString(),
42
+ authAddress: nonceInitInstruction.authorizedPubkey.toString(),
43
+ amount: createInstruction.lamports.toString(),
44
+ },
45
+ };
46
+ instructionData.push(walletInit);
47
+ if (instructions.length === 3 && instructions[2]) {
48
+ var memo = { type: constants_1.InstructionBuilderTypes.Memo, params: { memo: instructions[2].data.toString() } };
49
+ instructionData.push(memo);
50
+ }
51
+ return instructionData;
52
+ }
53
+ /**
54
+ * Parses Solana instructions to Send tx instructions params
55
+ * Only supports Memo, Transfer and Advance Nonce Solana instructions
56
+ *
57
+ * @param {TransactionInstruction[]} instructions - an array of supported Solana instructions
58
+ * @returns {InstructionParams[]} An array containing instruction params for Send tx
59
+ */
60
+ function parseSendInstructions(instructions) {
61
+ var instructionData = [];
62
+ for (var _i = 0, instructions_1 = instructions; _i < instructions_1.length; _i++) {
63
+ var instruction = instructions_1[_i];
64
+ var type = utils_1.getInstructionType(instruction);
65
+ switch (type) {
66
+ case constants_1.ValidInstructionTypesEnum.Memo:
67
+ var memo = { type: constants_1.InstructionBuilderTypes.Memo, params: { memo: instruction.data.toString() } };
68
+ instructionData.push(memo);
69
+ break;
70
+ case constants_1.ValidInstructionTypesEnum.AdvanceNonceAccount:
71
+ var advanceNonceInstruction = web3_js_1.SystemInstruction.decodeNonceAdvance(instruction);
72
+ var nonce = {
73
+ type: constants_1.InstructionBuilderTypes.NonceAdvance,
74
+ params: {
75
+ walletNonceAddress: advanceNonceInstruction.noncePubkey.toString(),
76
+ authWalletAddress: advanceNonceInstruction.authorizedPubkey.toString(),
77
+ },
78
+ };
79
+ instructionData.push(nonce);
80
+ break;
81
+ case constants_1.ValidInstructionTypesEnum.Transfer:
82
+ var transferInstruction = web3_js_1.SystemInstruction.decodeTransfer(instruction);
83
+ var transfer = {
84
+ type: constants_1.InstructionBuilderTypes.Transfer,
85
+ params: {
86
+ fromAddress: transferInstruction.fromPubkey.toString(),
87
+ toAddress: transferInstruction.toPubkey.toString(),
88
+ amount: transferInstruction.lamports.toString(),
89
+ },
90
+ };
91
+ instructionData.push(transfer);
92
+ break;
93
+ default:
94
+ throw new errors_1.NotSupported('Invalid transaction, instruction type not supported: ' + utils_1.getInstructionType(instruction));
95
+ }
96
+ }
97
+ return instructionData;
98
+ }
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL2luc3RydWN0aW9uUGFyYW1zRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBNEU7QUFFNUUsd0NBQThDO0FBQzlDLDZDQUFrRDtBQUNsRCx5Q0FBK0c7QUFFL0csaUNBQTZDO0FBRTdDOzs7Ozs7R0FNRztBQUNILFNBQWdCLHdCQUF3QixDQUN0QyxJQUFxQixFQUNyQixZQUFzQztJQUV0QyxRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssMEJBQWUsQ0FBQyxvQkFBb0I7WUFDdkMsT0FBTywyQkFBMkIsQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNuRCxLQUFLLDBCQUFlLENBQUMsSUFBSTtZQUN2QixPQUFPLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQzdDO1lBQ0UsTUFBTSxJQUFJLHFCQUFZLENBQUMsdURBQXVELEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDMUY7QUFDSCxDQUFDO0FBWkQsNERBWUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsMkJBQTJCLENBQUMsWUFBc0M7SUFDekUsSUFBTSxlQUFlLEdBQTZCLEVBQUUsQ0FBQztJQUNyRCxJQUFNLGlCQUFpQixHQUFHLDJCQUFpQixDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyx3Q0FBNEIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0lBQ25ILElBQU0sb0JBQW9CLEdBQUcsMkJBQWlCLENBQUMscUJBQXFCLENBQ2xFLFlBQVksQ0FBQyx3Q0FBNEIsQ0FBQyxlQUFlLENBQUMsQ0FDM0QsQ0FBQztJQUVGLElBQU0sVUFBVSxHQUFlO1FBQzdCLElBQUksRUFBRSxtQ0FBdUIsQ0FBQyxrQkFBa0I7UUFDaEQsTUFBTSxFQUFFO1lBQ04sV0FBVyxFQUFFLGlCQUFpQixDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDcEQsWUFB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Y3Rpb25JbnN0cnVjdGlvbiB9IGZyb20gJ0Bzb2xhbmEvd2ViMy5qcyc7XG5cbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IE5vdFN1cHBvcnRlZCB9IGZyb20gJy4uL2Jhc2VDb2luL2Vycm9ycyc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcywgVmFsaWRJbnN0cnVjdGlvblR5cGVzRW51bSwgd2FsbGV0SW5pdEluc3RydWN0aW9uSW5kZXhlcyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IEluc3RydWN0aW9uUGFyYW1zLCBXYWxsZXRJbml0LCBUcmFuc2ZlciwgTm9uY2UsIE1lbW8gfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGdldEluc3RydWN0aW9uVHlwZSB9IGZyb20gJy4vdXRpbHMnO1xuXG4vKipcbiAqIENvbnN0cnVjdCBpbnN0cnVjdGlvbnMgcGFyYW1zIGZyb20gU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25UeXBlfSB0eXBlIC0gdGhlIHRyYW5zYWN0aW9uIHR5cGVcbiAqIEBwYXJhbSB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBpbnN0cnVjdGlvbnMgLSBzb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKiBAcmV0dXJucyB7SW5zdHJ1Y3Rpb25QYXJhbXNbXX0gQW4gYXJyYXkgY29udGFpbmluZyBpbnN0cnVjdGlvbiBwYXJhbXNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShcbiAgdHlwZTogVHJhbnNhY3Rpb25UeXBlLFxuICBpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSxcbik6IEluc3RydWN0aW9uUGFyYW1zW10ge1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5XYWxsZXRJbml0aWFsaXphdGlvbjpcbiAgICAgIHJldHVybiBwYXJzZVdhbGxldEluaXRJbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zKTtcbiAgICBjYXNlIFRyYW5zYWN0aW9uVHlwZS5TZW5kOlxuICAgICAgcmV0dXJuIHBhcnNlU2VuZEluc3RydWN0aW9ucyhpbnN0cnVjdGlvbnMpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKCdJbnZhbGlkIHRyYW5zYWN0aW9uLCB0cmFuc2FjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQ6ICcgKyB0eXBlKTtcbiAgfVxufVxuXG4vKipcbiAqIFBhcnNlcyBTb2xhbmEgaW5zdHJ1Y3Rpb25zIHRvIFdhbGxldCBpbml0aWFsaXphdGlvbiB0eCBpbnN0cnVjdGlvbnMgcGFyYW1zXG4gKlxuICogQHBhcmFtIHtUcmFuc2FjdGlvbkluc3RydWN0aW9uW119IGluc3RydWN0aW9ucyAtIGNvbnRhaW5pbmcgY3JlYXRlIGFuZCBpbml0aWFsaXplIG5vbmNlIHNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqIEByZXR1cm5zIHtJbnN0cnVjdGlvblBhcmFtc1tdfSBBbiBhcnJheSBjb250YWluaW5nIGluc3RydWN0aW9uIHBhcmFtcyBmb3IgV2FsbGV0IGluaXRpYWxpemF0aW9uIHR4XG4gKi9cbmZ1bmN0aW9uIHBhcnNlV2FsbGV0SW5pdEluc3RydWN0aW9ucyhpbnN0cnVjdGlvbnM6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSk6IEFycmF5PFdhbGxldEluaXQgfCBNZW1vPiB7XG4gIGNvbnN0IGluc3RydWN0aW9uRGF0YTogQXJyYXk8V2FsbGV0SW5pdCB8IE1lbW8+ID0gW107XG4gIGNvbnN0IGNyZWF0ZUluc3RydWN0aW9uID0gU3lzdGVtSW5zdHJ1Y3Rpb24uZGVjb2RlQ3JlYXRlQWNjb3VudChpbnN0cnVjdGlvbnNbd2FsbGV0SW5pdEluc3RydWN0aW9uSW5kZXhlcy5DcmVhdGVdKTtcbiAgY29uc3Qgbm9uY2VJbml0SW5zdHJ1Y3Rpb24gPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVOb25jZUluaXRpYWxpemUoXG4gICAgaW5zdHJ1Y3Rpb25zW3dhbGxldEluaXRJbnN0cnVjdGlvbkluZGV4ZXMuSW5pdGlhbGl6ZU5vbmNlXSxcbiAgKTtcblxuICBjb25zdCB3YWxsZXRJbml0OiBXYWxsZXRJbml0ID0ge1xuICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZU5vbmNlQWNjb3VudCxcbiAgICBwYXJhbXM6IHtcbiAgICAgIGZyb21BZGRyZXNzOiBjcmVhdGVJbnN0cnVjdGlvbi5mcm9tUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICBub25jZUFkZHJlc3M6IG5vbmNlSW5pdEluc3RydWN0aW9uLm5vbmNlUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICBhdXRoQWRkcmVzczogbm9uY2VJbml0SW5zdHJ1Y3Rpb24uYXV0aG9yaXplZFB1YmtleS50b1N0cmluZygpLFxuICAgICAgYW1vdW50OiBjcmVhdGVJbnN0cnVjdGlvbi5sYW1wb3J0cy50b1N0cmluZygpLFxuICAgIH0sXG4gIH07XG4gIGluc3RydWN0aW9uRGF0YS5wdXNoKHdhbGxldEluaXQpO1xuXG4gIGlmIChpbnN0cnVjdGlvbnMubGVuZ3RoID09PSAzICYmIGluc3RydWN0aW9uc1syXSkge1xuICAgIGNvbnN0IG1lbW86IE1lbW8gPSB7IHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW8sIHBhcmFtczogeyBtZW1vOiBpbnN0cnVjdGlvbnNbMl0uZGF0YS50b1N0cmluZygpIH0gfTtcbiAgICBpbnN0cnVjdGlvbkRhdGEucHVzaChtZW1vKTtcbiAgfVxuXG4gIHJldHVybiBpbnN0cnVjdGlvbkRhdGE7XG59XG5cbi8qKlxuICogUGFyc2VzIFNvbGFuYSBpbnN0cnVjdGlvbnMgdG8gU2VuZCB0eCBpbnN0cnVjdGlvbnMgcGFyYW1zXG4gKiBPbmx5IHN1cHBvcnRzIE1lbW8sIFRyYW5zZmVyIGFuZCBBZHZhbmNlIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gaW5zdHJ1Y3Rpb25zIC0gYW4gYXJyYXkgb2Ygc3VwcG9ydGVkIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqIEByZXR1cm5zIHtJbnN0cnVjdGlvblBhcmFtc1tdfSBBbiBhcnJheSBjb250YWluaW5nIGluc3RydWN0aW9uIHBhcmFtcyBmb3IgU2VuZCB0eFxuICovXG5mdW5jdGlvbiBwYXJzZVNlbmRJbnN0cnVjdGlvbnMoaW5zdHJ1Y3Rpb25zOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10pOiBBcnJheTxOb25jZSB8IE1lbW8gfCBUcmFuc2Zlcj4ge1xuICBjb25zdCBpbnN0cnVjdGlvbkRhdGE6IEFycmF5PE5vbmNlIHwgTWVtbyB8IFRyYW5zZmVyPiA9IFtdO1xuICBmb3IgKGNvbnN0IGluc3RydWN0aW9uIG9mIGluc3RydWN0aW9ucykge1xuICAgIGNvbnN0IHR5cGUgPSBnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pO1xuICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLk1lbW86XG4gICAgICAgIGNvbnN0IG1lbW86IE1lbW8gPSB7IHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW8sIHBhcmFtczogeyBtZW1vOiBpbnN0cnVjdGlvbi5kYXRhLnRvU3RyaW5nKCkgfSB9O1xuICAgICAgICBpbnN0cnVjdGlvbkRhdGEucHVzaChtZW1vKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIFZhbGlkSW5zdHJ1Y3Rpb25UeXBlc0VudW0uQWR2YW5jZU5vbmNlQWNjb3VudDpcbiAgICAgICAgY29uc3QgYWR2YW5jZU5vbmNlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1JbnN0cnVjdGlvbi5kZWNvZGVOb25jZUFkdmFuY2UoaW5zdHJ1Y3Rpb24pO1xuICAgICAgICBjb25zdCBub25jZTogTm9uY2UgPSB7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTm9uY2VBZHZhbmNlLFxuICAgICAgICAgIHBhcmFtczoge1xuICAgICAgICAgICAgd2FsbGV0Tm9uY2VBZGRyZXNzOiBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbi5ub25jZVB1YmtleS50b1N0cmluZygpLFxuICAgICAgICAgICAgYXV0aFdhbGxldEFkZHJlc3M6IGFkdmFuY2VOb25jZUluc3RydWN0aW9uLmF1dGhvcml6ZWRQdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgICAgICBpbnN0cnVjdGlvbkRhdGEucHVzaChub25jZSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBWYWxpZEluc3RydWN0aW9uVHlwZXNFbnVtLlRyYW5zZmVyOlxuICAgICAgICBjb25zdCB0cmFuc2Zlckluc3RydWN0aW9uID0gU3lzdGVtSW5zdHJ1Y3Rpb24uZGVjb2RlVHJhbnNmZXIoaW5zdHJ1Y3Rpb24pO1xuICAgICAgICBjb25zdCB0cmFuc2ZlcjogVHJhbnNmZXIgPSB7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuVHJhbnNmZXIsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBmcm9tQWRkcmVzczogdHJhbnNmZXJJbnN0cnVjdGlvbi5mcm9tUHVia2V5LnRvU3RyaW5nKCksXG4gICAgICAgICAgICB0b0FkZHJlc3M6IHRyYW5zZmVySW5zdHJ1Y3Rpb24udG9QdWJrZXkudG9TdHJpbmcoKSxcbiAgICAgICAgICAgIGFtb3VudDogdHJhbnNmZXJJbnN0cnVjdGlvbi5sYW1wb3J0cy50b1N0cmluZygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGluc3RydWN0aW9uRGF0YS5wdXNoKHRyYW5zZmVyKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgTm90U3VwcG9ydGVkKFxuICAgICAgICAgICdJbnZhbGlkIHRyYW5zYWN0aW9uLCBpbnN0cnVjdGlvbiB0eXBlIG5vdCBzdXBwb3J0ZWQ6ICcgKyBnZXRJbnN0cnVjdGlvblR5cGUoaW5zdHJ1Y3Rpb24pLFxuICAgICAgICApO1xuICAgIH1cbiAgfVxuICByZXR1cm4gaW5zdHJ1Y3Rpb25EYXRhO1xufVxuIl19
@@ -1,19 +1,45 @@
1
- import { Ed25519KeyPair } from '../baseCoin';
1
+ import { BaseKeyPair } from '../baseCoin';
2
2
  import { DefaultKeys, KeyPairOptions } from '../baseCoin/iface';
3
- export declare class KeyPair extends Ed25519KeyPair {
3
+ import { SolanaKeys } from './iface';
4
+ export declare class KeyPair implements BaseKeyPair {
5
+ protected keyPair: DefaultKeys;
6
+ protected source?: KeyPairOptions;
4
7
  /**
5
8
  * Public constructor. By default, creates a key pair with a random master seed.
6
9
  *
7
10
  * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
8
11
  */
9
12
  constructor(source?: KeyPairOptions);
13
+ private setKP;
10
14
  /** @inheritdoc */
11
- recordKeysFromPrivateKeyInProtocolFormat(prv: string): DefaultKeys;
15
+ recordKeysFromPrivateKey(prv: string): void;
12
16
  /** @inheritdoc */
13
- recordKeysFromPublicKeyInProtocolFormat(pub: string): DefaultKeys;
14
- /** @inheritdoc */
15
- getKeys(): string;
17
+ recordKeysFromPublicKey(pub: string): void;
18
+ /**
19
+ * Solana default keys format public key as a base58 string and secret key as Uint8Array
20
+ *
21
+ * @param {boolean} raw defines if the prv key is returned in Uint8Array, default is base58
22
+ * @returns {SolanaKeys} The keys in the defined format
23
+ */
24
+ getKeys(raw?: boolean): SolanaKeys;
16
25
  /** @inheritdoc */
17
26
  getAddress(): string;
27
+ /**
28
+ * Generates a signature for an arbitrary string with the current private key using the ed25519 public-key signature
29
+ * system.
30
+ *
31
+ * @param {string} message to produce a signature for
32
+ * @returns {Uint8Array} The signature produced for the message
33
+ * @throws if there is no private key
34
+ */
35
+ signMessage(message: string): Uint8Array;
36
+ /**
37
+ * Verifies a message signature using the current public key.
38
+ *
39
+ * @param {string} message signed
40
+ * @param {Uint8Array} signature to verify
41
+ * @returns {boolean} True if the message was signed with the current key pair
42
+ */
43
+ verifySignature(message: Uint8Array | string, signature: Uint8Array): boolean;
18
44
  }
19
45
  //# sourceMappingURL=keyPair.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/keyPair.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEhE,qBAAa,OAAQ,SAAQ,cAAc;IACzC;;;;OAIG;gBACS,MAAM,CAAC,EAAE,cAAc;IAInC,kBAAkB;IAClB,wCAAwC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAIlE,kBAAkB;IAClB,uCAAuC,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW;IAIjE,kBAAkB;IAClB,OAAO,IAAI,MAAM;IAIjB,kBAAkB;IAClB,UAAU,IAAI,MAAM;CAGrB"}
1
+ {"version":3,"file":"keyPair.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/keyPair.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,WAAW,EAAqC,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnG,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAKrC,qBAAa,OAAQ,YAAW,WAAW;IACzC,SAAS,CAAC,OAAO,EAAE,WAAW,CAAC;IAC/B,SAAS,CAAC,MAAM,CAAC,EAAE,cAAc,CAAC;IAClC;;;;OAIG;gBACS,MAAM,CAAC,EAAE,cAAc;IAiBnC,OAAO,CAAC,KAAK;IAOb,kBAAkB;IAClB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAU3C,kBAAkB;IAClB,uBAAuB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAQ1C;;;;;OAKG;IACH,OAAO,CAAC,GAAG,UAAQ,GAAG,UAAU;IAYhC,kBAAkB;IAClB,UAAU,IAAI,MAAM;IAKpB;;;;;;;OAOG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IASxC;;;;;;OAMG;IACH,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO;CAU9E"}
@@ -1,50 +1,128 @@
1
1
  "use strict";
2
- var __extends = (this && this.__extends) || (function () {
3
- var extendStatics = function (d, b) {
4
- extendStatics = Object.setPrototypeOf ||
5
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
- return extendStatics(d, b);
8
- };
9
- return function (d, b) {
10
- if (typeof b !== "function" && b !== null)
11
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
12
- extendStatics(d, b);
13
- function __() { this.constructor = d; }
14
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
15
- };
16
- })();
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
17
5
  Object.defineProperty(exports, "__esModule", { value: true });
18
6
  exports.KeyPair = void 0;
19
- var baseCoin_1 = require("../baseCoin");
7
+ var web3_js_1 = require("@solana/web3.js");
8
+ var tweetnacl_1 = __importDefault(require("tweetnacl"));
20
9
  var errors_1 = require("../baseCoin/errors");
21
- var KeyPair = /** @class */ (function (_super) {
22
- __extends(KeyPair, _super);
10
+ var iface_1 = require("../baseCoin/iface");
11
+ var constants_1 = require("./constants");
12
+ var utils_1 = require("./utils");
13
+ // The Solana Key Pair is an ED25519 but the current ED25519 implementation doesnt return base58 strings
14
+ // TODO(): Refactor to ED25519 Keypair instead of BaseKeyPair
15
+ var KeyPair = /** @class */ (function () {
23
16
  /**
24
17
  * Public constructor. By default, creates a key pair with a random master seed.
25
18
  *
26
19
  * @param { KeyPairOptions } source Either a master seed, a private key, or a public key
27
20
  */
28
21
  function KeyPair(source) {
29
- return _super.call(this, source) || this;
22
+ var kp;
23
+ if (!source) {
24
+ kp = web3_js_1.Keypair.generate();
25
+ this.setKP(kp);
26
+ }
27
+ else if (iface_1.isSeed(source)) {
28
+ kp = web3_js_1.Keypair.fromSeed(source.seed.slice(0, constants_1.SEED_LENGTH));
29
+ this.setKP(kp);
30
+ }
31
+ else if (iface_1.isPrivateKey(source)) {
32
+ this.recordKeysFromPrivateKey(source.prv);
33
+ }
34
+ else if (iface_1.isPublicKey(source)) {
35
+ this.recordKeysFromPublicKey(source.pub);
36
+ }
37
+ else {
38
+ throw new Error('Invalid key pair options');
39
+ }
30
40
  }
31
- /** @inheritdoc */
32
- KeyPair.prototype.recordKeysFromPrivateKeyInProtocolFormat = function (prv) {
33
- throw new errors_1.NotImplementedError('recordKeysFromPrivateKeyInProtocolFormat not implemented');
41
+ KeyPair.prototype.setKP = function (keyPair) {
42
+ this.keyPair = {
43
+ prv: utils_1.Uint8ArrayTobase58(keyPair.secretKey),
44
+ pub: keyPair.publicKey.toString(),
45
+ };
34
46
  };
35
47
  /** @inheritdoc */
36
- KeyPair.prototype.recordKeysFromPublicKeyInProtocolFormat = function (pub) {
37
- throw new errors_1.NotImplementedError('recordKeysFromPublicKeyInProtocolFormat not implemented');
48
+ KeyPair.prototype.recordKeysFromPrivateKey = function (prv) {
49
+ if (utils_1.isValidPrivateKey(prv)) {
50
+ var prvKey = utils_1.base58ToUint8Array(prv);
51
+ var keyPair = web3_js_1.Keypair.fromSecretKey(prvKey);
52
+ this.setKP(keyPair);
53
+ }
54
+ else {
55
+ throw new errors_1.InvalidKey('Invalid private key');
56
+ }
38
57
  };
39
58
  /** @inheritdoc */
40
- KeyPair.prototype.getKeys = function () {
41
- throw new errors_1.NotImplementedError('getKeys not implemented');
59
+ KeyPair.prototype.recordKeysFromPublicKey = function (pub) {
60
+ if (utils_1.isValidPublicKey(pub)) {
61
+ this.keyPair = { pub: pub };
62
+ }
63
+ else {
64
+ throw new errors_1.InvalidKey('Invalid public key: ' + pub);
65
+ }
66
+ };
67
+ /**
68
+ * Solana default keys format public key as a base58 string and secret key as Uint8Array
69
+ *
70
+ * @param {boolean} raw defines if the prv key is returned in Uint8Array, default is base58
71
+ * @returns {SolanaKeys} The keys in the defined format
72
+ */
73
+ KeyPair.prototype.getKeys = function (raw) {
74
+ if (raw === void 0) { raw = false; }
75
+ var result = { pub: this.keyPair.pub };
76
+ if (!!this.keyPair.prv) {
77
+ if (raw) {
78
+ result.prv = utils_1.base58ToUint8Array(this.keyPair.prv);
79
+ }
80
+ else {
81
+ result.prv = this.keyPair.prv;
82
+ }
83
+ }
84
+ return result;
42
85
  };
43
86
  /** @inheritdoc */
44
87
  KeyPair.prototype.getAddress = function () {
45
- throw new errors_1.NotImplementedError('getAddress not implemented');
88
+ var keys = this.getKeys();
89
+ return keys.pub;
90
+ };
91
+ /**
92
+ * Generates a signature for an arbitrary string with the current private key using the ed25519 public-key signature
93
+ * system.
94
+ *
95
+ * @param {string} message to produce a signature for
96
+ * @returns {Uint8Array} The signature produced for the message
97
+ * @throws if there is no private key
98
+ */
99
+ KeyPair.prototype.signMessage = function (message) {
100
+ var messageToSign = new Uint8Array(Buffer.from(message));
101
+ var prv = this.keyPair.prv;
102
+ if (!prv) {
103
+ throw new Error('Missing private key');
104
+ }
105
+ return tweetnacl_1.default.sign.detached(messageToSign, utils_1.base58ToUint8Array(prv));
106
+ };
107
+ /**
108
+ * Verifies a message signature using the current public key.
109
+ *
110
+ * @param {string} message signed
111
+ * @param {Uint8Array} signature to verify
112
+ * @returns {boolean} True if the message was signed with the current key pair
113
+ */
114
+ KeyPair.prototype.verifySignature = function (message, signature) {
115
+ var messageToVerify;
116
+ if (typeof message === 'string') {
117
+ messageToVerify = new Uint8Array(Buffer.from(message));
118
+ }
119
+ else {
120
+ messageToVerify = message;
121
+ }
122
+ var pub = new web3_js_1.PublicKey(this.keyPair.pub);
123
+ return tweetnacl_1.default.sign.detached.verify(messageToVerify, signature, pub.toBuffer());
46
124
  };
47
125
  return KeyPair;
48
- }(baseCoin_1.Ed25519KeyPair));
126
+ }());
49
127
  exports.KeyPair = KeyPair;
50
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL3NvbC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUE2QztBQUM3Qyw2Q0FBeUQ7QUFHekQ7SUFBNkIsMkJBQWM7SUFDekM7Ozs7T0FJRztJQUNILGlCQUFZLE1BQXVCO2VBQ2pDLGtCQUFNLE1BQU0sQ0FBQztJQUNmLENBQUM7SUFFRCxrQkFBa0I7SUFDbEIsMERBQXdDLEdBQXhDLFVBQXlDLEdBQVc7UUFDbEQsTUFBTSxJQUFJLDRCQUFtQixDQUFDLDBEQUEwRCxDQUFDLENBQUM7SUFDNUYsQ0FBQztJQUVELGtCQUFrQjtJQUNsQix5REFBdUMsR0FBdkMsVUFBd0MsR0FBVztRQUNqRCxNQUFNLElBQUksNEJBQW1CLENBQUMseURBQXlELENBQUMsQ0FBQztJQUMzRixDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLHlCQUFPLEdBQVA7UUFDRSxNQUFNLElBQUksNEJBQW1CLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsa0JBQWtCO0lBQ2xCLDRCQUFVLEdBQVY7UUFDRSxNQUFNLElBQUksNEJBQW1CLENBQUMsNEJBQTRCLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBQ0gsY0FBQztBQUFELENBQUMsQUE3QkQsQ0FBNkIseUJBQWMsR0E2QjFDO0FBN0JZLDBCQUFPIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRWQyNTUxOUtleVBhaXIgfSBmcm9tICcuLi9iYXNlQ29pbic7XG5pbXBvcnQgeyBOb3RJbXBsZW1lbnRlZEVycm9yIH0gZnJvbSAnLi4vYmFzZUNvaW4vZXJyb3JzJztcbmltcG9ydCB7IERlZmF1bHRLZXlzLCBLZXlQYWlyT3B0aW9ucyB9IGZyb20gJy4uL2Jhc2VDb2luL2lmYWNlJztcblxuZXhwb3J0IGNsYXNzIEtleVBhaXIgZXh0ZW5kcyBFZDI1NTE5S2V5UGFpciB7XG4gIC8qKlxuICAgKiBQdWJsaWMgY29uc3RydWN0b3IuIEJ5IGRlZmF1bHQsIGNyZWF0ZXMgYSBrZXkgcGFpciB3aXRoIGEgcmFuZG9tIG1hc3RlciBzZWVkLlxuICAgKlxuICAgKiBAcGFyYW0geyBLZXlQYWlyT3B0aW9ucyB9IHNvdXJjZSBFaXRoZXIgYSBtYXN0ZXIgc2VlZCwgYSBwcml2YXRlIGtleSwgb3IgYSBwdWJsaWMga2V5XG4gICAqL1xuICBjb25zdHJ1Y3Rvcihzb3VyY2U/OiBLZXlQYWlyT3B0aW9ucykge1xuICAgIHN1cGVyKHNvdXJjZSk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5SW5Qcm90b2NvbEZvcm1hdChwcnY6IHN0cmluZyk6IERlZmF1bHRLZXlzIHtcbiAgICB0aHJvdyBuZXcgTm90SW1wbGVtZW50ZWRFcnJvcigncmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5SW5Qcm90b2NvbEZvcm1hdCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICByZWNvcmRLZXlzRnJvbVB1YmxpY0tleUluUHJvdG9jb2xGb3JtYXQocHViOiBzdHJpbmcpOiBEZWZhdWx0S2V5cyB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ3JlY29yZEtleXNGcm9tUHVibGljS2V5SW5Qcm90b2NvbEZvcm1hdCBub3QgaW1wbGVtZW50ZWQnKTtcbiAgfVxuXG4gIC8qKiBAaW5oZXJpdGRvYyAqL1xuICBnZXRLZXlzKCk6IHN0cmluZyB7XG4gICAgdGhyb3cgbmV3IE5vdEltcGxlbWVudGVkRXJyb3IoJ2dldEtleXMgbm90IGltcGxlbWVudGVkJyk7XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgZ2V0QWRkcmVzcygpOiBzdHJpbmcge1xuICAgIHRocm93IG5ldyBOb3RJbXBsZW1lbnRlZEVycm9yKCdnZXRBZGRyZXNzIG5vdCBpbXBsZW1lbnRlZCcpO1xuICB9XG59XG4iXX0=
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5UGFpci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb2luL3NvbC9rZXlQYWlyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDJDQUFtRTtBQUNuRSx3REFBNkI7QUFFN0IsNkNBQWdEO0FBQ2hELDJDQUFtRztBQUNuRyx5Q0FBMEM7QUFFMUMsaUNBQXNHO0FBRXRHLHdHQUF3RztBQUN4Ryw2REFBNkQ7QUFDN0Q7SUFHRTs7OztPQUlHO0lBQ0gsaUJBQVksTUFBdUI7UUFDakMsSUFBSSxFQUFjLENBQUM7UUFDbkIsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNYLEVBQUUsR0FBRyxpQkFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQzNCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEI7YUFBTSxJQUFJLGNBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN6QixFQUFFLEdBQUcsaUJBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLHVCQUFXLENBQUMsQ0FBQyxDQUFDO1lBQzVELElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDaEI7YUFBTSxJQUFJLG9CQUFZLENBQUMsTUFBTSxDQUFDLEVBQUU7WUFDL0IsSUFBSSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzQzthQUFNLElBQUksbUJBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUM5QixJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQzFDO2FBQU07WUFDTCxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDO0lBRU8sdUJBQUssR0FBYixVQUFjLE9BQW1CO1FBQy9CLElBQUksQ0FBQyxPQUFPLEdBQUc7WUFDYixHQUFHLEVB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QUUsU0FBUyxFQUFFLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQy9FLENBQUM7SUFDSCxjQUFDO0FBQUQsQ0FBQyxBQTlHRCxJQThHQztBQTlHWSwwQkFBTyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEtleXBhaXIgYXMgU29sS2V5cGFpciwgUHVibGljS2V5IH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCBuYWNsIGZyb20gJ3R3ZWV0bmFjbCc7XG5pbXBvcnQgeyBCYXNlS2V5UGFpciB9IGZyb20gJy4uL2Jhc2VDb2luJztcbmltcG9ydCB7IEludmFsaWRLZXkgfSBmcm9tICcuLi9iYXNlQ29pbi9lcnJvcnMnO1xuaW1wb3J0IHsgRGVmYXVsdEtleXMsIGlzUHJpdmF0ZUtleSwgaXNQdWJsaWNLZXksIGlzU2VlZCwgS2V5UGFpck9wdGlvbnMgfSBmcm9tICcuLi9iYXNlQ29pbi9pZmFjZSc7XG5pbXBvcnQgeyBTRUVEX0xFTkdUSCB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IFNvbGFuYUtleXMgfSBmcm9tICcuL2lmYWNlJztcbmltcG9ydCB7IGJhc2U1OFRvVWludDhBcnJheSwgaXNWYWxpZFByaXZhdGVLZXksIGlzVmFsaWRQdWJsaWNLZXksIFVpbnQ4QXJyYXlUb2Jhc2U1OCB9IGZyb20gJy4vdXRpbHMnO1xuXG4vLyBUaGUgU29sYW5hIEtleSBQYWlyIGlzIGFuIEVEMjU1MTkgYnV0IHRoZSBjdXJyZW50IEVEMjU1MTkgaW1wbGVtZW50YXRpb24gZG9lc250IHJldHVybiBiYXNlNTggc3RyaW5nc1xuLy8gVE9ETygpOiBSZWZhY3RvciB0byBFRDI1NTE5IEtleXBhaXIgaW5zdGVhZCBvZiBCYXNlS2V5UGFpclxuZXhwb3J0IGNsYXNzIEtleVBhaXIgaW1wbGVtZW50cyBCYXNlS2V5UGFpciB7XG4gIHByb3RlY3RlZCBrZXlQYWlyOiBEZWZhdWx0S2V5cztcbiAgcHJvdGVjdGVkIHNvdXJjZT86IEtleVBhaXJPcHRpb25zO1xuICAvKipcbiAgICogUHVibGljIGNvbnN0cnVjdG9yLiBCeSBkZWZhdWx0LCBjcmVhdGVzIGEga2V5IHBhaXIgd2l0aCBhIHJhbmRvbSBtYXN0ZXIgc2VlZC5cbiAgICpcbiAgICogQHBhcmFtIHsgS2V5UGFpck9wdGlvbnMgfSBzb3VyY2UgRWl0aGVyIGEgbWFzdGVyIHNlZWQsIGEgcHJpdmF0ZSBrZXksIG9yIGEgcHVibGljIGtleVxuICAgKi9cbiAgY29uc3RydWN0b3Ioc291cmNlPzogS2V5UGFpck9wdGlvbnMpIHtcbiAgICBsZXQga3A6IFNvbEtleXBhaXI7XG4gICAgaWYgKCFzb3VyY2UpIHtcbiAgICAgIGtwID0gU29sS2V5cGFpci5nZW5lcmF0ZSgpO1xuICAgICAgdGhpcy5zZXRLUChrcCk7XG4gICAgfSBlbHNlIGlmIChpc1NlZWQoc291cmNlKSkge1xuICAgICAga3AgPSBTb2xLZXlwYWlyLmZyb21TZWVkKHNvdXJjZS5zZWVkLnNsaWNlKDAsIFNFRURfTEVOR1RIKSk7XG4gICAgICB0aGlzLnNldEtQKGtwKTtcbiAgICB9IGVsc2UgaWYgKGlzUHJpdmF0ZUtleShzb3VyY2UpKSB7XG4gICAgICB0aGlzLnJlY29yZEtleXNGcm9tUHJpdmF0ZUtleShzb3VyY2UucHJ2KTtcbiAgICB9IGVsc2UgaWYgKGlzUHVibGljS2V5KHNvdXJjZSkpIHtcbiAgICAgIHRoaXMucmVjb3JkS2V5c0Zyb21QdWJsaWNLZXkoc291cmNlLnB1Yik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBrZXkgcGFpciBvcHRpb25zJyk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRLUChrZXlQYWlyOiBTb2xLZXlwYWlyKTogdm9pZCB7XG4gICAgdGhpcy5rZXlQYWlyID0ge1xuICAgICAgcHJ2OiBVaW50OEFycmF5VG9iYXNlNTgoa2V5UGFpci5zZWNyZXRLZXkpLFxuICAgICAgcHViOiBrZXlQYWlyLnB1YmxpY0tleS50b1N0cmluZygpLFxuICAgIH07XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcmVjb3JkS2V5c0Zyb21Qcml2YXRlS2V5KHBydjogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKGlzVmFsaWRQcml2YXRlS2V5KHBydikpIHtcbiAgICAgIGNvbnN0IHBydktleSA9IGJhc2U1OFRvVWludDhBcnJheShwcnYpO1xuICAgICAgY29uc3Qga2V5UGFpciA9IFNvbEtleXBhaXIuZnJvbVNlY3JldEtleShwcnZLZXkpO1xuICAgICAgdGhpcy5zZXRLUChrZXlQYWlyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRLZXkoJ0ludmFsaWQgcHJpdmF0ZSBrZXknKTtcbiAgICB9XG4gIH1cblxuICAvKiogQGluaGVyaXRkb2MgKi9cbiAgcmVjb3JkS2V5c0Zyb21QdWJsaWNLZXkocHViOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBpZiAoaXNWYWxpZFB1YmxpY0tleShwdWIpKSB7XG4gICAgICB0aGlzLmtleVBhaXIgPSB7IHB1YiB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgSW52YWxpZEtleSgnSW52YWxpZCBwdWJsaWMga2V5OiAnICsgcHViKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU29sYW5hIGRlZmF1bHQga2V5cyBmb3JtYXQgcHVibGljIGtleSBhcyBhIGJhc2U1OCBzdHJpbmcgYW5kIHNlY3JldCBrZXkgYXMgVWludDhBcnJheVxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJhdyBkZWZpbmVzIGlmIHRoZSBwcnYga2V5IGlzIHJldHVybmVkIGluIFVpbnQ4QXJyYXksIGRlZmF1bHQgaXMgYmFzZTU4XG4gICAqIEByZXR1cm5zIHtTb2xhbmFLZXlzfSBUaGUga2V5cyBpbiB0aGUgZGVmaW5lZCBmb3JtYXRcbiAgICovXG4gIGdldEtleXMocmF3ID0gZmFsc2UpOiBTb2xhbmFLZXlzIHtcbiAgICBjb25zdCByZXN1bHQ6IFNvbGFuYUtleXMgPSB7IHB1YjogdGhpcy5rZXlQYWlyLnB1YiB9O1xuICAgIGlmICghIXRoaXMua2V5UGFpci5wcnYpIHtcbiAgICAgIGlmIChyYXcpIHtcbiAgICAgICAgcmVzdWx0LnBydiA9IGJhc2U1OFRvVWludDhBcnJheSh0aGlzLmtleVBhaXIucHJ2KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5wcnYgPSB0aGlzLmtleVBhaXIucHJ2O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgLyoqIEBpbmhlcml0ZG9jICovXG4gIGdldEFkZHJlc3MoKTogc3RyaW5nIHtcbiAgICBjb25zdCBrZXlzID0gdGhpcy5nZXRLZXlzKCk7XG4gICAgcmV0dXJuIGtleXMucHViO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlcyBhIHNpZ25hdHVyZSBmb3IgYW4gYXJiaXRyYXJ5IHN0cmluZyB3aXRoIHRoZSBjdXJyZW50IHByaXZhdGUga2V5IHVzaW5nIHRoZSBlZDI1NTE5IHB1YmxpYy1rZXkgc2lnbmF0dXJlXG4gICAqIHN5c3RlbS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2UgdG8gcHJvZHVjZSBhIHNpZ25hdHVyZSBmb3JcbiAgICogQHJldHVybnMge1VpbnQ4QXJyYXl9IFRoZSBzaWduYXR1cmUgcHJvZHVjZWQgZm9yIHRoZSBtZXNzYWdlXG4gICAqIEB0aHJvd3MgaWYgdGhlcmUgaXMgbm8gcHJpdmF0ZSBrZXlcbiAgICovXG4gIHNpZ25NZXNzYWdlKG1lc3NhZ2U6IHN0cmluZyk6IFVpbnQ4QXJyYXkge1xuICAgIGNvbnN0IG1lc3NhZ2VUb1NpZ24gPSBuZXcgVWludDhBcnJheShCdWZmZXIuZnJvbShtZXNzYWdlKSk7XG4gICAgY29uc3QgeyBwcnYgfSA9IHRoaXMua2V5UGFpcjtcbiAgICBpZiAoIXBydikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdNaXNzaW5nIHByaXZhdGUga2V5Jyk7XG4gICAgfVxuICAgIHJldHVybiBuYWNsLnNpZ24uZGV0YWNoZWQobWVzc2FnZVRvU2lnbiwgYmFzZTU4VG9VaW50OEFycmF5KHBydikpO1xuICB9XG5cbiAgLyoqXG4gICAqIFZlcmlmaWVzIGEgbWVzc2FnZSBzaWduYXR1cmUgdXNpbmcgdGhlIGN1cnJlbnQgcHVibGljIGtleS5cbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IG1lc3NhZ2Ugc2lnbmVkXG4gICAqIEBwYXJhbSB7VWludDhBcnJheX0gc2lnbmF0dXJlIHRvIHZlcmlmeVxuICAgKiBAcmV0dXJucyB7Ym9vbGVhbn0gVHJ1ZSBpZiB0aGUgbWVzc2FnZSB3YXMgc2lnbmVkIHdpdGggdGhlIGN1cnJlbnQga2V5IHBhaXJcbiAgICovXG4gIHZlcmlmeVNpZ25hdHVyZShtZXNzYWdlOiBVaW50OEFycmF5IHwgc3RyaW5nLCBzaWduYXR1cmU6IFVpbnQ4QXJyYXkpOiBib29sZWFuIHtcbiAgICBsZXQgbWVzc2FnZVRvVmVyaWZ5O1xuICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgIG1lc3NhZ2VUb1ZlcmlmeSA9IG5ldyBVaW50OEFycmF5KEJ1ZmZlci5mcm9tKG1lc3NhZ2UpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbWVzc2FnZVRvVmVyaWZ5ID0gbWVzc2FnZTtcbiAgICB9XG4gICAgY29uc3QgcHViID0gbmV3IFB1YmxpY0tleSh0aGlzLmtleVBhaXIucHViKTtcbiAgICByZXR1cm4gbmFjbC5zaWduLmRldGFjaGVkLnZlcmlmeShtZXNzYWdlVG9WZXJpZnksIHNpZ25hdHVyZSwgcHViLnRvQnVmZmVyKCkpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,10 @@
1
+ import { TransactionInstruction } from '@solana/web3.js';
2
+ import { InstructionParams } from './iface';
3
+ /**
4
+ * Construct Solana instructions from instructions params
5
+ *
6
+ * @param {InstructionParams} instructionToBuild - the data containing the instruction params
7
+ * @returns {TransactionInstruction[]} An array containing supported Solana instructions
8
+ */
9
+ export declare function solInstructionFactory(instructionToBuild: InstructionParams): TransactionInstruction[];
10
+ //# sourceMappingURL=solInstructionFactory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"solInstructionFactory.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/solInstructionFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4B,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAInF,OAAO,EAAE,iBAAiB,EAAqC,MAAM,SAAS,CAAC;AAE/E;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,kBAAkB,EAAE,iBAAiB,GAAG,sBAAsB,EAAE,CAarG"}
@@ -0,0 +1,102 @@
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
+ exports.solInstructionFactory = void 0;
7
+ var web3_js_1 = require("@solana/web3.js");
8
+ var assert_1 = __importDefault(require("assert"));
9
+ var bignumber_js_1 = __importDefault(require("bignumber.js"));
10
+ var constants_1 = require("./constants");
11
+ /**
12
+ * Construct Solana instructions from instructions params
13
+ *
14
+ * @param {InstructionParams} instructionToBuild - the data containing the instruction params
15
+ * @returns {TransactionInstruction[]} An array containing supported Solana instructions
16
+ */
17
+ function solInstructionFactory(instructionToBuild) {
18
+ switch (instructionToBuild.type) {
19
+ case constants_1.InstructionBuilderTypes.NonceAdvance:
20
+ return advanceNonceInstruction(instructionToBuild);
21
+ case constants_1.InstructionBuilderTypes.Memo:
22
+ return memoInstruction(instructionToBuild);
23
+ case constants_1.InstructionBuilderTypes.Transfer:
24
+ return transferInstruction(instructionToBuild);
25
+ case constants_1.InstructionBuilderTypes.CreateNonceAccount:
26
+ return createNonceAccountInstruction(instructionToBuild);
27
+ default:
28
+ throw new Error("Invalid instruction type or not supported");
29
+ }
30
+ }
31
+ exports.solInstructionFactory = solInstructionFactory;
32
+ /**
33
+ * Construct Advance Nonce Solana instructions
34
+ *
35
+ * @param {Nonce} data - the data to build the instruction
36
+ * @returns {TransactionInstruction[]} An array containing Advance Nonce Solana instruction
37
+ */
38
+ function advanceNonceInstruction(data) {
39
+ var _a = data.params, authWalletAddress = _a.authWalletAddress, walletNonceAddress = _a.walletNonceAddress;
40
+ assert_1.default(authWalletAddress, 'Missing authWalletAddress param');
41
+ assert_1.default(walletNonceAddress, 'Missing walletNonceAddress param');
42
+ var nonceInstruction = web3_js_1.SystemProgram.nonceAdvance({
43
+ noncePubkey: new web3_js_1.PublicKey(walletNonceAddress),
44
+ authorizedPubkey: new web3_js_1.PublicKey(authWalletAddress),
45
+ });
46
+ return [nonceInstruction];
47
+ }
48
+ /**
49
+ * Construct Memo Solana instructions
50
+ *
51
+ * @param {Memo} data - the data to build the instruction
52
+ * @returns {TransactionInstruction[]} An array containing Memo Solana instruction
53
+ */
54
+ function memoInstruction(data) {
55
+ var memo = data.params.memo;
56
+ assert_1.default(memo, 'Missing memo param');
57
+ var memoInstruction = new web3_js_1.TransactionInstruction({
58
+ keys: [],
59
+ programId: new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK),
60
+ data: Buffer.from(memo),
61
+ });
62
+ return [memoInstruction];
63
+ }
64
+ /**
65
+ * Construct Transfer Solana instructions
66
+ *
67
+ * @param {Transfer} data - the data to build the instruction
68
+ * @returns {TransactionInstruction[]} An array containing Transfer Solana instruction
69
+ */
70
+ function transferInstruction(data) {
71
+ var _a = data.params, fromAddress = _a.fromAddress, toAddress = _a.toAddress, amount = _a.amount;
72
+ assert_1.default(fromAddress, 'Missing fromAddress param');
73
+ assert_1.default(toAddress, 'Missing toAddress param');
74
+ assert_1.default(amount, 'Missing toAddress param');
75
+ var transferInstruction = web3_js_1.SystemProgram.transfer({
76
+ fromPubkey: new web3_js_1.PublicKey(fromAddress),
77
+ toPubkey: new web3_js_1.PublicKey(toAddress),
78
+ lamports: new bignumber_js_1.default(amount).toNumber(),
79
+ });
80
+ return [transferInstruction];
81
+ }
82
+ /**
83
+ * Construct Create and Initialize Nonce Solana instructions
84
+ *
85
+ * @param {WalletInit} data - the data to build the instruction
86
+ * @returns {TransactionInstruction[]} An array containing Create and Initialize Nonce Solana instruction
87
+ */
88
+ function createNonceAccountInstruction(data) {
89
+ var _a = data.params, fromAddress = _a.fromAddress, nonceAddress = _a.nonceAddress, authAddress = _a.authAddress, amount = _a.amount;
90
+ assert_1.default(fromAddress, 'Missing fromAddress param');
91
+ assert_1.default(nonceAddress, 'Missing nonceAddress param');
92
+ assert_1.default(authAddress, 'Missing authAddress param');
93
+ assert_1.default(amount, 'Missing amount param');
94
+ var nonceAccountInstruction = web3_js_1.SystemProgram.createNonceAccount({
95
+ fromPubkey: new web3_js_1.PublicKey(fromAddress),
96
+ noncePubkey: new web3_js_1.PublicKey(nonceAddress),
97
+ authorizedPubkey: new web3_js_1.PublicKey(authAddress),
98
+ lamports: new bignumber_js_1.default(amount).toNumber(),
99
+ });
100
+ return nonceAccountInstruction.instructions;
101
+ }
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sSW5zdHJ1Y3Rpb25GYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvaW4vc29sL3NvbEluc3RydWN0aW9uRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSwyQ0FBbUY7QUFDbkYsa0RBQTRCO0FBQzVCLDhEQUFxQztBQUNyQyx5Q0FBdUU7QUFHdkU7Ozs7O0dBS0c7QUFDSCxTQUFnQixxQkFBcUIsQ0FBQyxrQkFBcUM7SUFDekUsUUFBUSxrQkFBa0IsQ0FBQyxJQUFJLEVBQUU7UUFDL0IsS0FBSyxtQ0FBdUIsQ0FBQyxZQUFZO1lBQ3ZDLE9BQU8sdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUNyRCxLQUFLLG1DQUF1QixDQUFDLElBQUk7WUFDL0IsT0FBTyxlQUFlLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUM3QyxLQUFLLG1DQUF1QixDQUFDLFFBQVE7WUFDbkMsT0FBTyxtQkFBbUIsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ2pELEtBQUssbUNBQXVCLENBQUMsa0JBQWtCO1lBQzdDLE9BQU8sNkJBQTZCLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUMzRDtZQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztLQUNoRTtBQUNILENBQUM7QUFiRCxzREFhQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyx1QkFBdUIsQ0FBQyxJQUFXO0lBRXhDLElBQUEsS0FDRSxJQUFJLE9BRDJDLEVBQXZDLGlCQUFpQix1QkFBQSxFQUFFLGtCQUFrQix3QkFBRSxDQUMxQztJQUNULGdCQUFNLENBQUMsaUJBQWlCLEVBQUUsaUNBQWlDLENBQUMsQ0FBQztJQUM3RCxnQkFBTSxDQUFDLGtCQUFrQixFQUFFLGtDQUFrQyxDQUFDLENBQUM7SUFDL0QsSUFBTSxnQkFBZ0IsR0FBRyx1QkFBYSxDQUFDLFlBQVksQ0FBQztRQUNsRCxXQUFXLEVBQUUsSUFBSSxtQkFBUyxDQUFDLGtCQUFrQixDQUFDO1FBQzlDLGdCQUFnQixFQUFFLElBQUksbUJBQVMsQ0FBQyxpQkFBaUIsQ0FBQztLQUNuRCxDQUFDLENBQUM7SUFDSCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUM1QixDQUFDO0FBRUQ7Ozs7O0dBS0c7QUFDSCxTQUFTLGVBQWUsQ0FBQyxJQUFVO0lBRXJCLElBQUEsSUFBSSxHQUNaLElBQUksWUFEUSxDQUNQO0lBQ1QsZ0JBQU0sQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztJQUNuQyxJQUFNLGVBQWUsR0FBRyxJQUFJLGdDQUFzQixDQUFDO1FBQ2pELElBQUksRUFBRSxFQUFFO1FBQ1IsU0FBUyxFQUFFLElBQUksbUJBQVMsQ0FBQywyQkFBZSxDQUFDO1FBQ3pDLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztLQUN4QixDQUFDLENBQUM7SUFDSCxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDM0IsQ0FBQztBQUVEOzs7OztHQUtHO0FBQ0gsU0FBUyxtQkFBbUIsQ0FBQyxJQUFjO0lBRXZDLElBQUEsS0FDRSxJQUFJLE9BRG9DLEVBQWhDLFdBQVcsaUJBQUEsRUFBRSxTQUFTLGVBQUEsRUFBRSxNQUFNLFlBQUUsQ0FDbkM7SUFDVCxnQkFBTSxDQUFDLFdBQVcsRUFBRSwyQkFBMkIsQ0FBQyxDQUFDO0lBQ2pELGdCQUFNLENBQUMsU0FBUyxFQUFFLHlCQUF5QixDQUFDLENBQUM7SUFDN0MsZ0JBQU0sQ0FBQyxNQUFNLEVBQUUseUJBQXlCLENBQUMsQ0FBQztJQUMxQyxJQUFNLG1CQUFtQixHQUFHLHVCQUFhLENBQUMsUUFBUSxDQUFDO1FBQ2pELFVBQVUsRUFBRSxJQUFJLG1CQUFTLENBQUMsV0FBVyxDQUFDO1FBQ3RDLFFBQVEsRUFBRSxJQUFJLG1CQUFTLENBQUMsU0FBUyxDQUFDO1FBQ2xDLFFBQVEsRUFBRSxJQUFJLHNCQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFO0tBQzNDLENBQUMsQ0FBQztJQUNILE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQy9CLENBQUM7QUFFRDs7Ozs7R0FLRztBQUNILFNBQVMsNkJBQTZCLENBQUMsSUFBZ0I7SUFFbkQsSUFBQSxLQUNFLElBQUksT0FEb0QsRUFBaEQsV0FBVyxpQkFBQSxFQUFFLFlBQVksa0JBQUEsRUFBRSxXQUFXLGlCQUFBLEVBQUUsTUFBTSxZQUFFLENBQ25EO0lBQ1QsZ0JBQU0sQ0FBQyxXQUFXLEVBQUUsMkJBQTJCLENBQUMsQ0FBQztJQUNqRCxnQkFBTSxDQUFDLFlBQVksRUFBRSw0QkFBNEIsQ0FBQyxDQUFDO0lBQ25ELGdCQUFNLENBQUMsV0FBVyxFQUFFLDJCQUEyQixDQUFDLENBQUM7SUFDakQsZ0JBQU0sQ0FBQyxNQUFNLEVBQUUsc0JBQXNCLENBQUMsQ0FBQztJQUN2QyxJQUFNLHVCQUF1QixHQUFHLHVCQUFhLENBQUMsa0JBQWtCLENBQUM7UUFDL0QsVUFBVSxFQUFFLElBQUksbUJBQVMsQ0FBQyxXQUFXLENBQUM7UUFDdEMsV0FBVyxFQUFFLElBQUksbUJBQVMsQ0FBQyxZQUFZLENBQUM7UUFDeEMsZ0JBQWdCLEVBQUUsSUFBSSxtQkFBUyxDQUFDLFdBQVcsQ0FBQztRQUM1QyxRQUFRLEVBQUUsSUFBSSxzQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRTtLQUMzQyxDQUFDLENBQUM7SUFDSCxPQUFPLHVCQUF1QixDQUFDLFlBQVksQ0FBQztBQUM5QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUHVibGljS2V5LCBTeXN0ZW1Qcm9ncmFtLCBUcmFuc2FjdGlvbkluc3RydWN0aW9uIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLCBNRU1PX1BST0dSQU1fUEsgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvblBhcmFtcywgTWVtbywgTm9uY2UsIFRyYW5zZmVyLCBXYWxsZXRJbml0IH0gZnJvbSAnLi9pZmFjZSc7XG5cbi8qKlxuICogQ29uc3RydWN0IFNvbGFuYSBpbnN0cnVjdGlvbnMgZnJvbSBpbnN0cnVjdGlvbnMgcGFyYW1zXG4gKlxuICogQHBhcmFtIHtJbnN0cnVjdGlvblBhcmFtc30gaW5zdHJ1Y3Rpb25Ub0J1aWxkIC0gdGhlIGRhdGEgY29udGFpbmluZyB0aGUgaW5zdHJ1Y3Rpb24gcGFyYW1zXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIHN1cHBvcnRlZCBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzb2xJbnN0cnVjdGlvbkZhY3RvcnkoaW5zdHJ1Y3Rpb25Ub0J1aWxkOiBJbnN0cnVjdGlvblBhcmFtcyk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIHN3aXRjaCAoaW5zdHJ1Y3Rpb25Ub0J1aWxkLnR5cGUpIHtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZTpcbiAgICAgIHJldHVybiBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGNhc2UgSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbzpcbiAgICAgIHJldHVybiBtZW1vSW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkKTtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyOlxuICAgICAgcmV0dXJuIHRyYW5zZmVySW5zdHJ1Y3Rpb24oaW5zdHJ1Y3Rpb25Ub0J1aWxkKTtcbiAgICBjYXNlIEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZU5vbmNlQWNjb3VudDpcbiAgICAgIHJldHVybiBjcmVhdGVOb25jZUFjY291bnRJbnN0cnVjdGlvbihpbnN0cnVjdGlvblRvQnVpbGQpO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEludmFsaWQgaW5zdHJ1Y3Rpb24gdHlwZSBvciBub3Qgc3VwcG9ydGVkYCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgQWR2YW5jZSBOb25jZSBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKlxuICogQHBhcmFtIHtOb25jZX0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBBZHZhbmNlIE5vbmNlIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiBhZHZhbmNlTm9uY2VJbnN0cnVjdGlvbihkYXRhOiBOb25jZSk6IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXSB7XG4gIGNvbnN0IHtcbiAgICBwYXJhbXM6IHsgYXV0aFdhbGxldEFkZHJlc3MsIHdhbGxldE5vbmNlQWRkcmVzcyB9LFxuICB9ID0gZGF0YTtcbiAgYXNzZXJ0KGF1dGhXYWxsZXRBZGRyZXNzLCAnTWlzc2luZyBhdXRoV2FsbGV0QWRkcmVzcyBwYXJhbScpO1xuICBhc3NlcnQod2FsbGV0Tm9uY2VBZGRyZXNzLCAnTWlzc2luZyB3YWxsZXROb25jZUFkZHJlc3MgcGFyYW0nKTtcbiAgY29uc3Qgbm9uY2VJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0ubm9uY2VBZHZhbmNlKHtcbiAgICBub25jZVB1YmtleTogbmV3IFB1YmxpY0tleSh3YWxsZXROb25jZUFkZHJlc3MpLFxuICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoYXV0aFdhbGxldEFkZHJlc3MpLFxuICB9KTtcbiAgcmV0dXJuIFtub25jZUluc3RydWN0aW9uXTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgTWVtbyBTb2xhbmEgaW5zdHJ1Y3Rpb25zXG4gKlxuICogQHBhcmFtIHtNZW1vfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIE1lbW8gU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIG1lbW9JbnN0cnVjdGlvbihkYXRhOiBNZW1vKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBtZW1vIH0sXG4gIH0gPSBkYXRhO1xuICBhc3NlcnQobWVtbywgJ01pc3NpbmcgbWVtbyBwYXJhbScpO1xuICBjb25zdCBtZW1vSW5zdHJ1Y3Rpb24gPSBuZXcgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbih7XG4gICAga2V5czogW10sXG4gICAgcHJvZ3JhbUlkOiBuZXcgUHVibGljS2V5KE1FTU9fUFJPR1JBTV9QSyksXG4gICAgZGF0YTogQnVmZmVyLmZyb20obWVtbyksXG4gIH0pO1xuICByZXR1cm4gW21lbW9JbnN0cnVjdGlvbl07XG59XG5cbi8qKlxuICogQ29uc3RydWN0IFRyYW5zZmVyIFNvbGFuYSBpbnN0cnVjdGlvbnNcbiAqXG4gKiBAcGFyYW0ge1RyYW5zZmVyfSBkYXRhIC0gdGhlIGRhdGEgdG8gYnVpbGQgdGhlIGluc3RydWN0aW9uXG4gKiBAcmV0dXJucyB7VHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdfSBBbiBhcnJheSBjb250YWluaW5nIFRyYW5zZmVyIFNvbGFuYSBpbnN0cnVjdGlvblxuICovXG5mdW5jdGlvbiB0cmFuc2Zlckluc3RydWN0aW9uKGRhdGE6IFRyYW5zZmVyKTogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdIHtcbiAgY29uc3Qge1xuICAgIHBhcmFtczogeyBmcm9tQWRkcmVzcywgdG9BZGRyZXNzLCBhbW91bnQgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KHRvQWRkcmVzcywgJ01pc3NpbmcgdG9BZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChhbW91bnQsICdNaXNzaW5nIHRvQWRkcmVzcyBwYXJhbScpO1xuICBjb25zdCB0cmFuc2Zlckluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS50cmFuc2Zlcih7XG4gICAgZnJvbVB1YmtleTogbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgdG9QdWJrZXk6IG5ldyBQdWJsaWNLZXkodG9BZGRyZXNzKSxcbiAgICBsYW1wb3J0czogbmV3IEJpZ051bWJlcihhbW91bnQpLnRvTnVtYmVyKCksXG4gIH0pO1xuICByZXR1cm4gW3RyYW5zZmVySW5zdHJ1Y3Rpb25dO1xufVxuXG4vKipcbiAqIENvbnN0cnVjdCBDcmVhdGUgYW5kIEluaXRpYWxpemUgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uc1xuICpcbiAqIEBwYXJhbSB7V2FsbGV0SW5pdH0gZGF0YSAtIHRoZSBkYXRhIHRvIGJ1aWxkIHRoZSBpbnN0cnVjdGlvblxuICogQHJldHVybnMge1RyYW5zYWN0aW9uSW5zdHJ1Y3Rpb25bXX0gQW4gYXJyYXkgY29udGFpbmluZyBDcmVhdGUgYW5kIEluaXRpYWxpemUgTm9uY2UgU29sYW5hIGluc3RydWN0aW9uXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZU5vbmNlQWNjb3VudEluc3RydWN0aW9uKGRhdGE6IFdhbGxldEluaXQpOiBUcmFuc2FjdGlvbkluc3RydWN0aW9uW10ge1xuICBjb25zdCB7XG4gICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCBub25jZUFkZHJlc3MsIGF1dGhBZGRyZXNzLCBhbW91bnQgfSxcbiAgfSA9IGRhdGE7XG4gIGFzc2VydChmcm9tQWRkcmVzcywgJ01pc3NpbmcgZnJvbUFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KG5vbmNlQWRkcmVzcywgJ01pc3Npbmcgbm9uY2VBZGRyZXNzIHBhcmFtJyk7XG4gIGFzc2VydChhdXRoQWRkcmVzcywgJ01pc3NpbmcgYXV0aEFkZHJlc3MgcGFyYW0nKTtcbiAgYXNzZXJ0KGFtb3VudCwgJ01pc3NpbmcgYW1vdW50IHBhcmFtJyk7XG4gIGNvbnN0IG5vbmNlQWNjb3VudEluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS5jcmVhdGVOb25jZUFjY291bnQoe1xuICAgIGZyb21QdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KG5vbmNlQWRkcmVzcyksXG4gICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWRkcmVzcyksXG4gICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICB9KTtcbiAgcmV0dXJuIG5vbmNlQWNjb3VudEluc3RydWN0aW9uLmluc3RydWN0aW9ucztcbn1cbiJdfQ==
@@ -1,24 +1,21 @@
1
1
  import { BaseTransaction, TransactionType } from '../baseCoin';
2
2
  import { BaseCoin as CoinConfig } from '@bitgo/statics';
3
- import { BaseKey } from '../baseCoin/iface';
4
- import { KeyPair } from '.';
5
3
  import { Transaction as SolTransaction } from '@solana/web3.js';
4
+ import { TransactionExplanation, TxData } from './iface';
5
+ import { KeyPair } from '.';
6
6
  export declare class Transaction extends BaseTransaction {
7
7
  private _solTransaction;
8
+ private _lamportsPerSignature;
8
9
  protected _type: TransactionType;
9
10
  constructor(_coinConfig: Readonly<CoinConfig>);
10
- /**
11
- * Set Solana transaction.
12
- *
13
- * @param {SolTransaction} tx
14
- */
15
- setSolTransaction(tx: SolTransaction): void;
16
- /**
17
- * Get Solana transaction.
18
- *
19
- * @return {SolTransaction} Solana Transaction
20
- */
21
- get SolTransaction(): SolTransaction;
11
+ get solTransaction(): SolTransaction;
12
+ set solTransaction(tx: SolTransaction);
13
+ /** @inheritDoc **/
14
+ get id(): string;
15
+ get lamportsPerSignature(): number | undefined;
16
+ set lamportsPerSignature(lamportsPerSignature: number | undefined);
17
+ /** @inheritDoc */
18
+ get signature(): string[];
22
19
  /**
23
20
  * Set the transaction type.
24
21
  *
@@ -26,11 +23,33 @@ export declare class Transaction extends BaseTransaction {
26
23
  */
27
24
  setTransactionType(transactionType: TransactionType): void;
28
25
  /** @inheritdoc */
29
- canSign(key: BaseKey): boolean;
30
- sign(keyPair: KeyPair | KeyPair[]): void;
26
+ canSign(): boolean;
27
+ /**
28
+ * Signs transaction.
29
+ *
30
+ * @param {KeyPair} keyPair Signer keys.
31
+ */
32
+ sign(keyPair: KeyPair[] | KeyPair): Promise<void>;
31
33
  /** @inheritdoc */
32
34
  toBroadcastFormat(): string;
35
+ /**
36
+ * Sets this transaction payload
37
+ *
38
+ * @param rawTransaction
39
+ */
40
+ fromRawTransaction(rawTransaction: string): void;
33
41
  /** @inheritdoc */
34
- toJson(): any;
42
+ toJson(): TxData;
43
+ /**
44
+ * Get the nonce from the Solana Transaction
45
+ * Throws if not set
46
+ */
47
+ private getNonce;
48
+ /**
49
+ * Load the input and output data on this transaction.
50
+ */
51
+ loadInputsAndOutputs(): void;
52
+ /** @inheritDoc */
53
+ explainTransaction(): TransactionExplanation;
35
54
  }
36
55
  //# sourceMappingURL=transaction.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;AAC5B,OAAO,EAAE,WAAW,IAAI,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEhE,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAAiB;IACxC,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;gBAErB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI;IAI3C;;;;OAIG;IACH,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,kBAAkB;IAClB,OAAO,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO;IAI9B,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,GAAG,IAAI;IAIxC,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAI3B,kBAAkB;IAClB,MAAM,IAAI,GAAG;CAGd"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../../../../src/coin/sol/transaction.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAExD,OAAO,EAAgC,WAAW,IAAI,cAAc,EAAqB,MAAM,iBAAiB,CAAC;AACjH,OAAO,EAAkB,sBAAsB,EAAE,MAAM,EAAyC,MAAM,SAAS,CAAC;AAGhH,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;AAO5B,qBAAa,WAAY,SAAQ,eAAe;IAC9C,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,qBAAqB,CAAqB;IAClD,SAAS,CAAC,KAAK,EAAE,eAAe,CAAC;gBAErB,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C,IAAI,cAAc,IAAI,cAAc,CAEnC;IAED,IAAI,cAAc,CAAC,EAAE,EAAE,cAAc,EAEpC;IAED,mBAAmB;IACnB,IAAI,EAAE,IAAI,MAAM,CAOf;IAED,IAAI,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAE7C;IAED,IAAI,oBAAoB,CAAC,oBAAoB,EAAE,MAAM,GAAG,SAAS,EAEhE;IAED,kBAAkB;IAClB,IAAI,SAAS,IAAI,MAAM,EAAE,CAUxB;IAED;;;;OAIG;IACH,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,IAAI;IAI1D,kBAAkB;IAClB,OAAO,IAAI,OAAO;IAIlB;;;;OAIG;IACG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBvD,kBAAkB;IAClB,iBAAiB,IAAI,MAAM;IAiB3B;;;;OAIG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAuBhD,kBAAkB;IAClB,MAAM,IAAI,MAAM;IA0BhB;;;OAGG;IACH,OAAO,CAAC,QAAQ;IAUhB;;OAEG;IACH,oBAAoB,IAAI,IAAI;IAmC5B,kBAAkB;IAClB,kBAAkB,IAAI,sBAAsB;CAwE7C"}