@nosana/kit 1.0.10 → 2.0.10

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 (289) hide show
  1. package/README.md +539 -152
  2. package/dist/NosanaClient.d.ts +58 -0
  3. package/dist/NosanaClient.js +103 -0
  4. package/dist/NosanaClient.js.map +1 -0
  5. package/dist/config/defaultConfigs.d.ts +2 -1
  6. package/dist/config/defaultConfigs.js +4 -4
  7. package/dist/config/defaultConfigs.js.map +1 -0
  8. package/dist/config/index.d.ts +1 -0
  9. package/dist/config/index.js +1 -0
  10. package/dist/config/index.js.map +1 -0
  11. package/dist/config/types.d.ts +41 -33
  12. package/dist/config/types.js +14 -13
  13. package/dist/config/types.js.map +1 -0
  14. package/dist/config/utils.d.ts +2 -2
  15. package/dist/config/utils.js +11 -4
  16. package/dist/config/utils.js.map +1 -0
  17. package/dist/errors/NosanaError.d.ts +1 -0
  18. package/dist/errors/NosanaError.js +2 -0
  19. package/dist/errors/NosanaError.js.map +1 -0
  20. package/dist/generated_clients/jobs/accounts/index.d.ts +5 -5
  21. package/dist/generated_clients/jobs/accounts/index.js +6 -5
  22. package/dist/generated_clients/jobs/accounts/index.js.map +1 -0
  23. package/dist/generated_clients/jobs/accounts/jobAccount.d.ts +10 -6
  24. package/dist/generated_clients/jobs/accounts/jobAccount.js +6 -2
  25. package/dist/generated_clients/jobs/accounts/jobAccount.js.map +1 -0
  26. package/dist/generated_clients/jobs/accounts/marketAccount.d.ts +6 -2
  27. package/dist/generated_clients/jobs/accounts/marketAccount.js +6 -2
  28. package/dist/generated_clients/jobs/accounts/marketAccount.js.map +1 -0
  29. package/dist/generated_clients/jobs/accounts/runAccount.d.ts +10 -6
  30. package/dist/generated_clients/jobs/accounts/runAccount.js +6 -2
  31. package/dist/generated_clients/jobs/accounts/runAccount.js.map +1 -0
  32. package/dist/generated_clients/jobs/errors/index.d.ts +3 -3
  33. package/dist/generated_clients/jobs/errors/index.js +4 -3
  34. package/dist/generated_clients/jobs/errors/index.js.map +1 -0
  35. package/dist/generated_clients/jobs/errors/nosanaJobs.d.ts +2 -2
  36. package/dist/generated_clients/jobs/errors/nosanaJobs.js +4 -3
  37. package/dist/generated_clients/jobs/errors/nosanaJobs.js.map +1 -0
  38. package/dist/generated_clients/jobs/index.d.ts +7 -7
  39. package/dist/generated_clients/jobs/index.js +8 -7
  40. package/dist/generated_clients/jobs/index.js.map +1 -0
  41. package/dist/generated_clients/jobs/instructions/assign.d.ts +14 -14
  42. package/dist/generated_clients/jobs/instructions/assign.js +8 -8
  43. package/dist/generated_clients/jobs/instructions/assign.js.map +1 -0
  44. package/dist/generated_clients/jobs/instructions/claim.d.ts +13 -13
  45. package/dist/generated_clients/jobs/instructions/claim.js +8 -8
  46. package/dist/generated_clients/jobs/instructions/claim.js.map +1 -0
  47. package/dist/generated_clients/jobs/instructions/clean.d.ts +10 -10
  48. package/dist/generated_clients/jobs/instructions/clean.js +8 -8
  49. package/dist/generated_clients/jobs/instructions/clean.js.map +1 -0
  50. package/dist/generated_clients/jobs/instructions/cleanAdmin.d.ts +11 -11
  51. package/dist/generated_clients/jobs/instructions/cleanAdmin.js +8 -8
  52. package/dist/generated_clients/jobs/instructions/cleanAdmin.js.map +1 -0
  53. package/dist/generated_clients/jobs/instructions/close.d.ts +11 -11
  54. package/dist/generated_clients/jobs/instructions/close.js +8 -8
  55. package/dist/generated_clients/jobs/instructions/close.js.map +1 -0
  56. package/dist/generated_clients/jobs/instructions/closeAdmin.d.ts +11 -11
  57. package/dist/generated_clients/jobs/instructions/closeAdmin.js +8 -8
  58. package/dist/generated_clients/jobs/instructions/closeAdmin.js.map +1 -0
  59. package/dist/generated_clients/jobs/instructions/complete.d.ts +11 -11
  60. package/dist/generated_clients/jobs/instructions/complete.js +9 -12
  61. package/dist/generated_clients/jobs/instructions/complete.js.map +1 -0
  62. package/dist/generated_clients/jobs/instructions/delist.d.ts +11 -11
  63. package/dist/generated_clients/jobs/instructions/delist.js +8 -8
  64. package/dist/generated_clients/jobs/instructions/delist.js.map +1 -0
  65. package/dist/generated_clients/jobs/instructions/end.d.ts +11 -11
  66. package/dist/generated_clients/jobs/instructions/end.js +8 -8
  67. package/dist/generated_clients/jobs/instructions/end.js.map +1 -0
  68. package/dist/generated_clients/jobs/instructions/extend.d.ts +12 -12
  69. package/dist/generated_clients/jobs/instructions/extend.js +8 -8
  70. package/dist/generated_clients/jobs/instructions/extend.js.map +1 -0
  71. package/dist/generated_clients/jobs/instructions/finish.d.ts +23 -20
  72. package/dist/generated_clients/jobs/instructions/finish.js +15 -12
  73. package/dist/generated_clients/jobs/instructions/finish.js.map +1 -0
  74. package/dist/generated_clients/jobs/instructions/index.d.ts +21 -21
  75. package/dist/generated_clients/jobs/instructions/index.js +22 -21
  76. package/dist/generated_clients/jobs/instructions/index.js.map +1 -0
  77. package/dist/generated_clients/jobs/instructions/list.d.ts +14 -14
  78. package/dist/generated_clients/jobs/instructions/list.js +8 -8
  79. package/dist/generated_clients/jobs/instructions/list.js.map +1 -0
  80. package/dist/generated_clients/jobs/instructions/open.d.ts +12 -12
  81. package/dist/generated_clients/jobs/instructions/open.js +8 -8
  82. package/dist/generated_clients/jobs/instructions/open.js.map +1 -0
  83. package/dist/generated_clients/jobs/instructions/quit.d.ts +11 -11
  84. package/dist/generated_clients/jobs/instructions/quit.js +8 -8
  85. package/dist/generated_clients/jobs/instructions/quit.js.map +1 -0
  86. package/dist/generated_clients/jobs/instructions/quitAdmin.d.ts +11 -11
  87. package/dist/generated_clients/jobs/instructions/quitAdmin.js +8 -8
  88. package/dist/generated_clients/jobs/instructions/quitAdmin.js.map +1 -0
  89. package/dist/generated_clients/jobs/instructions/recover.d.ts +11 -11
  90. package/dist/generated_clients/jobs/instructions/recover.js +8 -8
  91. package/dist/generated_clients/jobs/instructions/recover.js.map +1 -0
  92. package/dist/generated_clients/jobs/instructions/stop.d.ts +11 -11
  93. package/dist/generated_clients/jobs/instructions/stop.js +8 -8
  94. package/dist/generated_clients/jobs/instructions/stop.js.map +1 -0
  95. package/dist/generated_clients/jobs/instructions/update.d.ts +11 -11
  96. package/dist/generated_clients/jobs/instructions/update.js +8 -8
  97. package/dist/generated_clients/jobs/instructions/update.js.map +1 -0
  98. package/dist/generated_clients/jobs/instructions/work.d.ts +13 -13
  99. package/dist/generated_clients/jobs/instructions/work.js +8 -8
  100. package/dist/generated_clients/jobs/instructions/work.js.map +1 -0
  101. package/dist/generated_clients/jobs/programs/index.d.ts +3 -3
  102. package/dist/generated_clients/jobs/programs/index.js +4 -3
  103. package/dist/generated_clients/jobs/programs/index.js.map +1 -0
  104. package/dist/generated_clients/jobs/programs/nosanaJobs.d.ts +52 -50
  105. package/dist/generated_clients/jobs/programs/nosanaJobs.js +30 -31
  106. package/dist/generated_clients/jobs/programs/nosanaJobs.js.map +1 -0
  107. package/dist/generated_clients/jobs/shared/index.d.ts +5 -5
  108. package/dist/generated_clients/jobs/shared/index.js +4 -3
  109. package/dist/generated_clients/jobs/shared/index.js.map +1 -0
  110. package/dist/generated_clients/jobs/types/index.d.ts +5 -5
  111. package/dist/generated_clients/jobs/types/index.js +6 -5
  112. package/dist/generated_clients/jobs/types/index.js.map +1 -0
  113. package/dist/generated_clients/jobs/types/jobState.d.ts +12 -11
  114. package/dist/generated_clients/jobs/types/jobState.js +8 -8
  115. package/dist/generated_clients/jobs/types/jobState.js.map +1 -0
  116. package/dist/generated_clients/jobs/types/jobType.d.ts +15 -14
  117. package/dist/generated_clients/jobs/types/jobType.js +11 -11
  118. package/dist/generated_clients/jobs/types/jobType.js.map +1 -0
  119. package/dist/generated_clients/jobs/types/queueType.d.ts +12 -11
  120. package/dist/generated_clients/jobs/types/queueType.js +8 -8
  121. package/dist/generated_clients/jobs/types/queueType.js.map +1 -0
  122. package/dist/generated_clients/merkle_distributor/accounts/claimStatus.d.ts +10 -6
  123. package/dist/generated_clients/merkle_distributor/accounts/claimStatus.js +6 -2
  124. package/dist/generated_clients/merkle_distributor/accounts/claimStatus.js.map +1 -0
  125. package/dist/generated_clients/merkle_distributor/accounts/index.d.ts +4 -4
  126. package/dist/generated_clients/merkle_distributor/accounts/index.js +5 -4
  127. package/dist/generated_clients/merkle_distributor/accounts/index.js.map +1 -0
  128. package/dist/generated_clients/merkle_distributor/accounts/merkleDistributor.d.ts +10 -6
  129. package/dist/generated_clients/merkle_distributor/accounts/merkleDistributor.js +6 -2
  130. package/dist/generated_clients/merkle_distributor/accounts/merkleDistributor.js.map +1 -0
  131. package/dist/generated_clients/merkle_distributor/errors/index.d.ts +3 -3
  132. package/dist/generated_clients/merkle_distributor/errors/index.js +4 -3
  133. package/dist/generated_clients/merkle_distributor/errors/index.js.map +1 -0
  134. package/dist/generated_clients/merkle_distributor/errors/merkleDistributor.d.ts +2 -2
  135. package/dist/generated_clients/merkle_distributor/errors/merkleDistributor.js +4 -3
  136. package/dist/generated_clients/merkle_distributor/errors/merkleDistributor.js.map +1 -0
  137. package/dist/generated_clients/merkle_distributor/index.d.ts +6 -6
  138. package/dist/generated_clients/merkle_distributor/index.js +7 -6
  139. package/dist/generated_clients/merkle_distributor/index.js.map +1 -0
  140. package/dist/generated_clients/merkle_distributor/instructions/claimLocked.d.ts +11 -11
  141. package/dist/generated_clients/merkle_distributor/instructions/claimLocked.js +8 -8
  142. package/dist/generated_clients/merkle_distributor/instructions/claimLocked.js.map +1 -0
  143. package/dist/generated_clients/merkle_distributor/instructions/clawback.d.ts +11 -11
  144. package/dist/generated_clients/merkle_distributor/instructions/clawback.js +8 -8
  145. package/dist/generated_clients/merkle_distributor/instructions/clawback.js.map +1 -0
  146. package/dist/generated_clients/merkle_distributor/instructions/closeClaimStatus.d.ts +11 -11
  147. package/dist/generated_clients/merkle_distributor/instructions/closeClaimStatus.js +8 -8
  148. package/dist/generated_clients/merkle_distributor/instructions/closeClaimStatus.js.map +1 -0
  149. package/dist/generated_clients/merkle_distributor/instructions/closeDistributor.d.ts +11 -11
  150. package/dist/generated_clients/merkle_distributor/instructions/closeDistributor.js +8 -8
  151. package/dist/generated_clients/merkle_distributor/instructions/closeDistributor.js.map +1 -0
  152. package/dist/generated_clients/merkle_distributor/instructions/index.d.ts +11 -11
  153. package/dist/generated_clients/merkle_distributor/instructions/index.js +12 -11
  154. package/dist/generated_clients/merkle_distributor/instructions/index.js.map +1 -0
  155. package/dist/generated_clients/merkle_distributor/instructions/newClaim.d.ts +8 -8
  156. package/dist/generated_clients/merkle_distributor/instructions/newClaim.js +8 -8
  157. package/dist/generated_clients/merkle_distributor/instructions/newClaim.js.map +1 -0
  158. package/dist/generated_clients/merkle_distributor/instructions/newDistributor.d.ts +11 -11
  159. package/dist/generated_clients/merkle_distributor/instructions/newDistributor.js +8 -8
  160. package/dist/generated_clients/merkle_distributor/instructions/newDistributor.js.map +1 -0
  161. package/dist/generated_clients/merkle_distributor/instructions/setAdmin.d.ts +11 -11
  162. package/dist/generated_clients/merkle_distributor/instructions/setAdmin.js +8 -8
  163. package/dist/generated_clients/merkle_distributor/instructions/setAdmin.js.map +1 -0
  164. package/dist/generated_clients/merkle_distributor/instructions/setClawbackReceiver.d.ts +11 -11
  165. package/dist/generated_clients/merkle_distributor/instructions/setClawbackReceiver.js +8 -8
  166. package/dist/generated_clients/merkle_distributor/instructions/setClawbackReceiver.js.map +1 -0
  167. package/dist/generated_clients/merkle_distributor/instructions/setEnableSlot.d.ts +11 -11
  168. package/dist/generated_clients/merkle_distributor/instructions/setEnableSlot.js +9 -12
  169. package/dist/generated_clients/merkle_distributor/instructions/setEnableSlot.js.map +1 -0
  170. package/dist/generated_clients/merkle_distributor/programs/index.d.ts +3 -3
  171. package/dist/generated_clients/merkle_distributor/programs/index.js +4 -3
  172. package/dist/generated_clients/merkle_distributor/programs/index.js.map +1 -0
  173. package/dist/generated_clients/merkle_distributor/programs/merkleDistributor.d.ts +29 -27
  174. package/dist/generated_clients/merkle_distributor/programs/merkleDistributor.js +18 -19
  175. package/dist/generated_clients/merkle_distributor/programs/merkleDistributor.js.map +1 -0
  176. package/dist/generated_clients/merkle_distributor/shared/index.d.ts +5 -5
  177. package/dist/generated_clients/merkle_distributor/shared/index.js +4 -3
  178. package/dist/generated_clients/merkle_distributor/shared/index.js.map +1 -0
  179. package/dist/generated_clients/staking/accounts/index.d.ts +4 -4
  180. package/dist/generated_clients/staking/accounts/index.js +5 -4
  181. package/dist/generated_clients/staking/accounts/index.js.map +1 -0
  182. package/dist/generated_clients/staking/accounts/settingsAccount.d.ts +9 -6
  183. package/dist/generated_clients/staking/accounts/settingsAccount.js +6 -2
  184. package/dist/generated_clients/staking/accounts/settingsAccount.js.map +1 -0
  185. package/dist/generated_clients/staking/accounts/stakeAccount.d.ts +9 -6
  186. package/dist/generated_clients/staking/accounts/stakeAccount.js +6 -2
  187. package/dist/generated_clients/staking/accounts/stakeAccount.js.map +1 -0
  188. package/dist/generated_clients/staking/errors/index.d.ts +3 -3
  189. package/dist/generated_clients/staking/errors/index.js +4 -3
  190. package/dist/generated_clients/staking/errors/index.js.map +1 -0
  191. package/dist/generated_clients/staking/errors/nosanaStaking.d.ts +2 -2
  192. package/dist/generated_clients/staking/errors/nosanaStaking.js +4 -3
  193. package/dist/generated_clients/staking/errors/nosanaStaking.js.map +1 -0
  194. package/dist/generated_clients/staking/index.d.ts +6 -6
  195. package/dist/generated_clients/staking/index.js +7 -6
  196. package/dist/generated_clients/staking/index.js.map +1 -0
  197. package/dist/generated_clients/staking/instructions/close.d.ts +11 -11
  198. package/dist/generated_clients/staking/instructions/close.js +8 -8
  199. package/dist/generated_clients/staking/instructions/close.js.map +1 -0
  200. package/dist/generated_clients/staking/instructions/extend.d.ts +11 -11
  201. package/dist/generated_clients/staking/instructions/extend.js +9 -12
  202. package/dist/generated_clients/staking/instructions/extend.js.map +1 -0
  203. package/dist/generated_clients/staking/instructions/index.d.ts +12 -12
  204. package/dist/generated_clients/staking/instructions/index.js +13 -12
  205. package/dist/generated_clients/staking/instructions/index.js.map +1 -0
  206. package/dist/generated_clients/staking/instructions/init.d.ts +11 -11
  207. package/dist/generated_clients/staking/instructions/init.js +8 -8
  208. package/dist/generated_clients/staking/instructions/init.js.map +1 -0
  209. package/dist/generated_clients/staking/instructions/restake.d.ts +11 -11
  210. package/dist/generated_clients/staking/instructions/restake.js +8 -8
  211. package/dist/generated_clients/staking/instructions/restake.js.map +1 -0
  212. package/dist/generated_clients/staking/instructions/slash.d.ts +11 -11
  213. package/dist/generated_clients/staking/instructions/slash.js +8 -8
  214. package/dist/generated_clients/staking/instructions/slash.js.map +1 -0
  215. package/dist/generated_clients/staking/instructions/stake.d.ts +11 -11
  216. package/dist/generated_clients/staking/instructions/stake.js +8 -8
  217. package/dist/generated_clients/staking/instructions/stake.js.map +1 -0
  218. package/dist/generated_clients/staking/instructions/topup.d.ts +11 -11
  219. package/dist/generated_clients/staking/instructions/topup.js +8 -8
  220. package/dist/generated_clients/staking/instructions/topup.js.map +1 -0
  221. package/dist/generated_clients/staking/instructions/unstake.d.ts +11 -11
  222. package/dist/generated_clients/staking/instructions/unstake.js +8 -8
  223. package/dist/generated_clients/staking/instructions/unstake.js.map +1 -0
  224. package/dist/generated_clients/staking/instructions/updateSettings.d.ts +11 -11
  225. package/dist/generated_clients/staking/instructions/updateSettings.js +8 -8
  226. package/dist/generated_clients/staking/instructions/updateSettings.js.map +1 -0
  227. package/dist/generated_clients/staking/instructions/withdraw.d.ts +11 -11
  228. package/dist/generated_clients/staking/instructions/withdraw.js +8 -8
  229. package/dist/generated_clients/staking/instructions/withdraw.js.map +1 -0
  230. package/dist/generated_clients/staking/programs/index.d.ts +3 -3
  231. package/dist/generated_clients/staking/programs/index.js +4 -3
  232. package/dist/generated_clients/staking/programs/index.js.map +1 -0
  233. package/dist/generated_clients/staking/programs/nosanaStaking.d.ts +33 -31
  234. package/dist/generated_clients/staking/programs/nosanaStaking.js +20 -21
  235. package/dist/generated_clients/staking/programs/nosanaStaking.js.map +1 -0
  236. package/dist/generated_clients/staking/shared/index.d.ts +5 -5
  237. package/dist/generated_clients/staking/shared/index.js +4 -3
  238. package/dist/generated_clients/staking/shared/index.js.map +1 -0
  239. package/dist/index.d.ts +13 -32
  240. package/dist/index.js +13 -37
  241. package/dist/index.js.map +1 -0
  242. package/dist/logger/Logger.d.ts +4 -4
  243. package/dist/logger/Logger.js +7 -2
  244. package/dist/logger/Logger.js.map +1 -0
  245. package/dist/services/SolanaService.d.ts +49 -26
  246. package/dist/services/SolanaService.js +191 -133
  247. package/dist/services/SolanaService.js.map +1 -0
  248. package/dist/services/TokenService.d.ts +41 -0
  249. package/dist/services/TokenService.js +136 -0
  250. package/dist/services/TokenService.js.map +1 -0
  251. package/dist/services/programs/JobsProgram.d.ts +106 -0
  252. package/dist/services/programs/JobsProgram.js +584 -0
  253. package/dist/services/programs/JobsProgram.js.map +1 -0
  254. package/dist/services/programs/MerkleDistributorProgram.d.ts +101 -0
  255. package/dist/services/programs/MerkleDistributorProgram.js +343 -0
  256. package/dist/services/programs/MerkleDistributorProgram.js.map +1 -0
  257. package/dist/services/programs/StakeProgram.d.ts +46 -0
  258. package/dist/services/programs/StakeProgram.js +87 -0
  259. package/dist/services/programs/StakeProgram.js.map +1 -0
  260. package/dist/types.d.ts +17 -0
  261. package/dist/types.js +2 -0
  262. package/dist/types.js.map +1 -0
  263. package/dist/utils/convertBigIntToNumber.d.ts +19 -0
  264. package/dist/utils/convertBigIntToNumber.js +15 -0
  265. package/dist/utils/convertBigIntToNumber.js.map +1 -0
  266. package/dist/utils/getStaticAccounts.d.ts +23 -0
  267. package/dist/utils/getStaticAccounts.js +39 -0
  268. package/dist/utils/getStaticAccounts.js.map +1 -0
  269. package/dist/utils/index.d.ts +3 -20
  270. package/dist/utils/index.js +5 -16
  271. package/dist/utils/index.js.map +1 -0
  272. package/dist/utils/walletToAuthorizationSigner.d.ts +10 -0
  273. package/dist/utils/walletToAuthorizationSigner.js +42 -0
  274. package/dist/utils/walletToAuthorizationSigner.js.map +1 -0
  275. package/package.json +17 -14
  276. package/dist/ipfs/IPFS.d.ts +0 -50
  277. package/dist/ipfs/IPFS.js +0 -149
  278. package/dist/programs/BaseProgram.d.ts +0 -20
  279. package/dist/programs/BaseProgram.js +0 -31
  280. package/dist/programs/JobsProgram.d.ts +0 -129
  281. package/dist/programs/JobsProgram.js +0 -559
  282. package/dist/programs/MerkleDistributorProgram.d.ts +0 -115
  283. package/dist/programs/MerkleDistributorProgram.js +0 -337
  284. package/dist/programs/StakeProgram.d.ts +0 -29
  285. package/dist/programs/StakeProgram.js +0 -91
  286. package/dist/services/NosService.d.ts +0 -48
  287. package/dist/services/NosService.js +0 -139
  288. package/dist/utils/walletConverter.d.ts +0 -9
  289. package/dist/utils/walletConverter.js +0 -141
