@helium/helium-admin-cli 0.11.6 → 0.11.7
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/lib/cjs/claim-and-close-subscriber-key-to-assets.js +664 -0
- package/lib/cjs/claim-and-close-subscriber-key-to-assets.js.map +1 -0
- package/lib/cjs/close-all-subscriber-recipients.js +329 -0
- package/lib/cjs/close-all-subscriber-recipients.js.map +1 -0
- package/lib/cjs/close-legacy-auto-topoff.js +16 -11
- package/lib/cjs/close-legacy-auto-topoff.js.map +1 -1
- package/lib/cjs/extend-common-lut.js +20 -17
- package/lib/cjs/extend-common-lut.js.map +1 -1
- package/lib/cjs/issue-service-rewards-nft.js +112 -0
- package/lib/cjs/issue-service-rewards-nft.js.map +1 -0
- package/lib/cjs/reschedule-all-mini-fanouts.js +3 -5
- package/lib/cjs/reschedule-all-mini-fanouts.js.map +1 -1
- package/lib/cjs/setup-dc-auto-topoff.js +112 -49
- package/lib/cjs/setup-dc-auto-topoff.js.map +1 -1
- package/lib/cjs/utils.js +34 -18
- package/lib/cjs/utils.js.map +1 -1
- package/lib/esm/src/claim-and-close-subscriber-key-to-assets.js +616 -0
- package/lib/esm/src/claim-and-close-subscriber-key-to-assets.js.map +1 -0
- package/lib/esm/src/close-all-subscriber-recipients.js +287 -0
- package/lib/esm/src/close-all-subscriber-recipients.js.map +1 -0
- package/lib/esm/src/close-legacy-auto-topoff.js +19 -14
- package/lib/esm/src/close-legacy-auto-topoff.js.map +1 -1
- package/lib/esm/src/extend-common-lut.js +21 -18
- package/lib/esm/src/extend-common-lut.js.map +1 -1
- package/lib/esm/src/issue-service-rewards-nft.js +71 -0
- package/lib/esm/src/issue-service-rewards-nft.js.map +1 -0
- package/lib/esm/src/reschedule-all-mini-fanouts.js +3 -5
- package/lib/esm/src/reschedule-all-mini-fanouts.js.map +1 -1
- package/lib/esm/src/setup-dc-auto-topoff.js +121 -57
- package/lib/esm/src/setup-dc-auto-topoff.js.map +1 -1
- package/lib/esm/src/utils.js +35 -19
- package/lib/esm/src/utils.js.map +1 -1
- package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/src/claim-and-close-subscriber-key-to-assets.d.ts +2 -0
- package/lib/types/src/claim-and-close-subscriber-key-to-assets.d.ts.map +1 -0
- package/lib/types/src/close-all-subscriber-recipients.d.ts +2 -0
- package/lib/types/src/close-all-subscriber-recipients.d.ts.map +1 -0
- package/lib/types/src/close-legacy-auto-topoff.d.ts.map +1 -1
- package/lib/types/src/extend-common-lut.d.ts.map +1 -1
- package/lib/types/src/issue-service-rewards-nft.d.ts +2 -0
- package/lib/types/src/issue-service-rewards-nft.d.ts.map +1 -0
- package/lib/types/src/reschedule-all-mini-fanouts.d.ts.map +1 -1
- package/lib/types/src/setup-dc-auto-topoff.d.ts.map +1 -1
- package/lib/types/src/utils.d.ts +2 -1
- package/lib/types/src/utils.d.ts.map +1 -1
- package/package.json +15 -15
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
import * as anchor from "@coral-xyz/anchor";
|
|
2
|
+
import { keyToAssetForAsset } from "@helium/helium-entity-manager-sdk";
|
|
3
|
+
import { daoKey } from "@helium/helium-sub-daos-sdk";
|
|
4
|
+
import { init as initLazy, lazyDistributorKey, } from "@helium/lazy-distributor-sdk";
|
|
5
|
+
import { init as initRewards } from "@helium/rewards-oracle-sdk";
|
|
6
|
+
import { init as initMem } from "@helium/mobile-entity-manager-sdk";
|
|
7
|
+
import { HNT_MINT, MOBILE_MINT, getAssetBatch, batchInstructionsToTxsWithPriorityFee, bulkSendTransactions, chunks, } from "@helium/spl-utils";
|
|
8
|
+
import { PublicKey } from "@solana/web3.js";
|
|
9
|
+
import bs58 from "bs58";
|
|
10
|
+
import os from "os";
|
|
11
|
+
import pLimit from "p-limit";
|
|
12
|
+
import yargs from "yargs/yargs";
|
|
13
|
+
import { loadKeypair } from "./utils";
|
|
14
|
+
export async function run(args = process.argv) {
|
|
15
|
+
const yarg = yargs(args).options({
|
|
16
|
+
wallet: {
|
|
17
|
+
alias: "k",
|
|
18
|
+
describe: "Anchor wallet keypair",
|
|
19
|
+
default: `${os.homedir()}/.config/solana/id.json`,
|
|
20
|
+
},
|
|
21
|
+
url: {
|
|
22
|
+
alias: "u",
|
|
23
|
+
default: "http://127.0.0.1:8899",
|
|
24
|
+
describe: "The solana url",
|
|
25
|
+
},
|
|
26
|
+
authority: {
|
|
27
|
+
type: "string",
|
|
28
|
+
describe: "Path to the authority keypair. Defaults to wallet.",
|
|
29
|
+
},
|
|
30
|
+
approver: {
|
|
31
|
+
type: "string",
|
|
32
|
+
describe: "Path to the approver keypair (if lazy distributor has approver set)",
|
|
33
|
+
},
|
|
34
|
+
commit: {
|
|
35
|
+
type: "boolean",
|
|
36
|
+
describe: "Actually close accounts. Otherwise dry-run",
|
|
37
|
+
default: false,
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
const argv = await yarg.argv;
|
|
41
|
+
process.env.ANCHOR_WALLET = argv.wallet;
|
|
42
|
+
process.env.ANCHOR_PROVIDER_URL = argv.url;
|
|
43
|
+
anchor.setProvider(anchor.AnchorProvider.local(argv.url));
|
|
44
|
+
const provider = anchor.getProvider();
|
|
45
|
+
const lazyProgram = await initLazy(provider);
|
|
46
|
+
const rewardsOracleProgram = await initRewards(provider);
|
|
47
|
+
const memProgram = await initMem(provider);
|
|
48
|
+
const authority = argv.authority
|
|
49
|
+
? loadKeypair(argv.authority)
|
|
50
|
+
: loadKeypair(argv.wallet);
|
|
51
|
+
const approver = argv.approver ? loadKeypair(argv.approver) : null;
|
|
52
|
+
const dao = daoKey(HNT_MINT)[0];
|
|
53
|
+
const lazyDistributor = lazyDistributorKey(MOBILE_MINT)[0];
|
|
54
|
+
// Fetch all subscriber collections
|
|
55
|
+
console.log("Fetching CarrierV0 accounts to identify subscriber collections...");
|
|
56
|
+
const carriers = await memProgram.account.carrierV0.all();
|
|
57
|
+
const subscriberCollections = new Set();
|
|
58
|
+
for (const carrier of carriers) {
|
|
59
|
+
subscriberCollections.add(carrier.account.collection.toBase58());
|
|
60
|
+
}
|
|
61
|
+
console.log(` Found ${subscriberCollections.size} subscriber collection(s) from ${carriers.length} carriers\n`);
|
|
62
|
+
console.log("Fetching RecipientV0 accounts for MOBILE lazy distributor using pagination...");
|
|
63
|
+
const PAGE_SIZE = 5000; // Helius supports up to 5k per page for getProgramAccountsV2
|
|
64
|
+
const BATCH_SIZE = 50000; // Process in 50k chunks to avoid memory issues
|
|
65
|
+
let paginationKey = null;
|
|
66
|
+
let page = 0;
|
|
67
|
+
let totalRecipientsFetched = 0;
|
|
68
|
+
let totalSkippedNonSubscriber = 0;
|
|
69
|
+
let currentBatch = [];
|
|
70
|
+
const subscriberRecipients = [];
|
|
71
|
+
async function fetchAssetBatchWithRetry(chunk, maxRetries = 5) {
|
|
72
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
73
|
+
try {
|
|
74
|
+
const result = await getAssetBatch(provider.connection.rpcEndpoint, chunk);
|
|
75
|
+
return result || [];
|
|
76
|
+
}
|
|
77
|
+
catch (err) {
|
|
78
|
+
const is429 = err.message?.includes("429") || err.status === 429;
|
|
79
|
+
if (attempt === maxRetries - 1 || !is429) {
|
|
80
|
+
console.error(`Failed to fetch asset batch after ${maxRetries} attempts: ${err.message}`);
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
// Exponential backoff for rate limits
|
|
84
|
+
const delay = Math.min(2000 * Math.pow(2, attempt), 30000);
|
|
85
|
+
console.log(` Rate limited, retrying in ${delay / 1000}s...`);
|
|
86
|
+
await new Promise((resolve) => setTimeout(resolve, delay));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return [];
|
|
90
|
+
}
|
|
91
|
+
async function processBatch(batch, batchLabel) {
|
|
92
|
+
console.log(`\n--- Processing ${batchLabel} ---`);
|
|
93
|
+
const assetIds = batch.map((r) => r.account.asset);
|
|
94
|
+
console.log(`Fetching ${assetIds.length.toLocaleString()} assets...`);
|
|
95
|
+
// Fetch assets with concurrency control
|
|
96
|
+
const assetChunks = chunks(assetIds, 1000);
|
|
97
|
+
const assetLimiter = pLimit(10);
|
|
98
|
+
let fetchedCount = 0;
|
|
99
|
+
let assetBatchIndex = 0;
|
|
100
|
+
const assetResults = await Promise.all(assetChunks.map((chunk) => assetLimiter(async () => {
|
|
101
|
+
const result = await fetchAssetBatchWithRetry(chunk);
|
|
102
|
+
fetchedCount += chunk.length;
|
|
103
|
+
assetBatchIndex++;
|
|
104
|
+
if (assetBatchIndex % 10 === 0 || fetchedCount >= assetIds.length) {
|
|
105
|
+
console.log(` ${assetBatchIndex} batches: ${fetchedCount.toLocaleString()} assets`);
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
108
|
+
})));
|
|
109
|
+
const assets = assetResults.flat();
|
|
110
|
+
// Filter for subscriber assets
|
|
111
|
+
console.log("Filtering for subscriber assets...");
|
|
112
|
+
let batchNonSubscribers = 0;
|
|
113
|
+
let batchSubscribers = 0;
|
|
114
|
+
batch.forEach((recipient, index) => {
|
|
115
|
+
const asset = assets[index];
|
|
116
|
+
if (!asset) {
|
|
117
|
+
batchNonSubscribers++;
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const assetCollection = asset.grouping?.find((g) => g.group_key === "collection")?.group_value;
|
|
121
|
+
if (assetCollection &&
|
|
122
|
+
subscriberCollections.has(assetCollection.toBase58())) {
|
|
123
|
+
subscriberRecipients.push({
|
|
124
|
+
address: recipient.publicKey,
|
|
125
|
+
asset,
|
|
126
|
+
recipientData: recipient.account,
|
|
127
|
+
});
|
|
128
|
+
batchSubscribers++;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
batchNonSubscribers++;
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
return {
|
|
135
|
+
subscribers: batchSubscribers,
|
|
136
|
+
nonSubscribers: batchNonSubscribers,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
// Pagination and batch processing loop
|
|
140
|
+
console.log("Fetching recipients with pagination and processing in batches...\n");
|
|
141
|
+
do {
|
|
142
|
+
page++;
|
|
143
|
+
// Fetch next page
|
|
144
|
+
const response = await fetch(provider.connection.rpcEndpoint, {
|
|
145
|
+
method: "POST",
|
|
146
|
+
headers: { "Content-Type": "application/json" },
|
|
147
|
+
body: JSON.stringify({
|
|
148
|
+
jsonrpc: "2.0",
|
|
149
|
+
id: `page-${page}`,
|
|
150
|
+
method: "getProgramAccountsV2",
|
|
151
|
+
params: [
|
|
152
|
+
lazyProgram.programId.toBase58(),
|
|
153
|
+
{
|
|
154
|
+
encoding: "base64",
|
|
155
|
+
filters: [
|
|
156
|
+
{
|
|
157
|
+
memcmp: {
|
|
158
|
+
offset: 8,
|
|
159
|
+
bytes: lazyDistributor.toBase58(),
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
],
|
|
163
|
+
limit: PAGE_SIZE,
|
|
164
|
+
...(paginationKey && { paginationKey }),
|
|
165
|
+
},
|
|
166
|
+
],
|
|
167
|
+
}),
|
|
168
|
+
});
|
|
169
|
+
const data = await response.json();
|
|
170
|
+
if (data.error) {
|
|
171
|
+
throw new Error(`RPC error: ${data.error.message}`);
|
|
172
|
+
}
|
|
173
|
+
const { result } = data;
|
|
174
|
+
// If no more results, set paginationKey to null to end pagination
|
|
175
|
+
if (!result || !result.accounts || result.accounts.length === 0) {
|
|
176
|
+
paginationKey = null;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
// Decode and add to current batch
|
|
180
|
+
const pageRecipients = result.accounts.map((item) => ({
|
|
181
|
+
publicKey: new PublicKey(item.pubkey),
|
|
182
|
+
account: lazyProgram.coder.accounts.decode("recipientV0", Buffer.from(item.account.data[0], "base64")),
|
|
183
|
+
}));
|
|
184
|
+
currentBatch.push(...pageRecipients);
|
|
185
|
+
totalRecipientsFetched += pageRecipients.length;
|
|
186
|
+
if (page % 10 === 0) {
|
|
187
|
+
console.log(` Fetched ${totalRecipientsFetched.toLocaleString()} recipients (batch size: ${currentBatch.length.toLocaleString()})...`);
|
|
188
|
+
}
|
|
189
|
+
paginationKey = result.paginationKey || null;
|
|
190
|
+
}
|
|
191
|
+
// Process batch when we hit BATCH_SIZE or finished pagination
|
|
192
|
+
const shouldProcessBatch = currentBatch.length >= BATCH_SIZE || !paginationKey;
|
|
193
|
+
if (shouldProcessBatch && currentBatch.length > 0) {
|
|
194
|
+
const { subscribers, nonSubscribers } = await processBatch(currentBatch, `batch of ${currentBatch.length.toLocaleString()} recipients`);
|
|
195
|
+
totalSkippedNonSubscriber += nonSubscribers;
|
|
196
|
+
console.log(`Found ${subscriberRecipients.length.toLocaleString()} subscriber recipients so far (${subscribers} subscribers, ${nonSubscribers} non-subscribers in this batch)\n`);
|
|
197
|
+
// Clear current batch to free memory
|
|
198
|
+
currentBatch = [];
|
|
199
|
+
}
|
|
200
|
+
} while (paginationKey);
|
|
201
|
+
console.log(`\n=== Summary ===`);
|
|
202
|
+
console.log(`Processed ${totalRecipientsFetched.toLocaleString()} total RecipientV0 accounts`);
|
|
203
|
+
console.log(`${subscriberRecipients.length.toLocaleString()} are for subscriber assets`);
|
|
204
|
+
console.log(`${totalSkippedNonSubscriber.toLocaleString()} skipped (non-subscriber assets)`);
|
|
205
|
+
if (!argv.commit) {
|
|
206
|
+
console.log(`\nDry run: would close ${subscriberRecipients.length} subscriber recipient accounts. Re-run with --commit to close recipients.`);
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
if (subscriberRecipients.length === 0) {
|
|
210
|
+
console.log("\nNo subscriber recipient accounts to close.");
|
|
211
|
+
return;
|
|
212
|
+
}
|
|
213
|
+
console.log(`\nClosing ${subscriberRecipients.length.toLocaleString()} recipient accounts...`);
|
|
214
|
+
// Build close instructions
|
|
215
|
+
let failedCount = 0;
|
|
216
|
+
let processed = 0;
|
|
217
|
+
const recipientChunks = chunks(subscriberRecipients, 100);
|
|
218
|
+
const instructionLimiter = pLimit(50);
|
|
219
|
+
const allBatchResults = await Promise.all(recipientChunks.map((chunk) => instructionLimiter(async () => {
|
|
220
|
+
const batchResults = await Promise.all(chunk.map(async (recipient) => {
|
|
221
|
+
try {
|
|
222
|
+
const { address: recipientAddr, asset } = recipient;
|
|
223
|
+
// Compute the KeyToAssetV0 address
|
|
224
|
+
const keyToAsset = keyToAssetForAsset(asset, dao);
|
|
225
|
+
// Extract entity key from asset URI
|
|
226
|
+
const entityKeyStr = asset.content.json_uri.split("/").pop() || "";
|
|
227
|
+
const cleanEntityKeyStr = entityKeyStr.split(/[.?#]/)[0];
|
|
228
|
+
const entityKeyBytes = Buffer.from(bs58.decode(cleanEntityKeyStr));
|
|
229
|
+
// Get oracle_signer PDA
|
|
230
|
+
const [oracleSigner] = PublicKey.findProgramAddressSync([Buffer.from("oracle_signer", "utf-8")], rewardsOracleProgram.programId);
|
|
231
|
+
return await rewardsOracleProgram.methods
|
|
232
|
+
.tempCloseRecipientWrapperV0({
|
|
233
|
+
entityKey: entityKeyBytes,
|
|
234
|
+
asset: new PublicKey(asset.id),
|
|
235
|
+
})
|
|
236
|
+
.accountsPartial({
|
|
237
|
+
lazyDistributor,
|
|
238
|
+
recipient: recipientAddr,
|
|
239
|
+
keyToAsset,
|
|
240
|
+
dao,
|
|
241
|
+
authority: authority.publicKey,
|
|
242
|
+
approver: approver?.publicKey || null,
|
|
243
|
+
oracleSigner,
|
|
244
|
+
lazyDistributorProgram: lazyProgram.programId,
|
|
245
|
+
})
|
|
246
|
+
.instruction();
|
|
247
|
+
}
|
|
248
|
+
catch (err) {
|
|
249
|
+
console.error(`Error building instruction for recipient ${recipient.address.toBase58()}: ${err.message}`);
|
|
250
|
+
return null;
|
|
251
|
+
}
|
|
252
|
+
}));
|
|
253
|
+
processed += chunk.length;
|
|
254
|
+
const validResults = batchResults.filter((i) => i !== null);
|
|
255
|
+
failedCount += chunk.length - validResults.length;
|
|
256
|
+
// Show progress every 1000 recipients or at end
|
|
257
|
+
if (processed % 1000 === 0 ||
|
|
258
|
+
processed === subscriberRecipients.length) {
|
|
259
|
+
console.log(` Prepared ${processed - failedCount} / ${subscriberRecipients.length.toLocaleString()} instructions (${failedCount} failed)...`);
|
|
260
|
+
}
|
|
261
|
+
return batchResults;
|
|
262
|
+
})));
|
|
263
|
+
const instructions = allBatchResults
|
|
264
|
+
.flat()
|
|
265
|
+
.filter((i) => i !== null);
|
|
266
|
+
const instructionCount = instructions.length;
|
|
267
|
+
// Free memory
|
|
268
|
+
subscriberRecipients.length = 0;
|
|
269
|
+
console.log(`\nBatching ${instructionCount.toLocaleString()} instructions into transactions...`);
|
|
270
|
+
const txns = await batchInstructionsToTxsWithPriorityFee(provider, instructions, {
|
|
271
|
+
useFirstEstimateForAll: true,
|
|
272
|
+
computeUnitLimit: 600000,
|
|
273
|
+
});
|
|
274
|
+
// Free memory - instructions now in transactions
|
|
275
|
+
instructions.length = 0;
|
|
276
|
+
console.log(`\nSending ${txns.length} transactions...`);
|
|
277
|
+
// Sign with authority and approver (if present)
|
|
278
|
+
const extraSigners = [authority];
|
|
279
|
+
if (approver) {
|
|
280
|
+
extraSigners.push(approver);
|
|
281
|
+
}
|
|
282
|
+
await bulkSendTransactions(provider, txns, (status) => {
|
|
283
|
+
console.log(`Sending ${status.currentBatchProgress} / ${status.currentBatchSize} in batch. ${status.totalProgress} / ${txns.length}`);
|
|
284
|
+
}, 10, extraSigners);
|
|
285
|
+
console.log(`\n✓ Complete: Closed ${instructionCount} recipient accounts${failedCount > 0 ? ` (${failedCount} failed to build instructions)` : ""}`);
|
|
286
|
+
}
|
|
287
|
+
//# sourceMappingURL=close-all-subscriber-recipients.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"close-all-subscriber-recipients.js","sourceRoot":"","sources":["../../../src/close-all-subscriber-recipients.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AACrD,OAAO,EACL,IAAI,IAAI,QAAQ,EAChB,kBAAkB,GACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,mCAAmC,CAAC;AACpE,OAAO,EACL,QAAQ,EACR,WAAW,EACX,aAAa,EACb,qCAAqC,EACrC,oBAAoB,EACpB,MAAM,GACP,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,SAAS,EAA0B,MAAM,iBAAiB,CAAC;AACpE,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAY,OAAO,CAAC,IAAI;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QAC/B,MAAM,EAAE;YACN,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,uBAAuB;YACjC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,yBAAyB;SAClD;QACD,GAAG,EAAE;YACH,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,uBAAuB;YAChC,QAAQ,EAAE,gBAAgB;SAC3B;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,oDAAoD;SAC/D;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,QAAQ;YACd,QAAQ,EACN,qEAAqE;SACxE;QACD,MAAM,EAAE;YACN,IAAI,EAAE,SAAS;YACf,QAAQ,EAAE,4CAA4C;YACtD,OAAO,EAAE,KAAK;SACf;KACF,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;IAE7B,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,MAAgB,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAa,CAAC;IACrD,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC,CAAC;IACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAA2B,CAAC;IAE/D,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,oBAAoB,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;QAC9B,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,SAAmB,CAAC;QACvC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAgB,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,QAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE7E,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IAE3D,mCAAmC;IACnC,OAAO,CAAC,GAAG,CACT,mEAAmE,CACpE,CAAC;IACF,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;IAC1D,MAAM,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;IAChD,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE;QAC9B,qBAAqB,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;KAClE;IACD,OAAO,CAAC,GAAG,CACT,WAAW,qBAAqB,CAAC,IAAI,kCAAkC,QAAQ,CAAC,MAAM,aAAa,CACpG,CAAC;IAEF,OAAO,CAAC,GAAG,CACT,+EAA+E,CAChF,CAAC;IAEF,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,6DAA6D;IACrF,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,+CAA+C;IAEzE,IAAI,aAAa,GAAkB,IAAI,CAAC;IACxC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,IAAI,sBAAsB,GAAG,CAAC,CAAC;IAC/B,IAAI,yBAAyB,GAAG,CAAC,CAAC;IAClC,IAAI,YAAY,GAAU,EAAE,CAAC;IAC7B,MAAM,oBAAoB,GAIpB,EAAE,CAAC;IAET,KAAK,UAAU,wBAAwB,CAAC,KAAkB,EAAE,UAAU,GAAG,CAAC;QACxE,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,UAAU,EAAE,OAAO,EAAE,EAAE;YACrD,IAAI;gBACF,MAAM,MAAM,GAAG,MAAM,aAAa,CAChC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAC/B,KAAK,CACN,CAAC;gBACF,OAAO,MAAM,IAAI,EAAE,CAAC;aACrB;YAAC,OAAO,GAAQ,EAAE;gBACjB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC;gBACjE,IAAI,OAAO,KAAK,UAAU,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;oBACxC,OAAO,CAAC,KAAK,CACX,qCAAqC,UAAU,cAAc,GAAG,CAAC,OAAO,EAAE,CAC3E,CAAC;oBACF,OAAO,EAAE,CAAC;iBACX;gBACD,sCAAsC;gBACtC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;gBAC3D,OAAO,CAAC,GAAG,CAAC,+BAA+B,KAAK,GAAG,IAAI,MAAM,CAAC,CAAC;gBAC/D,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;aAC5D;SACF;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,UAAU,YAAY,CACzB,KAAY,EACZ,UAAkB;QAElB,OAAO,CAAC,GAAG,CAAC,oBAAoB,UAAU,MAAM,CAAC,CAAC;QAElD,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;QAEtE,wCAAwC;QACxC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,eAAe,GAAG,CAAC,CAAC;QAExB,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,YAAY,CAAC,KAAK,IAAI,EAAE;YACtB,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,KAAK,CAAC,CAAC;YACrD,YAAY,IAAI,KAAK,CAAC,MAAM,CAAC;YAC7B,eAAe,EAAE,CAAC;YAElB,IAAI,eAAe,GAAG,EAAE,KAAK,CAAC,IAAI,YAAY,IAAI,QAAQ,CAAC,MAAM,EAAE;gBACjE,OAAO,CAAC,GAAG,CACT,KAAK,eAAe,aAAa,YAAY,CAAC,cAAc,EAAE,SAAS,CACxE,CAAC;aACH;YAED,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CACH,CACF,CAAC;QAEF,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QAEnC,+BAA+B;QAC/B,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAClD,IAAI,mBAAmB,GAAG,CAAC,CAAC;QAC5B,IAAI,gBAAgB,GAAG,CAAC,CAAC;QAEzB,KAAK,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,EAAE;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5B,IAAI,CAAC,KAAK,EAAE;gBACV,mBAAmB,EAAE,CAAC;gBACtB,OAAO;aACR;YAED,MAAM,eAAe,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAC1C,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,YAAY,CACzC,EAAE,WAAW,CAAC;YAEf,IACE,eAAe;gBACf,qBAAqB,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,EACrD;gBACA,oBAAoB,CAAC,IAAI,CAAC;oBACxB,OAAO,EAAE,SAAS,CAAC,SAAS;oBAC5B,KAAK;oBACL,aAAa,EAAE,SAAS,CAAC,OAAO;iBACjC,CAAC,CAAC;gBACH,gBAAgB,EAAE,CAAC;aACpB;iBAAM;gBACL,mBAAmB,EAAE,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;QAEH,OAAO;YACL,WAAW,EAAE,gBAAgB;YAC7B,cAAc,EAAE,mBAAmB;SACpC,CAAC;IACJ,CAAC;IAED,uCAAuC;IACvC,OAAO,CAAC,GAAG,CACT,oEAAoE,CACrE,CAAC;IAEF,GAAG;QACD,IAAI,EAAE,CAAC;QAEP,kBAAkB;QAClB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAW,EAAE;YAC5D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,OAAO,EAAE,KAAK;gBACd,EAAE,EAAE,QAAQ,IAAI,EAAE;gBAClB,MAAM,EAAE,sBAAsB;gBAC9B,MAAM,EAAE;oBACN,WAAW,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAChC;wBACE,QAAQ,EAAE,QAAQ;wBAClB,OAAO,EAAE;4BACP;gCACE,MAAM,EAAE;oCACN,MAAM,EAAE,CAAC;oCACT,KAAK,EAAE,eAAe,CAAC,QAAQ,EAAE;iCAClC;6BACF;yBACF;wBACD,KAAK,EAAE,SAAS;wBAChB,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;qBACxC;iBACF;aACF,CAAC;SACH,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;SACrD;QAED,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAExB,kEAAkE;QAClE,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/D,aAAa,GAAG,IAAI,CAAC;SACtB;aAAM;YACL,kCAAkC;YAClC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,CAAC;gBACzD,SAAS,EAAE,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;gBACrC,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CACxC,aAAa,EACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAC5C;aACF,CAAC,CAAC,CAAC;YAEJ,YAAY,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;YACrC,sBAAsB,IAAI,cAAc,CAAC,MAAM,CAAC;YAEhD,IAAI,IAAI,GAAG,EAAE,KAAK,CAAC,EAAE;gBACnB,OAAO,CAAC,GAAG,CACT,aAAa,sBAAsB,CAAC,cAAc,EAAE,4BAA4B,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAC3H,CAAC;aACH;YAED,aAAa,GAAG,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC;SAC9C;QAED,8DAA8D;QAC9D,MAAM,kBAAkB,GACtB,YAAY,CAAC,MAAM,IAAI,UAAU,IAAI,CAAC,aAAa,CAAC;QAEtD,IAAI,kBAAkB,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YACjD,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,MAAM,YAAY,CACxD,YAAY,EACZ,YAAY,YAAY,CAAC,MAAM,CAAC,cAAc,EAAE,aAAa,CAC9D,CAAC;YAEF,yBAAyB,IAAI,cAAc,CAAC;YAE5C,OAAO,CAAC,GAAG,CACT,SAAS,oBAAoB,CAAC,MAAM,CAAC,cAAc,EAAE,kCAAkC,WAAW,iBAAiB,cAAc,mCAAmC,CACrK,CAAC;YAEF,qCAAqC;YACrC,YAAY,GAAG,EAAE,CAAC;SACnB;KACF,QAAQ,aAAa,EAAE;IAExB,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACjC,OAAO,CAAC,GAAG,CACT,aAAa,sBAAsB,CAAC,cAAc,EAAE,6BAA6B,CAClF,CAAC;IACF,OAAO,CAAC,GAAG,CACT,GAAG,oBAAoB,CAAC,MAAM,CAAC,cAAc,EAAE,4BAA4B,CAC5E,CAAC;IACF,OAAO,CAAC,GAAG,CACT,GAAG,yBAAyB,CAAC,cAAc,EAAE,kCAAkC,CAChF,CAAC;IAEF,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;QAChB,OAAO,CAAC,GAAG,CACT,0BAA0B,oBAAoB,CAAC,MAAM,2EAA2E,CACjI,CAAC;QACF,OAAO;KACR;IAED,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC,EAAE;QACrC,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;QAC5D,OAAO;KACR;IAED,OAAO,CAAC,GAAG,CACT,aAAa,oBAAoB,CAAC,MAAM,CAAC,cAAc,EAAE,wBAAwB,CAClF,CAAC;IAEF,2BAA2B;IAC3B,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,IAAI,SAAS,GAAG,CAAC,CAAC;IAElB,MAAM,eAAe,GAAG,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IAC1D,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;IAEtC,MAAM,eAAe,GAAG,MAAM,OAAO,CAAC,GAAG,CACvC,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC5B,kBAAkB,CAAC,KAAK,IAAI,EAAE;QAC5B,MAAM,YAAY,GAAG,MAAM,OAAO,CAAC,GAAG,CACpC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;YAC5B,IAAI;gBACF,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,GAAG,SAAS,CAAC;gBAEpD,mCAAmC;gBACnC,MAAM,UAAU,GAAG,kBAAkB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBAElD,oCAAoC;gBACpC,MAAM,YAAY,GAChB,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBAChD,MAAM,iBAAiB,GAAG,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzD,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAChC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAC/B,CAAC;gBAEF,wBAAwB;gBACxB,MAAM,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,sBAAsB,CACrD,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,EACvC,oBAAoB,CAAC,SAAS,CAC/B,CAAC;gBAEF,OAAO,MAAM,oBAAoB,CAAC,OAAO;qBACtC,2BAA2B,CAAC;oBAC3B,SAAS,EAAE,cAAc;oBACzB,KAAK,EAAE,IAAI,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;iBAC/B,CAAC;qBACD,eAAe,CAAC;oBACf,eAAe;oBACf,SAAS,EAAE,aAAa;oBACxB,UAAU;oBACV,GAAG;oBACH,SAAS,EAAE,SAAS,CAAC,SAAS;oBAC9B,QAAQ,EAAE,QAAQ,EAAE,SAAS,IAAI,IAAI;oBACrC,YAAY;oBACZ,sBAAsB,EAAE,WAAW,CAAC,SAAS;iBAC9C,CAAC;qBACD,WAAW,EAAE,CAAC;aAClB;YAAC,OAAO,GAAQ,EAAE;gBACjB,OAAO,CAAC,KAAK,CACX,4CAA4C,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,KACtE,GAAG,CAAC,OACN,EAAE,CACH,CAAC;gBACF,OAAO,IAAI,CAAC;aACb;QACH,CAAC,CAAC,CACH,CAAC;QAEF,SAAS,IAAI,KAAK,CAAC,MAAM,CAAC;QAC1B,MAAM,YAAY,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;QAC5D,WAAW,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QAElD,gDAAgD;QAChD,IACE,SAAS,GAAG,IAAI,KAAK,CAAC;YACtB,SAAS,KAAK,oBAAoB,CAAC,MAAM,EACzC;YACA,OAAO,CAAC,GAAG,CACT,cACE,SAAS,GAAG,WACd,MAAM,oBAAoB,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,WAAW,aAAa,CAC7F,CAAC;SACH;QAED,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC,CACH,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,eAAe;SACjC,IAAI,EAAE;SACN,MAAM,CAAC,CAAC,CAAC,EAA+B,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IAE1D,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC;IAE7C,cAAc;IACd,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC;IAEhC,OAAO,CAAC,GAAG,CACT,cAAc,gBAAgB,CAAC,cAAc,EAAE,oCAAoC,CACpF,CAAC;IACF,MAAM,IAAI,GAAG,MAAM,qCAAqC,CACtD,QAAQ,EACR,YAAY,EACZ;QACE,sBAAsB,EAAE,IAAI;QAC5B,gBAAgB,EAAE,MAAM;KACzB,CACF,CAAC;IAEF,iDAAiD;IACjD,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC;IAExB,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,MAAM,kBAAkB,CAAC,CAAC;IAExD,gDAAgD;IAChD,MAAM,YAAY,GAAG,CAAC,SAAS,CAAC,CAAC;IACjC,IAAI,QAAQ,EAAE;QACZ,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC7B;IAED,MAAM,oBAAoB,CACxB,QAAQ,EACR,IAAI,EACJ,CAAC,MAAM,EAAE,EAAE;QACT,OAAO,CAAC,GAAG,CACT,WAAW,MAAM,CAAC,oBAAoB,MAAM,MAAM,CAAC,gBAAgB,cAAc,MAAM,CAAC,aAAa,MAAM,IAAI,CAAC,MAAM,EAAE,CACzH,CAAC;IACJ,CAAC,EACD,EAAE,EACF,YAAY,CACb,CAAC;IAEF,OAAO,CAAC,GAAG,CACT,wBAAwB,gBAAgB,sBACtC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,WAAW,gCAAgC,CAAC,CAAC,CAAC,EACvE,EAAE,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import * as anchor from "@coral-xyz/anchor";
|
|
2
2
|
import { delegatedDataCreditsKey } from "@helium/data-credits-sdk";
|
|
3
|
-
import { autoTopOffKey, init as initDcAutoTopoff } from "@helium/dc-auto-top-sdk";
|
|
3
|
+
import { autoTopOffKey, init as initDcAutoTopoff, } from "@helium/dc-auto-top-sdk";
|
|
4
4
|
import { subDaoKey } from "@helium/helium-sub-daos-sdk";
|
|
5
5
|
import { DC_MINT, HNT_MINT, MOBILE_MINT } from "@helium/spl-utils";
|
|
6
|
-
import { getAssociatedTokenAddressSync } from "@solana/spl-token";
|
|
6
|
+
import { createAssociatedTokenAccountIdempotentInstruction, getAssociatedTokenAddressSync, } from "@solana/spl-token";
|
|
7
7
|
import { PublicKey } from "@solana/web3.js";
|
|
8
|
-
import * as multisig from '@sqds/multisig';
|
|
9
8
|
import os from "os";
|
|
10
9
|
import yargs from "yargs/yargs";
|
|
11
|
-
import {
|
|
10
|
+
import { sendInstructionsOrSquads, } from "./utils";
|
|
11
|
+
import Squads from "@sqds/sdk";
|
|
12
12
|
export async function run(args = process.argv) {
|
|
13
13
|
const yarg = yargs(args).options({
|
|
14
14
|
wallet: {
|
|
@@ -42,8 +42,8 @@ export async function run(args = process.argv) {
|
|
|
42
42
|
default: MOBILE_MINT.toBase58(),
|
|
43
43
|
},
|
|
44
44
|
multisig: {
|
|
45
|
-
type:
|
|
46
|
-
describe:
|
|
45
|
+
type: "string",
|
|
46
|
+
describe: "Address of the squads multisig to be authority. If not provided, your wallet will be the authority",
|
|
47
47
|
},
|
|
48
48
|
});
|
|
49
49
|
const argv = await yarg.argv;
|
|
@@ -56,28 +56,33 @@ export async function run(args = process.argv) {
|
|
|
56
56
|
const provider = anchor.getProvider();
|
|
57
57
|
const dcAutoTopoffProgram = await initDcAutoTopoff(provider);
|
|
58
58
|
let authority = provider.wallet.publicKey;
|
|
59
|
+
const squads = new Squads({
|
|
60
|
+
connection: provider.connection,
|
|
61
|
+
wallet: provider.wallet,
|
|
62
|
+
});
|
|
59
63
|
let multisigPda = argv.multisig ? new PublicKey(argv.multisig) : null;
|
|
60
64
|
if (multisigPda) {
|
|
61
|
-
|
|
62
|
-
multisigPda,
|
|
63
|
-
index: 0,
|
|
64
|
-
});
|
|
65
|
-
authority = vaultPda;
|
|
65
|
+
authority = squads.getAuthorityPDA(multisigPda, 1);
|
|
66
66
|
}
|
|
67
67
|
const routerKey = argv.routerKey;
|
|
68
68
|
const delegatedDc = delegatedDataCreditsKey(subDao, routerKey)[0];
|
|
69
69
|
const autoTopOff = autoTopOffKey(delegatedDc, authority)[0];
|
|
70
|
-
const
|
|
70
|
+
const createDcAtaIx = createAssociatedTokenAccountIdempotentInstruction(authority, getAssociatedTokenAddressSync(dcMint, authority, true), authority, dcMint);
|
|
71
|
+
const closeLegacyIx = await dcAutoTopoffProgram.methods
|
|
72
|
+
.closeLegacyAutoTopOff()
|
|
71
73
|
.accounts({
|
|
72
74
|
delegatedDataCredits: delegatedDc,
|
|
73
75
|
dcAccount: getAssociatedTokenAddressSync(dcMint, autoTopOff, true),
|
|
74
76
|
})
|
|
75
77
|
.instruction();
|
|
76
|
-
await
|
|
78
|
+
await sendInstructionsOrSquads({
|
|
77
79
|
provider,
|
|
78
|
-
instructions: [closeLegacyIx],
|
|
80
|
+
instructions: [createDcAtaIx, closeLegacyIx],
|
|
79
81
|
multisig: multisigPda,
|
|
80
82
|
signers: [],
|
|
83
|
+
authorityIndex: 1,
|
|
84
|
+
executeTransaction: false,
|
|
85
|
+
squads,
|
|
81
86
|
});
|
|
82
87
|
}
|
|
83
88
|
//# sourceMappingURL=close-legacy-auto-topoff.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"close-legacy-auto-topoff.js","sourceRoot":"","sources":["../../../src/close-legacy-auto-topoff.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,OAAO,
|
|
1
|
+
{"version":3,"file":"close-legacy-auto-topoff.js","sourceRoot":"","sources":["../../../src/close-legacy-auto-topoff.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import * as anchor from "@coral-xyz/anchor";
|
|
2
2
|
import { HELIUM_COMMON_LUT, chunks, truthy, withPriorityFees, } from "@helium/spl-utils";
|
|
3
3
|
import { AddressLookupTableProgram, PublicKey, } from "@solana/web3.js";
|
|
4
|
-
import * as multisig from '@sqds/multisig';
|
|
5
4
|
import os from "os";
|
|
6
5
|
import yargs from "yargs/yargs";
|
|
7
|
-
import { loadKeypair,
|
|
6
|
+
import { loadKeypair, sendInstructionsOrSquads, } from "./utils";
|
|
7
|
+
import Squads from "@sqds/sdk";
|
|
8
8
|
export async function run(args = process.argv) {
|
|
9
9
|
const yarg = yargs(args).options({
|
|
10
10
|
wallet: {
|
|
@@ -34,34 +34,37 @@ export async function run(args = process.argv) {
|
|
|
34
34
|
const provider = anchor.getProvider();
|
|
35
35
|
const wallet = new anchor.Wallet(loadKeypair(argv.wallet));
|
|
36
36
|
let authority = provider.wallet.publicKey;
|
|
37
|
+
const squads = new Squads({
|
|
38
|
+
connection: provider.connection,
|
|
39
|
+
wallet: wallet,
|
|
40
|
+
});
|
|
37
41
|
let multisigPda = argv.multisig ? new PublicKey(argv.multisig) : null;
|
|
38
42
|
if (multisigPda) {
|
|
39
|
-
|
|
40
|
-
multisigPda,
|
|
41
|
-
index: 0,
|
|
42
|
-
});
|
|
43
|
-
authority = vaultPda;
|
|
43
|
+
authority = squads.getAuthorityPDA(multisigPda, 1);
|
|
44
44
|
}
|
|
45
45
|
const accounts = [
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
46
|
+
// HNT lazy distributor
|
|
47
|
+
// "6gcZXjHgKUBMedc2V1aZLFPwh8M1rPVRw7kpo2KqNrFq",
|
|
48
|
+
// HNT Circuit Breaker
|
|
49
|
+
// "73zsmmqCXjvHHhNSib26Y8p3jYiH3UUuyKv71RJDnctW",
|
|
50
|
+
// HNT Rewards pool
|
|
51
|
+
// "BDs6RPnpJNzmuMNv1z8cDh9cxKFgCxEVDaCfoHZWyvqJ",
|
|
52
|
+
// TaskQueueAuthorityV0 for welcome-pack
|
|
53
|
+
// "9hLWFGiit1ZpFHmopyacWqiVx8sQX9U86dnKqtDjkjnL",
|
|
54
|
+
// Queue authority for welcome-pack
|
|
55
|
+
// "3HTSCuJGL8e5zPpf7rMhq42YgA7f3WdF5bm78YQ3HEBK"
|
|
56
56
|
].map((a) => {
|
|
57
57
|
return new PublicKey(a);
|
|
58
58
|
});
|
|
59
59
|
const lookupTableAddress = new PublicKey(argv.lookupTable);
|
|
60
60
|
for (const addresses of chunks(accounts, 20)) {
|
|
61
|
-
await
|
|
61
|
+
await sendInstructionsOrSquads({
|
|
62
62
|
provider,
|
|
63
63
|
signers: [],
|
|
64
64
|
multisig: multisigPda,
|
|
65
|
+
authorityIndex: 1,
|
|
66
|
+
executeTransaction: false,
|
|
67
|
+
squads,
|
|
65
68
|
instructions: await withPriorityFees({
|
|
66
69
|
connection: provider.connection,
|
|
67
70
|
computeUnits: 200000,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extend-common-lut.js","sourceRoot":"","sources":["../../../src/extend-common-lut.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,iBAAiB,EACjB,MAAM,EACN,MAAM,EACN,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAEL,yBAAyB,EACzB,SAAS,GACV,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"extend-common-lut.js","sourceRoot":"","sources":["../../../src/extend-common-lut.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as anchor from "@coral-xyz/anchor";
|
|
2
|
+
import { init as initHem, keyToAssetKey, } from "@helium/helium-entity-manager-sdk";
|
|
3
|
+
import { daoKey, subDaoKey } from "@helium/helium-sub-daos-sdk";
|
|
4
|
+
import { carrierKey, init as initMem } from "@helium/mobile-entity-manager-sdk";
|
|
5
|
+
import { HNT_MINT, MOBILE_MINT } from "@helium/spl-utils";
|
|
6
|
+
import { ComputeBudgetProgram, PublicKey } from "@solana/web3.js";
|
|
7
|
+
import os from "os";
|
|
8
|
+
import yargs from "yargs/yargs";
|
|
9
|
+
export async function run(args = process.argv) {
|
|
10
|
+
const yarg = yargs(args).options({
|
|
11
|
+
wallet: {
|
|
12
|
+
alias: "k",
|
|
13
|
+
describe: "Anchor wallet keypair",
|
|
14
|
+
default: `${os.homedir()}/.config/solana/id.json`,
|
|
15
|
+
},
|
|
16
|
+
url: {
|
|
17
|
+
alias: "u",
|
|
18
|
+
default: "http://127.0.0.1:8899",
|
|
19
|
+
describe: "The solana url",
|
|
20
|
+
},
|
|
21
|
+
hntMint: {
|
|
22
|
+
default: HNT_MINT.toBase58(),
|
|
23
|
+
},
|
|
24
|
+
dntMint: {
|
|
25
|
+
default: MOBILE_MINT.toBase58(),
|
|
26
|
+
describe: "Public Key of the subdao mint",
|
|
27
|
+
type: "string",
|
|
28
|
+
},
|
|
29
|
+
name: {
|
|
30
|
+
alias: "n",
|
|
31
|
+
type: "string",
|
|
32
|
+
required: true,
|
|
33
|
+
describe: "The name of the carrier",
|
|
34
|
+
},
|
|
35
|
+
recipient: {
|
|
36
|
+
describe: "Recipient of the rewardable mapping rewards nft, default to this wallet",
|
|
37
|
+
type: "string",
|
|
38
|
+
required: false,
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
const argv = await yarg.argv;
|
|
42
|
+
process.env.ANCHOR_WALLET = argv.wallet;
|
|
43
|
+
process.env.ANCHOR_PROVIDER_URL = argv.url;
|
|
44
|
+
anchor.setProvider(anchor.AnchorProvider.local(argv.url));
|
|
45
|
+
const provider = anchor.getProvider();
|
|
46
|
+
const name = "Helium Mobile Service Rewards";
|
|
47
|
+
const hemProgram = await initHem(provider);
|
|
48
|
+
const memProgram = await initMem(provider);
|
|
49
|
+
const dntMint = new PublicKey(argv.dntMint);
|
|
50
|
+
const subDao = (await subDaoKey(dntMint))[0];
|
|
51
|
+
const carrier = await carrierKey(subDao, argv.name)[0];
|
|
52
|
+
const hntMint = new PublicKey(argv.hntMint);
|
|
53
|
+
const recipient = argv.recipient
|
|
54
|
+
? new PublicKey(argv.recipient)
|
|
55
|
+
: provider.wallet.publicKey;
|
|
56
|
+
const [keyToAssetK] = keyToAssetKey(daoKey(hntMint)[0], Buffer.from(name, "utf-8"));
|
|
57
|
+
const keyToAsset = await hemProgram.account.keyToAssetV0.fetchNullable(keyToAssetK);
|
|
58
|
+
if (!keyToAsset) {
|
|
59
|
+
console.log("Minting service rewards NFT");
|
|
60
|
+
console.log(await memProgram.methods
|
|
61
|
+
.issueServiceRewardsNftV0({
|
|
62
|
+
metadataUrl: `https://entities.nft.helium.io/Helium%20Mobile%20Service%20Rewards`,
|
|
63
|
+
})
|
|
64
|
+
.preInstructions([
|
|
65
|
+
ComputeBudgetProgram.setComputeUnitLimit({ units: 500000 }),
|
|
66
|
+
])
|
|
67
|
+
.accountsPartial({ carrier, recipient, keyToAsset: keyToAssetK })
|
|
68
|
+
.rpc({ skipPreflight: true }));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=issue-service-rewards-nft.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-service-rewards-nft.js","sourceRoot":"","sources":["../../../src/issue-service-rewards-nft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,IAAI,IAAI,OAAO,EACf,aAAa,GACd,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAY,OAAO,CAAC,IAAI;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QAC/B,MAAM,EAAE;YACN,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,uBAAuB;YACjC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,yBAAyB;SAClD;QACD,GAAG,EAAE;YACH,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,uBAAuB;YAChC,QAAQ,EAAE,gBAAgB;SAC3B;QACD,OAAO,EAAE;YACP,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE;SAC7B;QACD,OAAO,EAAE;YACP,OAAO,EAAE,WAAW,CAAC,QAAQ,EAAE;YAC/B,QAAQ,EAAE,+BAA+B;YACzC,IAAI,EAAE,QAAQ;SACf;QACD,IAAI,EAAE;YACJ,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,yBAAyB;SACpC;QACD,SAAS,EAAE;YACT,QAAQ,EACN,yEAAyE;YAC3E,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,KAAK;SAChB;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC;IAC3C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAA2B,CAAC;IAC/D,MAAM,IAAI,GAAG,+BAA+B,CAAC;IAC7C,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,MAAM,GAAG,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7C,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS;QAC9B,CAAC,CAAC,IAAI,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/B,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;IAC9B,MAAM,CAAC,WAAW,CAAC,GAAG,aAAa,CACjC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAClB,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAC3B,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,YAAY,CAAC,aAAa,CACpE,WAAW,CACZ,CAAC;IAEF,IAAI,CAAC,UAAU,EAAE;QACf,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,OAAO,CAAC,GAAG,CACT,MAAM,UAAU,CAAC,OAAO;aACrB,wBAAwB,CAAC;YACxB,WAAW,EAAE,oEAAoE;SAClF,CAAC;aACD,eAAe,CAAC;YACf,oBAAoB,CAAC,mBAAmB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;SAC5D,CAAC;aACD,eAAe,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;aAChE,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAChC,CAAC;KACH;AACH,CAAC"}
|
|
@@ -3,7 +3,6 @@ import { TASK_QUEUE_ID } from "@helium/hpl-crons-sdk";
|
|
|
3
3
|
import { init as initMfan } from "@helium/mini-fanout-sdk";
|
|
4
4
|
import { batchInstructionsToTxsWithPriorityFee, bulkSendTransactions, truthy } from "@helium/spl-utils";
|
|
5
5
|
import { init as initTuktuk, nextAvailableTaskIds, taskKey } from "@helium/tuktuk-sdk";
|
|
6
|
-
import { PublicKey } from "@solana/web3.js";
|
|
7
6
|
import os from "os";
|
|
8
7
|
import yargs from "yargs/yargs";
|
|
9
8
|
import { loadKeypair } from "./utils";
|
|
@@ -39,12 +38,11 @@ export async function run(args = process.argv) {
|
|
|
39
38
|
console.log(`Processed ${i} mini fanouts`);
|
|
40
39
|
}
|
|
41
40
|
const batch = miniFanouts.slice(i, i + batchSize);
|
|
42
|
-
await Promise.all(batch.map(async (
|
|
43
|
-
const miniFanout = batch[j];
|
|
41
|
+
await Promise.all(batch.map(async (miniFanout) => {
|
|
44
42
|
const nextTask = freeTasks.pop();
|
|
45
43
|
const nextPreTask = freeTasks.pop();
|
|
46
|
-
const nextTaskAcc = miniFanout.account.nextTask.equals(
|
|
47
|
-
const nextPreTaskAcc = miniFanout.account.nextPreTask.equals(
|
|
44
|
+
const nextTaskAcc = miniFanout.account.nextTask.equals(program.programId) || miniFanout.account.nextTask.equals(miniFanout.publicKey) ? undefined : await tuktukProgram.account.taskV0.fetchNullable(miniFanout.account.nextTask);
|
|
45
|
+
const nextPreTaskAcc = miniFanout.account.nextPreTask.equals(program.programId) || miniFanout.account.nextPreTask.equals(miniFanout.publicKey) ? undefined : await tuktukProgram.account.taskV0.fetchNullable(miniFanout.account.nextPreTask);
|
|
48
46
|
instructions.push([
|
|
49
47
|
nextTaskAcc ? await tuktukProgram.methods.dequeueTaskV0().accounts({
|
|
50
48
|
task: miniFanout.account.nextTask,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reschedule-all-mini-fanouts.js","sourceRoot":"","sources":["../../../src/reschedule-all-mini-fanouts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,IAAI,IAAI,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,qCAAqC,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AACxG,OAAO,EAAE,IAAI,IAAI,UAAU,EAAE,oBAAoB,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"reschedule-all-mini-fanouts.js","sourceRoot":"","sources":["../../../src/reschedule-all-mini-fanouts.ts"],"names":[],"mappings":"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"}
|