@helium/helium-admin-cli 0.11.17 → 0.11.19

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/lib/cjs/close-council-fanout.js +142 -0
  2. package/lib/cjs/close-council-fanout.js.map +1 -0
  3. package/lib/cjs/create-council-fanout.js +69 -14
  4. package/lib/cjs/create-council-fanout.js.map +1 -1
  5. package/lib/cjs/end-epoch.js +34 -2
  6. package/lib/cjs/end-epoch.js.map +1 -1
  7. package/lib/cjs/hip149.js +13 -0
  8. package/lib/cjs/hip149.js.map +1 -0
  9. package/lib/cjs/mini-fanout-utils.js +57 -0
  10. package/lib/cjs/mini-fanout-utils.js.map +1 -0
  11. package/lib/cjs/queue-hotspot-claims.js +2 -6
  12. package/lib/cjs/queue-hotspot-claims.js.map +1 -1
  13. package/lib/cjs/queue-position-claims.js +1 -3
  14. package/lib/cjs/queue-position-claims.js.map +1 -1
  15. package/lib/cjs/requeue-hotspot-claims.js +1 -3
  16. package/lib/cjs/requeue-hotspot-claims.js.map +1 -1
  17. package/lib/cjs/reschedule-all-mini-fanouts.js +38 -14
  18. package/lib/cjs/reschedule-all-mini-fanouts.js.map +1 -1
  19. package/lib/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  20. package/lib/cjs/update-council-fanout.js +177 -0
  21. package/lib/cjs/update-council-fanout.js.map +1 -0
  22. package/lib/cjs/update-data-credits.js +12 -12
  23. package/lib/esm/src/close-council-fanout.js +92 -0
  24. package/lib/esm/src/close-council-fanout.js.map +1 -0
  25. package/lib/esm/src/create-council-fanout.js +69 -14
  26. package/lib/esm/src/create-council-fanout.js.map +1 -1
  27. package/lib/esm/src/end-epoch.js +35 -3
  28. package/lib/esm/src/end-epoch.js.map +1 -1
  29. package/lib/esm/src/hip149.js +10 -0
  30. package/lib/esm/src/hip149.js.map +1 -0
  31. package/lib/esm/src/mini-fanout-utils.js +40 -0
  32. package/lib/esm/src/mini-fanout-utils.js.map +1 -0
  33. package/lib/esm/src/queue-hotspot-claims.js +2 -6
  34. package/lib/esm/src/queue-hotspot-claims.js.map +1 -1
  35. package/lib/esm/src/queue-position-claims.js +1 -3
  36. package/lib/esm/src/queue-position-claims.js.map +1 -1
  37. package/lib/esm/src/requeue-hotspot-claims.js +1 -3
  38. package/lib/esm/src/requeue-hotspot-claims.js.map +1 -1
  39. package/lib/esm/src/reschedule-all-mini-fanouts.js +39 -15
  40. package/lib/esm/src/reschedule-all-mini-fanouts.js.map +1 -1
  41. package/lib/esm/src/update-council-fanout.js +126 -0
  42. package/lib/esm/src/update-council-fanout.js.map +1 -0
  43. package/lib/esm/src/update-data-credits.js +18 -18
  44. package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
  45. package/lib/types/src/close-council-fanout.d.ts +2 -0
  46. package/lib/types/src/close-council-fanout.d.ts.map +1 -0
  47. package/lib/types/src/create-council-fanout.d.ts.map +1 -1
  48. package/lib/types/src/end-epoch.d.ts.map +1 -1
  49. package/lib/types/src/hip149.d.ts +4 -0
  50. package/lib/types/src/hip149.d.ts.map +1 -0
  51. package/lib/types/src/mini-fanout-utils.d.ts +25 -0
  52. package/lib/types/src/mini-fanout-utils.d.ts.map +1 -0
  53. package/lib/types/src/queue-hotspot-claims.d.ts.map +1 -1
  54. package/lib/types/src/queue-position-claims.d.ts.map +1 -1
  55. package/lib/types/src/requeue-hotspot-claims.d.ts.map +1 -1
  56. package/lib/types/src/reschedule-all-mini-fanouts.d.ts.map +1 -1
  57. package/lib/types/src/update-council-fanout.d.ts +2 -0
  58. package/lib/types/src/update-council-fanout.d.ts.map +1 -0
  59. package/package.json +22 -22