@@ -0,0 +1,23 @@
1
+ import { Address } from '@solana/kit';
2
+ import type { SolanaService } from '../services/SolanaService.js';
3
+ import type { ProgramConfig } from '../config/types.js';
4
+ export type StaticAccounts = {
5
+ rewardsReflection: Address;
6
+ rewardsVault: Address;
7
+ rewardsProgram: Address;
8
+ jobsProgram: Address;
9
+ };
10
+ export type StaticAccountsCache = {
11
+ value?: StaticAccounts;
12
+ promise?: Promise<StaticAccounts>;
13
+ };
14
+ /**
15
+ * Gets the static accounts, initializing them if needed.
16
+ * This function caches the result to avoid redundant PDA lookups.
17
+ *
18
+ * @param programsConfig - Programs configuration
19
+ * @param solana - Solana service for PDA lookups
20
+ * @param cache - Optional cache object to store the result (for memoization)
21
+ * @returns Promise resolving to static accounts
22
+ */
23
+ export declare function getStaticAccounts(programsConfig: ProgramConfig, solana: SolanaService, cache?: StaticAccountsCache): Promise<StaticAccounts>;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Gets the static accounts, initializing them if needed.
3
+ * This function caches the result to avoid redundant PDA lookups.
4
+ *
5
+ * @param programsConfig - Programs configuration
6
+ * @param solana - Solana service for PDA lookups
7
+ * @param cache - Optional cache object to store the result (for memoization)
8
+ * @returns Promise resolving to static accounts
9
+ */
10
+ export async function getStaticAccounts(programsConfig, solana, cache) {
11
+ // Return cached value if available
12
+ if (cache?.value) {
13
+ return cache.value;
14
+ }
15
+ // If we're already initializing, return the existing promise
16
+ if (cache?.promise) {
17
+ return cache.promise;
18
+ }
19
+ // Start initialization and store the promise
20
+ const promise = (async () => {
21
+ const staticAccounts = {
22
+ rewardsReflection: await solana.pda(['reflection'], programsConfig.rewardsAddress),
23
+ rewardsVault: await solana.pda([programsConfig.nosTokenAddress], programsConfig.rewardsAddress),
24
+ rewardsProgram: programsConfig.rewardsAddress,
25
+ jobsProgram: programsConfig.jobsAddress,
26
+ };
27
+ // Cache the result
28
+ if (cache) {
29
+ cache.value = staticAccounts;
30
+ cache.promise = undefined;
31
+ }
32
+ return staticAccounts;
33
+ })();
34
+ if (cache) {
35
+ cache.promise = promise;
36
+ }
37
+ return promise;
38
+ }
39
+ //# sourceMappingURL=getStaticAccounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getStaticAccounts.js","sourceRoot":"","sources":["../../src/utils/getStaticAccounts.ts"],"names":[],"mappings":"AAgBA;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,cAA6B,EAC7B,MAAqB,EACrB,KAA2B;IAE3B,mCAAmC;IACnC,IAAI,KAAK,EAAE,KAAK,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC,KAAK,CAAC;IACrB,CAAC;IAED,6DAA6D;IAC7D,IAAI,KAAK,EAAE,OAAO,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IAED,6CAA6C;IAC7C,MAAM,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;QAC1B,MAAM,cAAc,GAAmB;YACrC,iBAAiB,EAAE,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,cAAc,CAAC,cAAc,CAAC;YAClF,YAAY,EAAE,MAAM,MAAM,CAAC,GAAG,CAC5B,CAAC,cAAc,CAAC,eAAe,CAAC,EAChC,cAAc,CAAC,cAAc,CAC9B;YACD,cAAc,EAAE,cAAc,CAAC,cAAc;YAC7C,WAAW,EAAE,cAAc,CAAC,WAAW;SACxC,CAAC;QAEF,mBAAmB;QACnB,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC;YAC7B,KAAK,CAAC,OAAO,GAAG,SAAS,CAAC;QAC5B,CAAC;QAED,OAAO,cAAc,CAAC;IACxB,CAAC,CAAC,EAAE,CAAC;IAEL,IAAI,KAAK,EAAE,CAAC;QACV,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IAC1B,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,20 +1,3 @@
1
- import { ReadonlyUint8Array } from 'gill';
2
- /**
3
- * Type helper to convert bigint properties to number
4
- */
5
- export type ConvertBigIntToNumber<T> = {
6
- [K in keyof T]: T[K] extends bigint ? number : T[K];
7
- };
8
- /**
9
- * Type helper to convert bigint to number and ReadonlyUint8Array to string
10
- */
11
- export type ConvertTypesForDb<T> = {
12
- [K in keyof T]: T[K] extends bigint ? number : T[K] extends ReadonlyUint8Array ? string | null : T[K];
13
- };
14
- /**
15
- * Helper function to convert bigint values to numbers in an object
16
- * @param obj Object that may contain bigint values
17
- * @returns Object with all bigint values converted to numbers
18
- */
19
- export declare function convertBigIntToNumber<T extends Record<string, unknown>>(obj: T): ConvertBigIntToNumber<T>;
20
- export * from './walletConverter.js';
1
+ export * from './convertBigIntToNumber.js';
2
+ export * from './getStaticAccounts.js';
3
+ export * from './walletToAuthorizationSigner.js';
@@ -1,16 +1,5 @@
1
- /**
2
- * Helper function to convert bigint values to numbers in an object
3
- * @param obj Object that may contain bigint values
4
- * @returns Object with all bigint values converted to numbers
5
- */
6
- export function convertBigIntToNumber(obj) {
7
- const result = { ...obj };
8
- for (const [key, value] of Object.entries(result)) {
9
- if (typeof value === 'bigint') {
10
- result[key] = Number(value);
11
- }
12
- }
13
- return result;
14
- }
15
- // Export wallet conversion utilities
16
- export * from './walletConverter.js';
1
+ // Barrel export file - exports all utility functions and types
2
+ export * from './convertBigIntToNumber.js';
3
+ export * from './getStaticAccounts.js';
4
+ export * from './walletToAuthorizationSigner.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,kCAAkC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type MessageSigner } from '@solana/kit';
2
+ import { SignMessageFn } from '@nosana/authorization';
3
+ /**
4
+ * Convert a MessageSigner to a SignMessageFn for use with createNosanaAuthorization.
5
+ * MessageSigner always supports message signing (either via modifyAndSignMessages or signMessages).
6
+ *
7
+ * @param signer - The message signer to convert
8
+ * @returns A SignMessageFn that can be used with createNosanaAuthorization
9
+ */
10
+ export declare function walletToAuthorizationSigner(signer: MessageSigner): SignMessageFn;
@@ -0,0 +1,42 @@
1
+ import { NosanaError, ErrorCodes } from '../errors/NosanaError.js';
2
+ /**
3
+ * Extract signature from a signatures dictionary.
4
+ */
5
+ function extractSignature(signatures, signerAddress, errorContext) {
6
+ if (!signatures) {
7
+ throw new NosanaError(errorContext, ErrorCodes.AUTH_ERROR);
8
+ }
9
+ const signature = signatures[signerAddress];
10
+ if (!signature) {
11
+ throw new NosanaError('Failed to get signature from signer', ErrorCodes.AUTH_ERROR);
12
+ }
13
+ return signature instanceof Uint8Array ? signature : new Uint8Array(signature);
14
+ }
15
+ /**
16
+ * Convert a MessageSigner to a SignMessageFn for use with createNosanaAuthorization.
17
+ * MessageSigner always supports message signing (either via modifyAndSignMessages or signMessages).
18
+ *
19
+ * @param signer - The message signer to convert
20
+ * @returns A SignMessageFn that can be used with createNosanaAuthorization
21
+ */
22
+ export function walletToAuthorizationSigner(signer) {
23
+ const signerAddress = signer.address;
24
+ return async (message) => {
25
+ const messageToSign = { content: message, signatures: {} };
26
+ // Try modifyAndSignMessages first (MessageModifyingSigner)
27
+ if ('modifyAndSignMessages' in signer && typeof signer.modifyAndSignMessages === 'function') {
28
+ const signedMessages = await signer.modifyAndSignMessages([messageToSign]);
29
+ const signedMessage = signedMessages[0];
30
+ return extractSignature(signedMessage?.signatures, signerAddress, 'Failed to get signed message from signer');
31
+ }
32
+ // Fallback to signMessages (MessagePartialSigner)
33
+ if ('signMessages' in signer && typeof signer.signMessages === 'function') {
34
+ const signatures = await signer.signMessages([messageToSign]);
35
+ const signatureDict = signatures[0];
36
+ return extractSignature(signatureDict, signerAddress, 'Failed to get signatures from signer');
37
+ }
38
+ // This should never happen since MessageSigner always has one of these methods
39
+ throw new NosanaError('MessageSigner does not support message signing', ErrorCodes.AUTH_ERROR);
40
+ };
41
+ }
42
+ //# sourceMappingURL=walletToAuthorizationSigner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"walletToAuthorizationSigner.js","sourceRoot":"","sources":["../../src/utils/walletToAuthorizationSigner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGnE;;GAEG;AACH,SAAS,gBAAgB,CACvB,UAAkD,EAClD,aAAqB,EACrB,YAAoB;IAEpB,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,WAAW,CAAC,YAAY,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,WAAW,CAAC,qCAAqC,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IACtF,CAAC;IAED,OAAO,SAAS,YAAY,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;AACjF,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,MAAqB;IAC/D,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC;IAErC,OAAO,KAAK,EAAE,OAAmB,EAAuB,EAAE;QACxD,MAAM,aAAa,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAE3D,2DAA2D;QAC3D,IAAI,uBAAuB,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,UAAU,EAAE,CAAC;YAC5F,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YAC3E,MAAM,aAAa,GAAG,cAAc,CAAC,CAAC,CAKzB,CAAC;YACd,OAAO,gBAAgB,CACrB,aAAa,EAAE,UAAU,EACzB,aAAa,EACb,0CAA0C,CAC3C,CAAC;QACJ,CAAC;QAED,kDAAkD;QAClD,IAAI,cAAc,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;YAC1E,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC;YAC9D,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAyD,CAAC;YAC5F,OAAO,gBAAgB,CAAC,aAAa,EAAE,aAAa,EAAE,sCAAsC,CAAC,CAAC;QAChG,CAAC;QAED,+EAA+E;QAC/E,MAAM,IAAI,WAAW,CAAC,gDAAgD,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;IACjG,CAAC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nosana/kit",
3
- "version": "1.0.10",
3
+ "version": "2.0.10",
4
4
  "description": "Nosana KIT",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -27,27 +27,30 @@
