@helium/helium-admin-cli 0.9.24-alpha.0 → 0.9.25

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 (60) hide show
  1. package/lib/cjs/backfill-mobile-deployment-infos.js +223 -0
  2. package/lib/cjs/backfill-mobile-deployment-infos.js.map +1 -0
  3. package/lib/cjs/create-boost-config.js +4 -2
  4. package/lib/cjs/create-boost-config.js.map +1 -1
  5. package/lib/cjs/end-epoch.js +237 -68
  6. package/lib/cjs/end-epoch.js.map +1 -1
  7. package/lib/cjs/log-hotspot.js +17 -3
  8. package/lib/cjs/log-hotspot.js.map +1 -1
  9. package/lib/cjs/remove-authorities.js +134 -0
  10. package/lib/cjs/remove-authorities.js.map +1 -0
  11. package/lib/cjs/swap-carrier-stake.js +143 -0
  12. package/lib/cjs/swap-carrier-stake.js.map +1 -0
  13. package/lib/cjs/{fix-claimed-epochs.js → swap-maker-stake.js} +59 -22
  14. package/lib/cjs/swap-maker-stake.js.map +1 -0
  15. package/lib/cjs/update-boost-config.js +1 -0
  16. package/lib/cjs/update-boost-config.js.map +1 -1
  17. package/lib/cjs/update-matching-destinations.js +116 -0
  18. package/lib/cjs/update-matching-destinations.js.map +1 -0
  19. package/lib/esm/src/backfill-mobile-deployment-infos.js +198 -0
  20. package/lib/esm/src/backfill-mobile-deployment-infos.js.map +1 -0
  21. package/lib/esm/src/create-boost-config.js +4 -2
  22. package/lib/esm/src/create-boost-config.js.map +1 -1
  23. package/lib/esm/src/end-epoch.js +234 -69
  24. package/lib/esm/src/end-epoch.js.map +1 -1
  25. package/lib/esm/src/log-hotspot.js +18 -4
  26. package/lib/esm/src/log-hotspot.js.map +1 -1
  27. package/lib/esm/src/remove-authorities.js +93 -0
  28. package/lib/esm/src/remove-authorities.js.map +1 -0
  29. package/lib/esm/src/swap-carrier-stake.js +102 -0
  30. package/lib/esm/src/swap-carrier-stake.js.map +1 -0
  31. package/lib/esm/src/swap-maker-stake.js +87 -0
  32. package/lib/esm/src/swap-maker-stake.js.map +1 -0
  33. package/lib/esm/src/update-boost-config.js +1 -0
  34. package/lib/esm/src/update-boost-config.js.map +1 -1
  35. package/lib/esm/src/update-matching-destinations.js +75 -0
  36. package/lib/esm/src/update-matching-destinations.js.map +1 -0
  37. package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
  38. package/lib/types/src/backfill-mobile-deployment-infos.d.ts +4 -0
  39. package/lib/types/src/backfill-mobile-deployment-infos.d.ts.map +1 -0
  40. package/lib/types/src/create-boost-config.d.ts.map +1 -1
  41. package/lib/types/src/end-epoch.d.ts.map +1 -1
  42. package/lib/types/src/log-hotspot.d.ts.map +1 -1
  43. package/lib/types/src/{fix-claimed-epochs.d.ts → remove-authorities.d.ts} +1 -1
  44. package/lib/types/src/remove-authorities.d.ts.map +1 -0
  45. package/lib/types/src/{migrate-to-hip-138.d.ts → swap-carrier-stake.d.ts} +1 -1
  46. package/lib/types/src/swap-carrier-stake.d.ts.map +1 -0
  47. package/lib/types/src/swap-maker-stake.d.ts +2 -0
  48. package/lib/types/src/swap-maker-stake.d.ts.map +1 -0
  49. package/lib/types/src/update-matching-destinations.d.ts +2 -0
  50. package/lib/types/src/update-matching-destinations.d.ts.map +1 -0
  51. package/package.json +15 -13
  52. package/lib/cjs/fix-claimed-epochs.js.map +0 -1
  53. package/lib/cjs/migrate-to-hip-138.js +0 -221
  54. package/lib/cjs/migrate-to-hip-138.js.map +0 -1
  55. package/lib/esm/src/fix-claimed-epochs.js +0 -50
  56. package/lib/esm/src/fix-claimed-epochs.js.map +0 -1
  57. package/lib/esm/src/migrate-to-hip-138.js +0 -180
  58. package/lib/esm/src/migrate-to-hip-138.js.map +0 -1
  59. package/lib/types/src/fix-claimed-epochs.d.ts.map +0 -1
  60. package/lib/types/src/migrate-to-hip-138.d.ts.map +0 -1