@@ -1 +1 @@
1
- {"version":3,"file":"requeue-hotspot-claims.js","sourceRoot":"","sources":["../../src/requeue-hotspot-claims.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"requeue-hotspot-claims.js","sourceRoot":"","sources":["../../src/requeue-hotspot-claims.ts"],"names":[],"mappings":"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"}
@@ -51,6 +51,7 @@ const hpl_crons_sdk_1 = require("@helium/hpl-crons-sdk");
51
51
  const mini_fanout_sdk_1 = require("@helium/mini-fanout-sdk");
52
52
  const spl_utils_1 = require("@helium/spl-utils");
53
53
  const tuktuk_sdk_1 = require("@helium/tuktuk-sdk");
54
+ const web3_js_1 = require("@solana/web3.js");
54
55
  const os_1 = __importDefault(require("os"));
55
56
  const yargs_1 = __importDefault(require("yargs/yargs"));
56
57
  const utils_1 = require("./utils");
@@ -67,6 +68,10 @@ function run() {
67
68
  default: "http://127.0.0.1:8899",
68
69
  describe: "The solana url",
69
70
  },
71
+ miniFanout: {
72
+ type: "string",
73
+ describe: "Reschedule only this mini fanout instead of every mini fanout on the network. Use this to recover a single fanout (e.g. the council fanout) that went idle after running out of lamports, without touching anyone else's.",
74
+ },
70
75
  });
71
76
  const argv = yield yarg.argv;
72
77
  process.env.ANCHOR_WALLET = argv.wallet;