27
27
  "author": "Nosana",
28
28
  "license": "MIT",
29
29
  "dependencies": {
30
- "@solana-program/token": "0.5.1",
31
- "@solana/sysvars": "5.0.0",
32
- "axios": "1.6.0",
33
- "bs58": "6.0.0",
34
- "buffer": "6.0.3",
35
- "form-data": "4.0.0",
36
- "gill": "0.12.0"
30
+ "@nosana/api": "^0.1.3",
31
+ "@nosana/authorization": "^0.1.1",
32
+ "@nosana/ipfs": "^0.1.1",
33
+ "@nosana/types": "^0.1.3",
34
+ "@solana-program/compute-budget": "0.11.0",
35
+ "@solana-program/system": "0.10.0",
36
+ "@solana-program/token": "0.8.0",
37
+ "@solana/kit": "5.0.0",
38
+ "bs58": "6.0.0"
37
39
  },
38
40
  "devDependencies": {
39
- "@codama/nodes-from-anchor": "^1.2.0",
40
- "@codama/renderers-js": "^1.2.14",
41
+ "@codama/nodes-from-anchor": "^1.3.1",
42
+ "@codama/renderers-js": "^1.5.0",
41
43
  "@types/node": "^20.11.24",
42
44
  "@typescript-eslint/eslint-plugin": "^7.1.0",
43
45
  "@typescript-eslint/parser": "^7.1.0",
44
- "@vitest/coverage-v8": "^1.6.0",
45
- "codama": "^1.3.0",
46
+ "@vitest/coverage-v8": "^4.0.3",
47
+ "codama": "^1.4.1",
46
48
  "eslint": "^8.57.0",
49
+ "eslint-plugin-import": "^2.32.0",
47
50
  "prettier": "^3.2.5",
48
51
  "ts-node": "^10.9.2",
49
52
  "typescript": "^5.3.3",
50
- "vitest": "^1.6.0"
53
+ "vitest": "^4.0.3"
51
54
  },
