@helium/helium-admin-cli 0.7.17 → 0.8.0

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.
@@ -109,9 +109,9 @@ function run(args = process.argv) {
109
109
  // Lazy dist mobile
110
110
  "GZtTp3AUo2AHdQe9BCJ6gXR9KqfruRvHnZ4QiJUALMcz",
111
111
  // Hnt pyth
112
- "7moA1i5vQUpfDwSpK6Pw9s56ahB7WFGidtbL2ujWrVvm",
112
+ "4DdmDswskDxXGpwHrXUfn2CNUm9rt21ac79GHNTN3J33",
113
113
  // Mobile pyth
114
- "JBaTytFv1CmGNkyNiLu16jFMXNZ49BGfy4bYAYZdkxg5",
114
+ "DQ4C1tzvu28cwo1roN1Wm6TW35sfJEjLh517k3ZeWevx",
115
115
  // Usdc pyth
116
116
  "Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD",
117
117
  // Hnt
@@ -317,7 +317,7 @@ function run(args = process.argv) {
317
317
  config: {
318
318
  windowSizeSeconds: new anchor.BN(60 * 60),
319
319
  thresholdType: circuit_breaker_sdk_1.ThresholdType.Absolute,
320
- threshold: new anchor.BN('1000000000000'),
320
+ threshold: new anchor.BN("1000000000000"),
321
321
  },
322
322
  })