@@ -0,0 +1,223 @@
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 = exports.getH3Location = void 0;
39
+ const anchor = __importStar(require("@coral-xyz/anchor"));
40
+ const helium_entity_manager_sdk_1 = require("@helium/helium-entity-manager-sdk");
41
+ const helium_sub_daos_sdk_1 = require("@helium/helium-sub-daos-sdk");
42
+ const spl_utils_1 = require("@helium/spl-utils");
43
+ const fast_deep_equal_1 = __importDefault(require("fast-deep-equal"));
44
+ const h3_js_1 = require("h3-js");
45
+ const os_1 = __importDefault(require("os"));
46
+ const pg_1 = require("pg");
47
+ const yargs_1 = __importDefault(require("yargs/yargs"));
48
+ const utils_1 = require("./utils");
49
+ const hasDeploymentInfo = (wi) => {
50
+ return !!(wi.deploymentInfo.antenna ||
51
+ wi.deploymentInfo.elevation ||
52
+ wi.deploymentInfo.azimuth ||
53
+ wi.deploymentInfo.mechanicalDownTilt ||
54
+ wi.deploymentInfo.electricalDownTilt);
55
+ };
56
+ const getH3Location = (lat, lng) => {
57
+ try {
58
+ const h3Index = (0, h3_js_1.latLngToCell)(lat, lng, 12);
59
+ return new anchor.BN(h3Index, 16);
60
+ }
61
+ catch (e) {
62
+ return undefined;
63
+ }
64
+ };
65
+ exports.getH3Location = getH3Location;
66
+ function run(args = process.argv) {
67
+ return __awaiter(this, void 0, void 0, function* () {
68
+ const yarg = (0, yargs_1.default)(args).options({
69
+ wallet: {
70
+ alias: "k",
71
+ describe: "Anchor wallet keypair",
72
+ default: `${os_1.default.homedir()}/.config/solana/id.json`,
73
+ },
74
+ url: {
75
+ alias: "u",
76
+ default: "http://127.0.0.1:8899",
77
+ describe: "The solana url",
78
+ },
79
+ pgUser: {
80
+ default: "postgres",
81
+ },
82
+ pgPassword: {
83
+ type: "string",
84
+ },
85
+ pgDatabase: {
86
+ type: "string",
87
+ },
88
+ pgHost: {
89
+ default: "localhost",
90
+ },
91
+ pgPort: {
92
+ default: "5432",
93
+ },
94
+ commit: {
95
+ type: "boolean",
96
+ default: false,
97
+ },
98
+ });
99
+ const argv = yield yarg.argv;
100
+ const commit = argv.commit;
101
+ process.env.ANCHOR_WALLET = argv.wallet;
102
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
103
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
104
+ const provider = anchor.getProvider();
105
+ const conn = provider.connection;
106
+ const wallet = new anchor.Wallet((0, utils_1.loadKeypair)(argv.wallet));
107
+ const hem = yield (0, helium_entity_manager_sdk_1.init)(provider);
108
+ const isRds = argv.pgHost.includes("rds.amazon.com");
109
+ const client = new pg_1.Client({
110
+ user: argv.pgUser,
111
+ password: argv.pgPassword,
112
+ host: argv.pgHost,
113
+ database: argv.pgDatabase,
114
+ port: Number(argv.pgPort),
115
+ ssl: argv.noSsl
116
+ ? {
117
+ rejectUnauthorized: false,
118
+ }
119
+ : false,
120
+ });
121
+ yield client.connect();
122
+ const [subDao] = (0, helium_sub_daos_sdk_1.subDaoKey)(spl_utils_1.MOBILE_MINT);
123
+ const [rewardableEntityconfig] = (0, helium_entity_manager_sdk_1.rewardableEntityConfigKey)(subDao, "MOBILE");
124
+ const wifiInfos = (yield client.query(`
125
+ SELECT c.hs_pubkey,
126
+ c.antenna,
127
+ c.height AS elevation,
128
+ c.azimuth AS azimuth,
129
+ c.mt AS mechanical_down_tilt,
130
+ c.et AS electrical_down_tilt
131
+ FROM radios AS r
132
+ JOIN calculations c ON r.last_success_calculation = c.id
133
+ WHERE r.is_active IS TRUE
134
+ AND radio_type = 'Wifi';
135
+ `)).rows.map((wifiInfo) => (Object.assign(Object.assign({}, wifiInfo), { location: (0, exports.getH3Location)(Number(wifiInfo.lat), Number(wifiInfo.lng)), deploymentInfo: {
136
+ antenna: Number(wifiInfo.antenna),
137
+ elevation: Number(wifiInfo.elevation),
138
+ azimuth: Number(wifiInfo.azimuth),
139
+ mechanicalDownTilt: Number(wifiInfo.mechanical_down_tilt),
140
+ electricalDownTilt: Number(wifiInfo.electrical_down_tilt),
141
+ } })));
142
+ const mobileInfos = wifiInfos.map((wifiInfo) => (0, helium_entity_manager_sdk_1.mobileInfoKey)(rewardableEntityconfig, wifiInfo.hs_pubkey)[0]);
143
+ const accountInfosWithPk = (yield Promise.all((0, spl_utils_1.chunks)(mobileInfos, 100).map((chunk) => conn.getMultipleAccountsInfo(chunk))))
144
+ .flat()
145
+ .map((accountInfo, idx) => (Object.assign({ pubkey: mobileInfos[idx], wifiInfo: wifiInfos[idx] }, accountInfo)));
146
+ const ixs = (yield Promise.all(accountInfosWithPk.map((acc) => __awaiter(this, void 0, void 0, function* () {
147
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
148
+ if (acc.data) {
149
+ let correction = {};
150
+ const decodedAcc = hem.coder.accounts.decode("MobileHotspotInfoV0", acc.data);
151
+ const deploymentInfoMissing = !decodedAcc.deploymentInfo && hasDeploymentInfo(acc.wifiInfo);
152
+ const correctedDeploymentInfo = {
153
+ antenna: acc.wifiInfo.deploymentInfo.antenna ||
154
+ ((_b = (_a = decodedAcc.deploymentInfo) === null || _a === void 0 ? void 0 : _a.wifiInfoV0) === null || _b === void 0 ? void 0 : _b.antenna) ||
155
+ 0,
156
+ elevation: ((_d = (_c = decodedAcc.deploymentInfo) === null || _c === void 0 ? void 0 : _c.wifiInfoV0) === null || _d === void 0 ? void 0 : _d.elevation) || 0,
157
+ // elevation descrepency was found and backfilled so default to whats on chain
158
+ // decodedAcc.deploymentInfo?.wifiInfoV0?.elevation ||
159
+ // floored since stored on chain as i32 representation in whole meters
160
+ // Math.floor(acc.wifiInfo.deploymentInfo.elevation) ||
161
+ // 0,
162
+ azimuth: ((_f = (_e = decodedAcc.deploymentInfo) === null || _e === void 0 ? void 0 : _e.wifiInfoV0) === null || _f === void 0 ? void 0 : _f.azimuth) || 0,
163
+ // azimuth descrepency was found and backfilled so default to whats on chain
164
+ // decodedAcc.deploymentInfo?.wifiInfoV0?.azimuth ||
165
+ // acc.wifiInfo.deploymentInfo.azimuth ||
166
+ // 0,
167
+ mechanicalDownTilt: ((_h = (_g = decodedAcc.deploymentInfo) === null || _g === void 0 ? void 0 : _g.wifiInfoV0) === null || _h === void 0 ? void 0 : _h.mechanicalDownTilt) || 0,
168
+ // mechanicalDownTilt descrepency was found and backfilled so default to whats on chain
169
+ // decodedAcc.deploymentInfo?.wifiInfoV0?.mechanicalDownTilt ||
170
+ // acc.wifiInfo.deploymentInfo.mechanicalDownTilt ||
171
+ // 0,
172
+ electricalDownTilt: ((_k = (_j = decodedAcc.deploymentInfo) === null || _j === void 0 ? void 0 : _j.wifiInfoV0) === null || _k === void 0 ? void 0 : _k.electricalDownTilt) || 0,
173
+ // electricalDownTilt descrepency was found and backfilled so default to whats on chain
174
+ // decodedAcc.deploymentInfo?.wifiInfoV0?.electricalDownTilt ||
175
+ // acc.wifiInfo.deploymentInfo.electricalDownTilt ||
176
+ // 0,
177
+ };
178
+ const deploymentInfoChanged = !(0, fast_deep_equal_1.default)((_l = decodedAcc.deploymentInfo) === null || _l === void 0 ? void 0 : _l.wifiInfoV0, correctedDeploymentInfo);
179
+ const locationMissing = !decodedAcc.location && acc.wifiInfo.location;
180
+ if (deploymentInfoMissing || deploymentInfoChanged) {
181
+ correction = Object.assign(Object.assign({}, correction), { deploymentInfo: {
182
+ wifiInfoV0: correctedDeploymentInfo,
183
+ } });
184
+ }
185
+ if (locationMissing) {
186
+ correction = Object.assign(Object.assign({}, correction), { location: acc.wifiInfo.location });
187
+ }
188
+ if (Object.keys(correction).length > 0) {
189
+ if (!argv.commit) {
190
+ console.log({
191
+ pubkey: acc.pubkey,
192
+ current: Object.assign({}, (_m = decodedAcc.deploymentInfo) === null || _m === void 0 ? void 0 : _m.wifiInfoV0),
193
+ new: Object.assign({}, correctedDeploymentInfo),
194
+ });
195
+ }
196
+ return yield hem.methods
197
+ .tempBackfillMobileInfo({
198
+ location: correction.location || null,
199
+ deploymentInfo: correction.deploymentInfo || null,
200
+ })
201
+ .accounts({
202
+ payer: wallet.publicKey,
203
+ mobileInfo: acc.pubkey,
204
+ })
205
+ .instruction();
206
+ }
207
+ }
208
+ })))).filter(spl_utils_1.truthy);
209
+ console.log(`Total corrections needed: ${ixs.length}`);
210
+ if (commit) {
211
+ try {
212
+ const transactions = yield (0, spl_utils_1.batchInstructionsToTxsWithPriorityFee)(provider, ixs, { useFirstEstimateForAll: true });
213
+ yield (0, spl_utils_1.bulkSendTransactions)(provider, transactions, console.log, 10, [], 100);
214
+ }
215
+ catch (e) {
216
+ console.error("Failed to process mobile deployment info updates:", e);
217
+ process.exit(1);
218
+ }
219
+ }
220
+ });
221
+ }
222
+ exports.run = run;
223
+ //# sourceMappingURL=backfill-mobile-deployment-infos.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backfill-mobile-deployment-infos.js","sourceRoot":"","sources":["../../src/backfill-mobile-deployment-infos.ts"],"names":[],"mappings":"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"}
@@ -123,7 +123,9 @@ function run(args = process.argv) {
123
123
  const dntMint = new web3_js_1.PublicKey(argv.dntMint);
124
124
  const mint = yield (0, spl_token_1.getMint)(program.provider.connection, dntMint);
125
125
  const subDao = (yield (0, helium_sub_daos_sdk_1.subDaoKey)(dntMint))[0];
126
- const subDaoAuth = (yield hsdProgram.account.subDaoV0.fetch(subDao)).authority;
126
+ const subDaoAccount = yield hsdProgram.account.subDaoV0.fetch(subDao);
127
+ const dao = yield hsdProgram.account.daoV0.fetch(subDaoAccount.dao);
128
+ const subDaoAuth = subDaoAccount.authority;
127
129
  const instructions = [
128
130
  yield program.methods
129
131
  .initializeBoostConfigV0({
@@ -132,7 +134,7 @@ function run(args = process.argv) {
132
134
  minimumPeriods: argv.minimumPeriods,
133
135
  })
134
136
  .accounts({
135
- dntMint,
137
+ dcMint: dao.dcMint,
136
138
  priceOracle: new web3_js_1.PublicKey(argv.priceOracle),
137
139
  rentReclaimAuthority: new web3_js_1.PublicKey(argv.rentReclaimAuthority),
138
140
  authority: subDaoAuth,
@@ -1 +1 @@
1
- {"version":3,"file":"create-boost-config.js","sourceRoot":"","sources":["../../src/create-boost-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-boost-config.js","sourceRoot":"","sources":["../../src/create-boost-config.ts"],"names":[],"mappings":"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"}
@@ -36,92 +36,261 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
36
36
  };
37
37
  Object.defineProperty(exports, "__esModule", { value: true });
38
38
  exports.run = void 0;
39
- const helium_sub_daos_sdk_1 = require("@helium/helium-sub-daos-sdk");
40
39
  const anchor = __importStar(require("@coral-xyz/anchor"));
40
+ const client = __importStar(require("@helium/distributor-oracle"));
41
+ const helium_entity_manager_sdk_1 = require("@helium/helium-entity-manager-sdk");
42
+ const helium_sub_daos_sdk_1 = require("@helium/helium-sub-daos-sdk");
43
+ const lazy_distributor_sdk_1 = require("@helium/lazy-distributor-sdk");
44
+ const no_emit_sdk_1 = require("@helium/no-emit-sdk");
45
+ const rewards_oracle_sdk_1 = require("@helium/rewards-oracle-sdk");
46
+ const spl_utils_1 = require("@helium/spl-utils");
41
47
  const web3_js_1 = require("@solana/web3.js");
42
48
  const bn_js_1 = require("bn.js");
43
49
  const bs58_1 = __importDefault(require("bs58"));
44
50
  const os_1 = __importDefault(require("os"));
45
51
  const yargs_1 = __importDefault(require("yargs/yargs"));
46
- const spl_utils_1 = require("@helium/spl-utils");
52
+ const IOT_OPERATIONS_FUND = "iot_operations_fund";
53
+ const NOT_EMITTED = "not_emitted";
54
+ const MAX_CLAIM_AMOUNT = new bn_js_1.BN("207020547945205");
55
+ function getSolanaUnixTimestamp(connection) {
56
+ return __awaiter(this, void 0, void 0, function* () {
57
+ const clock = yield connection.getAccountInfo(web3_js_1.SYSVAR_CLOCK_PUBKEY);
58
+ const unixTime = clock.data.readBigInt64LE(8 * 4);
59
+ return unixTime;
60
+ });
61
+ }
62
+ function sleep(ms) {
63
+ return __awaiter(this, void 0, void 0, function* () {
64
+ return new Promise((resolve) => setTimeout(resolve, ms));
65
+ });
66
+ }
47
67
  function run(args = process.argv) {
48
68
  return __awaiter(this, void 0, void 0, function* () {
49
- const yarg = (0, yargs_1.default)(args).options({
50
- wallet: {
51
- alias: "k",
52
- describe: "Anchor wallet keypair",
53
- default: `${os_1.default.homedir()}/.config/solana/id.json`,
54
- },
55
- url: {
56
- alias: "u",
57
- default: "http://127.0.0.1:8899",
58
- describe: "The solana url",
59
- },
60
- hntMint: {
61
- type: "string",
62
- describe: "Mint of the HNT token",
63
- },
64
- from: {
65
- type: "number",
66
- describe: "The timestamp to start ending epochs from",
67
- },
68
- });
69
- const argv = yield yarg.argv;
70
- process.env.ANCHOR_WALLET = argv.wallet;
71
- process.env.ANCHOR_PROVIDER_URL = argv.url;
72
- anchor.setProvider(anchor.AnchorProvider.local(argv.url));
73
- const provider = anchor.getProvider();
74
- const heliumSubDaosProgram = yield (0, helium_sub_daos_sdk_1.init)(provider);
75
- const hntMint = new web3_js_1.PublicKey(argv.hntMint);
76
- const dao = yield (0, helium_sub_daos_sdk_1.daoKey)(hntMint)[0];
77
- const subdaos = yield heliumSubDaosProgram.account.subDaoV0.all([
78
- {
79
- memcmp: {
80
- offset: 8,
81
- bytes: bs58_1.default.encode(dao.toBuffer()),
69
+ try {
70
+ const yarg = (0, yargs_1.default)(args).options({
71
+ wallet: {
72
+ alias: "k",
73
+ describe: "Anchor wallet keypair",
74
+ default: `${os_1.default.homedir()}/.config/solana/id.json`,
82
75
  },
83
- },
84
- ]);
85
- let targetTs = argv.from
86
- ? new bn_js_1.BN(argv.from)
87
- : subdaos[0].account.vehntLastCalculatedTs;
88
- while (targetTs.toNumber() < new Date().valueOf() / 1000) {
89
- const epoch = (0, helium_sub_daos_sdk_1.currentEpoch)(targetTs);
90
- console.log(epoch.toNumber(), targetTs.toNumber());
91
- const daoEpochInfo = yield heliumSubDaosProgram.account.daoEpochInfoV0.fetchNullable((0, helium_sub_daos_sdk_1.daoEpochInfoKey)(dao, targetTs)[0]);
92
- if (!(daoEpochInfo === null || daoEpochInfo === void 0 ? void 0 : daoEpochInfo.doneCalculatingScores)) {
93
- for (const subDao of subdaos) {
94
- try {
95
- yield (0, spl_utils_1.sendInstructionsWithPriorityFee)(provider, [
96
- yield heliumSubDaosProgram.methods
97
- .calculateUtilityScoreV0({ epoch })
98
- .accounts({ subDao: subDao.publicKey })
99
- .instruction(),
100
- ], {
101
- computeUnitLimit: 1000000,
102
- });
76
+ url: {
77
+ alias: "u",
78
+ default: "http://127.0.0.1:8899",
79
+ describe: "The solana url",
80
+ },
81
+ basePriorityFee: {
82
+ type: "number",
83
+ describe: "Base priority fee to be used",
84
+ },
85
+ from: {
86
+ type: "number",
87
+ describe: "The timestamp to start ending epochs from",
88
+ },
89
+ });
90
+ const argv = yield yarg.argv;
91
+ process.env.ANCHOR_WALLET = argv.wallet;
92
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
93
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
94
+ const errors = [];
95
+ const provider = anchor.getProvider();
96
+ const heliumSubDaosProgram = yield (0, helium_sub_daos_sdk_1.init)(provider);
97
+ const hntMint = new web3_js_1.PublicKey(spl_utils_1.HNT_MINT);
98
+ const unixNow = new Date().valueOf() / 1000;
99
+ const [dao] = (0, helium_sub_daos_sdk_1.daoKey)(hntMint);
100
+ const basePriorityFee = Number(argv.basePriorityFee || 1);
101
+ const subDaos = yield heliumSubDaosProgram.account.subDaoV0.all([
102
+ {
103
+ memcmp: {
104
+ offset: 8,
105
+ bytes: bs58_1.default.encode(dao.toBuffer()),
106
+ },
107
+ },
108
+ ]);
109
+ let targetTs = argv.from
110
+ ? new bn_js_1.BN(argv.from)
111
+ : subDaos.reduce((acc, subDao) => bn_js_1.BN.min(acc, subDao.account.vehntLastCalculatedTs),
112
+ // Start one day back to ensure we at least close the epoch that the job is running in.
113
+ new bn_js_1.BN(unixNow - 24 * 60 * 60));
114
+ const solanaTime = yield getSolanaUnixTimestamp(provider.connection);
115
+ mainLoop: while (targetTs.toNumber() < unixNow) {
116
+ const epoch = (0, helium_sub_daos_sdk_1.currentEpoch)(targetTs);
117
+ console.log(epoch.toNumber(), targetTs.toNumber());
118
+ const driftFromSolana = targetTs.toNumber() - Number(solanaTime);
119
+ // If Solana is within 5 minutes of the epoch we're trying to end, wait.
120
+ // This can happen because of solana clock drift.
121
+ if (driftFromSolana > 0 && driftFromSolana < 60 * 5) {
122
+ yield sleep(driftFromSolana * 1000);
123
+ }
124
+ const [daoEpoch] = (0, helium_sub_daos_sdk_1.daoEpochInfoKey)(dao, targetTs);
125
+ const daoEpochInfo = yield heliumSubDaosProgram.account.daoEpochInfoV0.fetchNullable(daoEpoch);
126
+ if (!(daoEpochInfo === null || daoEpochInfo === void 0 ? void 0 : daoEpochInfo.doneCalculatingScores)) {
127
+ for (const subDao of subDaos) {
128
+ const [subDaoEpoch] = (0, helium_sub_daos_sdk_1.subDaoEpochInfoKey)(subDao.publicKey, targetTs);
129
+ const subDaoEpochInfo = yield heliumSubDaosProgram.account.subDaoEpochInfoV0.fetchNullable(subDaoEpoch);
130
+ if (!(subDaoEpochInfo === null || subDaoEpochInfo === void 0 ? void 0 : subDaoEpochInfo.utilityScore)) {
131
+ try {
132
+ yield (0, spl_utils_1.sendInstructionsWithPriorityFee)(provider, [
133
+ yield heliumSubDaosProgram.methods
134
+ .calculateUtilityScoreV0({ epoch })
135
+ .accounts({ subDao: subDao.publicKey })
136
+ .instruction(),
137
+ ], {
138
+ computeUnitLimit: 1000000,
139
+ basePriorityFee: basePriorityFee,
140
+ });
141
+ }
142
+ catch (err) {
143
+ const strErr = JSON.stringify(err);
144
+ if (strErr.includes("Error Code: EpochNotOver") ||
145
+ strErr.includes(`{"Custom":6003}`)) {
146
+ // epoch not over
147
+ break mainLoop;
148
+ }
149
+ if (!strErr.includes("Error Code: UtilityScoreAlreadyCalculated") ||
150
+ !strErr.includes(`{"Custom":6002}`))
151
+ errors.push(`Failed to calculate utility score for ${subDao.account.dntMint.toBase58()}: ${err}`);
152
+ }
153
+ }
103
154
  }
104
- catch (e) {
105
- console.log(`Failed to calculate utility score for ${subDao.account.dntMint.toBase58()}: ${e.message}`);
155
+ }
156
+ for (const subDao of subDaos) {
157
+ if (!(daoEpochInfo === null || daoEpochInfo === void 0 ? void 0 : daoEpochInfo.doneIssuingRewards)) {
158
+ const [subDaoEpoch] = (0, helium_sub_daos_sdk_1.subDaoEpochInfoKey)(subDao.publicKey, targetTs);
159
+ const subDaoEpochInfo = yield heliumSubDaosProgram.account.subDaoEpochInfoV0.fetchNullable(subDaoEpoch);
160
+ if (!(subDaoEpochInfo === null || subDaoEpochInfo === void 0 ? void 0 : subDaoEpochInfo.rewardsIssuedAt)) {
161
+ try {
162
+ yield (0, spl_utils_1.sendInstructionsWithPriorityFee)(provider, [
163
+ yield heliumSubDaosProgram.methods
164
+ .issueRewardsV0({ epoch })
165
+ .accounts({ subDao: subDao.publicKey })
166
+ .instruction(),
167
+ ], {
168
+ basePriorityFee: basePriorityFee,
169
+ });
170
+ }
171
+ catch (err) {
172
+ errors.push(`Failed to issue rewards for ${subDao.account.dntMint.toBase58()}: ${err}`);
173
+ }
174
+ }
106
175
  }
107
176
  }
177
+ targetTs = targetTs.add(new bn_js_1.BN(helium_sub_daos_sdk_1.EPOCH_LENGTH));
108
178
  }
109
- if (!(daoEpochInfo === null || daoEpochInfo === void 0 ? void 0 : daoEpochInfo.doneIssuingRewards)) {
110
- for (const subDao of subdaos) {
111
- try {
112
- yield (0, spl_utils_1.sendInstructionsWithPriorityFee)(provider, [
113
- yield heliumSubDaosProgram.methods
114
- .issueRewardsV0({ epoch })
115
- .accounts({ subDao: subDao.publicKey })
179
+ // distribute iot operations fund
180
+ const hemProgram = yield (0, helium_entity_manager_sdk_1.init)(provider);
181
+ const lazyProgram = yield (0, lazy_distributor_sdk_1.init)(provider);
182
+ const rewardsOracleProgram = yield (0, rewards_oracle_sdk_1.init)(provider);
183
+ for (const token of [spl_utils_1.IOT_MINT, spl_utils_1.HNT_MINT]) {
184
+ const [lazyDistributor] = (0, lazy_distributor_sdk_1.lazyDistributorKey)(token);
185
+ const [keyToAsset] = (0, helium_entity_manager_sdk_1.keyToAssetKey)(dao, IOT_OPERATIONS_FUND, "utf8");
186
+ const assetId = (yield hemProgram.account.keyToAssetV0.fetch(keyToAsset))
187
+ .asset;
188
+ const [recipient] = (0, lazy_distributor_sdk_1.recipientKey)(lazyDistributor, assetId);
189
+ if (!(yield provider.connection.getAccountInfo(recipient))) {
190
+ const method = lazyProgram.methods.initializeRecipientV0().accounts({
191
+ lazyDistributor,
192
+ mint: assetId,
193
+ });
194
+ yield (0, spl_utils_1.sendInstructionsWithPriorityFee)(provider, [yield method.instruction()], { basePriorityFee });
195
+ }
196
+ const rewards = yield client.getCurrentRewards(lazyProgram, lazyDistributor, assetId);
197
+ const pending = yield client.getPendingRewards(lazyProgram, lazyDistributor, (0, helium_sub_daos_sdk_1.daoKey)(spl_utils_1.HNT_MINT)[0], [IOT_OPERATIONS_FUND], "utf8");
198
+ // Avoid claiming too much and tripping the breaker
199
+ if (new bn_js_1.BN(pending[IOT_OPERATIONS_FUND]).gt(MAX_CLAIM_AMOUNT)) {
200
+ rewards[0].currentRewards = new bn_js_1.BN(rewards[0].currentRewards)
201
+ .sub(new bn_js_1.BN(pending[IOT_OPERATIONS_FUND]))
202
+ .add(MAX_CLAIM_AMOUNT)
203
+ .toString();
204
+ }
205
+ const tx = yield client.formTransaction({
206
+ program: lazyProgram,
207
+ rewardsOracleProgram: rewardsOracleProgram,
208
+ provider,
209
+ rewards,
210
+ asset: assetId,
211
+ lazyDistributor,
212
+ });
213
+ const signed = yield provider.wallet.signTransaction(tx);
214
+ try {
215
+ yield (0, spl_utils_1.sendAndConfirmWithRetry)(provider.connection, Buffer.from(signed.serialize()), { skipPreflight: true }, "confirmed");
216
+ }
217
+ catch (err) {
218
+ errors.push(`Failed to distribute iot op funds: ${err}`);
219
+ }
220
+ }
221
+ // Only do this if that feature has been deployed
222
+ if (hemProgram.methods.issueNotEmittedEntityV0) {
223
+ console.log("Issuing no_emit");
224
+ const noEmitProgram = yield (0, no_emit_sdk_1.init)(provider);
225
+ const tokens = [spl_utils_1.MOBILE_MINT, spl_utils_1.IOT_MINT, spl_utils_1.HNT_MINT];
226
+ for (const token of tokens) {
227
+ const [lazyDistributor] = (0, lazy_distributor_sdk_1.lazyDistributorKey)(token);
228
+ const notEmittedEntityKta = (0, helium_entity_manager_sdk_1.keyToAssetKey)(dao, NOT_EMITTED, "utf-8")[0];
229
+ // Issue the burn entity if it doesn't exist yet.
230
+ if (!(yield provider.connection.getAccountInfo(notEmittedEntityKta))) {
231
+ const mint = web3_js_1.Keypair.generate();
232
+ yield (0, spl_utils_1.sendInstructions)(provider, [
233
+ ...(yield (0, spl_utils_1.createMintInstructions)(provider, 0, provider.wallet.publicKey, provider.wallet.publicKey, mint)),
234
+ yield hemProgram.methods
235
+ .issueNotEmittedEntityV0()
236
+ .accounts({
237
+ dao,
238
+ mint: mint.publicKey,
239
+ })
116
240
  .instruction(),
117
- ]);
241
+ ], [mint]);
242
+ }
243
+ const assetId = (yield hemProgram.account.keyToAssetV0.fetch(notEmittedEntityKta)).asset;
244
+ const [recipient] = (0, lazy_distributor_sdk_1.recipientKey)(lazyDistributor, assetId);
245
+ try {
246
+ if (!(yield provider.connection.getAccountInfo(recipient))) {
247
+ const method = lazyProgram.methods
248
+ .initializeRecipientV0()
249
+ .accounts({
250
+ lazyDistributor,
251
+ mint: assetId,
252
+ });
253
+ yield (0, spl_utils_1.sendInstructionsWithPriorityFee)(provider, [yield method.instruction()], { basePriorityFee });
254
+ }
255
+ const rewards = yield client.getCurrentRewards(lazyProgram, lazyDistributor, assetId);
256
+ const tx = yield client.formTransaction({
257
+ program: lazyProgram,
258
+ rewardsOracleProgram: rewardsOracleProgram,
259
+ provider,
260
+ rewards,
261
+ asset: assetId,
262
+ lazyDistributor,
263
+ });
264
+ const signed = yield provider.wallet.signTransaction(tx);
265
+ yield (0, spl_utils_1.sendAndConfirmWithRetry)(provider.connection, Buffer.from(signed.serialize()), { skipPreflight: true }, "confirmed");
118
266
  }
119
- catch (e) {
120
- console.log(`Failed to issue rewards for ${subDao.account.dntMint.toBase58()}: ${e.message}`);
267
+ catch (err) {
268
+ errors.push(`Failed to distribute burn funds for mint ${token.toBase58()}: ${err}`);
121
269
  }
122
270
  }
123
- targetTs = targetTs.add(new bn_js_1.BN(helium_sub_daos_sdk_1.EPOCH_LENGTH));
271
+ try {
272
+ console.log("No emit");
273
+ yield (0, spl_utils_1.sendInstructions)(provider, [
274
+ yield noEmitProgram.methods
275
+ .noEmitV0()
276
+ .accounts({
277
+ mint: hntMint,
278
+ })
279
+ .instruction(),
280
+ ]);
281
+ }
282
+ catch (err) {
283
+ errors.push(`Failed to run noEmitV0`);
284
+ }
124
285
  }
286
+ if (!errors.length)
287
+ process.exit(0);
288
+ errors.map(console.log);
289
+ process.exit(1);
290
+ }
291
+ catch (err) {
292
+ console.log(err);
293
+ process.exit(1);
125
294
  }
126
295
  });
127
296
  }
@@ -1 +1 @@
1
- {"version":3,"file":"end-epoch.js","sourceRoot":"","sources":["../../src/end-epoch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"end-epoch.js","sourceRoot":"","sources":["../../src/end-epoch.ts"],"names":[],"mappings":"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"}