@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,6 @@
1
+ import { Keypair as HeliumKeypair } from "@helium/crypto";
2
+ const run = async () => {
3
+ const ecc = await (await HeliumKeypair.makeRandom()).address.publicKey;
4
+ console.log(ecc);
5
+ };
6
+ //# sourceMappingURL=ecc-gen.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ecc-gen.js","sourceRoot":"","sources":["../../../src/ecc-gen.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAG1D,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;IACrB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC,CAAC"}
@@ -0,0 +1,103 @@
1
+ import { currentEpoch, daoEpochInfoKey, daoKey, EPOCH_LENGTH, init as initDao } from "@helium/helium-sub-daos-sdk";
2
+ import * as anchor from "@coral-xyz/anchor";
3
+ import { ComputeBudgetProgram, PublicKey } from "@solana/web3.js";
4
+ import { BN } from "bn.js";
5
+ import b58 from "bs58";
6
+ import os from "os";
7
+ import yargs from "yargs/yargs";
8
+ export async function run(args = process.argv) {
9
+ const yarg = yargs(args).options({
10
+ wallet: {
11
+ alias: "k",
12
+ describe: "Anchor wallet keypair",
13
+ default: `${os.homedir()}/.config/solana/id.json`,
14
+ },
15
+ url: {
16
+ alias: "u",
17
+ default: "http://127.0.0.1:8899",
18
+ describe: "The solana url",
19
+ },
20
+ hntMint: {
21
+ type: "string",
22
+ describe: "Mint of the HNT token",
23
+ },
24
+ from: {
25
+ type: "number",
26
+ describe: "The timestamp to start ending epochs from",
27
+ },
28
+ });
29
+ const argv = await yarg.argv;
30
+ process.env.ANCHOR_WALLET = argv.wallet;
31
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
32
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
33
+ const provider = anchor.getProvider();
34
+ const heliumSubDaosProgram = await initDao(provider);
35
+ const hntMint = new PublicKey(argv.hntMint);
36
+ const dao = await daoKey(hntMint)[0];
37
+ const subdaos = await heliumSubDaosProgram.account.subDaoV0.all([{
38
+ memcmp: {
39
+ offset: 8,
40
+ bytes: b58.encode(dao.toBuffer()),
41
+ }
42
+ }]);
43
+ let targetTs = argv.from ? new BN(argv.from) : subdaos[0].account.vehntLastCalculatedTs;
44
+ while (targetTs.toNumber() < new Date().valueOf() / 1000) {
45
+ const epoch = currentEpoch(targetTs);
46
+ console.log(epoch.toNumber(), targetTs.toNumber());
47
+ const daoEpochInfo = await heliumSubDaosProgram.account.daoEpochInfoV0.fetchNullable(daoEpochInfoKey(dao, targetTs)[0]);
48
+ if (!daoEpochInfo?.doneCalculatingScores) {
49
+ for (const subDao of subdaos) {
50
+ try {
51
+ await heliumSubDaosProgram.methods
52
+ .calculateUtilityScoreV0({
53
+ epoch,
54
+ })
55
+ .preInstructions([
56
+ ComputeBudgetProgram.setComputeUnitLimit({ units: 350000 }),
57
+ ])
58
+ .accounts({
59
+ subDao: subDao.publicKey,
60
+ })
61
+ .rpc({ skipPreflight: true });
62
+ }
63
+ catch (e) {
64
+ console.log(`Failed to calculate utility score for ${subDao.account.dntMint.toBase58()}: ${e.message}`);
65
+ }
66
+ }
67
+ }
68
+ if (!daoEpochInfo?.doneIssuingRewards) {
69
+ for (const subDao of subdaos) {
70
+ try {
71
+ await heliumSubDaosProgram.methods
72
+ .issueRewardsV0({
73
+ epoch,
74
+ })
75
+ .accounts({
76
+ subDao: subDao.publicKey,
77
+ })
78
+ .rpc({ skipPreflight: true });
79
+ }
80
+ catch (e) {
81
+ console.log(`Failed to issue rewards for ${subDao.account.dntMint.toBase58()}: ${e.message}`);
82
+ }
83
+ }
84
+ }
85
+ try {
86
+ if (!daoEpochInfo?.doneIssuingHstPool) {
87
+ await heliumSubDaosProgram.methods
88
+ .issueHstPoolV0({
89
+ epoch,
90
+ })
91
+ .accounts({
92
+ dao,
93
+ })
94
+ .rpc({ skipPreflight: true });
95
+ }
96
+ }
97
+ catch (e) {
98
+ console.log(`Failed to issue hst pool: ${e.message}`);
99
+ }
100
+ targetTs = targetTs.add(new BN(EPOCH_LENGTH));
101
+ }
102
+ }
103
+ //# sourceMappingURL=end-epoch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"end-epoch.js","sourceRoot":"","sources":["../../../src/end-epoch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import * as anchor from '@coral-xyz/anchor';
2
+ import { init } from '@helium/helium-entity-manager-sdk';
3
+ import { init as initHsd } from '@helium/helium-sub-daos-sdk';
4
+ import { daoKey } from '@helium/helium-sub-daos-sdk';
5
+ import { createMintInstructions, sendInstructions } from '@helium/spl-utils';
6
+ import { PublicKey, Keypair } from '@solana/web3.js';
7
+ import Squads from '@sqds/sdk';
8
+ import os from 'os';
9
+ import yargs from 'yargs/yargs';
10
+ import { loadKeypair, sendInstructionsOrSquads } from './utils';
11
+ export async function run(args = process.argv) {
12
+ const yarg = yargs(args).options({
13
+ wallet: {
14
+ alias: 'k',
15
+ describe: 'Anchor wallet keypair',
16
+ default: `${os.homedir()}/.config/solana/id.json`,
17
+ },
18
+ url: {
19
+ alias: 'u',
20
+ default: 'http://127.0.0.1:8899',
21
+ describe: 'The solana url',
22
+ },
23
+ hntMint: {
24
+ type: 'string',
25
+ required: true,
26
+ describe: 'Mint address of hnt',
27
+ },
28
+ recipient: {
29
+ type: 'string',
30
+ required: true,
31
+ describe: 'Recipient wallet address for the iot ops fund nft',
32
+ },
33
+ executeTransaction: {
34
+ type: 'boolean',
35
+ },
36
+ multisig: {
37
+ type: 'string',
38
+ describe: 'Address of the squads multisig to be authority. If not provided, your wallet will be the authority',
39
+ },
40
+ authorityIndex: {
41
+ type: 'number',
42
+ describe: 'Authority index for squads. Defaults to 1',
43
+ default: 1,
44
+ },
45
+ });
46
+ const argv = await yarg.argv;
47
+ process.env.ANCHOR_WALLET = argv.wallet;
48
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
49
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
50
+ const provider = anchor.getProvider();
51
+ const wallet = new anchor.Wallet(loadKeypair(argv.wallet));
52
+ const hemProgram = await init(provider);
53
+ const hsdProgram = await initHsd(provider);
54
+ const mint = Keypair.generate();
55
+ const hnt = new PublicKey(argv.hntMint);
56
+ const [dao] = daoKey(hnt);
57
+ const instructions = [];
58
+ const daoAcc = await hsdProgram.account.daoV0.fetch(dao);
59
+ await sendInstructions(provider, await createMintInstructions(provider, 0, daoAcc.authority, daoAcc.authority, mint), [mint]);
60
+ instructions.push(await hemProgram.methods
61
+ .issueIotOperationsFundV0()
62
+ .accounts({
63
+ dao,
64
+ recipient: new PublicKey(argv.recipient),
65
+ mint: mint.publicKey,
66
+ authority: daoAcc.authority,
67
+ })
68
+ .instruction());
69
+ const squads = Squads.endpoint(process.env.ANCHOR_PROVIDER_URL, wallet, {
70
+ commitmentOrConfig: 'finalized',
71
+ });
72
+ await sendInstructionsOrSquads({
73
+ provider,
74
+ instructions,
75
+ executeTransaction: argv.executeTransaction,
76
+ squads,
77
+ multisig: argv.multisig ? new PublicKey(argv.multisig) : undefined,
78
+ authorityIndex: argv.authorityIndex,
79
+ signers: [],
80
+ });
81
+ }
82
+ //# sourceMappingURL=issue-iot-operations-fund.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-iot-operations-fund.js","sourceRoot":"","sources":["../../../src/issue-iot-operations-fund.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import * as anchor from "@coral-xyz/anchor";
2
+ import { init as initHem, } from "@helium/helium-entity-manager-sdk";
3
+ import os from "os";
4
+ import yargs from "yargs/yargs";
5
+ import { Keypair as HeliumKeypair } from "@helium/crypto";
6
+ import { loadKeypair } from "./utils";
7
+ export async function run(args = process.argv) {
8
+ const yarg = yargs(args).options({
9
+ wallet: {
10
+ alias: "k",
11
+ describe: "Anchor wallet keypair",
12
+ default: `${os.homedir()}/.config/solana/id.json`,
13
+ },
14
+ url: {
15
+ alias: "u",
16
+ default: "http://127.0.0.1:8899",
17
+ describe: "The solana url",
18
+ },
19
+ testEccVerifierKeypair: {
20
+ type: "string",
21
+ },
22
+ testRewardsOracleFaucet: {
23
+ type: "string",
24
+ default: "https://iot-rewards-faucet.oracle.test-helium.com"
25
+ }
26
+ });
27
+ const argv = await yarg.argv;
28
+ process.env.ANCHOR_WALLET = argv.wallet;
29
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
30
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
31
+ const provider = anchor.getProvider();
32
+ const hemProgram = await initHem(provider);
33
+ const eccVerifier = loadKeypair(argv.testEccVerifierKeypair);
34
+ const ecc = (await HeliumKeypair.makeRandom()).address.b58;
35
+ console.log(ecc);
36
+ // uncomment when data only hotspots are supported
37
+ // const method = await hemProgram.methods.issueDataOnlyEntityV0({
38
+ // entityKey: Buffer.from(bs58.decode(ecc)),
39
+ // }).accounts({
40
+ // recipient: provider.wallet.publicKey,
41
+ // dao: daoKey(HNT_MINT)[0],
42
+ // eccVerifier: eccVerifier.publicKey,
43
+ // })
44
+ // .signers([eccVerifier]);
45
+ // const { keyToAsset } = await method.pubkeys();
46
+ // await method.rpc({skipPreflight: true});
47
+ // const kta = await hemProgram.account.keyToAssetV0.fetch(keyToAsset);
48
+ // const {
49
+ // args: proofArgs,
50
+ // remainingAccounts,
51
+ // } = await proofArgsAndAccounts({
52
+ // connection: hemProgram.provider.connection,
53
+ // assetId: kta.asset,
54
+ // });
55
+ // const rewardableEntityConfig = rewardableEntityConfigKey(subDaoKey(IOT_MINT)[0], "IOT")[0];
56
+ // await hemProgram.methods.onboardDataOnlyIotHotspotV0({
57
+ // ...proofArgs,
58
+ // location: null,
59
+ // elevation: null,
60
+ // gain: null,
61
+ // }).accounts({
62
+ // rewardableEntityConfig,
63
+ // hotspotOwner: provider.wallet.publicKey,
64
+ // keyToAsset,
65
+ // iotInfo: iotInfoKey(rewardableEntityConfig, ecc)[0],
66
+ // subDao: subDaoKey(IOT_MINT)[0],
67
+ // }).remainingAccounts(remainingAccounts).rpc();
68
+ // await axios.get(`${argv.testRewardsOracleFaucet}/rewards/${ecc}?amount=5`);
69
+ }
70
+ //# sourceMappingURL=issue-test-hotspot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-test-hotspot.js","sourceRoot":"","sources":["../../../src/issue-test-hotspot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,IAAI,IAAI,OAAO,GAKhB,MAAM,mCAAmC,CAAC;AAI3C,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAItC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAY,OAAO,CAAC,IAAI;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QAC/B,MAAM,EAAE;YACN,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,uBAAuB;YACjC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,yBAAyB;SAClD;QACD,GAAG,EAAE;YACH,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,uBAAuB;YAChC,QAAQ,EAAE,gBAAgB;SAC3B;QACD,sBAAsB,EAAE;YACtB,IAAI,EAAE,QAAQ;SACf;QACD,uBAAuB,EAAE;YACvB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,mDAAmD;SAC7D;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC;IAC3C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAA2B,CAAC;IAC/D,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3C,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,sBAAuB,CAAC,CAAC;IAC9D,MAAM,GAAG,GAAG,CAAC,MAAM,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC;IAE3D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACjB,kDAAkD;IAClD,kEAAkE;IAClE,8CAA8C;IAC9C,gBAAgB;IAChB,0CAA0C;IAC1C,8BAA8B;IAC9B,wCAAwC;IACxC,KAAK;IACL,2BAA2B;IAE3B,iDAAiD;IACjD,2CAA2C;IAE3C,uEAAuE;IACvE,UAAU;IACV,qBAAqB;IACrB,uBAAuB;IACvB,mCAAmC;IACnC,gDAAgD;IAChD,wBAAwB;IACxB,MAAM;IAGN,8FAA8F;IAC9F,yDAAyD;IACzD,oBAAoB;IACpB,sBAAsB;IACtB,uBAAuB;IACvB,kBAAkB;IAClB,gBAAgB;IAChB,4BAA4B;IAC5B,6CAA6C;IAC7C,gBAAgB;IAChB,yDAAyD;IACzD,oCAAoC;IACpC,iDAAiD;IAEjD,8EAA8E;AAChF,CAAC"}
@@ -0,0 +1,14 @@
1
+ import yargs from "yargs/yargs";
2
+ import { findCoingeckoPrice } from "./submit-price";
3
+ export async function run(args = process.argv) {
4
+ const yarg = yargs(args).options({
5
+ tokenName: {
6
+ type: "string",
7
+ alias: "t",
8
+ default: "helium",
9
+ }
10
+ });
11
+ const argv = await yarg.argv;
12
+ console.log(await findCoingeckoPrice(argv.tokenName));
13
+ }
14
+ //# sourceMappingURL=log-coingecko-price.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-coingecko-price.js","sourceRoot":"","sources":["../../../src/log-coingecko-price.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,aAAa,CAAC;AAChC,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAY,OAAO,CAAC,IAAI;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QAC/B,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,QAAQ;SAClB;KACF,CAAC,CAAC;IAEH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,MAAM,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACxD,CAAC"}
@@ -0,0 +1,62 @@
1
+ import * as anchor from "@coral-xyz/anchor";
2
+ import { init as initHem, iotInfoKey, keyToAssetKey, mobileInfoKey, rewardableEntityConfigKey, } from "@helium/helium-entity-manager-sdk";
3
+ import { daoKey, subDaoKey } from "@helium/helium-sub-daos-sdk";
4
+ import { getAsset, getAssetProof, HNT_MINT, IOT_MINT, MOBILE_MINT } from "@helium/spl-utils";
5
+ import { PublicKey } from "@solana/web3.js";
6
+ import os from "os";
7
+ import yargs from "yargs/yargs";
8
+ import { exists } from "./utils";
9
+ export async function run(args = process.argv) {
10
+ const yarg = yargs(args).options({
11
+ wallet: {
12
+ alias: "k",
13
+ describe: "Anchor wallet keypair",
14
+ default: `${os.homedir()}/.config/solana/id.json`,
15
+ },
16
+ url: {
17
+ alias: "u",
18
+ default: "http://127.0.0.1:8899",
19
+ describe: "The solana url",
20
+ },
21
+ entityKey: {
22
+ type: "string",
23
+ describe: "Pubkey of the Data Credit token",
24
+ required: true,
25
+ },
26
+ keySerialization: {
27
+ type: "string",
28
+ default: "b58"
29
+ }
30
+ });
31
+ const argv = await yarg.argv;
32
+ process.env.ANCHOR_WALLET = argv.wallet;
33
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
34
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
35
+ const provider = anchor.getProvider();
36
+ const hemProgram = await initHem(provider);
37
+ // @ts-ignore
38
+ const [keyToAssetK] = keyToAssetKey(daoKey(HNT_MINT)[0], argv.entityKey, argv.keySerialization);
39
+ const keyToAsset = await hemProgram.account.keyToAssetV0.fetchNullable(keyToAssetK);
40
+ console.log("keyToAsset", keyToAssetK.toBase58());
41
+ PublicKey.prototype.toString = PublicKey.prototype.toBase58;
42
+ console.log(keyToAsset);
43
+ console.log(await getAsset(argv.url, keyToAsset.asset));
44
+ console.log(await getAssetProof(argv.url, keyToAsset.asset));
45
+ const [iotConfigKey] = rewardableEntityConfigKey(subDaoKey(IOT_MINT)[0], "IOT");
46
+ const [mobileConfigKey] = rewardableEntityConfigKey(subDaoKey(MOBILE_MINT)[0], "MOBILE");
47
+ const [iotInfo] = await iotInfoKey(iotConfigKey, argv.entityKey);
48
+ if (await exists(provider.connection, iotInfo)) {
49
+ console.log("Iot Info", await hemProgram.account.iotHotspotInfoV0.fetchNullable(iotInfo));
50
+ }
51
+ else {
52
+ console.log("No iot info");
53
+ }
54
+ const [info] = await mobileInfoKey(mobileConfigKey, argv.entityKey);
55
+ if (await exists(provider.connection, info)) {
56
+ console.log("Mobile Info", await hemProgram.account.mobileHotspotInfoV0.fetchNullable(info));
57
+ }
58
+ else {
59
+ console.log("No mobile info");
60
+ }
61
+ }
62
+ //# sourceMappingURL=log-hotspot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-hotspot.js","sourceRoot":"","sources":["../../../src/log-hotspot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ import * as anchor from "@coral-xyz/anchor";
2
+ import { delegatedDataCreditsKey, init, } from "@helium/data-credits-sdk";
3
+ import { subDaoKey } from "@helium/helium-sub-daos-sdk";
4
+ import { getAccount } from "@solana/spl-token";
5
+ import { PublicKey } from "@solana/web3.js";
6
+ import os from "os";
7
+ import yargs from "yargs/yargs";
8
+ export async function run(args = process.argv) {
9
+ const yarg = yargs(args).options({
10
+ wallet: {
11
+ alias: "k",
12
+ describe: "Anchor wallet keypair",
13
+ default: `${os.homedir()}/.config/solana/id.json`,
14
+ },
15
+ url: {
16
+ alias: "u",
17
+ default: "http://127.0.0.1:8899",
18
+ describe: "The solana url",
19
+ },
20
+ routerKey: {
21
+ alias: "r",
22
+ type: "string",
23
+ required: true,
24
+ describe: "Router key",
25
+ },
26
+ dntMint: {
27
+ alias: "m",
28
+ type: "string",
29
+ describe: "Mint id of the subdao DNT token",
30
+ required: true,
31
+ },
32
+ });
33
+ const argv = await yarg.argv;
34
+ process.env.ANCHOR_WALLET = argv.wallet;
35
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
36
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
37
+ const provider = anchor.getProvider();
38
+ const dcProgram = await init(provider);
39
+ const dntMint = new PublicKey(argv.dntMint);
40
+ const [subdao] = subDaoKey(dntMint);
41
+ const [delegatedDataCreditsK] = delegatedDataCreditsKey(subdao, argv.routerKey);
42
+ console.log("Delegated data credits key: ", delegatedDataCreditsK.toBase58());
43
+ const delegatedDataCredits = await dcProgram.account.delegatedDataCreditsV0.fetch(delegatedDataCreditsK);
44
+ console.log(delegatedDataCredits);
45
+ const account = await getAccount(provider.connection, delegatedDataCredits.escrowAccount);
46
+ console.log("Balance: ", account.amount.toString());
47
+ }
48
+ //# sourceMappingURL=log-router-balance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-router-balance.js","sourceRoot":"","sources":["../../../src/log-router-balance.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EACL,uBAAuB,EACvB,IAAI,GACL,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,MAAM,aAAa,CAAC;AAEhC,MAAM,CAAC,KAAK,UAAU,GAAG,CAAC,OAAY,OAAO,CAAC,IAAI;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QAC/B,MAAM,EAAE;YACN,KAAK,EAAE,GAAG;YACV,QAAQ,EAAE,uBAAuB;YACjC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,yBAAyB;SAClD;QACD,GAAG,EAAE;YACH,KAAK,EAAE,GAAG;YACV,OAAO,EAAE,uBAAuB;YAChC,QAAQ,EAAE,gBAAgB;SAC3B;QACD,SAAS,EAAE;YACT,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,IAAI;YACd,QAAQ,EAAE,YAAY;SACvB;QACD,OAAO,EAAE;YACP,KAAK,EAAE,GAAG;YACV,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,iCAAiC;YAC3C,QAAQ,EAAE,IAAI;SACf;KACF,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC;IAC7B,OAAO,CAAC,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC;IAC3C,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,EAA2B,CAAC;IAC/D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,CAAA;IAEnC,MAAM,CAAC,qBAAqB,CAAC,GAAG,uBAAuB,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAChF,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,qBAAqB,CAAC,QAAQ,EAAE,CAAC,CAAA;IAC7E,MAAM,oBAAoB,GAAG,MAAM,SAAS,CAAC,OAAO,CAAC,sBAAsB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzG,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;IACjC,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,UAAU,EAAE,oBAAoB,CAAC,aAAa,CAAC,CAAC;IAC1F,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;AACtD,CAAC"}
@@ -0,0 +1,64 @@
1
+ import * as anchor from "@coral-xyz/anchor";
2
+ import { HNT_MINT, amountAsNum, toNumber, toBN } from "@helium/spl-utils";
3
+ import { init as initTreasuryManagement, treasuryManagementKey } from "@helium/treasury-management-sdk";
4
+ import { getAccount, getMint } from "@solana/spl-token";
5
+ import { PublicKey } from "@solana/web3.js";
6
+ import os from "os";
7
+ import yargs from "yargs/yargs";
8
+ export async function run(args = process.argv) {
9
+ const yarg = yargs(args).options({
10
+ wallet: {
11
+ alias: "k",
12
+ describe: "Anchor wallet keypair",
13
+ default: `${os.homedir()}/.config/solana/id.json`,
14
+ },
15
+ url: {
16
+ alias: "u",
17
+ default: "http://127.0.0.1:8899",
18
+ describe: "The solana url",
19
+ },
20
+ hntMint: {
21
+ type: "string",
22
+ describe: "Mint id of the HNT token",
23
+ default: HNT_MINT.toBase58(),
24
+ },
25
+ dntMint: {
26
+ alias: "m",
27
+ type: "string",
28
+ describe: "Mint id of the subdao DNT token",
29
+ required: true,
30
+ },
31
+ amount: {
32
+ alias: "n",
33
+ type: "string",
34
+ required: true,
35
+ describe: "Amount to get the price for, in bones"
36
+ }
37
+ });
38
+ const argv = await yarg.argv;
39
+ process.env.ANCHOR_WALLET = argv.wallet;
40
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
41
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
42
+ const provider = anchor.getProvider();
43
+ const treasuryManagementProgram = await initTreasuryManagement(provider);
44
+ const dntMint = new PublicKey(argv.dntMint);
45
+ const hntMint = new PublicKey(argv.hntMint);
46
+ const [treasuryManagementK] = treasuryManagementKey(dntMint);
47
+ const treasuryManagement = await treasuryManagementProgram.account.treasuryManagementV0.fetch(treasuryManagementK);
48
+ const fromMintAcc = await getMint(provider.connection, dntMint);
49
+ const amount = toNumber(new anchor.BN(argv.amount), fromMintAcc.decimals);
50
+ const toMintAcc = await getMint(provider.connection, hntMint);
51
+ const treasuryAcc = await getAccount(provider.connection, treasuryManagement.treasury);
52
+ const k =
53
+ //@ts-ignore
54
+ treasuryManagement.curve.exponentialCurveV0.k.toNumber() / Math.pow(10, 12);
55
+ // only works for basic exponential curves
56
+ // dR = (R / S^(1 + k)) ((S + dS)^(1 + k) - S^(1 + k))
57
+ const S = Number(fromMintAcc.supply / BigInt(Math.pow(10, fromMintAcc.decimals)));
58
+ const R = amountAsNum(treasuryAcc.amount, toMintAcc.decimals);
59
+ const dR = (R / Math.pow(S, k + 1)) *
60
+ (Math.pow(S - amount, k + 1) - Math.pow(S, k + 1));
61
+ const output = Math.abs(dR);
62
+ console.log(toBN(output, toMintAcc.decimals).toString());
63
+ }
64
+ //# sourceMappingURL=log-treasury-price.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-treasury-price.js","sourceRoot":"","sources":["../../../src/log-treasury-price.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ import { init as initDc } from "@helium/data-credits-sdk";
2
+ import { toBN, DC_MINT } from "@helium/spl-utils";
3
+ import * as anchor from "@coral-xyz/anchor";
4
+ import { createAssociatedTokenAccountIdempotentInstruction, getAssociatedTokenAddress, getAssociatedTokenAddressSync } from "@solana/spl-token";
5
+ import { PublicKey } from "@solana/web3.js";
6
+ import os from "os";
7
+ import yargs from "yargs/yargs";
8
+ export async function run(args = process.argv) {
9
+ const yarg = yargs(args).options({
10
+ wallet: {
11
+ alias: "k",
12
+ describe: "Anchor wallet keypair",
13
+ default: `${os.homedir()}/.config/solana/id.json`,
14
+ },
15
+ url: {
16
+ alias: "u",
17
+ default: "http://127.0.0.1:8899",
18
+ describe: "The solana url",
19
+ },
20
+ dcKey: {
21
+ type: "string",
22
+ describe: "Pubkey of the Data Credit token",
23
+ default: DC_MINT.toString(),
24
+ },
25
+ numHnt: {
26
+ type: "number",
27
+ describe: "Number of HNT tokens to burn",
28
+ default: 1,
29
+ },
30
+ destination: {
31
+ type: "string",
32
+ describe: "The destination wallet for the dc",
33
+ alias: "d",
34
+ },
35
+ });
36
+ const argv = await yarg.argv;
37
+ process.env.ANCHOR_WALLET = argv.wallet;
38
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
39
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
40
+ const provider = anchor.getProvider();
41
+ const dataCreditsProgram = await initDc(provider);
42
+ const dcKey = new PublicKey(argv.dcKey);
43
+ const destination = new PublicKey(argv.destination || provider.wallet.publicKey.toString());
44
+ const destAta = await getAssociatedTokenAddress(dcKey, destination);
45
+ let preBalance = 0;
46
+ try {
47
+ preBalance = (await provider.connection.getTokenAccountBalance(destAta, "confirmed")).value.uiAmount;
48
+ }
49
+ catch (e) {
50
+ if (!e.toString().includes("Invalid param: could not find account")) {
51
+ throw e;
52
+ }
53
+ }
54
+ await dataCreditsProgram.methods
55
+ .mintDataCreditsV0({
56
+ hntAmount: toBN(argv.numHnt, 8),
57
+ dcAmount: null
58
+ })
59
+ .preInstructions([
60
+ await createAssociatedTokenAccountIdempotentInstruction(provider.wallet.publicKey, getAssociatedTokenAddressSync(dcKey, destination, true), destination, dcKey)
61
+ ])
62
+ .accounts({
63
+ dcMint: dcKey,
64
+ recipient: destination,
65
+ })
66
+ .rpc({ skipPreflight: true });
67
+ const postBalance = (await provider.connection.getTokenAccountBalance(destAta, "confirmed")).value.uiAmount;
68
+ console.log(`Burned ${argv.numHnt} HNT to mint ${postBalance - preBalance} DC`);
69
+ }
70
+ //# sourceMappingURL=mint-dc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mint-dc.js","sourceRoot":"","sources":["../../../src/mint-dc.ts"],"names":[],"mappings":"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"}