323
323
  .accounts({
@@ -0,0 +1,136 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.run = void 0;
39
+ const anchor = __importStar(require("@coral-xyz/anchor"));
40
+ const spl_utils_1 = require("@helium/spl-utils");
41
+ const web3_js_1 = require("@solana/web3.js");
42
+ const sdk_1 = __importDefault(require("@sqds/sdk"));
43
+ const os_1 = __importDefault(require("os"));
44
+ const yargs_1 = __importDefault(require("yargs/yargs"));
45
+ const utils_1 = require("./utils");
46
+ function run(args = process.argv) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const yarg = (0, yargs_1.default)(args).options({
49
+ wallet: {
50
+ alias: "k",
51
+ describe: "Anchor wallet keypair",
52
+ default: `${os_1.default.homedir()}/.config/solana/id.json`,
53
+ },
54
+ url: {
55
+ alias: "u",
56
+ default: "http://127.0.0.1:8899",
57
+ describe: "The solana url",
58
+ },
59
+ multisig: {
60
+ type: "string",
61
+ describe: "Address of the squads multisig to be authority. If not provided, your wallet will be the authority",
62
+ },
63
+ authorityIndex: {
64
+ type: "number",
65
+ describe: "Authority index for squads. Defaults to 1",
66
+ default: 1,
67
+ },
68
+ lookupTable: {
69
+ type: "string",
70
+ describe: "Address of the address lookup table",
71
+ default: spl_utils_1.HELIUM_COMMON_LUT.toBase58(),
72
+ },
73
+ });
74
+ const argv = yield yarg.argv;
75
+ process.env.ANCHOR_WALLET = argv.wallet;
76
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
77
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
78
+ const provider = anchor.getProvider();
79
+ const wallet = new anchor.Wallet((0, utils_1.loadKeypair)(argv.wallet));
80
+ const squads = sdk_1.default.endpoint(process.env.ANCHOR_PROVIDER_URL, wallet, {
81
+ commitmentOrConfig: "finalized",
82
+ });
83
+ let authority = provider.wallet.publicKey;
84
+ let multisig = argv.multisig ? new web3_js_1.PublicKey(argv.multisig) : null;
85
+ if (multisig) {
86
+ authority = squads.getAuthorityPDA(multisig, argv.authorityIndex);
87
+ }
88
+ const accounts = [
89
+ // Mobile sponsored price oracle
90
+ "DQ4C1tzvu28cwo1roN1Wm6TW35sfJEjLh517k3ZeWevx",
91
+ // HNT sponsored price oracle
92
+ "4DdmDswskDxXGpwHrXUfn2CNUm9rt21ac79GHNTN3J33",
93
+ // IOT Registrar
94
+ "7ZZopN1mx6ECcb3YCG8dbxeLpA44xq4gzA1ETEiaLoeL",
95
+ // IOT Proposal Config
96
+ "7cvYwyj6k4NEPNoaCTUufDdGJqqB6ZBRf4t3TrSSUGrc",
97
+ // State controller program
98
+ "stcfiqW3fwD9QCd8Bqr1NBLrs7dftZHBQe7RiMMA4aM",
99
+ // Proposal program
100
+ "propFYxqmVcufMhk5esNMrexq2ogHbbC2kP9PU1qxKs",
101
+ // MOBILE Registrar
102
+ "C4DWaps9bLiqy4e81wJ7VTQ6QR7C4MWvwsei3ZjsaDuW",
103
+ // MOBILE Proposal Config
104
+ "5c9JxRCj4CwhZwaUyjvpb4JJbKW7xpvEFq3Rb2upkytc",
105
+ ].map((a) => {
106
+ return new web3_js_1.PublicKey(a);
107
+ });
108
+ const slot = yield provider.connection.getSlot();
109
+ const lookupTableAddress = new web3_js_1.PublicKey(argv.lookupTable);
110
+ const lookupTableInst = web3_js_1.AddressLookupTableAccount.deserialize((yield provider.connection.getAccountInfo(lookupTableAddress)).data);
111
+ for (const addresses of (0, spl_utils_1.chunks)(accounts, 20)) {
112
+ yield (0, utils_1.sendInstructionsOrSquads)({
113
+ provider,
114
+ signers: [],
115
+ squads,
116
+ multisig: multisig,
117
+ authorityIndex: argv.authorityIndex,
118
+ instructions: yield (0, spl_utils_1.withPriorityFees)({
119
+ connection: provider.connection,
120
+ computeUnits: 200000,
121
+ instructions: [
122
+ web3_js_1.AddressLookupTableProgram.extendLookupTable({
123
+ payer: authority,
124
+ authority,
125
+ lookupTable: lookupTableAddress,
126
+ addresses: addresses,
127
+ }),
128
+ ].filter(spl_utils_1.truthy),
129
+ }),
130
+ });
131
+ }
132
+ console.log("lookup table address:", lookupTableAddress.toBase58());
133
+ });
134
+ }
135
+ exports.run = run;
136
+ //# sourceMappingURL=extend-common-lut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend-common-lut.js","sourceRoot":"","sources":["../../src/extend-common-lut.ts"],"names":[],"mappings":"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"}
@@ -70,9 +70,9 @@ export async function run(args = process.argv) {
70
70
  // Lazy dist mobile
71
71
  "GZtTp3AUo2AHdQe9BCJ6gXR9KqfruRvHnZ4QiJUALMcz",
72
72
  // Hnt pyth
73
- "7moA1i5vQUpfDwSpK6Pw9s56ahB7WFGidtbL2ujWrVvm",
73
+ "4DdmDswskDxXGpwHrXUfn2CNUm9rt21ac79GHNTN3J33",
74
74
  // Mobile pyth
75
- "JBaTytFv1CmGNkyNiLu16jFMXNZ49BGfy4bYAYZdkxg5",
75
+ "DQ4C1tzvu28cwo1roN1Wm6TW35sfJEjLh517k3ZeWevx",
76
76
  // Usdc pyth
77
77
  "Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD",
78
78
  // Hnt
@@ -276,7 +276,7 @@ export async function run(args = process.argv) {
276
276
  config: {
277
277
  windowSizeSeconds: new anchor.BN(60 * 60),
278
278
  thresholdType: ThresholdType.Absolute,
279
- threshold: new anchor.BN('1000000000000'),
279
+ threshold: new anchor.BN("1000000000000"),
280
280
  },
281
281
  })