@@ -77,28 +82,47 @@ function run() {
77
82
  const program = yield (0, mini_fanout_sdk_1.init)(provider);
78
83
  const tuktukProgram = yield (0, tuktuk_sdk_1.init)(provider);
79
84
  const instructions = [];
80
- const miniFanouts = yield program.account.miniFanoutV0.all();
85
+ const allMiniFanouts = yield program.account.miniFanoutV0.all();
86
+ const miniFanouts = argv.miniFanout
87
+ ? allMiniFanouts.filter((mf) => mf.publicKey.equals(new web3_js_1.PublicKey(argv.miniFanout)))
88
+ : allMiniFanouts;
89
+ if (argv.miniFanout && miniFanouts.length === 0) {
90
+ throw new Error(`No mini fanout found at ${argv.miniFanout}`);
91
+ }
92
+ // scheduleTaskV0 only accepts a fanout whose next_task/next_pre_task are
93
+ // already the "nothing scheduled" sentinel (pointing at the fanout itself,
94
+ // or legacy: at the program id) -- see its on-chain constraint. Anything
95
+ // else means a task is genuinely still live, and dequeuing a live task
96
+ // requires a CPI signature from the mini-fanout program's own
97
+ // queue_authority PDA (see queue_authority_seeds! in state.rs), which only
98
+ // update_mini_fanout_v0 / close_mini_fanout_v0 can produce -- both of which
99
+ // require the owner (governance multisig) to sign. There is no way to
100
+ // dequeue a live task from a bare client instruction, so don't try; skip
101
+ // and say so instead of submitting a transaction guaranteed to fail on a
102
+ // missing signature.
103
+ const isIdleSentinel = (miniFanout, task) => task.equals(program.programId) || task.equals(miniFanout.publicKey);
104
+ const idle = miniFanouts.filter((mf) => {
105
+ const ok = isIdleSentinel(mf, mf.account.nextTask) &&
106
+ isIdleSentinel(mf, mf.account.nextPreTask);
107
+ if (!ok) {
108
+ console.log(`Skipping ${mf.publicKey.toBase58()}: still has a live scheduled task; ` +
109
+ `use update-council-fanout.ts (owner-signed) to reschedule it instead.`);
110
+ }
111
+ return ok;
112
+ });
81
113
  const batchSize = 10;
82
114
  const taskQueue = yield tuktukProgram.account.taskQueueV0.fetch(hpl_crons_sdk_1.TASK_QUEUE_ID);
83
- const freeTasks = (0, tuktuk_sdk_1.nextAvailableTaskIds)(taskQueue.taskBitmap, miniFanouts.length * 2);
84
- for (let i = 0; i < miniFanouts.length; i += batchSize) {
115
+ const freeTasks = (0, tuktuk_sdk_1.nextAvailableTaskIds)(taskQueue.taskBitmap, idle.length * 2);
116
+ for (let i = 0; i < idle.length; i += batchSize) {
85
117
  // Log progress every 100 positions
86
118
  if (i > 0 && i % 100 === 0) {
87
119
  console.log(`Processed ${i} mini fanouts`);
88
120
  }
89
- const batch = miniFanouts.slice(i, i + batchSize);
121
+ const batch = idle.slice(i, i + batchSize);
90
122
  yield Promise.all(batch.map((miniFanout) => __awaiter(this, void 0, void 0, function* () {
91
123
  const nextTask = freeTasks.pop();
92
124
  const nextPreTask = freeTasks.pop();
93
- const nextTaskAcc = miniFanout.account.nextTask.equals(program.programId) || miniFanout.account.nextTask.equals(miniFanout.publicKey) ? undefined : yield tuktukProgram.account.taskV0.fetchNullable(miniFanout.account.nextTask);
94
- const nextPreTaskAcc = miniFanout.account.nextPreTask.equals(program.programId) || miniFanout.account.nextPreTask.equals(miniFanout.publicKey) ? undefined : yield tuktukProgram.account.taskV0.fetchNullable(miniFanout.account.nextPreTask);
95
125
  instructions.push([
96
- nextTaskAcc ? yield tuktukProgram.methods.dequeueTaskV0().accounts({
97
- task: miniFanout.account.nextTask,
98
- }).instruction() : undefined,
99
- nextPreTaskAcc ? yield tuktukProgram.methods.dequeueTaskV0().accounts({
100
- task: miniFanout.account.nextPreTask,
101
- }).instruction() : undefined,
102
126
  yield program.methods.scheduleTaskV0({
103
127
  taskId: nextTask,
104
128
  preTaskId: nextPreTask,
@@ -110,10 +134,10 @@ function run() {
110
134
  preTask: (0, tuktuk_sdk_1.taskKey)(hpl_crons_sdk_1.TASK_QUEUE_ID, nextPreTask)[0],
111
135
  })
112
136
  .instruction()
113
- ].filter(spl_utils_1.truthy));
137
+ ]);
114
138
  })));
115
139
  }
116
- console.log(`Finished processing ${miniFanouts.length} mini fanouts`);
140
+ console.log(`Finished processing ${idle.length} mini fanouts (${miniFanouts.length - idle.length} skipped as not idle)`);
117
141
  const transactions = yield (0, spl_utils_1.batchInstructionsToTxsWithPriorityFee)(provider, instructions, {
118
142
  useFirstEstimateForAll: true,
119
143
  computeUnitLimit: 1200000,
@@ -1 +1 @@
1
- {"version":3,"file":"reschedule-all-mini-fanouts.js","sourceRoot":"","sources":["../../src/reschedule-all-mini-fanouts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reschedule-all-mini-fanouts.js","sourceRoot":"","sources":["../../src/reschedule-all-mini-fanouts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"root":["../../src/add-expiration-to-delegations.ts","../../src/add-squads-proposer.ts","../../src/approve-carrier.ts","../../src/approve-maker.ts","../../src/approve-program.ts","../../src/backfill-mobile-deployment-infos.ts","../../src/backfill-recent-proposals.ts","../../src/backfill-vote-markers.ts","../../src/claim-rewards.ts","../../src/close-auto-topoff.ts","../../src/close-buffers.ts","../../src/close-canopy.ts","../../src/close-expired-boosts.ts","../../src/close-lazy-transaction-markers.ts","../../src/close-legacy-auto-topoff.ts","../../src/correct-router-dc.ts","../../src/count-active-hotspots.ts","../../src/create-and-approve-makers.ts","../../src/create-boost-config.ts","../../src/create-carrier.ts","../../src/create-common-lut.ts","../../src/create-council-fanout.ts","../../src/create-dao.ts","../../src/create-data-only-config.ts","../../src/create-maker.ts","../../src/create-price-oracle.ts","../../src/create-subdao.ts","../../src/create-tuktuk-dca-lut.ts","../../src/distribute-hst.ts","../../src/distribute-iot-operations-fund.ts","../../src/dump-vote-markers.ts","../../src/ecc-gen.ts","../../src/end-epoch.ts","../../src/execute-vault-transaction.ts","../../src/extend-common-lut.ts","../../src/get-merkle-depths.ts","../../src/get-staked-wallets.ts","../../src/initialize-tuktuk-dca.ts","../../src/is-executed.ts","../../src/issue-carrier-nft.ts","../../src/issue-iot-operations-fund.ts","../../src/issue-mapping-rewards-nft.ts","../../src/issue-service-rewards-nft.ts","../../src/issue-test-hotspot.ts","../../src/log-coingecko-price.ts","../../src/log-hotspot.ts","../../src/log-router-balance.ts","../../src/log-treasury-price.ts","../../src/mint-dc.ts","../../src/queue-hotspot-claims.ts","../../src/queue-position-claims.ts","../../src/queue-proxy-jobs.ts","../../src/queue-wallet-claims.ts","../../src/release-iot-mobile-positions.ts","../../src/repair-all-position-claims.ts","../../src/requeue-hotspot-claims.ts","../../src/reschedule-all-mini-fanouts.ts","../../src/reset-vsr-voting-mint.ts","../../src/revoke-maker.ts","../../src/set-dc-onboarding-fees-paid-epoch-info.ts","../../src/set-dc-onboarding-fees-paid.ts","../../src/set-proxy-config.ts","../../src/setup-dc-auto-topoff.ts","../../src/setup-hst.ts","../../src/squads-batch-optimizer.ts","../../src/start-cron.ts","../../src/submit-price.ts","../../src/sum-tokens.ts","../../src/swap-carrier-stake.ts","../../src/swap-maker-stake.ts","../../src/switch-mobile-ops-fund.ts","../../src/take-snapshot.ts","../../src/transfer-program-authorities.ts","../../src/unrug-hotspots.ts","../../src/update-account-circuit-breaker.ts","../../src/update-boost-config.ts","../../src/update-carrier.ts","../../src/update-dao.ts","../../src/update-data-credits.ts","../../src/update-delegated-dc-subdao.ts","../../src/update-destinations.ts","../../src/update-lazy-distributor.ts","../../src/update-lazy-transactions.ts","../../src/update-maker.ts","../../src/update-matching-destinations.ts","../../src/update-mint-circuit-breaker.ts","../../src/update-organization.ts","../../src/update-price-oracle.ts","../../src/update-proxy-config.ts","../../src/update-registrar-authorities.ts","../../src/update-rewardable-entity-config.ts","../../src/update-subdao-vehnt.ts","../../src/update-subdao.ts","../../src/update-token-metadata.ts","../../src/upgrade-idl.ts","../../src/upsert-incentive-program.ts","../../src/utils.ts","../../src/write-merkle-canopy-depths.ts"],"version":"5.9.3"}
1
+ {"root":["../../src/add-expiration-to-delegations.ts","../../src/add-squads-proposer.ts","../../src/approve-carrier.ts","../../src/approve-maker.ts","../../src/approve-program.ts","../../src/backfill-mobile-deployment-infos.ts","../../src/backfill-recent-proposals.ts","../../src/backfill-vote-markers.ts","../../src/claim-rewards.ts","../../src/close-auto-topoff.ts","../../src/close-buffers.ts","../../src/close-canopy.ts","../../src/close-council-fanout.ts","../../src/close-expired-boosts.ts","../../src/close-lazy-transaction-markers.ts","../../src/close-legacy-auto-topoff.ts","../../src/correct-router-dc.ts","../../src/count-active-hotspots.ts","../../src/create-and-approve-makers.ts","../../src/create-boost-config.ts","../../src/create-carrier.ts","../../src/create-common-lut.ts","../../src/create-council-fanout.ts","../../src/create-dao.ts","../../src/create-data-only-config.ts","../../src/create-maker.ts","../../src/create-price-oracle.ts","../../src/create-subdao.ts","../../src/create-tuktuk-dca-lut.ts","../../src/distribute-hst.ts","../../src/distribute-iot-operations-fund.ts","../../src/dump-vote-markers.ts","../../src/ecc-gen.ts","../../src/end-epoch.ts","../../src/execute-vault-transaction.ts","../../src/extend-common-lut.ts","../../src/get-merkle-depths.ts","../../src/get-staked-wallets.ts","../../src/hip149.ts","../../src/initialize-tuktuk-dca.ts","../../src/is-executed.ts","../../src/issue-carrier-nft.ts","../../src/issue-iot-operations-fund.ts","../../src/issue-mapping-rewards-nft.ts","../../src/issue-service-rewards-nft.ts","../../src/issue-test-hotspot.ts","../../src/log-coingecko-price.ts","../../src/log-hotspot.ts","../../src/log-router-balance.ts","../../src/log-treasury-price.ts","../../src/mini-fanout-utils.ts","../../src/mint-dc.ts","../../src/queue-hotspot-claims.ts","../../src/queue-position-claims.ts","../../src/queue-proxy-jobs.ts","../../src/queue-wallet-claims.ts","../../src/release-iot-mobile-positions.ts","../../src/repair-all-position-claims.ts","../../src/requeue-hotspot-claims.ts","../../src/reschedule-all-mini-fanouts.ts","../../src/reset-vsr-voting-mint.ts","../../src/revoke-maker.ts","../../src/set-dc-onboarding-fees-paid-epoch-info.ts","../../src/set-dc-onboarding-fees-paid.ts","../../src/set-proxy-config.ts","../../src/setup-dc-auto-topoff.ts","../../src/setup-hst.ts","../../src/squads-batch-optimizer.ts","../../src/start-cron.ts","../../src/submit-price.ts","../../src/sum-tokens.ts","../../src/swap-carrier-stake.ts","../../src/swap-maker-stake.ts","../../src/switch-mobile-ops-fund.ts","../../src/take-snapshot.ts","../../src/transfer-program-authorities.ts","../../src/unrug-hotspots.ts","../../src/update-account-circuit-breaker.ts","../../src/update-boost-config.ts","../../src/update-carrier.ts","../../src/update-council-fanout.ts","../../src/update-dao.ts","../../src/update-data-credits.ts","../../src/update-delegated-dc-subdao.ts","../../src/update-destinations.ts","../../src/update-lazy-distributor.ts","../../src/update-lazy-transactions.ts","../../src/update-maker.ts","../../src/update-matching-destinations.ts","../../src/update-mint-circuit-breaker.ts","../../src/update-organization.ts","../../src/update-price-oracle.ts","../../src/update-proxy-config.ts","../../src/update-registrar-authorities.ts","../../src/update-rewardable-entity-config.ts","../../src/update-subdao-vehnt.ts","../../src/update-subdao.ts","../../src/update-token-metadata.ts","../../src/upgrade-idl.ts","../../src/upsert-incentive-program.ts","../../src/utils.ts","../../src/write-merkle-canopy-depths.ts"],"version":"5.9.3"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
36
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
37
+ return new (P || (P = Promise))(function (resolve, reject) {
38
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
39
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
40
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
41
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
42
+ });
43
+ };
44
+ var __importDefault = (this && this.__importDefault) || function (mod) {
45
+ return (mod && mod.__esModule) ? mod : { "default": mod };
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.run = run;
49
+ const anchor = __importStar(require("@coral-xyz/anchor"));
50
+ const mini_fanout_sdk_1 = require("@helium/mini-fanout-sdk");
51
+ const tuktuk_sdk_1 = require("@helium/tuktuk-sdk");
52
+ const web3_js_1 = require("@solana/web3.js");
53
+ const os_1 = __importDefault(require("os"));
54
+ const yargs_1 = __importDefault(require("yargs/yargs"));
55
+ const mini_fanout_utils_1 = require("./mini-fanout-utils");
56
+ const utils_1 = require("./utils");
57
+ // HIP 149 Decision 4: update the Advisory Council compensation fanout created by
58
+ // create-council-fanout.ts. Use this on a seat change (add/remove a member) or to
59
+ // change the distribution schedule.
60
+ //
61
+ // Operational rules (see HIP 149 Decision 4, and the header comment on
62
+ // create-council-fanout.ts):
63
+ // - CRANK before running this on a seat change. `update_mini_fanout_v0` replaces
64
+ // the share vec wholesale, so accrual (total_owed) for members not carried
65
+ // forward is lost. Let the current period's distribution run first so accrual
66
+ // maps to the set that was actually seated when it accrued, then update.
67
+ // - The fanout's `owner` (a governance multisig vault) must sign this. Pass
68
+ // `--multisig <governance multisig address>` to route it through Squads V4
69
+ // as a proposal instead of trying to send it directly.
70
+ // - Omitting --members leaves the current share set untouched (only the
71
+ // schedule changes, if given). Omitting --schedule leaves the cron
72
+ // untouched. Passing neither still re-queues the next distribution task,
73
+ // which is a valid way to force a reschedule on an already-scheduled fanout
74
+ // (an idle/unscheduled one should use reschedule-all-mini-fanouts.ts instead,
75
+ // since that path doesn't need the owner's signature).
76
+ // - This instruction bakes in the fanout's *current* next_task/next_pre_task
77
+ // (has_one-checked on-chain) and a task id claimed from the queue's current
78
+ // bitmap at build time -- both can go stale while a Squads proposal sits
79
+ // waiting for approval (the cron can self-reschedule to a new next_task, or
80
+ // another queue_task_v0 call can claim the same id first). Either makes
81
+ // execution fail on-chain (has_one mismatch or TaskAlreadyExists) rather
82
+ // than corrupt anything, but the proposal is then permanently dead and must
83
+ // be rebuilt from a fresh run of this script. Get proposals approved
84
+ // promptly; if one sits for a while, re-run this script and re-propose
85
+ // rather than trusting a stale one to still execute.
86
+ function run() {
87
+ return __awaiter(this, arguments, void 0, function* (args = process.argv) {
88
+ var _a;
89
+ const yarg = (0, yargs_1.default)(args).options({
90
+ wallet: {
91
+ alias: "k",
92
+ describe: "Anchor wallet keypair (payer; proposer if using --multisig)",
93
+ default: `${os_1.default.homedir()}/.config/solana/id.json`,
94
+ },
95
+ url: {
96
+ alias: "u",
97
+ default: "http://127.0.0.1:8899",
98
+ describe: "The solana url",
99
+ },
100
+ miniFanout: {
101
+ type: "string",
102
+ required: true,
103
+ describe: "Address of the mini fanout to update",
104
+ },
105
+ members: {
106
+ type: "string",
107
+ describe: "Comma-separated seated community-member wallet addresses to replace the current share set with (each gets an equal share). Omit to leave shares unchanged.",
108
+ },
109
+ schedule: {
110
+ type: "string",
111
+ describe: "New cron schedule (sec min hour day month dow) for the distribution crank. Omit to leave the schedule unchanged.",
112
+ },
113
+ multisig: {
114
+ type: "string",
115
+ describe: "Address of the squads multisig to propose through. Required in practice, since the fanout owner is the governance multisig and must sign this update.",
116
+ },
117
+ });
118
+ const argv = yield yarg.argv;
119
+ process.env.ANCHOR_WALLET = argv.wallet;
120
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
121
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
122
+ const provider = anchor.getProvider();
123
+ const wallet = new anchor.Wallet((0, utils_1.loadKeypair)(argv.wallet));
124
+ const program = yield (0, mini_fanout_sdk_1.init)(provider);
125
+ const tuktukProgram = yield (0, tuktuk_sdk_1.init)(provider);
126
+ const miniFanout = new web3_js_1.PublicKey(argv.miniFanout);
127
+ const miniFanoutAcc = yield program.account.miniFanoutV0.fetch(miniFanout);
128
+ const shares = argv.members
129
+ ? argv.members
130
+ .split(",")
131
+ .map((m) => m.trim())
132
+ .filter(Boolean)
133
+ .map((m) => ({
134
+ wallet: new web3_js_1.PublicKey(m),
135
+ share: { share: { amount: 1 } },
136
+ }))
137
+ : null;
138
+ if (argv.members && shares.length === 0) {
139
+ throw new Error("--members was given but resolved to zero wallets");
140
+ }
141
+ const { taskId, preTaskId, task, preTask } = yield (0, mini_fanout_utils_1.allocateNextTasks)(tuktukProgram, miniFanoutAcc.taskQueue);
142
+ const taskRentRefund = yield (0, mini_fanout_utils_1.resolveTaskRentRefund)(tuktukProgram, miniFanoutAcc.nextTask, miniFanout, program.programId, wallet.publicKey);
143
+ const updateIx = yield program.methods
144
+ .updateMiniFanoutV0({
145
+ newTaskId: taskId,
146
+ newPreTaskId: preTaskId,
147
+ shares,
148
+ schedule: (_a = argv.schedule) !== null && _a !== void 0 ? _a : null,
149
+ })
150
+ .accountsPartial({
151
+ owner: miniFanoutAcc.owner,
152
+ payer: wallet.publicKey,
153
+ miniFanout,
154
+ taskQueue: miniFanoutAcc.taskQueue,
155
+ newTask: task,
156
+ newPreTask: preTask,
157
+ taskRentRefund,
158
+ })
159
+ .instruction();
160
+ yield (0, utils_1.sendInstructionsOrSquadsV4)({
161
+ provider,
162
+ instructions: [updateIx],
163
+ multisig: argv.multisig ? new web3_js_1.PublicKey(argv.multisig) : undefined,
164
+ signers: [],
165
+ });
166
+ console.log("Council fanout updated.");
167
+ console.log(` mini fanout: ${miniFanout.toBase58()}`);
168
+ if (shares) {
169
+ console.log(` members (${shares.length}):`);
170
+ shares.forEach((s) => console.log(` - ${s.wallet.toBase58()}`));
171
+ }
172
+ if (argv.schedule) {
173
+ console.log(` schedule: ${argv.schedule}`);
174
+ }
175
+ });
176
+ }
177
+ //# sourceMappingURL=update-council-fanout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-council-fanout.js","sourceRoot":"","sources":["../../src/update-council-fanout.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsCA,kBA0GC;AAhJD,0DAA4C;AAC5C,6DAA2D;AAC3D,mDAAwD;AACxD,6CAA4C;AAC5C,4CAAoB;AACpB,wDAAgC;AAChC,2DAA+E;AAC/E,mCAAkE;AAElE,iFAAiF;AACjF,kFAAkF;AAClF,oCAAoC;AACpC,EAAE;AACF,uEAAuE;AACvE,6BAA6B;AAC7B,mFAAmF;AACnF,+EAA+E;AAC/E,kFAAkF;AAClF,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,2DAA2D;AAC3D,0EAA0E;AAC1E,uEAAuE;AACvE,6EAA6E;AAC7E,gFAAgF;AAChF,kFAAkF;AAClF,2DAA2D;AAC3D,+EAA+E;AAC/E,gFAAgF;AAChF,6EAA6E;AAC7E,gFAAgF;AAChF,4EAA4E;AAC5E,6EAA6E;AAC7E,gFAAgF;AAChF,yEAAyE;AACzE,2EAA2E;AAC3E,yDAAyD;AACzD,SAAsB,GAAG;yDAAC,OAAY,OAAO,CAAC,IAAI;;QAChD,MAAM,IAAI,GAAG,IAAA,eAAK,EAAC,IAAI,CAAC,CAAC,OAAO,CAAC;YAC/B,MAAM,EAAE;gBACN,KAAK,EAAE,GAAG;gBACV,QAAQ,EAAE,6DAA6D;gBACvE,OAAO,EAAE,GAAG,YAAE,CAAC,OAAO,EAAE,yBAAyB;aAClD;YACD,GAAG,EAAE;gBACH,KAAK,EAAE,GAAG;gBACV,OAAO,EAAE,uBAAuB;gBAChC,QAAQ,EAAE,gBAAgB;aAC3B;YACD,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,QAAQ,EAAE,sCAAsC;aACjD;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,QAAQ,EACN,4JAA4J;aAC/J;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,QAAQ,EACN,kHAAkH;aACrH;YACD,QAAQ,EAAE;gBACR,IAAI,EAAE,QAAQ;gBACd,QAAQ,EACN,uJAAuJ;aAC1J;SACF,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;QACxC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC;QAC3C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAA2B,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,IAAA,mBAAW,EAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAE3D,MAAM,OAAO,GAAG,MAAM,IAAA,sBAAQ,EAAC,QAAQ,CAAC,CAAC;QACzC,MAAM,aAAa,GAAG,MAAM,IAAA,iBAAU,EAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,UAAU,GAAG,IAAI,mBAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAE3E,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO;YACzB,CAAC,CAAC,IAAI,CAAC,OAAO;iBACT,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBACpB,MAAM,CAAC,OAAO,CAAC;iBACf,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACX,MAAM,EAAE,IAAI,mBAAS,CAAC,CAAC,CAAC;gBACxB,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;aAChC,CAAC,CAAC;YACP,CAAC,CAAC,IAAI,CAAC;QACT,IAAI,IAAI,CAAC,OAAO,IAAI,MAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,IAAA,qCAAiB,EAClE,aAAa,EACb,aAAa,CAAC,SAAS,CACxB,CAAC;QACF,MAAM,cAAc,GAAG,MAAM,IAAA,yCAAqB,EAChD,aAAa,EACb,aAAa,CAAC,QAAQ,EACtB,UAAU,EACV,OAAO,CAAC,SAAS,EACjB,MAAM,CAAC,SAAS,CACjB,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO;aACnC,kBAAkB,CAAC;YAClB,SAAS,EAAE,MAAM;YACjB,YAAY,EAAE,SAAS;YACvB,MAAM;YACN,QAAQ,EAAE,MAAA,IAAI,CAAC,QAAQ,mCAAI,IAAI;SAChC,CAAC;aACD,eAAe,CAAC;YACf,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,KAAK,EAAE,MAAM,CAAC,SAAS;YACvB,UAAU;YACV,SAAS,EAAE,aAAa,CAAC,SAAS;YAClC,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,OAAO;YACnB,cAAc;SACf,CAAC;aACD,WAAW,EAAE,CAAC;QAEjB,MAAM,IAAA,kCAA0B,EAAC;YAC/B,QAAQ;YACR,YAAY,EAAE,CAAC,QAAQ,CAAC;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,mBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS;YAClE,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,cAAc,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;CAAA"}
@@ -56,26 +56,26 @@ function run() {
56
56
  return __awaiter(this, arguments, void 0, function* (args = process.argv) {
57
57
  const yarg = (0, yargs_1.default)(args).options({
58
58
  wallet: {
59
- alias: 'k',
60
- describe: 'Anchor wallet keypair',
59
+ alias: "k",
60
+ describe: "Anchor wallet keypair",
61
61
  default: `${os_1.default.homedir()}/.config/solana/id.json`,
62
62
  },
63
63
  url: {
64
- alias: 'u',
65
- default: 'http://127.0.0.1:8899',
66
- describe: 'The solana url',
64
+ alias: "u",
65
+ default: "http://127.0.0.1:8899",
66
+ describe: "The solana url",
67
67
  },
68
68
  dcMint: {
69
69
  required: true,
70
- type: 'string',
71
- describe: 'Data credits mint address',
70
+ type: "string",
71
+ describe: "Data credits mint address",
72
72
  },
73
73
  newAuthority: {
74
- type: 'string',
74
+ type: "string",
75
75
  },
76
76
  multisig: {
77
- type: 'string',
78
- describe: 'Address of the squads multisig to be authority. If not provided, your wallet will be the authority',
77
+ type: "string",
78
+ describe: "Address of the squads multisig to be authority. If not provided, your wallet will be the authority",
79
79
  },
80
80
  });
81
81
  const argv = yield yarg.argv;
@@ -88,7 +88,7 @@ function run() {
88
88
  const instructions = [];
89
89
  const dataCredits = (0, data_credits_sdk_1.dataCreditsKey)(new web3_js_1.PublicKey(argv.dcMint))[0];
90
90
  const dataCreditsAcc = yield program.account.dataCreditsV0.fetch(dataCredits);
91
- console.log('Data Credits', dataCredits.toBase58());
91
+ console.log("Data Credits", dataCredits.toBase58());
92
92
  console.log(dataCreditsAcc.authority.toBase58());
93
93
  instructions.push(yield program.methods
94
94
  .updateDataCreditsV0({
@@ -111,6 +111,6 @@ function run() {
111
111
  });
112
112
  }
113
113
  function isNull(vehntDelegated) {
114
- return vehntDelegated === null || typeof vehntDelegated == 'undefined';
114
+ return vehntDelegated === null || typeof vehntDelegated == "undefined";
115
115
  }
116
116
  //# sourceMappingURL=update-data-credits.js.map
@@ -0,0 +1,92 @@
1
+ import * as anchor from "@coral-xyz/anchor";
2
+ import { init as initMfan } from "@helium/mini-fanout-sdk";
3
+ import { init as initTuktuk } from "@helium/tuktuk-sdk";
4
+ import { getAssociatedTokenAddressSync } from "@solana/spl-token";
5
+ import { PublicKey } from "@solana/web3.js";
6
+ import os from "os";
7
+ import yargs from "yargs/yargs";
8
+ import { resolveTaskRentRefund } from "./mini-fanout-utils";
9
+ import { loadKeypair, sendInstructionsOrSquadsV4 } from "./utils";
10
+ // HIP 149 Decision 4: permanently stop and reclaim the Advisory Council
11
+ // compensation fanout created by create-council-fanout.ts. Closing:
12
+ // - sweeps any HNT still sitting in the fanout's own token account to the
13
+ // owner's HNT ATA (creating it if needed);
14
+ // - dequeues whatever distribution task is currently scheduled;
15
+ // - closes the fanout account itself, refunding its rent to `rent_refund`
16
+ // (the address recorded at creation time — see the fanout's own
17
+ // `rentRefund` field, not necessarily the current owner).
18
+ //
19
+ // This is a one-way operation: there is no "un-close". If the intent is only
20
+ // to change members, the schedule, or pause temporarily, use
21
+ // update-council-fanout.ts instead.
22
+ //
23
+ // The fanout's `owner` (the governance multisig vault) must sign this. Pass
24
+ // `--multisig <governance multisig address>` to route it through Squads V4 as
25
+ // a proposal instead of trying to send it directly.
26
+ //
27
+ // This instruction bakes in the fanout's *current* next_task/next_pre_task
28
+ // (has_one-checked on-chain) at build time, which can go stale while a Squads
29
+ // proposal sits waiting for approval -- the cron can self-reschedule to a new
30
+ // next_task in the meantime. That makes execution fail on-chain (has_one
31
+ // mismatch) rather than corrupt anything, but the proposal is then
32
+ // permanently dead and must be rebuilt. Get proposals approved promptly; if
33
+ // one sits for a while, re-run this script and re-propose.
34
+ export async function run(args = process.argv) {
35
+ const yarg = yargs(args).options({
36
+ wallet: {
37
+ alias: "k",
38
+ describe: "Anchor wallet keypair (payer; proposer if using --multisig)",
39
+ default: `${os.homedir()}/.config/solana/id.json`,
40
+ },
41
+ url: {
42
+ alias: "u",
43
+ default: "http://127.0.0.1:8899",
44
+ describe: "The solana url",
45
+ },
46
+ miniFanout: {
47
+ type: "string",
48
+ required: true,
49
+ describe: "Address of the mini fanout to close",
50
+ },
51
+ multisig: {
52
+ type: "string",
53
+ describe: "Address of the squads multisig to propose through. Required in practice, since the fanout owner is the governance multisig and must sign this.",
54
+ },
55
+ });
56
+ const argv = await yarg.argv;
57
+ process.env.ANCHOR_WALLET = argv.wallet;
58
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
59
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
60
+ const provider = anchor.getProvider();
61
+ const wallet = new anchor.Wallet(loadKeypair(argv.wallet));
62
+ const program = await initMfan(provider);
63
+ const tuktukProgram = await initTuktuk(provider);
64
+ const miniFanout = new PublicKey(argv.miniFanout);
65
+ const miniFanoutAcc = await program.account.miniFanoutV0.fetch(miniFanout);
66
+ const taskRentRefund = await resolveTaskRentRefund(tuktukProgram, miniFanoutAcc.nextTask, miniFanout, program.programId, wallet.publicKey);
67
+ const ownerTokenAccount = getAssociatedTokenAddressSync(miniFanoutAcc.mint, miniFanoutAcc.owner, true);
68
+ const closeIx = await program.methods
69
+ .closeMiniFanoutV0()
70
+ .accountsPartial({
71
+ owner: miniFanoutAcc.owner,
72
+ miniFanout,
73
+ mint: miniFanoutAcc.mint,
74
+ rentRefund: miniFanoutAcc.rentRefund,
75
+ taskQueue: miniFanoutAcc.taskQueue,
76
+ tokenAccount: miniFanoutAcc.tokenAccount,
77
+ ownerTokenAccount,
78
+ taskRentRefund,
79
+ })
80
+ .instruction();
81
+ await sendInstructionsOrSquadsV4({
82
+ provider,
83
+ instructions: [closeIx],
84
+ multisig: argv.multisig ? new PublicKey(argv.multisig) : undefined,
85
+ signers: [],
86
+ });
87
+ console.log("Council fanout closed.");
88
+ console.log(` mini fanout: ${miniFanout.toBase58()}`);
89
+ console.log(` HNT swept to: ${ownerTokenAccount.toBase58()}`);
90
+ console.log(` rent refunded: ${miniFanoutAcc.rentRefund.toBase58()}`);
91
+ }
92
+ //# sourceMappingURL=close-council-fanout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"close-council-fanout.js","sourceRoot":"","sources":["../../../src/close-council-fanout.ts"],"names":[],"mappings":"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"}