@picon-finance/dlmm-sdk 1.0.0

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 (386) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +48 -0
  3. package/dist/actions/accept_admin_authority.d.ts +13 -0
  4. package/dist/actions/accept_admin_authority.d.ts.map +1 -0
  5. package/dist/actions/accept_admin_authority.js +7 -0
  6. package/dist/actions/claim_fee.d.ts +21 -0
  7. package/dist/actions/claim_fee.d.ts.map +1 -0
  8. package/dist/actions/claim_fee.js +40 -0
  9. package/dist/actions/claim_multiple_fees.d.ts +19 -0
  10. package/dist/actions/claim_multiple_fees.d.ts.map +1 -0
  11. package/dist/actions/claim_multiple_fees.js +81 -0
  12. package/dist/actions/claim_protocol_fee.d.ts +18 -0
  13. package/dist/actions/claim_protocol_fee.d.ts.map +1 -0
  14. package/dist/actions/claim_protocol_fee.js +33 -0
  15. package/dist/actions/close_position.d.ts +14 -0
  16. package/dist/actions/close_position.d.ts.map +1 -0
  17. package/dist/actions/close_position.js +14 -0
  18. package/dist/actions/create_admin_config.d.ts +15 -0
  19. package/dist/actions/create_admin_config.d.ts.map +1 -0
  20. package/dist/actions/create_admin_config.js +30 -0
  21. package/dist/actions/create_bin_array.d.ts +16 -0
  22. package/dist/actions/create_bin_array.d.ts.map +1 -0
  23. package/dist/actions/create_bin_array.js +10 -0
  24. package/dist/actions/create_pool.d.ts +21 -0
  25. package/dist/actions/create_pool.d.ts.map +1 -0
  26. package/dist/actions/create_pool.js +22 -0
  27. package/dist/actions/delete_bin_array.d.ts +16 -0
  28. package/dist/actions/delete_bin_array.d.ts.map +1 -0
  29. package/dist/actions/delete_bin_array.js +13 -0
  30. package/dist/actions/deposit_by_weight.d.ts +27 -0
  31. package/dist/actions/deposit_by_weight.d.ts.map +1 -0
  32. package/dist/actions/deposit_by_weight.js +52 -0
  33. package/dist/actions/get_admin_config.d.ts +4 -0
  34. package/dist/actions/get_admin_config.d.ts.map +1 -0
  35. package/dist/actions/get_admin_config.js +7 -0
  36. package/dist/actions/get_bin_arrays_by_indices.d.ts +5 -0
  37. package/dist/actions/get_bin_arrays_by_indices.d.ts.map +1 -0
  38. package/dist/actions/get_bin_arrays_by_indices.js +6 -0
  39. package/dist/actions/get_pool.d.ts +4 -0
  40. package/dist/actions/get_pool.d.ts.map +1 -0
  41. package/dist/actions/get_pool.js +5 -0
  42. package/dist/actions/get_position.d.ts +4 -0
  43. package/dist/actions/get_position.d.ts.map +1 -0
  44. package/dist/actions/get_position.js +5 -0
  45. package/dist/actions/get_position_by_position_mint.d.ts +4 -0
  46. package/dist/actions/get_position_by_position_mint.d.ts.map +1 -0
  47. package/dist/actions/get_position_by_position_mint.js +6 -0
  48. package/dist/actions/get_positions_by_owner.d.ts +5 -0
  49. package/dist/actions/get_positions_by_owner.d.ts.map +1 -0
  50. package/dist/actions/get_positions_by_owner.js +33 -0
  51. package/dist/actions/get_positions_by_position_mints.d.ts +5 -0
  52. package/dist/actions/get_positions_by_position_mints.d.ts.map +1 -0
  53. package/dist/actions/get_positions_by_position_mints.js +9 -0
  54. package/dist/actions/helpers/build_swap_transaction_message.d.ts +22 -0
  55. package/dist/actions/helpers/build_swap_transaction_message.d.ts.map +1 -0
  56. package/dist/actions/helpers/build_swap_transaction_message.js +50 -0
  57. package/dist/actions/helpers/build_transaction_message.d.ts +20 -0
  58. package/dist/actions/helpers/build_transaction_message.d.ts.map +1 -0
  59. package/dist/actions/helpers/build_transaction_message.js +5 -0
  60. package/dist/actions/helpers/index.d.ts +8 -0
  61. package/dist/actions/helpers/index.d.ts.map +1 -0
  62. package/dist/actions/helpers/index.js +7 -0
  63. package/dist/actions/helpers/resolve_active_bin_and_mints.d.ts +12 -0
  64. package/dist/actions/helpers/resolve_active_bin_and_mints.d.ts.map +1 -0
  65. package/dist/actions/helpers/resolve_active_bin_and_mints.js +13 -0
  66. package/dist/actions/helpers/resolve_admin_config_address.d.ts +3 -0
  67. package/dist/actions/helpers/resolve_admin_config_address.d.ts.map +1 -0
  68. package/dist/actions/helpers/resolve_admin_config_address.js +9 -0
  69. package/dist/actions/helpers/resolve_mint_info.d.ts +10 -0
  70. package/dist/actions/helpers/resolve_mint_info.d.ts.map +1 -0
  71. package/dist/actions/helpers/resolve_mint_info.js +20 -0
  72. package/dist/actions/helpers/resolve_position_range.d.ts +12 -0
  73. package/dist/actions/helpers/resolve_position_range.d.ts.map +1 -0
  74. package/dist/actions/helpers/resolve_position_range.js +12 -0
  75. package/dist/actions/helpers/resolve_token_mints_and_programs.d.ts +15 -0
  76. package/dist/actions/helpers/resolve_token_mints_and_programs.d.ts.map +1 -0
  77. package/dist/actions/helpers/resolve_token_mints_and_programs.js +29 -0
  78. package/dist/actions/index.d.ts +31 -0
  79. package/dist/actions/index.d.ts.map +1 -0
  80. package/dist/actions/index.js +28 -0
  81. package/dist/actions/is_admin_config_active.d.ts +4 -0
  82. package/dist/actions/is_admin_config_active.d.ts.map +1 -0
  83. package/dist/actions/is_admin_config_active.js +7 -0
  84. package/dist/actions/on_event.d.ts +11 -0
  85. package/dist/actions/on_event.d.ts.map +1 -0
  86. package/dist/actions/on_event.js +50 -0
  87. package/dist/actions/open_position.d.ts +17 -0
  88. package/dist/actions/open_position.d.ts.map +1 -0
  89. package/dist/actions/open_position.js +31 -0
  90. package/dist/actions/quote.d.ts +13 -0
  91. package/dist/actions/quote.d.ts.map +1 -0
  92. package/dist/actions/quote.js +43 -0
  93. package/dist/actions/set_metadata_update_authority.d.ts +14 -0
  94. package/dist/actions/set_metadata_update_authority.d.ts.map +1 -0
  95. package/dist/actions/set_metadata_update_authority.js +7 -0
  96. package/dist/actions/set_pool_dynamic_fee_config.d.ts +16 -0
  97. package/dist/actions/set_pool_dynamic_fee_config.d.ts.map +1 -0
  98. package/dist/actions/set_pool_dynamic_fee_config.js +7 -0
  99. package/dist/actions/set_pool_protocol_share.d.ts +15 -0
  100. package/dist/actions/set_pool_protocol_share.d.ts.map +1 -0
  101. package/dist/actions/set_pool_protocol_share.js +7 -0
  102. package/dist/actions/swap.d.ts +22 -0
  103. package/dist/actions/swap.d.ts.map +1 -0
  104. package/dist/actions/swap.js +19 -0
  105. package/dist/actions/sync_pool.d.ts +15 -0
  106. package/dist/actions/sync_pool.d.ts.map +1 -0
  107. package/dist/actions/sync_pool.js +26 -0
  108. package/dist/actions/transfer_admin_authority.d.ts +14 -0
  109. package/dist/actions/transfer_admin_authority.d.ts.map +1 -0
  110. package/dist/actions/transfer_admin_authority.js +7 -0
  111. package/dist/actions/withdraw.d.ts +22 -0
  112. package/dist/actions/withdraw.d.ts.map +1 -0
  113. package/dist/actions/withdraw.js +41 -0
  114. package/dist/events.d.ts +93 -0
  115. package/dist/events.d.ts.map +1 -0
  116. package/dist/events.js +166 -0
  117. package/dist/generated/accounts/adminConfig.d.ts +35 -0
  118. package/dist/generated/accounts/adminConfig.d.ts.map +1 -0
  119. package/dist/generated/accounts/adminConfig.js +60 -0
  120. package/dist/generated/accounts/binArray.d.ts +40 -0
  121. package/dist/generated/accounts/binArray.d.ts.map +1 -0
  122. package/dist/generated/accounts/binArray.js +65 -0
  123. package/dist/generated/accounts/index.d.ts +12 -0
  124. package/dist/generated/accounts/index.d.ts.map +1 -0
  125. package/dist/generated/accounts/index.js +11 -0
  126. package/dist/generated/accounts/pool.d.ts +54 -0
  127. package/dist/generated/accounts/pool.d.ts.map +1 -0
  128. package/dist/generated/accounts/pool.js +79 -0
  129. package/dist/generated/accounts/position.d.ts +42 -0
  130. package/dist/generated/accounts/position.d.ts.map +1 -0
  131. package/dist/generated/accounts/position.js +67 -0
  132. package/dist/generated/errors/index.d.ts +9 -0
  133. package/dist/generated/errors/index.d.ts.map +1 -0
  134. package/dist/generated/errors/index.js +8 -0
  135. package/dist/generated/errors/piconDlmm.d.ts +58 -0
  136. package/dist/generated/errors/piconDlmm.d.ts.map +1 -0
  137. package/dist/generated/errors/piconDlmm.js +80 -0
  138. package/dist/generated/index.d.ts +14 -0
  139. package/dist/generated/index.d.ts.map +1 -0
  140. package/dist/generated/index.js +13 -0
  141. package/dist/generated/instructions/acceptAdminAuthority.d.ts +47 -0
  142. package/dist/generated/instructions/acceptAdminAuthority.d.ts.map +1 -0
  143. package/dist/generated/instructions/acceptAdminAuthority.js +99 -0
  144. package/dist/generated/instructions/claimFee.d.ts +83 -0
  145. package/dist/generated/instructions/claimFee.d.ts.map +1 -0
  146. package/dist/generated/instructions/claimFee.js +127 -0
  147. package/dist/generated/instructions/claimProtocolFee.d.ts +83 -0
  148. package/dist/generated/instructions/claimProtocolFee.d.ts.map +1 -0
  149. package/dist/generated/instructions/claimProtocolFee.js +147 -0
  150. package/dist/generated/instructions/closePosition.d.ts +59 -0
  151. package/dist/generated/instructions/closePosition.d.ts.map +1 -0
  152. package/dist/generated/instructions/closePosition.js +124 -0
  153. package/dist/generated/instructions/createAdminConfig.d.ts +68 -0
  154. package/dist/generated/instructions/createAdminConfig.d.ts.map +1 -0
  155. package/dist/generated/instructions/createAdminConfig.js +132 -0
  156. package/dist/generated/instructions/createBinArray.d.ts +64 -0
  157. package/dist/generated/instructions/createBinArray.d.ts.map +1 -0
  158. package/dist/generated/instructions/createBinArray.js +122 -0
  159. package/dist/generated/instructions/createPool.d.ts +100 -0
  160. package/dist/generated/instructions/createPool.d.ts.map +1 -0
  161. package/dist/generated/instructions/createPool.js +202 -0
  162. package/dist/generated/instructions/deleteBinArray.d.ts +68 -0
  163. package/dist/generated/instructions/deleteBinArray.d.ts.map +1 -0
  164. package/dist/generated/instructions/deleteBinArray.js +130 -0
  165. package/dist/generated/instructions/depositByWeight.d.ts +99 -0
  166. package/dist/generated/instructions/depositByWeight.d.ts.map +1 -0
  167. package/dist/generated/instructions/depositByWeight.js +136 -0
  168. package/dist/generated/instructions/index.d.ts +25 -0
  169. package/dist/generated/instructions/index.d.ts.map +1 -0
  170. package/dist/generated/instructions/index.js +24 -0
  171. package/dist/generated/instructions/openPosition.d.ts +88 -0
  172. package/dist/generated/instructions/openPosition.d.ts.map +1 -0
  173. package/dist/generated/instructions/openPosition.js +200 -0
  174. package/dist/generated/instructions/setMetadataUpdateAuthority.d.ts +52 -0
  175. package/dist/generated/instructions/setMetadataUpdateAuthority.d.ts.map +1 -0
  176. package/dist/generated/instructions/setMetadataUpdateAuthority.js +98 -0
  177. package/dist/generated/instructions/setPoolDynamicFeeConfig.d.ts +57 -0
  178. package/dist/generated/instructions/setPoolDynamicFeeConfig.d.ts.map +1 -0
  179. package/dist/generated/instructions/setPoolDynamicFeeConfig.js +107 -0
  180. package/dist/generated/instructions/setPoolProtocolShare.d.ts +56 -0
  181. package/dist/generated/instructions/setPoolProtocolShare.d.ts.map +1 -0
  182. package/dist/generated/instructions/setPoolProtocolShare.js +106 -0
  183. package/dist/generated/instructions/swap.d.ts +74 -0
  184. package/dist/generated/instructions/swap.d.ts.map +1 -0
  185. package/dist/generated/instructions/swap.js +108 -0
  186. package/dist/generated/instructions/syncPool.d.ts +44 -0
  187. package/dist/generated/instructions/syncPool.d.ts.map +1 -0
  188. package/dist/generated/instructions/syncPool.js +71 -0
  189. package/dist/generated/instructions/transferAdminAuthority.d.ts +52 -0
  190. package/dist/generated/instructions/transferAdminAuthority.d.ts.map +1 -0
  191. package/dist/generated/instructions/transferAdminAuthority.js +98 -0
  192. package/dist/generated/instructions/withdraw.d.ts +86 -0
  193. package/dist/generated/instructions/withdraw.d.ts.map +1 -0
  194. package/dist/generated/instructions/withdraw.js +129 -0
  195. package/dist/generated/pdas/adminConfig.d.ts +12 -0
  196. package/dist/generated/pdas/adminConfig.d.ts.map +1 -0
  197. package/dist/generated/pdas/adminConfig.js +19 -0
  198. package/dist/generated/pdas/binArray.d.ts +16 -0
  199. package/dist/generated/pdas/binArray.d.ts.map +1 -0
  200. package/dist/generated/pdas/binArray.js +19 -0
  201. package/dist/generated/pdas/index.d.ts +12 -0
  202. package/dist/generated/pdas/index.d.ts.map +1 -0
  203. package/dist/generated/pdas/index.js +11 -0
  204. package/dist/generated/pdas/pool.d.ts +18 -0
  205. package/dist/generated/pdas/pool.d.ts.map +1 -0
  206. package/dist/generated/pdas/pool.js +21 -0
  207. package/dist/generated/pdas/position.d.ts +15 -0
  208. package/dist/generated/pdas/position.d.ts.map +1 -0
  209. package/dist/generated/pdas/position.js +18 -0
  210. package/dist/generated/programs/index.d.ts +9 -0
  211. package/dist/generated/programs/index.d.ts.map +1 -0
  212. package/dist/generated/programs/index.js +8 -0
  213. package/dist/generated/programs/piconDlmm.d.ts +126 -0
  214. package/dist/generated/programs/piconDlmm.d.ts.map +1 -0
  215. package/dist/generated/programs/piconDlmm.js +285 -0
  216. package/dist/generated/types/bin.d.ts +28 -0
  217. package/dist/generated/types/bin.d.ts.map +1 -0
  218. package/dist/generated/types/bin.js +31 -0
  219. package/dist/generated/types/distributionMode.d.ts +19 -0
  220. package/dist/generated/types/distributionMode.d.ts.map +1 -0
  221. package/dist/generated/types/distributionMode.js +24 -0
  222. package/dist/generated/types/dynamicFeeConfig.d.ts +29 -0
  223. package/dist/generated/types/dynamicFeeConfig.d.ts.map +1 -0
  224. package/dist/generated/types/dynamicFeeConfig.js +29 -0
  225. package/dist/generated/types/dynamicFeeState.d.ts +27 -0
  226. package/dist/generated/types/dynamicFeeState.d.ts.map +1 -0
  227. package/dist/generated/types/dynamicFeeState.js +30 -0
  228. package/dist/generated/types/feeState.d.ts +26 -0
  229. package/dist/generated/types/feeState.d.ts.map +1 -0
  230. package/dist/generated/types/feeState.js +29 -0
  231. package/dist/generated/types/index.d.ts +13 -0
  232. package/dist/generated/types/index.d.ts.map +1 -0
  233. package/dist/generated/types/index.js +12 -0
  234. package/dist/index.d.ts +5 -0
  235. package/dist/index.d.ts.map +1 -0
  236. package/dist/index.js +4 -0
  237. package/dist/picon_dlmm.json +2378 -0
  238. package/dist/program_addresses.d.ts +4 -0
  239. package/dist/program_addresses.d.ts.map +1 -0
  240. package/dist/program_addresses.js +8 -0
  241. package/dist/quote/index.d.ts +4 -0
  242. package/dist/quote/index.d.ts.map +1 -0
  243. package/dist/quote/index.js +5 -0
  244. package/dist/quote/wasm-node/picon_dlmm_quote.d.ts +6 -0
  245. package/dist/quote/wasm-node/picon_dlmm_quote.d.ts.map +1 -0
  246. package/dist/quote/wasm-node/picon_dlmm_quote.js +398 -0
  247. package/dist/quote/wasm-node/picon_dlmm_quote_bg.wasm +0 -0
  248. package/dist/quote/wasm-node-loader.d.ts +4 -0
  249. package/dist/quote/wasm-node-loader.d.ts.map +1 -0
  250. package/dist/quote/wasm-node-loader.js +7 -0
  251. package/dist/quote/wasm-web/picon_dlmm_quote.d.ts +9 -0
  252. package/dist/quote/wasm-web/picon_dlmm_quote.d.ts.map +1 -0
  253. package/dist/quote/wasm-web/picon_dlmm_quote.js +486 -0
  254. package/dist/quote/wasm-web/picon_dlmm_quote_bg.wasm +0 -0
  255. package/dist/quote/wasm-web-loader.d.ts +4 -0
  256. package/dist/quote/wasm-web-loader.d.ts.map +1 -0
  257. package/dist/quote/wasm-web-loader.js +12 -0
  258. package/dist/utils/admin_config.d.ts +3 -0
  259. package/dist/utils/admin_config.d.ts.map +1 -0
  260. package/dist/utils/admin_config.js +4 -0
  261. package/dist/utils/ata.d.ts +49 -0
  262. package/dist/utils/ata.d.ts.map +1 -0
  263. package/dist/utils/ata.js +113 -0
  264. package/dist/utils/bin_array.d.ts +8 -0
  265. package/dist/utils/bin_array.d.ts.map +1 -0
  266. package/dist/utils/bin_array.js +29 -0
  267. package/dist/utils/bin_location.d.ts +11 -0
  268. package/dist/utils/bin_location.d.ts.map +1 -0
  269. package/dist/utils/bin_location.js +55 -0
  270. package/dist/utils/chunk.d.ts +2 -0
  271. package/dist/utils/chunk.d.ts.map +1 -0
  272. package/dist/utils/chunk.js +7 -0
  273. package/dist/utils/compute_budget.d.ts +11 -0
  274. package/dist/utils/compute_budget.d.ts.map +1 -0
  275. package/dist/utils/compute_budget.js +22 -0
  276. package/dist/utils/constants.d.ts +12 -0
  277. package/dist/utils/constants.d.ts.map +1 -0
  278. package/dist/utils/constants.js +20 -0
  279. package/dist/utils/transfer_fee.d.ts +4 -0
  280. package/dist/utils/transfer_fee.d.ts.map +1 -0
  281. package/dist/utils/transfer_fee.js +21 -0
  282. package/dist/utils/type_guards.d.ts +2 -0
  283. package/dist/utils/type_guards.d.ts.map +1 -0
  284. package/dist/utils/type_guards.js +3 -0
  285. package/package.json +59 -0
  286. package/src/actions/accept_admin_authority.ts +17 -0
  287. package/src/actions/claim_fee.ts +84 -0
  288. package/src/actions/claim_multiple_fees.ts +123 -0
  289. package/src/actions/claim_protocol_fee.ts +68 -0
  290. package/src/actions/close_position.ts +21 -0
  291. package/src/actions/create_admin_config.ts +50 -0
  292. package/src/actions/create_bin_array.ts +30 -0
  293. package/src/actions/create_pool.ts +49 -0
  294. package/src/actions/delete_bin_array.ts +33 -0
  295. package/src/actions/deposit_by_weight.ts +107 -0
  296. package/src/actions/get_admin_config.ts +13 -0
  297. package/src/actions/get_bin_arrays_by_indices.ts +15 -0
  298. package/src/actions/get_pool.ts +8 -0
  299. package/src/actions/get_position.ts +8 -0
  300. package/src/actions/get_position_by_position_mint.ts +14 -0
  301. package/src/actions/get_positions_by_owner.ts +48 -0
  302. package/src/actions/get_positions_by_position_mints.ts +21 -0
  303. package/src/actions/helpers/build_swap_transaction_message.ts +86 -0
  304. package/src/actions/helpers/build_transaction_message.ts +45 -0
  305. package/src/actions/helpers/index.ts +7 -0
  306. package/src/actions/helpers/resolve_active_bin_and_mints.ts +21 -0
  307. package/src/actions/helpers/resolve_admin_config_address.ts +11 -0
  308. package/src/actions/helpers/resolve_mint_info.ts +36 -0
  309. package/src/actions/helpers/resolve_position_range.ts +21 -0
  310. package/src/actions/helpers/resolve_token_mints_and_programs.ts +56 -0
  311. package/src/actions/index.ts +34 -0
  312. package/src/actions/is_admin_config_active.ts +14 -0
  313. package/src/actions/on_event.ts +78 -0
  314. package/src/actions/open_position.ts +66 -0
  315. package/src/actions/quote.ts +70 -0
  316. package/src/actions/set_metadata_update_authority.ts +17 -0
  317. package/src/actions/set_pool_dynamic_fee_config.ts +17 -0
  318. package/src/actions/set_pool_protocol_share.ts +17 -0
  319. package/src/actions/swap.ts +56 -0
  320. package/src/actions/sync_pool.ts +35 -0
  321. package/src/actions/transfer_admin_authority.ts +17 -0
  322. package/src/actions/withdraw.ts +87 -0
  323. package/src/events.ts +279 -0
  324. package/src/generated/accounts/adminConfig.ts +147 -0
  325. package/src/generated/accounts/binArray.ts +155 -0
  326. package/src/generated/accounts/index.ts +12 -0
  327. package/src/generated/accounts/pool.ts +192 -0
  328. package/src/generated/accounts/position.ts +164 -0
  329. package/src/generated/errors/index.ts +9 -0
  330. package/src/generated/errors/piconDlmm.ts +124 -0
  331. package/src/generated/index.ts +14 -0
  332. package/src/generated/instructions/acceptAdminAuthority.ts +262 -0
  333. package/src/generated/instructions/claimFee.ts +395 -0
  334. package/src/generated/instructions/claimProtocolFee.ts +462 -0
  335. package/src/generated/instructions/closePosition.ts +342 -0
  336. package/src/generated/instructions/createAdminConfig.ts +369 -0
  337. package/src/generated/instructions/createBinArray.ts +344 -0
  338. package/src/generated/instructions/createPool.ts +582 -0
  339. package/src/generated/instructions/deleteBinArray.ts +365 -0
  340. package/src/generated/instructions/depositByWeight.ts +435 -0
  341. package/src/generated/instructions/index.ts +25 -0
  342. package/src/generated/instructions/openPosition.ts +547 -0
  343. package/src/generated/instructions/setMetadataUpdateAuthority.ts +274 -0
  344. package/src/generated/instructions/setPoolDynamicFeeConfig.ts +304 -0
  345. package/src/generated/instructions/setPoolProtocolShare.ts +298 -0
  346. package/src/generated/instructions/swap.ts +336 -0
  347. package/src/generated/instructions/syncPool.ts +189 -0
  348. package/src/generated/instructions/transferAdminAuthority.ts +271 -0
  349. package/src/generated/instructions/withdraw.ts +402 -0
  350. package/src/generated/pdas/adminConfig.ts +32 -0
  351. package/src/generated/pdas/binArray.ts +40 -0
  352. package/src/generated/pdas/index.ts +12 -0
  353. package/src/generated/pdas/pool.ts +43 -0
  354. package/src/generated/pdas/position.ts +37 -0
  355. package/src/generated/programs/index.ts +9 -0
  356. package/src/generated/programs/piconDlmm.ts +803 -0
  357. package/src/generated/types/bin.ts +64 -0
  358. package/src/generated/types/distributionMode.ts +43 -0
  359. package/src/generated/types/dynamicFeeConfig.ts +69 -0
  360. package/src/generated/types/dynamicFeeState.ts +71 -0
  361. package/src/generated/types/feeState.ts +60 -0
  362. package/src/generated/types/index.ts +13 -0
  363. package/src/index.ts +4 -0
  364. package/src/picon_dlmm.json +2378 -0
  365. package/src/program_addresses.ts +10 -0
  366. package/src/quote/index.ts +14 -0
  367. package/src/quote/wasm-node/package.json +4 -0
  368. package/src/quote/wasm-node/picon_dlmm_quote.d.ts +64 -0
  369. package/src/quote/wasm-node/picon_dlmm_quote.js +407 -0
  370. package/src/quote/wasm-node/picon_dlmm_quote_bg.wasm +0 -0
  371. package/src/quote/wasm-node/picon_dlmm_quote_bg.wasm.d.ts +11 -0
  372. package/src/quote/wasm-node-loader.ts +11 -0
  373. package/src/quote/wasm-web/picon_dlmm_quote.d.ts +100 -0
  374. package/src/quote/wasm-web/picon_dlmm_quote.js +500 -0
  375. package/src/quote/wasm-web/picon_dlmm_quote_bg.wasm +0 -0
  376. package/src/quote/wasm-web/picon_dlmm_quote_bg.wasm.d.ts +11 -0
  377. package/src/quote/wasm-web-loader.ts +17 -0
  378. package/src/utils/admin_config.ts +6 -0
  379. package/src/utils/ata.ts +213 -0
  380. package/src/utils/bin_array.ts +45 -0
  381. package/src/utils/bin_location.ts +79 -0
  382. package/src/utils/chunk.ts +7 -0
  383. package/src/utils/compute_budget.ts +58 -0
  384. package/src/utils/constants.ts +24 -0
  385. package/src/utils/transfer_fee.ts +29 -0
  386. package/src/utils/type_guards.ts +3 -0
