@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,384 @@
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 circuit_breaker_sdk_1 = require("@helium/circuit-breaker-sdk");
41
+ const data_credits_sdk_1 = require("@helium/data-credits-sdk");
42
+ const fanout_sdk_1 = require("@helium/fanout-sdk");
43
+ const helium_sub_daos_sdk_1 = require("@helium/helium-sub-daos-sdk");
44
+ const spl_utils_1 = require("@helium/spl-utils");
45
+ const voter_stake_registry_sdk_1 = require("@helium/voter-stake-registry-sdk");
46
+ const spl_governance_1 = require("@solana/spl-governance");
47
+ const spl_token_1 = require("@solana/spl-token");
48
+ const web3_js_1 = require("@solana/web3.js");
49
+ const sdk_1 = __importDefault(require("@sqds/sdk"));
50
+ const os_1 = __importDefault(require("os"));
51
+ const yargs_1 = __importDefault(require("yargs/yargs"));
52
+ const utils_1 = require("./utils");
53
+ const { hideBin } = require("yargs/helpers");
54
+ const HNT_EPOCH_REWARDS = 10000000000;
55
+ const SECS_PER_DAY = 86400;
56
+ const SECS_PER_YEAR = 365 * SECS_PER_DAY;
57
+ const MAX_LOCKUP = 4 * SECS_PER_YEAR;
58
+ const BASELINE = 0;
59
+ const SCALE = 100;
60
+ const GENESIS_MULTIPLIER = 3;
61
+ function exists(connection, account) {
62
+ return __awaiter(this, void 0, void 0, function* () {
63
+ return Boolean(yield connection.getAccountInfo(account));
64
+ });
65
+ }
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
+ hntKeypair: {
80
+ type: "string",
81
+ describe: "Keypair of the HNT token",
82
+ default: `${__dirname}/../keypairs/hnt.json`,
83
+ },
84
+ dcKeypair: {
85
+ type: "string",
86
+ describe: "Keypair of the Data Credit token",
87
+ default: `${__dirname}/../keypairs/dc.json`,
88
+ },
89
+ numHnt: {
90
+ type: "number",
91
+ describe: "Number of HNT tokens to pre mint before assigning authority to lazy distributor",
92
+ default: 0,
93
+ },
94
+ numDc: {
95
+ type: "number",
96
+ describe: "Number of DC tokens to pre mint before assigning authority to lazy distributor",
97
+ default: 1000,
98
+ },
99
+ bucket: {
100
+ type: "string",
101
+ describe: "Bucket URL prefix holding all of the metadata jsons",
102
+ default: "https://shdw-drive.genesysgo.net/CsDkETHRRR1EcueeN346MJoqzymkkr7RFjMqGpZMzAib",
103
+ },
104
+ emissionSchedulePath: {
105
+ required: true,
106
+ describe: "Path to file that contains the hnt emissions schedule",
107
+ type: "string",
108
+ default: `${__dirname}/../emissions/hnt.json`,
109
+ },
110
+ hstEmissionSchedulePath: {
111
+ required: true,
112
+ describe: "Path to file that contains the hst emissions schedule",
113
+ type: "string",
114
+ default: `${__dirname}/../emissions/hst.json`,
115
+ },
116
+ govProgramId: {
117
+ type: "string",
118
+ describe: "Pubkey of the GOV program",
119
+ default: "hgovkRU6Ghe1Qoyb54HdSLdqN7VtxaifBzRmh9jtd3S",
120
+ },
121
+ realmName: {
122
+ type: "string",
123
+ describe: "Name of the realm to be generated",
124
+ default: "Helium",
125
+ },
126
+ councilKeypair: {
127
+ type: "string",
128
+ describe: "Keypair of gov council token",
129
+ default: `${__dirname}/../keypairs/council.json`,
130
+ },
131
+ councilWallet: {
132
+ type: "string",
133
+ describe: "Pubkey for holding/distributing council tokens",
134
+ default: yield (0, utils_1.loadKeypair)(`${os_1.default.homedir()}/.config/solana/id.json`).publicKey.toBase58(),
135
+ },
136
+ numCouncil: {
137
+ type: "number",
138
+ describe: "Number of Gov Council tokens to pre mint before assigning authority to dao",
139
+ default: 10,
140
+ },
141
+ multisig: {
142
+ type: "string",
143
+ describe: "Address of the squads multisig to control the dao. If not provided, your wallet will be the authority",
144
+ },
145
+ authorityIndex: {
146
+ type: "number",
147
+ describe: "Authority index for squads. Defaults to 1",
148
+ default: 1,
149
+ },
150
+ pythHntPriceFeed: {
151
+ type: "string",
152
+ default: "7moA1i5vQUpfDwSpK6Pw9s56ahB7WFGidtbL2ujWrVvm",
153
+ },
154
+ hstKeypair: {
155
+ type: "string",
156
+ describe: "Keypair of the HST token",
157
+ default: `${__dirname}/../keypairs/hst.json`,
158
+ },
159
+ numHst: {
160
+ type: "number",
161
+ describe: "Number of HST tokens to pre mint before assigning authority to lazy distributor",
162
+ default: 0,
163
+ },
164
+ });
165
+ const argv = yield yarg.argv;
166
+ process.env.ANCHOR_WALLET = argv.wallet;
167
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
168
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
169
+ const provider = anchor.getProvider();
170
+ const dataCreditsProgram = yield (0, data_credits_sdk_1.init)(provider);
171
+ const heliumSubDaosProgram = yield (0, helium_sub_daos_sdk_1.init)(provider);
172
+ const heliumVsrProgram = yield (0, voter_stake_registry_sdk_1.init)(provider);
173
+ const govProgramId = new web3_js_1.PublicKey(argv.govProgramId);
174
+ const councilKeypair = yield (0, utils_1.loadKeypair)(argv.councilKeypair);
175
+ const councilWallet = new web3_js_1.PublicKey(argv.councilWallet);
176
+ const hntKeypair = (0, utils_1.loadKeypair)(argv.hntKeypair);
177
+ const dcKeypair = (0, utils_1.loadKeypair)(argv.dcKeypair);
178
+ const hstKeypair = (0, utils_1.loadKeypair)(argv.hstKeypair);
179
+ const me = provider.wallet.publicKey;
180
+ const dao = (0, helium_sub_daos_sdk_1.daoKey)(hntKeypair.publicKey)[0];
181
+ console.log("HNT", hntKeypair.publicKey.toBase58());
182
+ console.log("DC", dcKeypair.publicKey.toBase58());
183
+ console.log("GOV PID", govProgramId.toBase58());
184
+ console.log("COUNCIL", councilKeypair.publicKey.toBase58());
185
+ console.log("COUNCIL WALLET", councilWallet.toBase58());
186
+ const thread = (0, helium_sub_daos_sdk_1.threadKey)(dao, "issue_hst")[0];
187
+ console.log("DAO", dao.toString());
188
+ console.log("THREAD", thread.toString());
189
+ const conn = provider.connection;
190
+ const squads = sdk_1.default.endpoint(process.env.ANCHOR_PROVIDER_URL, provider.wallet);
191
+ let authority = provider.wallet.publicKey;
192
+ let multisig = argv.multisig ? new web3_js_1.PublicKey(argv.multisig) : null;
193
+ if (multisig) {
194
+ authority = squads.getAuthorityPDA(multisig, argv.authorityIndex);
195
+ }
196
+ yield (0, utils_1.createAndMint)({
197
+ provider,
198
+ mintKeypair: hntKeypair,
199
+ amount: argv.numHnt,
200
+ metadataUrl: `${argv.bucket}/hnt.json`,
201
+ });
202
+ yield (0, utils_1.createAndMint)({
203
+ provider,
204
+ mintKeypair: dcKeypair,
205
+ amount: argv.numDc,
206
+ decimals: 0,
207
+ metadataUrl: `${argv.bucket}/dc.json`,
208
+ });
209
+ yield (0, utils_1.createAndMint)({
210
+ provider,
211
+ mintKeypair: councilKeypair,
212
+ amount: argv.numCouncil,
213
+ decimals: 0,
214
+ metadataUrl: `${argv.bucket}/council.json`,
215
+ to: councilWallet,
216
+ });
217
+ yield (0, utils_1.createAndMint)({
218
+ provider,
219
+ mintKeypair: hstKeypair,
220
+ amount: argv.numHst,
221
+ metadataUrl: `${argv.bucket}/hst.json`,
222
+ });
223
+ let instructions = [];
224
+ const govProgramVersion = yield (0, spl_governance_1.getGovernanceProgramVersion)(conn, govProgramId, (0, utils_1.isLocalhost)(provider) ? "localnet" : undefined);
225
+ const realmName = argv.realmName;
226
+ const realm = yield web3_js_1.PublicKey.findProgramAddressSync([Buffer.from("governance", "utf-8"), Buffer.from(realmName, "utf-8")], govProgramId)[0];
227
+ console.log("Realm, ", realm.toBase58());
228
+ if (!(yield exists(conn, realm))) {
229
+ console.log("Initializing Realm");
230
+ yield (0, spl_governance_1.withCreateRealm)(instructions, govProgramId, govProgramVersion, realmName, provider.wallet.publicKey, // realmAuthorityPk
231
+ hntKeypair.publicKey, // communityMintPk
232
+ provider.wallet.publicKey, // payer
233
+ councilKeypair.publicKey, // councilMintPk
234
+ spl_governance_1.MintMaxVoteWeightSource.FULL_SUPPLY_FRACTION, new anchor.BN(100000000000000), // TODO: 1mm vehnt to create governance
235
+ new spl_governance_1.GoverningTokenConfigAccountArgs({
236
+ // community token config
237
+ voterWeightAddin: heliumVsrProgram.programId,
238
+ maxVoterWeightAddin: heliumVsrProgram.programId,
239
+ tokenType: spl_governance_1.GoverningTokenType.Liquid,
240
+ }), new spl_governance_1.GoverningTokenConfigAccountArgs({
241
+ // council token config
242
+ voterWeightAddin: undefined,
243
+ maxVoterWeightAddin: undefined,
244
+ tokenType: spl_governance_1.GoverningTokenType.Liquid,
245
+ }));
246
+ yield (0, spl_utils_1.sendInstructions)(provider, instructions, []);
247
+ instructions = [];
248
+ }
249
+ const registrar = (yield (0, voter_stake_registry_sdk_1.registrarKey)(realm, hntKeypair.publicKey))[0];
250
+ if (!(yield exists(conn, registrar))) {
251
+ console.log("Initializing VSR Registrar");
252
+ instructions.push(yield heliumVsrProgram.methods
253
+ .initializeRegistrarV0({
254
+ positionUpdateAuthority: (yield (0, helium_sub_daos_sdk_1.daoKey)(hntKeypair.publicKey))[0],
255
+ })
256
+ .preInstructions([
257
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 500000 }),
258
+ ])
259
+ .accounts({
260
+ realm,
261
+ realmGoverningTokenMint: hntKeypair.publicKey,
262
+ })
263
+ .instruction());
264
+ yield (0, spl_utils_1.sendInstructions)(provider, instructions, []);
265
+ instructions = [];
266
+ }
267
+ console.log("Configuring VSR voting mint at [0]");
268
+ instructions.push(yield heliumVsrProgram.methods
269
+ .configureVotingMintV0({
270
+ idx: 0,
271
+ digitShift: 0,
272
+ baselineVoteWeightScaledFactor: new anchor.BN(BASELINE * 1e9),
273
+ maxExtraLockupVoteWeightScaledFactor: new anchor.BN(SCALE * 1e9),
274
+ genesisVotePowerMultiplier: GENESIS_MULTIPLIER,
275
+ genesisVotePowerMultiplierExpirationTs: new anchor.BN(Number(yield (0, utils_1.getUnixTimestamp)(provider)) + (0, utils_1.getTimestampFromDays)(7)),
276
+ lockupSaturationSecs: new anchor.BN(MAX_LOCKUP),
277
+ })
278
+ .accounts({
279
+ registrar,
280
+ mint: hntKeypair.publicKey,
281
+ })
282
+ .remainingAccounts([
283
+ {
284
+ pubkey: hntKeypair.publicKey,
285
+ isSigner: false,
286
+ isWritable: false,
287
+ },
288
+ ])
289
+ .instruction());
290
+ yield (0, spl_utils_1.sendInstructions)(provider, instructions, []);
291
+ instructions = [];
292
+ console.log("Creating max voter record");
293
+ instructions.push(yield heliumVsrProgram.methods
294
+ .updateMaxVoterWeightV0()
295
+ .accounts({
296
+ registrar,
297
+ realmGoverningTokenMint: hntKeypair.publicKey,
298
+ })
299
+ .instruction());
300
+ console.log(registrar.toString());
301
+ yield (0, spl_utils_1.sendInstructions)(provider, instructions, []);
302
+ instructions = [];
303
+ if (!authority.equals(me)) {
304
+ (0, spl_governance_1.withSetRealmAuthority)(instructions, govProgramId, govProgramVersion, realm, provider.wallet.publicKey, authority, spl_governance_1.SetRealmAuthorityAction.SetChecked);
305
+ }
306
+ yield (0, spl_utils_1.sendInstructions)(provider, instructions, []);
307
+ instructions = [];
308
+ const dcKey = (yield (0, data_credits_sdk_1.dataCreditsKey)(dcKeypair.publicKey))[0];
309
+ console.log("dcpid", data_credits_sdk_1.PROGRAM_ID.toBase58());
310
+ if (!(yield exists(conn, dcKey))) {
311
+ yield dataCreditsProgram.methods
312
+ .initializeDataCreditsV0({
313
+ authority,
314
+ config: {
315
+ windowSizeSeconds: new anchor.BN(60 * 60),
316
+ thresholdType: circuit_breaker_sdk_1.ThresholdType.Absolute,
317
+ threshold: new anchor.BN("1000000000000"),
318
+ },
319
+ })
320
+ .accounts({
321
+ hntMint: hntKeypair.publicKey,
322
+ dcMint: dcKeypair.publicKey,
323
+ hntPriceOracle: new web3_js_1.PublicKey(argv.pythHntPriceFeed),
324
+ })
325
+ .rpc({ skipPreflight: true });
326
+ let tx = new web3_js_1.Transaction();
327
+ tx.add(web3_js_1.SystemProgram.transfer({
328
+ fromPubkey: provider.wallet.publicKey,
329
+ toPubkey: (0, data_credits_sdk_1.accountPayerKey)()[0],
330
+ lamports: 5 * web3_js_1.LAMPORTS_PER_SOL,
331
+ }));
332
+ tx.recentBlockhash = (yield provider.connection.getLatestBlockhash()).blockhash;
333
+ tx.feePayer = provider.wallet.publicKey;
334
+ }
335
+ if (!(yield exists(conn, dao))) {
336
+ console.log("Initializing DAO");
337
+ const hstEmission = yield (0, utils_1.parseEmissionsSchedule)(argv.hstEmissionSchedulePath);
338
+ const hntEmission = yield (0, utils_1.parseEmissionsSchedule)(argv.emissionSchedulePath);
339
+ const currentHstEmission = hstEmission[0];
340
+ const currentHntEmission = hntEmission[0];
341
+ yield heliumSubDaosProgram.methods
342
+ .initializeDaoV0({
343
+ registrar: registrar,
344
+ authority,
345
+ netEmissionsCap: (0, spl_utils_1.toBN)(34.24, 8),
346
+ // Tx too large to do in initialize dao, so do it with update
347
+ hstEmissionSchedule: [currentHstEmission],
348
+ emissionSchedule: [currentHntEmission],
349
+ })
350
+ .accounts({
351
+ dcMint: dcKeypair.publicKey,
352
+ hntMint: hntKeypair.publicKey,
353
+ thread,
354
+ // TODO: Create actual HST pool
355
+ hstPool: (0, spl_token_1.getAssociatedTokenAddressSync)(hntKeypair.publicKey, (0, fanout_sdk_1.fanoutKey)("HST")[0], true),
356
+ })
357
+ .rpc({ skipPreflight: true });
358
+ yield (0, utils_1.sendInstructionsOrSquads)({
359
+ provider,
360
+ instructions: [
361
+ yield heliumSubDaosProgram.methods
362
+ .updateDaoV0({
363
+ authority,
364
+ emissionSchedule: hntEmission,
365
+ hstEmissionSchedule: hstEmission,
366
+ hstPool: null
367
+ })
368
+ .accounts({
369
+ dao,
370
+ authority: authority,
371
+ })
372
+ .instruction(),
373
+ ],
374
+ executeTransaction: true,
375
+ squads,
376
+ multisig: argv.multisig ? new web3_js_1.PublicKey(argv.multisig) : undefined,
377
+ authorityIndex: argv.authorityIndex,
378
+ signers: [],
379
+ });
380
+ }
381
+ });
382
+ }
383
+ exports.run = run;
384
+ //# sourceMappingURL=create-dao.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-dao.js","sourceRoot":"","sources":["../../src/create-dao.ts"],"names":[],"mappings":"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"}