@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 CHANGED
@@ -50,15 +50,15 @@ IRONFORGE_CLUSTER=
50
50
  ### Examples
51
51
 
52
52
  - Get multisigs
53
- `npx ts-node src/index.ts create-transaction-from-instructions-file --cluster https://rpc.url --ledger-address-key 0 --multisig BxdLNhoRXVs45wTVAZBrYQUkxbex5zXFCaJtsuRpoqMj --file-path ./ixns.in`
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
- `npx ts-node src/index.ts 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`
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
- `npx ts-node src/index.ts create-transaction-from-instructions-file --squad kamino --file-path ./ixns.in --title 'Squads cli test add token' --mode print`
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
- `npx ts-node src/index.ts create-transaction-from-instructions-file --multisig 7Pd2qaTnHmbfwcdVnf812xz2mdWz8G6sQxEjc3t7NChz --file-path ./ixns.in --title 'Squads cli test add token' --mode propose`
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
- `npx ts-node src/index.ts create-program-upgrade --multisig BxdLNhoRXVs45wTVAZBrYQUkxbex5zXFCaJtsuRpoqMj --program-id SLendK7ySfcEzyaFqy93gDnD3RtrpXJcnRwb6zFHJSh --buffer EnYZG1528vJQpGmEFSCR4KLVy8aoShzSUt6zBECyP7mg --refund-address sadmBTQm5HJsyzWHEjV4YwG9CiahZKVDVqAyS4Wx1zH --title 'Squads cli test program upgrade' --mode propose`
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(({ cluster, ironforgeCluster, ledgerAddressKey }) => tslib_1.__awaiter(this, void 0, void 0, function* () {
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, }) => tslib_1.__awaiter(this, void 0, void 0, function* () {
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, }) => tslib_1.__awaiter(this, void 0, void 0, function* () {
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, }) => tslib_1.__awaiter(this, void 0, void 0, function* () {
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: anchor.web3.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: anchor.web3.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: anchor.web3.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: anchor.web3.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: anchor.web3.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: anchor.web3.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: anchor.web3.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: anchor.web3.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: anchor.web3.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: anchor.web3.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: anchor.web3.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: anchor.web3.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.noopProfiledFunctionExecution = exports.retryAsyncFirstSigned = exports.retryAsync = void 0;
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 = (msPDA, ixns, txTitle, multiplyFee = 1) => tslib_1.__awaiter(this, void 0, void 0, function* () {
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(fn, retriesLeft = 5, interval = 2000) {
578
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
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
- exports.retryAsync = retryAsync;
592
- function retryAsyncFirstSigned(fnSigned, fn, retriesLeft = 5, interval = 2000) {
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
@@ -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(multisig, rawIxns, txTitle, multiplyFee = 1) {
91
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
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);
@@ -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"]}
@@ -1,4 +1,3 @@
1
- /// <reference types="node" />
2
1
  import * as anchor from "@coral-xyz/anchor";
3
2
  import { Connection, PublicKey } from "@solana/web3.js";
4
3
  export declare const getParsedProgramAccount: (connection: Connection, programAddress: PublicKey) => Promise<any>;
@@ -1 +1 @@
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
+ {"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.isVersionedTransaction = exports.sendAndConfirmRawTransactionWithRetry = exports.signSendAndConfirmRawTransactionWithRetry = exports.Web3Client = void 0;
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({ mainConnection, extraConnections = [], tx, signers, commitment = "confirmed", sendTransactionOptions, }) {
68
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
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
- exports.signSendAndConfirmRawTransactionWithRetry = signSendAndConfirmRawTransactionWithRetry;
80
- function sendAndConfirmRawTransactionWithRetry({ mainConnection, extraConnections = [], tx, commitment = "confirmed", sendTransactionOptions, }) {
81
- var _a, _b;
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: (_a = txDetails.meta) === null || _a === void 0 ? void 0 : _a.err,
143
- logs: ((_b = txDetails.meta) === null || _b === void 0 ? void 0 : _b.logMessages) || [],
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":";;;AAmGA,8FAuBC;AAED,sFAsGC;AAED,wDAIC;;AAxOD,6CAOyB;AACzB,wDAAwB;AAWxB,MAAM,cAAc,GAAG,IAAI,CAAC;AAE5B,MAAa,UAAU;IAarB,YAAY,QAAwB,EAAE,gBAAwB;QAC5D,IAAI,KAAwB,CAAC;QAC7B,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACxB,MAAM,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;aAAM,CAAC;YACN,KAAK,GAAG,QAAQ,CAAC;QACnB,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,kCAAkC;QAClC,IAAI,CAAC,WAAW,GAAG,IAAI,oBAAU,CAAC,IAAI,CAAC,SAAS,EAAE;YAChD,UAAU,EAAE,QAAQ;YACpB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,gCAAgC,EAAE,GAAG,GAAG,IAAI;SAC7C,CAAC,CAAC;QAEH,sCAAsC;QACtC,IAAI,CAAC,eAAe,GAAG,IAAI,oBAAU,CAAC,IAAI,CAAC,SAAS,EAAE;YACpD,UAAU,EAAE,WAAW;YACvB,UAAU,EAAE,KAAK,CAAC,UAAU;YAC5B,gCAAgC,EAAE,GAAG,GAAG,IAAI;SAC7C,CAAC,CAAC;QAEH,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,qBAAqB,GAAG;gBAC3B,IAAI,oBAAU,CAAC,gBAAgB,EAAE;oBAC/B,UAAU,EAAE,WAAW;oBACvB,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,gCAAgC,EAAE,GAAG,GAAG,IAAI;iBAC7C,CAAC;aACH,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,qBAAqB,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACpC,CAAC;CACF;AA5ED,gCA4EC;AAED,SAAsB,yCAAyC;iEAAC,EAC9D,cAAc,EACd,gBAAgB,GAAG,EAAE,EACrB,EAAE,EACF,OAAO,EACP,UAAU,GAAG,WAAW,EACxB,sBAAsB,GAQvB;QACC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjB,OAAO,qCAAqC,CAAC;YAC3C,cAAc;YACd,gBAAgB;YAChB,EAAE;YACF,UAAU;YACV,sBAAsB;SACvB,CAAC,CAAC;IACL,CAAC;CAAA;AAED,SAAsB,qCAAqC;iEAAC,EAC1D,cAAc,EACd,gBAAgB,GAAG,EAAE,EACrB,EAAE,EACF,UAAU,GAAG,WAAW,EACxB,sBAAsB,GAOvB;;QACC,MAAM,SAAS,GAAG,sBAAsB,CAAC,EAAE,CAAC;YAC1C,CAAC,CAAC,cAAI,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC,CAAC,cAAI,CAAC,MAAM,CAAC,EAAE,CAAC,SAAU,CAAC,CAAC;QAC/B,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC;QAC/C,MAAM,yBAAyB,GAC7B,MAAM,cAAc,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC;QAChE,MAAM,cAAc,GAAgB;YAClC,aAAa,EAAE,IAAI;YACnB,UAAU,EAAE,CAAC;YACb,mBAAmB,EAAE,UAAU;SAChC,CAAC;QAEF,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QAED,sCAAsC;QACtC,MAAM,mBAAmB,GAAG,CAAO,GAAW,EAAE,EAAE;YAChD,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,kBAAkB,CACjD;oBACE,SAAS,EAAE,yBAAyB,CAAC,KAAK,CAAC,SAAS;oBACpD,oBAAoB,EAClB,yBAAyB,CAAC,KAAK,CAAC,oBAAoB;oBACtD,SAAS,EAAE,GAAG;iBACf,EACD,UAAU,CACX,CAAC;gBACF,SAAS,GAAG,IAAI,CAAC;gBAEjB,OAAO,GAAG,CAAC;YACb,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAA,CAAC;QAEF,8DAA8D;QAC9D,MAAM,eAAe,GAAG,GAAG,EAAE;YAC3B,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YACD,IAAI,CAAC;gBACH,cAAc,CAAC,kBAAkB,CAAC,UAAU,kCACvC,cAAc,GACd,sBAAsB,EACzB,CAAC;gBAEH,gBAAgB,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBAChC,IAAI,CAAC,kBAAkB,CAAC,UAAU,kCAC7B,cAAc,GACd,sBAAsB,EACzB,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnB,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC;QAEF,eAAe,EAAE,CAAC;QAClB,WAAW,CAAC,GAAG,EAAE;YACf,eAAe,EAAE,CAAC;QACpB,CAAC,EAAE,cAAc,CAAC,CAAC;QAEnB,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,SAAS,CAAC,CAAC;QAEjD,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,cAAc,CAAC,SAAS,EAAE;gBAC/D,8BAA8B,EAAE,CAAC;gBACjC,UAAU,EAAE,WAAW;aACxB,CAAC,CAAC;YACH,IAAI,SAAS,EAAE,CAAC;gBACd,+DAA+D;gBAC/D,MAAM;oBACJ,GAAG,EAAE,MAAA,SAAS,CAAC,IAAI,0CAAE,GAAG;oBACxB,IAAI,EAAE,CAAA,MAAA,SAAS,CAAC,IAAI,0CAAE,WAAW,KAAI,EAAE;oBACvC,SAAS;oBACT,EAAE;iBACH,CAAC;YACJ,CAAC;YACD,+DAA+D;YAC/D,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;QAClE,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;CAAA;AAED,SAAgB,sBAAsB,CACpC,WAA+C;IAE/C,OAAO,SAAS,IAAI,WAAW,CAAC;AAClC,CAAC","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,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.createAddExtraComputeUnitsTransaction = exports.getMultipleAccountsBatch = exports.shortenTextEnd = void 0;
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
- exports.shortenTextEnd = shortenTextEnd;
13
- function getMultipleAccountsBatch(connection, publicKeys, commitment = "processed") {
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
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/lib/utils.ts"],"names":[],"mappings":";;;;AAAA,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;AALD,wCAKC;AAED,SAAsB,wBAAwB,CAC5C,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;gBAC1B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpB,QAAQ,GAAG,EAAE,CAAC;aACf;YACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QACH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACrB;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;gBACzB,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACxB;QACH,CAAC,CAAC,CAAC;QAEL,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;YACnC,IAAI,OAAO,KAAK,IAAI,EAAE;gBACpB,OAAO,IAAI,CAAC;aACb;YACD,OAAO;gBACL,SAAS,EAAE,UAAU,CAAC,GAAG,CAAC;gBAC1B,OAAO;aACR,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;CAAA;AAzDD,4DAyDC;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;AARD,sFAQC","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"]}
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"]}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.findLedgerAddress = void 0;
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
@@ -1 +1 @@
1
- {"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../src/lib/wallet.ts"],"names":[],"mappings":";;;;AACA,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;YAC5B,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,UAAU,EAAE,CAAC;YAC7C,OAAO,MAAM,IAAA,gCAAiB,EAAC,IAAI,CAAC,CAAC;SACtC;aAAM;YACL,OAAO,MAAM,IAAA,gCAAiB,EAAC,QAAQ,CAAC,CAAC;SAC1C;IACH,CAAC;CAAA;AARD,8CAQC","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"]}
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.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.66.2",
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
- "ts-node": "^10.9.1"
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
  }