@@ -0,0 +1,35 @@
1
+ import { type Address, type TransactionSigner, AccountRole } from "@solana/kit";
2
+ import { PICON_DLMM_PROGRAM_ADDRESS, getSyncPoolInstruction } from "../generated";
3
+ import { generateBinArrayIndicesForSync } from "../utils/bin_location";
4
+ import { MAX_BIN_ARRAYS_PER_SYNC } from "../utils/constants";
5
+ import { findBinArrayAddresses } from "../utils/bin_array";
6
+ import { getPool } from "./get_pool";
7
+ import { buildTransactionMessage, type TransactionMessageOptions, type Rpc } from "./helpers";
8
+
9
+ // The base sync_pool instruction only declares `user`/`pool` — the bin arrays are Anchor
10
+ // `remaining_accounts`, not part of the typed account list, so they're appended manually here.
11
+ // Read-only: sync_pool only ever reads bin data (`is_zero_liquidity`) to find the next active
12
+ // bin, never mutates a bin array.
13
+ export async function syncPool(
14
+ rpc: Rpc,
15
+ { user, pool, desiredBinId }: { user: TransactionSigner, pool: Address, desiredBinId: number },
16
+ programAddress: Address = PICON_DLMM_PROGRAM_ADDRESS,
17
+ options: TransactionMessageOptions = {},
18
+ ) {
19
+ const { activeBinId } = await getPool(rpc, pool, options);
20
+
21
+ const binArrayIndices = generateBinArrayIndicesForSync(activeBinId, desiredBinId, MAX_BIN_ARRAYS_PER_SYNC);
22
+ const binArrayAddresses = await findBinArrayAddresses(pool, binArrayIndices, programAddress);
23
+
24
+ const syncPoolIx = getSyncPoolInstruction({ user, pool, desiredBinId }, { programAddress });
25
+ const remainingAccounts = binArrayAddresses.map(address => ({
26
+ address,
27
+ role: AccountRole.READONLY,
28
+ }));
29
+
30
+ const instructions = [{
31
+ ...syncPoolIx,
32
+ accounts: [...syncPoolIx.accounts, ...remainingAccounts],
33
+ }];
34
+ return await buildTransactionMessage(rpc, { feePayer: user, instructions }, options);
35
+ }
@@ -0,0 +1,17 @@
1
+ import type { Address, TransactionSigner } from "@solana/kit";
2
+ import { PICON_DLMM_PROGRAM_ADDRESS, getTransferAdminAuthorityInstructionAsync } from "../generated";
3
+ import { buildTransactionMessage, resolveAdminConfigAddress, type TransactionMessageOptions, type Rpc } from "./helpers";
4
+
5
+ export async function transferAdminAuthority(
6
+ rpc: Rpc,
7
+ { authority, newAuthority }: { authority: TransactionSigner, newAuthority: Address },
8
+ programAddress: Address = PICON_DLMM_PROGRAM_ADDRESS,
9
+ options: TransactionMessageOptions = {},
10
+ ) {
11
+ const adminConfig = await resolveAdminConfigAddress(programAddress);
12
+ const instruction = await getTransferAdminAuthorityInstructionAsync(
13
+ { authority, newAuthority, adminConfig },
14
+ { programAddress },
15
+ );
16
+ return await buildTransactionMessage(rpc, { feePayer: authority, instructions: [instruction] }, options);
17
+ }
@@ -0,0 +1,87 @@
1
+ import type { Address, TransactionSigner } from "@solana/kit";
2
+ import { PICON_DLMM_PROGRAM_ADDRESS, findPositionPda, getWithdrawInstruction } from "../generated";
3
+ import { findPositionBinArrayAddresses } from "../utils/bin_array";
4
+ import { findPoolTokenVaults, findPositionTokenAccount, processAssociatedTokenAccountPair } from "../utils/ata";
5
+ import {
6
+ resolvePositionRange,
7
+ resolveTokenMintsAndPrograms,
8
+ buildTransactionMessage,
9
+ type TransactionMessageOptions,
10
+ type Rpc,
11
+ } from "./helpers";
12
+
13
+ export async function withdraw(
14
+ rpc: Rpc,
15
+ {
16
+ owner,
17
+ positionMint,
18
+ bpsToRemove,
19
+ lowerBinId,
20
+ upperBinId,
21
+ pool,
22
+ tokenMintX,
23
+ tokenMintY,
24
+ tokenProgramX,
25
+ tokenProgramY,
26
+ }: {
27
+ owner: TransactionSigner,
28
+ positionMint: Address,
29
+ bpsToRemove: number,
30
+ lowerBinId?: number,
31
+ upperBinId?: number,
32
+ pool?: Address,
33
+ tokenMintX?: Address,
34
+ tokenMintY?: Address,
35
+ tokenProgramX?: Address,
36
+ tokenProgramY?: Address,
37
+ },
38
+ programAddress: Address = PICON_DLMM_PROGRAM_ADDRESS,
39
+ options: TransactionMessageOptions = {},
40
+ ) {
41
+ ({ pool, lowerBinId, upperBinId } = await resolvePositionRange(rpc, positionMint, { pool, lowerBinId, upperBinId }, programAddress, options));
42
+
43
+ const tokenMintsAndPrograms = await resolveTokenMintsAndPrograms(rpc, {
44
+ pool,
45
+ tokenMintX,
46
+ tokenMintY,
47
+ tokenProgramX,
48
+ tokenProgramY,
49
+ }, options);
50
+
51
+ const [position] = await findPositionPda({ positionMint }, { programAddress });
52
+ const positionTokenAccount = await findPositionTokenAccount({ owner: owner.address, positionMint });
53
+ const { tokenVaultX, tokenVaultY } = await findPoolTokenVaults({ pool, ...tokenMintsAndPrograms });
54
+
55
+ const {
56
+ ataX: tokenOwnerAccountX,
57
+ ataY: tokenOwnerAccountY,
58
+ preInstructions: preInstructionsAta,
59
+ postInstructions: postInstructionsAta,
60
+ } = await processAssociatedTokenAccountPair({ owner, ...tokenMintsAndPrograms });
61
+
62
+ const { lowerBinArray, upperBinArray } = await findPositionBinArrayAddresses(pool, lowerBinId, upperBinId, programAddress);
63
+
64
+ const withdrawIx = getWithdrawInstruction({
65
+ owner,
66
+ pool,
67
+ position,
68
+ positionTokenAccount,
69
+ ...tokenMintsAndPrograms,
70
+ tokenOwnerAccountX,
71
+ tokenOwnerAccountY,
72
+ tokenVaultX,
73
+ tokenVaultY,
74
+ lowerBinArray,
75
+ upperBinArray,
76
+ lowerBinId,
77
+ upperBinId,
78
+ bpsToRemove,
79
+ }, { programAddress });
80
+
81
+ const instructions = [
82
+ ...preInstructionsAta,
83
+ withdrawIx,
84
+ ...postInstructionsAta,
85
+ ];
86
+ return await buildTransactionMessage(rpc, { feePayer: owner, instructions }, options);
87
+ }
package/src/events.ts ADDED
@@ -0,0 +1,279 @@
1
+ // Hand-written event decoding — Codama's Anchor-IDL conversion (`@codama/nodes-from-anchor`)
2
+ // currently drops the IDL's `events` field entirely, so there's nothing to generate this from
3
+ // yet (confirmed: `SwapEvent` etc. don't even survive as plain defined types in the
4
+ // intermediate Codama IDL, let alone get rendered). Once Codama adds event support, this file
5
+ // should be deleted in favor of the generated equivalent — the codec style below matches
6
+ // `generated/types/*.ts` exactly for that reason.
7
+ import {
8
+ type Address,
9
+ getAddressDecoder,
10
+ getBase64Encoder,
11
+ getBooleanDecoder,
12
+ getI32Decoder,
13
+ getStructDecoder,
14
+ getU16Decoder,
15
+ getU32Decoder,
16
+ getU64Decoder,
17
+ type FixedSizeDecoder,
18
+ type ReadonlyUint8Array,
19
+ } from "@solana/kit";
20
+ import { PICON_DLMM_PROGRAM_ADDRESS } from "./generated";
21
+
22
+ export type CreatePoolEvent = {
23
+ pool: Address;
24
+ binStep: number;
25
+ feeRate: number;
26
+ tokenMintX: Address;
27
+ tokenMintY: Address;
28
+ };
29
+
30
+ export type OpenPositionEvent = {
31
+ pool: Address;
32
+ position: Address;
33
+ owner: Address;
34
+ lowerBinId: number;
35
+ upperBinId: number;
36
+ };
37
+
38
+ export type ClosePositionEvent = {
39
+ pool: Address;
40
+ position: Address;
41
+ owner: Address;
42
+ lowerBinId: number;
43
+ upperBinId: number;
44
+ };
45
+
46
+ export type DepositEvent = {
47
+ pool: Address;
48
+ position: Address;
49
+ owner: Address;
50
+ lowerBinId: number;
51
+ upperBinId: number;
52
+ amountX: bigint;
53
+ amountY: bigint;
54
+ transferFeeX: bigint;
55
+ transferFeeY: bigint;
56
+ };
57
+
58
+ export type WithdrawEvent = {
59
+ pool: Address;
60
+ position: Address;
61
+ owner: Address;
62
+ lowerBinId: number;
63
+ upperBinId: number;
64
+ bpsRemoved: number;
65
+ amountX: bigint;
66
+ amountY: bigint;
67
+ transferFeeX: bigint;
68
+ transferFeeY: bigint;
69
+ };
70
+
71
+ export type ClaimFeeEvent = {
72
+ pool: Address;
73
+ position: Address;
74
+ owner: Address;
75
+ lowerBinId: number;
76
+ upperBinId: number;
77
+ amountX: bigint;
78
+ amountY: bigint;
79
+ transferFeeX: bigint;
80
+ transferFeeY: bigint;
81
+ };
82
+
83
+ export type SwapEvent = {
84
+ pool: Address;
85
+ xToY: boolean;
86
+ preBinId: number;
87
+ postBinId: number;
88
+ amountIn: bigint;
89
+ amountOut: bigint;
90
+ inputTransferFee: bigint;
91
+ outputTransferFee: bigint;
92
+ lpFee: bigint;
93
+ protocolFee: bigint;
94
+ };
95
+
96
+ function getCreatePoolEventDecoder(): FixedSizeDecoder<CreatePoolEvent> {
97
+ return getStructDecoder([
98
+ ["pool", getAddressDecoder()],
99
+ ["binStep", getU16Decoder()],
100
+ ["feeRate", getU32Decoder()],
101
+ ["tokenMintX", getAddressDecoder()],
102
+ ["tokenMintY", getAddressDecoder()],
103
+ ]);
104
+ }
105
+
106
+ function getOpenPositionEventDecoder(): FixedSizeDecoder<OpenPositionEvent> {
107
+ return getStructDecoder([
108
+ ["pool", getAddressDecoder()],
109
+ ["position", getAddressDecoder()],
110
+ ["owner", getAddressDecoder()],
111
+ ["lowerBinId", getI32Decoder()],
112
+ ["upperBinId", getI32Decoder()],
113
+ ]);
114
+ }
115
+
116
+ function getClosePositionEventDecoder(): FixedSizeDecoder<ClosePositionEvent> {
117
+ return getStructDecoder([
118
+ ["pool", getAddressDecoder()],
119
+ ["position", getAddressDecoder()],
120
+ ["owner", getAddressDecoder()],
121
+ ["lowerBinId", getI32Decoder()],
122
+ ["upperBinId", getI32Decoder()],
123
+ ]);
124
+ }
125
+
126
+ function getDepositEventDecoder(): FixedSizeDecoder<DepositEvent> {
127
+ return getStructDecoder([
128
+ ["pool", getAddressDecoder()],
129
+ ["position", getAddressDecoder()],
130
+ ["owner", getAddressDecoder()],
131
+ ["lowerBinId", getI32Decoder()],
132
+ ["upperBinId", getI32Decoder()],
133
+ ["amountX", getU64Decoder()],
134
+ ["amountY", getU64Decoder()],
135
+ ["transferFeeX", getU64Decoder()],
136
+ ["transferFeeY", getU64Decoder()],
137
+ ]);
138
+ }
139
+
140
+ function getWithdrawEventDecoder(): FixedSizeDecoder<WithdrawEvent> {
141
+ return getStructDecoder([
142
+ ["pool", getAddressDecoder()],
143
+ ["position", getAddressDecoder()],
144
+ ["owner", getAddressDecoder()],
145
+ ["lowerBinId", getI32Decoder()],
146
+ ["upperBinId", getI32Decoder()],
147
+ ["bpsRemoved", getU16Decoder()],
148
+ ["amountX", getU64Decoder()],
149
+ ["amountY", getU64Decoder()],
150
+ ["transferFeeX", getU64Decoder()],
151
+ ["transferFeeY", getU64Decoder()],
152
+ ]);
153
+ }
154
+
155
+ function getClaimFeeEventDecoder(): FixedSizeDecoder<ClaimFeeEvent> {
156
+ return getStructDecoder([
157
+ ["pool", getAddressDecoder()],
158
+ ["position", getAddressDecoder()],
159
+ ["owner", getAddressDecoder()],
160
+ ["lowerBinId", getI32Decoder()],
161
+ ["upperBinId", getI32Decoder()],
162
+ ["amountX", getU64Decoder()],
163
+ ["amountY", getU64Decoder()],
164
+ ["transferFeeX", getU64Decoder()],
165
+ ["transferFeeY", getU64Decoder()],
166
+ ]);
167
+ }
168
+
169
+ function getSwapEventDecoder(): FixedSizeDecoder<SwapEvent> {
170
+ return getStructDecoder([
171
+ ["pool", getAddressDecoder()],
172
+ ["xToY", getBooleanDecoder()],
173
+ ["preBinId", getI32Decoder()],
174
+ ["postBinId", getI32Decoder()],
175
+ ["amountIn", getU64Decoder()],
176
+ ["amountOut", getU64Decoder()],
177
+ ["inputTransferFee", getU64Decoder()],
178
+ ["outputTransferFee", getU64Decoder()],
179
+ ["lpFee", getU64Decoder()],
180
+ ["protocolFee", getU64Decoder()],
181
+ ]);
182
+ }
183
+
184
+ // Discriminators are the first 8 bytes of sha256("event:<EventName>") — copied from the IDL's
185
+ // `events` array (`ts-sdk/src/picon_dlmm.json`), same derivation Anchor uses for accounts.
186
+ const DISCRIMINATORS = {
187
+ CreatePoolEvent: [177, 49, 12, 210, 160, 118, 167, 116],
188
+ OpenPositionEvent: [83, 43, 164, 147, 169, 87, 81, 172],
189
+ ClosePositionEvent: [198, 217, 115, 95, 191, 120, 142, 137],
190
+ DepositEvent: [120, 248, 61, 83, 31, 142, 107, 144],
191
+ WithdrawEvent: [22, 9, 133, 26, 160, 44, 71, 192],
192
+ ClaimFeeEvent: [173, 80, 235, 15, 116, 19, 144, 33],
193
+ SwapEvent: [64, 198, 205, 232, 38, 8, 113, 226],
194
+ } as const satisfies Record<string, number[]>;
195
+
196
+ export type DlmmEvent =
197
+ | { name: "CreatePoolEvent", data: CreatePoolEvent }
198
+ | { name: "OpenPositionEvent", data: OpenPositionEvent }
199
+ | { name: "ClosePositionEvent", data: ClosePositionEvent }
200
+ | { name: "DepositEvent", data: DepositEvent }
201
+ | { name: "WithdrawEvent", data: WithdrawEvent }
202
+ | { name: "ClaimFeeEvent", data: ClaimFeeEvent }
203
+ | { name: "SwapEvent", data: SwapEvent };
204
+
205
+ const DECODERS: { [K in DlmmEvent["name"]]: FixedSizeDecoder<Extract<DlmmEvent, { name: K }>["data"]> } = {
206
+ CreatePoolEvent: getCreatePoolEventDecoder(),
207
+ OpenPositionEvent: getOpenPositionEventDecoder(),
208
+ ClosePositionEvent: getClosePositionEventDecoder(),
209
+ DepositEvent: getDepositEventDecoder(),
210
+ WithdrawEvent: getWithdrawEventDecoder(),
211
+ ClaimFeeEvent: getClaimFeeEventDecoder(),
212
+ SwapEvent: getSwapEventDecoder(),
213
+ };
214
+
215
+ const PROGRAM_DATA_PREFIX = "Program data: ";
216
+
217
+ // `emit!` (not `emit_cpi!`) writes each event as a `Program data: <base64>` log line — the
218
+ // base64 payload is [8-byte discriminator][borsh-encoded fields], same layout as an account.
219
+ function decodeEventBytes(bytes: ReadonlyUint8Array): DlmmEvent | undefined {
220
+ const discriminator = bytes.subarray(0, 8);
221
+ const body = bytes.subarray(8);
222
+
223
+ for (const name of Object.keys(DISCRIMINATORS) as DlmmEvent["name"][]) {
224
+ const expected = DISCRIMINATORS[name];
225
+ if (expected.every((byte, i) => byte === discriminator[i])) {
226
+ return { name, data: DECODERS[name].decode(body) } as DlmmEvent;
227
+ }
228
+ }
229
+
230
+ return undefined;
231
+ }
232
+
233
+ // Decodes a single `Program data: ...` log line, or returns undefined if the line isn't one
234
+ // (or belongs to an event this SDK doesn't know about).
235
+ export function decodeEventFromLogLine(logLine: string): DlmmEvent | undefined {
236
+ if (!logLine.startsWith(PROGRAM_DATA_PREFIX)) {
237
+ return undefined;
238
+ }
239
+ const base64Payload = logLine.slice(PROGRAM_DATA_PREFIX.length);
240
+ const bytes = getBase64Encoder().encode(base64Payload);
241
+ return decodeEventBytes(bytes);
242
+ }
243
+
244
+ // Matches the "Program <address> invoke [<depth>]" / "Program <address> success"/"failed"
245
+ // bracket Solana emits around every top-level call and CPI.
246
+ const INVOKE_LOG = /^Program (\w+) invoke \[\d+\]$/;
247
+ const RESULT_LOG = /^Program (\w+) (?:success|failed)/;
248
+
249
+ // Decodes every recognized event out of a transaction's full log array, in log order —
250
+ // scoped to lines logged while this program is the currently-executing one, tracked via the
251
+ // invoke/success bracket above. Without this, a "Program data:" line from a CPI'd program that
252
+ // happens to emit an identically-named (and thus identically-discriminated, since Anchor
253
+ // derives discriminators from the event name alone) event would be mis-decoded as ours, or
254
+ // throw if its body doesn't match our layout.
255
+ export function decodeEventsFromLogs(logs: readonly string[], programAddress: Address = PICON_DLMM_PROGRAM_ADDRESS): DlmmEvent[] {
256
+ const events: DlmmEvent[] = [];
257
+ const programStack: string[] = [];
258
+
259
+ for (const line of logs) {
260
+ const invokeMatch = INVOKE_LOG.exec(line);
261
+ if (invokeMatch !== null) {
262
+ programStack.push(invokeMatch[1]);
263
+ continue;
264
+ }
265
+ if (RESULT_LOG.test(line)) {
266
+ programStack.pop();
267
+ continue;
268
+ }
269
+ if (programStack[programStack.length - 1] !== programAddress) {
270
+ continue;
271
+ }
272
+
273
+ const event = decodeEventFromLogLine(line);
274
+ if (event !== undefined) {
275
+ events.push(event);
276
+ }
277
+ }
278
+ return events;
279
+ }
@@ -0,0 +1,147 @@
1
+ /**
2
+ * This code was AUTOGENERATED using the Codama library.
3
+ * Please DO NOT EDIT THIS FILE, instead use visitors
4
+ * to add features, then rerun Codama to update it.
5
+ *
6
+ * @see https://github.com/codama-idl/codama
7
+ */
8
+
9
+ import {
10
+ assertAccountExists,
11
+ assertAccountsExist,
12
+ combineCodec,
13
+ decodeAccount,
14
+ fetchEncodedAccount,
15
+ fetchEncodedAccounts,
16
+ fixDecoderSize,
17
+ fixEncoderSize,
18
+ getAddressDecoder,
19
+ getAddressEncoder,
20
+ getBytesDecoder,
21
+ getBytesEncoder,
22
+ getStructDecoder,
23
+ getStructEncoder,
24
+ transformEncoder,
25
+ type Account,
26
+ type Address,
27
+ type EncodedAccount,
28
+ type FetchAccountConfig,
29
+ type FetchAccountsConfig,
30
+ type FixedSizeCodec,
31
+ type FixedSizeDecoder,
32
+ type FixedSizeEncoder,
33
+ type MaybeAccount,
34
+ type MaybeEncodedAccount,
35
+ type ReadonlyUint8Array,
36
+ } from "@solana/kit";
37
+
38
+ export const ADMIN_CONFIG_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([
39
+ 156, 10, 79, 161, 71, 9, 62, 77,
40
+ ]);
41
+
42
+ export function getAdminConfigDiscriminatorBytes(): ReadonlyUint8Array {
43
+ return fixEncoderSize(getBytesEncoder(), 8).encode(
44
+ ADMIN_CONFIG_DISCRIMINATOR,
45
+ );
46
+ }
47
+
48
+ export type AdminConfig = {
49
+ discriminator: ReadonlyUint8Array;
50
+ authority: Address;
51
+ pendingAuthority: Address;
52
+ metadataUpdateAuthority: Address;
53
+ };
54
+
55
+ export type AdminConfigArgs = {
56
+ authority: Address;
57
+ pendingAuthority: Address;
58
+ metadataUpdateAuthority: Address;
59
+ };
60
+
61
+ /** Gets the encoder for {@link AdminConfigArgs} account data. */
62
+ export function getAdminConfigEncoder(): FixedSizeEncoder<AdminConfigArgs> {
63
+ return transformEncoder(
64
+ getStructEncoder([
65
+ ["discriminator", fixEncoderSize(getBytesEncoder(), 8)],
66
+ ["authority", getAddressEncoder()],
67
+ ["pendingAuthority", getAddressEncoder()],
68
+ ["metadataUpdateAuthority", getAddressEncoder()],
69
+ ]),
70
+ (value) => ({ ...value, discriminator: ADMIN_CONFIG_DISCRIMINATOR }),
71
+ );
72
+ }
73
+
74
+ /** Gets the decoder for {@link AdminConfig} account data. */
75
+ export function getAdminConfigDecoder(): FixedSizeDecoder<AdminConfig> {
76
+ return getStructDecoder([
77
+ ["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
78
+ ["authority", getAddressDecoder()],
79
+ ["pendingAuthority", getAddressDecoder()],
80
+ ["metadataUpdateAuthority", getAddressDecoder()],
81
+ ]);
82
+ }
83
+
84
+ /** Gets the codec for {@link AdminConfig} account data. */
85
+ export function getAdminConfigCodec(): FixedSizeCodec<
86
+ AdminConfigArgs,
87
+ AdminConfig
88
+ > {
89
+ return combineCodec(getAdminConfigEncoder(), getAdminConfigDecoder());
90
+ }
91
+
92
+ export function decodeAdminConfig<TAddress extends string = string>(
93
+ encodedAccount: EncodedAccount<TAddress>,
94
+ ): Account<AdminConfig, TAddress>;
95
+ export function decodeAdminConfig<TAddress extends string = string>(
96
+ encodedAccount: MaybeEncodedAccount<TAddress>,
97
+ ): MaybeAccount<AdminConfig, TAddress>;
98
+ export function decodeAdminConfig<TAddress extends string = string>(
99
+ encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,
100
+ ): Account<AdminConfig, TAddress> | MaybeAccount<AdminConfig, TAddress> {
101
+ return decodeAccount(
102
+ encodedAccount as MaybeEncodedAccount<TAddress>,
103
+ getAdminConfigDecoder(),
104
+ );
105
+ }
106
+
107
+ export async function fetchAdminConfig<TAddress extends string = string>(
108
+ rpc: Parameters<typeof fetchEncodedAccount>[0],
109
+ address: Address<TAddress>,
110
+ config?: FetchAccountConfig,
111
+ ): Promise<Account<AdminConfig, TAddress>> {
112
+ const maybeAccount = await fetchMaybeAdminConfig(rpc, address, config);
113
+ assertAccountExists(maybeAccount);
114
+ return maybeAccount;
115
+ }
116
+
117
+ export async function fetchMaybeAdminConfig<TAddress extends string = string>(
118
+ rpc: Parameters<typeof fetchEncodedAccount>[0],
119
+ address: Address<TAddress>,
120
+ config?: FetchAccountConfig,
121
+ ): Promise<MaybeAccount<AdminConfig, TAddress>> {
122
+ const maybeAccount = await fetchEncodedAccount(rpc, address, config);
123
+ return decodeAdminConfig(maybeAccount);
124
+ }
125
+
126
+ export async function fetchAllAdminConfig(
127
+ rpc: Parameters<typeof fetchEncodedAccounts>[0],
128
+ addresses: Array<Address>,
129
+ config?: FetchAccountsConfig,
130
+ ): Promise<Account<AdminConfig>[]> {
131
+ const maybeAccounts = await fetchAllMaybeAdminConfig(rpc, addresses, config);
132
+ assertAccountsExist(maybeAccounts);
133
+ return maybeAccounts;
134
+ }
135
+
136
+ export async function fetchAllMaybeAdminConfig(
137
+ rpc: Parameters<typeof fetchEncodedAccounts>[0],
138
+ addresses: Array<Address>,
139
+ config?: FetchAccountsConfig,
140
+ ): Promise<MaybeAccount<AdminConfig>[]> {
141
+ const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
142
+ return maybeAccounts.map((maybeAccount) => decodeAdminConfig(maybeAccount));
143
+ }
144
+
145
+ export function getAdminConfigSize(): number {
146
+ return 104;
147
+ }