@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,73 @@
1
+ import * as anchor from '@coral-xyz/anchor';
2
+ import { init as initHem, keyToAssetKey, } from '@helium/helium-entity-manager-sdk';
3
+ import { daoKey, init as initHsd } from '@helium/helium-sub-daos-sdk';
4
+ import { PublicKey } from '@solana/web3.js';
5
+ import Squads from '@sqds/sdk';
6
+ import os from 'os';
7
+ import yargs from 'yargs/yargs';
8
+ import { loadKeypair, sendInstructionsOrSquads } 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
+ hntMint: {
22
+ required: true,
23
+ type: 'string',
24
+ describe: 'HNT mint of the dao to be updated',
25
+ },
26
+ executeTransaction: {
27
+ type: 'boolean',
28
+ },
29
+ multisig: {
30
+ type: 'string',
31
+ describe: 'Address of the squads multisig to be authority. If not provided, your wallet will be the authority',
32
+ },
33
+ authorityIndex: {
34
+ type: 'number',
35
+ describe: 'Authority index for squads. Defaults to 1',
36
+ default: 1,
37
+ },
38
+ });
39
+ const argv = await yarg.argv;
40
+ process.env.ANCHOR_WALLET = argv.wallet;
41
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
42
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
43
+ const provider = anchor.getProvider();
44
+ const wallet = new anchor.Wallet(loadKeypair(argv.wallet));
45
+ const program = await initHem(provider);
46
+ const daosProgram = await initHsd(provider);
47
+ const instructions = [];
48
+ const hntMint = new PublicKey(argv.hntMint);
49
+ const dao = daoKey(hntMint)[0];
50
+ const daoAcc = await daosProgram.account.daoV0.fetch(dao);
51
+ instructions.push(await program.methods
52
+ .tempRepairIotOperationsFund()
53
+ .accounts({
54
+ dao,
55
+ authority: daoAcc.authority,
56
+ payer: daoAcc.authority,
57
+ keyToAsset: keyToAssetKey(dao, 'iot_operations_fund', 'utf8')[0],
58
+ })
59
+ .instruction());
60
+ const squads = Squads.endpoint(process.env.ANCHOR_PROVIDER_URL, wallet, {
61
+ commitmentOrConfig: 'finalized',
62
+ });
63
+ await sendInstructionsOrSquads({
64
+ provider,
65
+ instructions,
66
+ executeTransaction: argv.executeTransaction,
67
+ squads,
68
+ multisig: argv.multisig ? new PublicKey(argv.multisig) : undefined,
69
+ authorityIndex: argv.authorityIndex,
70
+ signers: [],
71
+ });
72
+ }
73
+ //# sourceMappingURL=repair-iot-operations-fund.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"repair-iot-operations-fund.js","sourceRoot":"","sources":["../../../src/repair-iot-operations-fund.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,103 @@
1
+ import * as anchor from '@coral-xyz/anchor';
2
+ import { daoKey, init as initDao, subDaoKey, } from '@helium/helium-sub-daos-sdk';
3
+ import { PublicKey } from '@solana/web3.js';
4
+ import Squads from '@sqds/sdk';
5
+ import os from 'os';
6
+ import yargs from 'yargs/yargs';
7
+ import { loadKeypair, sendInstructionsOrSquads } from './utils';
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. Only used if --resetDaoThread flag is set',
23
+ },
24
+ dntMint: {
25
+ type: 'string',
26
+ describe: 'Mint of the subdao token. Only used if --resetSubDaoThread flag is set',
27
+ },
28
+ resetDaoThread: {
29
+ type: 'boolean',
30
+ describe: 'Reset the dao clockwork thread',
31
+ default: false,
32
+ },
33
+ resetSubDaoThread: {
34
+ type: 'boolean',
35
+ describe: 'Reset the subdao clockwork thread',
36
+ default: false,
37
+ },
38
+ executeTransaction: {
39
+ type: 'boolean',
40
+ },
41
+ multisig: {
42
+ type: 'string',
43
+ describe: 'Address of the squads multisig to be authority. If not provided, your wallet will be the authority',
44
+ },
45
+ authorityIndex: {
46
+ type: 'number',
47
+ describe: 'Authority index for squads. Defaults to 1',
48
+ default: 1,
49
+ },
50
+ });
51
+ const argv = await yarg.argv;
52
+ process.env.ANCHOR_WALLET = argv.wallet;
53
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
54
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
55
+ if (argv.resetSubDaoThread && !argv.dntMint) {
56
+ console.log('dnt mint not provided');
57
+ return;
58
+ }
59
+ const provider = anchor.getProvider();
60
+ const wallet = new anchor.Wallet(loadKeypair(argv.wallet));
61
+ const hsdProgram = await initDao(provider);
62
+ const instructions = [];
63
+ const squads = Squads.endpoint(process.env.ANCHOR_PROVIDER_URL, wallet, {
64
+ commitmentOrConfig: 'finalized',
65
+ });
66
+ if (argv.resetDaoThread) {
67
+ console.log('resetting dao thread');
68
+ const hntMint = new PublicKey(argv.hntMint);
69
+ const dao = daoKey(hntMint)[0];
70
+ const daoAcc = await hsdProgram.account.daoV0.fetch(dao);
71
+ instructions.push(await hsdProgram.methods
72
+ .resetDaoThreadV0()
73
+ .accounts({
74
+ dao,
75
+ authority: daoAcc.authority,
76
+ })
77
+ .instruction());
78
+ }
79
+ if (argv.resetSubDaoThread) {
80
+ console.log('resetting subdao thread');
81
+ const dntMint = new PublicKey(argv.dntMint);
82
+ const subDao = subDaoKey(dntMint)[0];
83
+ const subdaoAcc = await hsdProgram.account.subDaoV0.fetch(subDao);
84
+ instructions.push(await hsdProgram.methods
85
+ .resetSubDaoThreadV0()
86
+ .accounts({
87
+ subDao,
88
+ authority: subdaoAcc.authority,
89
+ threadPayer: subdaoAcc.authority,
90
+ })
91
+ .instruction());
92
+ }
93
+ await sendInstructionsOrSquads({
94
+ provider,
95
+ instructions,
96
+ executeTransaction: argv.executeTransaction,
97
+ squads,
98
+ multisig: argv.multisig ? new PublicKey(argv.multisig) : undefined,
99
+ authorityIndex: argv.authorityIndex,
100
+ signers: [],
101
+ });
102
+ }
103
+ //# sourceMappingURL=reset-clockwork.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset-clockwork.js","sourceRoot":"","sources":["../../../src/reset-clockwork.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,104 @@
1
+ import * as anchor from '@coral-xyz/anchor';
2
+ import { daoKey, init as initDao, subDaoKey, } from '@helium/helium-sub-daos-sdk';
3
+ import { init as initVsr } from '@helium/voter-stake-registry-sdk';
4
+ import { PublicKey } from '@solana/web3.js';
5
+ import Squads from '@sqds/sdk';
6
+ import os from 'os';
7
+ import yargs from 'yargs/yargs';
8
+ import { loadKeypair, sendInstructionsOrSquads } 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
+ hntMint: {
22
+ type: 'string',
23
+ describe: 'Mint of the HNT token. Only used if --resetDaoRecord flag is set',
24
+ },
25
+ dntMint: {
26
+ type: 'string',
27
+ describe: 'Mint of the subdao token. Only used if --resetSubDaoRecord flag is set',
28
+ },
29
+ resetDaoRecord: {
30
+ type: 'boolean',
31
+ describe: 'Reset the dao max vote weight record',
32
+ default: false,
33
+ },
34
+ resetSubDaoRecord: {
35
+ type: 'boolean',
36
+ describe: 'Reset the subdao max vote weight record',
37
+ default: false,
38
+ },
39
+ executeTransaction: {
40
+ type: 'boolean',
41
+ },
42
+ multisig: {
43
+ type: 'string',
44
+ describe: 'Address of the squads multisig to be authority. If not provided, your wallet will be the authority',
45
+ },
46
+ authorityIndex: {
47
+ type: 'number',
48
+ describe: 'Authority index for squads. Defaults to 1',
49
+ default: 1,
50
+ },
51
+ });
52
+ const argv = await yarg.argv;
53
+ process.env.ANCHOR_WALLET = argv.wallet;
54
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
55
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
56
+ if (argv.resetSubDaoRecord && !argv.dntMint) {
57
+ console.log('dnt mint not provided');
58
+ return;
59
+ }
60
+ const provider = anchor.getProvider();
61
+ const wallet = new anchor.Wallet(loadKeypair(argv.wallet));
62
+ const hsdProgram = await initDao(provider);
63
+ const hvsrProgram = await initVsr(provider);
64
+ const instructions = [];
65
+ const squads = Squads.endpoint(process.env.ANCHOR_PROVIDER_URL, wallet, {
66
+ commitmentOrConfig: 'finalized',
67
+ });
68
+ if (argv.resetDaoRecord) {
69
+ console.log('resetting dao maxVoterWeightRecord');
70
+ const hntMint = new PublicKey(argv.hntMint);
71
+ const dao = daoKey(hntMint)[0];
72
+ const daoAcc = await hsdProgram.account.daoV0.fetch(dao);
73
+ instructions.push(await hvsrProgram.methods
74
+ .updateMaxVoterWeightV0()
75
+ .accounts({
76
+ registrar: daoAcc.registrar,
77
+ realmGoverningTokenMint: hntMint,
78
+ })
79
+ .instruction());
80
+ }
81
+ if (argv.resetSubDaoRecord) {
82
+ console.log('resetting subdao maxVoterWeightRecord');
83
+ const dntMint = new PublicKey(argv.dntMint);
84
+ const subDao = subDaoKey(dntMint)[0];
85
+ const subDaoAcc = await hsdProgram.account.subDaoV0.fetch(subDao);
86
+ instructions.push(await hvsrProgram.methods
87
+ .updateMaxVoterWeightV0()
88
+ .accounts({
89
+ registrar: subDaoAcc.registrar,
90
+ realmGoverningTokenMint: dntMint,
91
+ })
92
+ .instruction());
93
+ }
94
+ await sendInstructionsOrSquads({
95
+ provider,
96
+ instructions,
97
+ executeTransaction: argv.executeTransaction,
98
+ squads,
99
+ multisig: argv.multisig ? new PublicKey(argv.multisig) : undefined,
100
+ authorityIndex: argv.authorityIndex,
101
+ signers: [],
102
+ });
103
+ }
104
+ //# sourceMappingURL=reset-vsr-max-voter-record.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset-vsr-max-voter-record.js","sourceRoot":"","sources":["../../../src/reset-vsr-max-voter-record.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,141 @@
1
+ import * as anchor from '@coral-xyz/anchor';
2
+ import { daoKey, init as initDao, subDaoKey, } from '@helium/helium-sub-daos-sdk';
3
+ import { init as initVsr } from '@helium/voter-stake-registry-sdk';
4
+ import { PublicKey } from '@solana/web3.js';
5
+ import Squads from '@sqds/sdk';
6
+ import os from 'os';
7
+ import yargs from 'yargs/yargs';
8
+ import { getTimestampFromDays, getUnixTimestamp, loadKeypair, sendInstructionsOrSquads, } from './utils';
9
+ const SECS_PER_DAY = 86400;
10
+ const SECS_PER_YEAR = 365 * SECS_PER_DAY;
11
+ const MAX_LOCKUP = 4 * SECS_PER_YEAR;
12
+ export async function run(args = process.argv) {
13
+ const yarg = yargs(args).options({
14
+ wallet: {
15
+ alias: 'k',
16
+ describe: 'Anchor wallet keypair',
17
+ default: `${os.homedir()}/.config/solana/id.json`,
18
+ },
19
+ url: {
20
+ alias: 'u',
21
+ default: 'http://127.0.0.1:8899',
22
+ describe: 'The solana url',
23
+ },
24
+ hntMint: {
25
+ type: 'string',
26
+ describe: 'Mint of the HNT token. Only used if --resetDaoVotingMint flag is set',
27
+ },
28
+ dntMint: {
29
+ type: 'string',
30
+ describe: 'Mint of the subdao token. Only used if --resetSubDaoVotingMint flag is set',
31
+ },
32
+ resetDaoVotingMint: {
33
+ type: 'boolean',
34
+ describe: 'Reset the dao voting mint',
35
+ default: false,
36
+ },
37
+ resetSubDaoVotingMint: {
38
+ type: 'boolean',
39
+ describe: 'Reset the subdao voting mint',
40
+ default: false,
41
+ },
42
+ executeTransaction: {
43
+ type: 'boolean',
44
+ },
45
+ multisig: {
46
+ type: 'string',
47
+ describe: 'Address of the squads multisig to be authority. If not provided, your wallet will be the authority',
48
+ },
49
+ authorityIndex: {
50
+ type: 'number',
51
+ describe: 'Authority index for squads. Defaults to 1',
52
+ default: 1,
53
+ },
54
+ });
55
+ const argv = await yarg.argv;
56
+ process.env.ANCHOR_WALLET = argv.wallet;
57
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
58
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
59
+ if (argv.resetSubDaoVotingMint && !argv.dntMint) {
60
+ console.log('dnt mint not provided');
61
+ return;
62
+ }
63
+ const provider = anchor.getProvider();
64
+ const wallet = new anchor.Wallet(loadKeypair(argv.wallet));
65
+ const hsdProgram = await initDao(provider);
66
+ const hvsrProgram = await initVsr(provider);
67
+ const now = Number(await getUnixTimestamp(provider));
68
+ const in7Days = now + getTimestampFromDays(7);
69
+ const instructions = [];
70
+ const squads = Squads.endpoint(process.env.ANCHOR_PROVIDER_URL, wallet, {
71
+ commitmentOrConfig: 'finalized',
72
+ });
73
+ if (argv.resetDaoVotingMint) {
74
+ console.log('resetting dao votingMint');
75
+ const hntMint = new PublicKey(argv.hntMint);
76
+ const dao = daoKey(hntMint)[0];
77
+ const daoAcc = await hsdProgram.account.daoV0.fetch(dao);
78
+ instructions.push(await hvsrProgram.methods
79
+ .configureVotingMintV0({
80
+ idx: 0,
81
+ digitShift: 0,
82
+ baselineVoteWeightScaledFactor: new anchor.BN(0 * 1e9),
83
+ maxExtraLockupVoteWeightScaledFactor: new anchor.BN(100 * 1e9),
84
+ lockupSaturationSecs: new anchor.BN(MAX_LOCKUP),
85
+ genesisVotePowerMultiplier: 3,
86
+ genesisVotePowerMultiplierExpirationTs: new anchor.BN(in7Days),
87
+ })
88
+ .accounts({
89
+ registrar: daoAcc.registrar,
90
+ realmAuthority: daoAcc.authority,
91
+ mint: hntMint,
92
+ })
93
+ .remainingAccounts([
94
+ {
95
+ pubkey: hntMint,
96
+ isSigner: false,
97
+ isWritable: false,
98
+ },
99
+ ])
100
+ .instruction());
101
+ }
102
+ if (argv.resetSubDaoVotingMint) {
103
+ console.log('resetting subdao votingMint');
104
+ const dntMint = new PublicKey(argv.dntMint);
105
+ const subDao = subDaoKey(dntMint)[0];
106
+ const subdaoAcc = await hsdProgram.account.subDaoV0.fetch(subDao);
107
+ instructions.push(await hvsrProgram.methods
108
+ .configureVotingMintV0({
109
+ idx: 0,
110
+ digitShift: -1,
111
+ baselineVoteWeightScaledFactor: new anchor.BN(0 * 1e9),
112
+ maxExtraLockupVoteWeightScaledFactor: new anchor.BN(100 * 1e9),
113
+ lockupSaturationSecs: new anchor.BN(MAX_LOCKUP),
114
+ genesisVotePowerMultiplier: 1,
115
+ genesisVotePowerMultiplierExpirationTs: new anchor.BN(now),
116
+ })
117
+ .accounts({
118
+ registrar: subdaoAcc.registrar,
119
+ mint: dntMint,
120
+ realmAuthority: subdaoAcc.authority,
121
+ })
122
+ .remainingAccounts([
123
+ {
124
+ pubkey: dntMint,
125
+ isSigner: false,
126
+ isWritable: false,
127
+ },
128
+ ])
129
+ .instruction());
130
+ }
131
+ await sendInstructionsOrSquads({
132
+ provider,
133
+ instructions,
134
+ executeTransaction: argv.executeTransaction,
135
+ squads,
136
+ multisig: argv.multisig ? new PublicKey(argv.multisig) : undefined,
137
+ authorityIndex: argv.authorityIndex,
138
+ signers: [],
139
+ });
140
+ }
141
+ //# sourceMappingURL=reset-vsr-voting-mint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reset-vsr-voting-mint.js","sourceRoot":"","sources":["../../../src/reset-vsr-voting-mint.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,218 @@
1
+ import { ClockworkProvider, parseTransactionInstructions, } from '@clockwork-xyz/sdk';
2
+ import * as anchor from '@coral-xyz/anchor';
3
+ import Address from '@helium/address';
4
+ import { ED25519_KEY_TYPE } from '@helium/address/build/KeyTypes';
5
+ import { fanoutKey, init, membershipVoucherKey } from '@helium/fanout-sdk';
6
+ import { createMintInstructions, sendInstructions } from '@helium/spl-utils';
7
+ import { createAssociatedTokenAccountIdempotentInstruction, getAccount, getAssociatedTokenAddressSync, } from '@solana/spl-token';
8
+ import { ComputeBudgetProgram, Keypair, PublicKey } from '@solana/web3.js';
9
+ import Squads from '@sqds/sdk';
10
+ import { loadKeypair } from '@switchboard-xyz/solana.js';
11
+ import fs from 'fs';
12
+ import os from 'os';
13
+ import yargs from 'yargs/yargs';
14
+ import { createAndMint, exists } from './utils';
15
+ export async function run(args = process.argv) {
16
+ const yarg = yargs(args).options({
17
+ wallet: {
18
+ alias: 'k',
19
+ describe: 'Anchor wallet keypair',
20
+ default: `${os.homedir()}/.config/solana/id.json`,
21
+ },
22
+ url: {
23
+ alias: 'u',
24
+ default: 'http://127.0.0.1:8899',
25
+ describe: 'The solana url',
26
+ },
27
+ hnt: {
28
+ type: 'string',
29
+ describe: 'Pubkey of hnt',
30
+ required: true,
31
+ },
32
+ state: {
33
+ type: 'string',
34
+ alias: 's',
35
+ default: `${__dirname}/../../migration-service/export.json`,
36
+ },
37
+ name: {
38
+ type: 'string',
39
+ },
40
+ multisig: {
41
+ type: 'string',
42
+ describe: 'Address of the squads multisig to control the dao. If not provided, your wallet will be the authority',
43
+ },
44
+ authorityIndex: {
45
+ type: 'number',
46
+ describe: 'Authority index for squads. Defaults to 1',
47
+ default: 1,
48
+ },
49
+ hstKeypair: {
50
+ type: 'string',
51
+ describe: 'Keypair of the HST token',
52
+ default: `${__dirname}/../keypairs/hst.json`,
53
+ },
54
+ hstReceiptBasePath: {
55
+ type: 'string',
56
+ describe: 'Keypair of the HST receipt token',
57
+ default: `${__dirname}/../keypairs`,
58
+ },
59
+ bucket: {
60
+ type: 'string',
61
+ describe: 'Bucket URL prefix holding all of the metadata jsons',
62
+ default: 'https://shdw-drive.genesysgo.net/6tcnBSybPG7piEDShBcrVtYJDPSvGrDbVvXmXKpzBvWP',
63
+ },
64
+ });
65
+ const argv = await yarg.argv;
66
+ process.env.ANCHOR_WALLET = argv.wallet;
67
+ process.env.ANCHOR_PROVIDER_URL = argv.url;
68
+ anchor.setProvider(anchor.AnchorProvider.local(argv.url));
69
+ const provider = anchor.getProvider();
70
+ const wallet = new anchor.Wallet(loadKeypair(argv.wallet));
71
+ const hstKeypair = loadKeypair(argv.hstKeypair);
72
+ let authority = provider.wallet.publicKey;
73
+ let multisig = argv.multisig ? new PublicKey(argv.multisig) : null;
74
+ const squads = Squads.endpoint(process.env.ANCHOR_PROVIDER_URL, wallet, {
75
+ commitmentOrConfig: 'finalized',
76
+ });
77
+ if (multisig) {
78
+ authority = squads.getAuthorityPDA(multisig, argv.authorityIndex);
79
+ }
80
+ const state = JSON.parse(fs.readFileSync(argv.state).toString());
81
+ const accounts = state.accounts;
82
+ const hnt = new PublicKey(argv.hnt);
83
+ const hst = hstKeypair.publicKey;
84
+ const fanoutProgram = await init(provider);
85
+ const totalHst = Object.values(accounts).reduce((acc, v) => {
86
+ if (v.hst) {
87
+ return acc.add(new anchor.BN(v.hst));
88
+ }
89
+ return acc;
90
+ }, new anchor.BN(0));
91
+ await createAndMint({
92
+ provider,
93
+ mintKeypair: hstKeypair,
94
+ amount: totalHst.toNumber() / 10 ** 8,
95
+ decimals: 8,
96
+ metadataUrl: `${argv.bucket}/hst.json`,
97
+ updateAuthority: authority,
98
+ });
99
+ const fanout = fanoutKey(argv.name)[0];
100
+ const hntAccount = await getAssociatedTokenAddressSync(hnt, fanout, true);
101
+ console.log('Outputting hnt to', hntAccount.toBase58());
102
+ if (!(await exists(provider.connection, fanout))) {
103
+ await fanoutProgram.methods
104
+ .initializeFanoutV0({
105
+ name: argv.name,
106
+ })
107
+ .preInstructions([
108
+ ComputeBudgetProgram.setComputeUnitLimit({ units: 500000 }),
109
+ ])
110
+ .accounts({
111
+ authority,
112
+ membershipMint: hst,
113
+ fanoutMint: hnt,
114
+ })
115
+ .rpc({ skipPreflight: true });
116
+ }
117
+ const clockworkProvider = new ClockworkProvider(provider.wallet, provider.connection);
118
+ for (const [address, account] of Object.entries(accounts)) {
119
+ if (!account.hst || account.hst === 0 || account.hst === '0') {
120
+ continue;
121
+ }
122
+ let solAddress = toSolana(address);
123
+ if (!solAddress) {
124
+ throw new Error("HST Owner that doesn't have a sol address " + address);
125
+ }
126
+ const hstAmount = new anchor.BN(account.hst);
127
+ let mint;
128
+ const mintPath = `${argv.hstReceiptBasePath}/hst-receipt-${address}.json`;
129
+ if (fs.existsSync(mintPath)) {
130
+ mint = loadKeypair(mintPath);
131
+ }
132
+ else {
133
+ mint = Keypair.generate();
134
+ fs.writeFileSync(mintPath, JSON.stringify(Array.from(mint.secretKey)));
135
+ }
136
+ const ownerActual = (await provider.connection.getTokenLargestAccounts(mint.publicKey)).value[0]?.address;
137
+ if (ownerActual && ownerActual.toBase58() !== solAddress.toBase58()) {
138
+ const acc = await getAccount(provider.connection, ownerActual);
139
+ console.log('Found diff address', solAddress.toBase58(), acc.owner.toBase58());
140
+ solAddress = acc.owner;
141
+ }
142
+ const [voucher] = membershipVoucherKey(mint.publicKey);
143
+ if (!(await exists(provider.connection, voucher))) {
144
+ await fanoutProgram.methods
145
+ .stakeV0({
146
+ amount: hstAmount,
147
+ })
148
+ .preInstructions(await createMintInstructions(provider, 0, voucher, voucher, mint))
149
+ .accounts({
150
+ recipient: solAddress,
151
+ fanout,
152
+ mint: mint.publicKey,
153
+ })
154
+ .signers([mint])
155
+ .rpc({ skipPreflight: true });
156
+ }
157
+ // 2️⃣ Define a trigger condition.
158
+ const trigger = {
159
+ cron: {
160
+ schedule: '0 30 0 * * * *',
161
+ skippable: true,
162
+ },
163
+ };
164
+ // 3️⃣ Create the thread.
165
+ const threadId = `${argv.name}-${mint.publicKey.toBase58().slice(0, 8)}`;
166
+ const [thread] = threadKey(provider.wallet.publicKey, threadId);
167
+ console.log('Thread ID', threadId, thread.toBase58());
168
+ const memberHntAccount = await getAssociatedTokenAddressSync(hnt, solAddress, true);
169
+ if (!(await exists(provider.connection, memberHntAccount))) {
170
+ await sendInstructions(provider, [
171
+ createAssociatedTokenAccountIdempotentInstruction(provider.wallet.publicKey, memberHntAccount, solAddress, hnt),
172
+ ]);
173
+ }
174
+ const distributeIx = await fanoutProgram.methods
175
+ .distributeV0()
176
+ .accounts({
177
+ payer: new PublicKey('C1ockworkPayer11111111111111111111111111111'),
178
+ fanout,
179
+ owner: solAddress,
180
+ mint: mint.publicKey,
181
+ })
182
+ .instruction();
183
+ if (!(await exists(provider.connection, thread))) {
184
+ const tx = await clockworkProvider.threadCreate(provider.wallet.publicKey, // authority
185
+ threadId, // id
186
+ [distributeIx], // instructions
187
+ trigger, // trigger
188
+ anchor.web3.LAMPORTS_PER_SOL // amount
189
+ );
190
+ }
191
+ else {
192
+ await clockworkProvider.threadUpdate(provider.wallet.publicKey, thread, {
193
+ instructions: await parseTransactionInstructions([distributeIx]),
194
+ trigger,
195
+ });
196
+ await clockworkProvider.threadReset(provider.wallet.publicKey, thread);
197
+ }
198
+ }
199
+ }
200
+ function toSolana(address) {
201
+ try {
202
+ const addr = Address.fromB58(address);
203
+ if (addr.keyType === ED25519_KEY_TYPE)
204
+ return new PublicKey(addr.publicKey);
205
+ }
206
+ catch (e) {
207
+ return undefined;
208
+ }
209
+ }
210
+ const CLOCKWORK_PID = new PublicKey('CLoCKyJ6DXBJqqu2VWx9RLbgnwwR6BMHHuyasVmfMzBh');
211
+ export function threadKey(authority, threadId, programId = CLOCKWORK_PID) {
212
+ return PublicKey.findProgramAddressSync([
213
+ Buffer.from('thread', 'utf8'),
214
+ authority.toBuffer(),
215
+ Buffer.from(threadId, 'utf8'),
216
+ ], programId);
217
+ }
218
+ //# sourceMappingURL=setup-hst.js.map