@bitgo-beta/sdk-coin-sol 2.4.3-beta.999 → 7.6.3
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.
- package/dist/src/bigint-buffer-guard.d.ts +1 -0
- package/dist/src/bigint-buffer-guard.d.ts.map +1 -0
- package/dist/src/bigint-buffer-guard.js +29 -0
- package/dist/src/config/token2022StaticConfig.d.ts +3 -0
- package/dist/src/config/token2022StaticConfig.d.ts.map +1 -0
- package/dist/src/config/token2022StaticConfig.js +50 -0
- package/dist/src/index.d.ts +1 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +2 -1
- package/dist/src/lib/constants.d.ts +35 -2
- package/dist/src/lib/constants.d.ts.map +1 -1
- package/dist/src/lib/constants.js +41 -2
- package/dist/src/lib/customInstructionBuilder.d.ts +72 -0
- package/dist/src/lib/customInstructionBuilder.d.ts.map +1 -0
- package/dist/src/lib/customInstructionBuilder.js +289 -0
- package/dist/src/lib/iface.d.ts +79 -5
- package/dist/src/lib/iface.d.ts.map +1 -1
- package/dist/src/lib/iface.js +1 -1
- package/dist/src/lib/index.d.ts +1 -0
- package/dist/src/lib/index.d.ts.map +1 -1
- package/dist/src/lib/index.js +4 -2
- package/dist/src/lib/instructionParamsFactory.d.ts.map +1 -1
- package/dist/src/lib/instructionParamsFactory.js +364 -78
- package/dist/src/lib/jitoStakePoolOperations.d.ts +113 -0
- package/dist/src/lib/jitoStakePoolOperations.d.ts.map +1 -0
- package/dist/src/lib/jitoStakePoolOperations.js +200 -0
- package/dist/src/lib/solInstructionFactory.d.ts.map +1 -1
- package/dist/src/lib/solInstructionFactory.js +266 -69
- package/dist/src/lib/stakingActivateBuilder.d.ts +16 -5
- package/dist/src/lib/stakingActivateBuilder.d.ts.map +1 -1
- package/dist/src/lib/stakingActivateBuilder.js +23 -10
- package/dist/src/lib/stakingDeactivateBuilder.d.ts +16 -5
- package/dist/src/lib/stakingDeactivateBuilder.d.ts.map +1 -1
- package/dist/src/lib/stakingDeactivateBuilder.js +43 -20
- package/dist/src/lib/token2022Config.d.ts +44 -0
- package/dist/src/lib/token2022Config.d.ts.map +1 -0
- package/dist/src/lib/token2022Config.js +27 -0
- package/dist/src/lib/tokenTransferBuilder.js +7 -7
- package/dist/src/lib/transaction.d.ts +31 -4
- package/dist/src/lib/transaction.d.ts.map +1 -1
- package/dist/src/lib/transaction.js +134 -46
- package/dist/src/lib/transactionBuilder.d.ts +18 -2
- package/dist/src/lib/transactionBuilder.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilder.js +78 -2
- package/dist/src/lib/transactionBuilderFactory.d.ts +5 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -1
- package/dist/src/lib/transactionBuilderFactory.js +10 -1
- package/dist/src/lib/utils.d.ts +34 -1
- package/dist/src/lib/utils.d.ts.map +1 -1
- package/dist/src/lib/utils.js +88 -24
- package/dist/src/sol.d.ts +36 -13
- package/dist/src/sol.d.ts.map +1 -1
- package/dist/src/sol.js +230 -38
- package/dist/test/fixtures/sol.d.ts +1152 -0
- package/dist/test/fixtures/sol.d.ts.map +1 -0
- package/dist/test/fixtures/sol.js +1433 -0
- package/dist/test/resources/sol.d.ts +238 -0
- package/dist/test/resources/sol.d.ts.map +1 -0
- package/dist/test/resources/sol.js +320 -0
- package/dist/test/unit/fixtures/solBackupKey.d.ts +5 -0
- package/dist/test/unit/fixtures/solBackupKey.d.ts.map +1 -0
- package/dist/test/unit/fixtures/solBackupKey.js +8 -0
- package/dist/test/unit/getBuilderFactory.d.ts +3 -0
- package/dist/test/unit/getBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/getBuilderFactory.js +10 -0
- package/dist/test/unit/instructionParamsFactory.d.ts +2 -0
- package/dist/test/unit/instructionParamsFactory.d.ts.map +1 -0
- package/dist/test/unit/instructionParamsFactory.js +412 -0
- package/dist/test/unit/instructionParamsFactory.staking.d.ts +2 -0
- package/dist/test/unit/instructionParamsFactory.staking.d.ts.map +1 -0
- package/dist/test/unit/instructionParamsFactory.staking.js +1059 -0
- package/dist/test/unit/keyPair.d.ts +2 -0
- package/dist/test/unit/keyPair.d.ts.map +1 -0
- package/dist/test/unit/keyPair.js +177 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts +2 -0
- package/dist/test/unit/messages/messageBuilderFactory.d.ts.map +1 -0
- package/dist/test/unit/messages/messageBuilderFactory.js +118 -0
- package/dist/test/unit/messages/simpleMessageBuilder.d.ts +2 -0
- package/dist/test/unit/messages/simpleMessageBuilder.d.ts.map +1 -0
- package/dist/test/unit/messages/simpleMessageBuilder.js +194 -0
- package/dist/test/unit/sol.d.ts +2 -0
- package/dist/test/unit/sol.d.ts.map +1 -0
- package/dist/test/unit/sol.js +3108 -0
- package/dist/test/unit/solInstructionFactory.d.ts +2 -0
- package/dist/test/unit/solInstructionFactory.d.ts.map +1 -0
- package/dist/test/unit/solInstructionFactory.js +454 -0
- package/dist/test/unit/solToken.d.ts +2 -0
- package/dist/test/unit/solToken.d.ts.map +1 -0
- package/dist/test/unit/solToken.js +31 -0
- package/dist/test/unit/transaction.d.ts +2 -0
- package/dist/test/unit/transaction.d.ts.map +1 -0
- package/dist/test/unit/transaction.js +983 -0
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/StakingWithdrawBuilder.js +202 -0
- package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/ataInitBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/ataInitBuilder.js +471 -0
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/customInstructionBuilder.js +413 -0
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingActivateBuilder.js +430 -0
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingAuthorizeBuilder.js +157 -0
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingDeactivateBuilder.js +384 -0
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingDelegateBuilder.js +224 -0
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/stakingRawMsgAuthorizeBuilder.js +259 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/tokenTransferBuilder.js +787 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transactionBuilder.js +495 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilder.js +286 -0
- package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/transferBuilderV2.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/transferBuilderV2.js +862 -0
- package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts +2 -0
- package/dist/test/unit/transactionBuilder/walletInitBuilder.d.ts.map +1 -0
- package/dist/test/unit/transactionBuilder/walletInitBuilder.js +259 -0
- package/dist/test/unit/utils.d.ts +2 -0
- package/dist/test/unit/utils.d.ts.map +1 -0
- package/dist/test/unit/utils.js +505 -0
- package/dist/test/unit/versionedTransaction.d.ts +2 -0
- package/dist/test/unit/versionedTransaction.d.ts.map +1 -0
- package/dist/test/unit/versionedTransaction.js +207 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +14 -9
- package/.eslintignore +0 -5
- package/.mocharc.yml +0 -8
- package/CHANGELOG.md +0 -1223
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"solBackupKey.d.ts","sourceRoot":"","sources":["../../../../test/unit/fixtures/solBackupKey.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY;;;CAIxB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.solBackupKey = void 0;
|
|
4
|
+
exports.solBackupKey = {
|
|
5
|
+
key: '{"iv":"BeSAuY3ngyRQlvNSRsL52g==","v":1,"iter":10000,"ks":256,"ts":64,"mode"\n:"ccm","adata":"","cipher":"aes","salt":"XACKBRej6Tc=","ct":"u3hPEWb+4pXgGt\nxXAt9EH3K8O2oP0Aptvfl/7jGs5gueSvt1ZVMaeu7JQ/1jCPPdKNrXaJ6WFdIs1JHC2AVHSYN7W\nJnWF7XbfYzNbTIPN4/uR90Nrt+zAQ64iu/zaNMZXRjwlgGS3T8jjGIFngiUKCMC0uqYNptXlV1t\nMKy/m21e+FFhHJombJJ+3ueOQRuJbJq6RF7pf9eSjE+fVXao2OlWKB4W9pVkldP0dsfK5INoQXB\ngbQfqhyd0s3Xkge67dbm8fNZ3r6GcdfpZeDcqOeGGCFGlIs35w6pqr4cFdS/iJ3JaxjGS64VzV7\nlean6ubAiPsj9RHJU4QDI19QsGhh4qLet6YP/UqH6dJL094JcC38/CAZZISN4KY5/m6vlKAJ4ii\n2TxtZSeSCxISUYVFF5JVuDzPGB8hwbTK2B/sjdr8zO/IX5GMulMSXFVO9MrcTo0vNvOTvTc6Dgv\nXXldLfoKexsZeZkj5hqi5DE6jBniiMWYqADxdvMlEVGa4QgDx/iTUC7yoZt6TU6jh13D8uPeOu9\n5ZmMtuKnxWSxuw3IuNY9rXGvKHZH8GYHLdIvK+iRttg9/vKIoyAF5q9kwhwKPvUKf8KqVgp1LSu\nM8irZnKj0IejJ5F1g2FXbGkJ/Yxw6OQtK5+7/Uje3iDTpWDubatJ5vPcGeTa1n75DVia3d7Nn4g\nVlH90HiatCcynPgn8nYOsfS2+QcTpR9LF5pvp36bpvqK6iWqgLXs/RgQQAjx4l8D05cdfhZfh0A\nZjIzQs3z6SdmjyrkrIkeH67YwWNzJ0IFNFMYYJnAuSKajrnyVV/UX7JJk4+d26DW/W4ruph8JUC\no6YFpKFfKyON2Wyh1o4UrmbP0knFX/Yu9EqpEKVJy2sWviwsyflLBbaKZ5I8dyUdC+xEg/z1m33\n7gOoQtj7DIgoHifiDJKmHu0HiSGt17Tsjo5Dyp+0F/YwJN2kINOmXmIt11XPspU0bX9g5a3r52A\nhxNv8rGFDO9l05A2pJ71oUpECm4BCLR6CHX7jiunAvwcyvYCh/SMzGLMrQ9brzHVbN8S/7LRnXT\nTth2K0AFyn6pbcxBNCPT9xFE2St7B5uKp+5eHUKlsEAUpsaw5J5KD4qmAlO6kbP7uLugYWZVNqH\npbxm7Yzs8HnnJ47XiktwgjvIHeLmJ1hKyQVQXEP80MkifOZljLtr/ILMz8R1SHg=="}',
|
|
6
|
+
commonKeychain: 'fea55c1530e851fbea92acf31bcfd3ebd749584e778c3c6e2c70d9259bc1b19e13ef17639217dfb2c79602be32eb9d98d49aa2a39d674b047bef1f3731f42031',
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29sQmFja3VwS2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vdGVzdC91bml0L2ZpeHR1cmVzL3NvbEJhY2t1cEtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLFlBQVksR0FBRztJQUMxQixHQUFHLEVBQUUsazJDQUFrMkM7SUFDdjJDLGNBQWMsRUFDWixrSUFBa0k7Q0FDckksQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjb25zdCBzb2xCYWNrdXBLZXkgPSB7XG4gIGtleTogJ3tcIml2XCI6XCJCZVNBdVkzbmd5UlFsdk5TUnNMNTJnPT1cIixcInZcIjoxLFwiaXRlclwiOjEwMDAwLFwia3NcIjoyNTYsXCJ0c1wiOjY0LFwibW9kZVwiXFxuOlwiY2NtXCIsXCJhZGF0YVwiOlwiXCIsXCJjaXBoZXJcIjpcImFlc1wiLFwic2FsdFwiOlwiWEFDS0JSZWo2VGM9XCIsXCJjdFwiOlwidTNoUEVXYis0cFhnR3RcXG54WEF0OUVIM0s4TzJvUDBBcHR2ZmwvN2pHczVndWVTdnQxWlZNYWV1N0pRLzFqQ1BQZEtOclhhSjZXRmRJczFKSEMyQVZIU1lON1dcXG5KbldGN1hiZll6TmJUSVBONC91UjkwTnJ0K3pBUTY0aXUvemFOTVpYUmp3bGdHUzNUOGpqR0lGbmdpVUtDTUMwdXFZTnB0WGxWMXRcXG5NS3kvbTIxZStGRmhISm9tYkpKKzN1ZU9RUnVKYkpxNlJGN3BmOWVTakUrZlZYYW8yT2xXS0I0VzlwVmtsZFAwZHNmSzVJTm9RWEJcXG5nYlFmcWh5ZDBzM1hrZ2U2N2RibThmTlozcjZHY2RmcFplRGNxT2VHR0NGR2xJczM1dzZwcXI0Y0ZkUy9pSjNKYXhqR1M2NFZ6VjdcXG5sZWFuNnViQWlQc2o5UkhKVTRRREkxOVFzR2hoNHFMZXQ2WVAvVXFINmRKTDA5NEpjQzM4L0NBWlpJU040S1k1L202dmxLQUo0aWlcXG4yVHh0WlNlU0N4SVNVWVZGRjVKVnVEelBHQjhod2JUSzJCL3NqZHI4ek8vSVg1R011bE1TWEZWTzlNcmNUbzB2TnZPVHZUYzZEZ3ZcXG5YWGxkTGZvS2V4c1plWmtqNWhxaTVERTZqQm5paU1XWXFBRHhkdk1sRVZHYTRRZ0R4L2lUVUM3eW9adDZUVTZqaDEzRDh1UGVPdTlcXG41Wm1NdHVLbnhXU3h1dzNJdU5ZOXJYR3ZLSFpIOEdZSExkSXZLK2lSdHRnOS92S0lveUFGNXE5a3dod0tQdlVLZjhLcVZncDFMU3VcXG5NOGlyWm5LajBJZWpKNUYxZzJGWGJHa0ovWXh3Nk9RdEs1KzcvVWplM2lEVHBXRHViYXRKNXZQY0dlVGExbjc1RFZpYTNkN05uNGdcXG5WbEg5MEhpYXRDY3luUGduOG5ZT3NmUzIrUWNUcFI5TEY1cHZwMzZicHZxSzZpV3FnTFhzL1JnUVFBang0bDhEMDVjZGZoWmZoMEFcXG5aakl6UXMzejZTZG1qeXJrcklrZUg2N1l3V056SjBJRk5GTVlZSm5BdVNLYWpybnlWVi9VWDdKSms0K2QyNkRXL1c0cnVwaDhKVUNcXG5vNllGcEtGZkt5T04yV3loMW80VXJtYlAwa25GWC9ZdTlFcXBFS1ZKeTJzV3Zpd3N5ZmxMQmJhS1o1SThkeVVkQyt4RWcvejFtMzNcXG43Z09vUXRqN0RJZ29IaWZpREpLbUh1MEhpU0d0MTdUc2pvNUR5cCswRi9Zd0pOMmtJTk9tWG1JdDExWFBzcFUwYlg5ZzVhM3I1MkFcXG5oeE52OHJHRkRPOWwwNUEycEo3MW9VcEVDbTRCQ0xSNkNIWDdqaXVuQXZ3Y3l2WUNoL1NNekdMTXJROWJyekhWYk44Uy83TFJuWFRcXG5UdGgySzBBRnluNnBiY3hCTkNQVDl4RkUyU3Q3QjV1S3ArNWVIVUtsc0VBVXBzYXc1SjVLRDRxbUFsTzZrYlA3dUx1Z1lXWlZOcUhcXG5wYnhtN1l6czhIbm5KNDdYaWt0d2dqdklIZUxtSjFoS3lRVlFYRVA4ME1raWZPWmxqTHRyL0lMTXo4UjFTSGc9PVwifScsXG4gIGNvbW1vbktleWNoYWluOlxuICAgICdmZWE1NWMxNTMwZTg1MWZiZWE5MmFjZjMxYmNmZDNlYmQ3NDk1ODRlNzc4YzNjNmUyYzcwZDkyNTliYzFiMTllMTNlZjE3NjM5MjE3ZGZiMmM3OTYwMmJlMzJlYjlkOThkNDlhYTJhMzlkNjc0YjA0N2JlZjFmMzczMWY0MjAzMScsXG59O1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"getBuilderFactory.d.ts","sourceRoot":"","sources":["../../../test/unit/getBuilderFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAGtD,eAAO,MAAM,iBAAiB,SAAU,MAAM,KAAG,yBAEhD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getBuilderFactory = void 0;
|
|
4
|
+
const src_1 = require("../../src");
|
|
5
|
+
const statics_1 = require("@bitgo-beta/statics");
|
|
6
|
+
const getBuilderFactory = (coin) => {
|
|
7
|
+
return new src_1.TransactionBuilderFactory(statics_1.coins.get(coin));
|
|
8
|
+
};
|
|
9
|
+
exports.getBuilderFactory = getBuilderFactory;
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0QnVpbGRlckZhY3RvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi90ZXN0L3VuaXQvZ2V0QnVpbGRlckZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUNBQXNEO0FBQ3RELGlEQUE0QztBQUVyQyxNQUFNLGlCQUFpQixHQUFHLENBQUMsSUFBWSxFQUE2QixFQUFFO0lBQzNFLE9BQU8sSUFBSSwrQkFBeUIsQ0FBQyxlQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEQsQ0FBQyxDQUFDO0FBRlcsUUFBQSxpQkFBaUIscUJBRTVCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSB9IGZyb20gJy4uLy4uL3NyYyc7XG5pbXBvcnQgeyBjb2lucyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuXG5leHBvcnQgY29uc3QgZ2V0QnVpbGRlckZhY3RvcnkgPSAoY29pbjogc3RyaW5nKTogVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeSA9PiB7XG4gIHJldHVybiBuZXcgVHJhbnNhY3Rpb25CdWlsZGVyRmFjdG9yeShjb2lucy5nZXQoY29pbikpO1xufTtcbiJdfQ==
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructionParamsFactory.d.ts","sourceRoot":"","sources":["../../../test/unit/instructionParamsFactory.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,412 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const should_1 = __importDefault(require("should"));
|
|
40
|
+
const testData = __importStar(require("../resources/sol"));
|
|
41
|
+
const instructionParamsFactory_1 = require("../../src/lib/instructionParamsFactory");
|
|
42
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
43
|
+
const constants_1 = require("../../src/lib/constants");
|
|
44
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
45
|
+
const bignumber_js_1 = __importDefault(require("bignumber.js"));
|
|
46
|
+
const spl_token_1 = require("@solana/spl-token");
|
|
47
|
+
describe('Instruction Parser Tests: ', function () {
|
|
48
|
+
describe('Succeed ', function () {
|
|
49
|
+
it('Wallet init tx instructions', () => {
|
|
50
|
+
const fromAddress = testData.authAccount.pub;
|
|
51
|
+
const nonceAddress = testData.nonceAccount.pub;
|
|
52
|
+
const authAddress = testData.authAccount.pub;
|
|
53
|
+
const amount = '100000';
|
|
54
|
+
const instructions = web3_js_1.SystemProgram.createNonceAccount({
|
|
55
|
+
fromPubkey: new web3_js_1.PublicKey(fromAddress),
|
|
56
|
+
noncePubkey: new web3_js_1.PublicKey(nonceAddress),
|
|
57
|
+
authorizedPubkey: new web3_js_1.PublicKey(authAddress),
|
|
58
|
+
lamports: new bignumber_js_1.default(amount).toNumber(),
|
|
59
|
+
}).instructions;
|
|
60
|
+
const createNonceAccount = {
|
|
61
|
+
type: constants_1.InstructionBuilderTypes.CreateNonceAccount,
|
|
62
|
+
params: { fromAddress, nonceAddress, authAddress, amount },
|
|
63
|
+
};
|
|
64
|
+
const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.WalletInitialization, instructions);
|
|
65
|
+
should_1.default.deepEqual(result, [createNonceAccount]);
|
|
66
|
+
});
|
|
67
|
+
it('Send tx instructions', () => {
|
|
68
|
+
const authAccount = testData.authAccount.pub;
|
|
69
|
+
const nonceAccount = testData.nonceAccount.pub;
|
|
70
|
+
const amount = '100000';
|
|
71
|
+
const memo = 'test memo';
|
|
72
|
+
// nonce
|
|
73
|
+
const nonceAdvanceParams = {
|
|
74
|
+
type: constants_1.InstructionBuilderTypes.NonceAdvance,
|
|
75
|
+
params: { walletNonceAddress: nonceAccount, authWalletAddress: authAccount },
|
|
76
|
+
};
|
|
77
|
+
const nonceAdvanceInstruction = web3_js_1.SystemProgram.nonceAdvance({
|
|
78
|
+
noncePubkey: new web3_js_1.PublicKey(nonceAccount),
|
|
79
|
+
authorizedPubkey: new web3_js_1.PublicKey(authAccount),
|
|
80
|
+
});
|
|
81
|
+
// transfer
|
|
82
|
+
const transferParams = {
|
|
83
|
+
type: constants_1.InstructionBuilderTypes.Transfer,
|
|
84
|
+
params: { fromAddress: authAccount, toAddress: nonceAccount, amount },
|
|
85
|
+
};
|
|
86
|
+
const transferInstruction = web3_js_1.SystemProgram.transfer({
|
|
87
|
+
fromPubkey: new web3_js_1.PublicKey(authAccount),
|
|
88
|
+
toPubkey: new web3_js_1.PublicKey(nonceAccount),
|
|
89
|
+
lamports: new bignumber_js_1.default(amount).toNumber(),
|
|
90
|
+
});
|
|
91
|
+
// memo
|
|
92
|
+
const memoParams = {
|
|
93
|
+
type: constants_1.InstructionBuilderTypes.Memo,
|
|
94
|
+
params: { memo },
|
|
95
|
+
};
|
|
96
|
+
const memoInstruction = new web3_js_1.TransactionInstruction({
|
|
97
|
+
keys: [],
|
|
98
|
+
programId: new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK),
|
|
99
|
+
data: Buffer.from(memo),
|
|
100
|
+
});
|
|
101
|
+
const instructions = [nonceAdvanceInstruction, transferInstruction, memoInstruction];
|
|
102
|
+
const instructionsData = [nonceAdvanceParams, transferParams, memoParams];
|
|
103
|
+
const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions);
|
|
104
|
+
should_1.default.deepEqual(result, instructionsData);
|
|
105
|
+
});
|
|
106
|
+
it('Send token tx instructions', () => {
|
|
107
|
+
const authAccount = testData.authAccount.pub;
|
|
108
|
+
const nonceAccount = testData.nonceAccount.pub;
|
|
109
|
+
const amount = testData.tokenTransfers.amount;
|
|
110
|
+
const memo = testData.tokenTransfers.memo;
|
|
111
|
+
const decimals = testData.tokenTransfers.decimals;
|
|
112
|
+
const nameUSDC = testData.tokenTransfers.nameUSDC;
|
|
113
|
+
const mintUSDC = testData.tokenTransfers.mintUSDC;
|
|
114
|
+
const owner = testData.tokenTransfers.owner;
|
|
115
|
+
const sourceUSDC = testData.tokenTransfers.sourceUSDC;
|
|
116
|
+
// nonce
|
|
117
|
+
const nonceAdvanceParams = {
|
|
118
|
+
type: constants_1.InstructionBuilderTypes.NonceAdvance,
|
|
119
|
+
params: { walletNonceAddress: nonceAccount, authWalletAddress: authAccount },
|
|
120
|
+
};
|
|
121
|
+
const nonceAdvanceInstruction = web3_js_1.SystemProgram.nonceAdvance({
|
|
122
|
+
noncePubkey: new web3_js_1.PublicKey(nonceAccount),
|
|
123
|
+
authorizedPubkey: new web3_js_1.PublicKey(authAccount),
|
|
124
|
+
});
|
|
125
|
+
// token transfer
|
|
126
|
+
const transferParams = {
|
|
127
|
+
type: constants_1.InstructionBuilderTypes.TokenTransfer,
|
|
128
|
+
params: {
|
|
129
|
+
fromAddress: owner,
|
|
130
|
+
toAddress: nonceAccount,
|
|
131
|
+
amount: amount.toString(),
|
|
132
|
+
tokenName: nameUSDC,
|
|
133
|
+
sourceAddress: sourceUSDC,
|
|
134
|
+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
|
|
135
|
+
tokenAddress: 'F4uLeXJoFz3hw13MposuwaQbMcZbCjqvEGPPeRRB1Byf',
|
|
136
|
+
decimalPlaces: 9,
|
|
137
|
+
},
|
|
138
|
+
};
|
|
139
|
+
const transferInstruction = (0, spl_token_1.createTransferCheckedInstruction)(new web3_js_1.PublicKey(sourceUSDC), new web3_js_1.PublicKey(mintUSDC), new web3_js_1.PublicKey(nonceAccount), new web3_js_1.PublicKey(owner), amount, decimals);
|
|
140
|
+
// memo
|
|
141
|
+
const memoParams = {
|
|
142
|
+
type: constants_1.InstructionBuilderTypes.Memo,
|
|
143
|
+
params: { memo },
|
|
144
|
+
};
|
|
145
|
+
const memoInstruction = new web3_js_1.TransactionInstruction({
|
|
146
|
+
keys: [],
|
|
147
|
+
programId: new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK),
|
|
148
|
+
data: Buffer.from(memo),
|
|
149
|
+
});
|
|
150
|
+
const instructions = [nonceAdvanceInstruction, transferInstruction, memoInstruction];
|
|
151
|
+
const instructionsData = [nonceAdvanceParams, transferParams, memoParams];
|
|
152
|
+
const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions);
|
|
153
|
+
should_1.default.deepEqual(result, instructionsData);
|
|
154
|
+
});
|
|
155
|
+
it('Send sol 2022 token tx instructions', () => {
|
|
156
|
+
const authAccount = testData.authAccount.pub;
|
|
157
|
+
const nonceAccount = testData.nonceAccount.pub;
|
|
158
|
+
const amount = testData.sol2022TokenTransfers.amount;
|
|
159
|
+
const memo = testData.sol2022TokenTransfers.memo;
|
|
160
|
+
const decimals = testData.sol2022TokenTransfers.decimals;
|
|
161
|
+
const name = testData.sol2022TokenTransfers.name;
|
|
162
|
+
const mint = testData.sol2022TokenTransfers.mint;
|
|
163
|
+
const owner = testData.sol2022TokenTransfers.owner;
|
|
164
|
+
const source = testData.sol2022TokenTransfers.source;
|
|
165
|
+
// nonce
|
|
166
|
+
const nonceAdvanceParams = {
|
|
167
|
+
type: constants_1.InstructionBuilderTypes.NonceAdvance,
|
|
168
|
+
params: { walletNonceAddress: nonceAccount, authWalletAddress: authAccount },
|
|
169
|
+
};
|
|
170
|
+
const nonceAdvanceInstruction = web3_js_1.SystemProgram.nonceAdvance({
|
|
171
|
+
noncePubkey: new web3_js_1.PublicKey(nonceAccount),
|
|
172
|
+
authorizedPubkey: new web3_js_1.PublicKey(authAccount),
|
|
173
|
+
});
|
|
174
|
+
// token transfer
|
|
175
|
+
const transferParams = {
|
|
176
|
+
type: constants_1.InstructionBuilderTypes.TokenTransfer,
|
|
177
|
+
params: {
|
|
178
|
+
fromAddress: owner,
|
|
179
|
+
toAddress: nonceAccount,
|
|
180
|
+
amount: amount.toString(),
|
|
181
|
+
tokenName: name,
|
|
182
|
+
sourceAddress: source,
|
|
183
|
+
tokenAddress: '5NR1bQwLWqjbkhbQ1hx72HKJybbuvwkDnUZNoAZ2VhW6',
|
|
184
|
+
programId: 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',
|
|
185
|
+
decimalPlaces: 9,
|
|
186
|
+
},
|
|
187
|
+
};
|
|
188
|
+
const transferInstruction = (0, spl_token_1.createTransferCheckedInstruction)(new web3_js_1.PublicKey(source), new web3_js_1.PublicKey(mint), new web3_js_1.PublicKey(nonceAccount), new web3_js_1.PublicKey(owner), amount, decimals, [], spl_token_1.TOKEN_2022_PROGRAM_ID);
|
|
189
|
+
// memo
|
|
190
|
+
const memoParams = {
|
|
191
|
+
type: constants_1.InstructionBuilderTypes.Memo,
|
|
192
|
+
params: { memo },
|
|
193
|
+
};
|
|
194
|
+
const memoInstruction = new web3_js_1.TransactionInstruction({
|
|
195
|
+
keys: [],
|
|
196
|
+
programId: new web3_js_1.PublicKey(constants_1.MEMO_PROGRAM_PK),
|
|
197
|
+
data: Buffer.from(memo),
|
|
198
|
+
});
|
|
199
|
+
const instructions = [nonceAdvanceInstruction, transferInstruction, memoInstruction];
|
|
200
|
+
const instructionsData = [nonceAdvanceParams, transferParams, memoParams];
|
|
201
|
+
const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions);
|
|
202
|
+
should_1.default.deepEqual(result, instructionsData);
|
|
203
|
+
});
|
|
204
|
+
it('multi ATA init tx instructions', () => {
|
|
205
|
+
const ataParams = [
|
|
206
|
+
{
|
|
207
|
+
mintAddress: testData.associatedTokenAccounts.mintId,
|
|
208
|
+
ownerAddress: testData.associatedTokenAccounts.accounts[0].pub,
|
|
209
|
+
payerAddress: testData.associatedTokenAccounts.accounts[0].pub,
|
|
210
|
+
ataAddress: testData.associatedTokenAccounts.accounts[0].ata,
|
|
211
|
+
programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
mintAddress: testData.associatedTokenAccounts.mintId,
|
|
215
|
+
ownerAddress: testData.associatedTokenAccounts.accounts[1].pub,
|
|
216
|
+
payerAddress: testData.associatedTokenAccounts.accounts[0].pub,
|
|
217
|
+
ataAddress: testData.associatedTokenAccounts.accounts[1].ata,
|
|
218
|
+
programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
|
|
219
|
+
},
|
|
220
|
+
];
|
|
221
|
+
const ataInstructions = [];
|
|
222
|
+
const createATAParams = [];
|
|
223
|
+
ataParams.forEach((param) => {
|
|
224
|
+
ataInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(new web3_js_1.PublicKey(param.payerAddress), new web3_js_1.PublicKey(param.ataAddress), new web3_js_1.PublicKey(param.ownerAddress), new web3_js_1.PublicKey(param.mintAddress)));
|
|
225
|
+
createATAParams.push({
|
|
226
|
+
type: constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount,
|
|
227
|
+
params: { ...param, tokenName: 'sol:usdc' },
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.AssociatedTokenAccountInitialization, ataInstructions);
|
|
231
|
+
should_1.default.deepEqual(result, createATAParams);
|
|
232
|
+
});
|
|
233
|
+
it('sol 2022 ATA init tx instructions', () => {
|
|
234
|
+
const ataParams = [
|
|
235
|
+
{
|
|
236
|
+
mintAddress: testData.associatedTokenAccountsForSol2022.mintId,
|
|
237
|
+
ownerAddress: testData.associatedTokenAccountsForSol2022.accounts[0].pub,
|
|
238
|
+
payerAddress: testData.associatedTokenAccountsForSol2022.accounts[0].pub,
|
|
239
|
+
ataAddress: testData.associatedTokenAccountsForSol2022.accounts[0].ata,
|
|
240
|
+
programId: 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',
|
|
241
|
+
},
|
|
242
|
+
];
|
|
243
|
+
const ataInstructions = [];
|
|
244
|
+
const createATAParams = [];
|
|
245
|
+
ataParams.forEach((param) => {
|
|
246
|
+
ataInstructions.push((0, spl_token_1.createAssociatedTokenAccountInstruction)(new web3_js_1.PublicKey(param.payerAddress), new web3_js_1.PublicKey(param.ataAddress), new web3_js_1.PublicKey(param.ownerAddress), new web3_js_1.PublicKey(param.mintAddress), spl_token_1.TOKEN_2022_PROGRAM_ID));
|
|
247
|
+
createATAParams.push({
|
|
248
|
+
type: constants_1.InstructionBuilderTypes.CreateAssociatedTokenAccount,
|
|
249
|
+
params: { ...param, tokenName: 'tsol:t22mint' },
|
|
250
|
+
});
|
|
251
|
+
});
|
|
252
|
+
const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.AssociatedTokenAccountInitialization, ataInstructions);
|
|
253
|
+
should_1.default.deepEqual(result, createATAParams);
|
|
254
|
+
});
|
|
255
|
+
it('Mint To - Standard SPL Token instruction parsing', () => {
|
|
256
|
+
const mintAddress = testData.tokenTransfers.mintUSDC;
|
|
257
|
+
const destinationAddress = testData.tokenTransfers.sourceUSDC;
|
|
258
|
+
const authorityAddress = testData.authAccount.pub;
|
|
259
|
+
const amount = '1000000';
|
|
260
|
+
const tokenName = testData.tokenTransfers.nameUSDC;
|
|
261
|
+
const mintInstruction = (0, spl_token_1.createMintToInstruction)(new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(destinationAddress), new web3_js_1.PublicKey(authorityAddress), BigInt(amount));
|
|
262
|
+
const expectedMintParams = {
|
|
263
|
+
type: constants_1.InstructionBuilderTypes.MintTo,
|
|
264
|
+
params: {
|
|
265
|
+
mintAddress,
|
|
266
|
+
destinationAddress,
|
|
267
|
+
authorityAddress,
|
|
268
|
+
amount,
|
|
269
|
+
tokenName,
|
|
270
|
+
decimalPlaces: undefined,
|
|
271
|
+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
|
|
272
|
+
},
|
|
273
|
+
};
|
|
274
|
+
const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, [mintInstruction]);
|
|
275
|
+
should_1.default.deepEqual(result, [expectedMintParams]);
|
|
276
|
+
});
|
|
277
|
+
it('Mint To - Token-2022 Program instruction parsing', () => {
|
|
278
|
+
const mintAddress = testData.sol2022TokenTransfers.mint;
|
|
279
|
+
const destinationAddress = testData.sol2022TokenTransfers.source;
|
|
280
|
+
const authorityAddress = testData.authAccount.pub;
|
|
281
|
+
const amount = '2000000';
|
|
282
|
+
const tokenName = testData.sol2022TokenTransfers.name;
|
|
283
|
+
const mintInstruction = (0, spl_token_1.createMintToInstruction)(new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(destinationAddress), new web3_js_1.PublicKey(authorityAddress), BigInt(amount), undefined, spl_token_1.TOKEN_2022_PROGRAM_ID);
|
|
284
|
+
const expectedMintParams = {
|
|
285
|
+
type: constants_1.InstructionBuilderTypes.MintTo,
|
|
286
|
+
params: {
|
|
287
|
+
mintAddress,
|
|
288
|
+
destinationAddress,
|
|
289
|
+
authorityAddress,
|
|
290
|
+
amount,
|
|
291
|
+
tokenName,
|
|
292
|
+
decimalPlaces: undefined,
|
|
293
|
+
programId: spl_token_1.TOKEN_2022_PROGRAM_ID.toString(),
|
|
294
|
+
},
|
|
295
|
+
};
|
|
296
|
+
const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, [mintInstruction]);
|
|
297
|
+
should_1.default.deepEqual(result, [expectedMintParams]);
|
|
298
|
+
});
|
|
299
|
+
it('Burn - Standard SPL Token instruction parsing', () => {
|
|
300
|
+
const mintAddress = testData.tokenTransfers.mintUSDC;
|
|
301
|
+
const accountAddress = testData.tokenTransfers.sourceUSDC;
|
|
302
|
+
const authorityAddress = testData.authAccount.pub;
|
|
303
|
+
const amount = '500000';
|
|
304
|
+
const tokenName = testData.tokenTransfers.nameUSDC;
|
|
305
|
+
const burnInstruction = (0, spl_token_1.createBurnInstruction)(new web3_js_1.PublicKey(accountAddress), new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(authorityAddress), BigInt(amount));
|
|
306
|
+
const expectedBurnParams = {
|
|
307
|
+
type: constants_1.InstructionBuilderTypes.Burn,
|
|
308
|
+
params: {
|
|
309
|
+
mintAddress,
|
|
310
|
+
accountAddress,
|
|
311
|
+
authorityAddress,
|
|
312
|
+
amount,
|
|
313
|
+
tokenName,
|
|
314
|
+
decimalPlaces: undefined,
|
|
315
|
+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
|
|
316
|
+
},
|
|
317
|
+
};
|
|
318
|
+
const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, [burnInstruction]);
|
|
319
|
+
should_1.default.deepEqual(result, [expectedBurnParams]);
|
|
320
|
+
});
|
|
321
|
+
it('Burn - Token-2022 Program instruction parsing', () => {
|
|
322
|
+
const mintAddress = testData.sol2022TokenTransfers.mint;
|
|
323
|
+
const accountAddress = testData.sol2022TokenTransfers.source;
|
|
324
|
+
const authorityAddress = testData.authAccount.pub;
|
|
325
|
+
const amount = '750000';
|
|
326
|
+
const tokenName = testData.sol2022TokenTransfers.name;
|
|
327
|
+
const burnInstruction = (0, spl_token_1.createBurnInstruction)(new web3_js_1.PublicKey(accountAddress), new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(authorityAddress), BigInt(amount), undefined, spl_token_1.TOKEN_2022_PROGRAM_ID);
|
|
328
|
+
const expectedBurnParams = {
|
|
329
|
+
type: constants_1.InstructionBuilderTypes.Burn,
|
|
330
|
+
params: {
|
|
331
|
+
mintAddress,
|
|
332
|
+
accountAddress,
|
|
333
|
+
authorityAddress,
|
|
334
|
+
amount,
|
|
335
|
+
tokenName,
|
|
336
|
+
decimalPlaces: undefined,
|
|
337
|
+
programId: spl_token_1.TOKEN_2022_PROGRAM_ID.toString(),
|
|
338
|
+
},
|
|
339
|
+
};
|
|
340
|
+
const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, [burnInstruction]);
|
|
341
|
+
should_1.default.deepEqual(result, [expectedBurnParams]);
|
|
342
|
+
});
|
|
343
|
+
it('Mixed instructions - Mint, Burn, and Transfer', () => {
|
|
344
|
+
const authAccount = testData.authAccount.pub;
|
|
345
|
+
const nonceAccount = testData.nonceAccount.pub;
|
|
346
|
+
const mintAddress = testData.tokenTransfers.mintUSDC;
|
|
347
|
+
const destinationAddress = testData.tokenTransfers.sourceUSDC;
|
|
348
|
+
const accountAddress = testData.tokenTransfers.sourceUSDC;
|
|
349
|
+
const tokenName = testData.tokenTransfers.nameUSDC;
|
|
350
|
+
// Nonce advance
|
|
351
|
+
const nonceAdvanceInstruction = web3_js_1.SystemProgram.nonceAdvance({
|
|
352
|
+
noncePubkey: new web3_js_1.PublicKey(nonceAccount),
|
|
353
|
+
authorizedPubkey: new web3_js_1.PublicKey(authAccount),
|
|
354
|
+
});
|
|
355
|
+
const nonceAdvanceParams = {
|
|
356
|
+
type: constants_1.InstructionBuilderTypes.NonceAdvance,
|
|
357
|
+
params: { walletNonceAddress: nonceAccount, authWalletAddress: authAccount },
|
|
358
|
+
};
|
|
359
|
+
// Mint instruction
|
|
360
|
+
const mintInstruction = (0, spl_token_1.createMintToInstruction)(new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(destinationAddress), new web3_js_1.PublicKey(authAccount), BigInt('1000000'));
|
|
361
|
+
const expectedMintParams = {
|
|
362
|
+
type: constants_1.InstructionBuilderTypes.MintTo,
|
|
363
|
+
params: {
|
|
364
|
+
mintAddress,
|
|
365
|
+
destinationAddress,
|
|
366
|
+
authorityAddress: authAccount,
|
|
367
|
+
amount: '1000000',
|
|
368
|
+
tokenName,
|
|
369
|
+
decimalPlaces: undefined,
|
|
370
|
+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
|
|
371
|
+
},
|
|
372
|
+
};
|
|
373
|
+
// Burn instruction
|
|
374
|
+
const burnInstruction = (0, spl_token_1.createBurnInstruction)(new web3_js_1.PublicKey(accountAddress), new web3_js_1.PublicKey(mintAddress), new web3_js_1.PublicKey(authAccount), BigInt('500000'));
|
|
375
|
+
const expectedBurnParams = {
|
|
376
|
+
type: constants_1.InstructionBuilderTypes.Burn,
|
|
377
|
+
params: {
|
|
378
|
+
mintAddress,
|
|
379
|
+
accountAddress,
|
|
380
|
+
authorityAddress: authAccount,
|
|
381
|
+
amount: '500000',
|
|
382
|
+
tokenName,
|
|
383
|
+
decimalPlaces: undefined,
|
|
384
|
+
programId: 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',
|
|
385
|
+
},
|
|
386
|
+
};
|
|
387
|
+
const instructions = [nonceAdvanceInstruction, mintInstruction, burnInstruction];
|
|
388
|
+
const expectedParams = [nonceAdvanceParams, expectedMintParams, expectedBurnParams];
|
|
389
|
+
const result = (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions);
|
|
390
|
+
should_1.default.deepEqual(result, expectedParams);
|
|
391
|
+
});
|
|
392
|
+
});
|
|
393
|
+
describe('Fail ', function () {
|
|
394
|
+
it('Invalid type', () => {
|
|
395
|
+
(0, should_1.default)(() => (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.ContractCall, [])).throwError('Invalid transaction, transaction type not supported: ' + sdk_core_1.TransactionType.ContractCall);
|
|
396
|
+
});
|
|
397
|
+
it('Invalid Instruction for Send Type', () => {
|
|
398
|
+
const fromAddress = testData.authAccount.pub;
|
|
399
|
+
const nonceAddress = testData.nonceAccount.pub;
|
|
400
|
+
const authAddress = testData.authAccount.pub;
|
|
401
|
+
const amount = '100000';
|
|
402
|
+
const instructions = web3_js_1.SystemProgram.createNonceAccount({
|
|
403
|
+
fromPubkey: new web3_js_1.PublicKey(fromAddress),
|
|
404
|
+
noncePubkey: new web3_js_1.PublicKey(nonceAddress),
|
|
405
|
+
authorizedPubkey: new web3_js_1.PublicKey(authAddress),
|
|
406
|
+
lamports: new bignumber_js_1.default(amount).toNumber(),
|
|
407
|
+
}).instructions;
|
|
408
|
+
(0, should_1.default)(() => (0, instructionParamsFactory_1.instructionParamsFactory)(sdk_core_1.TransactionType.Send, instructions)).throwError('Invalid transaction, instruction type not supported: Create');
|
|
409
|
+
});
|
|
410
|
+
});
|
|
411
|
+
});
|
|
412
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdGVzdC91bml0L2luc3RydWN0aW9uUGFyYW1zRmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLG9EQUE0QjtBQUM1QiwyREFBNkM7QUFDN0MscUZBQWtGO0FBQ2xGLG1EQUF1RDtBQUV2RCx1REFBbUY7QUFDbkYsNkNBQW1GO0FBQ25GLGdFQUFxQztBQUNyQyxpREFNMkI7QUFFM0IsUUFBUSxDQUFDLDRCQUE0QixFQUFFO0lBQ3JDLFFBQVEsQ0FBQyxVQUFVLEVBQUU7UUFDbkIsRUFBRSxDQUFDLDZCQUE2QixFQUFFLEdBQUcsRUFBRTtZQUNyQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUM3QyxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsWUFBWSxDQUFDLEdBQUcsQ0FBQztZQUMvQyxNQUFNLFdBQVcsR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQztZQUM3QyxNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUM7WUFDeEIsTUFBTSxZQUFZLEdBQUcsdUJBQWEsQ0FBQyxrQkFBa0IsQ0FBQztnQkFDcEQsVUFBVSxFQUFFLElBQUksbUJBQVMsQ0FBQyxXQUFXLENBQUM7Z0JBQ3RDLFdBQVcsRUFBRSxJQUFJLG1CQUFTLENBQUMsWUFBWSxDQUFDO2dCQUN4QyxnQkFBZ0IsRUFBRSxJQUFJLG1CQUFTLENBQUMsV0FBVyxDQUFDO2dCQUM1QyxRQUFRLEVBQUUsSUFBSSxzQkFBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRTthQUMzQyxDQUFDLENBQUMsWUFBWSxDQUFDO1lBRWhCLE1BQU0sa0JBQWtCLEdBQXNCO2dCQUM1QyxJQUFJLEVBQUUsbUNBQXVCLENBQUMsa0JBQWtCO2dCQUNoRCxNQUFNLEVB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O0FBQ0wsQ0FBQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hvdWxkIGZyb20gJ3Nob3VsZCc7XG5pbXBvcnQgKiBhcyB0ZXN0RGF0YSBmcm9tICcuLi9yZXNvdXJjZXMvc29sJztcbmltcG9ydCB7IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeSB9IGZyb20gJy4uLy4uL3NyYy9saWIvaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5JztcbmltcG9ydCB7IFRyYW5zYWN0aW9uVHlwZSB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IEluc3RydWN0aW9uUGFyYW1zIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9pZmFjZSc7XG5pbXBvcnQgeyBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcywgTUVNT19QUk9HUkFNX1BLIH0gZnJvbSAnLi4vLi4vc3JjL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgUHVibGljS2V5LCBTeXN0ZW1Qcm9ncmFtLCBUcmFuc2FjdGlvbkluc3RydWN0aW9uIH0gZnJvbSAnQHNvbGFuYS93ZWIzLmpzJztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbixcbiAgY3JlYXRlVHJhbnNmZXJDaGVja2VkSW5zdHJ1Y3Rpb24sXG4gIGNyZWF0ZU1pbnRUb0luc3RydWN0aW9uLFxuICBjcmVhdGVCdXJuSW5zdHJ1Y3Rpb24sXG4gIFRPS0VOXzIwMjJfUFJPR1JBTV9JRCxcbn0gZnJvbSAnQHNvbGFuYS9zcGwtdG9rZW4nO1xuXG5kZXNjcmliZSgnSW5zdHJ1Y3Rpb24gUGFyc2VyIFRlc3RzOiAnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdTdWNjZWVkICcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnV2FsbGV0IGluaXQgdHggaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgZnJvbUFkZHJlc3MgPSB0ZXN0RGF0YS5hdXRoQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBub25jZUFkZHJlc3MgPSB0ZXN0RGF0YS5ub25jZUFjY291bnQucHViO1xuICAgICAgY29uc3QgYXV0aEFkZHJlc3MgPSB0ZXN0RGF0YS5hdXRoQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMTAwMDAwJztcbiAgICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IFN5c3RlbVByb2dyYW0uY3JlYXRlTm9uY2VBY2NvdW50KHtcbiAgICAgICAgZnJvbVB1YmtleTogbmV3IFB1YmxpY0tleShmcm9tQWRkcmVzcyksXG4gICAgICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KG5vbmNlQWRkcmVzcyksXG4gICAgICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoYXV0aEFkZHJlc3MpLFxuICAgICAgICBsYW1wb3J0czogbmV3IEJpZ051bWJlcihhbW91bnQpLnRvTnVtYmVyKCksXG4gICAgICB9KS5pbnN0cnVjdGlvbnM7XG5cbiAgICAgIGNvbnN0IGNyZWF0ZU5vbmNlQWNjb3VudDogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLkNyZWF0ZU5vbmNlQWNjb3VudCxcbiAgICAgICAgcGFyYW1zOiB7IGZyb21BZGRyZXNzLCBub25jZUFkZHJlc3MsIGF1dGhBZGRyZXNzLCBhbW91bnQgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShUcmFuc2FjdGlvblR5cGUuV2FsbGV0SW5pdGlhbGl6YXRpb24sIGluc3RydWN0aW9ucyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgW2NyZWF0ZU5vbmNlQWNjb3VudF0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ1NlbmQgdHggaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgYXV0aEFjY291bnQgPSB0ZXN0RGF0YS5hdXRoQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBub25jZUFjY291bnQgPSB0ZXN0RGF0YS5ub25jZUFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMCc7XG4gICAgICBjb25zdCBtZW1vID0gJ3Rlc3QgbWVtbyc7XG5cbiAgICAgIC8vIG5vbmNlXG4gICAgICBjb25zdCBub25jZUFkdmFuY2VQYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ob25jZUFkdmFuY2UsXG4gICAgICAgIHBhcmFtczogeyB3YWxsZXROb25jZUFkZHJlc3M6IG5vbmNlQWNjb3VudCwgYXV0aFdhbGxldEFkZHJlc3M6IGF1dGhBY2NvdW50IH0sXG4gICAgICB9O1xuICAgICAgY29uc3Qgbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24gPSBTeXN0ZW1Qcm9ncmFtLm5vbmNlQWR2YW5jZSh7XG4gICAgICAgIG5vbmNlUHVia2V5OiBuZXcgUHVibGljS2V5KG5vbmNlQWNjb3VudCksXG4gICAgICAgIGF1dGhvcml6ZWRQdWJrZXk6IG5ldyBQdWJsaWNLZXkoYXV0aEFjY291bnQpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIHRyYW5zZmVyXG4gICAgICBjb25zdCB0cmFuc2ZlclBhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLlRyYW5zZmVyLFxuICAgICAgICBwYXJhbXM6IHsgZnJvbUFkZHJlc3M6IGF1dGhBY2NvdW50LCB0b0FkZHJlc3M6IG5vbmNlQWNjb3VudCwgYW1vdW50IH0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHJhbnNmZXJJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0udHJhbnNmZXIoe1xuICAgICAgICBmcm9tUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhBY2NvdW50KSxcbiAgICAgICAgdG9QdWJrZXk6IG5ldyBQdWJsaWNLZXkobm9uY2VBY2NvdW50KSxcbiAgICAgICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIG1lbW9cbiAgICAgIGNvbnN0IG1lbW9QYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5NZW1vLFxuICAgICAgICBwYXJhbXM6IHsgbWVtbyB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgbWVtb0luc3RydWN0aW9uID0gbmV3IFRyYW5zYWN0aW9uSW5zdHJ1Y3Rpb24oe1xuICAgICAgICBrZXlzOiBbXSxcbiAgICAgICAgcHJvZ3JhbUlkOiBuZXcgUHVibGljS2V5KE1FTU9fUFJPR1JBTV9QSyksXG4gICAgICAgIGRhdGE6IEJ1ZmZlci5mcm9tKG1lbW8pLFxuICAgICAgfSk7XG5cbiAgICAgIGNvbnN0IGluc3RydWN0aW9ucyA9IFtub25jZUFkdmFuY2VJbnN0cnVjdGlvbiwgdHJhbnNmZXJJbnN0cnVjdGlvbiwgbWVtb0luc3RydWN0aW9uXTtcbiAgICAgIGNvbnN0IGluc3RydWN0aW9uc0RhdGEgPSBbbm9uY2VBZHZhbmNlUGFyYW1zLCB0cmFuc2ZlclBhcmFtcywgbWVtb1BhcmFtc107XG4gICAgICBjb25zdCByZXN1bHQgPSBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkoVHJhbnNhY3Rpb25UeXBlLlNlbmQsIGluc3RydWN0aW9ucyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgaW5zdHJ1Y3Rpb25zRGF0YSk7XG4gICAgfSk7XG5cbiAgICBpdCgnU2VuZCB0b2tlbiB0eCBpbnN0cnVjdGlvbnMnLCAoKSA9PiB7XG4gICAgICBjb25zdCBhdXRoQWNjb3VudCA9IHRlc3REYXRhLmF1dGhBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IG5vbmNlQWNjb3VudCA9IHRlc3REYXRhLm5vbmNlQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5hbW91bnQ7XG4gICAgICBjb25zdCBtZW1vID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubWVtbztcbiAgICAgIGNvbnN0IGRlY2ltYWxzID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMuZGVjaW1hbHM7XG4gICAgICBjb25zdCBuYW1lVVNEQyA9IHRlc3REYXRhLnRva2VuVHJhbnNmZXJzLm5hbWVVU0RDO1xuICAgICAgY29uc3QgbWludFVTREMgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5taW50VVNEQztcbiAgICAgIGNvbnN0IG93bmVyID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMub3duZXI7XG4gICAgICBjb25zdCBzb3VyY2VVU0RDID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMuc291cmNlVVNEQztcblxuICAgICAgLy8gbm9uY2VcbiAgICAgIGNvbnN0IG5vbmNlQWR2YW5jZVBhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZSxcbiAgICAgICAgcGFyYW1zOiB7IHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LCBhdXRoV2FsbGV0QWRkcmVzczogYXV0aEFjY291bnQgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBub25jZUFkdmFuY2VJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0ubm9uY2VBZHZhbmNlKHtcbiAgICAgICAgbm9uY2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkobm9uY2VBY2NvdW50KSxcbiAgICAgICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudCksXG4gICAgICB9KTtcblxuICAgICAgLy8gdG9rZW4gdHJhbnNmZXJcbiAgICAgIGNvbnN0IHRyYW5zZmVyUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ub2tlblRyYW5zZmVyLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBmcm9tQWRkcmVzczogb3duZXIsXG4gICAgICAgICAgdG9BZGRyZXNzOiBub25jZUFjY291bnQsXG4gICAgICAgICAgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICB0b2tlbk5hbWU6IG5hbWVVU0RDLFxuICAgICAgICAgIHNvdXJjZUFkZHJlc3M6IHNvdXJjZVVTREMsXG4gICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgICAgdG9rZW5BZGRyZXNzOiAnRjR1TGVYSm9GejNodzEzTXBvc3V3YVFiTWNaYkNqcXZFR1BQZVJSQjFCeWYnLFxuICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IDksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgICAgY29uc3QgdHJhbnNmZXJJbnN0cnVjdGlvbiA9IGNyZWF0ZVRyYW5zZmVyQ2hlY2tlZEluc3RydWN0aW9uKFxuICAgICAgICBuZXcgUHVibGljS2V5KHNvdXJjZVVTREMpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG1pbnRVU0RDKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShub25jZUFjY291bnQpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG93bmVyKSxcbiAgICAgICAgYW1vdW50LFxuICAgICAgICBkZWNpbWFsc1xuICAgICAgKTtcblxuICAgICAgLy8gbWVtb1xuICAgICAgY29uc3QgbWVtb1BhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1lbW8sXG4gICAgICAgIHBhcmFtczogeyBtZW1vIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBtZW1vSW5zdHJ1Y3Rpb24gPSBuZXcgVHJhbnNhY3Rpb25JbnN0cnVjdGlvbih7XG4gICAgICAgIGtleXM6IFtdLFxuICAgICAgICBwcm9ncmFtSWQ6IG5ldyBQdWJsaWNLZXkoTUVNT19QUk9HUkFNX1BLKSxcbiAgICAgICAgZGF0YTogQnVmZmVyLmZyb20obWVtbyksXG4gICAgICB9KTtcblxuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zID0gW25vbmNlQWR2YW5jZUluc3RydWN0aW9uLCB0cmFuc2Zlckluc3RydWN0aW9uLCBtZW1vSW5zdHJ1Y3Rpb25dO1xuICAgICAgY29uc3QgaW5zdHJ1Y3Rpb25zRGF0YSA9IFtub25jZUFkdmFuY2VQYXJhbXMsIHRyYW5zZmVyUGFyYW1zLCBtZW1vUGFyYW1zXTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShUcmFuc2FjdGlvblR5cGUuU2VuZCwgaW5zdHJ1Y3Rpb25zKTtcbiAgICAgIHNob3VsZC5kZWVwRXF1YWwocmVzdWx0LCBpbnN0cnVjdGlvbnNEYXRhKTtcbiAgICB9KTtcblxuICAgIGl0KCdTZW5kIHNvbCAyMDIyIHRva2VuIHR4IGluc3RydWN0aW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IGF1dGhBY2NvdW50ID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50ID0gdGVzdERhdGEubm9uY2VBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IGFtb3VudCA9IHRlc3REYXRhLnNvbDIwMjJUb2tlblRyYW5zZmVycy5hbW91bnQ7XG4gICAgICBjb25zdCBtZW1vID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLm1lbW87XG4gICAgICBjb25zdCBkZWNpbWFscyA9IHRlc3REYXRhLnNvbDIwMjJUb2tlblRyYW5zZmVycy5kZWNpbWFscztcbiAgICAgIGNvbnN0IG5hbWUgPSB0ZXN0RGF0YS5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMubmFtZTtcbiAgICAgIGNvbnN0IG1pbnQgPSB0ZXN0RGF0YS5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMubWludDtcbiAgICAgIGNvbnN0IG93bmVyID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLm93bmVyO1xuICAgICAgY29uc3Qgc291cmNlID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLnNvdXJjZTtcblxuICAgICAgLy8gbm9uY2VcbiAgICAgIGNvbnN0IG5vbmNlQWR2YW5jZVBhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk5vbmNlQWR2YW5jZSxcbiAgICAgICAgcGFyYW1zOiB7IHdhbGxldE5vbmNlQWRkcmVzczogbm9uY2VBY2NvdW50LCBhdXRoV2FsbGV0QWRkcmVzczogYXV0aEFjY291bnQgfSxcbiAgICAgIH07XG4gICAgICBjb25zdCBub25jZUFkdmFuY2VJbnN0cnVjdGlvbiA9IFN5c3RlbVByb2dyYW0ubm9uY2VBZHZhbmNlKHtcbiAgICAgICAgbm9uY2VQdWJrZXk6IG5ldyBQdWJsaWNLZXkobm9uY2VBY2NvdW50KSxcbiAgICAgICAgYXV0aG9yaXplZFB1YmtleTogbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudCksXG4gICAgICB9KTtcblxuICAgICAgLy8gdG9rZW4gdHJhbnNmZXJcbiAgICAgIGNvbnN0IHRyYW5zZmVyUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5Ub2tlblRyYW5zZmVyLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBmcm9tQWRkcmVzczogb3duZXIsXG4gICAgICAgICAgdG9BZGRyZXNzOiBub25jZUFjY291bnQsXG4gICAgICAgICAgYW1vdW50OiBhbW91bnQudG9TdHJpbmcoKSxcbiAgICAgICAgICB0b2tlbk5hbWU6IG5hbWUsXG4gICAgICAgICAgc291cmNlQWRkcmVzczogc291cmNlLFxuICAgICAgICAgIHRva2VuQWRkcmVzczogJzVOUjFiUXdMV3FqYmtoYlExaHg3MkhLSnliYnV2d2tEblVaTm9BWjJWaFc2JyxcbiAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbnpRZEJOYkxxUDVWRWhka0FTNkVQRkxDMVBIbkJxQ1hFcFB4dUViJyxcbiAgICAgICAgICBkZWNpbWFsUGxhY2VzOiA5LFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICAgIGNvbnN0IHRyYW5zZmVySW5zdHJ1Y3Rpb24gPSBjcmVhdGVUcmFuc2ZlckNoZWNrZWRJbnN0cnVjdGlvbihcbiAgICAgICAgbmV3IFB1YmxpY0tleShzb3VyY2UpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG1pbnQpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG5vbmNlQWNjb3VudCksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkob3duZXIpLFxuICAgICAgICBhbW91bnQsXG4gICAgICAgIGRlY2ltYWxzLFxuICAgICAgICBbXSxcbiAgICAgICAgVE9LRU5fMjAyMl9QUk9HUkFNX0lEXG4gICAgICApO1xuXG4gICAgICAvLyBtZW1vXG4gICAgICBjb25zdCBtZW1vUGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWVtbyxcbiAgICAgICAgcGFyYW1zOiB7IG1lbW8gfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IG1lbW9JbnN0cnVjdGlvbiA9IG5ldyBUcmFuc2FjdGlvbkluc3RydWN0aW9uKHtcbiAgICAgICAga2V5czogW10sXG4gICAgICAgIHByb2dyYW1JZDogbmV3IFB1YmxpY0tleShNRU1PX1BST0dSQU1fUEspLFxuICAgICAgICBkYXRhOiBCdWZmZXIuZnJvbShtZW1vKSxcbiAgICAgIH0pO1xuXG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBbbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24sIHRyYW5zZmVySW5zdHJ1Y3Rpb24sIG1lbW9JbnN0cnVjdGlvbl07XG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnNEYXRhID0gW25vbmNlQWR2YW5jZVBhcmFtcywgdHJhbnNmZXJQYXJhbXMsIG1lbW9QYXJhbXNdO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBpbnN0cnVjdGlvbnMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZXN1bHQsIGluc3RydWN0aW9uc0RhdGEpO1xuICAgIH0pO1xuXG4gICAgaXQoJ211bHRpIEFUQSBpbml0IHR4IGluc3RydWN0aW9ucycsICgpID0+IHtcbiAgICAgIGNvbnN0IGF0YVBhcmFtcyA9IFtcbiAgICAgICAge1xuICAgICAgICAgIG1pbnRBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5taW50SWQsXG4gICAgICAgICAgb3duZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1swXS5wdWIsXG4gICAgICAgICAgcGF5ZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1swXS5wdWIsXG4gICAgICAgICAgYXRhQWRkcmVzczogdGVzdERhdGEuYXNzb2NpYXRlZFRva2VuQWNjb3VudHMuYWNjb3VudHNbMF0uYXRhLFxuICAgICAgICAgIHByb2dyYW1JZDogJ0FUb2tlbkdQdmJkR1Z4cjFiMmh2WmJzaXFXNXhXSDI1ZWZUTnNMSkE4a25MJyxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG1pbnRBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5taW50SWQsXG4gICAgICAgICAgb3duZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1sxXS5wdWIsXG4gICAgICAgICAgcGF5ZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50cy5hY2NvdW50c1swXS5wdWIsXG4gICAgICAgICAgYXRhQWRkcmVzczogdGVzdERhdGEuYXNzb2NpYXRlZFRva2VuQWNjb3VudHMuYWNjb3VudHNbMV0uYXRhLFxuICAgICAgICAgIHByb2dyYW1JZDogJ0FUb2tlbkdQdmJkR1Z4cjFiMmh2WmJzaXFXNXhXSDI1ZWZUTnNMSkE4a25MJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IGF0YUluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdID0gW107XG4gICAgICBjb25zdCBjcmVhdGVBVEFQYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcblxuICAgICAgYXRhUGFyYW1zLmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICAgIGF0YUluc3RydWN0aW9ucy5wdXNoKFxuICAgICAgICAgIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbihcbiAgICAgICAgICAgIG5ldyBQdWJsaWNLZXkocGFyYW0ucGF5ZXJBZGRyZXNzKSxcbiAgICAgICAgICAgIG5ldyBQdWJsaWNLZXkocGFyYW0uYXRhQWRkcmVzcyksXG4gICAgICAgICAgICBuZXcgUHVibGljS2V5KHBhcmFtLm93bmVyQWRkcmVzcyksXG4gICAgICAgICAgICBuZXcgUHVibGljS2V5KHBhcmFtLm1pbnRBZGRyZXNzKVxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjcmVhdGVBVEFQYXJhbXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgICAgICAgICBwYXJhbXM6IHsgLi4ucGFyYW0sIHRva2VuTmFtZTogJ3NvbDp1c2RjJyB9LFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5Bc3NvY2lhdGVkVG9rZW5BY2NvdW50SW5pdGlhbGl6YXRpb24sIGF0YUluc3RydWN0aW9ucyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgY3JlYXRlQVRBUGFyYW1zKTtcbiAgICB9KTtcbiAgICBpdCgnc29sIDIwMjIgQVRBIGluaXQgdHggaW5zdHJ1Y3Rpb25zJywgKCkgPT4ge1xuICAgICAgY29uc3QgYXRhUGFyYW1zID0gW1xuICAgICAgICB7XG4gICAgICAgICAgbWludEFkZHJlc3M6IHRlc3REYXRhLmFzc29jaWF0ZWRUb2tlbkFjY291bnRzRm9yU29sMjAyMi5taW50SWQsXG4gICAgICAgICAgb3duZXJBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50c0ZvclNvbDIwMjIuYWNjb3VudHNbMF0ucHViLFxuICAgICAgICAgIHBheWVyQWRkcmVzczogdGVzdERhdGEuYXNzb2NpYXRlZFRva2VuQWNjb3VudHNGb3JTb2wyMDIyLmFjY291bnRzWzBdLnB1YixcbiAgICAgICAgICBhdGFBZGRyZXNzOiB0ZXN0RGF0YS5hc3NvY2lhdGVkVG9rZW5BY2NvdW50c0ZvclNvbDIwMjIuYWNjb3VudHNbMF0uYXRhLFxuICAgICAgICAgIHByb2dyYW1JZDogJ0FUb2tlbkdQdmJkR1Z4cjFiMmh2WmJzaXFXNXhXSDI1ZWZUTnNMSkE4a25MJyxcbiAgICAgICAgfSxcbiAgICAgIF07XG5cbiAgICAgIGNvbnN0IGF0YUluc3RydWN0aW9uczogVHJhbnNhY3Rpb25JbnN0cnVjdGlvbltdID0gW107XG4gICAgICBjb25zdCBjcmVhdGVBVEFQYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zW10gPSBbXTtcblxuICAgICAgYXRhUGFyYW1zLmZvckVhY2goKHBhcmFtKSA9PiB7XG4gICAgICAgIGF0YUluc3RydWN0aW9ucy5wdXNoKFxuICAgICAgICAgIGNyZWF0ZUFzc29jaWF0ZWRUb2tlbkFjY291bnRJbnN0cnVjdGlvbihcbiAgICAgICAgICAgIG5ldyBQdWJsaWNLZXkocGFyYW0ucGF5ZXJBZGRyZXNzKSxcbiAgICAgICAgICAgIG5ldyBQdWJsaWNLZXkocGFyYW0uYXRhQWRkcmVzcyksXG4gICAgICAgICAgICBuZXcgUHVibGljS2V5KHBhcmFtLm93bmVyQWRkcmVzcyksXG4gICAgICAgICAgICBuZXcgUHVibGljS2V5KHBhcmFtLm1pbnRBZGRyZXNzKSxcbiAgICAgICAgICAgIFRPS0VOXzIwMjJfUFJPR1JBTV9JRFxuICAgICAgICAgIClcbiAgICAgICAgKTtcblxuICAgICAgICBjcmVhdGVBVEFQYXJhbXMucHVzaCh7XG4gICAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQ3JlYXRlQXNzb2NpYXRlZFRva2VuQWNjb3VudCxcbiAgICAgICAgICBwYXJhbXM6IHsgLi4ucGFyYW0sIHRva2VuTmFtZTogJ3Rzb2w6dDIybWludCcgfSxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShUcmFuc2FjdGlvblR5cGUuQXNzb2NpYXRlZFRva2VuQWNjb3VudEluaXRpYWxpemF0aW9uLCBhdGFJbnN0cnVjdGlvbnMpO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZXN1bHQsIGNyZWF0ZUFUQVBhcmFtcyk7XG4gICAgfSk7XG5cbiAgICBpdCgnTWludCBUbyAtIFN0YW5kYXJkIFNQTCBUb2tlbiBpbnN0cnVjdGlvbiBwYXJzaW5nJywgKCkgPT4ge1xuICAgICAgY29uc3QgbWludEFkZHJlc3MgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5taW50VVNEQztcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uQWRkcmVzcyA9IHRlc3REYXRhLnRva2VuVHJhbnNmZXJzLnNvdXJjZVVTREM7XG4gICAgICBjb25zdCBhdXRob3JpdHlBZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMDAnO1xuICAgICAgY29uc3QgdG9rZW5OYW1lID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubmFtZVVTREM7XG5cbiAgICAgIGNvbnN0IG1pbnRJbnN0cnVjdGlvbiA9IGNyZWF0ZU1pbnRUb0luc3RydWN0aW9uKFxuICAgICAgICBuZXcgUHVibGljS2V5KG1pbnRBZGRyZXNzKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShkZXN0aW5hdGlvbkFkZHJlc3MpLFxuICAgICAgICBuZXcgUHVibGljS2V5KGF1dGhvcml0eUFkZHJlc3MpLFxuICAgICAgICBCaWdJbnQoYW1vdW50KVxuICAgICAgKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRNaW50UGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWludFRvLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgICBkZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgICAgYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgdG9rZW5OYW1lLFxuICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwcm9ncmFtSWQ6ICdUb2tlbmtlZ1FmZVp5aU53QUpiTmJHS1BGWENXdUJ2ZjlTczYyM1ZRNURBJyxcbiAgICAgICAgfSxcbiAgICAgIH07XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGluc3RydWN0aW9uUGFyYW1zRmFjdG9yeShUcmFuc2FjdGlvblR5cGUuU2VuZCwgW21pbnRJbnN0cnVjdGlvbl0pO1xuICAgICAgc2hvdWxkLmRlZXBFcXVhbChyZXN1bHQsIFtleHBlY3RlZE1pbnRQYXJhbXNdKTtcbiAgICB9KTtcblxuICAgIGl0KCdNaW50IFRvIC0gVG9rZW4tMjAyMiBQcm9ncmFtIGluc3RydWN0aW9uIHBhcnNpbmcnLCAoKSA9PiB7XG4gICAgICBjb25zdCBtaW50QWRkcmVzcyA9IHRlc3REYXRhLnNvbDIwMjJUb2tlblRyYW5zZmVycy5taW50O1xuICAgICAgY29uc3QgZGVzdGluYXRpb25BZGRyZXNzID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLnNvdXJjZTtcbiAgICAgIGNvbnN0IGF1dGhvcml0eUFkZHJlc3MgPSB0ZXN0RGF0YS5hdXRoQWNjb3VudC5wdWI7XG4gICAgICBjb25zdCBhbW91bnQgPSAnMjAwMDAwMCc7XG4gICAgICBjb25zdCB0b2tlbk5hbWUgPSB0ZXN0RGF0YS5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMubmFtZTtcblxuICAgICAgY29uc3QgbWludEluc3RydWN0aW9uID0gY3JlYXRlTWludFRvSW5zdHJ1Y3Rpb24oXG4gICAgICAgIG5ldyBQdWJsaWNLZXkobWludEFkZHJlc3MpLFxuICAgICAgICBuZXcgUHVibGljS2V5KGRlc3RpbmF0aW9uQWRkcmVzcyksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYXV0aG9yaXR5QWRkcmVzcyksXG4gICAgICAgIEJpZ0ludChhbW91bnQpLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIFRPS0VOXzIwMjJfUFJPR1JBTV9JRFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRNaW50UGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTWludFRvLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgICBkZXN0aW5hdGlvbkFkZHJlc3MsXG4gICAgICAgICAgYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgdG9rZW5OYW1lLFxuICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwcm9ncmFtSWQ6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBbbWludEluc3RydWN0aW9uXSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgW2V4cGVjdGVkTWludFBhcmFtc10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ0J1cm4gLSBTdGFuZGFyZCBTUEwgVG9rZW4gaW5zdHJ1Y3Rpb24gcGFyc2luZycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubWludFVTREM7XG4gICAgICBjb25zdCBhY2NvdW50QWRkcmVzcyA9IHRlc3REYXRhLnRva2VuVHJhbnNmZXJzLnNvdXJjZVVTREM7XG4gICAgICBjb25zdCBhdXRob3JpdHlBZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzUwMDAwMCc7XG4gICAgICBjb25zdCB0b2tlbk5hbWUgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5uYW1lVVNEQztcblxuICAgICAgY29uc3QgYnVybkluc3RydWN0aW9uID0gY3JlYXRlQnVybkluc3RydWN0aW9uKFxuICAgICAgICBuZXcgUHVibGljS2V5KGFjY291bnRBZGRyZXNzKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShtaW50QWRkcmVzcyksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYXV0aG9yaXR5QWRkcmVzcyksXG4gICAgICAgIEJpZ0ludChhbW91bnQpXG4gICAgICApO1xuXG4gICAgICBjb25zdCBleHBlY3RlZEJ1cm5QYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5CdXJuLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgICBhY2NvdW50QWRkcmVzcyxcbiAgICAgICAgICBhdXRob3JpdHlBZGRyZXNzLFxuICAgICAgICAgIGFtb3VudCxcbiAgICAgICAgICB0b2tlbk5hbWUsXG4gICAgICAgICAgZGVjaW1hbFBsYWNlczogdW5kZWZpbmVkLFxuICAgICAgICAgIHByb2dyYW1JZDogJ1Rva2Vua2VnUWZlWnlpTndBSmJOYkdLUEZYQ1d1QnZmOVNzNjIzVlE1REEnLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBbYnVybkluc3RydWN0aW9uXSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgW2V4cGVjdGVkQnVyblBhcmFtc10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ0J1cm4gLSBUb2tlbi0yMDIyIFByb2dyYW0gaW5zdHJ1Y3Rpb24gcGFyc2luZycsICgpID0+IHtcbiAgICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gdGVzdERhdGEuc29sMjAyMlRva2VuVHJhbnNmZXJzLm1pbnQ7XG4gICAgICBjb25zdCBhY2NvdW50QWRkcmVzcyA9IHRlc3REYXRhLnNvbDIwMjJUb2tlblRyYW5zZmVycy5zb3VyY2U7XG4gICAgICBjb25zdCBhdXRob3JpdHlBZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzc1MDAwMCc7XG4gICAgICBjb25zdCB0b2tlbk5hbWUgPSB0ZXN0RGF0YS5zb2wyMDIyVG9rZW5UcmFuc2ZlcnMubmFtZTtcblxuICAgICAgY29uc3QgYnVybkluc3RydWN0aW9uID0gY3JlYXRlQnVybkluc3RydWN0aW9uKFxuICAgICAgICBuZXcgUHVibGljS2V5KGFjY291bnRBZGRyZXNzKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShtaW50QWRkcmVzcyksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYXV0aG9yaXR5QWRkcmVzcyksXG4gICAgICAgIEJpZ0ludChhbW91bnQpLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIFRPS0VOXzIwMjJfUFJPR1JBTV9JRFxuICAgICAgKTtcblxuICAgICAgY29uc3QgZXhwZWN0ZWRCdXJuUGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuQnVybixcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgbWludEFkZHJlc3MsXG4gICAgICAgICAgYWNjb3VudEFkZHJlc3MsXG4gICAgICAgICAgYXV0aG9yaXR5QWRkcmVzcyxcbiAgICAgICAgICBhbW91bnQsXG4gICAgICAgICAgdG9rZW5OYW1lLFxuICAgICAgICAgIGRlY2ltYWxQbGFjZXM6IHVuZGVmaW5lZCxcbiAgICAgICAgICBwcm9ncmFtSWQ6IFRPS0VOXzIwMjJfUFJPR1JBTV9JRC50b1N0cmluZygpLFxuICAgICAgICB9LFxuICAgICAgfTtcblxuICAgICAgY29uc3QgcmVzdWx0ID0gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBbYnVybkluc3RydWN0aW9uXSk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgW2V4cGVjdGVkQnVyblBhcmFtc10pO1xuICAgIH0pO1xuXG4gICAgaXQoJ01peGVkIGluc3RydWN0aW9ucyAtIE1pbnQsIEJ1cm4sIGFuZCBUcmFuc2ZlcicsICgpID0+IHtcbiAgICAgIGNvbnN0IGF1dGhBY2NvdW50ID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3Qgbm9uY2VBY2NvdW50ID0gdGVzdERhdGEubm9uY2VBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IG1pbnRBZGRyZXNzID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubWludFVTREM7XG4gICAgICBjb25zdCBkZXN0aW5hdGlvbkFkZHJlc3MgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5zb3VyY2VVU0RDO1xuICAgICAgY29uc3QgYWNjb3VudEFkZHJlc3MgPSB0ZXN0RGF0YS50b2tlblRyYW5zZmVycy5zb3VyY2VVU0RDO1xuICAgICAgY29uc3QgdG9rZW5OYW1lID0gdGVzdERhdGEudG9rZW5UcmFuc2ZlcnMubmFtZVVTREM7XG5cbiAgICAgIC8vIE5vbmNlIGFkdmFuY2VcbiAgICAgIGNvbnN0IG5vbmNlQWR2YW5jZUluc3RydWN0aW9uID0gU3lzdGVtUHJvZ3JhbS5ub25jZUFkdmFuY2Uoe1xuICAgICAgICBub25jZVB1YmtleTogbmV3IFB1YmxpY0tleShub25jZUFjY291bnQpLFxuICAgICAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhBY2NvdW50KSxcbiAgICAgIH0pO1xuICAgICAgY29uc3Qgbm9uY2VBZHZhbmNlUGFyYW1zOiBJbnN0cnVjdGlvblBhcmFtcyA9IHtcbiAgICAgICAgdHlwZTogSW5zdHJ1Y3Rpb25CdWlsZGVyVHlwZXMuTm9uY2VBZHZhbmNlLFxuICAgICAgICBwYXJhbXM6IHsgd2FsbGV0Tm9uY2VBZGRyZXNzOiBub25jZUFjY291bnQsIGF1dGhXYWxsZXRBZGRyZXNzOiBhdXRoQWNjb3VudCB9LFxuICAgICAgfTtcblxuICAgICAgLy8gTWludCBpbnN0cnVjdGlvblxuICAgICAgY29uc3QgbWludEluc3RydWN0aW9uID0gY3JlYXRlTWludFRvSW5zdHJ1Y3Rpb24oXG4gICAgICAgIG5ldyBQdWJsaWNLZXkobWludEFkZHJlc3MpLFxuICAgICAgICBuZXcgUHVibGljS2V5KGRlc3RpbmF0aW9uQWRkcmVzcyksXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYXV0aEFjY291bnQpLFxuICAgICAgICBCaWdJbnQoJzEwMDAwMDAnKVxuICAgICAgKTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkTWludFBhcmFtczogSW5zdHJ1Y3Rpb25QYXJhbXMgPSB7XG4gICAgICAgIHR5cGU6IEluc3RydWN0aW9uQnVpbGRlclR5cGVzLk1pbnRUbyxcbiAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgbWludEFkZHJlc3MsXG4gICAgICAgICAgZGVzdGluYXRpb25BZGRyZXNzLFxuICAgICAgICAgIGF1dGhvcml0eUFkZHJlc3M6IGF1dGhBY2NvdW50LFxuICAgICAgICAgIGFtb3VudDogJzEwMDAwMDAnLFxuICAgICAgICAgIHRva2VuTmFtZSxcbiAgICAgICAgICBkZWNpbWFsUGxhY2VzOiB1bmRlZmluZWQsXG4gICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICAvLyBCdXJuIGluc3RydWN0aW9uXG4gICAgICBjb25zdCBidXJuSW5zdHJ1Y3Rpb24gPSBjcmVhdGVCdXJuSW5zdHJ1Y3Rpb24oXG4gICAgICAgIG5ldyBQdWJsaWNLZXkoYWNjb3VudEFkZHJlc3MpLFxuICAgICAgICBuZXcgUHVibGljS2V5KG1pbnRBZGRyZXNzKSxcbiAgICAgICAgbmV3IFB1YmxpY0tleShhdXRoQWNjb3VudCksXG4gICAgICAgIEJpZ0ludCgnNTAwMDAwJylcbiAgICAgICk7XG4gICAgICBjb25zdCBleHBlY3RlZEJ1cm5QYXJhbXM6IEluc3RydWN0aW9uUGFyYW1zID0ge1xuICAgICAgICB0eXBlOiBJbnN0cnVjdGlvbkJ1aWxkZXJUeXBlcy5CdXJuLFxuICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICBtaW50QWRkcmVzcyxcbiAgICAgICAgICBhY2NvdW50QWRkcmVzcyxcbiAgICAgICAgICBhdXRob3JpdHlBZGRyZXNzOiBhdXRoQWNjb3VudCxcbiAgICAgICAgICBhbW91bnQ6ICc1MDAwMDAnLFxuICAgICAgICAgIHRva2VuTmFtZSxcbiAgICAgICAgICBkZWNpbWFsUGxhY2VzOiB1bmRlZmluZWQsXG4gICAgICAgICAgcHJvZ3JhbUlkOiAnVG9rZW5rZWdRZmVaeWlOd0FKYk5iR0tQRlhDV3VCdmY5U3M2MjNWUTVEQScsXG4gICAgICAgIH0sXG4gICAgICB9O1xuXG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBbbm9uY2VBZHZhbmNlSW5zdHJ1Y3Rpb24sIG1pbnRJbnN0cnVjdGlvbiwgYnVybkluc3RydWN0aW9uXTtcbiAgICAgIGNvbnN0IGV4cGVjdGVkUGFyYW1zID0gW25vbmNlQWR2YW5jZVBhcmFtcywgZXhwZWN0ZWRNaW50UGFyYW1zLCBleHBlY3RlZEJ1cm5QYXJhbXNdO1xuXG4gICAgICBjb25zdCByZXN1bHQgPSBpbnN0cnVjdGlvblBhcmFtc0ZhY3RvcnkoVHJhbnNhY3Rpb25UeXBlLlNlbmQsIGluc3RydWN0aW9ucyk7XG4gICAgICBzaG91bGQuZGVlcEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWRQYXJhbXMpO1xuICAgIH0pO1xuICB9KTtcbiAgZGVzY3JpYmUoJ0ZhaWwgJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdJbnZhbGlkIHR5cGUnLCAoKSA9PiB7XG4gICAgICBzaG91bGQoKCkgPT4gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGwsIFtdKSkudGhyb3dFcnJvcihcbiAgICAgICAgJ0ludmFsaWQgdHJhbnNhY3Rpb24sIHRyYW5zYWN0aW9uIHR5cGUgbm90IHN1cHBvcnRlZDogJyArIFRyYW5zYWN0aW9uVHlwZS5Db250cmFjdENhbGxcbiAgICAgICk7XG4gICAgfSk7XG4gICAgaXQoJ0ludmFsaWQgSW5zdHJ1Y3Rpb24gZm9yIFNlbmQgVHlwZScsICgpID0+IHtcbiAgICAgIGNvbnN0IGZyb21BZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3Qgbm9uY2VBZGRyZXNzID0gdGVzdERhdGEubm9uY2VBY2NvdW50LnB1YjtcbiAgICAgIGNvbnN0IGF1dGhBZGRyZXNzID0gdGVzdERhdGEuYXV0aEFjY291bnQucHViO1xuICAgICAgY29uc3QgYW1vdW50ID0gJzEwMDAwMCc7XG4gICAgICBjb25zdCBpbnN0cnVjdGlvbnMgPSBTeXN0ZW1Qcm9ncmFtLmNyZWF0ZU5vbmNlQWNjb3VudCh7XG4gICAgICAgIGZyb21QdWJrZXk6IG5ldyBQdWJsaWNLZXkoZnJvbUFkZHJlc3MpLFxuICAgICAgICBub25jZVB1YmtleTogbmV3IFB1YmxpY0tleShub25jZUFkZHJlc3MpLFxuICAgICAgICBhdXRob3JpemVkUHVia2V5OiBuZXcgUHVibGljS2V5KGF1dGhBZGRyZXNzKSxcbiAgICAgICAgbGFtcG9ydHM6IG5ldyBCaWdOdW1iZXIoYW1vdW50KS50b051bWJlcigpLFxuICAgICAgfSkuaW5zdHJ1Y3Rpb25zO1xuXG4gICAgICBzaG91bGQoKCkgPT4gaW5zdHJ1Y3Rpb25QYXJhbXNGYWN0b3J5KFRyYW5zYWN0aW9uVHlwZS5TZW5kLCBpbnN0cnVjdGlvbnMpKS50aHJvd0Vycm9yKFxuICAgICAgICAnSW52YWxpZCB0cmFuc2FjdGlvbiwgaW5zdHJ1Y3Rpb24gdHlwZSBub3Qgc3VwcG9ydGVkOiBDcmVhdGUnXG4gICAgICApO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructionParamsFactory.staking.d.ts","sourceRoot":"","sources":["../../../test/unit/instructionParamsFactory.staking.ts"],"names":[],"mappings":""}
|