282
282
  .accounts({
@@ -0,0 +1,95 @@
1
+ import * as anchor from "@coral-xyz/anchor";
2
+ import { HELIUM_COMMON_LUT, chunks, truthy, withPriorityFees, } from "@helium/spl-utils";
3
+ import { AddressLookupTableAccount, AddressLookupTableProgram, PublicKey, } from "@solana/web3.js";
4
+ import Squads from "@sqds/sdk";
5
+ import os from "os";
6
+ import yargs from "yargs/yargs";
7
+ import { loadKeypair, sendInstructionsOrSquads } from "./utils";
8
+ export async function run(args = process.argv) {
9
+ const yarg = yargs(args).options({
10
+ wallet: {
11
+ alias: "k",
12
+ describe: "Anchor wallet keypair",
13
+ default: `${os.homedir()}/.config/solana/id.json`,
14
+ },
15
+ url: {
16
+ alias: "u",
17
+ default: "http://127.0.0.1:8899",
18
+ describe: "The solana url",
19
+ },
20
+ multisig: {
21
+ type: "string",
22
+ describe: "Address of the squads multisig to be authority. If not provided, your wallet will be the authority",
23
+ },
24
+ authorityIndex: {
25
+ type: "number",
26
+ describe: "Authority index for squads. Defaults to 1",
27
+ default: 1,
28
+ },
29
+ lookupTable: {
30
+ type: "string",
31
+ describe: "Address of the address lookup table",
32
+ default: HELIUM_COMMON_LUT.toBase58(),
33
+ },
34
+ });
35
+ const argv = await yarg.argv;
36
+ process.env.ANCHOR_WALLET = argv.wallet;
37
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
38
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
39
+ const provider = anchor.getProvider();
40
+ const wallet = new anchor.Wallet(loadKeypair(argv.wallet));
41
+ const squads = Squads.endpoint(process.env.ANCHOR_PROVIDER_URL, wallet, {
42
+ commitmentOrConfig: "finalized",
43
+ });
44
+ let authority = provider.wallet.publicKey;
45
+ let multisig = argv.multisig ? new PublicKey(argv.multisig) : null;
46
+ if (multisig) {
47
+ authority = squads.getAuthorityPDA(multisig, argv.authorityIndex);
48
+ }
49
+ const accounts = [
50
+ // Mobile sponsored price oracle
51
+ "DQ4C1tzvu28cwo1roN1Wm6TW35sfJEjLh517k3ZeWevx",
52
+ // HNT sponsored price oracle
53
+ "4DdmDswskDxXGpwHrXUfn2CNUm9rt21ac79GHNTN3J33",
54
+ // IOT Registrar
55
+ "7ZZopN1mx6ECcb3YCG8dbxeLpA44xq4gzA1ETEiaLoeL",
56
+ // IOT Proposal Config
57
+ "7cvYwyj6k4NEPNoaCTUufDdGJqqB6ZBRf4t3TrSSUGrc",
58
+ // State controller program
59
+ "stcfiqW3fwD9QCd8Bqr1NBLrs7dftZHBQe7RiMMA4aM",
60
+ // Proposal program
61
+ "propFYxqmVcufMhk5esNMrexq2ogHbbC2kP9PU1qxKs",
62
+ // MOBILE Registrar
63
+ "C4DWaps9bLiqy4e81wJ7VTQ6QR7C4MWvwsei3ZjsaDuW",
64
+ // MOBILE Proposal Config
65
+ "5c9JxRCj4CwhZwaUyjvpb4JJbKW7xpvEFq3Rb2upkytc",
66
+ ].map((a) => {
67
+ return new PublicKey(a);
68
+ });
69
+ const slot = await provider.connection.getSlot();
70
+ const lookupTableAddress = new PublicKey(argv.lookupTable);
71
+ const lookupTableInst = AddressLookupTableAccount.deserialize((await provider.connection.getAccountInfo(lookupTableAddress)).data);
72
+ for (const addresses of chunks(accounts, 20)) {
73
+ await sendInstructionsOrSquads({
74
+ provider,
75
+ signers: [],
76
+ squads,
77
+ multisig: multisig,
78
+ authorityIndex: argv.authorityIndex,
79
+ instructions: await withPriorityFees({
80
+ connection: provider.connection,
81
+ computeUnits: 200000,
82
+ instructions: [
83
+ AddressLookupTableProgram.extendLookupTable({
84
+ payer: authority,
85
+ authority,
86
+ lookupTable: lookupTableAddress,
87
+ addresses: addresses,
88
+ }),
89
+ ].filter(truthy),
90
+ }),
91
+ });
92
+ }
93
+ console.log("lookup table address:", lookupTableAddress.toBase58());
94
+ }
95
+ //# sourceMappingURL=extend-common-lut.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend-common-lut.js","sourceRoot":"","sources":["../../../src/extend-common-lut.ts"],"names":[],"mappings":"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"}