@helium/helium-admin-cli 0.2.22-next.33 → 0.2.22-next.35

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 (290) hide show
  1. package/lib/cjs/approve-carrier.js +120 -0
  2. package/lib/cjs/approve-carrier.js.map +1 -0
  3. package/lib/cjs/approve-program.js +122 -0
  4. package/lib/cjs/approve-program.js.map +1 -0
  5. package/lib/cjs/claim-rewards.js +109 -0
  6. package/lib/cjs/claim-rewards.js.map +1 -0
  7. package/lib/cjs/close-buffers.js +132 -0
  8. package/lib/cjs/close-buffers.js.map +1 -0
  9. package/lib/cjs/close-canopy.js +108 -0
  10. package/lib/cjs/close-canopy.js.map +1 -0
  11. package/lib/cjs/close-lazy-transaction-markers.js +108 -0
  12. package/lib/cjs/close-lazy-transaction-markers.js.map +1 -0
  13. package/lib/cjs/correct-router-dc.js +149 -0
  14. package/lib/cjs/correct-router-dc.js.map +1 -0
  15. package/lib/cjs/create-active-device-aggregator.js +112 -0
  16. package/lib/cjs/create-active-device-aggregator.js.map +1 -0
  17. package/lib/cjs/create-carrier.js +202 -0
  18. package/lib/cjs/create-carrier.js.map +1 -0
  19. package/lib/cjs/create-dao.js +458 -0
  20. package/lib/cjs/create-dao.js.map +1 -0
  21. package/lib/cjs/create-data-only-config.js +175 -0
  22. package/lib/cjs/create-data-only-config.js.map +1 -0
  23. package/lib/cjs/create-maker.js +323 -0
  24. package/lib/cjs/create-maker.js.map +1 -0
  25. package/lib/cjs/create-price-oracle.js +133 -0
  26. package/lib/cjs/create-price-oracle.js.map +1 -0
  27. package/lib/cjs/create-subdao.js +531 -0
  28. package/lib/cjs/create-subdao.js.map +1 -0
  29. package/lib/cjs/distribute-hst.js +94 -0
  30. package/lib/cjs/distribute-hst.js.map +1 -0
  31. package/lib/cjs/distribute-iot-operations-fund.js +120 -0
  32. package/lib/cjs/distribute-iot-operations-fund.js.map +1 -0
  33. package/lib/cjs/ecc-gen.js +17 -0
  34. package/lib/cjs/ecc-gen.js.map +1 -0
  35. package/lib/cjs/end-epoch.js +144 -0
  36. package/lib/cjs/end-epoch.js.map +1 -0
  37. package/lib/cjs/issue-iot-operations-fund.js +123 -0
  38. package/lib/cjs/issue-iot-operations-fund.js.map +1 -0
  39. package/lib/cjs/issue-test-hotspot.js +111 -0
  40. package/lib/cjs/issue-test-hotspot.js.map +1 -0
  41. package/lib/cjs/log-coingecko-price.js +32 -0
  42. package/lib/cjs/log-coingecko-price.js.map +1 -0
  43. package/lib/cjs/log-hotspot.js +103 -0
  44. package/lib/cjs/log-hotspot.js.map +1 -0
  45. package/lib/cjs/log-router-balance.js +89 -0
  46. package/lib/cjs/log-router-balance.js.map +1 -0
  47. package/lib/cjs/log-treasury-price.js +105 -0
  48. package/lib/cjs/log-treasury-price.js.map +1 -0
  49. package/lib/cjs/mint-dc.js +111 -0
  50. package/lib/cjs/mint-dc.js.map +1 -0
  51. package/lib/cjs/repair-iot-operations-fund.js +114 -0
  52. package/lib/cjs/repair-iot-operations-fund.js.map +1 -0
  53. package/lib/cjs/reset-clockwork.js +144 -0
  54. package/lib/cjs/reset-clockwork.js.map +1 -0
  55. package/lib/cjs/reset-vsr-max-voter-record.js +145 -0
  56. package/lib/cjs/reset-vsr-max-voter-record.js.map +1 -0
  57. package/lib/cjs/reset-vsr-voting-mint.js +182 -0
  58. package/lib/cjs/reset-vsr-voting-mint.js.map +1 -0
  59. package/lib/cjs/setup-hst.js +261 -0
  60. package/lib/cjs/setup-hst.js.map +1 -0
  61. package/lib/cjs/submit-price.js +159 -0
  62. package/lib/cjs/submit-price.js.map +1 -0
  63. package/lib/cjs/sum-tokens.js +84 -0
  64. package/lib/cjs/sum-tokens.js.map +1 -0
  65. package/lib/cjs/take-snapshot.js +70 -0
  66. package/lib/cjs/take-snapshot.js.map +1 -0
  67. package/lib/cjs/update-account-circuit-breaker.js +132 -0
  68. package/lib/cjs/update-account-circuit-breaker.js.map +1 -0
  69. package/lib/cjs/update-aggregator.js +116 -0
  70. package/lib/cjs/update-aggregator.js.map +1 -0
  71. package/lib/cjs/update-dao.js +169 -0
  72. package/lib/cjs/update-dao.js.map +1 -0
  73. package/lib/cjs/update-data-credits.js +128 -0
  74. package/lib/cjs/update-data-credits.js.map +1 -0
  75. package/lib/cjs/update-delegated-dc-subdao.js +136 -0
  76. package/lib/cjs/update-delegated-dc-subdao.js.map +1 -0
  77. package/lib/cjs/update-iot-operations-fund-metadata.js +124 -0
  78. package/lib/cjs/update-iot-operations-fund-metadata.js.map +1 -0
  79. package/lib/cjs/update-lazy-distributor.js +138 -0
  80. package/lib/cjs/update-lazy-distributor.js.map +1 -0
  81. package/lib/cjs/update-lazy-transactions.js +117 -0
  82. package/lib/cjs/update-lazy-transactions.js.map +1 -0
  83. package/lib/cjs/update-mint-circuit-breaker.js +132 -0
  84. package/lib/cjs/update-mint-circuit-breaker.js.map +1 -0
  85. package/lib/cjs/update-registrar-authorities.js +96 -0
  86. package/lib/cjs/update-registrar-authorities.js.map +1 -0
  87. package/lib/cjs/update-rewardable-entity-config.js +155 -0
  88. package/lib/cjs/update-rewardable-entity-config.js.map +1 -0
  89. package/lib/cjs/update-subdao-vehnt.js +295 -0
  90. package/lib/cjs/update-subdao-vehnt.js.map +1 -0
  91. package/lib/cjs/update-subdao.js +261 -0
  92. package/lib/cjs/update-subdao.js.map +1 -0
  93. package/lib/cjs/upgrade-idl.js +109 -0
  94. package/lib/cjs/upgrade-idl.js.map +1 -0
  95. package/lib/cjs/utils.js +457 -0
  96. package/lib/cjs/utils.js.map +1 -0
  97. package/lib/esm/src/approve-carrier.js +79 -0
  98. package/lib/esm/src/approve-carrier.js.map +1 -0
  99. package/lib/esm/src/approve-program.js +81 -0
  100. package/lib/esm/src/approve-program.js.map +1 -0
  101. package/lib/esm/src/claim-rewards.js +68 -0
  102. package/lib/esm/src/claim-rewards.js.map +1 -0
  103. package/lib/esm/src/close-buffers.js +91 -0
  104. package/lib/esm/src/close-buffers.js.map +1 -0
  105. package/lib/esm/src/close-canopy.js +67 -0
  106. package/lib/esm/src/close-canopy.js.map +1 -0
  107. package/lib/esm/src/close-lazy-transaction-markers.js +67 -0
  108. package/lib/esm/src/close-lazy-transaction-markers.js.map +1 -0
  109. package/lib/esm/src/correct-router-dc.js +108 -0
  110. package/lib/esm/src/correct-router-dc.js.map +1 -0
  111. package/lib/esm/src/create-active-device-aggregator.js +71 -0
  112. package/lib/esm/src/create-active-device-aggregator.js.map +1 -0
  113. package/lib/esm/src/create-carrier.js +161 -0
  114. package/lib/esm/src/create-carrier.js.map +1 -0
  115. package/lib/esm/src/create-dao.js +415 -0
  116. package/lib/esm/src/create-dao.js.map +1 -0
  117. package/lib/esm/src/create-data-only-config.js +132 -0
  118. package/lib/esm/src/create-data-only-config.js.map +1 -0
  119. package/lib/esm/src/create-maker.js +282 -0
  120. package/lib/esm/src/create-maker.js.map +1 -0
  121. package/lib/esm/src/create-price-oracle.js +92 -0
  122. package/lib/esm/src/create-price-oracle.js.map +1 -0
  123. package/lib/esm/src/create-subdao.js +490 -0
  124. package/lib/esm/src/create-subdao.js.map +1 -0
  125. package/lib/esm/src/distribute-hst.js +53 -0
  126. package/lib/esm/src/distribute-hst.js.map +1 -0
  127. package/lib/esm/src/distribute-iot-operations-fund.js +79 -0
  128. package/lib/esm/src/distribute-iot-operations-fund.js.map +1 -0
  129. package/lib/esm/src/ecc-gen.js +6 -0
  130. package/lib/esm/src/ecc-gen.js.map +1 -0
  131. package/lib/esm/src/end-epoch.js +103 -0
  132. package/lib/esm/src/end-epoch.js.map +1 -0
  133. package/lib/esm/src/issue-iot-operations-fund.js +82 -0
  134. package/lib/esm/src/issue-iot-operations-fund.js.map +1 -0
  135. package/lib/esm/src/issue-test-hotspot.js +70 -0
  136. package/lib/esm/src/issue-test-hotspot.js.map +1 -0
  137. package/lib/esm/src/log-coingecko-price.js +14 -0
  138. package/lib/esm/src/log-coingecko-price.js.map +1 -0
  139. package/lib/esm/src/log-hotspot.js +62 -0
  140. package/lib/esm/src/log-hotspot.js.map +1 -0
  141. package/lib/esm/src/log-router-balance.js +48 -0
  142. package/lib/esm/src/log-router-balance.js.map +1 -0
  143. package/lib/esm/src/log-treasury-price.js +64 -0
  144. package/lib/esm/src/log-treasury-price.js.map +1 -0
  145. package/lib/esm/src/mint-dc.js +70 -0
  146. package/lib/esm/src/mint-dc.js.map +1 -0
  147. package/lib/esm/src/repair-iot-operations-fund.js +73 -0
  148. package/lib/esm/src/repair-iot-operations-fund.js.map +1 -0
  149. package/lib/esm/src/reset-clockwork.js +103 -0
  150. package/lib/esm/src/reset-clockwork.js.map +1 -0
  151. package/lib/esm/src/reset-vsr-max-voter-record.js +104 -0
  152. package/lib/esm/src/reset-vsr-max-voter-record.js.map +1 -0
  153. package/lib/esm/src/reset-vsr-voting-mint.js +141 -0
  154. package/lib/esm/src/reset-vsr-voting-mint.js.map +1 -0
  155. package/lib/esm/src/setup-hst.js +218 -0
  156. package/lib/esm/src/setup-hst.js.map +1 -0
  157. package/lib/esm/src/submit-price.js +113 -0
  158. package/lib/esm/src/submit-price.js.map +1 -0
  159. package/lib/esm/src/sum-tokens.js +43 -0
  160. package/lib/esm/src/sum-tokens.js.map +1 -0
  161. package/lib/esm/src/take-snapshot.js +29 -0
  162. package/lib/esm/src/take-snapshot.js.map +1 -0
  163. package/lib/esm/src/update-account-circuit-breaker.js +91 -0
  164. package/lib/esm/src/update-account-circuit-breaker.js.map +1 -0
  165. package/lib/esm/src/update-aggregator.js +75 -0
  166. package/lib/esm/src/update-aggregator.js.map +1 -0
  167. package/lib/esm/src/update-dao.js +128 -0
  168. package/lib/esm/src/update-dao.js.map +1 -0
  169. package/lib/esm/src/update-data-credits.js +87 -0
  170. package/lib/esm/src/update-data-credits.js.map +1 -0
  171. package/lib/esm/src/update-delegated-dc-subdao.js +95 -0
  172. package/lib/esm/src/update-delegated-dc-subdao.js.map +1 -0
  173. package/lib/esm/src/update-iot-operations-fund-metadata.js +83 -0
  174. package/lib/esm/src/update-iot-operations-fund-metadata.js.map +1 -0
  175. package/lib/esm/src/update-lazy-distributor.js +97 -0
  176. package/lib/esm/src/update-lazy-distributor.js.map +1 -0
  177. package/lib/esm/src/update-lazy-transactions.js +76 -0
  178. package/lib/esm/src/update-lazy-transactions.js.map +1 -0
  179. package/lib/esm/src/update-mint-circuit-breaker.js +91 -0
  180. package/lib/esm/src/update-mint-circuit-breaker.js.map +1 -0
  181. package/lib/esm/src/update-registrar-authorities.js +55 -0
  182. package/lib/esm/src/update-registrar-authorities.js.map +1 -0
  183. package/lib/esm/src/update-rewardable-entity-config.js +114 -0
  184. package/lib/esm/src/update-rewardable-entity-config.js.map +1 -0
  185. package/lib/esm/src/update-subdao-vehnt.js +254 -0
  186. package/lib/esm/src/update-subdao-vehnt.js.map +1 -0
  187. package/lib/esm/src/update-subdao.js +220 -0
  188. package/lib/esm/src/update-subdao.js.map +1 -0
  189. package/lib/esm/src/upgrade-idl.js +68 -0
  190. package/lib/esm/src/upgrade-idl.js.map +1 -0
  191. package/lib/esm/src/utils.js +392 -0
  192. package/lib/esm/src/utils.js.map +1 -0
  193. package/lib/esm/tsconfig.esm.tsbuildinfo +1 -0
  194. package/lib/types/src/approve-carrier.d.ts +2 -0
  195. package/lib/types/src/approve-carrier.d.ts.map +1 -0
  196. package/lib/types/src/approve-program.d.ts +2 -0
  197. package/lib/types/src/approve-program.d.ts.map +1 -0
  198. package/lib/types/src/claim-rewards.d.ts +2 -0
  199. package/lib/types/src/claim-rewards.d.ts.map +1 -0
  200. package/lib/types/src/close-buffers.d.ts +2 -0
  201. package/lib/types/src/close-buffers.d.ts.map +1 -0
  202. package/lib/types/src/close-canopy.d.ts +2 -0
  203. package/lib/types/src/close-canopy.d.ts.map +1 -0
  204. package/lib/types/src/close-lazy-transaction-markers.d.ts +2 -0
  205. package/lib/types/src/close-lazy-transaction-markers.d.ts.map +1 -0
  206. package/lib/types/src/correct-router-dc.d.ts +2 -0
  207. package/lib/types/src/correct-router-dc.d.ts.map +1 -0
  208. package/lib/types/src/create-active-device-aggregator.d.ts +2 -0
  209. package/lib/types/src/create-active-device-aggregator.d.ts.map +1 -0
  210. package/lib/types/src/create-carrier.d.ts +2 -0
  211. package/lib/types/src/create-carrier.d.ts.map +1 -0
  212. package/lib/types/src/create-dao.d.ts +2 -0
  213. package/lib/types/src/create-dao.d.ts.map +1 -0
  214. package/lib/types/src/create-data-only-config.d.ts +2 -0
  215. package/lib/types/src/create-data-only-config.d.ts.map +1 -0
  216. package/lib/types/src/create-maker.d.ts +2 -0
  217. package/lib/types/src/create-maker.d.ts.map +1 -0
  218. package/lib/types/src/create-price-oracle.d.ts +2 -0
  219. package/lib/types/src/create-price-oracle.d.ts.map +1 -0
  220. package/lib/types/src/create-subdao.d.ts +2 -0
  221. package/lib/types/src/create-subdao.d.ts.map +1 -0
  222. package/lib/types/src/distribute-hst.d.ts +2 -0
  223. package/lib/types/src/distribute-hst.d.ts.map +1 -0
  224. package/lib/types/src/distribute-iot-operations-fund.d.ts +2 -0
  225. package/lib/types/src/distribute-iot-operations-fund.d.ts.map +1 -0
  226. package/lib/types/src/ecc-gen.d.ts +2 -0
  227. package/lib/types/src/ecc-gen.d.ts.map +1 -0
  228. package/lib/types/src/end-epoch.d.ts +2 -0
  229. package/lib/types/src/end-epoch.d.ts.map +1 -0
  230. package/lib/types/src/issue-iot-operations-fund.d.ts +2 -0
  231. package/lib/types/src/issue-iot-operations-fund.d.ts.map +1 -0
  232. package/lib/types/src/issue-test-hotspot.d.ts +2 -0
  233. package/lib/types/src/issue-test-hotspot.d.ts.map +1 -0
  234. package/lib/types/src/log-coingecko-price.d.ts +2 -0
  235. package/lib/types/src/log-coingecko-price.d.ts.map +1 -0
  236. package/lib/types/src/log-hotspot.d.ts +2 -0
  237. package/lib/types/src/log-hotspot.d.ts.map +1 -0
  238. package/lib/types/src/log-router-balance.d.ts +2 -0
  239. package/lib/types/src/log-router-balance.d.ts.map +1 -0
  240. package/lib/types/src/log-treasury-price.d.ts +2 -0
  241. package/lib/types/src/log-treasury-price.d.ts.map +1 -0
  242. package/lib/types/src/mint-dc.d.ts +2 -0
  243. package/lib/types/src/mint-dc.d.ts.map +1 -0
  244. package/lib/types/src/repair-iot-operations-fund.d.ts +2 -0
  245. package/lib/types/src/repair-iot-operations-fund.d.ts.map +1 -0
  246. package/lib/types/src/reset-clockwork.d.ts +2 -0
  247. package/lib/types/src/reset-clockwork.d.ts.map +1 -0
  248. package/lib/types/src/reset-vsr-max-voter-record.d.ts +2 -0
  249. package/lib/types/src/reset-vsr-max-voter-record.d.ts.map +1 -0
  250. package/lib/types/src/reset-vsr-voting-mint.d.ts +2 -0
  251. package/lib/types/src/reset-vsr-voting-mint.d.ts.map +1 -0
  252. package/lib/types/src/setup-hst.d.ts +4 -0
  253. package/lib/types/src/setup-hst.d.ts.map +1 -0
  254. package/lib/types/src/submit-price.d.ts +3 -0
  255. package/lib/types/src/submit-price.d.ts.map +1 -0
  256. package/lib/types/src/sum-tokens.d.ts +2 -0
  257. package/lib/types/src/sum-tokens.d.ts.map +1 -0
  258. package/lib/types/src/take-snapshot.d.ts +2 -0
  259. package/lib/types/src/take-snapshot.d.ts.map +1 -0
  260. package/lib/types/src/update-account-circuit-breaker.d.ts +2 -0
  261. package/lib/types/src/update-account-circuit-breaker.d.ts.map +1 -0
  262. package/lib/types/src/update-aggregator.d.ts +2 -0
  263. package/lib/types/src/update-aggregator.d.ts.map +1 -0
  264. package/lib/types/src/update-dao.d.ts +2 -0
  265. package/lib/types/src/update-dao.d.ts.map +1 -0
  266. package/lib/types/src/update-data-credits.d.ts +2 -0
  267. package/lib/types/src/update-data-credits.d.ts.map +1 -0
  268. package/lib/types/src/update-delegated-dc-subdao.d.ts +2 -0
  269. package/lib/types/src/update-delegated-dc-subdao.d.ts.map +1 -0
  270. package/lib/types/src/update-iot-operations-fund-metadata.d.ts +2 -0
  271. package/lib/types/src/update-iot-operations-fund-metadata.d.ts.map +1 -0
  272. package/lib/types/src/update-lazy-distributor.d.ts +2 -0
  273. package/lib/types/src/update-lazy-distributor.d.ts.map +1 -0
  274. package/lib/types/src/update-lazy-transactions.d.ts +2 -0
  275. package/lib/types/src/update-lazy-transactions.d.ts.map +1 -0
  276. package/lib/types/src/update-mint-circuit-breaker.d.ts +2 -0
  277. package/lib/types/src/update-mint-circuit-breaker.d.ts.map +1 -0
  278. package/lib/types/src/update-registrar-authorities.d.ts +2 -0
  279. package/lib/types/src/update-registrar-authorities.d.ts.map +1 -0
  280. package/lib/types/src/update-rewardable-entity-config.d.ts +2 -0
  281. package/lib/types/src/update-rewardable-entity-config.d.ts.map +1 -0
  282. package/lib/types/src/update-subdao-vehnt.d.ts +2 -0
  283. package/lib/types/src/update-subdao-vehnt.d.ts.map +1 -0
  284. package/lib/types/src/update-subdao.d.ts +2 -0
  285. package/lib/types/src/update-subdao.d.ts.map +1 -0
  286. package/lib/types/src/upgrade-idl.d.ts +2 -0
  287. package/lib/types/src/upgrade-idl.d.ts.map +1 -0
  288. package/lib/types/src/utils.d.ts +59 -0
  289. package/lib/types/src/utils.d.ts.map +1 -0
  290. package/package.json +13 -13
