@layerzerolabs/lz-solana-sdk-v2 3.0.47 → 3.0.48

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 (323) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/package.json +11 -10
  3. package/src/base-oapp.ts +159 -0
  4. package/src/config.ts +32 -0
  5. package/src/deployment.test.ts +11 -0
  6. package/src/deployment.ts +128 -0
  7. package/src/dvn.ts +606 -0
  8. package/src/endpoint.ts +1518 -0
  9. package/src/executor.ts +577 -0
  10. package/src/generated/blocked_messagelib/index.ts +18 -0
  11. package/src/generated/blocked_messagelib/instructions/index.ts +1 -0
  12. package/src/generated/blocked_messagelib/instructions/version.ts +59 -0
  13. package/src/generated/dvn/accounts/DvnConfig.ts +217 -0
  14. package/src/generated/dvn/accounts/ExecuteHash.ts +179 -0
  15. package/src/generated/dvn/accounts/ReceiveConfig.ts +169 -0
  16. package/src/generated/dvn/accounts/index.ts +9 -0
  17. package/src/generated/dvn/errors/index.ts +396 -0
  18. package/src/generated/dvn/events/AdminConfigSetEvent.ts +22 -0
  19. package/src/generated/dvn/events/FeeWithdrawnEvent.ts +26 -0
  20. package/src/generated/dvn/events/MultisigConfigSetEvent.ts +22 -0
  21. package/src/generated/dvn/events/index.ts +3 -0
  22. package/src/generated/dvn/index.ts +21 -0
  23. package/src/generated/dvn/instructions/closeExecute.ts +148 -0
  24. package/src/generated/dvn/instructions/index.ts +7 -0
  25. package/src/generated/dvn/instructions/initDvn.ts +144 -0
  26. package/src/generated/dvn/instructions/invoke.ts +178 -0
  27. package/src/generated/dvn/instructions/quoteDvn.ts +145 -0
  28. package/src/generated/dvn/instructions/setConfig.ts +157 -0
  29. package/src/generated/dvn/instructions/verifiable.ts +160 -0
  30. package/src/generated/dvn/instructions/withdrawFee.ts +172 -0
  31. package/src/generated/dvn/types/Acl.ts +26 -0
  32. package/src/generated/dvn/types/AdminConfig.ts +100 -0
  33. package/src/generated/dvn/types/CloseExecuteParams.ts +21 -0
  34. package/src/generated/dvn/types/DstConfig.ts +28 -0
  35. package/src/generated/dvn/types/ExecuteTransactionDigest.ts +37 -0
  36. package/src/generated/dvn/types/InitDvnParams.ts +34 -0
  37. package/src/generated/dvn/types/InvokeParams.ts +28 -0
  38. package/src/generated/dvn/types/LzOption.ts +24 -0
  39. package/src/generated/dvn/types/Multisig.ts +24 -0
  40. package/src/generated/dvn/types/MultisigConfig.ts +124 -0
  41. package/src/generated/dvn/types/QuoteDvnParams.ts +38 -0
  42. package/src/generated/dvn/types/SetConfigParams.ts +22 -0
  43. package/src/generated/dvn/types/TransactionAccount.ts +29 -0
  44. package/src/generated/dvn/types/UlnConfig.ts +34 -0
  45. package/src/generated/dvn/types/VerifiableParams.ts +24 -0
  46. package/src/generated/dvn/types/VerificationState.ts +27 -0
  47. package/src/generated/dvn/types/WithdrawFeeParams.ts +20 -0
  48. package/src/generated/dvn/types/index.ts +17 -0
  49. package/src/generated/endpoint/accounts/ComposeMessageState.ts +170 -0
  50. package/src/generated/endpoint/accounts/EndpointSettings.ts +184 -0
  51. package/src/generated/endpoint/accounts/MessageLibInfo.ts +178 -0
  52. package/src/generated/endpoint/accounts/Nonce.ts +193 -0
  53. package/src/generated/endpoint/accounts/OAppRegistry.ts +169 -0
  54. package/src/generated/endpoint/accounts/PayloadHash.ts +169 -0
  55. package/src/generated/endpoint/accounts/PendingInboundNonce.ts +172 -0
  56. package/src/generated/endpoint/accounts/ReceiveLibraryConfig.ts +183 -0
  57. package/src/generated/endpoint/accounts/SendLibraryConfig.ts +171 -0
  58. package/src/generated/endpoint/accounts/index.ts +31 -0
  59. package/src/generated/endpoint/errors/index.ts +428 -0
  60. package/src/generated/endpoint/events/AdminTransferredEvent.ts +23 -0
  61. package/src/generated/endpoint/events/ComposeDeliveredEvent.ts +31 -0
  62. package/src/generated/endpoint/events/ComposeSentEvent.ts +33 -0
  63. package/src/generated/endpoint/events/DefaultReceiveLibrarySetEvent.ts +27 -0
  64. package/src/generated/endpoint/events/DefaultReceiveLibraryTimeoutSetEvent.ts +29 -0
  65. package/src/generated/endpoint/events/DefaultSendLibrarySetEvent.ts +27 -0
  66. package/src/generated/endpoint/events/DelegateSetEvent.ts +22 -0
  67. package/src/generated/endpoint/events/InboundNonceSkippedEvent.ts +31 -0
  68. package/src/generated/endpoint/events/LibraryRegisteredEvent.ts +27 -0
  69. package/src/generated/endpoint/events/LzComposeAlertEvent.ts +43 -0
  70. package/src/generated/endpoint/events/LzReceiveAlertEvent.ts +45 -0
  71. package/src/generated/endpoint/events/LzTokenSetEvent.ts +23 -0
  72. package/src/generated/endpoint/events/OAppRegisteredEvent.ts +27 -0
  73. package/src/generated/endpoint/events/PacketBurntEvent.ts +32 -0
  74. package/src/generated/endpoint/events/PacketDeliveredEvent.ts +31 -0
  75. package/src/generated/endpoint/events/PacketNilifiedEvent.ts +33 -0
  76. package/src/generated/endpoint/events/PacketSentEvent.ts +29 -0
  77. package/src/generated/endpoint/events/PacketVerifiedEvent.ts +33 -0
  78. package/src/generated/endpoint/events/ReceiveLibrarySetEvent.ts +29 -0
  79. package/src/generated/endpoint/events/ReceiveLibraryTimeoutSetEvent.ts +33 -0
  80. package/src/generated/endpoint/events/RentWithdrawnEvent.ts +27 -0
  81. package/src/generated/endpoint/events/SendLibrarySetEvent.ts +29 -0
  82. package/src/generated/endpoint/events/index.ts +22 -0
  83. package/src/generated/endpoint/index.ts +21 -0
  84. package/src/generated/endpoint/instructions/burn.ts +191 -0
  85. package/src/generated/endpoint/instructions/clear.ts +193 -0
  86. package/src/generated/endpoint/instructions/clearCompose.ts +160 -0
  87. package/src/generated/endpoint/instructions/index.ts +32 -0
  88. package/src/generated/endpoint/instructions/initConfig.ts +172 -0
  89. package/src/generated/endpoint/instructions/initDefaultReceiveLibrary.ts +195 -0
  90. package/src/generated/endpoint/instructions/initDefaultSendLibrary.ts +195 -0
  91. package/src/generated/endpoint/instructions/initEndpoint.ts +147 -0
  92. package/src/generated/endpoint/instructions/initNonce.ts +168 -0
  93. package/src/generated/endpoint/instructions/initReceiveLibrary.ts +159 -0
  94. package/src/generated/endpoint/instructions/initSendLibrary.ts +159 -0
  95. package/src/generated/endpoint/instructions/initVerify.ts +159 -0
  96. package/src/generated/endpoint/instructions/lzComposeAlert.ts +148 -0
  97. package/src/generated/endpoint/instructions/lzReceiveAlert.ts +148 -0
  98. package/src/generated/endpoint/instructions/nilify.ts +193 -0
  99. package/src/generated/endpoint/instructions/quote.ts +181 -0
  100. package/src/generated/endpoint/instructions/registerLibrary.ts +183 -0
  101. package/src/generated/endpoint/instructions/registerOapp.ts +183 -0
  102. package/src/generated/endpoint/instructions/send.ts +215 -0
  103. package/src/generated/endpoint/instructions/sendCompose.ts +183 -0
  104. package/src/generated/endpoint/instructions/setConfig.ts +169 -0
  105. package/src/generated/endpoint/instructions/setDefaultReceiveLibrary.ts +184 -0
  106. package/src/generated/endpoint/instructions/setDefaultReceiveLibraryTimeout.ts +185 -0
  107. package/src/generated/endpoint/instructions/setDefaultSendLibrary.ts +184 -0
  108. package/src/generated/endpoint/instructions/setDelegate.ts +160 -0
  109. package/src/generated/endpoint/instructions/setLzToken.ts +160 -0
  110. package/src/generated/endpoint/instructions/setReceiveLibrary.ts +190 -0
  111. package/src/generated/endpoint/instructions/setReceiveLibraryTimeout.ts +184 -0
  112. package/src/generated/endpoint/instructions/setSendLibrary.ts +190 -0
  113. package/src/generated/endpoint/instructions/skip.ts +203 -0
  114. package/src/generated/endpoint/instructions/transferAdmin.ts +160 -0
  115. package/src/generated/endpoint/instructions/verify.ts +205 -0
  116. package/src/generated/endpoint/instructions/withdrawRent.ts +172 -0
  117. package/src/generated/endpoint/types/BurnParams.ts +32 -0
  118. package/src/generated/endpoint/types/ClearComposeParams.ts +31 -0
  119. package/src/generated/endpoint/types/ClearParams.ts +34 -0
  120. package/src/generated/endpoint/types/InitConfigParams.ts +26 -0
  121. package/src/generated/endpoint/types/InitDefaultReceiveLibraryParams.ts +27 -0
  122. package/src/generated/endpoint/types/InitDefaultSendLibraryParams.ts +27 -0
  123. package/src/generated/endpoint/types/InitEndpointParams.ts +27 -0
  124. package/src/generated/endpoint/types/InitNonceParams.ts +28 -0
  125. package/src/generated/endpoint/types/InitReceiveLibraryParams.ts +27 -0
  126. package/src/generated/endpoint/types/InitSendLibraryParams.ts +27 -0
  127. package/src/generated/endpoint/types/InitVerifyParams.ts +30 -0
  128. package/src/generated/endpoint/types/LzComposeAlertParams.ts +41 -0
  129. package/src/generated/endpoint/types/LzReceiveAlertParams.ts +43 -0
  130. package/src/generated/endpoint/types/MessageLibType.ts +25 -0
  131. package/src/generated/endpoint/types/MessagingFee.ts +24 -0
  132. package/src/generated/endpoint/types/MessagingReceipt.ts +27 -0
  133. package/src/generated/endpoint/types/NilifyParams.ts +32 -0
  134. package/src/generated/endpoint/types/QuoteParams.ts +34 -0
  135. package/src/generated/endpoint/types/ReceiveLibraryTimeout.ts +27 -0
  136. package/src/generated/endpoint/types/RegisterLibraryParams.ts +28 -0
  137. package/src/generated/endpoint/types/RegisterOAppParams.ts +23 -0
  138. package/src/generated/endpoint/types/SendComposeParams.ts +31 -0
  139. package/src/generated/endpoint/types/SendParams.ts +32 -0
  140. package/src/generated/endpoint/types/SetConfigParams.ts +31 -0
  141. package/src/generated/endpoint/types/SetDefaultReceiveLibraryParams.ts +29 -0
  142. package/src/generated/endpoint/types/SetDefaultReceiveLibraryTimeoutParams.ts +29 -0
  143. package/src/generated/endpoint/types/SetDefaultSendLibraryParams.ts +27 -0
  144. package/src/generated/endpoint/types/SetDelegateParams.ts +22 -0
  145. package/src/generated/endpoint/types/SetLzTokenParams.ts +23 -0
  146. package/src/generated/endpoint/types/SetReceiveLibraryParams.ts +31 -0
  147. package/src/generated/endpoint/types/SetReceiveLibraryTimeoutParams.ts +31 -0
  148. package/src/generated/endpoint/types/SetSendLibraryParams.ts +29 -0
  149. package/src/generated/endpoint/types/SkipParams.ts +30 -0
  150. package/src/generated/endpoint/types/TransferAdminParams.ts +23 -0
  151. package/src/generated/endpoint/types/VerifyParams.ts +32 -0
  152. package/src/generated/endpoint/types/WithdrawRentParams.ts +21 -0
  153. package/src/generated/endpoint/types/index.ts +36 -0
  154. package/src/generated/executor/accounts/ExecutorConfig.ts +216 -0
  155. package/src/generated/executor/accounts/Nonce.ts +193 -0
  156. package/src/generated/executor/accounts/index.ts +7 -0
  157. package/src/generated/executor/errors/index.ts +434 -0
  158. package/src/generated/executor/events/NativeDropAppliedEvent.ts +38 -0
  159. package/src/generated/executor/events/index.ts +1 -0
  160. package/src/generated/executor/index.ts +21 -0
  161. package/src/generated/executor/instructions/adminSetConfig.ts +136 -0
  162. package/src/generated/executor/instructions/compose.ts +181 -0
  163. package/src/generated/executor/instructions/executable.ts +136 -0
  164. package/src/generated/executor/instructions/execute.ts +181 -0
  165. package/src/generated/executor/instructions/index.ts +8 -0
  166. package/src/generated/executor/instructions/initExecutor.ts +147 -0
  167. package/src/generated/executor/instructions/nativeDrop.ts +171 -0
  168. package/src/generated/executor/instructions/ownerSetConfig.ts +136 -0
  169. package/src/generated/executor/instructions/quoteExecutor.ts +148 -0
  170. package/src/generated/executor/types/Acl.ts +26 -0
  171. package/src/generated/executor/types/AdminSetConfigParams.ts +83 -0
  172. package/src/generated/executor/types/ComposeParams.ts +27 -0
  173. package/src/generated/executor/types/DstConfig.ts +32 -0
  174. package/src/generated/executor/types/ExecutableParams.ts +30 -0
  175. package/src/generated/executor/types/ExecuteParams.ts +31 -0
  176. package/src/generated/executor/types/ExecutionState.ts +26 -0
  177. package/src/generated/executor/types/InitExecutorParams.ts +33 -0
  178. package/src/generated/executor/types/LzComposeParams.ts +35 -0
  179. package/src/generated/executor/types/LzOption.ts +24 -0
  180. package/src/generated/executor/types/LzReceiveParams.ts +33 -0
  181. package/src/generated/executor/types/NativeDropParams.ts +36 -0
  182. package/src/generated/executor/types/NativeDropRequest.ts +26 -0
  183. package/src/generated/executor/types/OwnerSetConfigParams.ts +123 -0
  184. package/src/generated/executor/types/QuoteExecutorParams.ts +34 -0
  185. package/src/generated/executor/types/index.ts +15 -0
  186. package/src/generated/pricefeed/accounts/PriceFeed.ts +220 -0
  187. package/src/generated/pricefeed/accounts/index.ts +5 -0
  188. package/src/generated/pricefeed/errors/index.ts +115 -0
  189. package/src/generated/pricefeed/index.ts +21 -0
  190. package/src/generated/pricefeed/instructions/getFee.ts +121 -0
  191. package/src/generated/pricefeed/instructions/index.ts +6 -0
  192. package/src/generated/pricefeed/instructions/initPriceFeed.ts +147 -0
  193. package/src/generated/pricefeed/instructions/setPrice.ts +133 -0
  194. package/src/generated/pricefeed/instructions/setPriceFeed.ts +136 -0
  195. package/src/generated/pricefeed/instructions/setSolPrice.ts +136 -0
  196. package/src/generated/pricefeed/instructions/transferAdmin.ts +136 -0
  197. package/src/generated/pricefeed/types/GetFeeParams.ts +26 -0
  198. package/src/generated/pricefeed/types/InitPriceFeedParams.ts +27 -0
  199. package/src/generated/pricefeed/types/ModelType.ts +66 -0
  200. package/src/generated/pricefeed/types/Price.ts +31 -0
  201. package/src/generated/pricefeed/types/PriceParams.ts +29 -0
  202. package/src/generated/pricefeed/types/SetPriceFeedParams.ts +29 -0
  203. package/src/generated/pricefeed/types/SetPriceParams.ts +26 -0
  204. package/src/generated/pricefeed/types/SetSolPriceParams.ts +21 -0
  205. package/src/generated/pricefeed/types/TransferAdminParams.ts +23 -0
  206. package/src/generated/pricefeed/types/index.ts +9 -0
  207. package/src/generated/simple_messagelib/accounts/MessageLib.ts +222 -0
  208. package/src/generated/simple_messagelib/accounts/ReceiveConfigStore.ts +168 -0
  209. package/src/generated/simple_messagelib/accounts/SendConfigStore.ts +170 -0
  210. package/src/generated/simple_messagelib/accounts/index.ts +13 -0
  211. package/src/generated/simple_messagelib/errors/index.ts +207 -0
  212. package/src/generated/simple_messagelib/index.ts +21 -0
  213. package/src/generated/simple_messagelib/instructions/index.ts +15 -0
  214. package/src/generated/simple_messagelib/instructions/initConfig.ts +183 -0
  215. package/src/generated/simple_messagelib/instructions/initDefaultConfig.ts +171 -0
  216. package/src/generated/simple_messagelib/instructions/initMessageLib.ts +147 -0
  217. package/src/generated/simple_messagelib/instructions/quote.ts +133 -0
  218. package/src/generated/simple_messagelib/instructions/revertCall.ts +59 -0
  219. package/src/generated/simple_messagelib/instructions/send.ts +154 -0
  220. package/src/generated/simple_messagelib/instructions/sendWithLzToken.ts +207 -0
  221. package/src/generated/simple_messagelib/instructions/setConfig.ts +157 -0
  222. package/src/generated/simple_messagelib/instructions/setDefaultConfig.ts +171 -0
  223. package/src/generated/simple_messagelib/instructions/setFee.ts +133 -0
  224. package/src/generated/simple_messagelib/instructions/setWlCaller.ts +136 -0
  225. package/src/generated/simple_messagelib/instructions/transferAdmin.ts +136 -0
  226. package/src/generated/simple_messagelib/instructions/validatePacket.ts +136 -0
  227. package/src/generated/simple_messagelib/instructions/version.ts +59 -0
  228. package/src/generated/simple_messagelib/instructions/withdrawFees.ts +148 -0
  229. package/src/generated/simple_messagelib/types/InitConfigParams.ts +26 -0
  230. package/src/generated/simple_messagelib/types/InitDefaultConfigParams.ts +27 -0
  231. package/src/generated/simple_messagelib/types/InitMessageLibParams.ts +35 -0
  232. package/src/generated/simple_messagelib/types/MessagingFee.ts +24 -0
  233. package/src/generated/simple_messagelib/types/Packet.ts +36 -0
  234. package/src/generated/simple_messagelib/types/QuoteParams.ts +27 -0
  235. package/src/generated/simple_messagelib/types/SendParams.ts +27 -0
  236. package/src/generated/simple_messagelib/types/SendWithLzTokenParams.ts +34 -0
  237. package/src/generated/simple_messagelib/types/SetConfigParams.ts +31 -0
  238. package/src/generated/simple_messagelib/types/SetDefaultConfigParams.ts +27 -0
  239. package/src/generated/simple_messagelib/types/SetFeeParams.ts +24 -0
  240. package/src/generated/simple_messagelib/types/SetWlCallerParams.ts +22 -0
  241. package/src/generated/simple_messagelib/types/TransferAdminParams.ts +23 -0
  242. package/src/generated/simple_messagelib/types/ValidatePacketParams.ts +21 -0
  243. package/src/generated/simple_messagelib/types/Version.ts +26 -0
  244. package/src/generated/simple_messagelib/types/WithdrawFeesParams.ts +21 -0
  245. package/src/generated/simple_messagelib/types/index.ts +16 -0
  246. package/src/generated/uln/accounts/Confirmations.ts +171 -0
  247. package/src/generated/uln/accounts/ReceiveConfig.ts +169 -0
  248. package/src/generated/uln/accounts/SendConfig.ts +177 -0
  249. package/src/generated/uln/accounts/UlnSettings.ts +195 -0
  250. package/src/generated/uln/accounts/index.ts +16 -0
  251. package/src/generated/uln/errors/index.ts +761 -0
  252. package/src/generated/uln/events/AdminTransferredEvent.ts +23 -0
  253. package/src/generated/uln/events/ConfigSetEvent.ts +30 -0
  254. package/src/generated/uln/events/DefaultConfigSetEvent.ts +31 -0
  255. package/src/generated/uln/events/FeesPaidEvent.ts +28 -0
  256. package/src/generated/uln/events/LzTokenSetEvent.ts +23 -0
  257. package/src/generated/uln/events/PayloadVerifiedEvent.ts +31 -0
  258. package/src/generated/uln/events/RentWithdrawnEvent.ts +27 -0
  259. package/src/generated/uln/events/TreasuryFeeCapSetEvent.ts +21 -0
  260. package/src/generated/uln/events/TreasurySetEvent.ts +22 -0
  261. package/src/generated/uln/events/index.ts +7 -0
  262. package/src/generated/uln/index.ts +21 -0
  263. package/src/generated/uln/instructions/closeVerify.ts +148 -0
  264. package/src/generated/uln/instructions/commitVerification.ts +148 -0
  265. package/src/generated/uln/instructions/index.ts +16 -0
  266. package/src/generated/uln/instructions/initConfig.ts +183 -0
  267. package/src/generated/uln/instructions/initDefaultConfig.ts +195 -0
  268. package/src/generated/uln/instructions/initUln.ts +144 -0
  269. package/src/generated/uln/instructions/initVerify.ts +147 -0
  270. package/src/generated/uln/instructions/quote.ts +157 -0
  271. package/src/generated/uln/instructions/send.ts +220 -0
  272. package/src/generated/uln/instructions/sendWithLzToken.ts +255 -0
  273. package/src/generated/uln/instructions/setConfig.ts +205 -0
  274. package/src/generated/uln/instructions/setDefaultConfig.ts +184 -0
  275. package/src/generated/uln/instructions/setTreasury.ts +160 -0
  276. package/src/generated/uln/instructions/transferAdmin.ts +160 -0
  277. package/src/generated/uln/instructions/verify.ts +157 -0
  278. package/src/generated/uln/instructions/version.ts +59 -0
  279. package/src/generated/uln/instructions/withdrawRent.ts +172 -0
  280. package/src/generated/uln/types/CloseVerifyParams.ts +24 -0
  281. package/src/generated/uln/types/CommitVerificationParams.ts +25 -0
  282. package/src/generated/uln/types/Config.ts +75 -0
  283. package/src/generated/uln/types/ExecutorConfig.ts +26 -0
  284. package/src/generated/uln/types/InitConfigParams.ts +26 -0
  285. package/src/generated/uln/types/InitDefaultConfigParams.ts +31 -0
  286. package/src/generated/uln/types/InitUlnParams.ts +30 -0
  287. package/src/generated/uln/types/InitVerifyParams.ts +28 -0
  288. package/src/generated/uln/types/LzTokenTreasury.ts +26 -0
  289. package/src/generated/uln/types/MessagingFee.ts +24 -0
  290. package/src/generated/uln/types/Packet.ts +36 -0
  291. package/src/generated/uln/types/QuoteParams.ts +27 -0
  292. package/src/generated/uln/types/SendParams.ts +27 -0
  293. package/src/generated/uln/types/SendWithLzTokenParams.ts +34 -0
  294. package/src/generated/uln/types/SetConfigParams.ts +31 -0
  295. package/src/generated/uln/types/SetDefaultConfigParams.ts +31 -0
  296. package/src/generated/uln/types/SetTreasuryParams.ts +22 -0
  297. package/src/generated/uln/types/TransferAdminParams.ts +23 -0
  298. package/src/generated/uln/types/Treasury.ts +31 -0
  299. package/src/generated/uln/types/TreasuryFee.ts +28 -0
  300. package/src/generated/uln/types/UlnConfig.ts +34 -0
  301. package/src/generated/uln/types/VerifyParams.ts +26 -0
  302. package/src/generated/uln/types/Version.ts +26 -0
  303. package/src/generated/uln/types/WithdrawRentParams.ts +21 -0
  304. package/src/generated/uln/types/WorkerFee.ts +26 -0
  305. package/src/generated/uln/types/index.ts +25 -0
  306. package/src/generated/worker_interface/errors/index.ts +75 -0
  307. package/src/generated/worker_interface/index.ts +20 -0
  308. package/src/generated/worker_interface/instructions/index.ts +2 -0
  309. package/src/generated/worker_interface/instructions/quoteDvn.ts +145 -0
  310. package/src/generated/worker_interface/instructions/quoteExecutor.ts +148 -0
  311. package/src/generated/worker_interface/types/LzOption.ts +24 -0
  312. package/src/generated/worker_interface/types/QuoteDvnParams.ts +38 -0
  313. package/src/generated/worker_interface/types/QuoteExecutorParams.ts +34 -0
  314. package/src/generated/worker_interface/types/index.ts +3 -0
  315. package/src/index.ts +120 -0
  316. package/src/pda-deriver.ts +658 -0
  317. package/src/pricefeed.ts +208 -0
  318. package/src/recevie.ts +269 -0
  319. package/src/send-helper.ts +504 -0
  320. package/src/simple-message-lib.ts +303 -0
  321. package/src/types.ts +222 -0
  322. package/src/uln.ts +1045 -0
  323. package/src/utility.ts +592 -0
