@helium/helium-admin-cli 0.0.49-price.1

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 (136) hide show
  1. package/README.md +91 -0
  2. package/bin/helium-admin.js +13 -0
  3. package/lib/cjs/cli-distribute-rewards.js +96 -0
  4. package/lib/cjs/cli-distribute-rewards.js.map +1 -0
  5. package/lib/cjs/create-active-device-aggregator.js +112 -0
  6. package/lib/cjs/create-active-device-aggregator.js.map +1 -0
  7. package/lib/cjs/create-dao.js +384 -0
  8. package/lib/cjs/create-dao.js.map +1 -0
  9. package/lib/cjs/create-maker.js +323 -0
  10. package/lib/cjs/create-maker.js.map +1 -0
  11. package/lib/cjs/create-price-oracle.js +121 -0
  12. package/lib/cjs/create-price-oracle.js.map +1 -0
  13. package/lib/cjs/create-subdao.js +496 -0
  14. package/lib/cjs/create-subdao.js.map +1 -0
  15. package/lib/cjs/distribute-hst.js +94 -0
  16. package/lib/cjs/distribute-hst.js.map +1 -0
  17. package/lib/cjs/ecc-gen.js +17 -0
  18. package/lib/cjs/ecc-gen.js.map +1 -0
  19. package/lib/cjs/end-epoch.js +144 -0
  20. package/lib/cjs/end-epoch.js.map +1 -0
  21. package/lib/cjs/log-hotspot.js +80 -0
  22. package/lib/cjs/log-hotspot.js.map +1 -0
  23. package/lib/cjs/mint-dc.js +112 -0
  24. package/lib/cjs/mint-dc.js.map +1 -0
  25. package/lib/cjs/reset-clockwork.js +141 -0
  26. package/lib/cjs/reset-clockwork.js.map +1 -0
  27. package/lib/cjs/reset-vsr-max-voter-record.js +142 -0
  28. package/lib/cjs/reset-vsr-max-voter-record.js.map +1 -0
  29. package/lib/cjs/reset-vsr-voting-mint.js +179 -0
  30. package/lib/cjs/reset-vsr-voting-mint.js.map +1 -0
  31. package/lib/cjs/setup-hst.js +243 -0
  32. package/lib/cjs/setup-hst.js.map +1 -0
  33. package/lib/cjs/submit-price.js +158 -0
  34. package/lib/cjs/submit-price.js.map +1 -0
  35. package/lib/cjs/update-account-circuit-breaker.js +127 -0
  36. package/lib/cjs/update-account-circuit-breaker.js.map +1 -0
  37. package/lib/cjs/update-dao.js +146 -0
  38. package/lib/cjs/update-dao.js.map +1 -0
  39. package/lib/cjs/update-mint-circuit-breaker.js +129 -0
  40. package/lib/cjs/update-mint-circuit-breaker.js.map +1 -0
  41. package/lib/cjs/update-rewardable-entity-config.js +143 -0
  42. package/lib/cjs/update-rewardable-entity-config.js.map +1 -0
  43. package/lib/cjs/update-subdao.js +228 -0
  44. package/lib/cjs/update-subdao.js.map +1 -0
  45. package/lib/cjs/utils.js +366 -0
  46. package/lib/cjs/utils.js.map +1 -0
  47. package/lib/esm/src/cli-distribute-rewards.js +55 -0
  48. package/lib/esm/src/cli-distribute-rewards.js.map +1 -0
  49. package/lib/esm/src/create-active-device-aggregator.js +71 -0
  50. package/lib/esm/src/create-active-device-aggregator.js.map +1 -0
  51. package/lib/esm/src/create-dao.js +341 -0
  52. package/lib/esm/src/create-dao.js.map +1 -0
  53. package/lib/esm/src/create-maker.js +282 -0
  54. package/lib/esm/src/create-maker.js.map +1 -0
  55. package/lib/esm/src/create-price-oracle.js +80 -0
  56. package/lib/esm/src/create-price-oracle.js.map +1 -0
  57. package/lib/esm/src/create-subdao.js +455 -0
  58. package/lib/esm/src/create-subdao.js.map +1 -0
  59. package/lib/esm/src/distribute-hst.js +53 -0
  60. package/lib/esm/src/distribute-hst.js.map +1 -0
  61. package/lib/esm/src/ecc-gen.js +6 -0
  62. package/lib/esm/src/ecc-gen.js.map +1 -0
  63. package/lib/esm/src/end-epoch.js +103 -0
  64. package/lib/esm/src/end-epoch.js.map +1 -0
  65. package/lib/esm/src/log-hotspot.js +39 -0
  66. package/lib/esm/src/log-hotspot.js.map +1 -0
  67. package/lib/esm/src/mint-dc.js +71 -0
  68. package/lib/esm/src/mint-dc.js.map +1 -0
  69. package/lib/esm/src/reset-clockwork.js +100 -0
  70. package/lib/esm/src/reset-clockwork.js.map +1 -0
  71. package/lib/esm/src/reset-vsr-max-voter-record.js +101 -0
  72. package/lib/esm/src/reset-vsr-max-voter-record.js.map +1 -0
  73. package/lib/esm/src/reset-vsr-voting-mint.js +138 -0
  74. package/lib/esm/src/reset-vsr-voting-mint.js.map +1 -0
  75. package/lib/esm/src/setup-hst.js +201 -0
  76. package/lib/esm/src/setup-hst.js.map +1 -0
  77. package/lib/esm/src/submit-price.js +113 -0
  78. package/lib/esm/src/submit-price.js.map +1 -0
  79. package/lib/esm/src/update-account-circuit-breaker.js +86 -0
  80. package/lib/esm/src/update-account-circuit-breaker.js.map +1 -0
  81. package/lib/esm/src/update-dao.js +105 -0
  82. package/lib/esm/src/update-dao.js.map +1 -0
  83. package/lib/esm/src/update-mint-circuit-breaker.js +88 -0
  84. package/lib/esm/src/update-mint-circuit-breaker.js.map +1 -0
  85. package/lib/esm/src/update-rewardable-entity-config.js +102 -0
  86. package/lib/esm/src/update-rewardable-entity-config.js.map +1 -0
  87. package/lib/esm/src/update-subdao.js +187 -0
  88. package/lib/esm/src/update-subdao.js.map +1 -0
  89. package/lib/esm/src/utils.js +309 -0
  90. package/lib/esm/src/utils.js.map +1 -0
  91. package/lib/esm/tsconfig.esm.tsbuildinfo +1 -0
  92. package/lib/types/src/cli-distribute-rewards.d.ts +2 -0
  93. package/lib/types/src/cli-distribute-rewards.d.ts.map +1 -0
  94. package/lib/types/src/create-active-device-aggregator.d.ts +2 -0
  95. package/lib/types/src/create-active-device-aggregator.d.ts.map +1 -0
  96. package/lib/types/src/create-dao.d.ts +2 -0
  97. package/lib/types/src/create-dao.d.ts.map +1 -0
  98. package/lib/types/src/create-maker.d.ts +2 -0
  99. package/lib/types/src/create-maker.d.ts.map +1 -0
  100. package/lib/types/src/create-price-oracle.d.ts +2 -0
  101. package/lib/types/src/create-price-oracle.d.ts.map +1 -0
  102. package/lib/types/src/create-subdao.d.ts +2 -0
  103. package/lib/types/src/create-subdao.d.ts.map +1 -0
  104. package/lib/types/src/distribute-hst.d.ts +2 -0
  105. package/lib/types/src/distribute-hst.d.ts.map +1 -0
  106. package/lib/types/src/ecc-gen.d.ts +2 -0
  107. package/lib/types/src/ecc-gen.d.ts.map +1 -0
  108. package/lib/types/src/end-epoch.d.ts +2 -0
  109. package/lib/types/src/end-epoch.d.ts.map +1 -0
  110. package/lib/types/src/log-hotspot.d.ts +2 -0
  111. package/lib/types/src/log-hotspot.d.ts.map +1 -0
  112. package/lib/types/src/mint-dc.d.ts +2 -0
  113. package/lib/types/src/mint-dc.d.ts.map +1 -0
  114. package/lib/types/src/reset-clockwork.d.ts +2 -0
  115. package/lib/types/src/reset-clockwork.d.ts.map +1 -0
  116. package/lib/types/src/reset-vsr-max-voter-record.d.ts +2 -0
  117. package/lib/types/src/reset-vsr-max-voter-record.d.ts.map +1 -0
  118. package/lib/types/src/reset-vsr-voting-mint.d.ts +2 -0
  119. package/lib/types/src/reset-vsr-voting-mint.d.ts.map +1 -0
  120. package/lib/types/src/setup-hst.d.ts +4 -0
  121. package/lib/types/src/setup-hst.d.ts.map +1 -0
  122. package/lib/types/src/submit-price.d.ts +2 -0
  123. package/lib/types/src/submit-price.d.ts.map +1 -0
  124. package/lib/types/src/update-account-circuit-breaker.d.ts +2 -0
  125. package/lib/types/src/update-account-circuit-breaker.d.ts.map +1 -0
  126. package/lib/types/src/update-dao.d.ts +2 -0
  127. package/lib/types/src/update-dao.d.ts.map +1 -0
  128. package/lib/types/src/update-mint-circuit-breaker.d.ts +2 -0
  129. package/lib/types/src/update-mint-circuit-breaker.d.ts.map +1 -0
  130. package/lib/types/src/update-rewardable-entity-config.d.ts +2 -0
  131. package/lib/types/src/update-rewardable-entity-config.d.ts.map +1 -0
  132. package/lib/types/src/update-subdao.d.ts +2 -0
  133. package/lib/types/src/update-subdao.d.ts.map +1 -0
  134. package/lib/types/src/utils.d.ts +55 -0
  135. package/lib/types/src/utils.d.ts.map +1 -0
  136. package/package.json +77 -0
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.run = void 0;
39
+ const anchor = __importStar(require("@coral-xyz/anchor"));
40
+ const helium_sub_daos_sdk_1 = require("@helium/helium-sub-daos-sdk");
41
+ const voter_stake_registry_sdk_1 = require("@helium/voter-stake-registry-sdk");
42
+ const web3_js_1 = require("@solana/web3.js");
43
+ const sdk_1 = __importDefault(require("@sqds/sdk"));
44
+ const os_1 = __importDefault(require("os"));
45
+ const yargs_1 = __importDefault(require("yargs/yargs"));
46
+ const utils_1 = require("./utils");
47
+ const SECS_PER_DAY = 86400;
48
+ const SECS_PER_YEAR = 365 * SECS_PER_DAY;
49
+ const MAX_LOCKUP = 4 * SECS_PER_YEAR;
50
+ function run(args = process.argv) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const yarg = (0, yargs_1.default)(args).options({
53
+ wallet: {
54
+ alias: "k",
55
+ describe: "Anchor wallet keypair",
56
+ default: `${os_1.default.homedir()}/.config/solana/id.json`,
57
+ },
58
+ url: {
59
+ alias: "u",
60
+ default: "http://127.0.0.1:8899",
61
+ describe: "The solana url",
62
+ },
63
+ hntMint: {
64
+ type: "string",
65
+ describe: "Mint of the HNT token. Only used if --resetDaoVotingMint flag is set",
66
+ },
67
+ dntMint: {
68
+ type: "string",
69
+ describe: "Mint of the subdao token. Only used if --resetSubDaoVotingMint flag is set",
70
+ },
71
+ resetDaoVotingMint: {
72
+ type: "boolean",
73
+ describe: "Reset the dao voting mint",
74
+ default: false,
75
+ },
76
+ resetSubDaoVotingMint: {
77
+ type: "boolean",
78
+ describe: "Reset the subdao voting mint",
79
+ default: false,
80
+ },
81
+ executeTransaction: {
82
+ type: "boolean",
83
+ },
84
+ multisig: {
85
+ type: "string",
86
+ describe: "Address of the squads multisig to be authority. If not provided, your wallet will be the authority",
87
+ },
88
+ authorityIndex: {
89
+ type: "number",
90
+ describe: "Authority index for squads. Defaults to 1",
91
+ default: 1,
92
+ },
93
+ });
94
+ const argv = yield yarg.argv;
95
+ process.env.ANCHOR_WALLET = argv.wallet;
96
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
97
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
98
+ if (argv.resetSubDaoVotingMint && !argv.dntMint) {
99
+ console.log("dnt mint not provided");
100
+ return;
101
+ }
102
+ const provider = anchor.getProvider();
103
+ const hsdProgram = yield (0, helium_sub_daos_sdk_1.init)(provider);
104
+ const hvsrProgram = yield (0, voter_stake_registry_sdk_1.init)(provider);
105
+ const now = Number(yield (0, utils_1.getUnixTimestamp)(provider));
106
+ const in7Days = now + (0, utils_1.getTimestampFromDays)(7);
107
+ const instructions = [];
108
+ const squads = sdk_1.default.endpoint(process.env.ANCHOR_PROVIDER_URL, provider.wallet);
109
+ if (argv.resetDaoVotingMint) {
110
+ console.log("resetting dao votingMint");
111
+ const hntMint = new web3_js_1.PublicKey(argv.hntMint);
112
+ const dao = (0, helium_sub_daos_sdk_1.daoKey)(hntMint)[0];
113
+ const daoAcc = yield hsdProgram.account.daoV0.fetch(dao);
114
+ instructions.push(yield hvsrProgram.methods
115
+ .configureVotingMintV0({
116
+ idx: 0,
117
+ digitShift: 0,
118
+ baselineVoteWeightScaledFactor: new anchor.BN(0 * 1e9),
119
+ maxExtraLockupVoteWeightScaledFactor: new anchor.BN(100 * 1e9),
120
+ lockupSaturationSecs: new anchor.BN(MAX_LOCKUP),
121
+ genesisVotePowerMultiplier: 3,
122
+ genesisVotePowerMultiplierExpirationTs: new anchor.BN(in7Days),
123
+ })
124
+ .accounts({
125
+ registrar: daoAcc.registrar,
126
+ realmAuthority: daoAcc.authority,
127
+ mint: hntMint,
128
+ })
129
+ .remainingAccounts([
130
+ {
131
+ pubkey: hntMint,
132
+ isSigner: false,
133
+ isWritable: false,
134
+ },
135
+ ])
136
+ .instruction());
137
+ }
138
+ if (argv.resetSubDaoVotingMint) {
139
+ console.log("resetting subdao votingMint");
140
+ const dntMint = new web3_js_1.PublicKey(argv.dntMint);
141
+ const subDao = (0, helium_sub_daos_sdk_1.subDaoKey)(dntMint)[0];
142
+ const subdaoAcc = yield hsdProgram.account.subDaoV0.fetch(subDao);
143
+ instructions.push(yield hvsrProgram.methods
144
+ .configureVotingMintV0({
145
+ idx: 0,
146
+ digitShift: -1,
147
+ baselineVoteWeightScaledFactor: new anchor.BN(0 * 1e9),
148
+ maxExtraLockupVoteWeightScaledFactor: new anchor.BN(100 * 1e9),
149
+ lockupSaturationSecs: new anchor.BN(MAX_LOCKUP),
150
+ genesisVotePowerMultiplier: 1,
151
+ genesisVotePowerMultiplierExpirationTs: new anchor.BN(now),
152
+ })
153
+ .accounts({
154
+ registrar: subdaoAcc.registrar,
155
+ mint: dntMint,
156
+ realmAuthority: subdaoAcc.authority,
157
+ })
158
+ .remainingAccounts([
159
+ {
160
+ pubkey: dntMint,
161
+ isSigner: false,
162
+ isWritable: false,
163
+ },
164
+ ])
165
+ .instruction());
166
+ }
167
+ yield (0, utils_1.sendInstructionsOrSquads)({
168
+ provider,
169
+ instructions,
170
+ executeTransaction: argv.executeTransaction,
171
+ squads,
172
+ multisig: argv.multisig ? new web3_js_1.PublicKey(argv.multisig) : undefined,
173
+ authorityIndex: argv.authorityIndex,
174
+ signers: [],
175
+ });
176
+ });
177
+ }
178
+ exports.run = run;
179
+ //# sourceMappingURL=reset-vsr-voting-mint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset-vsr-voting-mint.js","sourceRoot":"","sources":["../../src/reset-vsr-voting-mint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,243 @@
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.threadKey = exports.run = void 0;
39
+ const sdk_1 = require("@clockwork-xyz/sdk");
40
+ const anchor = __importStar(require("@coral-xyz/anchor"));
41
+ const address_1 = __importDefault(require("@helium/address"));
42
+ const KeyTypes_1 = require("@helium/address/build/KeyTypes");
43
+ const fanout_sdk_1 = require("@helium/fanout-sdk");
44
+ const spl_utils_1 = require("@helium/spl-utils");
45
+ const spl_token_1 = require("@solana/spl-token");
46
+ const web3_js_1 = require("@solana/web3.js");
47
+ const sdk_2 = __importDefault(require("@sqds/sdk"));
48
+ const solana_js_1 = require("@switchboard-xyz/solana.js");
49
+ const fs_1 = __importDefault(require("fs"));
50
+ const os_1 = __importDefault(require("os"));
51
+ const yargs_1 = __importDefault(require("yargs/yargs"));
52
+ const utils_1 = require("./utils");
53
+ function run(args = process.argv) {
54
+ return __awaiter(this, void 0, void 0, function* () {
55
+ const yarg = (0, yargs_1.default)(args).options({
56
+ wallet: {
57
+ alias: "k",
58
+ describe: "Anchor wallet keypair",
59
+ default: `${os_1.default.homedir()}/.config/solana/id.json`,
60
+ },
61
+ url: {
62
+ alias: "u",
63
+ default: "http://127.0.0.1:8899",
64
+ describe: "The solana url",
65
+ },
66
+ hnt: {
67
+ type: "string",
68
+ describe: "Pubkey of hnt",
69
+ required: true,
70
+ },
71
+ state: {
72
+ type: "string",
73
+ alias: "s",
74
+ default: `${__dirname}/../../migration-service/export.json`,
75
+ },
76
+ name: {
77
+ type: "string",
78
+ },
79
+ multisig: {
80
+ type: "string",
81
+ describe: "Address of the squads multisig to control the dao. If not provided, your wallet will be the authority",
82
+ },
83
+ authorityIndex: {
84
+ type: "number",
85
+ describe: "Authority index for squads. Defaults to 1",
86
+ default: 1,
87
+ },
88
+ hstKeypair: {
89
+ type: "string",
90
+ describe: "Keypair of the HST token",
91
+ default: `${__dirname}/../keypairs/hst.json`,
92
+ },
93
+ bucket: {
94
+ type: "string",
95
+ describe: "Bucket URL prefix holding all of the metadata jsons",
96
+ default: "https://shdw-drive.genesysgo.net/CsDkETHRRR1EcueeN346MJoqzymkkr7RFjMqGpZMzAib",
97
+ },
98
+ });
99
+ const argv = yield yarg.argv;
100
+ process.env.ANCHOR_WALLET = argv.wallet;
101
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
102
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
103
+ const provider = anchor.getProvider();
104
+ const hstKeypair = (0, solana_js_1.loadKeypair)(argv.hstKeypair);
105
+ let authority = provider.wallet.publicKey;
106
+ let multisig = argv.multisig ? new web3_js_1.PublicKey(argv.multisig) : null;
107
+ const squads = sdk_2.default.endpoint(process.env.ANCHOR_PROVIDER_URL, provider.wallet);
108
+ if (multisig) {
109
+ authority = squads.getAuthorityPDA(multisig, argv.authorityIndex);
110
+ }
111
+ const state = JSON.parse(fs_1.default.readFileSync(argv.state).toString());
112
+ const accounts = state.accounts;
113
+ const hnt = new web3_js_1.PublicKey(argv.hnt);
114
+ const hst = hstKeypair.publicKey;
115
+ const fanoutProgram = yield (0, fanout_sdk_1.init)(provider);
116
+ const totalHst = Object.values(accounts).reduce((acc, v) => {
117
+ if (v.hst) {
118
+ return acc.add(new anchor.BN(v.hst));
119
+ }
120
+ return acc;
121
+ }, new anchor.BN(0));
122
+ yield (0, utils_1.createAndMint)({
123
+ provider,
124
+ mintKeypair: hstKeypair,
125
+ amount: totalHst.toNumber() / 10 ** 8,
126
+ decimals: 8,
127
+ metadataUrl: `${argv.bucket}/hst.json`,
128
+ });
129
+ const fanout = (0, fanout_sdk_1.fanoutKey)(argv.name)[0];
130
+ const hntAccount = yield (0, spl_token_1.getAssociatedTokenAddressSync)(hnt, fanout, true);
131
+ console.log("Outputting hnt to", hntAccount.toBase58());
132
+ if (!(yield (0, utils_1.exists)(provider.connection, fanout))) {
133
+ yield fanoutProgram.methods
134
+ .initializeFanoutV0({
135
+ name: argv.name,
136
+ })
137
+ .preInstructions([
138
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 500000 }),
139
+ ])
140
+ .accounts({
141
+ authority,
142
+ membershipMint: hst,
143
+ fanoutMint: hnt,
144
+ })
145
+ .rpc({ skipPreflight: true });
146
+ }
147
+ const clockworkProvider = new sdk_1.ClockworkProvider(provider.wallet, provider.connection);
148
+ for (const [address, account] of Object.entries(accounts)) {
149
+ if (!account.hst || account.hst === 0 || account.hst === "0") {
150
+ continue;
151
+ }
152
+ const solAddress = toSolana(address);
153
+ if (!solAddress) {
154
+ throw new Error("HST Owner that doesn't have a sol address " + address);
155
+ }
156
+ const hstAmount = new anchor.BN(account.hst);
157
+ let mint;
158
+ const mintPath = `${__dirname}/../keypairs/hst-receipt-${address}.json`;
159
+ if (fs_1.default.existsSync(mintPath)) {
160
+ mint = (0, solana_js_1.loadKeypair)(mintPath);
161
+ }
162
+ else {
163
+ mint = web3_js_1.Keypair.generate();
164
+ fs_1.default.writeFileSync(mintPath, JSON.stringify(Array.from(mint.secretKey)));
165
+ }
166
+ const [voucher] = (0, fanout_sdk_1.membershipVoucherKey)(mint.publicKey);
167
+ if (!(yield (0, utils_1.exists)(provider.connection, voucher))) {
168
+ yield fanoutProgram.methods
169
+ .stakeV0({
170
+ amount: hstAmount,
171
+ })
172
+ .preInstructions(yield (0, spl_utils_1.createMintInstructions)(provider, 0, voucher, voucher, mint))
173
+ .accounts({
174
+ recipient: solAddress,
175
+ fanout,
176
+ mint: mint.publicKey
177
+ })
178
+ .signers([mint])
179
+ .rpc({ skipPreflight: true });
180
+ }
181
+ // 2️⃣ Define a trigger condition.
182
+ const trigger = {
183
+ cron: {
184
+ schedule: "0 30 0 * * * *",
185
+ skippable: true,
186
+ },
187
+ };
188
+ // 3️⃣ Create the thread.
189
+ const threadId = `${argv.name}-${mint.publicKey.toBase58().slice(0, 8)}`;
190
+ const [thread] = threadKey(provider.wallet.publicKey, threadId);
191
+ console.log("Thread ID", threadId, thread.toBase58());
192
+ const memberHntAccount = yield (0, spl_token_1.getAssociatedTokenAddressSync)(hnt, solAddress, true);
193
+ if (!(yield (0, utils_1.exists)(provider.connection, memberHntAccount))) {
194
+ yield (0, spl_utils_1.sendInstructions)(provider, [
195
+ (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(provider.wallet.publicKey, memberHntAccount, solAddress, hnt),
196
+ ]);
197
+ }
198
+ const distributeIx = yield fanoutProgram.methods
199
+ .distributeV0()
200
+ .accounts({
201
+ payer: new web3_js_1.PublicKey("C1ockworkPayer11111111111111111111111111111"),
202
+ fanout,
203
+ owner: solAddress,
204
+ mint: mint.publicKey
205
+ })
206
+ .instruction();
207
+ if (!(yield (0, utils_1.exists)(provider.connection, thread))) {
208
+ const tx = yield clockworkProvider.threadCreate(provider.wallet.publicKey, // authority
209
+ threadId, // id
210
+ [distributeIx], // instructions
211
+ trigger, // trigger
212
+ anchor.web3.LAMPORTS_PER_SOL // amount
213
+ );
214
+ }
215
+ else {
216
+ yield clockworkProvider.threadUpdate(provider.wallet.publicKey, thread, {
217
+ trigger,
218
+ });
219
+ }
220
+ }
221
+ });
222
+ }
223
+ exports.run = run;
224
+ function toSolana(address) {
225
+ try {
226
+ const addr = address_1.default.fromB58(address);
227
+ if (addr.keyType === KeyTypes_1.ED25519_KEY_TYPE)
228
+ return new web3_js_1.PublicKey(addr.publicKey);
229
+ }
230
+ catch (e) {
231
+ return undefined;
232
+ }
233
+ }
234
+ const CLOCKWORK_PID = new web3_js_1.PublicKey("CLoCKyJ6DXBJqqu2VWx9RLbgnwwR6BMHHuyasVmfMzBh");
235
+ function threadKey(authority, threadId, programId = CLOCKWORK_PID) {
236
+ return web3_js_1.PublicKey.findProgramAddressSync([
237
+ Buffer.from("thread", "utf8"),
238
+ authority.toBuffer(),
239
+ Buffer.from(threadId, "utf8"),
240
+ ], programId);
241
+ }
242
+ exports.threadKey = threadKey;
243
+ //# sourceMappingURL=setup-hst.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup-hst.js","sourceRoot":"","sources":["../../src/setup-hst.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
+ return new (P || (P = Promise))(function (resolve, reject) {
28
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
32
+ });
33
+ };
34
+ var __importDefault = (this && this.__importDefault) || function (mod) {
35
+ return (mod && mod.__esModule) ? mod : { "default": mod };
36
+ };
37
+ Object.defineProperty(exports, "__esModule", { value: true });
38
+ exports.run = void 0;
39
+ const price_oracle_sdk_1 = require("@helium/price-oracle-sdk");
40
+ const anchor = __importStar(require("@coral-xyz/anchor"));
41
+ const web3_js_1 = require("@solana/web3.js");
42
+ const os_1 = __importDefault(require("os"));
43
+ const yargs_1 = __importDefault(require("yargs/yargs"));
44
+ const bn_js_1 = require("bn.js");
45
+ const axios_1 = __importDefault(require("axios"));
46
+ function findBinancePrice(symbol) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ try {
49
+ const response = yield axios_1.default.get(`https://api.binance.com/api/v3/ticker/price?symbol=${symbol}`);
50
+ const data = response.data;
51
+ return parseFloat(data.price);
52
+ }
53
+ catch (error) {
54
+ console.error(`Error fetching ticker price for ${symbol}: ${error.message}`);
55
+ throw error;
56
+ }
57
+ });
58
+ }
59
+ function findCoingeckoPrice(token) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ try {
62
+ const response = yield axios_1.default.get(`https://api.coingecko.com/api/v3/simple/price?ids=${token}&vs_currencies=usd`);
63
+ const data = response.data;
64
+ return parseFloat(data[token]["usd"]);
65
+ }
66
+ catch (error) {
67
+ console.error(`Error fetching price for ${token}: ${error.message}`);
68
+ throw error;
69
+ }
70
+ });
71
+ }
72
+ function run(args = process.argv) {
73
+ return __awaiter(this, void 0, void 0, function* () {
74
+ const yarg = (0, yargs_1.default)(args).options({
75
+ wallet: {
76
+ alias: "k",
77
+ describe: "Anchor wallet keypair",
78
+ default: `${os_1.default.homedir()}/.config/solana/id.json`,
79
+ },
80
+ url: {
81
+ alias: "u",
82
+ default: "http://127.0.0.1:8899",
83
+ describe: "The solana url",
84
+ },
85
+ price: {
86
+ alias: "p",
87
+ type: "number",
88
+ required: false,
89
+ describe: "The price to submit. Required if not using default pricing",
90
+ },
91
+ priceOracle: {
92
+ type: "string",
93
+ required: true,
94
+ alias: "o",
95
+ describe: "Name or Address of the price oracle to submit a price to. Example: hnt, iot, mobile, horUtvuHQFWxPFrZ35YZUmXUZ2TSQdSXhcD4kkCVNKi",
96
+ },
97
+ useBinancePrice: {
98
+ type: "string",
99
+ required: false,
100
+ describe: "If supplied, will try and find the binance price for this pair. E.g. 'HNTUSDT' will submit the binance HNT-USDT price",
101
+ default: null,
102
+ },
103
+ useCoingeckoPrice: {
104
+ type: "string",
105
+ required: false,
106
+ describe: "If supplied, will try and find the coingecko price for this coin. E.g. 'helium' will submit the coingecko HNT price",
107
+ default: null,
108
+ },
109
+ });
110
+ const argv = yield yarg.argv;
111
+ process.env.ANCHOR_WALLET = argv.wallet;
112
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
113
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
114
+ const provider = anchor.getProvider();
115
+ const program = yield (0, price_oracle_sdk_1.init)(provider);
116
+ if (!argv.useBinancePrice && !argv.price && !argv.useCoingeckoPrice) {
117
+ throw new Error("Need to supply a price");
118
+ }
119
+ const price = argv.price
120
+ ? argv.price
121
+ : argv.useCoingeckoPrice
122
+ ? yield findCoingeckoPrice(argv.useCoingeckoPrice)
123
+ : argv.useBinancePrice
124
+ ? yield findBinancePrice(argv.useBinancePrice)
125
+ : null;
126
+ switch (argv.priceOracle) {
127
+ case "hnt":
128
+ argv.priceOracle = "horUtvuHQFWxPFrZ35YZUmXUZ2TSQdSXhcD4kkCVNKi";
129
+ break;
130
+ case "iot":
131
+ argv.priceOracle = "iortGU2NMgWc256XDBz2mQnmjPfKUMezJ4BWfayEZY3";
132
+ break;
133
+ case "mobile":
134
+ argv.priceOracle = "moraMdsjyPFz8Lp1RJGoW4bQriSF5mHE7Evxt7hytSF";
135
+ break;
136
+ }
137
+ const priceOracle = new web3_js_1.PublicKey(argv.priceOracle);
138
+ const priceOracleAcc = yield program.account.priceOracleV0.fetch(priceOracle);
139
+ const oracleIndex = priceOracleAcc.oracles.findIndex((x) => x.authority.equals(provider.wallet.publicKey));
140
+ if (oracleIndex == -1) {
141
+ throw new Error("Couldn't find your wallet as an oracle authority on this price oracle");
142
+ }
143
+ const decimalShiftedPrice = new bn_js_1.BN(price * 10 ** priceOracleAcc.decimals);
144
+ yield program.methods
145
+ .submitPriceV0({
146
+ oracleIndex,
147
+ price: decimalShiftedPrice,
148
+ })
149
+ .accounts({
150
+ priceOracle,
151
+ oracle: provider.wallet.publicKey,
152
+ })
153
+ .rpc({ skipPreflight: true });
154
+ console.log(`Submitted price: ${price}`);
155
+ });
156
+ }
157
+ exports.run = run;
158
+ //# sourceMappingURL=submit-price.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"submit-price.js","sourceRoot":"","sources":["../../src/submit-price.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,+DAAgD;AAChD,0DAA4C;AAC5C,6CAA4C;AAC5C,4CAAoB;AACpB,wDAAgC;AAChC,iCAA2B;AAC3B,kDAA0B;AAE1B,SAAe,gBAAgB,CAAC,MAAc;;QAC5C,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAC9B,sDAAsD,MAAM,EAAE,CAC/D,CAAC;YACF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3B,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC/B;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CACX,mCAAmC,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CAC9D,CAAC;YACF,MAAM,KAAK,CAAC;SACb;IACH,CAAC;CAAA;AAED,SAAe,kBAAkB,CAAC,KAAa;;QAC7C,IAAI;YACF,MAAM,QAAQ,GAAG,MAAM,eAAK,CAAC,GAAG,CAC9B,qDAAqD,KAAK,oBAAoB,CAC/E,CAAC;YACF,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;YAC3B,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;SACvC;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,CAAC,KAAK,CAAC,4BAA4B,KAAK,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACrE,MAAM,KAAK,CAAC;SACb;IACH,CAAC;CAAA;AAED,SAAsB,GAAG,CAAC,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,uBAAuB;gBACjC,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,KAAK,EAAE;gBACL,KAAK,EAAE,GAAG;gBACV,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,4DAA4D;aACvE;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,GAAG;gBACV,QAAQ,EACN,kIAAkI;aACrI;YACD,eAAe,EAAE;gBACf,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;gBACf,QAAQ,EACN,uHAAuH;gBACzH,OAAO,EAAE,IAAI;aACd;YACD,iBAAiB,EAAE;gBACjB,IAAI,EAAE,QAAQ;gBACd,QAAQ,EAAE,KAAK;gBACf,QAAQ,EACN,qHAAqH;gBACvH,OAAO,EAAE,IAAI;aACd;SACF,CAAC,CAAC;QAEH,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;QAE1D,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAA2B,CAAC;QAC/D,MAAM,OAAO,GAAG,MAAM,IAAA,uBAAI,EAAC,QAAQ,CAAC,CAAC;QAErC,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACnE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK;YACtB,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,IAAI,CAAC,iBAAiB;gBACxB,CAAC,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC;gBAClD,CAAC,CAAC,IAAI,CAAC,eAAe;oBACtB,CAAC,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC;oBAC9C,CAAC,CAAC,IAAI,CAAC;QAET,QAAQ,IAAI,CAAC,WAAW,EAAE;YACxB,KAAK,KAAK;gBACR,IAAI,CAAC,WAAW,GAAG,6CAA6C,CAAC;gBACjE,MAAM;YACR,KAAK,KAAK;gBACR,IAAI,CAAC,WAAW,GAAG,6CAA6C,CAAC;gBACjE,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,WAAW,GAAG,6CAA6C,CAAC;gBACjE,MAAM;SACT;QAED,MAAM,WAAW,GAAG,IAAI,mBAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpD,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAC9E,MAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CACzD,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAC9C,CAAC;QACF,IAAI,WAAW,IAAI,CAAC,CAAC,EAAE;YACrB,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;SACH;QAED,MAAM,mBAAmB,GAAG,IAAI,UAAE,CAAC,KAAK,GAAG,EAAE,IAAI,cAAc,CAAC,QAAQ,CAAC,CAAC;QAE1E,MAAM,OAAO,CAAC,OAAO;aAClB,aAAa,CAAC;YACb,WAAW;YACX,KAAK,EAAE,mBAAmB;SAC3B,CAAC;aACD,QAAQ,CAAC;YACR,WAAW;YACX,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;SAClC,CAAC;aACD,GAAG,CAAC,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAEhC,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,EAAE,CAAC,CAAC;IAC3C,CAAC;CAAA;AAlGD,kBAkGC"}