52
55
  "engines": {
53
56
  "node": ">=20.18.0"
@@ -57,4 +60,4 @@
57
60
  "package.json",
58
61
  "README.md"
59
62
  ]
60
- }
63
+ }
@@ -1,50 +0,0 @@
1
- import { AxiosRequestConfig } from 'axios';
2
- import { ReadonlyUint8Array } from 'gill';
3
- import type { IpfsConfig } from '../config/types.js';
4
- /**
5
- * Class to interact with Pinata Cloud
6
- * https://www.pinata.cloud/
7
- */
8
- export declare class IPFS {
9
- private api;
10
- config: IpfsConfig;
11
- constructor(config: IpfsConfig);
12
- /**
13
- * Convert the ipfs bytes from a solana job to a CID
14
- * It prepends the 0x1220 (18,32) to make it 34 bytes and Base58 encodes it.
15
- * This result is IPFS addressable.
16
- */
17
- static solHashToIpfsHash(hashArray: ReadonlyUint8Array | Array<number>): string | null;
18
- /**
19
- * Converts IPFS hash to byte array needed to submit results
20
- * @param hash IPFS hash
21
- * @returns Array<number>
22
- */
23
- static IpfsHashToByteArray(hash: string): Array<number>;
24
- /**
25
- * Retrieve data from IPFS using the configured gateway
26
- * @param hash IPFS hash string or byte array
27
- * @param options Additional axios request options
28
- * @returns The retrieved data
29
- */
30
- retrieve(hash: string | Array<number>, options?: AxiosRequestConfig): Promise<any>;
31
- /**
32
- * Function to pin data into Pinata Cloud
33
- * @param data Object to pin into IPFS as JSON
34
- * @returns The IPFS hash of the pinned data
35
- */
36
- pin(data: object): Promise<string>;
37
- /**
38
- * Function to pin a file into Pinata Cloud
39
- * @param filePath Path to the file to pin
40
- * @returns The IPFS hash of the pinned file
41
- */
42
- pinFile(filePath: string): Promise<string>;
43
- /**
44
- * Function to pin a file from buffer/blob into Pinata Cloud
45
- * @param fileBuffer Buffer or Blob containing the file data
46
- * @param fileName Name of the file
47
- * @returns The IPFS hash of the pinned file
48
- */
49
- pinFileFromBuffer(fileBuffer: Buffer | Blob, fileName: string): Promise<string>;
50
- }
package/dist/ipfs/IPFS.js DELETED
@@ -1,149 +0,0 @@
1
- import bs58 from 'bs58';
2
- import axios, { AxiosHeaders } from 'axios';
3
- // Import form-data dynamically for Node.js environments
4
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
5
- let FormData;
6
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
7
- let fs;
8
- // Dynamically import Node.js-specific modules
9
- const loadNodeModules = async () => {
10
- if (typeof window === 'undefined') {
11
- try {
12
- const formDataModule = await import('form-data');
13
- FormData = formDataModule.default;
14
- fs = await import('fs');
15
- }
16
- catch (error) {
17
- console.warn('Node.js modules not available for file operations');
18
- }
19
- }
20
- else {
21
- // Use browser FormData
22
- FormData = window.FormData;
23
- }
24
- };
25
- /**
26
- * Class to interact with Pinata Cloud
27
- * https://www.pinata.cloud/
28
- */
29
- export class IPFS {
30
- constructor(config) {
31
- this.config = config;
32
- const headers = new AxiosHeaders();
33
- if (this.config.jwt) {
34
- headers.set('Authorization', `Bearer ${this.config.jwt}`);
35
- }
36
- this.api = axios.create({
37
- baseURL: this.config.api,
38
- headers,
39
- });
40
- }
41
- /**
42
- * Convert the ipfs bytes from a solana job to a CID
43
- * It prepends the 0x1220 (18,32) to make it 34 bytes and Base58 encodes it.
44
- * This result is IPFS addressable.
45
- */
46
- static solHashToIpfsHash(hashArray) {
47
- let finalArray;
48
- const inputArray = Array.isArray(hashArray) ? hashArray : Array.from(hashArray);
49
- if (inputArray.length === 32) {
50
- // Create a new array with the prepended bytes [18, 32] + original array
51
- finalArray = new Uint8Array(34);
52
- finalArray[0] = 18;
53
- finalArray[1] = 32;
54
- finalArray.set(inputArray, 2);
55
- }
56
- else {
57
- // Use the array as-is if it's not 32 bytes
58
- finalArray = new Uint8Array(inputArray);
59
- }
60
- const hash = bs58.encode(Buffer.from(finalArray));
61
- if (hash === 'QmNLei78zWmzUdbeRB3CiUfAizWUrbeeZh5K1rhAQKCh51') {
62
- return null;
63
- }
64
- return hash;
65
- }
66
- /**
67
- * Converts IPFS hash to byte array needed to submit results
68
- * @param hash IPFS hash
69
- * @returns Array<number>
70
- */
71
- static IpfsHashToByteArray(hash) {
72
- if (hash.length === 34) {
73
- return [...bs58.decode(hash).subarray(2)];
74
- }
75
- else {
76
- return [...bs58.decode(hash)];
77
- }
78
- }
79
- /**
80
- * Retrieve data from IPFS using the configured gateway
81
- * @param hash IPFS hash string or byte array
82
- * @param options Additional axios request options
83
- * @returns The retrieved data
84
- */
85
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
86
- async retrieve(hash, options = {}) {
87
- if (typeof hash !== 'string') {
88
- const convertedHash = IPFS.solHashToIpfsHash(hash);
89
- if (!convertedHash) {
90
- throw new Error('Invalid hash provided');
91
- }
92
- hash = convertedHash;
93
- }
94
- const response = await axios.get(this.config.gateway + hash, options);
95
- return response.data;
96
- }
97
- /**
98
- * Function to pin data into Pinata Cloud
99
- * @param data Object to pin into IPFS as JSON
100
- * @returns The IPFS hash of the pinned data
101
- */
102
- async pin(data) {
103
- const response = await this.api.post('/pinning/pinJSONToIPFS', data);
104
- return response.data.IpfsHash;
105
- }
106
- /**
107
- * Function to pin a file into Pinata Cloud
108
- * @param filePath Path to the file to pin
109
- * @returns The IPFS hash of the pinned file
110
- */
111
- async pinFile(filePath) {
112
- // Ensure Node.js modules are loaded
113
- await loadNodeModules();
114
- if (!FormData || !fs) {
115
- throw new Error('File operations are not supported in this environment');
116
- }
117
- const data = new FormData();
118
- data.append('file', fs.createReadStream(filePath));
119
- const response = await this.api.post('/pinning/pinFileToIPFS', data, {
120
- headers: {
121
- 'Content-Type': `multipart/form-data; boundary=${data.getBoundary()}`,
122
- Authorization: `Bearer ${this.config.jwt}`,
123
- },
124
- });
125
- return response.data.IpfsHash;
126
- }
127
- /**
128
- * Function to pin a file from buffer/blob into Pinata Cloud
129
- * @param fileBuffer Buffer or Blob containing the file data
130
- * @param fileName Name of the file
131
- * @returns The IPFS hash of the pinned file
132
- */
133
- async pinFileFromBuffer(fileBuffer, fileName) {
134
- // Ensure FormData is available
135
- await loadNodeModules();
136
- if (!FormData) {
137
- throw new Error('FormData is not available in this environment');
138
- }
139
- const data = new FormData();
140
- data.append('file', fileBuffer, fileName);
141
- const response = await this.api.post('/pinning/pinFileToIPFS', data, {
142
- headers: {
143
- 'Content-Type': `multipart/form-data${data.getBoundary ? `; boundary=${data.getBoundary()}` : ''}`,
144
- Authorization: `Bearer ${this.config.jwt}`,
145
- },
146
- });
147
- return response.data.IpfsHash;
148
- }
149
- }
@@ -1,20 +0,0 @@
1
- import { Address } from 'gill';
2
- import { NosanaClient } from '../index.js';
3
- export type staticAccounts = {
4
- rewardsReflection: Address;
5
- rewardsVault: Address;
6
- rewardsProgram: Address;
7
- jobsProgram: Address;
8
- };
9
- export declare abstract class BaseProgram {
10
- private _staticAccounts;
11
- private _initializingAccounts;
12
- /**
13
- * Gets the static accounts, initializing them if needed.
14
- */
15
- getStaticAccounts(): Promise<staticAccounts>;
16
- private initializeStaticAccounts;
17
- protected readonly sdk: NosanaClient;
18
- constructor(sdk: NosanaClient);
19
- protected abstract getProgramId(): Address;
20
- }
@@ -1,31 +0,0 @@
1
- export class BaseProgram {
2
- /**
3
- * Gets the static accounts, initializing them if needed.
4
- */
5
- async getStaticAccounts() {
6
- if (this._staticAccounts) {
7
- return this._staticAccounts;
8
- }
9
- // If we're already initializing, return the existing promise
10
- if (this._initializingAccounts) {
11
- return this._initializingAccounts;
12
- }
13
- // Start initialization and store the promise
14
- this._initializingAccounts = this.initializeStaticAccounts();
15
- // Wait for initialization to complete
16
- this._staticAccounts = await this._initializingAccounts;
17
- this._initializingAccounts = undefined;
18
- return this._staticAccounts;
19
- }
20
- async initializeStaticAccounts() {
21
- return {
22
- rewardsReflection: await this.sdk.solana.pda(['reflection'], this.sdk.config.programs.rewardsAddress),
23
- rewardsVault: await this.sdk.solana.pda([this.sdk.config.programs.nosTokenAddress], this.sdk.config.programs.rewardsAddress),
24
- rewardsProgram: this.sdk.config.programs.rewardsAddress,
25
- jobsProgram: this.sdk.config.programs.jobsAddress,
26
- };
27
- }
28
- constructor(sdk) {
29
- this.sdk = sdk;
30
- }
31
- }
@@ -1,129 +0,0 @@
1
- import { BaseProgram } from './BaseProgram.js';
2
- import { Address, Account } from 'gill';
3
- import { NosanaClient } from '../index.js';
4
- import * as programClient from '../generated_clients/jobs/index.js';
5
- import { ConvertTypesForDb } from '../utils/index.js';
6
- export declare enum JobState {
7
- QUEUED = 0,
8
- RUNNING = 1,
9
- COMPLETED = 2,
10
- STOPPED = 3
11
- }
12
- export declare enum MarketQueueType {
13
- JOB_QUEUE = 0,
14
- NODE_QUEUE = 1
15
- }
16
- export type Job = Omit<ConvertTypesForDb<programClient.JobAccountArgs>, 'state'> & {
17
- address: Address;
18
- state: JobState;
19
- };
20
- export type Market = Omit<ConvertTypesForDb<programClient.MarketAccountArgs>, 'queueType'> & {
21
- address: Address;
22
- queueType: MarketQueueType;
23
- };
24
- export type Run = ConvertTypesForDb<programClient.RunAccountArgs> & {
25
- address: Address;
26
- };
27
- export declare class JobsProgram extends BaseProgram {
28
- readonly client: typeof programClient;
29
- constructor(sdk: NosanaClient);
30
- protected getProgramId(): Address;
31
- /**
32
- * Fetch a job account by address
33
- */
34
- get(addr: Address, checkRun?: boolean): Promise<Job>;
35
- /**
36
- * Fetch a run account by address
37
- */
38
- run(addr: Address): Promise<Run>;
39
- /**
40
- * Fetch a run account by address
41
- */
42
- market(addr: Address): Promise<Market>;
43
- /**
44
- * Fetch multiple job accounts by address
45
- */
46
- multiple(addresses: Address[], checkRuns?: boolean): Promise<Job[]>;
47
- /**
48
- * Fetch all job accounts
49
- */
50
- all(filters?: {
51
- state?: JobState;
52
- market?: Address;
53
- node?: Address;
54
- project?: Address;
55
- }, checkRuns?: boolean): Promise<Job[]>;
56
- /**
57
- * Fetch all run accounts
58
- */
59
- runs(filters?: {
60
- node?: Address;
61
- job?: Address;
62
- }): Promise<Run[]>;
63
- /**
64
- * Fetch all market accounts
65
- */
66
- markets(): Promise<Market[]>;
67
- /**
68
- * Post a new job to the marketplace
69
- * @param params Parameters for listing a job
70
- * @returns The transaction signature
71
- */
72
- post(params: {
73
- market: Address;
74
- timeout: number | bigint;
75
- ipfsHash: string;
76
- node?: Address;
77
- }): Promise<ReturnType<typeof this.client.getListInstruction>>;
78
- /**
79
- * Monitor program account updates using callback functions
80
- * Uses WebSocket subscriptions with automatic restart on failure
81
- *
82
- * @example
83
- * ```typescript
84
- * // Example: Monitor job accounts and save to file
85
- * const stopMonitoring = await jobsProgram.monitor({
86
- * onJobAccount: async (jobAccount) => {
87
- * console.log('Job updated:', jobAccount.address.toString());
88
- * // Save to database, file, or process as needed
89
- * },
90
- * onRunAccount: async (runAccount) => {
91
- * console.log('Run updated:', runAccount.address.toString());
92
- * },
93
- * onError: async (error, accountType) => {
94
- * console.error('Error processing account:', error, accountType);
95
- * }
96
- * });
97
- *
98
- * // Stop monitoring when done
99
- * stopMonitoring();
100
- * ```
101
- *
102
- * @param options Configuration options for monitoring
103
- * @returns A function to stop monitoring
104
- */
105
- monitor(options?: {
106
- onJobAccount?: (jobAccount: Job) => Promise<void> | void;
107
- onMarketAccount?: (marketAccount: Market) => Promise<void> | void;
108
- onRunAccount?: (runAccount: Run) => Promise<void> | void;
109
- onError?: (error: Error, accountType?: string) => Promise<void> | void;
110
- }): Promise<() => void>;
111
- /**
112
- * Set up WebSocket subscription for program notifications
113
- */
114
- private setupSubscription;
115
- /**
116
- * Process subscription notifications
117
- */
118
- private processSubscriptionNotifications;
119
- transformJobAccount(jobAccount: Account<programClient.JobAccount>): Job;
120
- transformRunAccount(runAccount: Account<programClient.RunAccount>): Run;
121
- transformMarketAccount(marketAccount: Account<programClient.MarketAccount>): Market;
122
- /**
123
- * Handle account update using callback functions
124
- */
125
- private handleAccountUpdate;
126
- private handleJobAccount;
127
- private handleMarketAccount;
128
- private handleRunAccount;
129
- }