@@ -0,0 +1,458 @@
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 helium_entity_manager_sdk_1 = require("@helium/helium-entity-manager-sdk");
43
+ const fanout_sdk_1 = require("@helium/fanout-sdk");
44
+ const helium_sub_daos_sdk_1 = require("@helium/helium-sub-daos-sdk");
45
+ const spl_utils_1 = require("@helium/spl-utils");
46
+ const voter_stake_registry_sdk_1 = require("@helium/voter-stake-registry-sdk");
47
+ const spl_governance_1 = require("@solana/spl-governance");
48
+ const spl_token_1 = require("@solana/spl-token");
49
+ const web3_js_1 = require("@solana/web3.js");
50
+ const sdk_1 = __importDefault(require("@sqds/sdk"));
51
+ const os_1 = __importDefault(require("os"));
52
+ const yargs_1 = __importDefault(require("yargs/yargs"));
53
+ const utils_1 = require("./utils");
54
+ const fs_1 = __importDefault(require("fs"));
55
+ const bn_js_1 = require("bn.js");
56
+ const spl_account_compression_1 = require("@solana/spl-account-compression");
57
+ const { hideBin } = require('yargs/helpers');
58
+ const HNT_EPOCH_REWARDS = 10000000000;
59
+ const SECS_PER_DAY = 86400;
60
+ const SECS_PER_YEAR = 365 * SECS_PER_DAY;
61
+ const MAX_LOCKUP = 4 * SECS_PER_YEAR;
62
+ const BASELINE = 0;
63
+ const SCALE = 100;
64
+ const GENESIS_MULTIPLIER = 3;
65
+ function exists(connection, account) {
66
+ return __awaiter(this, void 0, void 0, function* () {
67
+ return Boolean(yield connection.getAccountInfo(account));
68
+ });
69
+ }
70
+ function run(args = process.argv) {
71
+ return __awaiter(this, void 0, void 0, function* () {
72
+ const yarg = (0, yargs_1.default)(args).options({
73
+ wallet: {
74
+ alias: 'k',
75
+ describe: 'Anchor wallet keypair',
76
+ default: `${os_1.default.homedir()}/.config/solana/id.json`,
77
+ },
78
+ url: {
79
+ alias: 'u',
80
+ default: 'http://127.0.0.1:8899',
81
+ describe: 'The solana url',
82
+ },
83
+ hntKeypair: {
84
+ type: 'string',
85
+ describe: 'Keypair of the HNT token',
86
+ default: `${__dirname}/../../keypairs/hnt.json`,
87
+ },
88
+ dcKeypair: {
89
+ type: 'string',
90
+ describe: 'Keypair of the Data Credit token',
91
+ default: `${__dirname}/../../keypairs/dc.json`,
92
+ },
93
+ numHnt: {
94
+ type: 'number',
95
+ describe: 'Number of HNT tokens to pre mint before assigning authority to lazy distributor',
96
+ default: 0,
97
+ },
98
+ numDc: {
99
+ type: 'number',
100
+ describe: 'Number of DC tokens to pre mint before assigning authority to lazy distributor',
101
+ default: 1000,
102
+ },
103
+ bucket: {
104
+ type: 'string',
105
+ describe: 'Bucket URL prefix holding all of the metadata jsons',
106
+ default: 'https://shdw-drive.genesysgo.net/6tcnBSybPG7piEDShBcrVtYJDPSvGrDbVvXmXKpzBvWP',
107
+ },
108
+ emissionSchedulePath: {
109
+ required: true,
110
+ describe: 'Path to file that contains the hnt emissions schedule',
111
+ type: 'string',
112
+ default: `${__dirname}/../../emissions/hnt.json`,
113
+ },
114
+ hstEmissionSchedulePath: {
115
+ required: true,
116
+ describe: 'Path to file that contains the hst emissions schedule',
117
+ type: 'string',
118
+ default: `${__dirname}/../../emissions/hst.json`,
119
+ },
120
+ govProgramId: {
121
+ type: 'string',
122
+ describe: 'Pubkey of the GOV program',
123
+ default: 'hgovkRU6Ghe1Qoyb54HdSLdqN7VtxaifBzRmh9jtd3S',
124
+ },
125
+ realmName: {
126
+ type: 'string',
127
+ describe: 'Name of the realm to be generated',
128
+ default: 'Helium',
129
+ },
130
+ councilKeypair: {
131
+ type: 'string',
132
+ describe: 'Keypair of gov council token',
133
+ default: `${__dirname}/../../keypairs/council.json`,
134
+ },
135
+ councilWallet: {
136
+ type: 'string',
137
+ describe: 'Pubkey for holding/distributing council tokens',
138
+ default: yield (0, utils_1.loadKeypair)(`${os_1.default.homedir()}/.config/solana/id.json`).publicKey.toBase58(),
139
+ },
140
+ numCouncil: {
141
+ type: 'number',
142
+ describe: 'Number of Gov Council tokens to pre mint before assigning authority to dao',
143
+ default: 10,
144
+ },
145
+ multisig: {
146
+ type: 'string',
147
+ describe: 'Address of the squads multisig to control the dao. If not provided, your wallet will be the authority',
148
+ },
149
+ authorityIndex: {
150
+ type: 'number',
151
+ describe: 'Authority index for squads. Defaults to 1',
152
+ default: 1,
153
+ },
154
+ hntPriceOracle: {
155
+ type: 'string',
156
+ required: true,
157
+ },
158
+ numHst: {
159
+ type: 'number',
160
+ describe: 'Number of HST tokens to pre mint before assigning authority to lazy distributor',
161
+ default: 0,
162
+ },
163
+ merklePath: {
164
+ type: 'string',
165
+ describe: 'Path to the merkle keypair',
166
+ default: `${__dirname}/../../keypairs/data-only-merkle.json`,
167
+ },
168
+ });
169
+ const argv = yield yarg.argv;
170
+ process.env.ANCHOR_WALLET = argv.wallet;
171
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
172
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
173
+ const provider = anchor.getProvider();
174
+ const wallet = new anchor.Wallet((0, utils_1.loadKeypair)(argv.wallet));
175
+ const dataCreditsProgram = yield (0, data_credits_sdk_1.init)(provider);
176
+ const heliumSubDaosProgram = yield (0, helium_sub_daos_sdk_1.init)(provider);
177
+ const heliumVsrProgram = yield (0, voter_stake_registry_sdk_1.init)(provider);
178
+ const hemProgram = yield (0, helium_entity_manager_sdk_1.init)(provider);
179
+ const govProgramId = new web3_js_1.PublicKey(argv.govProgramId);
180
+ const councilKeypair = yield (0, utils_1.loadKeypair)(argv.councilKeypair);
181
+ const councilWallet = new web3_js_1.PublicKey(argv.councilWallet);
182
+ const hntKeypair = (0, utils_1.loadKeypair)(argv.hntKeypair);
183
+ const dcKeypair = (0, utils_1.loadKeypair)(argv.dcKeypair);
184
+ const me = provider.wallet.publicKey;
185
+ const dao = (0, helium_sub_daos_sdk_1.daoKey)(hntKeypair.publicKey)[0];
186
+ console.log('HNT', hntKeypair.publicKey.toBase58());
187
+ console.log('DC', dcKeypair.publicKey.toBase58());
188
+ console.log('GOV PID', govProgramId.toBase58());
189
+ console.log('COUNCIL', councilKeypair.publicKey.toBase58());
190
+ console.log('COUNCIL WALLET', councilWallet.toBase58());
191
+ const thread = (0, helium_sub_daos_sdk_1.threadKey)(dao, 'issue_hst')[0];
192
+ console.log('DAO', dao.toString());
193
+ console.log('THREAD', thread.toString());
194
+ const conn = provider.connection;
195
+ const squads = sdk_1.default.endpoint(process.env.ANCHOR_PROVIDER_URL, wallet, {
196
+ commitmentOrConfig: 'finalized',
197
+ });
198
+ let authority = provider.wallet.publicKey;
199
+ let multisig = argv.multisig ? new web3_js_1.PublicKey(argv.multisig) : null;
200
+ if (multisig) {
201
+ authority = squads.getAuthorityPDA(multisig, argv.authorityIndex);
202
+ // Fund authority
203
+ const authAcc = yield provider.connection.getAccountInfo(authority);
204
+ if (!authAcc || authAcc.lamports < web3_js_1.LAMPORTS_PER_SOL) {
205
+ console.log('Funding multisig...');
206
+ yield (0, spl_utils_1.sendInstructions)(provider, [
207
+ yield web3_js_1.SystemProgram.transfer({
208
+ fromPubkey: me,
209
+ toPubkey: authority,
210
+ lamports: web3_js_1.LAMPORTS_PER_SOL,
211
+ }),
212
+ ]);
213
+ }
214
+ }
215
+ yield (0, utils_1.createAndMint)({
216
+ provider,
217
+ mintKeypair: hntKeypair,
218
+ amount: argv.numHnt,
219
+ metadataUrl: `${argv.bucket}/hnt.json`,
220
+ updateAuthority: authority,
221
+ });
222
+ yield (0, utils_1.createAndMint)({
223
+ provider,
224
+ mintKeypair: dcKeypair,
225
+ amount: argv.numDc,
226
+ decimals: 0,
227
+ metadataUrl: `${argv.bucket}/dc.json`,
228
+ updateAuthority: authority,
229
+ });
230
+ yield (0, utils_1.createAndMint)({
231
+ provider,
232
+ mintKeypair: councilKeypair,
233
+ amount: argv.numCouncil,
234
+ decimals: 0,
235
+ metadataUrl: `${argv.bucket}/council.json`,
236
+ to: councilWallet,
237
+ updateAuthority: authority,
238
+ });
239
+ let instructions = [];
240
+ const govProgramVersion = yield (0, spl_governance_1.getGovernanceProgramVersion)(conn, govProgramId, (0, utils_1.isLocalhost)(provider) ? 'localnet' : undefined);
241
+ const realmName = argv.realmName;
242
+ const realm = yield web3_js_1.PublicKey.findProgramAddressSync([Buffer.from('governance', 'utf-8'), Buffer.from(realmName, 'utf-8')], govProgramId)[0];
243
+ console.log('Realm, ', realm.toBase58());
244
+ const needRealmCreate = !(yield exists(conn, realm));
245
+ if (needRealmCreate) {
246
+ console.log('Initializing Realm');
247
+ yield (0, spl_governance_1.withCreateRealm)(instructions, govProgramId, govProgramVersion, realmName, provider.wallet.publicKey, // realmAuthorityPk
248
+ hntKeypair.publicKey, // communityMintPk
249
+ provider.wallet.publicKey, // payer
250
+ councilKeypair.publicKey, // councilMintPk
251
+ spl_governance_1.MintMaxVoteWeightSource.FULL_SUPPLY_FRACTION, new anchor.BN(1000000000000000), // 10mm vehnt to create governance. Council should be the only one doing this
252
+ new spl_governance_1.GoverningTokenConfigAccountArgs({
253
+ // community token config
254
+ voterWeightAddin: heliumVsrProgram.programId,
255
+ maxVoterWeightAddin: heliumVsrProgram.programId,
256
+ tokenType: spl_governance_1.GoverningTokenType.Liquid,
257
+ }), new spl_governance_1.GoverningTokenConfigAccountArgs({
258
+ // council token config
259
+ voterWeightAddin: undefined,
260
+ maxVoterWeightAddin: undefined,
261
+ tokenType: spl_governance_1.GoverningTokenType.Liquid,
262
+ }));
263
+ yield (0, spl_utils_1.sendInstructions)(provider, instructions, []);
264
+ instructions = [];
265
+ }
266
+ const registrar = (yield (0, voter_stake_registry_sdk_1.registrarKey)(realm, hntKeypair.publicKey))[0];
267
+ if (!(yield exists(conn, registrar))) {
268
+ console.log('Initializing VSR Registrar');
269
+ instructions.push(web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 800000 }));
270
+ instructions.push(yield heliumVsrProgram.methods
271
+ .initializeRegistrarV0({
272
+ positionUpdateAuthority: (yield (0, helium_sub_daos_sdk_1.daoKey)(hntKeypair.publicKey))[0],
273
+ })
274
+ .accounts({
275
+ realm,
276
+ realmGoverningTokenMint: hntKeypair.publicKey,
277
+ })
278
+ .instruction());
279
+ yield (0, spl_utils_1.sendInstructions)(provider, instructions, []);
280
+ instructions = [];
281
+ }
282
+ console.log('Configuring VSR voting mint at [0]');
283
+ instructions.push(yield heliumVsrProgram.methods
284
+ .configureVotingMintV0({
285
+ idx: 0,
286
+ digitShift: 0,
287
+ baselineVoteWeightScaledFactor: new anchor.BN(BASELINE * 1e9),
288
+ maxExtraLockupVoteWeightScaledFactor: new anchor.BN(SCALE * 1e9),
289
+ genesisVotePowerMultiplier: GENESIS_MULTIPLIER,
290
+ // April 28th, 23:59:59 UTC
291
+ genesisVotePowerMultiplierExpirationTs: new anchor.BN('1682726399'),
292
+ lockupSaturationSecs: new anchor.BN(MAX_LOCKUP),
293
+ })
294
+ .accounts({
295
+ registrar,
296
+ mint: hntKeypair.publicKey,
297
+ })
298
+ .remainingAccounts([
299
+ {
300
+ pubkey: hntKeypair.publicKey,
301
+ isSigner: false,
302
+ isWritable: false,
303
+ },
304
+ ])
305
+ .instruction());
306
+ yield (0, spl_utils_1.sendInstructions)(provider, instructions, []);
307
+ instructions = [];
308
+ console.log('Creating max voter record');
309
+ instructions.push(yield heliumVsrProgram.methods
310
+ .updateMaxVoterWeightV0()
311
+ .accounts({
312
+ registrar,
313
+ realmGoverningTokenMint: hntKeypair.publicKey,
314
+ })
315
+ .instruction());
316
+ console.log(registrar.toString());
317
+ yield (0, spl_utils_1.sendInstructions)(provider, instructions, []);
318
+ instructions = [];
319
+ if (needRealmCreate && !authority.equals(me)) {
320
+ (0, spl_governance_1.withSetRealmAuthority)(instructions, govProgramId, govProgramVersion, realm, provider.wallet.publicKey, authority, spl_governance_1.SetRealmAuthorityAction.SetUnchecked);
321
+ }
322
+ yield (0, spl_utils_1.sendInstructions)(provider, instructions, []);
323
+ instructions = [];
324
+ const dcKey = (yield (0, data_credits_sdk_1.dataCreditsKey)(dcKeypair.publicKey))[0];
325
+ console.log('dcpid', data_credits_sdk_1.PROGRAM_ID.toBase58());
326
+ if (!(yield exists(conn, dcKey))) {
327
+ yield dataCreditsProgram.methods
328
+ .initializeDataCreditsV0({
329
+ authority,
330
+ config: {
331
+ windowSizeSeconds: new anchor.BN(60 * 60),
332
+ thresholdType: circuit_breaker_sdk_1.ThresholdType.Absolute,
333
+ threshold: new anchor.BN('1000000000000'),
334
+ },
335
+ })
336
+ .accounts({
337
+ hntMint: hntKeypair.publicKey,
338
+ dcMint: dcKeypair.publicKey,
339
+ hntPriceOracle: new web3_js_1.PublicKey(argv.hntPriceOracle),
340
+ })
341
+ .rpc({ skipPreflight: true });
342
+ let tx = new web3_js_1.Transaction();
343
+ tx.add(web3_js_1.SystemProgram.transfer({
344
+ fromPubkey: provider.wallet.publicKey,
345
+ toPubkey: (0, data_credits_sdk_1.accountPayerKey)()[0],
346
+ lamports: 5 * web3_js_1.LAMPORTS_PER_SOL,
347
+ }));
348
+ tx.recentBlockhash = (yield provider.connection.getLatestBlockhash()).blockhash;
349
+ tx.feePayer = provider.wallet.publicKey;
350
+ yield provider.sendAndConfirm(tx);
351
+ }
352
+ if (!(yield exists(conn, dao))) {
353
+ console.log('Initializing DAO');
354
+ const hstEmission = yield (0, utils_1.parseEmissionsSchedule)(argv.hstEmissionSchedulePath);
355
+ const hntEmission = yield (0, utils_1.parseEmissionsSchedule)(argv.emissionSchedulePath);
356
+ const currentHstEmission = hstEmission[0];
357
+ const currentHntEmission = hntEmission[0];
358
+ const fanout = (0, fanout_sdk_1.fanoutKey)('HST')[0];
359
+ const hstPool = (0, spl_token_1.getAssociatedTokenAddressSync)(hntKeypair.publicKey, fanout, true);
360
+ yield heliumSubDaosProgram.methods
361
+ .initializeDaoV0({
362
+ registrar: registrar,
363
+ authority,
364
+ netEmissionsCap: (0, spl_utils_1.toBN)(34.24, 8),
365
+ // Tx too large to do in initialize dao, so do it with update
366
+ hstEmissionSchedule: [currentHstEmission],
367
+ emissionSchedule: [currentHntEmission],
368
+ })
369
+ .preInstructions([
370
+ (0, spl_token_1.createAssociatedTokenAccountIdempotentInstruction)(provider.wallet.publicKey, hstPool, fanout, hntKeypair.publicKey),
371
+ ])
372
+ .accounts({
373
+ dcMint: dcKeypair.publicKey,
374
+ hntMint: hntKeypair.publicKey,
375
+ thread,
376
+ hstPool,
377
+ })
378
+ .rpc({ skipPreflight: true });
379
+ yield (0, utils_1.sendInstructionsOrSquads)({
380
+ provider,
381
+ instructions: [
382
+ yield heliumSubDaosProgram.methods
383
+ .updateDaoV0({
384
+ authority,
385
+ emissionSchedule: hntEmission,
386
+ hstEmissionSchedule: hstEmission,
387
+ hstPool: null,
388
+ netEmissionsCap: null,
389
+ })
390
+ .accounts({
391
+ dao,
392
+ authority: authority,
393
+ })
394
+ .instruction(),
395
+ ],
396
+ executeTransaction: true,
397
+ squads,
398
+ multisig: argv.multisig ? new web3_js_1.PublicKey(argv.multisig) : undefined,
399
+ authorityIndex: argv.authorityIndex,
400
+ signers: [],
401
+ });
402
+ }
403
+ if (!(yield exists(conn, (0, helium_entity_manager_sdk_1.dataOnlyConfigKey)(dao)[0]))) {
404
+ console.log(`Initializing DataOnly Config`);
405
+ let merkle;
406
+ if (fs_1.default.existsSync(argv.merklePath)) {
407
+ merkle = (0, utils_1.loadKeypair)(argv.merklePath);
408
+ }
409
+ else {
410
+ merkle = web3_js_1.Keypair.generate();
411
+ fs_1.default.writeFileSync(argv.merklePath, JSON.stringify(Array.from(merkle.secretKey)));
412
+ }
413
+ const [size, buffer, canopy] = [14, 64, 11];
414
+ const space = (0, spl_account_compression_1.getConcurrentMerkleTreeAccountSize)(size, buffer, canopy);
415
+ const cost = yield provider.connection.getMinimumBalanceForRentExemption(space);
416
+ if (!(yield exists(conn, merkle.publicKey))) {
417
+ yield (0, spl_utils_1.sendInstructions)(provider, [
418
+ web3_js_1.SystemProgram.createAccount({
419
+ fromPubkey: provider.wallet.publicKey,
420
+ newAccountPubkey: merkle.publicKey,
421
+ lamports: cost,
422
+ space: space,
423
+ programId: spl_account_compression_1.SPL_ACCOUNT_COMPRESSION_PROGRAM_ID,
424
+ }),
425
+ ], [merkle]);
426
+ }
427
+ yield (0, utils_1.sendInstructionsOrSquads)({
428
+ provider,
429
+ instructions: [
430
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 400000 }),
431
+ yield hemProgram.methods
432
+ .initializeDataOnlyV0({
433
+ authority,
434
+ newTreeDepth: size,
435
+ newTreeBufferSize: buffer,
436
+ newTreeSpace: new bn_js_1.BN((0, spl_account_compression_1.getConcurrentMerkleTreeAccountSize)(size, buffer, canopy)),
437
+ newTreeFeeLamports: new bn_js_1.BN(cost / 2 ** size),
438
+ name: 'DATAONLY',
439
+ metadataUrl: 'https://shdw-drive.genesysgo.net/H8b1gZmA2aBqDYxicxawGpznCaNbFSEJ3YnJuawGQ2EQ/data-only.json',
440
+ })
441
+ .accounts({
442
+ dao,
443
+ authority,
444
+ merkleTree: merkle.publicKey,
445
+ })
446
+ .instruction(),
447
+ ],
448
+ executeTransaction: false,
449
+ squads,
450
+ multisig: argv.multisig ? new web3_js_1.PublicKey(argv.multisig) : undefined,
451
+ authorityIndex: argv.authorityIndex,
452
+ signers: [],
453
+ });
454
+ }
455
+ });
456
+ }
457
+ exports.run = run;
458
+ //# 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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"}
@@ -0,0 +1,175 @@
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_entity_manager_sdk_1 = require("@helium/helium-entity-manager-sdk");
41
+ const spl_utils_1 = require("@helium/spl-utils");
42
+ const helium_sub_daos_sdk_1 = require("@helium/helium-sub-daos-sdk");
43
+ const web3_js_1 = require("@solana/web3.js");
44
+ const sdk_1 = __importDefault(require("@sqds/sdk"));
45
+ const os_1 = __importDefault(require("os"));
46
+ const yargs_1 = __importDefault(require("yargs/yargs"));
47
+ const utils_1 = require("./utils");
48
+ const fs_1 = __importDefault(require("fs"));
49
+ const bn_js_1 = require("bn.js");
50
+ const spl_account_compression_1 = require("@solana/spl-account-compression");
51
+ function exists(connection, account) {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ return Boolean(yield connection.getAccountInfo(account));
54
+ });
55
+ }
56
+ function run(args = process.argv) {
57
+ return __awaiter(this, void 0, void 0, function* () {
58
+ const yarg = (0, yargs_1.default)(args).options({
59
+ wallet: {
60
+ alias: 'k',
61
+ describe: 'Anchor wallet keypair',
62
+ default: `${os_1.default.homedir()}/.config/solana/id.json`,
63
+ },
64
+ url: {
65
+ alias: 'u',
66
+ default: 'http://127.0.0.1:8899',
67
+ describe: 'The solana url',
68
+ },
69
+ hntMint: {
70
+ type: 'string',
71
+ describe: 'HNT token mint',
72
+ default: spl_utils_1.HNT_MINT.toString(),
73
+ },
74
+ multisig: {
75
+ type: 'string',
76
+ describe: 'Address of the squads multisig to control the dao. If not provided, your wallet will be the authority',
77
+ },
78
+ authorityIndex: {
79
+ type: 'number',
80
+ describe: 'Authority index for squads. Defaults to 1',
81
+ default: 1,
82
+ },
83
+ merklePath: {
84
+ type: 'string',
85
+ describe: 'Path to the merkle keypair',
86
+ default: `${__dirname}/../../keypairs/data-only-merkle.json`,
87
+ },
88
+ });
89
+ const argv = yield yarg.argv;
90
+ process.env.ANCHOR_WALLET = argv.wallet;
91
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
92
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
93
+ const provider = anchor.getProvider();
94
+ const wallet = new anchor.Wallet((0, utils_1.loadKeypair)(argv.wallet));
95
+ const hemProgram = yield (0, helium_entity_manager_sdk_1.init)(provider);
96
+ const hntMint = new web3_js_1.PublicKey(argv.hntMint);
97
+ const dao = (0, helium_sub_daos_sdk_1.daoKey)(hntMint)[0];
98
+ const squads = sdk_1.default.endpoint(process.env.ANCHOR_PROVIDER_URL, wallet, {
99
+ commitmentOrConfig: 'finalized',
100
+ });
101
+ let authority = provider.wallet.publicKey;
102
+ let multisig = argv.multisig ? new web3_js_1.PublicKey(argv.multisig) : null;
103
+ if (multisig) {
104
+ authority = squads.getAuthorityPDA(multisig, argv.authorityIndex);
105
+ // Fund authority
106
+ const authAcc = yield provider.connection.getAccountInfo(authority);
107
+ if (!authAcc || authAcc.lamports < web3_js_1.LAMPORTS_PER_SOL) {
108
+ console.log('Funding multisig...');
109
+ yield (0, spl_utils_1.sendInstructions)(provider, [
110
+ web3_js_1.SystemProgram.transfer({
111
+ fromPubkey: provider.wallet.publicKey,
112
+ toPubkey: authority,
113
+ lamports: web3_js_1.LAMPORTS_PER_SOL,
114
+ }),
115
+ ]);
116
+ }
117
+ }
118
+ if (yield exists(provider.connection, (0, helium_entity_manager_sdk_1.dataOnlyConfigKey)(dao)[0])) {
119
+ console.log('DataOnly Config already exists');
120
+ return;
121
+ }
122
+ console.log(`Initializing DataOnly Config`);
123
+ let merkle;
124
+ if (fs_1.default.existsSync(argv.merklePath)) {
125
+ merkle = (0, utils_1.loadKeypair)(argv.merklePath);
126
+ }
127
+ else {
128
+ merkle = web3_js_1.Keypair.generate();
129
+ fs_1.default.writeFileSync(argv.merklePath, JSON.stringify(Array.from(merkle.secretKey)));
130
+ }
131
+ const [size, buffer, canopy] = [14, 64, 11];
132
+ const space = (0, spl_account_compression_1.getConcurrentMerkleTreeAccountSize)(size, buffer, canopy);
133
+ const cost = yield provider.connection.getMinimumBalanceForRentExemption(space);
134
+ if (!(yield exists(provider.connection, merkle.publicKey))) {
135
+ yield (0, spl_utils_1.sendInstructions)(provider, [
136
+ web3_js_1.SystemProgram.createAccount({
137
+ fromPubkey: provider.wallet.publicKey,
138
+ newAccountPubkey: merkle.publicKey,
139
+ lamports: cost,
140
+ space: space,
141
+ programId: spl_account_compression_1.SPL_ACCOUNT_COMPRESSION_PROGRAM_ID,
142
+ }),
143
+ ], [merkle]);
144
+ }
145
+ yield (0, utils_1.sendInstructionsOrSquads)({
146
+ provider,
147
+ instructions: [
148
+ web3_js_1.ComputeBudgetProgram.setComputeUnitLimit({ units: 400000 }),
149
+ yield hemProgram.methods
150
+ .initializeDataOnlyV0({
151
+ authority,
152
+ newTreeDepth: size,
153
+ newTreeBufferSize: buffer,
154
+ newTreeSpace: new bn_js_1.BN((0, spl_account_compression_1.getConcurrentMerkleTreeAccountSize)(size, buffer, canopy)),
155
+ newTreeFeeLamports: new bn_js_1.BN(cost / 2 ** size),
156
+ name: 'DATAONLY',
157
+ metadataUrl: 'https://shdw-drive.genesysgo.net/H8b1gZmA2aBqDYxicxawGpznCaNbFSEJ3YnJuawGQ2EQ/data-only.json',
158
+ })
159
+ .accounts({
160
+ dao,
161
+ authority,
162
+ merkleTree: merkle.publicKey,
163
+ })
164
+ .instruction(),
165
+ ],
166
+ executeTransaction: false,
167
+ squads,
168
+ multisig: argv.multisig ? new web3_js_1.PublicKey(argv.multisig) : undefined,
169
+ authorityIndex: argv.authorityIndex,
170
+ signers: [],
171
+ });
172
+ });
173
+ }
174
+ exports.run = run;
175
+ //# sourceMappingURL=create-data-only-config.js.map