@@ -0,0 +1,504 @@
1
+ import { AccountInfo, AccountMeta, Commitment, Connection, GetAccountInfoConfig, PublicKey } from '@solana/web3.js'
2
+ import invariant from 'tiny-invariant'
3
+
4
+ import { addressToBytes32 } from '@layerzerolabs/lz-v2-utilities'
5
+
6
+ import { DVN, accounts as DvnAccounts } from './dvn'
7
+ import { DefaultMessageLib } from './endpoint'
8
+ import { Executor, accounts as ExecutorAccounts } from './executor'
9
+
10
+ import { EndpointProgram, SimpleMessageLibProgram, UlnProgram } from '.'
11
+
12
+ /**
13
+ * Interface representing keyed account information.
14
+ */
15
+ interface KeyedAccountInfo {
16
+ /**
17
+ * The account ID.
18
+ */
19
+ accountId: PublicKey
20
+
21
+ /**
22
+ * The account information.
23
+ */
24
+ accountInfo: AccountInfo<Buffer> | null
25
+ }
26
+
27
+ /**
28
+ * Enum representing quote or send actions.
29
+ */
30
+ enum QuoteOrSend {
31
+ /**
32
+ * Quote action.
33
+ */
34
+ Quote,
35
+
36
+ /**
37
+ * Send action.
38
+ */
39
+ Send,
40
+ }
41
+
42
+ /**
43
+ * Class representing a helper for sending transactions.
44
+ */
45
+ export class SendHelper {
46
+ private endpoint: EndpointProgram.Endpoint
47
+ private uln: UlnProgram.Uln
48
+ private simpleMsgLib: SimpleMessageLibProgram.SimpleMessageLib
49
+ private accounts = new Map<string, AccountInfo<Buffer> | null>()
50
+
51
+ /**
52
+ * Creates an instance of the SendHelper class.
53
+ *
54
+ * @param {PublicKey} [endpointProgram=EndpointProgram.PROGRAM_ID] - The endpoint program public key.
55
+ * @param {PublicKey} [ulnProgram=UlnProgram.PROGRAM_ID] - The ULN program public key.
56
+ * @param {PublicKey} [simpleMsgLibProgram=SimpleMessageLibProgram.PROGRAM_ID] - The simple message library program public key.
57
+ */
58
+ constructor(
59
+ public readonly endpointProgram: PublicKey = EndpointProgram.PROGRAM_ID,
60
+ public readonly ulnProgram: PublicKey = UlnProgram.PROGRAM_ID,
61
+ public readonly simpleMsgLibProgram: PublicKey = SimpleMessageLibProgram.PROGRAM_ID
62
+ ) {
63
+ this.endpoint = new EndpointProgram.Endpoint(endpointProgram)
64
+ this.uln = new UlnProgram.Uln(ulnProgram)
65
+ this.simpleMsgLib = new SimpleMessageLibProgram.SimpleMessageLib(simpleMsgLibProgram)
66
+ }
67
+
68
+ /**
69
+ * Fetches multiple account information.
70
+ *
71
+ * @param {Connection} connection - The connection to the Solana cluster.
72
+ * @param {PublicKey[]} keys - The public keys of the accounts.
73
+ * @param {Commitment | GetAccountInfoConfig} [commitment] - The commitment level or account info configuration.
74
+ * @returns {Promise<(AccountInfo<Buffer> | null)[]>} A promise that resolves to an array of account information.
75
+ */
76
+ private async getMultipleAccountsInfo(
77
+ connection: Connection,
78
+ keys: PublicKey[],
79
+ commitment?: Commitment | GetAccountInfoConfig
80
+ ): Promise<(AccountInfo<Buffer> | null)[]> {
81
+ // check if all accounts are already fetched
82
+ const missingKeys = keys.filter((key) => !this.accounts.has(key.toBase58()))
83
+
84
+ // fetch missing accounts
85
+ if (missingKeys.length > 0) {
86
+ const infos = await connection.getMultipleAccountsInfo(missingKeys, commitment)
87
+ infos.forEach((info, i) => {
88
+ this.accounts.set(missingKeys[i].toBase58(), info)
89
+ })
90
+ }
91
+
92
+ // return all accounts
93
+ return keys.map((key) => this.accounts.get(key.toBase58())!)
94
+ }
95
+
96
+ /**
97
+ * Gets the account metadata for the quote instruction.
98
+ *
99
+ * @param {Connection} connection - The connection to the Solana cluster.
100
+ * @param {PublicKey} payer - The payer public key.
101
+ * @param {PublicKey} sender - The sender public key.
102
+ * @param {number} dstEid - The destination endpoint ID.
103
+ * @param {string} receiver - The receiver address.
104
+ * @param {Commitment | GetAccountInfoConfig} [commitmentOrConfig='confirmed'] - The commitment level or account info configuration.
105
+ * @returns {Promise<AccountMeta[]>} A promise that resolves to an array of account metadata.
106
+ */
107
+ async getQuoteAccounts(
108
+ connection: Connection,
109
+ payer: PublicKey,
110
+ sender: PublicKey,
111
+ dstEid: number,
112
+ receiver: string,
113
+ commitmentOrConfig: Commitment | GetAccountInfoConfig = 'confirmed'
114
+ ): Promise<AccountMeta[]> {
115
+ const [sendLibConfig] = this.endpoint.deriver.sendLibraryConfig(sender, dstEid)
116
+ const [defaultSendLibConfig] = this.endpoint.deriver.defaultSendLibraryConfig(dstEid)
117
+ const [simpleMsgLib] = this.simpleMsgLib.deriver.messageLib()
118
+ const [uln] = this.uln.deriver.messageLib()
119
+ const [ulnDefaultSendConfig] = this.uln.deriver.defaultSendConfig(dstEid)
120
+ const [ulnSendConfig] = this.uln.deriver.sendConfig(dstEid, sender)
121
+ const [
122
+ sendLibConfigBuf,
123
+ defaultSendLibConfigBuf,
124
+ _simpleMsgLibBuf,
125
+ ulnBuf,
126
+ ulnDefaultSendConfigBuf,
127
+ ulnSendConfigBuf,
128
+ ] = await this.getMultipleAccountsInfo(
129
+ connection,
130
+ [sendLibConfig, defaultSendLibConfig, simpleMsgLib, uln, ulnDefaultSendConfig, ulnSendConfig],
131
+ commitmentOrConfig
132
+ )
133
+ invariant(defaultSendLibConfigBuf && sendLibConfigBuf, 'endpoint send library not initialized')
134
+ const [sendLibConfigInfo] = EndpointProgram.accounts.SendLibraryConfig.fromAccountInfo(sendLibConfigBuf, 0)
135
+ const [defaultSendLibConfigInfo] = EndpointProgram.accounts.SendLibraryConfig.fromAccountInfo(
136
+ defaultSendLibConfigBuf,
137
+ 0
138
+ )
139
+ const msgLib =
140
+ sendLibConfigInfo.messageLib.toString() === DefaultMessageLib.toString()
141
+ ? defaultSendLibConfigInfo.messageLib
142
+ : sendLibConfigInfo.messageLib
143
+
144
+ let msgLibProgram = this.ulnProgram
145
+ if (msgLib.toBase58() === this.simpleMsgLib.deriver.messageLib()[0].toBase58()) {
146
+ msgLibProgram = this.simpleMsgLibProgram
147
+ return this.getEndpointAccounts(msgLibProgram, msgLib, sender, dstEid, receiver, QuoteOrSend.Quote).concat(
148
+ this.getSimpleMsgLibAccounts(payer, QuoteOrSend.Quote)
149
+ )
150
+ }
151
+ if (msgLib.toBase58() !== this.uln.deriver.messageLib()[0].toBase58()) {
152
+ throw new Error('Invalid message library')
153
+ }
154
+
155
+ return this.getEndpointAccounts(msgLibProgram, msgLib, sender, dstEid, receiver, QuoteOrSend.Quote).concat(
156
+ await this.getUlnAccounts(
157
+ connection,
158
+ payer,
159
+ {
160
+ accountId: uln,
161
+ accountInfo: ulnBuf,
162
+ },
163
+ {
164
+ accountId: ulnDefaultSendConfig,
165
+ accountInfo: ulnDefaultSendConfigBuf,
166
+ },
167
+ {
168
+ accountId: ulnSendConfig,
169
+ accountInfo: ulnSendConfigBuf,
170
+ },
171
+ QuoteOrSend.Quote,
172
+ commitmentOrConfig
173
+ )
174
+ )
175
+ }
176
+
177
+ /**
178
+ * Gets the account metadata for the send instruction.
179
+ *
180
+ * @param {Connection} connection - The connection to the Solana cluster.
181
+ * @param {PublicKey} payer - The payer public key.
182
+ * @param {PublicKey} sender - The sender public key.
183
+ * @param {number} dstEid - The destination endpoint ID.
184
+ * @param {string} receiver - The receiver address.
185
+ * @param {Commitment | GetAccountInfoConfig} [commitmentOrConfig='confirmed'] - The commitment level or account info configuration.
186
+ * @returns {Promise<AccountMeta[]>} A promise that resolves to an array of account metadata.
187
+ */
188
+ async getSendAccounts(
189
+ connection: Connection,
190
+ payer: PublicKey,
191
+ sender: PublicKey,
192
+ dstEid: number,
193
+ receiver: string,
194
+ commitmentOrConfig: Commitment | GetAccountInfoConfig = 'confirmed'
195
+ ): Promise<AccountMeta[]> {
196
+ const [sendLibConfig] = this.endpoint.deriver.sendLibraryConfig(sender, dstEid)
197
+ const [defaultSendLibConfig] = this.endpoint.deriver.defaultSendLibraryConfig(dstEid)
198
+ const [simpleMsgLib] = this.simpleMsgLib.deriver.messageLib()
199
+ const [uln] = this.uln.deriver.messageLib()
200
+ const [ulnDefaultSendConfig] = this.uln.deriver.defaultSendConfig(dstEid)
201
+ const [ulnSendConfig] = this.uln.deriver.sendConfig(dstEid, sender)
202
+ const [
203
+ sendLibConfigBuf,
204
+ defaultSendLibConfigBuf,
205
+ _simpleMsgLibBuf,
206
+ ulnBuf,
207
+ ulnDefaultSendConfigBuf,
208
+ ulnSendConfigBuf,
209
+ ] = await this.getMultipleAccountsInfo(
210
+ connection,
211
+ [sendLibConfig, defaultSendLibConfig, simpleMsgLib, uln, ulnDefaultSendConfig, ulnSendConfig],
212
+ commitmentOrConfig
213
+ )
214
+ invariant(defaultSendLibConfigBuf && sendLibConfigBuf, 'endpoint send library not initialized')
215
+ const [sendLibConfigInfo] = EndpointProgram.accounts.SendLibraryConfig.fromAccountInfo(sendLibConfigBuf, 0)
216
+ const [defaultSendLibConfigInfo] = EndpointProgram.accounts.SendLibraryConfig.fromAccountInfo(
217
+ defaultSendLibConfigBuf,
218
+ 0
219
+ )
220
+ const msgLib =
221
+ sendLibConfigInfo.messageLib.toString() === DefaultMessageLib.toString()
222
+ ? defaultSendLibConfigInfo.messageLib
223
+ : sendLibConfigInfo.messageLib
224
+
225
+ let msgLibProgram = this.ulnProgram
226
+ if (msgLib.toBase58() === this.simpleMsgLib.deriver.messageLib()[0].toBase58()) {
227
+ msgLibProgram = this.simpleMsgLibProgram
228
+ return this.getEndpointAccounts(msgLibProgram, msgLib, sender, dstEid, receiver, QuoteOrSend.Send).concat(
229
+ this.getSimpleMsgLibAccounts(payer, QuoteOrSend.Send)
230
+ )
231
+ }
232
+ if (msgLib.toBase58() !== this.uln.deriver.messageLib()[0].toBase58()) {
233
+ throw new Error('Invalid message library')
234
+ }
235
+ return this.getEndpointAccounts(msgLibProgram, msgLib, sender, dstEid, receiver, QuoteOrSend.Send).concat(
236
+ await this.getUlnAccounts(
237
+ connection,
238
+ payer,
239
+ {
240
+ accountId: uln,
241
+ accountInfo: ulnBuf,
242
+ },
243
+ {
244
+ accountId: ulnDefaultSendConfig,
245
+ accountInfo: ulnDefaultSendConfigBuf,
246
+ },
247
+ {
248
+ accountId: ulnSendConfig,
249
+ accountInfo: ulnSendConfigBuf,
250
+ },
251
+ QuoteOrSend.Send,
252
+ commitmentOrConfig
253
+ )
254
+ )
255
+ }
256
+
257
+ /**
258
+ * Gets the account metadata for the endpoint.
259
+ *
260
+ * @param {PublicKey} msgLibProgram - The message library program public key.
261
+ * @param {PublicKey} msgLib - The message library public key.
262
+ * @param {PublicKey} sender - The sender public key.
263
+ * @param {number} dstEid - The destination endpoint ID.
264
+ * @param {string} receiver - The receiver address.
265
+ * @param {QuoteOrSend} quoteOrSend - The quote or send action.
266
+ * @returns {AccountMeta[]} An array of account metadata.
267
+ */
268
+ private getEndpointAccounts(
269
+ msgLibProgram: PublicKey,
270
+ msgLib: PublicKey,
271
+ sender: PublicKey,
272
+ dstEid: number,
273
+ receiver: string,
274
+ quoteOrSend: QuoteOrSend
275
+ ): AccountMeta[] {
276
+ const [sendLibraryConfig] = this.endpoint.deriver.sendLibraryConfig(sender, dstEid)
277
+ const [defaultSendLibraryConfig] = this.endpoint.deriver.defaultSendLibraryConfig(dstEid)
278
+ const [sendLibraryInfo] = this.endpoint.deriver.messageLibraryInfo(msgLib)
279
+ const [nonce] = this.endpoint.deriver.nonce(sender, dstEid, addressToBytes32(receiver))
280
+ let accounts: AccountMeta[]
281
+ if (quoteOrSend === QuoteOrSend.Quote) {
282
+ accounts = EndpointProgram.instructions.createQuoteInstructionAccounts(
283
+ {
284
+ sendLibraryProgram: msgLibProgram,
285
+ sendLibraryConfig,
286
+ defaultSendLibraryConfig,
287
+ sendLibraryInfo,
288
+ endpoint: this.endpoint.deriver.setting()[0],
289
+ nonce,
290
+ } satisfies EndpointProgram.instructions.QuoteInstructionAccounts,
291
+ this.endpointProgram
292
+ )
293
+ } else {
294
+ accounts = EndpointProgram.instructions.createSendInstructionAccounts(
295
+ {
296
+ sender, //signer
297
+ sendLibraryProgram: msgLibProgram,
298
+ sendLibraryConfig,
299
+ defaultSendLibraryConfig,
300
+ sendLibraryInfo,
301
+ endpoint: this.endpoint.deriver.setting()[0],
302
+ nonce,
303
+ program: this.endpointProgram,
304
+ eventAuthority: this.endpoint.eventAuthorityPDA,
305
+ } satisfies EndpointProgram.instructions.SendInstructionAccounts,
306
+ this.endpoint.program
307
+ )
308
+ }
309
+
310
+ accounts.forEach((item: AccountMeta) => {
311
+ item.isSigner = false
312
+ })
313
+ return [
314
+ {
315
+ pubkey: this.endpoint.program,
316
+ isSigner: false,
317
+ isWritable: false,
318
+ },
319
+ ].concat(accounts)
320
+ }
321
+
322
+ /**
323
+ * Gets the account metadata for the simple message library.
324
+ *
325
+ * @param {PublicKey} payer - The payer public key.
326
+ * @param {QuoteOrSend} quoteOrSend - The quote or send action.
327
+ * @returns {AccountMeta[]} An array of account metadata.
328
+ */
329
+ private getSimpleMsgLibAccounts(payer: PublicKey, quoteOrSend: QuoteOrSend): AccountMeta[] {
330
+ const [msgLib] = this.simpleMsgLib.deriver.messageLib()
331
+ let accounts: AccountMeta[]
332
+ if (quoteOrSend === QuoteOrSend.Quote) {
333
+ accounts = SimpleMessageLibProgram.instructions.createQuoteInstructionAccounts(
334
+ {
335
+ endpoint: PublicKey.default, // useless
336
+ messageLib: msgLib,
337
+ } satisfies SimpleMessageLibProgram.instructions.QuoteInstructionAccounts,
338
+ this.simpleMsgLibProgram
339
+ )
340
+ } else {
341
+ accounts = SimpleMessageLibProgram.instructions.createSendInstructionAccounts(
342
+ {
343
+ endpoint: PublicKey.default, // useless
344
+ messageLib: msgLib,
345
+ payer,
346
+ } satisfies SimpleMessageLibProgram.instructions.SendInstructionAccounts,
347
+ this.simpleMsgLibProgram
348
+ )
349
+ }
350
+ accounts.forEach((key) => {
351
+ if (!payer.equals(key.pubkey)) {
352
+ key.isSigner = false
353
+ }
354
+ })
355
+ return accounts.slice(1)
356
+ }
357
+
358
+ /**
359
+ * Gets the account metadata for the ULN.
360
+ *
361
+ * @param {Connection} connection - The connection to the Solana cluster.
362
+ * @param {PublicKey} payer - The payer public key.
363
+ * @param {KeyedAccountInfo} ulnInfo - The ULN account information.
364
+ * @param {KeyedAccountInfo} ulnDefaultSendConfigInfo - The ULN default send configuration account information.
365
+ * @param {KeyedAccountInfo} ulnSendConfigInfo - The ULN send configuration account information.
366
+ * @param {QuoteOrSend} quoteOrSend - The quote or send action.
367
+ * @param {Commitment | GetAccountInfoConfig} [commitment] - The commitment level or account info configuration.
368
+ * @returns {Promise<AccountMeta[]>} A promise that resolves to an array of account metadata.
369
+ */
370
+ private async getUlnAccounts(
371
+ connection: Connection,
372
+ payer: PublicKey,
373
+ ulnInfo: KeyedAccountInfo,
374
+ ulnDefaultSendConfigInfo: KeyedAccountInfo,
375
+ ulnSendConfigInfo: KeyedAccountInfo,
376
+ quoteOrSend: QuoteOrSend,
377
+ commitment?: Commitment | GetAccountInfoConfig
378
+ ): Promise<AccountMeta[]> {
379
+ invariant(ulnInfo.accountInfo && ulnDefaultSendConfigInfo.accountInfo, 'uln send library not initialized')
380
+ const [ulnState] = UlnProgram.accounts.UlnSettings.fromAccountInfo(ulnInfo.accountInfo, 0)
381
+ const [defaultSendConfigState] = UlnProgram.accounts.SendConfig.fromAccountInfo(
382
+ ulnDefaultSendConfigInfo.accountInfo,
383
+ 0
384
+ )
385
+ const sendConfigState = ulnSendConfigInfo.accountInfo
386
+ ? UlnProgram.accounts.SendConfig.fromAccountInfo(ulnSendConfigInfo.accountInfo)[0]
387
+ : null
388
+
389
+ let {
390
+ executor,
391
+ uln: { requiredDvns, optionalDvns },
392
+ } = defaultSendConfigState
393
+
394
+ // if the executor is set in the send config, use it
395
+ if (sendConfigState?.executor && !sendConfigState.executor.executor.equals(PublicKey.default)) {
396
+ ;({ executor } = sendConfigState)
397
+ }
398
+
399
+ // if the requiredDvns is set in the send config, use it
400
+ if (sendConfigState && sendConfigState.uln.requiredDvns.length > 0) {
401
+ requiredDvns = sendConfigState.uln.requiredDvns.filter((p) => {
402
+ return !p.equals(PublicKey.default)
403
+ })
404
+ }
405
+
406
+ // if the optionalDvns is set in the send config, use it
407
+ if (sendConfigState && sendConfigState.uln.optionalDvns.length > 0) {
408
+ optionalDvns = sendConfigState.uln.optionalDvns.filter((p) => {
409
+ return !p.equals(PublicKey.default)
410
+ })
411
+ }
412
+
413
+ const dvnsKey = requiredDvns.concat(optionalDvns)
414
+ const [executorBuf, ...dvnBuf] = await this.getMultipleAccountsInfo(
415
+ connection,
416
+ [executor.executor, ...dvnsKey],
417
+ commitment
418
+ )
419
+ invariant(executorBuf, `executor:${executor.executor.toBase58()} not initialized`)
420
+
421
+ let executorAccounts: AccountMeta[], dvnAccounts: AccountMeta[]
422
+ {
423
+ const executor = {
424
+ config: ExecutorAccounts.ExecutorConfig.fromAccountInfo(executorBuf)[0],
425
+ owner: executorBuf.owner,
426
+ }
427
+ const dvns = dvnBuf.map((dvn, i) => {
428
+ invariant(dvn, `dvn:${dvnsKey[i].toBase58()} not initialized`)
429
+ return {
430
+ config: DvnAccounts.DvnConfig.fromAccountInfo(dvn)[0],
431
+ owner: dvn.owner,
432
+ }
433
+ })
434
+
435
+ const priceFeeds = new Array<PublicKey>()
436
+ ;[executor.config, ...dvns.map((dvn) => dvn.config)].forEach((config) => {
437
+ priceFeeds.push(config.priceFeed)
438
+ })
439
+ const priceFeedInfos = await this.getMultipleAccountsInfo(connection, priceFeeds, commitment)
440
+ priceFeedInfos.forEach((info, i) => {
441
+ invariant(info, `priceFeed:${priceFeeds[i].toBase58()} not initialized`)
442
+ })
443
+ executorAccounts = new Executor(executor.owner).getQuoteIXAccountMetaForCPI(
444
+ executor.config.priceFeed,
445
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
446
+ (await this.getMultipleAccountsInfo(connection, [executor.config.priceFeed], commitment))[0]!.owner,
447
+ quoteOrSend === QuoteOrSend.Send
448
+ )
449
+ dvnAccounts = (
450
+ await Promise.all(
451
+ dvns.map(async (p, i) => {
452
+ return new DVN(p.owner).getQuoteIXAccountMetaForCPI(
453
+ p.config.priceFeed,
454
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
455
+ (await this.getMultipleAccountsInfo(connection, [p.config.priceFeed], commitment))[0]!
456
+ .owner,
457
+ quoteOrSend === QuoteOrSend.Send
458
+ )
459
+ })
460
+ )
461
+ ).flat()
462
+ }
463
+
464
+ const treasury = ulnState.treasury?.nativeReceiver
465
+ let accounts: AccountMeta[]
466
+ if (quoteOrSend === QuoteOrSend.Quote) {
467
+ accounts = UlnProgram.instructions.createQuoteInstructionAccounts(
468
+ {
469
+ endpoint: PublicKey.default, // useless
470
+ uln: this.uln.deriver.setting()[0],
471
+ sendConfig: ulnSendConfigInfo.accountId,
472
+ defaultSendConfig: ulnDefaultSendConfigInfo.accountId,
473
+ anchorRemainingAccounts: executorAccounts.concat(dvnAccounts),
474
+ } satisfies UlnProgram.instructions.QuoteInstructionAccounts,
475
+ this.ulnProgram
476
+ )
477
+ } else {
478
+ accounts = UlnProgram.instructions.createSendInstructionAccounts(
479
+ {
480
+ endpoint: PublicKey.default, // useless
481
+ uln: this.uln.deriver.setting()[0],
482
+ sendConfig: ulnSendConfigInfo.accountId,
483
+ defaultSendConfig: ulnDefaultSendConfigInfo.accountId,
484
+ payer,
485
+ treasury,
486
+ eventAuthority: this.uln.eventAuthorityPDA,
487
+ program: this.uln.program,
488
+ anchorRemainingAccounts: executorAccounts.concat(dvnAccounts),
489
+ } satisfies UlnProgram.instructions.SendInstructionAccounts,
490
+ this.ulnProgram
491
+ )
492
+ if (treasury) {
493
+ const treasuryIndex = accounts.findIndex((k) => k.pubkey.toBase58() == treasury.toBase58())
494
+ accounts[treasuryIndex].isWritable = true // treasury account
495
+ }
496
+ }
497
+ accounts.forEach((key) => {
498
+ if (!payer.equals(key.pubkey)) {
499
+ key.isSigner = false
500
+ }
501
+ })
502
+ return accounts.slice(1)
503
+ }
504
+ }