@kamino-finance/squads-kamino-cli 1.0.0 → 1.0.2
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/README.md +5 -5
- package/dist/index.js +7 -6
- package/dist/index.js.map +1 -1
- package/dist/lib/api.d.ts +12 -13
- package/dist/lib/api.js +8 -9
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/menu.js +2 -2
- package/dist/lib/menu.js.map +1 -1
- package/dist/lib/program.d.ts +0 -1
- package/dist/lib/program.js.map +1 -1
- package/dist/lib/sendTransactionUtils.js +11 -11
- package/dist/lib/sendTransactionUtils.js.map +1 -1
- package/dist/lib/utils.d.ts +0 -1
- package/dist/lib/utils.js +5 -6
- package/dist/lib/utils.js.map +1 -1
- package/dist/lib/wallet.js +1 -2
- package/dist/lib/wallet.js.map +1 -1
- package/package.json +11 -6
package/README.md
CHANGED
|
@@ -50,15 +50,15 @@ IRONFORGE_CLUSTER=
|
|
|
50
50
|
### Examples
|
|
51
51
|
|
|
52
52
|
- Get multisigs
|
|
53
|
-
`
|
|
53
|
+
`yarn cli create-transaction-from-instructions-file --cluster https://rpc.url --ledger-address-key 0 --multisig BxdLNhoRXVs45wTVAZBrYQUkxbex5zXFCaJtsuRpoqMj --file-path ./ixns.in`
|
|
54
54
|
- Transactions from file - print
|
|
55
|
-
`
|
|
55
|
+
`yarn cli create-transaction-from-instructions-file --cluster https://rpc.url --ledger-address-key 0 --multisig E35i5qn7872eEmBt15e5VGhziUBzCTm43XCSWvDoQNNv --file-path ./ixns.in --title 'Squads cli test add token' --mode print`
|
|
56
56
|
- Transactions from file - print, using .env for cluster and ledger-pubkey, using squad name instead of multisig pubkey
|
|
57
|
-
`
|
|
57
|
+
`yarn cli create-transaction-from-instructions-file --squad kamino --file-path ./ixns.in --title 'Squads cli test add token' --mode print`
|
|
58
58
|
- With .env file from file
|
|
59
|
-
`
|
|
59
|
+
`yarn cli create-transaction-from-instructions-file --multisig 7Pd2qaTnHmbfwcdVnf812xz2mdWz8G6sQxEjc3t7NChz --file-path ./ixns.in --title 'Squads cli test add token' --mode propose`
|
|
60
60
|
- Program upgrade proposal (THIS WILL ONLY CREATE A PROGRAM UPGRADE BUT IT WILL NOT INITIATE IT)
|
|
61
|
-
`
|
|
61
|
+
`yarn cli create-program-upgrade --multisig BxdLNhoRXVs45wTVAZBrYQUkxbex5zXFCaJtsuRpoqMj --program-id SLendK7ySfcEzyaFqy93gDnD3RtrpXJcnRwb6zFHJSh --buffer EnYZG1528vJQpGmEFSCR4KLVy8aoShzSUt6zBECyP7mg --refund-address sadmBTQm5HJsyzWHEjV4YwG9CiahZKVDVqAyS4Wx1zH --title 'Squads cli test program upgrade' --mode propose`
|
|
62
62
|
|
|
63
63
|
## Squads Cli to approve and execute
|
|
64
64
|
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,7 @@ exports.idl = squads_mpl_json_1.default;
|
|
|
9
9
|
const menu_1 = tslib_1.__importDefault(require("./lib/menu"));
|
|
10
10
|
const wallet_1 = tslib_1.__importStar(require("./lib/wallet"));
|
|
11
11
|
const dotenv_1 = tslib_1.__importDefault(require("dotenv"));
|
|
12
|
+
const dotenv_expand_1 = require("dotenv-expand");
|
|
12
13
|
const web3_js_1 = require("@solana/web3.js");
|
|
13
14
|
const lib_1 = require("./lib");
|
|
14
15
|
tslib_1.__exportStar(require("./lib"), exports);
|
|
@@ -20,8 +21,8 @@ function main() {
|
|
|
20
21
|
.command("print-multisig-list")
|
|
21
22
|
.option(`--cluster <string>`, "The cluster or rpc")
|
|
22
23
|
.option(`--ironforge-cluster <string>`, "ironforge-cluster for transaction landing")
|
|
23
|
-
.option(`--ledger-address-key <string>`, "The ledger address for you ledger. usb://ledger\\?key=0 by default. Check with solana-keygen pubkey usb://ledger or solana-keygen pubkey usb://ledger\\?key=0. 'default' for usb://ledger or <key_number> for usb://ledger\\?key=<key_number>")
|
|
24
|
-
.action((
|
|
24
|
+
.option(`--ledger-address-key <string>`, "The ledger address for you ledger. usb://ledger\\?key=0 by default. Check with solana-keygen pubkey usb://ledger or solana-keygen pubkey usb://ledger\\?key=0 or solana-keygen pubkey 'usb://ledger?key=0'. 'default' for usb://ledger or <key_number> for usb://ledger\\?key=<key_number>")
|
|
25
|
+
.action((_a) => tslib_1.__awaiter(this, [_a], void 0, function* ({ cluster, ironforgeCluster, ledgerAddressKey }) {
|
|
25
26
|
const addressKey = fromEnv(ledgerAddressKey, "LEDGER_ADDRESS_KEY");
|
|
26
27
|
const clusterVal = fromEnv(cluster, "CLUSTER");
|
|
27
28
|
const ironforgeClusterVal = fromEnv(ironforgeCluster, "IRONFORGE_CLUSTER");
|
|
@@ -46,7 +47,7 @@ function main() {
|
|
|
46
47
|
.requiredOption(`--ixn <string>`, "The ixn base58")
|
|
47
48
|
.requiredOption(`--mode <string>`, "Specify the run mode: print/simulate/propose")
|
|
48
49
|
.requiredOption(`--title <string>`, "The title of the squads transaction")
|
|
49
|
-
.action(({ cluster, ledgerAddressKey, multisig, squad, ironforgeCluster, ixn, mode, title, })
|
|
50
|
+
.action((_a) => tslib_1.__awaiter(this, [_a], void 0, function* ({ cluster, ledgerAddressKey, multisig, squad, ironforgeCluster, ixn, mode, title, }) {
|
|
50
51
|
const addressKey = fromEnv(ledgerAddressKey, "LEDGER_ADDRESS_KEY");
|
|
51
52
|
const clusterVal = fromEnv(cluster, "CLUSTER");
|
|
52
53
|
const ironforgeClusterVal = fromEnv(ironforgeCluster, "IRONFORGE_CLUSTER");
|
|
@@ -73,7 +74,7 @@ function main() {
|
|
|
73
74
|
.option(`--multiply-fee <string>`, "standard is 1 lamport - multiplier")
|
|
74
75
|
.requiredOption(`--mode <string>`, "Specify the run mode: print/simulate/propose")
|
|
75
76
|
.requiredOption(`--title <string>`, "The title of the squads transaction")
|
|
76
|
-
.action(({ cluster, ledgerAddressKey, multisig, squad, ironforgeCluster, filePath, multiplyFee, mode, title, })
|
|
77
|
+
.action((_a) => tslib_1.__awaiter(this, [_a], void 0, function* ({ cluster, ledgerAddressKey, multisig, squad, ironforgeCluster, filePath, multiplyFee, mode, title, }) {
|
|
77
78
|
const addressKey = fromEnv(ledgerAddressKey, "LEDGER_ADDRESS_KEY");
|
|
78
79
|
const clusterVal = fromEnv(cluster, "CLUSTER");
|
|
79
80
|
const ironforgeClusterVal = fromEnv(ironforgeCluster, "IRONFORGE_CLUSTER");
|
|
@@ -102,7 +103,7 @@ function main() {
|
|
|
102
103
|
.option(`--multiply-fee <string>`, "standard is 1 lamport - multiplier")
|
|
103
104
|
.requiredOption(`--mode <string>`, "Specify the run mode: print/simulate/propose")
|
|
104
105
|
.requiredOption(`--title <string>`, "The title of the squads transaction")
|
|
105
|
-
.action(({ cluster, ledgerAddressKey, multisig, squad, ironforgeCluster, programId, buffer, refundAddress, multiplyFee, mode, title, })
|
|
106
|
+
.action((_a) => tslib_1.__awaiter(this, [_a], void 0, function* ({ cluster, ledgerAddressKey, multisig, squad, ironforgeCluster, programId, buffer, refundAddress, multiplyFee, mode, title, }) {
|
|
106
107
|
const addressKey = fromEnv(ledgerAddressKey, "LEDGER_ADDRESS_KEY");
|
|
107
108
|
const clusterVal = fromEnv(cluster, "CLUSTER");
|
|
108
109
|
const ironforgeClusterVal = fromEnv(ironforgeCluster, "IRONFORGE_CLUSTER");
|
|
@@ -128,7 +129,7 @@ const load = (web3Client, addressKey, mode) => tslib_1.__awaiter(void 0, void 0,
|
|
|
128
129
|
const cli = new menu_1.default(cliWallet.wallet, web3Client, mode);
|
|
129
130
|
return cli;
|
|
130
131
|
});
|
|
131
|
-
dotenv_1.default.config();
|
|
132
|
+
(0, dotenv_expand_1.expand)(dotenv_1.default.config());
|
|
132
133
|
function fromEnv(argValue, envVariable) {
|
|
133
134
|
if (argValue) {
|
|
134
135
|
return argValue;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport idl from \"./squads_mpl.json\";\nimport Menu from \"./lib/menu\";\nimport CliWallet, { findLedgerAddress } from \"./lib/wallet\";\nimport dotenv from \"dotenv\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport { Chain, Web3Client } from \"./lib\";\nexport { idl };\nexport * from \"./lib\";\n\nasync function main() {\n const program = new Command();\n\n program.name(\"klend-cli\").description(\"CLI to interact with squads program\");\n\n program\n .command(\"print-multisig-list\")\n .option(`--cluster <string>`, \"The cluster or rpc\")\n .option(\n `--ironforge-cluster <string>`,\n \"ironforge-cluster for transaction landing\"\n )\n .option(\n `--ledger-address-key <string>`,\n \"The ledger address for you ledger. usb://ledger\\\\?key=0 by default. Check with solana-keygen pubkey usb://ledger or solana-keygen pubkey usb://ledger\\\\?key=0. 'default' for usb://ledger or <key_number> for usb://ledger\\\\?key=<key_number>\"\n )\n .action(async ({ cluster, ironforgeCluster, ledgerAddressKey }) => {\n const addressKey = fromEnv(ledgerAddressKey, \"LEDGER_ADDRESS_KEY\");\n const clusterVal = fromEnv(cluster, \"CLUSTER\");\n const ironforgeClusterVal = fromEnv(\n ironforgeCluster,\n \"IRONFORGE_CLUSTER\"\n );\n const chain: Chain = {\n name: \"mainnet-beta\",\n endpoint: clusterVal,\n wsEndpoint: clusterVal?.replace(\"https:\", \"wss:\") + \"/whirligig\",\n chainID: 101,\n displayName: \"Mainnet Beta (Triton)\",\n };\n\n const web3Client = new Web3Client(chain, ironforgeClusterVal);\n const cli = await load(web3Client, addressKey, \"print\");\n\n await cli.printMultisigList();\n });\n\n program\n .command(\"create-transaction-from-instruction\")\n .option(`--cluster <string>`, \"The cluster or rpc\")\n .option(\n `--ledger-address-key <string>`,\n \"The ledger address for you ledger. usb://ledger\\\\?key=0 by default. Check with solana-keygen pubkey usb://ledger or solana-keygen pubkey usb://ledger\\\\?key=0. 'default' for usb://ledger or <key_number> for usb://ledger\\\\?key=<key_number>\"\n )\n .option(`--multisig <string>`, \"The multisig pubkey\")\n .option(\n `--squad <string>`,\n \"The squad you want to interact with: klend|kamino|farms|klend-staging\"\n )\n .option(\n `--ironforge-cluster <string>`,\n \"ironforge-cluster for transaction landing\"\n )\n .requiredOption(`--ixn <string>`, \"The ixn base58\")\n .requiredOption(\n `--mode <string>`,\n \"Specify the run mode: print/simulate/propose\"\n )\n .requiredOption(`--title <string>`, \"The title of the squads transaction\")\n .action(\n async ({\n cluster,\n ledgerAddressKey,\n multisig,\n squad,\n ironforgeCluster,\n ixn,\n mode,\n title,\n }) => {\n const addressKey = fromEnv(ledgerAddressKey, \"LEDGER_ADDRESS_KEY\");\n const clusterVal = fromEnv(cluster, \"CLUSTER\");\n const ironforgeClusterVal = fromEnv(\n ironforgeCluster,\n \"IRONFORGE_CLUSTER\"\n );\n const multisigVal = multisig ? multisig : getMultisigPk(squad);\n const chain: Chain = {\n name: \"mainnet-beta\",\n endpoint: clusterVal,\n wsEndpoint: clusterVal?.replace(\"https:\", \"wss:\") + \"/whirligig\",\n chainID: 101,\n displayName: \"Mainnet Beta (Triton)\",\n };\n\n const web3Client = new Web3Client(chain, ironforgeClusterVal);\n const cli = await load(web3Client, addressKey, mode);\n\n await cli.createTransactionFromIxn(multisigVal, ixn, title);\n }\n );\n\n program\n .command(\"create-transaction-from-instructions-file\")\n .option(`--cluster <string>`, \"The cluster or rpc\")\n .option(\n `--ledger-address-key <string>`,\n \"The ledger address for you ledger. usb://ledger\\\\?key=0 by default. Check with solana-keygen pubkey usb://ledger or solana-keygen pubkey usb://ledger\\\\?key=0. 'default' for usb://ledger or <key_number> for usb://ledger\\\\?key=<key_number>\"\n )\n .option(`--multisig <string>`, \"The multisig pubkey\")\n .option(\n `--squad <string>`,\n \"The squad you want to interact with: klend|kamino|farms|klend-staging\"\n )\n .option(\n `--ironforge-cluster <string>`,\n \"ironforge-cluster for transaction landing\"\n )\n .requiredOption(`--file-path <string>`, \"The file path\")\n .option(`--multiply-fee <string>`, \"standard is 1 lamport - multiplier\")\n .requiredOption(\n `--mode <string>`,\n \"Specify the run mode: print/simulate/propose\"\n )\n .requiredOption(`--title <string>`, \"The title of the squads transaction\")\n .action(\n async ({\n cluster,\n ledgerAddressKey,\n multisig,\n squad,\n ironforgeCluster,\n filePath,\n multiplyFee,\n mode,\n title,\n }) => {\n const addressKey = fromEnv(ledgerAddressKey, \"LEDGER_ADDRESS_KEY\");\n const clusterVal = fromEnv(cluster, \"CLUSTER\");\n const ironforgeClusterVal = fromEnv(\n ironforgeCluster,\n \"IRONFORGE_CLUSTER\"\n );\n const multisigVal = new PublicKey(\n multisig ? multisig : getMultisigPk(squad)\n );\n const chain: Chain = {\n name: \"mainnet-beta\",\n endpoint: clusterVal,\n wsEndpoint: clusterVal?.replace(\"https:\", \"wss:\") + \"/whirligig\",\n chainID: 101,\n displayName: \"Mainnet Beta (Triton)\",\n };\n\n const web3Client = new Web3Client(chain, ironforgeClusterVal);\n const cli = await load(web3Client, addressKey, mode);\n\n await cli.createTransactionsFromIxnsFile(\n multisigVal,\n filePath,\n title,\n multiplyFee\n );\n }\n );\n\n program\n .command(\"create-program-upgrade\")\n .option(`--cluster <string>`, \"The cluster or rpc\")\n .option(\n `--ledger-address-key <string>`,\n \"The ledger address for you ledger. usb://ledger\\\\?key=0 by default. Check with solana-keygen pubkey usb://ledger or solana-keygen pubkey usb://ledger\\\\?key=0. 'default' for usb://ledger or <key_number> for usb://ledger\\\\?key=<key_number>\"\n )\n .option(`--multisig <string>`, \"The multisig pubkey\")\n .option(\n `--squad <string>`,\n \"The squad you want to interact with: klend|kamino|farms|klend-staging\"\n )\n .option(\n `--ironforge-cluster <string>`,\n \"ironforge-cluster for transaction landing\"\n )\n .requiredOption(`--program-id <string>`, \"The program ID\")\n .requiredOption(`--buffer <string>`, \"The buffer to send\")\n .requiredOption(\n `--refund-address <string>`,\n \"The refund address to send SOL refund to\"\n )\n .option(`--multiply-fee <string>`, \"standard is 1 lamport - multiplier\")\n .requiredOption(\n `--mode <string>`,\n \"Specify the run mode: print/simulate/propose\"\n )\n .requiredOption(`--title <string>`, \"The title of the squads transaction\")\n .action(\n async ({\n cluster,\n ledgerAddressKey,\n multisig,\n squad,\n ironforgeCluster,\n programId,\n buffer,\n refundAddress,\n multiplyFee,\n mode,\n title,\n }) => {\n const addressKey = fromEnv(ledgerAddressKey, \"LEDGER_ADDRESS_KEY\");\n const clusterVal = fromEnv(cluster, \"CLUSTER\");\n const ironforgeClusterVal = fromEnv(\n ironforgeCluster,\n \"IRONFORGE_CLUSTER\"\n );\n const multisigVal = new PublicKey(\n multisig ? multisig : getMultisigPk(squad)\n );\n\n const chain: Chain = {\n name: \"mainnet-beta\",\n endpoint: clusterVal,\n wsEndpoint: clusterVal?.replace(\"https:\", \"wss:\") + \"/whirligig\",\n chainID: 101,\n displayName: \"Mainnet Beta (Triton)\",\n };\n\n const web3Client = new Web3Client(chain, ironforgeClusterVal);\n\n const cli = await load(web3Client, addressKey, mode);\n\n await cli.createProgramUpgrade(\n multisigVal,\n programId,\n buffer,\n refundAddress,\n title,\n multiplyFee\n );\n }\n );\n\n await program.parseAsync();\n}\n\nconst load = async (\n web3Client: Web3Client,\n addressKey: string,\n mode: string\n): Promise<Menu> => {\n const ledgerWallet = await findLedgerAddress(addressKey);\n const cliWallet = new CliWallet(ledgerWallet);\n\n // init the cli\n const cli = new Menu(cliWallet.wallet, web3Client, mode);\n\n return cli;\n};\n\ndotenv.config();\n\nfunction fromEnv(argValue: string, envVariable: string): string {\n if (argValue) {\n return argValue;\n }\n\n if (envVariable === \"CLUSTER\") {\n if (process.env.CLUSTER === undefined) {\n throw new Error(\n \"CLUSTER must be specified in .env or as a command line argument\"\n );\n }\n return process.env.CLUSTER;\n } else if (envVariable === \"LEDGER_ADDRESS_KEY\") {\n if (process.env.LEDGER_ADDRESS_KEY === undefined) {\n return \"default\";\n }\n return process.env.LEDGER_ADDRESS_KEY;\n } else if (envVariable === \"IRONFORGE_CLUSTER\") {\n if (process.env.IRONFORGE_CLUSTER === undefined) {\n return \"default\";\n }\n return process.env.IRONFORGE_CLUSTER;\n }\n\n return \"\";\n}\n\nfunction getMultisigPk(squad: string): string {\n if (squad === \"kamino\") {\n return \"E35i5qn7872eEmBt15e5VGhziUBzCTm43XCSWvDoQNNv\";\n } else if (squad === \"scope\") {\n return \"E35i5qn7872eEmBt15e5VGhziUBzCTm43XCSWvDoQNNv\";\n } else if (squad === \"farms\") {\n return \"BbM3mbcLsa3QcYEVx8iovwfKaA1iZ6DK5fEbbtHwS3N8\";\n } else if (squad === \"klend\") {\n return \"A9rQoX1sictAQkyXxaZA8nz674xutHwoqpK2mwLyexCZ\";\n } else if (squad === \"klend-staging\") {\n return \"BxdLNhoRXVs45wTVAZBrYQUkxbex5zXFCaJtsuRpoqMj\";\n } else {\n throw Error(\"Invalid squad\");\n }\n}\n\nmain()\n .then(() => {\n console.log(\"\\n\\nSuccess\");\n process.exit();\n })\n .catch((e) => {\n console.error(\"\\n\\nSquads Kamino CLI exited with error:\\n\\n\", e);\n process.exit(1);\n });\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport idl from \"./squads_mpl.json\";\nimport Menu from \"./lib/menu\";\nimport CliWallet, { findLedgerAddress } from \"./lib/wallet\";\nimport dotenv from \"dotenv\";\nimport { expand } from 'dotenv-expand';\nimport { PublicKey } from \"@solana/web3.js\";\nimport { Chain, Web3Client } from \"./lib\";\nexport { idl };\nexport * from \"./lib\";\n\nasync function main() {\n const program = new Command();\n\n program.name(\"klend-cli\").description(\"CLI to interact with squads program\");\n\n program\n .command(\"print-multisig-list\")\n .option(`--cluster <string>`, \"The cluster or rpc\")\n .option(\n `--ironforge-cluster <string>`,\n \"ironforge-cluster for transaction landing\"\n )\n .option(\n `--ledger-address-key <string>`,\n \"The ledger address for you ledger. usb://ledger\\\\?key=0 by default. Check with solana-keygen pubkey usb://ledger or solana-keygen pubkey usb://ledger\\\\?key=0 or solana-keygen pubkey 'usb://ledger?key=0'. 'default' for usb://ledger or <key_number> for usb://ledger\\\\?key=<key_number>\"\n )\n .action(async ({ cluster, ironforgeCluster, ledgerAddressKey }) => {\n const addressKey = fromEnv(ledgerAddressKey, \"LEDGER_ADDRESS_KEY\");\n const clusterVal = fromEnv(cluster, \"CLUSTER\");\n const ironforgeClusterVal = fromEnv(\n ironforgeCluster,\n \"IRONFORGE_CLUSTER\"\n );\n const chain: Chain = {\n name: \"mainnet-beta\",\n endpoint: clusterVal,\n wsEndpoint: clusterVal?.replace(\"https:\", \"wss:\") + \"/whirligig\",\n chainID: 101,\n displayName: \"Mainnet Beta (Triton)\",\n };\n\n const web3Client = new Web3Client(chain, ironforgeClusterVal);\n const cli = await load(web3Client, addressKey, \"print\");\n\n await cli.printMultisigList();\n });\n\n program\n .command(\"create-transaction-from-instruction\")\n .option(`--cluster <string>`, \"The cluster or rpc\")\n .option(\n `--ledger-address-key <string>`,\n \"The ledger address for you ledger. usb://ledger\\\\?key=0 by default. Check with solana-keygen pubkey usb://ledger or solana-keygen pubkey usb://ledger\\\\?key=0. 'default' for usb://ledger or <key_number> for usb://ledger\\\\?key=<key_number>\"\n )\n .option(`--multisig <string>`, \"The multisig pubkey\")\n .option(\n `--squad <string>`,\n \"The squad you want to interact with: klend|kamino|farms|klend-staging\"\n )\n .option(\n `--ironforge-cluster <string>`,\n \"ironforge-cluster for transaction landing\"\n )\n .requiredOption(`--ixn <string>`, \"The ixn base58\")\n .requiredOption(\n `--mode <string>`,\n \"Specify the run mode: print/simulate/propose\"\n )\n .requiredOption(`--title <string>`, \"The title of the squads transaction\")\n .action(\n async ({\n cluster,\n ledgerAddressKey,\n multisig,\n squad,\n ironforgeCluster,\n ixn,\n mode,\n title,\n }) => {\n const addressKey = fromEnv(ledgerAddressKey, \"LEDGER_ADDRESS_KEY\");\n const clusterVal = fromEnv(cluster, \"CLUSTER\");\n const ironforgeClusterVal = fromEnv(\n ironforgeCluster,\n \"IRONFORGE_CLUSTER\"\n );\n const multisigVal = multisig ? multisig : getMultisigPk(squad);\n const chain: Chain = {\n name: \"mainnet-beta\",\n endpoint: clusterVal,\n wsEndpoint: clusterVal?.replace(\"https:\", \"wss:\") + \"/whirligig\",\n chainID: 101,\n displayName: \"Mainnet Beta (Triton)\",\n };\n\n const web3Client = new Web3Client(chain, ironforgeClusterVal);\n const cli = await load(web3Client, addressKey, mode);\n\n await cli.createTransactionFromIxn(multisigVal, ixn, title);\n }\n );\n\n program\n .command(\"create-transaction-from-instructions-file\")\n .option(`--cluster <string>`, \"The cluster or rpc\")\n .option(\n `--ledger-address-key <string>`,\n \"The ledger address for you ledger. usb://ledger\\\\?key=0 by default. Check with solana-keygen pubkey usb://ledger or solana-keygen pubkey usb://ledger\\\\?key=0. 'default' for usb://ledger or <key_number> for usb://ledger\\\\?key=<key_number>\"\n )\n .option(`--multisig <string>`, \"The multisig pubkey\")\n .option(\n `--squad <string>`,\n \"The squad you want to interact with: klend|kamino|farms|klend-staging\"\n )\n .option(\n `--ironforge-cluster <string>`,\n \"ironforge-cluster for transaction landing\"\n )\n .requiredOption(`--file-path <string>`, \"The file path\")\n .option(`--multiply-fee <string>`, \"standard is 1 lamport - multiplier\")\n .requiredOption(\n `--mode <string>`,\n \"Specify the run mode: print/simulate/propose\"\n )\n .requiredOption(`--title <string>`, \"The title of the squads transaction\")\n .action(\n async ({\n cluster,\n ledgerAddressKey,\n multisig,\n squad,\n ironforgeCluster,\n filePath,\n multiplyFee,\n mode,\n title,\n }) => {\n const addressKey = fromEnv(ledgerAddressKey, \"LEDGER_ADDRESS_KEY\");\n const clusterVal = fromEnv(cluster, \"CLUSTER\");\n const ironforgeClusterVal = fromEnv(\n ironforgeCluster,\n \"IRONFORGE_CLUSTER\"\n );\n const multisigVal = new PublicKey(\n multisig ? multisig : getMultisigPk(squad)\n );\n const chain: Chain = {\n name: \"mainnet-beta\",\n endpoint: clusterVal,\n wsEndpoint: clusterVal?.replace(\"https:\", \"wss:\") + \"/whirligig\",\n chainID: 101,\n displayName: \"Mainnet Beta (Triton)\",\n };\n\n const web3Client = new Web3Client(chain, ironforgeClusterVal);\n const cli = await load(web3Client, addressKey, mode);\n\n await cli.createTransactionsFromIxnsFile(\n multisigVal,\n filePath,\n title,\n multiplyFee\n );\n }\n );\n\n program\n .command(\"create-program-upgrade\")\n .option(`--cluster <string>`, \"The cluster or rpc\")\n .option(\n `--ledger-address-key <string>`,\n \"The ledger address for you ledger. usb://ledger\\\\?key=0 by default. Check with solana-keygen pubkey usb://ledger or solana-keygen pubkey usb://ledger\\\\?key=0. 'default' for usb://ledger or <key_number> for usb://ledger\\\\?key=<key_number>\"\n )\n .option(`--multisig <string>`, \"The multisig pubkey\")\n .option(\n `--squad <string>`,\n \"The squad you want to interact with: klend|kamino|farms|klend-staging\"\n )\n .option(\n `--ironforge-cluster <string>`,\n \"ironforge-cluster for transaction landing\"\n )\n .requiredOption(`--program-id <string>`, \"The program ID\")\n .requiredOption(`--buffer <string>`, \"The buffer to send\")\n .requiredOption(\n `--refund-address <string>`,\n \"The refund address to send SOL refund to\"\n )\n .option(`--multiply-fee <string>`, \"standard is 1 lamport - multiplier\")\n .requiredOption(\n `--mode <string>`,\n \"Specify the run mode: print/simulate/propose\"\n )\n .requiredOption(`--title <string>`, \"The title of the squads transaction\")\n .action(\n async ({\n cluster,\n ledgerAddressKey,\n multisig,\n squad,\n ironforgeCluster,\n programId,\n buffer,\n refundAddress,\n multiplyFee,\n mode,\n title,\n }) => {\n const addressKey = fromEnv(ledgerAddressKey, \"LEDGER_ADDRESS_KEY\");\n const clusterVal = fromEnv(cluster, \"CLUSTER\");\n const ironforgeClusterVal = fromEnv(\n ironforgeCluster,\n \"IRONFORGE_CLUSTER\"\n );\n const multisigVal = new PublicKey(\n multisig ? multisig : getMultisigPk(squad)\n );\n\n const chain: Chain = {\n name: \"mainnet-beta\",\n endpoint: clusterVal,\n wsEndpoint: clusterVal?.replace(\"https:\", \"wss:\") + \"/whirligig\",\n chainID: 101,\n displayName: \"Mainnet Beta (Triton)\",\n };\n\n const web3Client = new Web3Client(chain, ironforgeClusterVal);\n\n const cli = await load(web3Client, addressKey, mode);\n\n await cli.createProgramUpgrade(\n multisigVal,\n programId,\n buffer,\n refundAddress,\n title,\n multiplyFee\n );\n }\n );\n\n await program.parseAsync();\n}\n\nconst load = async (\n web3Client: Web3Client,\n addressKey: string,\n mode: string\n): Promise<Menu> => {\n const ledgerWallet = await findLedgerAddress(addressKey);\n const cliWallet = new CliWallet(ledgerWallet);\n\n // init the cli\n const cli = new Menu(cliWallet.wallet, web3Client, mode);\n\n return cli;\n};\n\nexpand(dotenv.config());\n\nfunction fromEnv(argValue: string, envVariable: string): string {\n if (argValue) {\n return argValue;\n }\n\n if (envVariable === \"CLUSTER\") {\n if (process.env.CLUSTER === undefined) {\n throw new Error(\n \"CLUSTER must be specified in .env or as a command line argument\"\n );\n }\n return process.env.CLUSTER;\n } else if (envVariable === \"LEDGER_ADDRESS_KEY\") {\n if (process.env.LEDGER_ADDRESS_KEY === undefined) {\n return \"default\";\n }\n return process.env.LEDGER_ADDRESS_KEY;\n } else if (envVariable === \"IRONFORGE_CLUSTER\") {\n if (process.env.IRONFORGE_CLUSTER === undefined) {\n return \"default\";\n }\n return process.env.IRONFORGE_CLUSTER;\n }\n\n return \"\";\n}\n\nfunction getMultisigPk(squad: string): string {\n if (squad === \"kamino\") {\n return \"E35i5qn7872eEmBt15e5VGhziUBzCTm43XCSWvDoQNNv\";\n } else if (squad === \"scope\") {\n return \"E35i5qn7872eEmBt15e5VGhziUBzCTm43XCSWvDoQNNv\";\n } else if (squad === \"farms\") {\n return \"BbM3mbcLsa3QcYEVx8iovwfKaA1iZ6DK5fEbbtHwS3N8\";\n } else if (squad === \"klend\") {\n return \"A9rQoX1sictAQkyXxaZA8nz674xutHwoqpK2mwLyexCZ\";\n } else if (squad === \"klend-staging\") {\n return \"BxdLNhoRXVs45wTVAZBrYQUkxbex5zXFCaJtsuRpoqMj\";\n } else {\n throw Error(\"Invalid squad\");\n }\n}\n\nmain()\n .then(() => {\n console.log(\"\\n\\nSuccess\");\n process.exit();\n })\n .catch((e) => {\n console.error(\"\\n\\nSquads Kamino CLI exited with error:\\n\\n\", e);\n process.exit(1);\n });\n"]}
|
package/dist/lib/api.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import Squads, { ProgramUpgradeAccount } from "@sqds/sdk";
|
|
3
2
|
import * as anchor from "@coral-xyz/anchor";
|
|
4
3
|
import { Web3Client } from "../index";
|
|
@@ -24,7 +23,7 @@ declare class API {
|
|
|
24
23
|
allowExternalExecute: boolean;
|
|
25
24
|
keys: anchor.web3.PublicKey[];
|
|
26
25
|
} & {
|
|
27
|
-
publicKey:
|
|
26
|
+
publicKey: PublicKey;
|
|
28
27
|
}>;
|
|
29
28
|
getSquads: () => Promise<({
|
|
30
29
|
threshold: number;
|
|
@@ -36,7 +35,7 @@ declare class API {
|
|
|
36
35
|
allowExternalExecute: boolean;
|
|
37
36
|
keys: anchor.web3.PublicKey[];
|
|
38
37
|
} & {
|
|
39
|
-
publicKey:
|
|
38
|
+
publicKey: PublicKey;
|
|
40
39
|
})[]>;
|
|
41
40
|
getTransactions: (ms: any) => Promise<({
|
|
42
41
|
creator: anchor.web3.PublicKey;
|
|
@@ -59,7 +58,7 @@ declare class API {
|
|
|
59
58
|
cancelled: anchor.web3.PublicKey[];
|
|
60
59
|
executedIndex: number;
|
|
61
60
|
} & {
|
|
62
|
-
publicKey:
|
|
61
|
+
publicKey: PublicKey;
|
|
63
62
|
})[]>;
|
|
64
63
|
createMultisig: (threshold: number, createKey: PublicKey, members: PublicKey[]) => Promise<{
|
|
65
64
|
threshold: number;
|
|
@@ -71,7 +70,7 @@ declare class API {
|
|
|
71
70
|
allowExternalExecute: boolean;
|
|
72
71
|
keys: anchor.web3.PublicKey[];
|
|
73
72
|
} & {
|
|
74
|
-
publicKey:
|
|
73
|
+
publicKey: PublicKey;
|
|
75
74
|
}>;
|
|
76
75
|
getProgramDataAuthority: (programId: PublicKey) => Promise<any>;
|
|
77
76
|
getParsed: (account: anchor.web3.RpcResponseAndContext<anchor.web3.AccountInfo<Buffer | anchor.web3.ParsedAccountData> | null>) => any;
|
|
@@ -102,7 +101,7 @@ declare class API {
|
|
|
102
101
|
cancelled: anchor.web3.PublicKey[];
|
|
103
102
|
executedIndex: number;
|
|
104
103
|
} & {
|
|
105
|
-
publicKey:
|
|
104
|
+
publicKey: PublicKey;
|
|
106
105
|
}>;
|
|
107
106
|
executeInstruction: (tx: PublicKey, ix: PublicKey) => Promise<{
|
|
108
107
|
programId: anchor.web3.PublicKey;
|
|
@@ -116,7 +115,7 @@ declare class API {
|
|
|
116
115
|
bump: number;
|
|
117
116
|
executed: boolean;
|
|
118
117
|
} & {
|
|
119
|
-
publicKey:
|
|
118
|
+
publicKey: PublicKey;
|
|
120
119
|
}>;
|
|
121
120
|
executeTransactionBuilder: (tx: PublicKey) => Promise<anchor.web3.TransactionInstruction>;
|
|
122
121
|
executeInstructionBuilder: (tx: PublicKey, ix: PublicKey) => Promise<anchor.web3.TransactionInstruction>;
|
|
@@ -142,7 +141,7 @@ declare class API {
|
|
|
142
141
|
cancelled: anchor.web3.PublicKey[];
|
|
143
142
|
executedIndex: number;
|
|
144
143
|
} & {
|
|
145
|
-
publicKey:
|
|
144
|
+
publicKey: PublicKey;
|
|
146
145
|
}>;
|
|
147
146
|
cancelTransaction: (tx: PublicKey) => Promise<{
|
|
148
147
|
creator: anchor.web3.PublicKey;
|
|
@@ -165,7 +164,7 @@ declare class API {
|
|
|
165
164
|
cancelled: anchor.web3.PublicKey[];
|
|
166
165
|
executedIndex: number;
|
|
167
166
|
} & {
|
|
168
|
-
publicKey:
|
|
167
|
+
publicKey: PublicKey;
|
|
169
168
|
}>;
|
|
170
169
|
addKeyTransaction: (msPDA: PublicKey, key: PublicKey) => Promise<{
|
|
171
170
|
creator: anchor.web3.PublicKey;
|
|
@@ -188,7 +187,7 @@ declare class API {
|
|
|
188
187
|
cancelled: anchor.web3.PublicKey[];
|
|
189
188
|
executedIndex: number;
|
|
190
189
|
} & {
|
|
191
|
-
publicKey:
|
|
190
|
+
publicKey: PublicKey;
|
|
192
191
|
}>;
|
|
193
192
|
removeKeyTransaction: (msPDA: PublicKey, key: PublicKey) => Promise<{
|
|
194
193
|
creator: anchor.web3.PublicKey;
|
|
@@ -211,7 +210,7 @@ declare class API {
|
|
|
211
210
|
cancelled: anchor.web3.PublicKey[];
|
|
212
211
|
executedIndex: number;
|
|
213
212
|
} & {
|
|
214
|
-
publicKey:
|
|
213
|
+
publicKey: PublicKey;
|
|
215
214
|
}>;
|
|
216
215
|
changeThresholdTransaction: (msPDA: PublicKey, threshold: number) => Promise<{
|
|
217
216
|
creator: anchor.web3.PublicKey;
|
|
@@ -234,7 +233,7 @@ declare class API {
|
|
|
234
233
|
cancelled: anchor.web3.PublicKey[];
|
|
235
234
|
executedIndex: number;
|
|
236
235
|
} & {
|
|
237
|
-
publicKey:
|
|
236
|
+
publicKey: PublicKey;
|
|
238
237
|
}>;
|
|
239
238
|
createTransaction(msPDA: PublicKey, authorityIndex: number): Promise<any>;
|
|
240
239
|
addInstruction(txPDA: PublicKey, ix: anchor.web3.TransactionInstruction): Promise<any>;
|
|
@@ -260,7 +259,7 @@ declare class API {
|
|
|
260
259
|
};
|
|
261
260
|
name: string;
|
|
262
261
|
} & {
|
|
263
|
-
publicKey:
|
|
262
|
+
publicKey: PublicKey;
|
|
264
263
|
}>;
|
|
265
264
|
initializeProgramUpgrade(programUpgradeAccount: ProgramUpgradeAccount, msPDA: PublicKey, txTitle: string, multiplyFee: number): Promise<any[]>;
|
|
266
265
|
}
|
package/dist/lib/api.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.retryAsync = retryAsync;
|
|
4
|
+
exports.retryAsyncFirstSigned = retryAsyncFirstSigned;
|
|
5
|
+
exports.noopProfiledFunctionExecution = noopProfiledFunctionExecution;
|
|
4
6
|
const tslib_1 = require("tslib");
|
|
5
7
|
const sdk_1 = tslib_1.__importStar(require("@sqds/sdk"));
|
|
6
8
|
const anchor = tslib_1.__importStar(require("@coral-xyz/anchor"));
|
|
@@ -129,7 +131,7 @@ class API {
|
|
|
129
131
|
console.log("Transaction sent");
|
|
130
132
|
return txPDA;
|
|
131
133
|
});
|
|
132
|
-
this.createActivateAndApproveTxWithIxns = (
|
|
134
|
+
this.createActivateAndApproveTxWithIxns = (msPDA_1, ixns_1, txTitle_1, ...args_1) => tslib_1.__awaiter(this, [msPDA_1, ixns_1, txTitle_1, ...args_1], void 0, function* (msPDA, ixns, txTitle, multiplyFee = 1) {
|
|
133
135
|
const txBuilder = yield retryAsync(() => tslib_1.__awaiter(this, void 0, void 0, function* () { return noopProfiledFunctionExecution(this.squads.getTransactionBuilder(msPDA, 1)); }));
|
|
134
136
|
const [txBuilderIxns, txPda] = yield retryAsync(() => tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
135
137
|
return noopProfiledFunctionExecution(txBuilder.withInstructions(ixns).getInstructions());
|
|
@@ -574,8 +576,8 @@ class API {
|
|
|
574
576
|
});
|
|
575
577
|
}
|
|
576
578
|
}
|
|
577
|
-
function retryAsync(
|
|
578
|
-
return tslib_1.__awaiter(this,
|
|
579
|
+
function retryAsync(fn_1) {
|
|
580
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (fn, retriesLeft = 5, interval = 2000) {
|
|
579
581
|
try {
|
|
580
582
|
return yield fn();
|
|
581
583
|
}
|
|
@@ -588,9 +590,8 @@ function retryAsync(fn, retriesLeft = 5, interval = 2000) {
|
|
|
588
590
|
}
|
|
589
591
|
});
|
|
590
592
|
}
|
|
591
|
-
|
|
592
|
-
function
|
|
593
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
593
|
+
function retryAsyncFirstSigned(fnSigned_1, fn_1) {
|
|
594
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (fnSigned, fn, retriesLeft = 5, interval = 2000) {
|
|
594
595
|
try {
|
|
595
596
|
return yield fnSigned();
|
|
596
597
|
}
|
|
@@ -603,10 +604,8 @@ function retryAsyncFirstSigned(fnSigned, fn, retriesLeft = 5, interval = 2000) {
|
|
|
603
604
|
}
|
|
604
605
|
});
|
|
605
606
|
}
|
|
606
|
-
exports.retryAsyncFirstSigned = retryAsyncFirstSigned;
|
|
607
607
|
function noopProfiledFunctionExecution(promise) {
|
|
608
608
|
return promise;
|
|
609
609
|
}
|
|
610
|
-
exports.noopProfiledFunctionExecution = noopProfiledFunctionExecution;
|
|
611
610
|
exports.default = API;
|
|
612
611
|
//# sourceMappingURL=api.js.map
|
package/dist/lib/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":";;;;AAAA,yDAMmB;AACnB,kEAA4C;AAC5C,0DAAuB;AACvB,oCAKkB;AAClB,iDAG2B;AAE3B,6CAKyB;AACzB,uCAAkE;AAClE,2CAA4E;AAC5E,kEAAgE;AAEhE,MAAM,YAAY,GAAG,SAAA,EAAE,EAAI,CAAC,CAAA,CAAC,CAAC,YAAY;AAC1C,MAAM,YAAY,GAAG,MAAO,CAAC;AAC7B,MAAM,8BAA8B,GAAG,YAAY,GAAG,YAAY,CAAC;AAEnE,MAAM,GAAG;IASP,YACE,MAAc,EACd,UAAsB,EACtB,SAAoB,EACpB,gBAA2B;QA+B7B,qBAAgB,GAAG,CAAO,EAAa,EAAE,EAAE;YACzC,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACrC,CAAC,CAAA,CAAC;QAEF,cAAS,GAAG,GAAS,EAAE;YACrB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;YACtD,MAAM,QAAQ,GAAG,SAAS;iBACvB,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE;gBACjB,MAAM,UAAU,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAY,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACtE,IAAI,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE;oBAC7D,OAAO,IAAI,CAAC;iBACb;gBACD,OAAO,KAAK,CAAC;YACf,CAAC,CAAC;iBACD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC3B,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC,CAAA,CAAC;QAEF,oBAAe,GAAG,CAAO,EAAO,EAAE,EAAE;YAClC,MAAM,OAAO,GAAG,EAAE,CAAC,gBAAgB,CAAC;YACpC,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,CAAC,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAO,CAAC,EAAE,CAAC,EAAE,EAAE;gBACzC,MAAM,GAAG,GAAG,IAAI,eAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAA,cAAQ,EAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClE,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC3C,CAAC,CAAA,CAAC,CACH,CAAC;YACF,OAAO,YAAY,CAAC;QACtB,CAAC,CAAA,CAAC;QAEF,mBAAc,GAAG,CACf,SAAiB,EACjB,SAAoB,EACpB,OAAoB,EACpB,EAAE;YACF,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YAC3E,sBAAsB;YACtB,IAAI;gBACF,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC;gBAC3B,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAA,qBAAe,EAAC,KAAK,EAAE,IAAI,eAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBACxE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;oBAChD,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;oBACjC,QAAQ,EAAE,KAAK;oBACf,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI;iBAC9C,CAAC,CAAC;gBACH,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GACvC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;gBAC5D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;oBACzC,SAAS;oBACT,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;oBAC/B,oBAAoB;iBACrB,CAAC,CAAC;gBACH,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACnB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;gBAC3D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CACjE,QAAQ,CAAC,SAAS,EAAE,EACpB,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAE,IAAI,EAAE,CAC1D,CAAC;gBACF,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;aAC3E;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;gBACtC,MAAM,CAAC,CAAC;gBACR,gBAAgB;aACjB;YACD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAA,CAAC;QAEF,4BAAuB,GAAG,CAAO,SAAoB,EAAE,EAAE;YACvD,MAAM,OAAO,GAAG,MAAM,IAAA,wBAAc,EAClC,IAAI,CAAC,UAAU,CAAC,cAAc,EAC9B,SAAS,CACV,CAAC;YACF,OAAO,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QAChC,CAAC,CAAA,CAAC;QAEF,cAAS,GAAG,CACV,OAES,EACT,EAAE;YACF,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;YAC1B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;gBACjD,MAAM,EACJ,IAAI,EAAE,EAAE,MAAM,EAAE,GACjB,GAAG,KAAK,CAAC;gBACV,OAAO,MAAM,CAAC;aACf;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACF,6BAAwB,GAAG,CACzB,gBAAuC,EACvC,EAAE;YACF,IAAI;gBACF,MAAM,aAAa,GACjB,CAAC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,oBAAoB,CACxD,gBAAgB,CACjB,CAAQ,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;gBAC7C,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE;oBACpC,OAAO,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC;iBACzC;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,IAAI,CAAC;aACb;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAA,CAAC;QAEF,iCAA4B,GAAG,CAC7B,KAAgB,EAChB,WAAsB,EACtB,gBAA2B,EAC3B,mBAA8B,EAC9B,EAAE;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACrE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAA,cAAQ,EAAC,KAAK,EAAE,IAAI,eAAE,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,sBAAsB,CACzD,KAAK,EACL,CAAC,EACD,WAAW,CACZ,CAAC;YACF,MAAM,WAAW,GAAG,qBAAW,CAAC,SAAS,CAAC;gBACxC,gBAAgB,EAAE,gBAAgB;gBAClC,mBAAmB;gBACnB,qBAAqB,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;gBACnC,UAAU,EAAE,WAAW;aACxB,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAEnB,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CACjD,KAAK,EACL,KAAK,EACL,WAAW,EACX,CAAC,CACF,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAE1E,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GACvC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YAC5D,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACnC,SAAS;gBACT,oBAAoB;gBACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aAChC,CAAC,CAAC;YACH,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACnB,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACd,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACnB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CACjE,EAAE,CAAC,SAAS,EAAE,EACd;gBACE,aAAa,EAAE,IAAI;aACpB,CACF,CAAC;YACF,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC,CAAA,CAAC;QAEF,uCAAkC,GAAG,CACnC,KAAgB,EAChB,IAA8B,EAC9B,OAAe,EACf,cAAsB,CAAC,EACT,EAAE;YAChB,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE,wDAC5C,OAAA,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA,GAAA,CAC3E,CAAC;YACF,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE;gBACzD,OAAA,6BAA6B,CAC3B,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,CACnD,CAAA;cAAA,CACF,CAAC;YAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CACnC,KAAK,EACL,KAAK,EACL,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,OAAO,CACR,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE;gBAC7C,OAAA,6BAA6B,CAC3B,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CACnD,CAAA;cAAA,CACF,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAE1E,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE9B,MAAM,YAAY,GAA8B,EAAE,CAAC;YACnD,IAAI,sBAAsB,GAAG,CAAC,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CACxC,MAAM,UAAU,CAAC,GAAS,EAAE;oBAC1B,OAAA,6BAA6B,CAC3B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CACpD,CAAA;kBAAA,CACF,CACF,CAAC;gBACF,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9D,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBAExC,qEAAqE;gBACrE,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC,UAAU,GAAG,IAAI,EAAE;oBAC/C,wBAAwB;oBACxB,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE;wBACtE,OAAA,6BAA6B,CAC3B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CACpD,CAAA;sBAAA,CACF,CAAC;oBACF,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;wBACrC,SAAS;wBACT,oBAAoB;wBACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;qBAChC,CAAC,CAAC;oBACH,MAAM,OAAO,GAAG,IAAA,6CAAqC,EACnD,YAAY,EACZ,8BAA8B,GAAG,WAAW,CAC7C,CAAC;oBACF,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;oBACnB,EAAE,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAE9D,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAEtB,sBAAsB,GAAG,CAAC,GAAG,CAAC,CAAC;iBAChC;aACF;YACD,gBAAgB;YAChB,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE;gBAChD,OAAA,6BAA6B,CAC3B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CACpD,CAAA;cAAA,CACF,CAAC;YACF,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACrC,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,oBAAoB,EAAE,aAAa,CAAC,oBAAoB;gBACxD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aAChC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,6CAAqC,EACnD,YAAY,EACZ,8BAA8B,GAAG,WAAW,CAC7C,CAAC;YACF,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;YACnB,EAAE,CAAC,GAAG,CACJ,GAAG,aAAa,CAAC,KAAK,CAAC,sBAAsB,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CACzE,CAAC;YAEF,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEtB,WAAW;YACX,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,YAAY,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;YACjE,MAAM,kBAAkB,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE;gBACrD,OAAA,6BAA6B,CAC3B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAC9C,CAAA;cAAA,CACF,CAAC;YAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAC9D,OAAO,CAAC,GAAG,CACT,2BAA2B;oBACzB,CAAC,KAAK,GAAG,CAAC,CAAC;oBACX,GAAG;oBACH,kBAAkB,CAAC,MAAM,CAC5B,CAAC;gBAEF,MAAM,qBAAqB,CACzB,GAAS,EAAE;oBACT,OAAA,6BAA6B,CAC3B,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CACpD,CAAA;kBAAA,EACH,GAAS,EAAE;oBACT,OAAA,6BAA6B,CAC3B,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAClD,CAAA;kBAAA,CACJ,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;aAC3C;YACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,MAAM,KAAK,GACT,oCAAoC;gBACpC,cAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC5C,MAAM;gBACN,KAAK,CAAC;YAER,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC,CAAA,CAAC;QAEF,wBAAmB,GAAG,CAAO,EAA2B,EAAgB,EAAE;YACxE,MAAM,GAAG,GAAG,MAAM,IAAA,6CAAqC,EAAC;gBACtD,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;gBAC9C,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,oBAAoB;gBACtD,EAAE,EAAE,EAAE;gBACN,UAAU,EAAE,WAAW;gBACvB,sBAAsB,EAAE;oBACtB,UAAU,EAAE,CAAC;oBACb,mBAAmB,EAAE,WAAW;iBACjC;aACF,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;YAEhC,OAAO,GAAG,CAAC;QACb,CAAC,CAAA,CAAC;QAEF,4BAAuB,GAAG,CACxB,EAA2B,EACb,EAAE;YAChB,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAC3B,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE;gBAChD,OAAA,6BAA6B,CAC3B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CACpD,CAAA;cAAA,CACF,CAAC;YACF,EAAE,CAAC,eAAe,GAAG,aAAa,CAAC,SAAS,CAAC;YAC7C,EAAE,CAAC,oBAAoB,GAAG,aAAa,CAAC,oBAAoB,CAAC;YAC7D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE,wDAC3C,OAAA,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAA,GAAA,CAC/D,CAAC;YAEF,MAAM,GAAG,GAAG,MAAM,IAAA,6CAAqC,EAAC;gBACtD,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;gBAC9C,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,oBAAoB;gBACtD,EAAE,EAAE,QAAQ;gBACZ,UAAU,EAAE,WAAW;gBACvB,sBAAsB,EAAE;oBACtB,UAAU,EAAE,CAAC;oBACb,mBAAmB,EAAE,WAAW;iBACjC;aACF,CAAC,CAAC;YACH,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;YAEhC,OAAO,GAAG,CAAC;QACb,CAAC,CAAA,CAAC;QAEF,0BAAqB,GAAG,CACtB,KAAgB,EAChB,SAAoB,EACpB,gBAA2B,EAC3B,YAAuB,EACvB,EAAE;YACF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;YACrE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,IAAA,cAAQ,EAAC,KAAK,EAAE,IAAI,eAAE,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3E,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,sBAAsB,CACzD,KAAK,EACL,CAAC,EACD,WAAW,CACZ,CAAC;YACF,MAAM,EAAE,GAAG,MAAM,IAAA,+BAAqB,EACpC,SAAS,EACT,gBAAgB,EAChB,YAAY,CACb,CAAC;YAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACzE,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5E,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAE1E,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GACvC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YAC5D,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACnC,SAAS;gBACT,oBAAoB;gBACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aAChC,CAAC,CAAC;YACH,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACnB,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACd,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACnB,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CACjE,EAAE,CAAC,SAAS,EAAE,EACd;gBACE,aAAa,EAAE,IAAI;aACpB,CACF,CAAC;YACF,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAC1E,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC,CAAA,CAAC;QAEF,uBAAkB,GAAG,CAAO,EAAa,EAAE,EAAE;YAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAA,CAAC;QAEF,uBAAkB,GAAG,CAAO,EAAa,EAAE,EAAa,EAAE,EAAE;YAC1D,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC,CAAA,CAAC;QAEF,8BAAyB,GAAG,CAAO,EAAa,EAAE,EAAE;YAClD,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;QACjD,CAAC,CAAA,CAAC;QAEF,8BAAyB,GAAG,CAAO,EAAa,EAAE,EAAa,EAAE,EAAE;YACjE,OAAO,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACrD,CAAC,CAAA,CAAC;QAEF,uBAAkB,GAAG,CAAO,EAAa,EAAgB,EAAE;YACzD,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAA,CAAC;QAEF,sBAAiB,GAAG,CAAO,EAAa,EAAE,EAAE;YAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAA,CAAC;QAEF,sBAAiB,GAAG,CAAO,EAAa,EAAE,EAAE;YAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAA,CAAC;QAEF,sBAAiB,GAAG,CAAO,KAAgB,EAAE,GAAc,EAAE,EAAE;YAC7D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpE,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,MAAM,CACpC,MAAM,SAAS,CAAC,aAAa,CAAC,GAAG,CAAC,CACnC,CAAC,eAAe,EAAE,CAAC;YACpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,GAAG,CACT,0BAA0B,EAC1B,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CACxC,CAAC;YACF,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GACvC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YAC5D,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACnC,SAAS;gBACT,oBAAoB;gBACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aAChC,CAAC,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YAChE,IAAI,KAAK,EAAE;gBACT,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aACf;YACD,EAAE,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;YAC1B,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAEnB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CACjE,EAAE,CAAC,SAAS,EAAE,EACd;gBACE,aAAa,EAAE,IAAI;aACpB,CACF,CAAC;YACF,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAE1E,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAA,CAAC;QAEF,yBAAoB,GAAG,CAAO,KAAgB,EAAE,GAAc,EAAE,EAAE;YAChE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpE,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,MAAM,CACpC,MAAM,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CACtC,CAAC,eAAe,EAAE,CAAC;YACpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAE5E,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GACvC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YAC5D,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACnC,SAAS;gBACT,oBAAoB;gBACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aAChC,CAAC,CAAC;YAEH,EAAE,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;YAC1B,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAEnB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CACjE,EAAE,CAAC,SAAS,EAAE,EACd;gBACE,aAAa,EAAE,IAAI;aACpB,CACF,CAAC;YACF,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAE1E,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAA,CAAC;QAEF,+BAA0B,GAAG,CAAO,KAAgB,EAAE,SAAiB,EAAE,EAAE;YACzE,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACpE,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,GAAG,MAAM,CACpC,MAAM,SAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAC/C,CAAC,eAAe,EAAE,CAAC;YACpB,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAE5E,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GACvC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YAC5D,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACnC,SAAS;gBACT,oBAAoB;gBACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aAChC,CAAC,CAAC;YAEH,EAAE,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;YAC1B,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAEnB,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CACjE,EAAE,CAAC,SAAS,EAAE,EACd;gBACE,aAAa,EAAE,IAAI;aACpB,CACF,CAAC;YACF,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;YAE1E,MAAM,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAA,CAAC;QAviBA,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,aAAM,CAAC,QAAQ,CAC3B,UAAU,CAAC,cAAc,CAAC,WAAW,EACrC,MAAM,EACN;YACE,kBAAkB,EAAE,WAAW;YAC/B,iBAAiB,EAAE,IAAI,CAAC,SAAS;YACjC,uBAAuB,EAAE,IAAI,CAAC,gBAAgB;SAC/C,CACF,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,MAAM,CAAC,cAAc,CACvC,IAAI,CAAC,UAAU,CAAC,cAAc,EAC9B,IAAI,CAAC,MAAM,EACX;YACE,mBAAmB,EAAE,WAAW;YAChC,UAAU,EAAE,WAAW;SACxB,CACF,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,MAAM,CAAC,OAAO,CAC/B,WAAiB,EACjB,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IA8gBD,iBAAiB,CAAC,KAAgB,EAAE,cAAsB;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;IAC9D,CAAC;IAED,cAAc,CACZ,KAAgB,EAChB,EAAsC;QAEtC,MAAM,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC;YAClD,IAAI,EAAE,EAAE,CAAC,IAAI;YACb,SAAS,EAAE,EAAE,CAAC,SAAS;YACvB,IAAI,EAAE,EAAE,CAAC,IAAI;SACd,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAEK,QAAQ,CAAC,KAAgB;;YAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChD,CAAC;KAAA;IAEK,gBAAgB,CAAC,EAA8B;;YACnD,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,CAC9D,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,WAAW,CACZ,CAAC;gBACF,MAAM,GAAG,GAAG,QAAQ,GAAG,0BAAgB,CAAC;gBACxC,IAAI,EAAE,EAAE;oBACN,EAAE,CAAC,GAAG,CAAC,CAAC;iBACT;gBACD,OAAO,GAAG,CAAC;aACZ;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,CAAC,CAAC;aACV;QACH,CAAC;KAAA;IAEK,SAAS,CAAC,IAAe,EAAE,KAAgB;;YAC/C,MAAM,SAAS,GAAG,MAAM,IAAA,qCAAyB,EAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;YACrE,MAAM,WAAW,GAAG,IAAA,mDAAuC,EACzD,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,SAAS,EACT,KAAK,EACL,IAAI,CACL,CAAC;YAEF,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GACvC,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YAC5D,IAAI,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACnC,SAAS;gBACT,oBAAoB;gBACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aAChC,CAAC,CAAC;YACH,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACpB,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE;gBACtE,aAAa,EAAE,IAAI;aACpB,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;KAAA;IAED,eAAe,CACb,KAAgB,EAChB,KAAgB,EAChB,MAAiB,EACjB,KAAa;QAEb,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YACzC,cAAc,GAAG,EAAE,CAAC,SAAS,CAAC;YAC9B,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,KAAK;YACZ,WAAW,EAAE,EAAE;YACf,IAAI,EAAE,WAAW;YACjB,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE;YACvB,YAAY,EAAE,YAAY;YAC1B,cAAc,EAAE,cAAc;SAC/B,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACnD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,EAAE,CAAC;QAExB,YAAY,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,MAAM;YACd,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,YAAY,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QAEH,YAAY,CAAC,IAAI,CAAC;YAChB,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC;QAEH,MAAM,UAAU,GAAG,IAAI,eAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,aAAa;YACb,UAAU,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YACvC,IAAI;SACL,CAAC,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,gCAAsB,CAAC;YACrC,IAAI,EAAE,YAAY;YAClB,SAAS,EAAE,IAAI,mBAAS,CAAC,6BAAiB,CAAC;YAC3C,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC;IACb,CAAC;IAEK,oBAAoB,CACxB,iBAA4B,EAC5B,KAAgB,EAChB,SAAoB,EACpB,MAAiB,EACjB,aAAwB,EACxB,KAAa;;YAEb,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAA,0BAAoB,EAC9C,KAAK,EACL,IAAI,mBAAS,CAAC,sCAA0B,CAAC,CAC1C,CAAC;YACF,MAAM,CAAC,iBAAiB,CAAC,GAAG,IAAA,0BAAoB,EAC9C,iBAAiB,EACjB,IAAI,eAAE,CAAC,CAAC,CAAC,EACT,IAAI,mBAAS,CAAC,sCAA0B,CAAC,CAC1C,CAAC;YACF,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CACxD,iBAAiB,CAClB,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBACpD,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;aAChE;YAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;YAE3C,OAAO,MAAM,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAC3C,KAAK,EACL,iBAAiB,EACjB,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,KAAK,CACN,CAAC;QACJ,CAAC;KAAA;IAEK,wBAAwB,CAC5B,qBAA4C,EAC5C,KAAgB,EAChB,OAAe,EACf,WAAmB;;YAEnB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE,wDAC5C,OAAA,6BAA6B,CAAC,IAAI,CAAC,MAAM,CAAC,qBAAqB,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA,GAAA,CAC3E,CAAC;YAEF,MAAM,GAAG,GAAG,IAAI,gCAAsB,CAAC;gBACrC,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,QAAQ;gBAC9C,SAAS,EAAE,qBAAqB,CAAC,SAAS,CAAC,SAAS;gBACpD,IAAI,EAAE,qBAAqB,CAAC,SAAS,CAAC,sBAAsB;aAC7D,CAAC,CAAC;YAEH,MAAM,CAAC,aAAa,EAAE,KAAK,CAAC,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE;gBACzD,OAAA,6BAA6B,CAC3B,SAAS,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,CAClD,CAAA;cAAA,CACF,CAAC;YAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CACnC,KAAK,EACL,KAAK,EACL,IAAI,CAAC,MAAM,CAAC,SAAS,EACrB,OAAO,CACR,CAAC;YACF,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE;gBAC7C,OAAA,6BAA6B,CAC3B,IAAI,CAAC,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,CAAC,CACnD,CAAA;cAAA,CACF,CAAC;YACF,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAE1E,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7B,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC/B,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE9B,MAAM,YAAY,GAA8B,EAAE,CAAC;YACnD,IAAI,sBAAsB,GAAG,CAAC,CAAC;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC9C,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CACxC,MAAM,UAAU,CAAC,GAAS,EAAE;oBAC1B,OAAA,6BAA6B,CAC3B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CACpD,CAAA;kBAAA,CACF,CACF,CAAC;gBACF,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC,CAAC;gBAC9D,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;gBAExC,qEAAqE;gBACrE,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC,UAAU,GAAG,IAAI,EAAE;oBAC/C,wBAAwB;oBACxB,MAAM,EAAE,SAAS,EAAE,oBAAoB,EAAE,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE;wBACtE,OAAA,6BAA6B,CAC3B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CACpD,CAAA;sBAAA,CACF,CAAC;oBACF,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;wBACrC,SAAS;wBACT,oBAAoB;wBACpB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;qBAChC,CAAC,CAAC;oBACH,MAAM,OAAO,GAAG,IAAA,6CAAqC,EACnD,YAAY,EACZ,8BAA8B,GAAG,WAAW,CAC7C,CAAC;oBACF,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;oBACnB,EAAE,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,KAAK,CAAC,sBAAsB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBAE9D,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAEtB,sBAAsB,GAAG,CAAC,GAAG,CAAC,CAAC;iBAChC;aACF;YACD,gBAAgB;YAChB,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE;gBAChD,OAAA,6BAA6B,CAC3B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,kBAAkB,EAAE,CACpD,CAAA;cAAA,CACF,CAAC;YACF,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC;gBACrC,SAAS,EAAE,aAAa,CAAC,SAAS;gBAClC,oBAAoB,EAAE,aAAa,CAAC,oBAAoB;gBACxD,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS;aAChC,CAAC,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,6CAAqC,EACnD,YAAY,EACZ,8BAA8B,GAAG,WAAW,CAC7C,CAAC;YACF,EAAE,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;YACnB,EAAE,CAAC,GAAG,CACJ,GAAG,aAAa,CAAC,KAAK,CAAC,sBAAsB,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CACzE,CAAC;YAEF,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEtB,WAAW;YACX,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,YAAY,CAAC,MAAM,GAAG,gBAAgB,CAAC,CAAC;YACjE,MAAM,kBAAkB,GAAG,MAAM,UAAU,CAAC,GAAS,EAAE;gBACrD,OAAA,6BAA6B,CAC3B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAC9C,CAAA;cAAA,CACF,CAAC;YAEF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;gBAC9D,OAAO,CAAC,GAAG,CACT,2BAA2B;oBACzB,CAAC,KAAK,GAAG,CAAC,CAAC;oBACX,GAAG;oBACH,kBAAkB,CAAC,MAAM,CAC5B,CAAC;gBAEF,MAAM,qBAAqB,CACzB,GAAS,EAAE;oBACT,OAAA,6BAA6B,CAC3B,IAAI,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CACpD,CAAA;kBAAA,EACH,GAAS,EAAE;oBACT,OAAA,6BAA6B,CAC3B,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAClD,CAAA;kBAAA,CACJ,CAAC;gBACF,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;aAC3C;YACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,MAAM,KAAK,GACT,oCAAoC;gBACpC,cAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAC5C,MAAM;gBACN,KAAK,CAAC;YAER,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACxB,CAAC;KAAA;CACF;AAED,SAAsB,UAAU,CAC9B,EAAsB,EACtB,WAAW,GAAG,CAAC,EACf,QAAQ,GAAG,IAAI;;QAEf,IAAI;YACF,OAAO,MAAM,EAAE,EAAE,CAAC;SACnB;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,WAAW,EAAE;gBACf,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC9D,OAAO,MAAM,UAAU,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;aACxD;YACD,MAAM,KAAK,CAAC;SACb;IACH,CAAC;CAAA;AAdD,gCAcC;AAED,SAAsB,qBAAqB,CACzC,QAA4B,EAC5B,EAAsB,EACtB,WAAW,GAAG,CAAC,EACf,QAAQ,GAAG,IAAI;;QAEf,IAAI;YACF,OAAO,MAAM,QAAQ,EAAE,CAAC;SACzB;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,WAAW,EAAE;gBACf,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;gBAC9D,OAAO,MAAM,UAAU,CAAC,EAAE,EAAE,WAAW,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;aACxD;YACD,MAAM,KAAK,CAAC;SACb;IACH,CAAC;CAAA;AAfD,sDAeC;AAED,SAAgB,6BAA6B,CAC3C,OAAqB;IAErB,OAAO,OAAO,CAAC;AACjB,CAAC;AAJD,sEAIC;AAED,kBAAe,GAAG,CAAC","sourcesContent":["import Squads, {\n getTxPDA,\n getAuthorityPDA,\n getManagedProgramPDA,\n getProgramManagerPDA,\n ProgramUpgradeAccount,\n} from \"@sqds/sdk\";\nimport * as anchor from \"@coral-xyz/anchor\";\nimport BN from \"bn.js\";\nimport {\n createAddExtraComputeUnitsTransaction,\n idl,\n sendAndConfirmRawTransactionWithRetry,\n Web3Client,\n} from \"../index\";\nimport {\n createAssociatedTokenAccountInstruction,\n getAssociatedTokenAddress,\n} from \"@solana/spl-token\";\nimport { Wallet } from \"@coral-xyz/anchor\";\nimport {\n LAMPORTS_PER_SOL,\n PublicKey,\n TransactionInstruction,\n VoteProgram,\n} from \"@solana/web3.js\";\nimport { getProgramData, upgradeSetAuthorityIx } from \"./program\";\nimport { PROGRAM_MANAGER_PROGRAM_ID, TXMETA_PROGRAM_ID } from \"./constants\";\nimport { base64 } from \"@coral-xyz/anchor/dist/cjs/utils/bytes\";\n\nconst microLamport = 10 ** 6; // 1 lamport\nconst computeUnits = 200_000;\nconst microLamportsPrioritizationFee = microLamport / computeUnits;\n\nclass API {\n squads;\n wallet;\n web3Client: Web3Client;\n cluster;\n programId: PublicKey;\n program;\n provider;\n programManagerId: PublicKey;\n constructor(\n wallet: Wallet,\n web3Client: Web3Client,\n programId: PublicKey,\n programManagerId: PublicKey\n ) {\n this.programId = programId;\n this.programManagerId = programManagerId;\n this.squads = Squads.endpoint(\n web3Client.sendConnection.rpcEndpoint,\n wallet,\n {\n commitmentOrConfig: \"confirmed\",\n multisigProgramId: this.programId,\n programManagerProgramId: this.programManagerId,\n }\n );\n this.wallet = wallet;\n this.cluster = web3Client.connection.rpcEndpoint;\n this.web3Client = web3Client;\n this.provider = new anchor.AnchorProvider(\n this.web3Client.sendConnection,\n this.wallet,\n {\n preflightCommitment: \"confirmed\",\n commitment: \"confirmed\",\n }\n );\n this.program = new anchor.Program(\n idl as anchor.Idl,\n this.programId,\n this.provider\n );\n }\n\n getSquadExtended = async (ms: PublicKey) => {\n return this.squads.getMultisig(ms);\n };\n\n getSquads = async () => {\n const allSquads = await this.program.account.ms.all();\n const mySquads = allSquads\n .filter((s: any) => {\n const mappedKeys = s.account.keys.map((k: PublicKey) => k.toBase58());\n if (mappedKeys.indexOf(this.wallet.publicKey.toBase58()) >= 0) {\n return true;\n }\n return false;\n })\n .map((s) => s.publicKey);\n return Promise.all(mySquads.map((k) => this.getSquadExtended(k)));\n };\n\n getTransactions = async (ms: any) => {\n const txIndex = ms.transactionIndex;\n const transactions = await Promise.all(\n [...new Array(txIndex)].map(async (_, i) => {\n const ind = new BN(i + 1);\n const [txPDA] = await getTxPDA(ms.publicKey, ind, this.programId);\n return this.squads.getTransaction(txPDA);\n })\n );\n return transactions;\n };\n\n createMultisig = async (\n threshold: number,\n createKey: PublicKey,\n members: PublicKey[]\n ) => {\n const tx = await this.squads.createMultisig(threshold, createKey, members);\n // try to fund the PDA\n try {\n const msPDA = tx.publicKey;\n const [vault] = await getAuthorityPDA(msPDA, new BN(1), this.programId);\n const fundIx = anchor.web3.SystemProgram.transfer({\n fromPubkey: this.wallet.publicKey,\n toPubkey: vault,\n lamports: anchor.web3.LAMPORTS_PER_SOL / 1000,\n });\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n const fundTx = new anchor.web3.Transaction({\n blockhash,\n feePayer: this.wallet.publicKey,\n lastValidBlockHeight,\n });\n fundTx.add(fundIx);\n const signedTx = await this.wallet.signTransaction(fundTx);\n const sig = await this.web3Client.sendConnection.sendRawTransaction(\n signedTx.serialize(),\n { preflightCommitment: \"confirmed\", skipPreflight: true }\n );\n await this.web3Client.sendConnection.confirmTransaction(sig, \"confirmed\");\n } catch (e) {\n console.log(\"Error funding vault\", e);\n throw e;\n // couldn't fund\n }\n return tx;\n };\n\n getProgramDataAuthority = async (programId: PublicKey) => {\n const program = await getProgramData(\n this.web3Client.sendConnection,\n programId\n );\n return program.info.authority;\n };\n\n getParsed = (\n account: anchor.web3.RpcResponseAndContext<anchor.web3.AccountInfo<\n Buffer | anchor.web3.ParsedAccountData\n > | null>\n ) => {\n const { value } = account;\n if (value && value.data && \"parsed\" in value.data) {\n const {\n data: { parsed },\n } = value;\n return parsed;\n }\n return null;\n };\n getValidatorWithdrawAuth = async (\n validatorAddress: anchor.web3.PublicKey\n ) => {\n try {\n const parsedAccount =\n (await this.web3Client.sendConnection.getParsedAccountInfo(\n validatorAddress\n )) as any;\n const parsed = this.getParsed(parsedAccount);\n if (parsed && parsed.type === \"vote\") {\n return parsed.info.authorizedWithdrawer;\n }\n } catch (e) {\n return null;\n }\n return null;\n };\n\n createTransferWithdrawAuthTx = async (\n msPDA: PublicKey,\n validatorId: PublicKey,\n currentAuthority: PublicKey,\n newAuthorizedPubkey: PublicKey\n ) => {\n const nextTxIndex = await this.squads.getNextTransactionIndex(msPDA);\n const [txPDA] = await getTxPDA(msPDA, new BN(nextTxIndex), this.programId);\n const createTxIx = await this.squads.buildCreateTransaction(\n msPDA,\n 1,\n nextTxIndex\n );\n const authorizeIx = VoteProgram.authorize({\n authorizedPubkey: currentAuthority,\n newAuthorizedPubkey,\n voteAuthorizationType: { index: 1 },\n votePubkey: validatorId,\n }).instructions[0];\n\n const addIx = await this.squads.buildAddInstruction(\n msPDA,\n txPDA,\n authorizeIx,\n 1\n );\n const activateIx = await this.squads.buildActivateTransaction(msPDA, txPDA);\n const approveIx = await this.squads.buildApproveTransaction(msPDA, txPDA);\n\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n let tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n tx.add(createTxIx);\n tx.add(addIx);\n tx.add(activateIx);\n tx.add(approveIx);\n console.log(\"Transaction composed\");\n tx = await this.wallet.signTransaction(tx);\n console.log(\"Transaction signed\");\n console.log(\"Sending\");\n const sig = await this.web3Client.sendConnection.sendRawTransaction(\n tx.serialize(),\n {\n skipPreflight: true,\n }\n );\n await this.web3Client.sendConnection.confirmTransaction(sig, \"confirmed\");\n console.log(\"Transaction sent\");\n return txPDA;\n };\n\n createActivateAndApproveTxWithIxns = async (\n msPDA: PublicKey,\n ixns: TransactionInstruction[],\n txTitle: string,\n multiplyFee: number = 1\n ): Promise<any> => {\n const txBuilder = await retryAsync(async () =>\n noopProfiledFunctionExecution(this.squads.getTransactionBuilder(msPDA, 1))\n );\n const [txBuilderIxns, txPda] = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n txBuilder.withInstructions(ixns).getInstructions()\n )\n );\n\n const titleIxn = this.txTitleUpdateIx(\n msPDA,\n txPda,\n this.wallet.publicKey,\n txTitle\n );\n const activateIx = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.squads.buildActivateTransaction(msPDA, txPda)\n )\n );\n const approveIx = await this.squads.buildApproveTransaction(msPDA, txPda);\n\n txBuilderIxns.push(titleIxn);\n txBuilderIxns.push(activateIx);\n txBuilderIxns.push(approveIx);\n\n const transactions: anchor.web3.Transaction[] = [];\n let txBuilderIxnStartIndex = 0;\n for (let i = 1; i <= txBuilderIxns.length; i++) {\n const testTx = new anchor.web3.Transaction(\n await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n )\n );\n testTx.add(...txBuilderIxns.slice(txBuilderIxnStartIndex, i));\n testTx.feePayer = this.wallet.publicKey;\n\n // Txn size too large, create txn with all ixns exlcuding current one\n if (testTx.serializeMessage().byteLength > 1020) {\n // size before signature\n const { blockhash, lastValidBlockHeight } = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n );\n const tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n const feeIxns = createAddExtraComputeUnitsTransaction(\n computeUnits,\n microLamportsPrioritizationFee * multiplyFee\n );\n tx.add(...feeIxns);\n tx.add(...txBuilderIxns.slice(txBuilderIxnStartIndex, i - 1));\n\n transactions.push(tx);\n\n txBuilderIxnStartIndex = i - 1;\n }\n }\n // send last one\n const blockhashInfo = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n );\n const tx = new anchor.web3.Transaction({\n blockhash: blockhashInfo.blockhash,\n lastValidBlockHeight: blockhashInfo.lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n const feeIxns = createAddExtraComputeUnitsTransaction(\n computeUnits,\n microLamportsPrioritizationFee * multiplyFee\n );\n tx.add(...feeIxns);\n tx.add(\n ...txBuilderIxns.slice(txBuilderIxnStartIndex, txBuilderIxns.length + 1)\n );\n\n transactions.push(tx);\n\n // sign all\n console.log(\"Signing \" + transactions.length + \" transactions \");\n const transactionsSigned = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.wallet.signAllTransactions(transactions)\n )\n );\n\n for (let index = 0; index < transactionsSigned.length; index++) {\n console.log(\n \"Sending transaction step \" +\n (index + 1) +\n \"/\" +\n transactionsSigned.length\n );\n\n await retryAsyncFirstSigned(\n async () =>\n noopProfiledFunctionExecution(\n this.sendAndConfirmRawTx(transactionsSigned[index])\n ),\n async () =>\n noopProfiledFunctionExecution(\n this.signSendAndConfirmRawTx(transactions[index])\n )\n );\n console.log(\"Transaction step succeeded\");\n }\n console.log(\"Transaction created\");\n const txUrl =\n \"https://v3.squads.so/transactions/\" +\n base64.encode(Buffer.from(msPDA.toBase58())) +\n \"/tx/\" +\n txPda;\n\n return [txPda, txUrl];\n };\n\n sendAndConfirmRawTx = async (tx: anchor.web3.Transaction): Promise<any> => {\n const sig = await sendAndConfirmRawTransactionWithRetry({\n mainConnection: this.web3Client.sendConnection,\n extraConnections: this.web3Client.sendConnectionsExtra,\n tx: tx,\n commitment: \"confirmed\",\n sendTransactionOptions: {\n maxRetries: 5,\n preflightCommitment: \"confirmed\",\n },\n });\n\n console.log(\"Signature: \", sig);\n\n return sig;\n };\n\n signSendAndConfirmRawTx = async (\n tx: anchor.web3.Transaction\n ): Promise<any> => {\n console.log(\"Resiging...\");\n const blockhashInfo = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n );\n tx.recentBlockhash = blockhashInfo.blockhash;\n tx.lastValidBlockHeight = blockhashInfo.lastValidBlockHeight;\n const signedTx = await retryAsync(async () =>\n noopProfiledFunctionExecution(this.wallet.signTransaction(tx))\n );\n\n const sig = await sendAndConfirmRawTransactionWithRetry({\n mainConnection: this.web3Client.sendConnection,\n extraConnections: this.web3Client.sendConnectionsExtra,\n tx: signedTx,\n commitment: \"confirmed\",\n sendTransactionOptions: {\n maxRetries: 5,\n preflightCommitment: \"confirmed\",\n },\n });\n console.log(\"Signature: \", sig);\n\n return sig;\n };\n\n createSafeAuthorityTx = async (\n msPDA: PublicKey,\n programId: PublicKey,\n currentAuthority: PublicKey,\n newAuthority: PublicKey\n ) => {\n const nextTxIndex = await this.squads.getNextTransactionIndex(msPDA);\n const [txPDA] = await getTxPDA(msPDA, new BN(nextTxIndex), this.programId);\n const createTxIx = await this.squads.buildCreateTransaction(\n msPDA,\n 1,\n nextTxIndex\n );\n const ix = await upgradeSetAuthorityIx(\n programId,\n currentAuthority,\n newAuthority\n );\n\n const addIx = await this.squads.buildAddInstruction(msPDA, txPDA, ix, 1);\n const activateIx = await this.squads.buildActivateTransaction(msPDA, txPDA);\n const approveIx = await this.squads.buildApproveTransaction(msPDA, txPDA);\n\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n let tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n tx.add(createTxIx);\n tx.add(addIx);\n tx.add(activateIx);\n tx.add(approveIx);\n console.log(\"Transaction composed\");\n tx = await this.wallet.signTransaction(tx);\n console.log(\"Transaction signed\");\n console.log(\"Sending\");\n const sig = await this.web3Client.sendConnection.sendRawTransaction(\n tx.serialize(),\n {\n skipPreflight: true,\n }\n );\n await this.web3Client.sendConnection.confirmTransaction(sig, \"confirmed\");\n console.log(\"Transaction sent\");\n return txPDA;\n };\n\n executeTransaction = async (tx: PublicKey) => {\n return this.squads.executeTransaction(tx);\n };\n\n executeInstruction = async (tx: PublicKey, ix: PublicKey) => {\n return this.squads.executeInstruction(tx, ix);\n };\n\n executeTransactionBuilder = async (tx: PublicKey) => {\n return this.squads.buildExecuteTransaction(tx);\n };\n\n executeInstructionBuilder = async (tx: PublicKey, ix: PublicKey) => {\n return this.squads.buildExecuteInstruction(tx, ix);\n };\n\n approveTransaction = async (tx: PublicKey): Promise<any> => {\n return this.squads.approveTransaction(tx);\n };\n\n rejectTransaction = async (tx: PublicKey) => {\n return this.squads.rejectTransaction(tx);\n };\n\n cancelTransaction = async (tx: PublicKey) => {\n return this.squads.cancelTransaction(tx);\n };\n\n addKeyTransaction = async (msPDA: PublicKey, key: PublicKey) => {\n const txBuilder = await this.squads.getTransactionBuilder(msPDA, 0);\n const [txInstructions, txPDA] = await (\n await txBuilder.withAddMember(key)\n ).getInstructions();\n const activateIx = await this.squads.buildActivateTransaction(msPDA, txPDA);\n console.log(\n \"transaction instructions\",\n JSON.stringify(txInstructions, null, 2)\n );\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n let tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n const topup = await this.squads.checkGetTopUpInstruction(msPDA);\n if (topup) {\n tx.add(topup);\n }\n tx.add(...txInstructions);\n tx.add(activateIx);\n\n console.log(\"Transaction composed\");\n tx = await this.wallet.signTransaction(tx);\n console.log(\"Transaction signed\");\n console.log(\"Sending\");\n const sig = await this.web3Client.sendConnection.sendRawTransaction(\n tx.serialize(),\n {\n skipPreflight: true,\n }\n );\n await this.web3Client.sendConnection.confirmTransaction(sig, \"confirmed\");\n\n await this.squads.approveTransaction(txPDA);\n return this.squads.getTransaction(txPDA);\n };\n\n removeKeyTransaction = async (msPDA: PublicKey, key: PublicKey) => {\n const txBuilder = await this.squads.getTransactionBuilder(msPDA, 0);\n const [txInstructions, txPDA] = await (\n await txBuilder.withRemoveMember(key)\n ).getInstructions();\n const activateIx = await this.squads.buildActivateTransaction(msPDA, txPDA);\n\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n let tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n\n tx.add(...txInstructions);\n tx.add(activateIx);\n\n console.log(\"Transaction composed\");\n tx = await this.wallet.signTransaction(tx);\n console.log(\"Transaction signed\");\n console.log(\"Sending\");\n const sig = await this.web3Client.sendConnection.sendRawTransaction(\n tx.serialize(),\n {\n skipPreflight: true,\n }\n );\n await this.web3Client.sendConnection.confirmTransaction(sig, \"confirmed\");\n\n await this.squads.approveTransaction(txPDA);\n return this.squads.getTransaction(txPDA);\n };\n\n changeThresholdTransaction = async (msPDA: PublicKey, threshold: number) => {\n const txBuilder = await this.squads.getTransactionBuilder(msPDA, 0);\n const [txInstructions, txPDA] = await (\n await txBuilder.withChangeThreshold(threshold)\n ).getInstructions();\n const activateIx = await this.squads.buildActivateTransaction(msPDA, txPDA);\n\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n let tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n\n tx.add(...txInstructions);\n tx.add(activateIx);\n\n console.log(\"Transaction composed\");\n tx = await this.wallet.signTransaction(tx);\n console.log(\"Transaction signed\");\n console.log(\"Sending\");\n const sig = await this.web3Client.sendConnection.sendRawTransaction(\n tx.serialize(),\n {\n skipPreflight: true,\n }\n );\n await this.web3Client.sendConnection.confirmTransaction(sig, \"confirmed\");\n\n await this.squads.approveTransaction(txPDA);\n return this.squads.getTransaction(txPDA);\n };\n\n createTransaction(msPDA: PublicKey, authorityIndex: number): Promise<any> {\n return this.squads.createTransaction(msPDA, authorityIndex);\n }\n\n addInstruction(\n txPDA: PublicKey,\n ix: anchor.web3.TransactionInstruction\n ): Promise<any> {\n const txIx = new anchor.web3.TransactionInstruction({\n keys: ix.keys,\n programId: ix.programId,\n data: ix.data,\n });\n return this.squads.addInstruction(txPDA, txIx);\n }\n\n async activate(txPDA: PublicKey): Promise<any> {\n return this.squads.activateTransaction(txPDA);\n }\n\n async getWalletBalance(cb?: (balance: number) => void) {\n try {\n const lamports = await this.web3Client.sendConnection.getBalance(\n this.wallet.publicKey,\n \"processed\"\n );\n const SOL = lamports / LAMPORTS_PER_SOL;\n if (cb) {\n cb(SOL);\n }\n return SOL;\n } catch (e) {\n return 0;\n }\n }\n\n async createATA(mint: PublicKey, owner: PublicKey) {\n const ataPubkey = await getAssociatedTokenAddress(mint, owner, true);\n const createATAIx = createAssociatedTokenAccountInstruction(\n this.wallet.publicKey,\n ataPubkey,\n owner,\n mint\n );\n\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n let tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n tx.add(createATAIx);\n tx = await this.wallet.signTransaction(tx);\n await this.web3Client.sendConnection.sendRawTransaction(tx.serialize(), {\n skipPreflight: true,\n });\n return ataPubkey;\n }\n\n txTitleUpdateIx(\n msPDA: PublicKey,\n txPDA: PublicKey,\n member: PublicKey,\n title: string\n ): TransactionInstruction {\n let trackThreshold = 0;\n let trackMembers = 0;\n this.squads.getMultisig(msPDA).then((ms) => {\n trackThreshold = ms.threshold;\n trackMembers = ms.keys.length;\n });\n const dataObj = {\n title: title,\n description: \"\",\n type: \"arbitrary\",\n createdTime: Date.now(),\n trackMembers: trackMembers,\n trackThreshold: trackThreshold,\n };\n\n const trackMetaSig = anchor.utils.sha256.hash(\"global:track_meta\");\n const ixDescrim = Buffer.from(trackMetaSig, \"hex\");\n const trackMetaData = Buffer.concat([ixDescrim.slice(0, 8)]);\n\n const meta = Buffer.from(JSON.stringify(dataObj));\n const accountsList = [];\n\n accountsList.push({\n pubkey: member,\n isSigner: true,\n isWritable: true,\n });\n\n accountsList.push({\n pubkey: msPDA,\n isSigner: false,\n isWritable: false,\n });\n\n accountsList.push({\n pubkey: txPDA,\n isSigner: false,\n isWritable: false,\n });\n\n const metaLength = new BN(meta.length);\n const metaData = Buffer.concat([\n trackMetaData,\n metaLength.toArrayLike(Buffer, \"le\", 4),\n meta,\n ]);\n const ixn = new TransactionInstruction({\n keys: accountsList,\n programId: new PublicKey(TXMETA_PROGRAM_ID),\n data: metaData,\n });\n\n return ixn;\n }\n\n async createProgramUpgrade(\n multisigAuthority: PublicKey,\n msPDA: PublicKey,\n programId: PublicKey,\n buffer: PublicKey,\n refundAccount: PublicKey,\n title: string\n ) {\n const [programManagerPda] = getProgramManagerPDA(\n msPDA,\n new PublicKey(PROGRAM_MANAGER_PROGRAM_ID)\n );\n const [managedProgramPda] = getManagedProgramPDA(\n programManagerPda,\n new BN(1),\n new PublicKey(PROGRAM_MANAGER_PROGRAM_ID)\n );\n const managedProgram = await this.squads.getManagedProgram(\n managedProgramPda\n );\n if (!managedProgram.programAddress.equals(programId)) {\n throw new Error(\"Given squad does not manage given program!!\");\n }\n\n console.log(\"Creating program upgrade...\");\n\n return await this.squads.createProgramUpgrade(\n msPDA,\n managedProgramPda,\n buffer,\n refundAccount,\n multisigAuthority,\n title\n );\n }\n\n async initializeProgramUpgrade(\n programUpgradeAccount: ProgramUpgradeAccount,\n msPDA: PublicKey,\n txTitle: string,\n multiplyFee: number\n ) {\n console.log(programUpgradeAccount);\n const txBuilder = await retryAsync(async () =>\n noopProfiledFunctionExecution(this.squads.getTransactionBuilder(msPDA, 1))\n );\n\n const ixn = new TransactionInstruction({\n keys: programUpgradeAccount.upgradeIx.accounts,\n programId: programUpgradeAccount.upgradeIx.programId,\n data: programUpgradeAccount.upgradeIx.upgradeInstructionData,\n });\n\n const [txBuilderIxns, txPda] = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n txBuilder.withInstructions(ixn).getInstructions()\n )\n );\n\n const titleIxn = this.txTitleUpdateIx(\n msPDA,\n txPda,\n this.wallet.publicKey,\n txTitle\n );\n const activateIx = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.squads.buildActivateTransaction(msPDA, txPda)\n )\n );\n const approveIx = await this.squads.buildApproveTransaction(msPDA, txPda);\n\n txBuilderIxns.push(titleIxn);\n txBuilderIxns.push(activateIx);\n txBuilderIxns.push(approveIx);\n\n const transactions: anchor.web3.Transaction[] = [];\n let txBuilderIxnStartIndex = 0;\n for (let i = 1; i <= txBuilderIxns.length; i++) {\n const testTx = new anchor.web3.Transaction(\n await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n )\n );\n testTx.add(...txBuilderIxns.slice(txBuilderIxnStartIndex, i));\n testTx.feePayer = this.wallet.publicKey;\n\n // Txn size too large, create txn with all ixns exlcuding current one\n if (testTx.serializeMessage().byteLength > 1020) {\n // size before signature\n const { blockhash, lastValidBlockHeight } = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n );\n const tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n const feeIxns = createAddExtraComputeUnitsTransaction(\n computeUnits,\n microLamportsPrioritizationFee * multiplyFee\n );\n tx.add(...feeIxns);\n tx.add(...txBuilderIxns.slice(txBuilderIxnStartIndex, i - 1));\n\n transactions.push(tx);\n\n txBuilderIxnStartIndex = i - 1;\n }\n }\n // send last one\n const blockhashInfo = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n );\n const tx = new anchor.web3.Transaction({\n blockhash: blockhashInfo.blockhash,\n lastValidBlockHeight: blockhashInfo.lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n const feeIxns = createAddExtraComputeUnitsTransaction(\n computeUnits,\n microLamportsPrioritizationFee * multiplyFee\n );\n tx.add(...feeIxns);\n tx.add(\n ...txBuilderIxns.slice(txBuilderIxnStartIndex, txBuilderIxns.length + 1)\n );\n\n transactions.push(tx);\n\n // sign all\n console.log(\"Signing \" + transactions.length + \" transactions \");\n const transactionsSigned = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.wallet.signAllTransactions(transactions)\n )\n );\n\n for (let index = 0; index < transactionsSigned.length; index++) {\n console.log(\n \"Sending transaction step \" +\n (index + 1) +\n \"/\" +\n transactionsSigned.length\n );\n\n await retryAsyncFirstSigned(\n async () =>\n noopProfiledFunctionExecution(\n this.sendAndConfirmRawTx(transactionsSigned[index])\n ),\n async () =>\n noopProfiledFunctionExecution(\n this.signSendAndConfirmRawTx(transactions[index])\n )\n );\n console.log(\"Transaction step succeeded\");\n }\n console.log(\"Transaction created\");\n const txUrl =\n \"https://v3.squads.so/transactions/\" +\n base64.encode(Buffer.from(msPDA.toBase58())) +\n \"/tx/\" +\n txPda;\n\n return [txPda, txUrl];\n }\n}\n\nexport async function retryAsync(\n fn: () => Promise<any>,\n retriesLeft = 5,\n interval = 2000\n): Promise<any> {\n try {\n return await fn();\n } catch (error) {\n if (retriesLeft) {\n await new Promise((resolve) => setTimeout(resolve, interval));\n return await retryAsync(fn, retriesLeft - 1, interval);\n }\n throw error;\n }\n}\n\nexport async function retryAsyncFirstSigned(\n fnSigned: () => Promise<any>,\n fn: () => Promise<any>,\n retriesLeft = 5,\n interval = 2000\n): Promise<any> {\n try {\n return await fnSigned();\n } catch (error) {\n if (retriesLeft) {\n await new Promise((resolve) => setTimeout(resolve, interval));\n return await retryAsync(fn, retriesLeft - 1, interval);\n }\n throw error;\n }\n}\n\nexport function noopProfiledFunctionExecution(\n promise: Promise<any>\n): Promise<any> {\n return promise;\n}\n\nexport default API;\n"]}
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/lib/api.ts"],"names":[],"mappings":"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","sourcesContent":["import Squads, {\n getTxPDA,\n getAuthorityPDA,\n getManagedProgramPDA,\n getProgramManagerPDA,\n ProgramUpgradeAccount,\n} from \"@sqds/sdk\";\nimport * as anchor from \"@coral-xyz/anchor\";\nimport BN from \"bn.js\";\nimport {\n createAddExtraComputeUnitsTransaction,\n idl,\n sendAndConfirmRawTransactionWithRetry,\n Web3Client,\n} from \"../index\";\nimport {\n createAssociatedTokenAccountInstruction,\n getAssociatedTokenAddress,\n} from \"@solana/spl-token\";\nimport { Wallet } from \"@coral-xyz/anchor\";\nimport {\n LAMPORTS_PER_SOL,\n PublicKey,\n TransactionInstruction,\n VoteProgram,\n} from \"@solana/web3.js\";\nimport { getProgramData, upgradeSetAuthorityIx } from \"./program\";\nimport { PROGRAM_MANAGER_PROGRAM_ID, TXMETA_PROGRAM_ID } from \"./constants\";\nimport { base64 } from \"@coral-xyz/anchor/dist/cjs/utils/bytes\";\n\nconst microLamport = 10 ** 6; // 1 lamport\nconst computeUnits = 200_000;\nconst microLamportsPrioritizationFee = microLamport / computeUnits;\n\nclass API {\n squads;\n wallet;\n web3Client: Web3Client;\n cluster;\n programId: PublicKey;\n program;\n provider;\n programManagerId: PublicKey;\n constructor(\n wallet: Wallet,\n web3Client: Web3Client,\n programId: PublicKey,\n programManagerId: PublicKey\n ) {\n this.programId = programId;\n this.programManagerId = programManagerId;\n this.squads = Squads.endpoint(\n web3Client.sendConnection.rpcEndpoint,\n wallet,\n {\n commitmentOrConfig: \"confirmed\",\n multisigProgramId: this.programId,\n programManagerProgramId: this.programManagerId,\n }\n );\n this.wallet = wallet;\n this.cluster = web3Client.connection.rpcEndpoint;\n this.web3Client = web3Client;\n this.provider = new anchor.AnchorProvider(\n this.web3Client.sendConnection,\n this.wallet,\n {\n preflightCommitment: \"confirmed\",\n commitment: \"confirmed\",\n }\n );\n this.program = new anchor.Program(\n idl as anchor.Idl,\n this.programId,\n this.provider\n );\n }\n\n getSquadExtended = async (ms: PublicKey) => {\n return this.squads.getMultisig(ms);\n };\n\n getSquads = async () => {\n const allSquads = await this.program.account.ms.all();\n const mySquads = allSquads\n .filter((s: any) => {\n const mappedKeys = s.account.keys.map((k: PublicKey) => k.toBase58());\n if (mappedKeys.indexOf(this.wallet.publicKey.toBase58()) >= 0) {\n return true;\n }\n return false;\n })\n .map((s) => s.publicKey);\n return Promise.all(mySquads.map((k) => this.getSquadExtended(k)));\n };\n\n getTransactions = async (ms: any) => {\n const txIndex = ms.transactionIndex;\n const transactions = await Promise.all(\n [...new Array(txIndex)].map(async (_, i) => {\n const ind = new BN(i + 1);\n const [txPDA] = await getTxPDA(ms.publicKey, ind, this.programId);\n return this.squads.getTransaction(txPDA);\n })\n );\n return transactions;\n };\n\n createMultisig = async (\n threshold: number,\n createKey: PublicKey,\n members: PublicKey[]\n ) => {\n const tx = await this.squads.createMultisig(threshold, createKey, members);\n // try to fund the PDA\n try {\n const msPDA = tx.publicKey;\n const [vault] = await getAuthorityPDA(msPDA, new BN(1), this.programId);\n const fundIx = anchor.web3.SystemProgram.transfer({\n fromPubkey: this.wallet.publicKey,\n toPubkey: vault,\n lamports: anchor.web3.LAMPORTS_PER_SOL / 1000,\n });\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n const fundTx = new anchor.web3.Transaction({\n blockhash,\n feePayer: this.wallet.publicKey,\n lastValidBlockHeight,\n });\n fundTx.add(fundIx);\n const signedTx = await this.wallet.signTransaction(fundTx);\n const sig = await this.web3Client.sendConnection.sendRawTransaction(\n signedTx.serialize(),\n { preflightCommitment: \"confirmed\", skipPreflight: true }\n );\n await this.web3Client.sendConnection.confirmTransaction(sig, \"confirmed\");\n } catch (e) {\n console.log(\"Error funding vault\", e);\n throw e;\n // couldn't fund\n }\n return tx;\n };\n\n getProgramDataAuthority = async (programId: PublicKey) => {\n const program = await getProgramData(\n this.web3Client.sendConnection,\n programId\n );\n return program.info.authority;\n };\n\n getParsed = (\n account: anchor.web3.RpcResponseAndContext<anchor.web3.AccountInfo<\n Buffer | anchor.web3.ParsedAccountData\n > | null>\n ) => {\n const { value } = account;\n if (value && value.data && \"parsed\" in value.data) {\n const {\n data: { parsed },\n } = value;\n return parsed;\n }\n return null;\n };\n getValidatorWithdrawAuth = async (\n validatorAddress: anchor.web3.PublicKey\n ) => {\n try {\n const parsedAccount =\n (await this.web3Client.sendConnection.getParsedAccountInfo(\n validatorAddress\n )) as any;\n const parsed = this.getParsed(parsedAccount);\n if (parsed && parsed.type === \"vote\") {\n return parsed.info.authorizedWithdrawer;\n }\n } catch (e) {\n return null;\n }\n return null;\n };\n\n createTransferWithdrawAuthTx = async (\n msPDA: PublicKey,\n validatorId: PublicKey,\n currentAuthority: PublicKey,\n newAuthorizedPubkey: PublicKey\n ) => {\n const nextTxIndex = await this.squads.getNextTransactionIndex(msPDA);\n const [txPDA] = await getTxPDA(msPDA, new BN(nextTxIndex), this.programId);\n const createTxIx = await this.squads.buildCreateTransaction(\n msPDA,\n 1,\n nextTxIndex\n );\n const authorizeIx = VoteProgram.authorize({\n authorizedPubkey: currentAuthority,\n newAuthorizedPubkey,\n voteAuthorizationType: { index: 1 },\n votePubkey: validatorId,\n }).instructions[0];\n\n const addIx = await this.squads.buildAddInstruction(\n msPDA,\n txPDA,\n authorizeIx,\n 1\n );\n const activateIx = await this.squads.buildActivateTransaction(msPDA, txPDA);\n const approveIx = await this.squads.buildApproveTransaction(msPDA, txPDA);\n\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n let tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n tx.add(createTxIx);\n tx.add(addIx);\n tx.add(activateIx);\n tx.add(approveIx);\n console.log(\"Transaction composed\");\n tx = await this.wallet.signTransaction(tx);\n console.log(\"Transaction signed\");\n console.log(\"Sending\");\n const sig = await this.web3Client.sendConnection.sendRawTransaction(\n tx.serialize(),\n {\n skipPreflight: true,\n }\n );\n await this.web3Client.sendConnection.confirmTransaction(sig, \"confirmed\");\n console.log(\"Transaction sent\");\n return txPDA;\n };\n\n createActivateAndApproveTxWithIxns = async (\n msPDA: PublicKey,\n ixns: TransactionInstruction[],\n txTitle: string,\n multiplyFee: number = 1\n ): Promise<any> => {\n const txBuilder = await retryAsync(async () =>\n noopProfiledFunctionExecution(this.squads.getTransactionBuilder(msPDA, 1))\n );\n const [txBuilderIxns, txPda] = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n txBuilder.withInstructions(ixns).getInstructions()\n )\n );\n\n const titleIxn = this.txTitleUpdateIx(\n msPDA,\n txPda,\n this.wallet.publicKey,\n txTitle\n );\n const activateIx = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.squads.buildActivateTransaction(msPDA, txPda)\n )\n );\n const approveIx = await this.squads.buildApproveTransaction(msPDA, txPda);\n\n txBuilderIxns.push(titleIxn);\n txBuilderIxns.push(activateIx);\n txBuilderIxns.push(approveIx);\n\n const transactions: anchor.web3.Transaction[] = [];\n let txBuilderIxnStartIndex = 0;\n for (let i = 1; i <= txBuilderIxns.length; i++) {\n const testTx = new anchor.web3.Transaction(\n await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n )\n );\n testTx.add(...txBuilderIxns.slice(txBuilderIxnStartIndex, i));\n testTx.feePayer = this.wallet.publicKey;\n\n // Txn size too large, create txn with all ixns exlcuding current one\n if (testTx.serializeMessage().byteLength > 1020) {\n // size before signature\n const { blockhash, lastValidBlockHeight } = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n );\n const tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n const feeIxns = createAddExtraComputeUnitsTransaction(\n computeUnits,\n microLamportsPrioritizationFee * multiplyFee\n );\n tx.add(...feeIxns);\n tx.add(...txBuilderIxns.slice(txBuilderIxnStartIndex, i - 1));\n\n transactions.push(tx);\n\n txBuilderIxnStartIndex = i - 1;\n }\n }\n // send last one\n const blockhashInfo = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n );\n const tx = new anchor.web3.Transaction({\n blockhash: blockhashInfo.blockhash,\n lastValidBlockHeight: blockhashInfo.lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n const feeIxns = createAddExtraComputeUnitsTransaction(\n computeUnits,\n microLamportsPrioritizationFee * multiplyFee\n );\n tx.add(...feeIxns);\n tx.add(\n ...txBuilderIxns.slice(txBuilderIxnStartIndex, txBuilderIxns.length + 1)\n );\n\n transactions.push(tx);\n\n // sign all\n console.log(\"Signing \" + transactions.length + \" transactions \");\n const transactionsSigned = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.wallet.signAllTransactions(transactions)\n )\n );\n\n for (let index = 0; index < transactionsSigned.length; index++) {\n console.log(\n \"Sending transaction step \" +\n (index + 1) +\n \"/\" +\n transactionsSigned.length\n );\n\n await retryAsyncFirstSigned(\n async () =>\n noopProfiledFunctionExecution(\n this.sendAndConfirmRawTx(transactionsSigned[index])\n ),\n async () =>\n noopProfiledFunctionExecution(\n this.signSendAndConfirmRawTx(transactions[index])\n )\n );\n console.log(\"Transaction step succeeded\");\n }\n console.log(\"Transaction created\");\n const txUrl =\n \"https://v3.squads.so/transactions/\" +\n base64.encode(Buffer.from(msPDA.toBase58())) +\n \"/tx/\" +\n txPda;\n\n return [txPda, txUrl];\n };\n\n sendAndConfirmRawTx = async (tx: anchor.web3.Transaction): Promise<any> => {\n const sig = await sendAndConfirmRawTransactionWithRetry({\n mainConnection: this.web3Client.sendConnection,\n extraConnections: this.web3Client.sendConnectionsExtra,\n tx: tx,\n commitment: \"confirmed\",\n sendTransactionOptions: {\n maxRetries: 5,\n preflightCommitment: \"confirmed\",\n },\n });\n\n console.log(\"Signature: \", sig);\n\n return sig;\n };\n\n signSendAndConfirmRawTx = async (\n tx: anchor.web3.Transaction\n ): Promise<any> => {\n console.log(\"Resiging...\");\n const blockhashInfo = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n );\n tx.recentBlockhash = blockhashInfo.blockhash;\n tx.lastValidBlockHeight = blockhashInfo.lastValidBlockHeight;\n const signedTx = await retryAsync(async () =>\n noopProfiledFunctionExecution(this.wallet.signTransaction(tx))\n );\n\n const sig = await sendAndConfirmRawTransactionWithRetry({\n mainConnection: this.web3Client.sendConnection,\n extraConnections: this.web3Client.sendConnectionsExtra,\n tx: signedTx,\n commitment: \"confirmed\",\n sendTransactionOptions: {\n maxRetries: 5,\n preflightCommitment: \"confirmed\",\n },\n });\n console.log(\"Signature: \", sig);\n\n return sig;\n };\n\n createSafeAuthorityTx = async (\n msPDA: PublicKey,\n programId: PublicKey,\n currentAuthority: PublicKey,\n newAuthority: PublicKey\n ) => {\n const nextTxIndex = await this.squads.getNextTransactionIndex(msPDA);\n const [txPDA] = await getTxPDA(msPDA, new BN(nextTxIndex), this.programId);\n const createTxIx = await this.squads.buildCreateTransaction(\n msPDA,\n 1,\n nextTxIndex\n );\n const ix = await upgradeSetAuthorityIx(\n programId,\n currentAuthority,\n newAuthority\n );\n\n const addIx = await this.squads.buildAddInstruction(msPDA, txPDA, ix, 1);\n const activateIx = await this.squads.buildActivateTransaction(msPDA, txPDA);\n const approveIx = await this.squads.buildApproveTransaction(msPDA, txPDA);\n\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n let tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n tx.add(createTxIx);\n tx.add(addIx);\n tx.add(activateIx);\n tx.add(approveIx);\n console.log(\"Transaction composed\");\n tx = await this.wallet.signTransaction(tx);\n console.log(\"Transaction signed\");\n console.log(\"Sending\");\n const sig = await this.web3Client.sendConnection.sendRawTransaction(\n tx.serialize(),\n {\n skipPreflight: true,\n }\n );\n await this.web3Client.sendConnection.confirmTransaction(sig, \"confirmed\");\n console.log(\"Transaction sent\");\n return txPDA;\n };\n\n executeTransaction = async (tx: PublicKey) => {\n return this.squads.executeTransaction(tx);\n };\n\n executeInstruction = async (tx: PublicKey, ix: PublicKey) => {\n return this.squads.executeInstruction(tx, ix);\n };\n\n executeTransactionBuilder = async (tx: PublicKey) => {\n return this.squads.buildExecuteTransaction(tx);\n };\n\n executeInstructionBuilder = async (tx: PublicKey, ix: PublicKey) => {\n return this.squads.buildExecuteInstruction(tx, ix);\n };\n\n approveTransaction = async (tx: PublicKey): Promise<any> => {\n return this.squads.approveTransaction(tx);\n };\n\n rejectTransaction = async (tx: PublicKey) => {\n return this.squads.rejectTransaction(tx);\n };\n\n cancelTransaction = async (tx: PublicKey) => {\n return this.squads.cancelTransaction(tx);\n };\n\n addKeyTransaction = async (msPDA: PublicKey, key: PublicKey) => {\n const txBuilder = await this.squads.getTransactionBuilder(msPDA, 0);\n const [txInstructions, txPDA] = await (\n await txBuilder.withAddMember(key)\n ).getInstructions();\n const activateIx = await this.squads.buildActivateTransaction(msPDA, txPDA);\n console.log(\n \"transaction instructions\",\n JSON.stringify(txInstructions, null, 2)\n );\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n let tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n const topup = await this.squads.checkGetTopUpInstruction(msPDA);\n if (topup) {\n tx.add(topup);\n }\n tx.add(...txInstructions);\n tx.add(activateIx);\n\n console.log(\"Transaction composed\");\n tx = await this.wallet.signTransaction(tx);\n console.log(\"Transaction signed\");\n console.log(\"Sending\");\n const sig = await this.web3Client.sendConnection.sendRawTransaction(\n tx.serialize(),\n {\n skipPreflight: true,\n }\n );\n await this.web3Client.sendConnection.confirmTransaction(sig, \"confirmed\");\n\n await this.squads.approveTransaction(txPDA);\n return this.squads.getTransaction(txPDA);\n };\n\n removeKeyTransaction = async (msPDA: PublicKey, key: PublicKey) => {\n const txBuilder = await this.squads.getTransactionBuilder(msPDA, 0);\n const [txInstructions, txPDA] = await (\n await txBuilder.withRemoveMember(key)\n ).getInstructions();\n const activateIx = await this.squads.buildActivateTransaction(msPDA, txPDA);\n\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n let tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n\n tx.add(...txInstructions);\n tx.add(activateIx);\n\n console.log(\"Transaction composed\");\n tx = await this.wallet.signTransaction(tx);\n console.log(\"Transaction signed\");\n console.log(\"Sending\");\n const sig = await this.web3Client.sendConnection.sendRawTransaction(\n tx.serialize(),\n {\n skipPreflight: true,\n }\n );\n await this.web3Client.sendConnection.confirmTransaction(sig, \"confirmed\");\n\n await this.squads.approveTransaction(txPDA);\n return this.squads.getTransaction(txPDA);\n };\n\n changeThresholdTransaction = async (msPDA: PublicKey, threshold: number) => {\n const txBuilder = await this.squads.getTransactionBuilder(msPDA, 0);\n const [txInstructions, txPDA] = await (\n await txBuilder.withChangeThreshold(threshold)\n ).getInstructions();\n const activateIx = await this.squads.buildActivateTransaction(msPDA, txPDA);\n\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n let tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n\n tx.add(...txInstructions);\n tx.add(activateIx);\n\n console.log(\"Transaction composed\");\n tx = await this.wallet.signTransaction(tx);\n console.log(\"Transaction signed\");\n console.log(\"Sending\");\n const sig = await this.web3Client.sendConnection.sendRawTransaction(\n tx.serialize(),\n {\n skipPreflight: true,\n }\n );\n await this.web3Client.sendConnection.confirmTransaction(sig, \"confirmed\");\n\n await this.squads.approveTransaction(txPDA);\n return this.squads.getTransaction(txPDA);\n };\n\n createTransaction(msPDA: PublicKey, authorityIndex: number): Promise<any> {\n return this.squads.createTransaction(msPDA, authorityIndex);\n }\n\n addInstruction(\n txPDA: PublicKey,\n ix: anchor.web3.TransactionInstruction\n ): Promise<any> {\n const txIx = new anchor.web3.TransactionInstruction({\n keys: ix.keys,\n programId: ix.programId,\n data: ix.data,\n });\n return this.squads.addInstruction(txPDA, txIx);\n }\n\n async activate(txPDA: PublicKey): Promise<any> {\n return this.squads.activateTransaction(txPDA);\n }\n\n async getWalletBalance(cb?: (balance: number) => void) {\n try {\n const lamports = await this.web3Client.sendConnection.getBalance(\n this.wallet.publicKey,\n \"processed\"\n );\n const SOL = lamports / LAMPORTS_PER_SOL;\n if (cb) {\n cb(SOL);\n }\n return SOL;\n } catch (e) {\n return 0;\n }\n }\n\n async createATA(mint: PublicKey, owner: PublicKey) {\n const ataPubkey = await getAssociatedTokenAddress(mint, owner, true);\n const createATAIx = createAssociatedTokenAccountInstruction(\n this.wallet.publicKey,\n ataPubkey,\n owner,\n mint\n );\n\n const { blockhash, lastValidBlockHeight } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n let tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n tx.add(createATAIx);\n tx = await this.wallet.signTransaction(tx);\n await this.web3Client.sendConnection.sendRawTransaction(tx.serialize(), {\n skipPreflight: true,\n });\n return ataPubkey;\n }\n\n txTitleUpdateIx(\n msPDA: PublicKey,\n txPDA: PublicKey,\n member: PublicKey,\n title: string\n ): TransactionInstruction {\n let trackThreshold = 0;\n let trackMembers = 0;\n this.squads.getMultisig(msPDA).then((ms) => {\n trackThreshold = ms.threshold;\n trackMembers = ms.keys.length;\n });\n const dataObj = {\n title: title,\n description: \"\",\n type: \"arbitrary\",\n createdTime: Date.now(),\n trackMembers: trackMembers,\n trackThreshold: trackThreshold,\n };\n\n const trackMetaSig = anchor.utils.sha256.hash(\"global:track_meta\");\n const ixDescrim = Buffer.from(trackMetaSig, \"hex\");\n const trackMetaData = Buffer.concat([ixDescrim.slice(0, 8)]);\n\n const meta = Buffer.from(JSON.stringify(dataObj));\n const accountsList = [];\n\n accountsList.push({\n pubkey: member,\n isSigner: true,\n isWritable: true,\n });\n\n accountsList.push({\n pubkey: msPDA,\n isSigner: false,\n isWritable: false,\n });\n\n accountsList.push({\n pubkey: txPDA,\n isSigner: false,\n isWritable: false,\n });\n\n const metaLength = new BN(meta.length);\n const metaData = Buffer.concat([\n trackMetaData,\n metaLength.toArrayLike(Buffer, \"le\", 4),\n meta,\n ]);\n const ixn = new TransactionInstruction({\n keys: accountsList,\n programId: new PublicKey(TXMETA_PROGRAM_ID),\n data: metaData,\n });\n\n return ixn;\n }\n\n async createProgramUpgrade(\n multisigAuthority: PublicKey,\n msPDA: PublicKey,\n programId: PublicKey,\n buffer: PublicKey,\n refundAccount: PublicKey,\n title: string\n ) {\n const [programManagerPda] = getProgramManagerPDA(\n msPDA,\n new PublicKey(PROGRAM_MANAGER_PROGRAM_ID)\n );\n const [managedProgramPda] = getManagedProgramPDA(\n programManagerPda,\n new BN(1),\n new PublicKey(PROGRAM_MANAGER_PROGRAM_ID)\n );\n const managedProgram = await this.squads.getManagedProgram(\n managedProgramPda\n );\n if (!managedProgram.programAddress.equals(programId)) {\n throw new Error(\"Given squad does not manage given program!!\");\n }\n\n console.log(\"Creating program upgrade...\");\n\n return await this.squads.createProgramUpgrade(\n msPDA,\n managedProgramPda,\n buffer,\n refundAccount,\n multisigAuthority,\n title\n );\n }\n\n async initializeProgramUpgrade(\n programUpgradeAccount: ProgramUpgradeAccount,\n msPDA: PublicKey,\n txTitle: string,\n multiplyFee: number\n ) {\n console.log(programUpgradeAccount);\n const txBuilder = await retryAsync(async () =>\n noopProfiledFunctionExecution(this.squads.getTransactionBuilder(msPDA, 1))\n );\n\n const ixn = new TransactionInstruction({\n keys: programUpgradeAccount.upgradeIx.accounts,\n programId: programUpgradeAccount.upgradeIx.programId,\n data: programUpgradeAccount.upgradeIx.upgradeInstructionData,\n });\n\n const [txBuilderIxns, txPda] = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n txBuilder.withInstructions(ixn).getInstructions()\n )\n );\n\n const titleIxn = this.txTitleUpdateIx(\n msPDA,\n txPda,\n this.wallet.publicKey,\n txTitle\n );\n const activateIx = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.squads.buildActivateTransaction(msPDA, txPda)\n )\n );\n const approveIx = await this.squads.buildApproveTransaction(msPDA, txPda);\n\n txBuilderIxns.push(titleIxn);\n txBuilderIxns.push(activateIx);\n txBuilderIxns.push(approveIx);\n\n const transactions: anchor.web3.Transaction[] = [];\n let txBuilderIxnStartIndex = 0;\n for (let i = 1; i <= txBuilderIxns.length; i++) {\n const testTx = new anchor.web3.Transaction(\n await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n )\n );\n testTx.add(...txBuilderIxns.slice(txBuilderIxnStartIndex, i));\n testTx.feePayer = this.wallet.publicKey;\n\n // Txn size too large, create txn with all ixns exlcuding current one\n if (testTx.serializeMessage().byteLength > 1020) {\n // size before signature\n const { blockhash, lastValidBlockHeight } = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n );\n const tx = new anchor.web3.Transaction({\n blockhash,\n lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n const feeIxns = createAddExtraComputeUnitsTransaction(\n computeUnits,\n microLamportsPrioritizationFee * multiplyFee\n );\n tx.add(...feeIxns);\n tx.add(...txBuilderIxns.slice(txBuilderIxnStartIndex, i - 1));\n\n transactions.push(tx);\n\n txBuilderIxnStartIndex = i - 1;\n }\n }\n // send last one\n const blockhashInfo = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.web3Client.sendConnection.getLatestBlockhash()\n )\n );\n const tx = new anchor.web3.Transaction({\n blockhash: blockhashInfo.blockhash,\n lastValidBlockHeight: blockhashInfo.lastValidBlockHeight,\n feePayer: this.wallet.publicKey,\n });\n const feeIxns = createAddExtraComputeUnitsTransaction(\n computeUnits,\n microLamportsPrioritizationFee * multiplyFee\n );\n tx.add(...feeIxns);\n tx.add(\n ...txBuilderIxns.slice(txBuilderIxnStartIndex, txBuilderIxns.length + 1)\n );\n\n transactions.push(tx);\n\n // sign all\n console.log(\"Signing \" + transactions.length + \" transactions \");\n const transactionsSigned = await retryAsync(async () =>\n noopProfiledFunctionExecution(\n this.wallet.signAllTransactions(transactions)\n )\n );\n\n for (let index = 0; index < transactionsSigned.length; index++) {\n console.log(\n \"Sending transaction step \" +\n (index + 1) +\n \"/\" +\n transactionsSigned.length\n );\n\n await retryAsyncFirstSigned(\n async () =>\n noopProfiledFunctionExecution(\n this.sendAndConfirmRawTx(transactionsSigned[index])\n ),\n async () =>\n noopProfiledFunctionExecution(\n this.signSendAndConfirmRawTx(transactions[index])\n )\n );\n console.log(\"Transaction step succeeded\");\n }\n console.log(\"Transaction created\");\n const txUrl =\n \"https://v3.squads.so/transactions/\" +\n base64.encode(Buffer.from(msPDA.toBase58())) +\n \"/tx/\" +\n txPda;\n\n return [txPda, txUrl];\n }\n}\n\nexport async function retryAsync(\n fn: () => Promise<any>,\n retriesLeft = 5,\n interval = 2000\n): Promise<any> {\n try {\n return await fn();\n } catch (error) {\n if (retriesLeft) {\n await new Promise((resolve) => setTimeout(resolve, interval));\n return await retryAsync(fn, retriesLeft - 1, interval);\n }\n throw error;\n }\n}\n\nexport async function retryAsyncFirstSigned(\n fnSigned: () => Promise<any>,\n fn: () => Promise<any>,\n retriesLeft = 5,\n interval = 2000\n): Promise<any> {\n try {\n return await fnSigned();\n } catch (error) {\n if (retriesLeft) {\n await new Promise((resolve) => setTimeout(resolve, interval));\n return await retryAsync(fn, retriesLeft - 1, interval);\n }\n throw error;\n }\n}\n\nexport function noopProfiledFunctionExecution(\n promise: Promise<any>\n): Promise<any> {\n return promise;\n}\n\nexport default API;\n"]}
|
package/dist/lib/menu.js
CHANGED
|
@@ -87,8 +87,8 @@ class Menu {
|
|
|
87
87
|
yield this.createTransactionsFromRawTransactionsList(multisig, rawTxns, txTitle);
|
|
88
88
|
});
|
|
89
89
|
}
|
|
90
|
-
createTransactionsFromRawInstructionsList(
|
|
91
|
-
return tslib_1.__awaiter(this,
|
|
90
|
+
createTransactionsFromRawInstructionsList(multisig_1, rawIxns_1, txTitle_1) {
|
|
91
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (multisig, rawIxns, txTitle, multiplyFee = 1) {
|
|
92
92
|
const ixnsList = [];
|
|
93
93
|
const txUrls = [];
|
|
94
94
|
console.log("Raw ixns found: ", rawIxns.length);
|
package/dist/lib/menu.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/lib/menu.ts"],"names":[],"mappings":"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","sourcesContent":["import * as anchor from \"@coral-xyz/anchor\";\nimport * as fs from \"fs\";\n\nimport {\n getAuthorityPDA,\n DEFAULT_MULTISIG_PROGRAM_ID,\n DEFAULT_PROGRAM_MANAGER_PROGRAM_ID,\n} from \"@sqds/sdk\";\nimport {\n PublicKey,\n Transaction,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { TXMETA_PROGRAM_ID } from \"./constants\";\nimport API from \"./api\";\nimport BN from \"bn.js\";\nimport { Web3Client } from \"./sendTransactionUtils\";\n\nclass Menu {\n programId: PublicKey;\n programManagerId: PublicKey;\n txMetaProgramId: PublicKey;\n multisigs: any[] = [];\n wallet: anchor.Wallet;\n api: API;\n web3Client: Web3Client;\n mode: string;\n\n constructor(wallet: anchor.Wallet, web3Client: Web3Client, mode: string) {\n this.wallet = wallet;\n this.web3Client = web3Client;\n this.programId = DEFAULT_MULTISIG_PROGRAM_ID;\n this.programManagerId = DEFAULT_PROGRAM_MANAGER_PROGRAM_ID;\n this.txMetaProgramId = new PublicKey(TXMETA_PROGRAM_ID);\n this.api = new API(\n wallet,\n this.web3Client,\n this.programId,\n this.programManagerId\n );\n this.mode = mode;\n\n if (mode !== \"print\" && mode !== \"simulate\" && mode !== \"propose\") {\n throw new Error(\n \"Invalid mode: \" + mode + \". Must be one of: print/simulate/propose\"\n );\n }\n }\n\n async printMultisigList() {\n this.multisigs = await this.api.getSquads();\n\n const multisigsList = await loadAuthorities(\n this.multisigs,\n this.api.programId\n );\n console.log(multisigsList);\n }\n\n async createTransactionFromIxn(\n multisigAuthority: PublicKey,\n rawIxnMessage: string,\n txTitle: string\n ) {\n console.log(\n \"This will create a new transaction for multisig \" +\n multisigAuthority.toString()\n );\n this.multisigs = await this.api.getSquads();\n\n const multisigsList = await loadAuthorities(\n this.multisigs,\n this.api.programId\n );\n let multisig: PublicKey | null = null;\n for (let i = 0; i < multisigsList.length; i++) {\n if (multisigsList[i].authority === multisigAuthority.toString()) {\n multisig = multisigsList[i].multisig;\n break;\n }\n }\n\n await this.createTransactionsFromRawInstructionsList(\n multisig!,\n [rawIxnMessage],\n txTitle\n );\n }\n\n async createTransactionsFromIxnsFile(\n multisigAuthority: PublicKey,\n path: string,\n txTitle: string,\n multiplyFee: string\n ) {\n console.log(\n \"This will create new transactions for multisig \" +\n multisigAuthority.toString()\n );\n this.multisigs = await this.api.getSquads();\n\n const multisigsList = await loadAuthorities(\n this.multisigs,\n this.api.programId\n );\n let multisig: PublicKey | null = null;\n for (let i = 0; i < multisigsList.length; i++) {\n if (multisigsList[i].authority === multisigAuthority.toString()) {\n multisig = multisigsList[i].multisig;\n break;\n }\n }\n\n const ixnFile = fs.readFileSync(path, \"utf8\");\n let rawIxns = ixnFile.split(\"\\n\");\n if (!rawIxns[rawIxns.length - 1].toString()) {\n rawIxns = rawIxns.slice(0, rawIxns.length - 1);\n }\n\n await this.createTransactionsFromRawInstructionsList(\n multisig!,\n rawIxns,\n txTitle,\n multiplyFee ? Number(multiplyFee) : 1\n );\n }\n\n async createTransactionsFromTxnsFile(\n multisigAuthority: PublicKey,\n path: string,\n txTitle: string\n ) {\n console.log(\n \"This will create new transactions for multisig \" +\n multisigAuthority.toString()\n );\n this.multisigs = await this.api.getSquads();\n\n const multisigsList = await loadAuthorities(\n this.multisigs,\n this.api.programId\n );\n let multisig: PublicKey | null = null;\n for (let i = 0; i < multisigsList.length; i++) {\n if (multisigsList[i].authority === multisigAuthority.toString()) {\n multisig = multisigsList[i].multisig;\n break;\n }\n }\n\n const ixnFile = fs.readFileSync(path, \"utf8\");\n let rawTxns = ixnFile.split(\"\\n\");\n if (!rawTxns[rawTxns.length - 1].toString()) {\n rawTxns = rawTxns.slice(0, rawTxns.length - 1);\n }\n\n await this.createTransactionsFromRawTransactionsList(\n multisig!,\n rawTxns,\n txTitle\n );\n }\n\n async createTransactionsFromRawInstructionsList(\n multisig: PublicKey,\n rawIxns: string[],\n txTitle: string,\n multiplyFee: number = 1\n ) {\n const ixnsList: TransactionInstruction[][] = [];\n const txUrls: string[] = [];\n console.log(\"Raw ixns found: \", rawIxns.length);\n for (const [index, rawIxnMessage] of rawIxns.entries()) {\n const txBuffer = anchor.utils.bytes.bs58.decode(rawIxnMessage);\n const rawTxMessage = anchor.web3.Message.from(txBuffer);\n const tx = anchor.web3.Transaction.populate(rawTxMessage);\n if (tx.instructions.length === 0) {\n throw new Error(\"rawIxn \" + (index + 1) + \" is empty\");\n }\n const ixns = tx.instructions;\n ixnsList.push(ixns);\n }\n\n let txBuilderIxnStartIndex = 0;\n let titleIndex = 1;\n for (let i = 1; i <= ixnsList.length; i++) {\n const testTx = new anchor.web3.Transaction(\n await this.web3Client.sendConnection.getLatestBlockhash()\n );\n const tempIxns = ixnsList.slice(txBuilderIxnStartIndex, i);\n for (const ixnGroup of tempIxns) {\n testTx.add(...ixnGroup);\n }\n testTx.feePayer = this.wallet.publicKey;\n let byteLength = 1040;\n try {\n byteLength =\n testTx.serializeMessage().byteLength +\n 32 * testTx.instructions.length; // squads ixn account;\n } catch (e) {\n console.log(\n \"WARN: Failed to serialized ixns \" +\n txBuilderIxnStartIndex +\n \" to \" +\n i\n );\n }\n\n // Txn size too large, create txn with all ixns exlcuding current one\n if (byteLength > 1072) {\n // leave some bytes for txn signature\n const tx = new anchor.web3.Transaction();\n const tempIxns = ixnsList.slice(txBuilderIxnStartIndex, i - 1);\n for (const ixnGroup of tempIxns) {\n tx.add(...ixnGroup);\n }\n const title = txTitle + \" \" + titleIndex;\n\n console.log(\"Transaction: \" + title);\n if (this.mode === \"propose\") {\n // create, activate and approve txn\n const [, txUrl] = await this.api.createActivateAndApproveTxWithIxns(\n multisig,\n tx.instructions,\n title,\n multiplyFee\n );\n txUrls.push(txUrl);\n } else {\n await this.printOrSimulateTransaction(tx);\n }\n\n titleIndex++;\n txBuilderIxnStartIndex = i - 1;\n }\n }\n // send last one\n const tx = new anchor.web3.Transaction();\n const tempIxns = ixnsList.slice(\n txBuilderIxnStartIndex,\n ixnsList.length + 1\n );\n for (const ixnGroup of tempIxns) {\n tx.add(...ixnGroup);\n }\n const title = titleIndex === 1 ? txTitle : txTitle + \" \" + titleIndex;\n console.log(\"Transaction: \" + title);\n if (this.mode === \"propose\") {\n // create, activate and approve txn\n const [, txUrl] = await this.api.createActivateAndApproveTxWithIxns(\n multisig,\n tx.instructions,\n title,\n multiplyFee\n );\n\n console.log(\"Transaction URLs: \");\n for (const [index, txUrl] of txUrls.entries()) {\n console.log(index.toString() + \". \", txUrl);\n }\n console.log(txUrls.length.toString() + \". \", txUrl);\n } else {\n await this.printOrSimulateTransaction(tx);\n }\n }\n\n async createTransactionsFromRawTransactionsList(\n multisig: PublicKey,\n rawTxns: string[],\n txTitle: string\n ) {\n console.log(\"rawIxns length: \", rawTxns.length);\n let index = 1;\n for (const rawTxnMessage of rawTxns) {\n const title = txTitle + \" \" + index;\n index++;\n const txBuffer = anchor.utils.bytes.bs58.decode(rawTxnMessage);\n const rawTxMessage = anchor.web3.Message.from(txBuffer);\n const tx = anchor.web3.Transaction.populate(rawTxMessage);\n console.log(\"Transaction: \" + title);\n // for each txn we create it on squads\n if (this.mode === \"propose\") {\n // create, activate and approve txn\n await this.api.createActivateAndApproveTxWithIxns(\n multisig,\n tx.instructions,\n title\n );\n } else {\n await this.printOrSimulateTransaction(tx);\n }\n }\n }\n\n async createProgramUpgrade(\n multisigAuthority: PublicKey,\n programIdPk: string,\n bufferPk: string,\n refundAccountPk: string,\n title: string,\n multiplyFee: string\n ) {\n console.log(\n \"This will create new transactions for multisig \" +\n multisigAuthority.toString()\n );\n this.multisigs = await this.api.getSquads();\n\n const multisigsList = await loadAuthorities(\n this.multisigs,\n this.api.programId\n );\n let multisig: PublicKey | null = null;\n for (let i = 0; i < multisigsList.length; i++) {\n if (multisigsList[i].authority === multisigAuthority.toString()) {\n multisig = multisigsList[i].multisig;\n break;\n }\n }\n\n const programId = new PublicKey(programIdPk);\n const buffer = new PublicKey(bufferPk);\n const refundAccount = new PublicKey(refundAccountPk);\n const programUpgradeAccount = await this.api.createProgramUpgrade(\n multisigAuthority,\n multisig!,\n programId,\n buffer,\n refundAccount,\n title\n );\n\n await this.api.initializeProgramUpgrade(\n programUpgradeAccount,\n multisig!,\n title,\n multiplyFee ? Number(multiplyFee) : 1\n );\n }\n\n async printOrSimulateTransaction(transaction: Transaction) {\n if (this.mode === \"simulate\") {\n // simulate txn\n const { blockhash } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n transaction.recentBlockhash = blockhash;\n transaction.feePayer = this.wallet.publicKey;\n const simulation =\n await this.web3Client.sendConnection.simulateTransaction(transaction);\n console.log(\"Simulation: \\n\" + simulation.value.logs);\n } else if (this.mode === \"print\") {\n // print txn\n console.log(\"Instructions: \");\n console.log(transaction.instructions);\n }\n }\n}\n\nexport default Menu;\n\nfunction getAuthName(authority: PublicKey) {\n if (authority.toString() === \"E35i5qn7872eEmBt15e5VGhziUBzCTm43XCSWvDoQNNv\") {\n return \"Kamino\";\n } else if (\n authority.toString() === \"BbM3mbcLsa3QcYEVx8iovwfKaA1iZ6DK5fEbbtHwS3N8\"\n ) {\n return \"KFarms\";\n } else if (\n authority.toString() === \"A9rQoX1sictAQkyXxaZA8nz674xutHwoqpK2mwLyexCZ\"\n ) {\n return \"KLend\";\n } else if (\n authority.toString() === \"BxdLNhoRXVs45wTVAZBrYQUkxbex5zXFCaJtsuRpoqMj\"\n ) {\n return \"KLend Staging\";\n } else {\n return \"Unkown\";\n }\n}\n\nconst loadAuthorities = async (ms: any[], programId: PublicKey) => {\n return Promise.all(\n ms.map(async (msObj, _) => {\n const [mAuth] = getAuthorityPDA(msObj.publicKey, new BN(1), programId);\n const authName = getAuthName(mAuth);\n return {\n multisig: msObj.publicKey,\n authority: `${mAuth.toBase58()}`,\n name: authName,\n };\n })\n );\n};\n"]}
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../../src/lib/menu.ts"],"names":[],"mappings":"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","sourcesContent":["import * as anchor from \"@coral-xyz/anchor\";\nimport * as fs from \"fs\";\n\nimport {\n getAuthorityPDA,\n DEFAULT_MULTISIG_PROGRAM_ID,\n DEFAULT_PROGRAM_MANAGER_PROGRAM_ID,\n} from \"@sqds/sdk\";\nimport {\n PublicKey,\n Transaction,\n TransactionInstruction,\n} from \"@solana/web3.js\";\nimport { TXMETA_PROGRAM_ID } from \"./constants\";\nimport API from \"./api\";\nimport BN from \"bn.js\";\nimport { Web3Client } from \"./sendTransactionUtils\";\n\nclass Menu {\n programId: PublicKey;\n programManagerId: PublicKey;\n txMetaProgramId: PublicKey;\n multisigs: any[] = [];\n wallet: anchor.Wallet;\n api: API;\n web3Client: Web3Client;\n mode: string;\n\n constructor(wallet: anchor.Wallet, web3Client: Web3Client, mode: string) {\n this.wallet = wallet;\n this.web3Client = web3Client;\n this.programId = DEFAULT_MULTISIG_PROGRAM_ID;\n this.programManagerId = DEFAULT_PROGRAM_MANAGER_PROGRAM_ID;\n this.txMetaProgramId = new PublicKey(TXMETA_PROGRAM_ID);\n this.api = new API(\n wallet,\n this.web3Client,\n this.programId,\n this.programManagerId\n );\n this.mode = mode;\n\n if (mode !== \"print\" && mode !== \"simulate\" && mode !== \"propose\") {\n throw new Error(\n \"Invalid mode: \" + mode + \". Must be one of: print/simulate/propose\"\n );\n }\n }\n\n async printMultisigList() {\n this.multisigs = await this.api.getSquads();\n\n const multisigsList = await loadAuthorities(\n this.multisigs,\n this.api.programId\n );\n console.log(multisigsList);\n }\n\n async createTransactionFromIxn(\n multisigAuthority: PublicKey,\n rawIxnMessage: string,\n txTitle: string\n ) {\n console.log(\n \"This will create a new transaction for multisig \" +\n multisigAuthority.toString()\n );\n this.multisigs = await this.api.getSquads();\n\n const multisigsList = await loadAuthorities(\n this.multisigs,\n this.api.programId\n );\n let multisig: PublicKey | null = null;\n for (let i = 0; i < multisigsList.length; i++) {\n if (multisigsList[i].authority === multisigAuthority.toString()) {\n multisig = multisigsList[i].multisig;\n break;\n }\n }\n\n await this.createTransactionsFromRawInstructionsList(\n multisig!,\n [rawIxnMessage],\n txTitle\n );\n }\n\n async createTransactionsFromIxnsFile(\n multisigAuthority: PublicKey,\n path: string,\n txTitle: string,\n multiplyFee: string\n ) {\n console.log(\n \"This will create new transactions for multisig \" +\n multisigAuthority.toString()\n );\n this.multisigs = await this.api.getSquads();\n\n const multisigsList = await loadAuthorities(\n this.multisigs,\n this.api.programId\n );\n let multisig: PublicKey | null = null;\n for (let i = 0; i < multisigsList.length; i++) {\n if (multisigsList[i].authority === multisigAuthority.toString()) {\n multisig = multisigsList[i].multisig;\n break;\n }\n }\n\n const ixnFile = fs.readFileSync(path, \"utf8\");\n let rawIxns = ixnFile.split(\"\\n\");\n if (!rawIxns[rawIxns.length - 1].toString()) {\n rawIxns = rawIxns.slice(0, rawIxns.length - 1);\n }\n\n await this.createTransactionsFromRawInstructionsList(\n multisig!,\n rawIxns,\n txTitle,\n multiplyFee ? Number(multiplyFee) : 1\n );\n }\n\n async createTransactionsFromTxnsFile(\n multisigAuthority: PublicKey,\n path: string,\n txTitle: string\n ) {\n console.log(\n \"This will create new transactions for multisig \" +\n multisigAuthority.toString()\n );\n this.multisigs = await this.api.getSquads();\n\n const multisigsList = await loadAuthorities(\n this.multisigs,\n this.api.programId\n );\n let multisig: PublicKey | null = null;\n for (let i = 0; i < multisigsList.length; i++) {\n if (multisigsList[i].authority === multisigAuthority.toString()) {\n multisig = multisigsList[i].multisig;\n break;\n }\n }\n\n const ixnFile = fs.readFileSync(path, \"utf8\");\n let rawTxns = ixnFile.split(\"\\n\");\n if (!rawTxns[rawTxns.length - 1].toString()) {\n rawTxns = rawTxns.slice(0, rawTxns.length - 1);\n }\n\n await this.createTransactionsFromRawTransactionsList(\n multisig!,\n rawTxns,\n txTitle\n );\n }\n\n async createTransactionsFromRawInstructionsList(\n multisig: PublicKey,\n rawIxns: string[],\n txTitle: string,\n multiplyFee: number = 1\n ) {\n const ixnsList: TransactionInstruction[][] = [];\n const txUrls: string[] = [];\n console.log(\"Raw ixns found: \", rawIxns.length);\n for (const [index, rawIxnMessage] of rawIxns.entries()) {\n const txBuffer = anchor.utils.bytes.bs58.decode(rawIxnMessage);\n const rawTxMessage = anchor.web3.Message.from(txBuffer);\n const tx = anchor.web3.Transaction.populate(rawTxMessage);\n if (tx.instructions.length === 0) {\n throw new Error(\"rawIxn \" + (index + 1) + \" is empty\");\n }\n const ixns = tx.instructions;\n ixnsList.push(ixns);\n }\n\n let txBuilderIxnStartIndex = 0;\n let titleIndex = 1;\n for (let i = 1; i <= ixnsList.length; i++) {\n const testTx = new anchor.web3.Transaction(\n await this.web3Client.sendConnection.getLatestBlockhash()\n );\n const tempIxns = ixnsList.slice(txBuilderIxnStartIndex, i);\n for (const ixnGroup of tempIxns) {\n testTx.add(...ixnGroup);\n }\n testTx.feePayer = this.wallet.publicKey;\n let byteLength = 1040;\n try {\n byteLength =\n testTx.serializeMessage().byteLength +\n 32 * testTx.instructions.length; // squads ixn account;\n } catch (e) {\n console.log(\n \"WARN: Failed to serialized ixns \" +\n txBuilderIxnStartIndex +\n \" to \" +\n i\n );\n }\n\n // Txn size too large, create txn with all ixns exlcuding current one\n if (byteLength > 1072) {\n // leave some bytes for txn signature\n const tx = new anchor.web3.Transaction();\n const tempIxns = ixnsList.slice(txBuilderIxnStartIndex, i - 1);\n for (const ixnGroup of tempIxns) {\n tx.add(...ixnGroup);\n }\n const title = txTitle + \" \" + titleIndex;\n\n console.log(\"Transaction: \" + title);\n if (this.mode === \"propose\") {\n // create, activate and approve txn\n const [, txUrl] = await this.api.createActivateAndApproveTxWithIxns(\n multisig,\n tx.instructions,\n title,\n multiplyFee\n );\n txUrls.push(txUrl);\n } else {\n await this.printOrSimulateTransaction(tx);\n }\n\n titleIndex++;\n txBuilderIxnStartIndex = i - 1;\n }\n }\n // send last one\n const tx = new anchor.web3.Transaction();\n const tempIxns = ixnsList.slice(\n txBuilderIxnStartIndex,\n ixnsList.length + 1\n );\n for (const ixnGroup of tempIxns) {\n tx.add(...ixnGroup);\n }\n const title = titleIndex === 1 ? txTitle : txTitle + \" \" + titleIndex;\n console.log(\"Transaction: \" + title);\n if (this.mode === \"propose\") {\n // create, activate and approve txn\n const [, txUrl] = await this.api.createActivateAndApproveTxWithIxns(\n multisig,\n tx.instructions,\n title,\n multiplyFee\n );\n\n console.log(\"Transaction URLs: \");\n for (const [index, txUrl] of txUrls.entries()) {\n console.log(index.toString() + \". \", txUrl);\n }\n console.log(txUrls.length.toString() + \". \", txUrl);\n } else {\n await this.printOrSimulateTransaction(tx);\n }\n }\n\n async createTransactionsFromRawTransactionsList(\n multisig: PublicKey,\n rawTxns: string[],\n txTitle: string\n ) {\n console.log(\"rawIxns length: \", rawTxns.length);\n let index = 1;\n for (const rawTxnMessage of rawTxns) {\n const title = txTitle + \" \" + index;\n index++;\n const txBuffer = anchor.utils.bytes.bs58.decode(rawTxnMessage);\n const rawTxMessage = anchor.web3.Message.from(txBuffer);\n const tx = anchor.web3.Transaction.populate(rawTxMessage);\n console.log(\"Transaction: \" + title);\n // for each txn we create it on squads\n if (this.mode === \"propose\") {\n // create, activate and approve txn\n await this.api.createActivateAndApproveTxWithIxns(\n multisig,\n tx.instructions,\n title\n );\n } else {\n await this.printOrSimulateTransaction(tx);\n }\n }\n }\n\n async createProgramUpgrade(\n multisigAuthority: PublicKey,\n programIdPk: string,\n bufferPk: string,\n refundAccountPk: string,\n title: string,\n multiplyFee: string\n ) {\n console.log(\n \"This will create new transactions for multisig \" +\n multisigAuthority.toString()\n );\n this.multisigs = await this.api.getSquads();\n\n const multisigsList = await loadAuthorities(\n this.multisigs,\n this.api.programId\n );\n let multisig: PublicKey | null = null;\n for (let i = 0; i < multisigsList.length; i++) {\n if (multisigsList[i].authority === multisigAuthority.toString()) {\n multisig = multisigsList[i].multisig;\n break;\n }\n }\n\n const programId = new PublicKey(programIdPk);\n const buffer = new PublicKey(bufferPk);\n const refundAccount = new PublicKey(refundAccountPk);\n const programUpgradeAccount = await this.api.createProgramUpgrade(\n multisigAuthority,\n multisig!,\n programId,\n buffer,\n refundAccount,\n title\n );\n\n await this.api.initializeProgramUpgrade(\n programUpgradeAccount,\n multisig!,\n title,\n multiplyFee ? Number(multiplyFee) : 1\n );\n }\n\n async printOrSimulateTransaction(transaction: Transaction) {\n if (this.mode === \"simulate\") {\n // simulate txn\n const { blockhash } =\n await this.web3Client.sendConnection.getLatestBlockhash();\n transaction.recentBlockhash = blockhash;\n transaction.feePayer = this.wallet.publicKey;\n const simulation =\n await this.web3Client.sendConnection.simulateTransaction(transaction);\n console.log(\"Simulation: \\n\" + simulation.value.logs);\n } else if (this.mode === \"print\") {\n // print txn\n console.log(\"Instructions: \");\n console.log(transaction.instructions);\n }\n }\n}\n\nexport default Menu;\n\nfunction getAuthName(authority: PublicKey) {\n if (authority.toString() === \"E35i5qn7872eEmBt15e5VGhziUBzCTm43XCSWvDoQNNv\") {\n return \"Kamino\";\n } else if (\n authority.toString() === \"BbM3mbcLsa3QcYEVx8iovwfKaA1iZ6DK5fEbbtHwS3N8\"\n ) {\n return \"KFarms\";\n } else if (\n authority.toString() === \"A9rQoX1sictAQkyXxaZA8nz674xutHwoqpK2mwLyexCZ\"\n ) {\n return \"KLend\";\n } else if (\n authority.toString() === \"BxdLNhoRXVs45wTVAZBrYQUkxbex5zXFCaJtsuRpoqMj\"\n ) {\n return \"KLend Staging\";\n } else {\n return \"Unkown\";\n }\n}\n\nconst loadAuthorities = async (ms: any[], programId: PublicKey) => {\n return Promise.all(\n ms.map(async (msObj, _) => {\n const [mAuth] = getAuthorityPDA(msObj.publicKey, new BN(1), programId);\n const authName = getAuthName(mAuth);\n return {\n multisig: msObj.publicKey,\n authority: `${mAuth.toBase58()}`,\n name: authName,\n };\n })\n );\n};\n"]}
|
package/dist/lib/program.d.ts
CHANGED
package/dist/lib/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/lib/program.ts"],"names":[],"mappings":";;;;AAAA,kEAA4C;AAE5C,0DAAuB;AACvB,MAAM,iBAAiB,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CACjD,6CAA6C,CAC9C,CAAC;AAEF,MAAM,SAAS,GAAG,CAAC,OAAY,EAAE,EAAE;IACjC,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAC1B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE;
|
|
1
|
+
{"version":3,"file":"program.js","sourceRoot":"","sources":["../../src/lib/program.ts"],"names":[],"mappings":"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","sourcesContent":["import * as anchor from \"@coral-xyz/anchor\";\nimport { Connection, PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\nconst BPFLOADER_ADDRESS = new anchor.web3.PublicKey(\n \"BPFLoaderUpgradeab1e11111111111111111111111\"\n);\n\nconst getParsed = (account: any) => {\n const { value } = account;\n if (value && value.data && \"parsed\" in value.data) {\n const {\n data: { parsed },\n } = value;\n return parsed;\n }\n return null;\n};\n\nexport const getParsedProgramAccount = async (\n connection: Connection,\n programAddress: PublicKey\n) => {\n const programAccountInfo = await connection.getParsedAccountInfo(\n programAddress\n );\n return getParsed(programAccountInfo);\n};\n\nexport const getProgramDataAccount = async (\n connection: Connection,\n programDataAddress: PublicKey\n) => {\n return connection.getParsedAccountInfo(programDataAddress);\n};\n\nexport const getProgramData = async (\n connection: Connection,\n programAddress: PublicKey\n) => {\n const programDataAddress = await getProgramDataAddress(programAddress);\n const programAccountInfo = await connection.getParsedAccountInfo(\n programDataAddress\n );\n const parsed = getParsed(programAccountInfo);\n return parsed;\n};\n\nexport const getProgramDataAddress = async (programAddress: PublicKey) => {\n const [programDataAddress] = await anchor.web3.PublicKey.findProgramAddress(\n [programAddress.toBytes()],\n BPFLOADER_ADDRESS\n );\n return programDataAddress;\n};\n\nexport const upgradeSetAuthorityIx = async (\n programAddress: PublicKey,\n currentAuthorityAddress: PublicKey,\n newAuthorityAddress: PublicKey\n) => {\n const upgradeProgramId = BPFLOADER_ADDRESS;\n const upgradeData = new BN(4, 10);\n const [programDataAddress] = await anchor.web3.PublicKey.findProgramAddress(\n [programAddress.toBuffer()],\n upgradeProgramId\n );\n const keys = [\n { pubkey: programDataAddress, isWritable: true, isSigner: false },\n { pubkey: currentAuthorityAddress, isWritable: false, isSigner: true },\n { pubkey: newAuthorityAddress, isWritable: false, isSigner: true },\n ];\n return new anchor.web3.TransactionInstruction({\n programId: upgradeProgramId,\n data: upgradeData.toArrayLike(Buffer, \"le\", 4),\n keys,\n });\n};\n"]}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.Web3Client = void 0;
|
|
4
|
+
exports.signSendAndConfirmRawTransactionWithRetry = signSendAndConfirmRawTransactionWithRetry;
|
|
5
|
+
exports.sendAndConfirmRawTransactionWithRetry = sendAndConfirmRawTransactionWithRetry;
|
|
6
|
+
exports.isVersionedTransaction = isVersionedTransaction;
|
|
4
7
|
const tslib_1 = require("tslib");
|
|
5
8
|
const web3_js_1 = require("@solana/web3.js");
|
|
6
9
|
const bs58_1 = tslib_1.__importDefault(require("bs58"));
|
|
@@ -64,8 +67,8 @@ class Web3Client {
|
|
|
64
67
|
}
|
|
65
68
|
}
|
|
66
69
|
exports.Web3Client = Web3Client;
|
|
67
|
-
function signSendAndConfirmRawTransactionWithRetry(
|
|
68
|
-
return tslib_1.__awaiter(this,
|
|
70
|
+
function signSendAndConfirmRawTransactionWithRetry(_a) {
|
|
71
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ mainConnection, extraConnections = [], tx, signers, commitment = "confirmed", sendTransactionOptions, }) {
|
|
69
72
|
tx.sign(signers);
|
|
70
73
|
return sendAndConfirmRawTransactionWithRetry({
|
|
71
74
|
mainConnection,
|
|
@@ -76,10 +79,9 @@ function signSendAndConfirmRawTransactionWithRetry({ mainConnection, extraConnec
|
|
|
76
79
|
});
|
|
77
80
|
});
|
|
78
81
|
}
|
|
79
|
-
|
|
80
|
-
function
|
|
81
|
-
|
|
82
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
82
|
+
function sendAndConfirmRawTransactionWithRetry(_a) {
|
|
83
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* ({ mainConnection, extraConnections = [], tx, commitment = "confirmed", sendTransactionOptions, }) {
|
|
84
|
+
var _b, _c;
|
|
83
85
|
const signature = isVersionedTransaction(tx)
|
|
84
86
|
? bs58_1.default.encode(tx.signatures[0])
|
|
85
87
|
: bs58_1.default.encode(tx.signature);
|
|
@@ -139,8 +141,8 @@ function sendAndConfirmRawTransactionWithRetry({ mainConnection, extraConnection
|
|
|
139
141
|
if (txDetails) {
|
|
140
142
|
// eslint-disable-next-line @typescript-eslint/no-throw-literal
|
|
141
143
|
throw {
|
|
142
|
-
err: (
|
|
143
|
-
logs: ((
|
|
144
|
+
err: (_b = txDetails.meta) === null || _b === void 0 ? void 0 : _b.err,
|
|
145
|
+
logs: ((_c = txDetails.meta) === null || _c === void 0 ? void 0 : _c.logMessages) || [],
|
|
144
146
|
signature,
|
|
145
147
|
tx,
|
|
146
148
|
};
|
|
@@ -151,9 +153,7 @@ function sendAndConfirmRawTransactionWithRetry({ mainConnection, extraConnection
|
|
|
151
153
|
return signature;
|
|
152
154
|
});
|
|
153
155
|
}
|
|
154
|
-
exports.sendAndConfirmRawTransactionWithRetry = sendAndConfirmRawTransactionWithRetry;
|
|
155
156
|
function isVersionedTransaction(transaction) {
|
|
156
157
|
return "version" in transaction;
|
|
157
158
|
}
|
|
158
|
-
exports.isVersionedTransaction = isVersionedTransaction;
|
|
159
159
|
//# sourceMappingURL=sendTransactionUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sendTransactionUtils.js","sourceRoot":"","sources":["../../src/lib/sendTransactionUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Commitment,\n Connection,\n SendOptions,\n Signer,\n Transaction,\n VersionedTransaction,\n} from \"@solana/web3.js\";\nimport bs58 from \"bs58\";\n\nexport type ENV = \"mainnet-beta\" | \"devnet\" | \"localnet\";\nexport type Chain = {\n name: ENV;\n displayName: string;\n endpoint: string;\n chainID: number;\n wsEndpoint?: string;\n};\n\nconst RETRY_INTERVAL = 2000;\n\nexport class Web3Client {\n private readonly _connection: Connection;\n\n private readonly _sendConnection: Connection;\n\n private readonly _sendConnectionsExtra: Connection[];\n\n private readonly _endpoint: string;\n\n private readonly _env: ENV;\n\n private readonly _chain: Chain;\n\n constructor(endpoint: Chain | string, ironforgeCluster: string) {\n let chain: Chain | undefined;\n if (typeof endpoint === \"string\") {\n if (chain === undefined) {\n throw Error(`Invalid environment - ${endpoint}`);\n }\n } else {\n chain = endpoint;\n }\n\n this._chain = chain;\n this._endpoint = chain.endpoint;\n this._env = chain.name;\n // use this connection to get data\n this._connection = new Connection(this._endpoint, {\n commitment: \"recent\",\n wsEndpoint: chain.wsEndpoint,\n confirmTransactionInitialTimeout: 120 * 1000,\n });\n\n // use this one to submit transactions\n this._sendConnection = new Connection(this._endpoint, {\n commitment: \"confirmed\",\n wsEndpoint: chain.wsEndpoint,\n confirmTransactionInitialTimeout: 120 * 1000,\n });\n\n if (chain.name !== \"localnet\") {\n this._sendConnectionsExtra = [\n new Connection(ironforgeCluster, {\n commitment: \"confirmed\",\n wsEndpoint: chain.wsEndpoint,\n confirmTransactionInitialTimeout: 120 * 1000,\n }),\n ];\n } else {\n this._sendConnectionsExtra = [this._sendConnection];\n }\n }\n\n get endpoint(): string {\n return this._endpoint;\n }\n\n get chain(): Chain {\n return this._chain;\n }\n\n get env(): ENV {\n return this._env;\n }\n\n get connection(): Connection {\n return this._connection;\n }\n\n get sendConnection(): Connection {\n return this._sendConnection;\n }\n\n get sendConnectionsExtra(): Connection[] {\n return this._sendConnectionsExtra;\n }\n}\n\nexport async function signSendAndConfirmRawTransactionWithRetry({\n mainConnection,\n extraConnections = [],\n tx,\n signers,\n commitment = \"confirmed\",\n sendTransactionOptions,\n}: {\n mainConnection: Connection;\n extraConnections?: Connection[];\n tx: VersionedTransaction;\n signers: Array<Signer>;\n commitment?: Commitment;\n sendTransactionOptions?: SendOptions;\n}) {\n tx.sign(signers);\n return sendAndConfirmRawTransactionWithRetry({\n mainConnection,\n extraConnections,\n tx,\n commitment,\n sendTransactionOptions,\n });\n}\n\nexport async function sendAndConfirmRawTransactionWithRetry({\n mainConnection,\n extraConnections = [],\n tx,\n commitment = \"confirmed\",\n sendTransactionOptions,\n}: {\n mainConnection: Connection;\n extraConnections?: Connection[];\n tx: Transaction | VersionedTransaction;\n commitment?: Commitment;\n sendTransactionOptions?: SendOptions;\n}) {\n const signature = isVersionedTransaction(tx)\n ? bs58.encode(tx.signatures[0])\n : bs58.encode(tx.signature!);\n let confirmed = false;\n const serialized = Buffer.from(tx.serialize());\n const latestBlockHashAndContext =\n await mainConnection.getLatestBlockhashAndContext(commitment);\n const defaultOptions: SendOptions = {\n skipPreflight: true,\n maxRetries: 0,\n preflightCommitment: commitment,\n };\n\n if (!signature) {\n throw new Error(\n \"Transaction is not signed. Refresh the page and try again\"\n );\n }\n\n // Listen for transaction confirmation\n const waitForConfirmation = async (sig: string) => {\n try {\n const res = await mainConnection.confirmTransaction(\n {\n blockhash: latestBlockHashAndContext.value.blockhash,\n lastValidBlockHeight:\n latestBlockHashAndContext.value.lastValidBlockHeight,\n signature: sig,\n },\n commitment\n );\n confirmed = true;\n\n return res;\n } catch (error) {\n console.log(error);\n throw error;\n }\n };\n\n // Send transaction and set interval to resend every X seconds\n const sendTransaction = () => {\n if (confirmed) {\n return;\n }\n try {\n mainConnection.sendRawTransaction(serialized, {\n ...defaultOptions,\n ...sendTransactionOptions,\n });\n\n extraConnections.forEach((conn) => {\n conn.sendRawTransaction(serialized, {\n ...defaultOptions,\n ...sendTransactionOptions,\n });\n });\n } catch (error) {\n console.log(error);\n return error;\n }\n };\n\n sendTransaction();\n setInterval(() => {\n sendTransaction();\n }, RETRY_INTERVAL);\n\n const res = await waitForConfirmation(signature);\n\n if (res && res.value && res.value.err) {\n const txDetails = await mainConnection.getTransaction(signature, {\n maxSupportedTransactionVersion: 0,\n commitment: \"confirmed\",\n });\n if (txDetails) {\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw {\n err: txDetails.meta?.err,\n logs: txDetails.meta?.logMessages || [],\n signature,\n tx,\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw { err: res.value.err, msg: res.value.err, signature, tx };\n }\n\n return signature;\n}\n\nexport function isVersionedTransaction(\n transaction: Transaction | VersionedTransaction\n): transaction is VersionedTransaction {\n return \"version\" in transaction;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"sendTransactionUtils.js","sourceRoot":"","sources":["../../src/lib/sendTransactionUtils.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Commitment,\n Connection,\n SendOptions,\n Signer,\n Transaction,\n VersionedTransaction,\n} from \"@solana/web3.js\";\nimport bs58 from \"bs58\";\n\nexport type ENV = \"mainnet-beta\" | \"devnet\" | \"localnet\";\nexport type Chain = {\n name: ENV;\n displayName: string;\n endpoint: string;\n chainID: number;\n wsEndpoint?: string;\n};\n\nconst RETRY_INTERVAL = 2000;\n\nexport class Web3Client {\n private readonly _connection: Connection;\n\n private readonly _sendConnection: Connection;\n\n private readonly _sendConnectionsExtra: Connection[];\n\n private readonly _endpoint: string;\n\n private readonly _env: ENV;\n\n private readonly _chain: Chain;\n\n constructor(endpoint: Chain | string, ironforgeCluster: string) {\n let chain: Chain | undefined;\n if (typeof endpoint === \"string\") {\n if (chain === undefined) {\n throw Error(`Invalid environment - ${endpoint}`);\n }\n } else {\n chain = endpoint;\n }\n\n this._chain = chain;\n this._endpoint = chain.endpoint;\n this._env = chain.name;\n // use this connection to get data\n this._connection = new Connection(this._endpoint, {\n commitment: \"recent\",\n wsEndpoint: chain.wsEndpoint,\n confirmTransactionInitialTimeout: 120 * 1000,\n });\n\n // use this one to submit transactions\n this._sendConnection = new Connection(this._endpoint, {\n commitment: \"confirmed\",\n wsEndpoint: chain.wsEndpoint,\n confirmTransactionInitialTimeout: 120 * 1000,\n });\n\n if (chain.name !== \"localnet\") {\n this._sendConnectionsExtra = [\n new Connection(ironforgeCluster, {\n commitment: \"confirmed\",\n wsEndpoint: chain.wsEndpoint,\n confirmTransactionInitialTimeout: 120 * 1000,\n }),\n ];\n } else {\n this._sendConnectionsExtra = [this._sendConnection];\n }\n }\n\n get endpoint(): string {\n return this._endpoint;\n }\n\n get chain(): Chain {\n return this._chain;\n }\n\n get env(): ENV {\n return this._env;\n }\n\n get connection(): Connection {\n return this._connection;\n }\n\n get sendConnection(): Connection {\n return this._sendConnection;\n }\n\n get sendConnectionsExtra(): Connection[] {\n return this._sendConnectionsExtra;\n }\n}\n\nexport async function signSendAndConfirmRawTransactionWithRetry({\n mainConnection,\n extraConnections = [],\n tx,\n signers,\n commitment = \"confirmed\",\n sendTransactionOptions,\n}: {\n mainConnection: Connection;\n extraConnections?: Connection[];\n tx: VersionedTransaction;\n signers: Array<Signer>;\n commitment?: Commitment;\n sendTransactionOptions?: SendOptions;\n}) {\n tx.sign(signers);\n return sendAndConfirmRawTransactionWithRetry({\n mainConnection,\n extraConnections,\n tx,\n commitment,\n sendTransactionOptions,\n });\n}\n\nexport async function sendAndConfirmRawTransactionWithRetry({\n mainConnection,\n extraConnections = [],\n tx,\n commitment = \"confirmed\",\n sendTransactionOptions,\n}: {\n mainConnection: Connection;\n extraConnections?: Connection[];\n tx: Transaction | VersionedTransaction;\n commitment?: Commitment;\n sendTransactionOptions?: SendOptions;\n}) {\n const signature = isVersionedTransaction(tx)\n ? bs58.encode(tx.signatures[0])\n : bs58.encode(tx.signature!);\n let confirmed = false;\n const serialized = Buffer.from(tx.serialize());\n const latestBlockHashAndContext =\n await mainConnection.getLatestBlockhashAndContext(commitment);\n const defaultOptions: SendOptions = {\n skipPreflight: true,\n maxRetries: 0,\n preflightCommitment: commitment,\n };\n\n if (!signature) {\n throw new Error(\n \"Transaction is not signed. Refresh the page and try again\"\n );\n }\n\n // Listen for transaction confirmation\n const waitForConfirmation = async (sig: string) => {\n try {\n const res = await mainConnection.confirmTransaction(\n {\n blockhash: latestBlockHashAndContext.value.blockhash,\n lastValidBlockHeight:\n latestBlockHashAndContext.value.lastValidBlockHeight,\n signature: sig,\n },\n commitment\n );\n confirmed = true;\n\n return res;\n } catch (error) {\n console.log(error);\n throw error;\n }\n };\n\n // Send transaction and set interval to resend every X seconds\n const sendTransaction = () => {\n if (confirmed) {\n return;\n }\n try {\n mainConnection.sendRawTransaction(serialized, {\n ...defaultOptions,\n ...sendTransactionOptions,\n });\n\n extraConnections.forEach((conn) => {\n conn.sendRawTransaction(serialized, {\n ...defaultOptions,\n ...sendTransactionOptions,\n });\n });\n } catch (error) {\n console.log(error);\n return error;\n }\n };\n\n sendTransaction();\n setInterval(() => {\n sendTransaction();\n }, RETRY_INTERVAL);\n\n const res = await waitForConfirmation(signature);\n\n if (res && res.value && res.value.err) {\n const txDetails = await mainConnection.getTransaction(signature, {\n maxSupportedTransactionVersion: 0,\n commitment: \"confirmed\",\n });\n if (txDetails) {\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw {\n err: txDetails.meta?.err,\n logs: txDetails.meta?.logMessages || [],\n signature,\n tx,\n };\n }\n // eslint-disable-next-line @typescript-eslint/no-throw-literal\n throw { err: res.value.err, msg: res.value.err, signature, tx };\n }\n\n return signature;\n}\n\nexport function isVersionedTransaction(\n transaction: Transaction | VersionedTransaction\n): transaction is VersionedTransaction {\n return \"version\" in transaction;\n}\n"]}
|
package/dist/lib/utils.d.ts
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { AccountInfo, Commitment, Connection, PublicKey, TransactionInstruction } from "@solana/web3.js";
|
|
3
2
|
export declare function shortenTextEnd(text: string, chars: number): string;
|
|
4
3
|
export declare function getMultipleAccountsBatch(connection: Connection, publicKeys: PublicKey[], commitment?: Commitment): Promise<Array<null | {
|
package/dist/lib/utils.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.shortenTextEnd = shortenTextEnd;
|
|
4
|
+
exports.getMultipleAccountsBatch = getMultipleAccountsBatch;
|
|
5
|
+
exports.createAddExtraComputeUnitsTransaction = createAddExtraComputeUnitsTransaction;
|
|
4
6
|
const tslib_1 = require("tslib");
|
|
5
7
|
const web3_js_1 = require("@solana/web3.js");
|
|
6
8
|
function shortenTextEnd(text, chars) {
|
|
@@ -9,9 +11,8 @@ function shortenTextEnd(text, chars) {
|
|
|
9
11
|
return `${cleanedText.substring(0, chars)}...`;
|
|
10
12
|
return cleanedText;
|
|
11
13
|
}
|
|
12
|
-
|
|
13
|
-
function
|
|
14
|
-
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
14
|
+
function getMultipleAccountsBatch(connection_1, publicKeys_1) {
|
|
15
|
+
return tslib_1.__awaiter(this, arguments, void 0, function* (connection, publicKeys, commitment = "processed") {
|
|
15
16
|
const keys = [];
|
|
16
17
|
let tempKeys = [];
|
|
17
18
|
publicKeys.forEach((k) => {
|
|
@@ -49,12 +50,10 @@ function getMultipleAccountsBatch(connection, publicKeys, commitment = "processe
|
|
|
49
50
|
});
|
|
50
51
|
});
|
|
51
52
|
}
|
|
52
|
-
exports.getMultipleAccountsBatch = getMultipleAccountsBatch;
|
|
53
53
|
function createAddExtraComputeUnitsTransaction(units, microLamports) {
|
|
54
54
|
const ixns = [];
|
|
55
55
|
ixns.push(web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units }));
|
|
56
56
|
ixns.push(web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({ microLamports }));
|
|
57
57
|
return ixns;
|
|
58
58
|
}
|
|
59
|
-
exports.createAddExtraComputeUnitsTransaction = createAddExtraComputeUnitsTransaction;
|
|
60
59
|
//# sourceMappingURL=utils.js.map
|
package/dist/lib/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":";;AASA,wCAKC;AAED,4DAyDC;AAED,sFAQC;;AAnFD,6CAOyB;AAEzB,SAAgB,cAAc,CAAC,IAAY,EAAE,KAAa;IACxD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAChD,IAAI,WAAW,CAAC,MAAM,GAAG,KAAK;QAC5B,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;IACjD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,SAAsB,wBAAwB;iEAC5C,UAAsB,EACtB,UAAuB,EACvB,aAAyB,WAAW;QAIpC,MAAM,IAAI,GAAkB,EAAE,CAAC;QAC/B,IAAI,QAAQ,GAAgB,EAAE,CAAC;QAE/B,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACvB,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpB,QAAQ,GAAG,EAAE,CAAC;YAChB,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtB,CAAC;QAED,MAAM,QAAQ,GAKT,EAAE,CAAC;QAER,MAAM,QAAQ,GAA2B,EAAE,CAAC;QAC5C,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,CAAO,GAAG,EAAE,KAAK,EAAE,EAAE;YAC5B,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,UAAU,CAAC,uBAAuB,CACxD,GAAG,EACH,UAAU,CACX,CAAC;QACJ,CAAC,CAAA,CAAC,CACH,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;aAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;aACjD,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YACrB,MAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9C,gDAAgD;YAChD,KAAK,MAAM,OAAO,IAAI,GAAG,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACzB,CAAC;QACH,CAAC,CAAC,CAAC;QAEL,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;YACnC,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;gBACrB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO;gBACL,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC;gBAC1B,OAAO;aACR,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAED,SAAgB,qCAAqC,CACnD,KAAa,EACb,aAAqB;IAErB,MAAM,IAAI,GAAG,EAAE,CAAC;IAChB,IAAI,CAAC,IAAI,CAAC,8BAAoB,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,IAAI,CAAC,8BAAoB,CAAC,mBAAmB,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC;IACvE,OAAO,IAAI,CAAC;AACd,CAAC","sourcesContent":["import {\n AccountInfo,\n Commitment,\n ComputeBudgetProgram,\n Connection,\n PublicKey,\n TransactionInstruction,\n} from \"@solana/web3.js\";\n\nexport function shortenTextEnd(text: string, chars: number) {\n const cleanedText = text.replaceAll(\"\\x00\", \"\");\n if (cleanedText.length > chars)\n return `${cleanedText.substring(0, chars)}...`;\n return cleanedText;\n}\n\nexport async function getMultipleAccountsBatch(\n connection: Connection,\n publicKeys: PublicKey[],\n commitment: Commitment = \"processed\"\n): Promise<\n Array<null | { publicKey: PublicKey; account: AccountInfo<Buffer> }>\n> {\n const keys: PublicKey[][] = [];\n let tempKeys: PublicKey[] = [];\n\n publicKeys.forEach((k) => {\n if (tempKeys.length >= 100) {\n keys.push(tempKeys);\n tempKeys = [];\n }\n tempKeys.push(k);\n });\n if (tempKeys.length > 0) {\n keys.push(tempKeys);\n }\n\n const accounts: Array<null | {\n executable: any;\n owner: PublicKey;\n lamports: any;\n data: Buffer;\n }> = [];\n\n const resArray: { [key: number]: any } = {};\n await Promise.all(\n keys.map(async (key, index) => {\n resArray[index] = await connection.getMultipleAccountsInfo(\n key,\n commitment\n );\n })\n );\n\n Object.keys(resArray)\n .sort((a, b) => parseInt(a, 10) - parseInt(b, 10))\n .forEach((itemIndex) => {\n const res = resArray[parseInt(itemIndex, 10)];\n // eslint-disable-next-line no-restricted-syntax\n for (const account of res) {\n accounts.push(account);\n }\n });\n\n return accounts.map((account, idx) => {\n if (account === null) {\n return null;\n }\n return {\n publicKey: publicKeys[idx],\n account,\n };\n });\n}\n\nexport function createAddExtraComputeUnitsTransaction(\n units: number,\n microLamports: number\n): TransactionInstruction[] {\n const ixns = [];\n ixns.push(ComputeBudgetProgram.setComputeUnitLimit({ units }));\n ixns.push(ComputeBudgetProgram.setComputeUnitPrice({ microLamports }));\n return ixns;\n}\n"]}
|
package/dist/lib/wallet.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.findLedgerAddress =
|
|
3
|
+
exports.findLedgerAddress = findLedgerAddress;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const ledger_utils_1 = require("@marinade.finance/ledger-utils");
|
|
6
6
|
class CliWallet {
|
|
@@ -21,5 +21,4 @@ function findLedgerAddress(addressKey) {
|
|
|
21
21
|
}
|
|
22
22
|
});
|
|
23
23
|
}
|
|
24
|
-
exports.findLedgerAddress = findLedgerAddress;
|
|
25
24
|
//# sourceMappingURL=wallet.js.map
|
package/dist/lib/wallet.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/lib/wallet.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/lib/wallet.ts"],"names":[],"mappings":";;AAaA,8CAQC;;AApBD,iEAAmE;AAEnE,MAAM,SAAS;IAGb,YAAY,YAAiB;QAC3B,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;IAC7B,CAAC;CACF;AAED,kBAAe,SAAS,CAAC;AAEzB,SAAsB,iBAAiB,CAAC,UAAkB;;QACxD,MAAM,QAAQ,GAAG,cAAc,CAAC;QAChC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,UAAU,EAAE,CAAC;YAC7C,OAAO,MAAM,IAAA,gCAAiB,EAAC,IAAI,CAAC,CAAC;QACvC,CAAC;aAAM,CAAC;YACN,OAAO,MAAM,IAAA,gCAAiB,EAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CAAA","sourcesContent":["import * as anchor from \"@coral-xyz/anchor\";\nimport { parseLedgerWallet } from \"@marinade.finance/ledger-utils\";\n\nclass CliWallet {\n wallet: anchor.Wallet;\n\n constructor(ledgerWallet: any) {\n this.wallet = ledgerWallet;\n }\n}\n\nexport default CliWallet;\n\nexport async function findLedgerAddress(addressKey: string) {\n const basePath = \"usb://ledger\";\n if (addressKey !== \"default\") {\n const path = basePath + `?key=${addressKey}`;\n return await parseLedgerWallet(path);\n } else {\n return await parseLedgerWallet(basePath);\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kamino-finance/squads-kamino-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"module": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -8,7 +8,9 @@
|
|
|
8
8
|
"dist"
|
|
9
9
|
],
|
|
10
10
|
"scripts": {
|
|
11
|
+
"prepublish": "yarn build",
|
|
11
12
|
"build": "rm -rf dist/; tsc",
|
|
13
|
+
"cli": "yarn tsx src/index.ts",
|
|
12
14
|
"lint": "prettier --check .; yarn eslint .",
|
|
13
15
|
"lint:fix": "prettier --write .; yarn eslint . --fix"
|
|
14
16
|
},
|
|
@@ -21,7 +23,7 @@
|
|
|
21
23
|
"@marinade.finance/ledger-utils": "^2.0.18",
|
|
22
24
|
"@marinade.finance/ts-common": "^2.0.18",
|
|
23
25
|
"@solana/spl-token": "^0.3.6",
|
|
24
|
-
"@solana/web3.js": "^1.
|
|
26
|
+
"@solana/web3.js": "^1.95.3",
|
|
25
27
|
"@sqds/sdk": "^2.0.2",
|
|
26
28
|
"@types/bn.js": "^5.1.1",
|
|
27
29
|
"@typescript-eslint/eslint-plugin": "^5.5.0",
|
|
@@ -30,12 +32,12 @@
|
|
|
30
32
|
"bs58": "^5.0.0",
|
|
31
33
|
"commander": "^9.3.0",
|
|
32
34
|
"dotenv": "^16.3.1",
|
|
35
|
+
"dotenv-expand": "^11.0.6",
|
|
33
36
|
"eslint": "^8.55.0",
|
|
34
37
|
"eslint-config-prettier": "^8.3.0",
|
|
35
38
|
"eslint-plugin-import": "^2.29.0",
|
|
36
39
|
"prettier": "^2.8.8",
|
|
37
|
-
"tslib": "^2.5.0"
|
|
38
|
-
"typescript": "^4.9.5"
|
|
40
|
+
"tslib": "^2.5.0"
|
|
39
41
|
},
|
|
40
42
|
"bin": {
|
|
41
43
|
"squads-kamino-cli": "./dist/index.js"
|
|
@@ -45,10 +47,13 @@
|
|
|
45
47
|
},
|
|
46
48
|
"devDependencies": {
|
|
47
49
|
"@types/node": "^18.14.6",
|
|
48
|
-
"
|
|
50
|
+
"tsx": "^4.19.1",
|
|
51
|
+
"typescript": "^5.6.3"
|
|
49
52
|
},
|
|
50
53
|
"resolutions": {
|
|
51
|
-
"@solana/web3.js": "^1.66.2",
|
|
52
54
|
"@solana/spl-token": "^0.3.6"
|
|
55
|
+
},
|
|
56
|
+
"publishConfig": {
|
|
57
|
+
"access": "public"
|
|
53
58
|
}
|
|
54
59
|
}
|