@layerzerolabs/lz-solana-sdk-v2 3.0.47 → 3.0.49
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.
- package/CHANGELOG.md +26 -0
- package/package.json +11 -10
- package/src/base-oapp.ts +159 -0
- package/src/config.ts +32 -0
- package/src/deployment.test.ts +11 -0
- package/src/deployment.ts +128 -0
- package/src/dvn.ts +606 -0
- package/src/endpoint.ts +1518 -0
- package/src/executor.ts +577 -0
- package/src/generated/blocked_messagelib/index.ts +18 -0
- package/src/generated/blocked_messagelib/instructions/index.ts +1 -0
- package/src/generated/blocked_messagelib/instructions/version.ts +59 -0
- package/src/generated/dvn/accounts/DvnConfig.ts +217 -0
- package/src/generated/dvn/accounts/ExecuteHash.ts +179 -0
- package/src/generated/dvn/accounts/ReceiveConfig.ts +169 -0
- package/src/generated/dvn/accounts/index.ts +9 -0
- package/src/generated/dvn/errors/index.ts +396 -0
- package/src/generated/dvn/events/AdminConfigSetEvent.ts +22 -0
- package/src/generated/dvn/events/FeeWithdrawnEvent.ts +26 -0
- package/src/generated/dvn/events/MultisigConfigSetEvent.ts +22 -0
- package/src/generated/dvn/events/index.ts +3 -0
- package/src/generated/dvn/index.ts +21 -0
- package/src/generated/dvn/instructions/closeExecute.ts +148 -0
- package/src/generated/dvn/instructions/index.ts +7 -0
- package/src/generated/dvn/instructions/initDvn.ts +144 -0
- package/src/generated/dvn/instructions/invoke.ts +178 -0
- package/src/generated/dvn/instructions/quoteDvn.ts +145 -0
- package/src/generated/dvn/instructions/setConfig.ts +157 -0
- package/src/generated/dvn/instructions/verifiable.ts +160 -0
- package/src/generated/dvn/instructions/withdrawFee.ts +172 -0
- package/src/generated/dvn/types/Acl.ts +26 -0
- package/src/generated/dvn/types/AdminConfig.ts +100 -0
- package/src/generated/dvn/types/CloseExecuteParams.ts +21 -0
- package/src/generated/dvn/types/DstConfig.ts +28 -0
- package/src/generated/dvn/types/ExecuteTransactionDigest.ts +37 -0
- package/src/generated/dvn/types/InitDvnParams.ts +34 -0
- package/src/generated/dvn/types/InvokeParams.ts +28 -0
- package/src/generated/dvn/types/LzOption.ts +24 -0
- package/src/generated/dvn/types/Multisig.ts +24 -0
- package/src/generated/dvn/types/MultisigConfig.ts +124 -0
- package/src/generated/dvn/types/QuoteDvnParams.ts +38 -0
- package/src/generated/dvn/types/SetConfigParams.ts +22 -0
- package/src/generated/dvn/types/TransactionAccount.ts +29 -0
- package/src/generated/dvn/types/UlnConfig.ts +34 -0
- package/src/generated/dvn/types/VerifiableParams.ts +24 -0
- package/src/generated/dvn/types/VerificationState.ts +27 -0
- package/src/generated/dvn/types/WithdrawFeeParams.ts +20 -0
- package/src/generated/dvn/types/index.ts +17 -0
- package/src/generated/endpoint/accounts/ComposeMessageState.ts +170 -0
- package/src/generated/endpoint/accounts/EndpointSettings.ts +184 -0
- package/src/generated/endpoint/accounts/MessageLibInfo.ts +178 -0
- package/src/generated/endpoint/accounts/Nonce.ts +193 -0
- package/src/generated/endpoint/accounts/OAppRegistry.ts +169 -0
- package/src/generated/endpoint/accounts/PayloadHash.ts +169 -0
- package/src/generated/endpoint/accounts/PendingInboundNonce.ts +172 -0
- package/src/generated/endpoint/accounts/ReceiveLibraryConfig.ts +183 -0
- package/src/generated/endpoint/accounts/SendLibraryConfig.ts +171 -0
- package/src/generated/endpoint/accounts/index.ts +31 -0
- package/src/generated/endpoint/errors/index.ts +428 -0
- package/src/generated/endpoint/events/AdminTransferredEvent.ts +23 -0
- package/src/generated/endpoint/events/ComposeDeliveredEvent.ts +31 -0
- package/src/generated/endpoint/events/ComposeSentEvent.ts +33 -0
- package/src/generated/endpoint/events/DefaultReceiveLibrarySetEvent.ts +27 -0
- package/src/generated/endpoint/events/DefaultReceiveLibraryTimeoutSetEvent.ts +29 -0
- package/src/generated/endpoint/events/DefaultSendLibrarySetEvent.ts +27 -0
- package/src/generated/endpoint/events/DelegateSetEvent.ts +22 -0
- package/src/generated/endpoint/events/InboundNonceSkippedEvent.ts +31 -0
- package/src/generated/endpoint/events/LibraryRegisteredEvent.ts +27 -0
- package/src/generated/endpoint/events/LzComposeAlertEvent.ts +43 -0
- package/src/generated/endpoint/events/LzReceiveAlertEvent.ts +45 -0
- package/src/generated/endpoint/events/LzTokenSetEvent.ts +23 -0
- package/src/generated/endpoint/events/OAppRegisteredEvent.ts +27 -0
- package/src/generated/endpoint/events/PacketBurntEvent.ts +32 -0
- package/src/generated/endpoint/events/PacketDeliveredEvent.ts +31 -0
- package/src/generated/endpoint/events/PacketNilifiedEvent.ts +33 -0
- package/src/generated/endpoint/events/PacketSentEvent.ts +29 -0
- package/src/generated/endpoint/events/PacketVerifiedEvent.ts +33 -0
- package/src/generated/endpoint/events/ReceiveLibrarySetEvent.ts +29 -0
- package/src/generated/endpoint/events/ReceiveLibraryTimeoutSetEvent.ts +33 -0
- package/src/generated/endpoint/events/RentWithdrawnEvent.ts +27 -0
- package/src/generated/endpoint/events/SendLibrarySetEvent.ts +29 -0
- package/src/generated/endpoint/events/index.ts +22 -0
- package/src/generated/endpoint/index.ts +21 -0
- package/src/generated/endpoint/instructions/burn.ts +191 -0
- package/src/generated/endpoint/instructions/clear.ts +193 -0
- package/src/generated/endpoint/instructions/clearCompose.ts +160 -0
- package/src/generated/endpoint/instructions/index.ts +32 -0
- package/src/generated/endpoint/instructions/initConfig.ts +172 -0
- package/src/generated/endpoint/instructions/initDefaultReceiveLibrary.ts +195 -0
- package/src/generated/endpoint/instructions/initDefaultSendLibrary.ts +195 -0
- package/src/generated/endpoint/instructions/initEndpoint.ts +147 -0
- package/src/generated/endpoint/instructions/initNonce.ts +168 -0
- package/src/generated/endpoint/instructions/initReceiveLibrary.ts +159 -0
- package/src/generated/endpoint/instructions/initSendLibrary.ts +159 -0
- package/src/generated/endpoint/instructions/initVerify.ts +159 -0
- package/src/generated/endpoint/instructions/lzComposeAlert.ts +148 -0
- package/src/generated/endpoint/instructions/lzReceiveAlert.ts +148 -0
- package/src/generated/endpoint/instructions/nilify.ts +193 -0
- package/src/generated/endpoint/instructions/quote.ts +181 -0
- package/src/generated/endpoint/instructions/registerLibrary.ts +183 -0
- package/src/generated/endpoint/instructions/registerOapp.ts +183 -0
- package/src/generated/endpoint/instructions/send.ts +215 -0
- package/src/generated/endpoint/instructions/sendCompose.ts +183 -0
- package/src/generated/endpoint/instructions/setConfig.ts +169 -0
- package/src/generated/endpoint/instructions/setDefaultReceiveLibrary.ts +184 -0
- package/src/generated/endpoint/instructions/setDefaultReceiveLibraryTimeout.ts +185 -0
- package/src/generated/endpoint/instructions/setDefaultSendLibrary.ts +184 -0
- package/src/generated/endpoint/instructions/setDelegate.ts +160 -0
- package/src/generated/endpoint/instructions/setLzToken.ts +160 -0
- package/src/generated/endpoint/instructions/setReceiveLibrary.ts +190 -0
- package/src/generated/endpoint/instructions/setReceiveLibraryTimeout.ts +184 -0
- package/src/generated/endpoint/instructions/setSendLibrary.ts +190 -0
- package/src/generated/endpoint/instructions/skip.ts +203 -0
- package/src/generated/endpoint/instructions/transferAdmin.ts +160 -0
- package/src/generated/endpoint/instructions/verify.ts +205 -0
- package/src/generated/endpoint/instructions/withdrawRent.ts +172 -0
- package/src/generated/endpoint/types/BurnParams.ts +32 -0
- package/src/generated/endpoint/types/ClearComposeParams.ts +31 -0
- package/src/generated/endpoint/types/ClearParams.ts +34 -0
- package/src/generated/endpoint/types/InitConfigParams.ts +26 -0
- package/src/generated/endpoint/types/InitDefaultReceiveLibraryParams.ts +27 -0
- package/src/generated/endpoint/types/InitDefaultSendLibraryParams.ts +27 -0
- package/src/generated/endpoint/types/InitEndpointParams.ts +27 -0
- package/src/generated/endpoint/types/InitNonceParams.ts +28 -0
- package/src/generated/endpoint/types/InitReceiveLibraryParams.ts +27 -0
- package/src/generated/endpoint/types/InitSendLibraryParams.ts +27 -0
- package/src/generated/endpoint/types/InitVerifyParams.ts +30 -0
- package/src/generated/endpoint/types/LzComposeAlertParams.ts +41 -0
- package/src/generated/endpoint/types/LzReceiveAlertParams.ts +43 -0
- package/src/generated/endpoint/types/MessageLibType.ts +25 -0
- package/src/generated/endpoint/types/MessagingFee.ts +24 -0
- package/src/generated/endpoint/types/MessagingReceipt.ts +27 -0
- package/src/generated/endpoint/types/NilifyParams.ts +32 -0
- package/src/generated/endpoint/types/QuoteParams.ts +34 -0
- package/src/generated/endpoint/types/ReceiveLibraryTimeout.ts +27 -0
- package/src/generated/endpoint/types/RegisterLibraryParams.ts +28 -0
- package/src/generated/endpoint/types/RegisterOAppParams.ts +23 -0
- package/src/generated/endpoint/types/SendComposeParams.ts +31 -0
- package/src/generated/endpoint/types/SendParams.ts +32 -0
- package/src/generated/endpoint/types/SetConfigParams.ts +31 -0
- package/src/generated/endpoint/types/SetDefaultReceiveLibraryParams.ts +29 -0
- package/src/generated/endpoint/types/SetDefaultReceiveLibraryTimeoutParams.ts +29 -0
- package/src/generated/endpoint/types/SetDefaultSendLibraryParams.ts +27 -0
- package/src/generated/endpoint/types/SetDelegateParams.ts +22 -0
- package/src/generated/endpoint/types/SetLzTokenParams.ts +23 -0
- package/src/generated/endpoint/types/SetReceiveLibraryParams.ts +31 -0
- package/src/generated/endpoint/types/SetReceiveLibraryTimeoutParams.ts +31 -0
- package/src/generated/endpoint/types/SetSendLibraryParams.ts +29 -0
- package/src/generated/endpoint/types/SkipParams.ts +30 -0
- package/src/generated/endpoint/types/TransferAdminParams.ts +23 -0
- package/src/generated/endpoint/types/VerifyParams.ts +32 -0
- package/src/generated/endpoint/types/WithdrawRentParams.ts +21 -0
- package/src/generated/endpoint/types/index.ts +36 -0
- package/src/generated/executor/accounts/ExecutorConfig.ts +216 -0
- package/src/generated/executor/accounts/Nonce.ts +193 -0
- package/src/generated/executor/accounts/index.ts +7 -0
- package/src/generated/executor/errors/index.ts +434 -0
- package/src/generated/executor/events/NativeDropAppliedEvent.ts +38 -0
- package/src/generated/executor/events/index.ts +1 -0
- package/src/generated/executor/index.ts +21 -0
- package/src/generated/executor/instructions/adminSetConfig.ts +136 -0
- package/src/generated/executor/instructions/compose.ts +181 -0
- package/src/generated/executor/instructions/executable.ts +136 -0
- package/src/generated/executor/instructions/execute.ts +181 -0
- package/src/generated/executor/instructions/index.ts +8 -0
- package/src/generated/executor/instructions/initExecutor.ts +147 -0
- package/src/generated/executor/instructions/nativeDrop.ts +171 -0
- package/src/generated/executor/instructions/ownerSetConfig.ts +136 -0
- package/src/generated/executor/instructions/quoteExecutor.ts +148 -0
- package/src/generated/executor/types/Acl.ts +26 -0
- package/src/generated/executor/types/AdminSetConfigParams.ts +83 -0
- package/src/generated/executor/types/ComposeParams.ts +27 -0
- package/src/generated/executor/types/DstConfig.ts +32 -0
- package/src/generated/executor/types/ExecutableParams.ts +30 -0
- package/src/generated/executor/types/ExecuteParams.ts +31 -0
- package/src/generated/executor/types/ExecutionState.ts +26 -0
- package/src/generated/executor/types/InitExecutorParams.ts +33 -0
- package/src/generated/executor/types/LzComposeParams.ts +35 -0
- package/src/generated/executor/types/LzOption.ts +24 -0
- package/src/generated/executor/types/LzReceiveParams.ts +33 -0
- package/src/generated/executor/types/NativeDropParams.ts +36 -0
- package/src/generated/executor/types/NativeDropRequest.ts +26 -0
- package/src/generated/executor/types/OwnerSetConfigParams.ts +123 -0
- package/src/generated/executor/types/QuoteExecutorParams.ts +34 -0
- package/src/generated/executor/types/index.ts +15 -0
- package/src/generated/pricefeed/accounts/PriceFeed.ts +220 -0
- package/src/generated/pricefeed/accounts/index.ts +5 -0
- package/src/generated/pricefeed/errors/index.ts +115 -0
- package/src/generated/pricefeed/index.ts +21 -0
- package/src/generated/pricefeed/instructions/getFee.ts +121 -0
- package/src/generated/pricefeed/instructions/index.ts +6 -0
- package/src/generated/pricefeed/instructions/initPriceFeed.ts +147 -0
- package/src/generated/pricefeed/instructions/setPrice.ts +133 -0
- package/src/generated/pricefeed/instructions/setPriceFeed.ts +136 -0
- package/src/generated/pricefeed/instructions/setSolPrice.ts +136 -0
- package/src/generated/pricefeed/instructions/transferAdmin.ts +136 -0
- package/src/generated/pricefeed/types/GetFeeParams.ts +26 -0
- package/src/generated/pricefeed/types/InitPriceFeedParams.ts +27 -0
- package/src/generated/pricefeed/types/ModelType.ts +66 -0
- package/src/generated/pricefeed/types/Price.ts +31 -0
- package/src/generated/pricefeed/types/PriceParams.ts +29 -0
- package/src/generated/pricefeed/types/SetPriceFeedParams.ts +29 -0
- package/src/generated/pricefeed/types/SetPriceParams.ts +26 -0
- package/src/generated/pricefeed/types/SetSolPriceParams.ts +21 -0
- package/src/generated/pricefeed/types/TransferAdminParams.ts +23 -0
- package/src/generated/pricefeed/types/index.ts +9 -0
- package/src/generated/simple_messagelib/accounts/MessageLib.ts +222 -0
- package/src/generated/simple_messagelib/accounts/ReceiveConfigStore.ts +168 -0
- package/src/generated/simple_messagelib/accounts/SendConfigStore.ts +170 -0
- package/src/generated/simple_messagelib/accounts/index.ts +13 -0
- package/src/generated/simple_messagelib/errors/index.ts +207 -0
- package/src/generated/simple_messagelib/index.ts +21 -0
- package/src/generated/simple_messagelib/instructions/index.ts +15 -0
- package/src/generated/simple_messagelib/instructions/initConfig.ts +183 -0
- package/src/generated/simple_messagelib/instructions/initDefaultConfig.ts +171 -0
- package/src/generated/simple_messagelib/instructions/initMessageLib.ts +147 -0
- package/src/generated/simple_messagelib/instructions/quote.ts +133 -0
- package/src/generated/simple_messagelib/instructions/revertCall.ts +59 -0
- package/src/generated/simple_messagelib/instructions/send.ts +154 -0
- package/src/generated/simple_messagelib/instructions/sendWithLzToken.ts +207 -0
- package/src/generated/simple_messagelib/instructions/setConfig.ts +157 -0
- package/src/generated/simple_messagelib/instructions/setDefaultConfig.ts +171 -0
- package/src/generated/simple_messagelib/instructions/setFee.ts +133 -0
- package/src/generated/simple_messagelib/instructions/setWlCaller.ts +136 -0
- package/src/generated/simple_messagelib/instructions/transferAdmin.ts +136 -0
- package/src/generated/simple_messagelib/instructions/validatePacket.ts +136 -0
- package/src/generated/simple_messagelib/instructions/version.ts +59 -0
- package/src/generated/simple_messagelib/instructions/withdrawFees.ts +148 -0
- package/src/generated/simple_messagelib/types/InitConfigParams.ts +26 -0
- package/src/generated/simple_messagelib/types/InitDefaultConfigParams.ts +27 -0
- package/src/generated/simple_messagelib/types/InitMessageLibParams.ts +35 -0
- package/src/generated/simple_messagelib/types/MessagingFee.ts +24 -0
- package/src/generated/simple_messagelib/types/Packet.ts +36 -0
- package/src/generated/simple_messagelib/types/QuoteParams.ts +27 -0
- package/src/generated/simple_messagelib/types/SendParams.ts +27 -0
- package/src/generated/simple_messagelib/types/SendWithLzTokenParams.ts +34 -0
- package/src/generated/simple_messagelib/types/SetConfigParams.ts +31 -0
- package/src/generated/simple_messagelib/types/SetDefaultConfigParams.ts +27 -0
- package/src/generated/simple_messagelib/types/SetFeeParams.ts +24 -0
- package/src/generated/simple_messagelib/types/SetWlCallerParams.ts +22 -0
- package/src/generated/simple_messagelib/types/TransferAdminParams.ts +23 -0
- package/src/generated/simple_messagelib/types/ValidatePacketParams.ts +21 -0
- package/src/generated/simple_messagelib/types/Version.ts +26 -0
- package/src/generated/simple_messagelib/types/WithdrawFeesParams.ts +21 -0
- package/src/generated/simple_messagelib/types/index.ts +16 -0
- package/src/generated/uln/accounts/Confirmations.ts +171 -0
- package/src/generated/uln/accounts/ReceiveConfig.ts +169 -0
- package/src/generated/uln/accounts/SendConfig.ts +177 -0
- package/src/generated/uln/accounts/UlnSettings.ts +195 -0
- package/src/generated/uln/accounts/index.ts +16 -0
- package/src/generated/uln/errors/index.ts +761 -0
- package/src/generated/uln/events/AdminTransferredEvent.ts +23 -0
- package/src/generated/uln/events/ConfigSetEvent.ts +30 -0
- package/src/generated/uln/events/DefaultConfigSetEvent.ts +31 -0
- package/src/generated/uln/events/FeesPaidEvent.ts +28 -0
- package/src/generated/uln/events/LzTokenSetEvent.ts +23 -0
- package/src/generated/uln/events/PayloadVerifiedEvent.ts +31 -0
- package/src/generated/uln/events/RentWithdrawnEvent.ts +27 -0
- package/src/generated/uln/events/TreasuryFeeCapSetEvent.ts +21 -0
- package/src/generated/uln/events/TreasurySetEvent.ts +22 -0
- package/src/generated/uln/events/index.ts +7 -0
- package/src/generated/uln/index.ts +21 -0
- package/src/generated/uln/instructions/closeVerify.ts +148 -0
- package/src/generated/uln/instructions/commitVerification.ts +148 -0
- package/src/generated/uln/instructions/index.ts +16 -0
- package/src/generated/uln/instructions/initConfig.ts +183 -0
- package/src/generated/uln/instructions/initDefaultConfig.ts +195 -0
- package/src/generated/uln/instructions/initUln.ts +144 -0
- package/src/generated/uln/instructions/initVerify.ts +147 -0
- package/src/generated/uln/instructions/quote.ts +157 -0
- package/src/generated/uln/instructions/send.ts +220 -0
- package/src/generated/uln/instructions/sendWithLzToken.ts +255 -0
- package/src/generated/uln/instructions/setConfig.ts +205 -0
- package/src/generated/uln/instructions/setDefaultConfig.ts +184 -0
- package/src/generated/uln/instructions/setTreasury.ts +160 -0
- package/src/generated/uln/instructions/transferAdmin.ts +160 -0
- package/src/generated/uln/instructions/verify.ts +157 -0
- package/src/generated/uln/instructions/version.ts +59 -0
- package/src/generated/uln/instructions/withdrawRent.ts +172 -0
- package/src/generated/uln/types/CloseVerifyParams.ts +24 -0
- package/src/generated/uln/types/CommitVerificationParams.ts +25 -0
- package/src/generated/uln/types/Config.ts +75 -0
- package/src/generated/uln/types/ExecutorConfig.ts +26 -0
- package/src/generated/uln/types/InitConfigParams.ts +26 -0
- package/src/generated/uln/types/InitDefaultConfigParams.ts +31 -0
- package/src/generated/uln/types/InitUlnParams.ts +30 -0
- package/src/generated/uln/types/InitVerifyParams.ts +28 -0
- package/src/generated/uln/types/LzTokenTreasury.ts +26 -0
- package/src/generated/uln/types/MessagingFee.ts +24 -0
- package/src/generated/uln/types/Packet.ts +36 -0
- package/src/generated/uln/types/QuoteParams.ts +27 -0
- package/src/generated/uln/types/SendParams.ts +27 -0
- package/src/generated/uln/types/SendWithLzTokenParams.ts +34 -0
- package/src/generated/uln/types/SetConfigParams.ts +31 -0
- package/src/generated/uln/types/SetDefaultConfigParams.ts +31 -0
- package/src/generated/uln/types/SetTreasuryParams.ts +22 -0
- package/src/generated/uln/types/TransferAdminParams.ts +23 -0
- package/src/generated/uln/types/Treasury.ts +31 -0
- package/src/generated/uln/types/TreasuryFee.ts +28 -0
- package/src/generated/uln/types/UlnConfig.ts +34 -0
- package/src/generated/uln/types/VerifyParams.ts +26 -0
- package/src/generated/uln/types/Version.ts +26 -0
- package/src/generated/uln/types/WithdrawRentParams.ts +21 -0
- package/src/generated/uln/types/WorkerFee.ts +26 -0
- package/src/generated/uln/types/index.ts +25 -0
- package/src/generated/worker_interface/errors/index.ts +75 -0
- package/src/generated/worker_interface/index.ts +20 -0
- package/src/generated/worker_interface/instructions/index.ts +2 -0
- package/src/generated/worker_interface/instructions/quoteDvn.ts +145 -0
- package/src/generated/worker_interface/instructions/quoteExecutor.ts +148 -0
- package/src/generated/worker_interface/types/LzOption.ts +24 -0
- package/src/generated/worker_interface/types/QuoteDvnParams.ts +38 -0
- package/src/generated/worker_interface/types/QuoteExecutorParams.ts +34 -0
- package/src/generated/worker_interface/types/index.ts +3 -0
- package/src/index.ts +120 -0
- package/src/pda-deriver.ts +658 -0
- package/src/pricefeed.ts +208 -0
- package/src/recevie.ts +269 -0
- package/src/send-helper.ts +504 -0
- package/src/simple-message-lib.ts +303 -0
- package/src/types.ts +222 -0
- package/src/uln.ts +1045 -0
- package/src/utility.ts +592 -0
package/src/pricefeed.ts
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
import { bignum } from '@metaplex-foundation/beet'
|
|
2
|
+
import { Commitment, Connection, GetAccountInfoConfig, PublicKey, TransactionInstruction } from '@solana/web3.js'
|
|
3
|
+
|
|
4
|
+
import * as accounts from './generated/pricefeed/accounts'
|
|
5
|
+
import * as instructions from './generated/pricefeed/instructions'
|
|
6
|
+
import * as types from './generated/pricefeed/types'
|
|
7
|
+
import { PriceFeedPDADeriver } from './pda-deriver'
|
|
8
|
+
|
|
9
|
+
export { accounts, instructions, types }
|
|
10
|
+
export { PROGRAM_ID } from './generated/pricefeed'
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Class representing the PriceFeed.
|
|
14
|
+
*/
|
|
15
|
+
export class PriceFeed {
|
|
16
|
+
deriver: PriceFeedPDADeriver
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Creates an instance of the PriceFeed class.
|
|
20
|
+
*
|
|
21
|
+
* @param {PublicKey} program - The public key of the program.
|
|
22
|
+
*/
|
|
23
|
+
constructor(public readonly program: PublicKey) {
|
|
24
|
+
this.deriver = new PriceFeedPDADeriver(this.program)
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Initializes the price feed.
|
|
29
|
+
*
|
|
30
|
+
* @param {Connection} connection - The Solana connection object.
|
|
31
|
+
* @param {PublicKey} payer - The public key of the payer.
|
|
32
|
+
* @param {PublicKey} admin - The public key of the admin.
|
|
33
|
+
* @param {PublicKey[]} updaters - The list of public keys of the updaters.
|
|
34
|
+
* @param {Commitment | GetAccountInfoConfig} [commitmentOrConfig] - Optional commitment or configuration.
|
|
35
|
+
*
|
|
36
|
+
* @returns {Promise<TransactionInstruction>} The transaction instruction.
|
|
37
|
+
*/
|
|
38
|
+
async initPriceFeed(
|
|
39
|
+
connection: Connection,
|
|
40
|
+
payer: PublicKey,
|
|
41
|
+
admin: PublicKey,
|
|
42
|
+
updaters: PublicKey[],
|
|
43
|
+
commitmentOrConfig?: Commitment | GetAccountInfoConfig
|
|
44
|
+
): Promise<TransactionInstruction> {
|
|
45
|
+
const [priceFeed] = this.deriver.priceFeed()
|
|
46
|
+
const info = await connection.getAccountInfo(priceFeed, commitmentOrConfig)
|
|
47
|
+
if (info) {
|
|
48
|
+
throw new Error('Pricefeed already initialized')
|
|
49
|
+
}
|
|
50
|
+
return instructions.createInitPriceFeedInstruction(
|
|
51
|
+
{
|
|
52
|
+
payer,
|
|
53
|
+
priceFeed,
|
|
54
|
+
} satisfies instructions.InitPriceFeedInstructionAccounts,
|
|
55
|
+
{
|
|
56
|
+
params: {
|
|
57
|
+
admin,
|
|
58
|
+
updaters,
|
|
59
|
+
} satisfies types.InitPriceFeedParams,
|
|
60
|
+
} satisfies instructions.InitPriceFeedInstructionArgs,
|
|
61
|
+
this.program
|
|
62
|
+
)
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Sets the price feed.
|
|
67
|
+
*
|
|
68
|
+
* @param {PublicKey} admin - The public key of the admin.
|
|
69
|
+
* @param {PublicKey[]} updaters - The list of public keys of the updaters.
|
|
70
|
+
* @param {bignum} priceRatioDenominator - The price ratio denominator.
|
|
71
|
+
* @param {number} arbitrumCompressionPercent - The Arbitrum compression percentage.
|
|
72
|
+
*
|
|
73
|
+
* @returns {TransactionInstruction} The transaction instruction.
|
|
74
|
+
*/
|
|
75
|
+
setPriceFeed(
|
|
76
|
+
admin: PublicKey,
|
|
77
|
+
updaters: PublicKey[],
|
|
78
|
+
priceRatioDenominator: bignum,
|
|
79
|
+
arbitrumCompressionPercent: number
|
|
80
|
+
): TransactionInstruction {
|
|
81
|
+
const [priceFeed] = this.deriver.priceFeed()
|
|
82
|
+
return instructions.createSetPriceFeedInstruction(
|
|
83
|
+
{
|
|
84
|
+
admin,
|
|
85
|
+
priceFeed,
|
|
86
|
+
} satisfies instructions.SetPriceFeedInstructionAccounts,
|
|
87
|
+
{
|
|
88
|
+
params: {
|
|
89
|
+
updaters,
|
|
90
|
+
priceRatioDenominator,
|
|
91
|
+
arbitrumCompressionPercent,
|
|
92
|
+
} satisfies types.SetPriceFeedParams,
|
|
93
|
+
} satisfies instructions.SetPriceFeedInstructionArgs,
|
|
94
|
+
this.program
|
|
95
|
+
)
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Sets the price.
|
|
100
|
+
*
|
|
101
|
+
* @param {PublicKey} updater - The public key of the updater.
|
|
102
|
+
* @param {number} dstEid - The destination EID.
|
|
103
|
+
* @param {bignum} priceRatio - The price ratio.
|
|
104
|
+
* @param {bignum} gasPriceInUnit - The gas price in unit.
|
|
105
|
+
* @param {number} gasPerByte - The gas per byte.
|
|
106
|
+
* @param {types.ModelType | null} modelType - The model type.
|
|
107
|
+
*
|
|
108
|
+
* @returns {TransactionInstruction} The transaction instruction.
|
|
109
|
+
*/
|
|
110
|
+
setPrice(
|
|
111
|
+
updater: PublicKey,
|
|
112
|
+
dstEid: number,
|
|
113
|
+
priceRatio: bignum,
|
|
114
|
+
gasPriceInUnit: bignum,
|
|
115
|
+
gasPerByte: number,
|
|
116
|
+
modelType: types.ModelType | null
|
|
117
|
+
): TransactionInstruction {
|
|
118
|
+
const EID_MODULUS = 30000
|
|
119
|
+
dstEid = dstEid % EID_MODULUS
|
|
120
|
+
const [priceFeed] = this.deriver.priceFeed()
|
|
121
|
+
return instructions.createSetPriceInstruction(
|
|
122
|
+
{
|
|
123
|
+
updater,
|
|
124
|
+
priceFeed,
|
|
125
|
+
} satisfies instructions.SetPriceInstructionAccounts,
|
|
126
|
+
{
|
|
127
|
+
params: {
|
|
128
|
+
dstEid,
|
|
129
|
+
params: {
|
|
130
|
+
priceRatio,
|
|
131
|
+
gasPriceInUnit,
|
|
132
|
+
gasPerByte,
|
|
133
|
+
modelType,
|
|
134
|
+
},
|
|
135
|
+
} satisfies types.SetPriceParams,
|
|
136
|
+
} satisfies instructions.SetPriceInstructionArgs,
|
|
137
|
+
this.program
|
|
138
|
+
)
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* Sets the SOL price.
|
|
143
|
+
*
|
|
144
|
+
* @param {PublicKey} updater - The public key of the updater.
|
|
145
|
+
* @param {bignum | null} nativeTokenPriceUsd - The native token price in USD.
|
|
146
|
+
*
|
|
147
|
+
* @returns {TransactionInstruction} The transaction instruction.
|
|
148
|
+
*/
|
|
149
|
+
setSolPrice(updater: PublicKey, nativeTokenPriceUsd: bignum | null): TransactionInstruction {
|
|
150
|
+
const [priceFeed] = this.deriver.priceFeed()
|
|
151
|
+
return instructions.createSetSolPriceInstruction(
|
|
152
|
+
{
|
|
153
|
+
priceFeed,
|
|
154
|
+
updater,
|
|
155
|
+
} satisfies instructions.SetSolPriceInstructionAccounts,
|
|
156
|
+
{
|
|
157
|
+
params: {
|
|
158
|
+
nativeTokenPriceUsd,
|
|
159
|
+
} satisfies types.SetSolPriceParams,
|
|
160
|
+
} satisfies instructions.SetSolPriceInstructionArgs,
|
|
161
|
+
this.program
|
|
162
|
+
)
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
/**
|
|
166
|
+
* Transfers the admin role.
|
|
167
|
+
*
|
|
168
|
+
* @param {PublicKey} admin - The public key of the current admin.
|
|
169
|
+
* @param {PublicKey} newAdmin - The public key of the new admin.
|
|
170
|
+
*
|
|
171
|
+
* @returns {TransactionInstruction} The transaction instruction.
|
|
172
|
+
*/
|
|
173
|
+
transferAdmin(admin: PublicKey, newAdmin: PublicKey): TransactionInstruction {
|
|
174
|
+
const [priceFeed] = this.deriver.priceFeed()
|
|
175
|
+
return instructions.createTransferAdminInstruction(
|
|
176
|
+
{
|
|
177
|
+
admin,
|
|
178
|
+
priceFeed,
|
|
179
|
+
} satisfies instructions.TransferAdminInstructionAccounts,
|
|
180
|
+
{
|
|
181
|
+
params: {
|
|
182
|
+
admin: newAdmin,
|
|
183
|
+
} satisfies types.TransferAdminParams,
|
|
184
|
+
} satisfies instructions.TransferAdminInstructionArgs,
|
|
185
|
+
this.program
|
|
186
|
+
)
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Retrieves the price feed account.
|
|
191
|
+
*
|
|
192
|
+
* @param {Connection} connection - The Solana connection object.
|
|
193
|
+
* @param {Commitment | GetAccountInfoConfig} [commitmentOrConfig] - Optional commitment or configuration.
|
|
194
|
+
*
|
|
195
|
+
* @returns {Promise<accounts.PriceFeed | null>} The price feed account or null if not found.
|
|
196
|
+
*/
|
|
197
|
+
async getPriceFeed(
|
|
198
|
+
connection: Connection,
|
|
199
|
+
commitmentOrConfig?: Commitment | GetAccountInfoConfig
|
|
200
|
+
): Promise<accounts.PriceFeed | null> {
|
|
201
|
+
const [priceFeed] = this.deriver.priceFeed()
|
|
202
|
+
try {
|
|
203
|
+
return await accounts.PriceFeed.fromAccountAddress(connection, priceFeed, commitmentOrConfig)
|
|
204
|
+
} catch (e) {
|
|
205
|
+
return null
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
}
|
package/src/recevie.ts
ADDED
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
import { array } from '@metaplex-foundation/beet'
|
|
2
|
+
import {
|
|
3
|
+
AccountInfo,
|
|
4
|
+
AccountMeta,
|
|
5
|
+
Commitment,
|
|
6
|
+
Connection,
|
|
7
|
+
GetAccountInfoConfig,
|
|
8
|
+
PublicKey,
|
|
9
|
+
TransactionInstruction,
|
|
10
|
+
} from '@solana/web3.js'
|
|
11
|
+
|
|
12
|
+
import { arrayify } from '@layerzerolabs/lz-utilities'
|
|
13
|
+
import { Packet, addressToBytes32 } from '@layerzerolabs/lz-v2-utilities'
|
|
14
|
+
|
|
15
|
+
import { ComposeSentEvent } from './generated/endpoint/events'
|
|
16
|
+
import {
|
|
17
|
+
AddressType,
|
|
18
|
+
LzComposeParams,
|
|
19
|
+
LzComposeParamsBeet,
|
|
20
|
+
LzReceiveAccountBeet,
|
|
21
|
+
LzReceiveParams,
|
|
22
|
+
LzReceiveParamsBeet,
|
|
23
|
+
} from './types'
|
|
24
|
+
import { instructionDiscriminator, simulateTransaction } from './utility'
|
|
25
|
+
|
|
26
|
+
import { deriveLzComposeTypesAccountsPDA, deriveLzReceiveTypesAccountsPDA } from '.'
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Receives a LayerZero message.
|
|
30
|
+
*
|
|
31
|
+
* @param {Connection} connection - The Solana connection object.
|
|
32
|
+
* @param {PublicKey} payer - The public key of the payer.
|
|
33
|
+
* @param {Packet} packet - The packet containing the message.
|
|
34
|
+
* @param {Uint8Array} [callerParams] - Optional caller parameters.
|
|
35
|
+
* @param {Commitment | GetAccountInfoConfig} [commitmentOrConfig] - Optional commitment or configuration.
|
|
36
|
+
*
|
|
37
|
+
* @returns {Promise<TransactionInstruction>} The transaction instruction.
|
|
38
|
+
*/
|
|
39
|
+
export async function lzReceive(
|
|
40
|
+
connection: Connection,
|
|
41
|
+
payer: PublicKey,
|
|
42
|
+
packet: Pick<Packet, 'message' | 'sender' | 'srcEid' | 'guid' | 'receiver' | 'nonce'>,
|
|
43
|
+
callerParams: Uint8Array = Uint8Array.from([0, 0]),
|
|
44
|
+
commitmentOrConfig: Commitment | GetAccountInfoConfig = 'confirmed'
|
|
45
|
+
): Promise<TransactionInstruction> {
|
|
46
|
+
const { message: message_, sender: sender, srcEid, guid, receiver: receiver_ } = packet
|
|
47
|
+
const receiver = new PublicKey(addressToBytes32(receiver_))
|
|
48
|
+
const message = arrayify(message_)
|
|
49
|
+
const params: LzReceiveParams = {
|
|
50
|
+
srcEid: srcEid,
|
|
51
|
+
sender: Array.from(arrayify(sender)),
|
|
52
|
+
guid: Array.from(arrayify(guid)),
|
|
53
|
+
message,
|
|
54
|
+
callerParams,
|
|
55
|
+
nonce: parseInt(packet.nonce),
|
|
56
|
+
}
|
|
57
|
+
const receiverInfo = await connection.getParsedAccountInfo(receiver, commitmentOrConfig)
|
|
58
|
+
const receiverProgram = new PublicKey((receiverInfo.value as AccountInfo<Buffer>).owner)
|
|
59
|
+
const accounts = await getLzReceiveAccounts(
|
|
60
|
+
connection,
|
|
61
|
+
payer,
|
|
62
|
+
receiver,
|
|
63
|
+
receiverProgram,
|
|
64
|
+
params,
|
|
65
|
+
commitmentOrConfig
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
const MSG_TYPE_OFFSET = 0
|
|
69
|
+
// const msgType: string = message[MSG_TYPE_OFFSET].toString()
|
|
70
|
+
// if (msgType !== MessageType.COMPOSED_TYPE.toString() && msgType !== MessageType.VANILLA.toString()) {
|
|
71
|
+
// throw new Error(`Invalid message type ${msgType}`)
|
|
72
|
+
// }
|
|
73
|
+
|
|
74
|
+
const [data] = LzReceiveParamsBeet.serialize(params)
|
|
75
|
+
return new TransactionInstruction({
|
|
76
|
+
programId: receiverProgram,
|
|
77
|
+
keys: accounts,
|
|
78
|
+
data: Buffer.concat([instructionDiscriminator('lz_receive'), data]),
|
|
79
|
+
})
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Composes a LayerZero message.
|
|
84
|
+
*
|
|
85
|
+
* @param {Connection} connection - The Solana connection object.
|
|
86
|
+
* @param {PublicKey} payer - The public key of the payer.
|
|
87
|
+
* @param {ComposeSentEvent} event - The event containing the message details.
|
|
88
|
+
* @param {Uint8Array} [extraData] - Optional extra data.
|
|
89
|
+
* @param {Commitment | GetAccountInfoConfig} [commitmentOrConfig] - Optional commitment or configuration.
|
|
90
|
+
*
|
|
91
|
+
* @returns {Promise<TransactionInstruction>} The transaction instruction.
|
|
92
|
+
*/
|
|
93
|
+
export async function lzCompose(
|
|
94
|
+
connection: Connection,
|
|
95
|
+
payer: PublicKey,
|
|
96
|
+
event: ComposeSentEvent,
|
|
97
|
+
extraData: Uint8Array = Uint8Array.from([0, 0]),
|
|
98
|
+
commitmentOrConfig?: Commitment | GetAccountInfoConfig
|
|
99
|
+
): Promise<TransactionInstruction> {
|
|
100
|
+
const { to, from, guid, index, message } = event
|
|
101
|
+
const params: LzComposeParams = {
|
|
102
|
+
from,
|
|
103
|
+
to,
|
|
104
|
+
guid,
|
|
105
|
+
index,
|
|
106
|
+
message,
|
|
107
|
+
extraData,
|
|
108
|
+
}
|
|
109
|
+
const accountInfo = await connection.getAccountInfo(to, commitmentOrConfig)
|
|
110
|
+
if (!accountInfo) {
|
|
111
|
+
throw new Error(`Account not found: ${to.toBase58()}`)
|
|
112
|
+
}
|
|
113
|
+
const programId = accountInfo.owner
|
|
114
|
+
const accounts = await getLzComposeAccountMeta(connection, payer, to, programId, params, commitmentOrConfig)
|
|
115
|
+
|
|
116
|
+
const [data] = LzComposeParamsBeet.serialize(params)
|
|
117
|
+
return new TransactionInstruction({
|
|
118
|
+
programId,
|
|
119
|
+
keys: accounts,
|
|
120
|
+
data: Buffer.concat([instructionDiscriminator('lz_compose'), data]),
|
|
121
|
+
})
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/// LzReceiveTypes instruction provides a list of accounts that are used in the LzReceive
|
|
125
|
+
/// instruction. The list of accounts required by this LzReceiveTypes instruction can be found
|
|
126
|
+
/// from the specific PDA account that is generated by the LZ_RECEIVE_TYPES_SEED.
|
|
127
|
+
/**
|
|
128
|
+
* Retrieves the accounts required for the LzReceive instruction.
|
|
129
|
+
*
|
|
130
|
+
* @param {Connection} connection - The Solana connection object.
|
|
131
|
+
* @param {PublicKey} payer - The public key of the payer.
|
|
132
|
+
* @param {PublicKey} receiver - The public key of the receiver.
|
|
133
|
+
* @param {PublicKey} receiverProgram - The public key of the receiver program.
|
|
134
|
+
* @param {LzReceiveParams} params - The parameters for the LzReceive instruction.
|
|
135
|
+
* @param {Commitment | GetAccountInfoConfig} [commitmentOrConfig] - Optional commitment or configuration.
|
|
136
|
+
*
|
|
137
|
+
* @returns {Promise<AccountMeta[]>} The list of account metadata.
|
|
138
|
+
*/
|
|
139
|
+
export async function getLzReceiveAccounts(
|
|
140
|
+
connection: Connection,
|
|
141
|
+
payer: PublicKey,
|
|
142
|
+
receiver: PublicKey,
|
|
143
|
+
receiverProgram: PublicKey,
|
|
144
|
+
params: LzReceiveParams,
|
|
145
|
+
commitmentOrConfig: Commitment | GetAccountInfoConfig = 'confirmed'
|
|
146
|
+
): Promise<AccountMeta[]> {
|
|
147
|
+
const lzReceiveTypesAccounts = await (async (): Promise<AccountMeta[]> => {
|
|
148
|
+
const [lzReceiveTypesAccountsPDA] = deriveLzReceiveTypesAccountsPDA(receiverProgram, receiver)
|
|
149
|
+
// Get the lzReceiveTypesAccounts. Deserialize the AccountInfo.data to get the lzReceiveTypesAccounts.
|
|
150
|
+
const info = await connection.getAccountInfo(lzReceiveTypesAccountsPDA, commitmentOrConfig)
|
|
151
|
+
const accounts = []
|
|
152
|
+
if (info) {
|
|
153
|
+
const buffer = Buffer.from(info.data)
|
|
154
|
+
const len = buffer.length - 8
|
|
155
|
+
if (len % 32 !== 0) {
|
|
156
|
+
throw new Error(
|
|
157
|
+
`Invalid length of AccountInfo.data. The length must be a multiple of 32 plus 8.(n*32+8). Current length is ${buffer.length}`
|
|
158
|
+
)
|
|
159
|
+
}
|
|
160
|
+
for (let i = 8; i < len; i += 32) {
|
|
161
|
+
const address = AddressType.read(buffer, i)
|
|
162
|
+
accounts.push({
|
|
163
|
+
pubkey: new PublicKey(address),
|
|
164
|
+
isSigner: false,
|
|
165
|
+
isWritable: false,
|
|
166
|
+
})
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return accounts
|
|
170
|
+
})()
|
|
171
|
+
|
|
172
|
+
const [data] = LzReceiveParamsBeet.serialize(params)
|
|
173
|
+
const lzReceiveTypesIx = new TransactionInstruction({
|
|
174
|
+
programId: receiverProgram,
|
|
175
|
+
keys: lzReceiveTypesAccounts,
|
|
176
|
+
data: Buffer.concat([instructionDiscriminator('lz_receive_types'), data]),
|
|
177
|
+
})
|
|
178
|
+
|
|
179
|
+
const response = await simulateTransaction(connection, [lzReceiveTypesIx], receiverProgram, payer)
|
|
180
|
+
const keys: AccountMeta[] = retrieveAccountFromSimulatedResp(response, payer)
|
|
181
|
+
return keys
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Retrieves the accounts required for the LzCompose instruction.
|
|
186
|
+
*
|
|
187
|
+
* @param {Connection} connection - The Solana connection object.
|
|
188
|
+
* @param {PublicKey} payer - The public key of the payer.
|
|
189
|
+
* @param {PublicKey} to - The public key of the recipient.
|
|
190
|
+
* @param {PublicKey} composerProgram - The public key of the composer program.
|
|
191
|
+
* @param {LzComposeParams} params - The parameters for the LzCompose instruction.
|
|
192
|
+
* @param {Commitment | GetAccountInfoConfig} [commitmentOrConfig] - Optional commitment or configuration.
|
|
193
|
+
*
|
|
194
|
+
* @returns {Promise<AccountMeta[]>} The list of account metadata.
|
|
195
|
+
*/
|
|
196
|
+
export async function getLzComposeAccountMeta(
|
|
197
|
+
connection: Connection,
|
|
198
|
+
payer: PublicKey,
|
|
199
|
+
to: PublicKey,
|
|
200
|
+
composerProgram: PublicKey,
|
|
201
|
+
params: LzComposeParams,
|
|
202
|
+
commitmentOrConfig: Commitment | GetAccountInfoConfig = 'confirmed'
|
|
203
|
+
): Promise<AccountMeta[]> {
|
|
204
|
+
const lzComposeTypesAccounts = await (async (): Promise<AccountMeta[]> => {
|
|
205
|
+
const [lzComposeTypesAccountsPDA] = deriveLzComposeTypesAccountsPDA(composerProgram, to)
|
|
206
|
+
// Get the lzReceiveTypesAccounts. Deserialize the AccountInfo.data to get the lzComposeTypesAccounts.
|
|
207
|
+
const info = await connection.getAccountInfo(lzComposeTypesAccountsPDA, commitmentOrConfig)
|
|
208
|
+
const accounts = []
|
|
209
|
+
if (info) {
|
|
210
|
+
const buffer = Buffer.from(info.data)
|
|
211
|
+
const len = buffer.length - 8
|
|
212
|
+
if (len % 32 !== 0) {
|
|
213
|
+
throw new Error(
|
|
214
|
+
`Invalid length of AccountInfo.data. The length must be a multiple of 32 plus 8.(n*32+8). Current length is ${buffer.length}`
|
|
215
|
+
)
|
|
216
|
+
}
|
|
217
|
+
for (let i = 8; i < len; i += 32) {
|
|
218
|
+
const address = AddressType.read(buffer, i)
|
|
219
|
+
accounts.push({
|
|
220
|
+
pubkey: new PublicKey(address),
|
|
221
|
+
isSigner: false,
|
|
222
|
+
isWritable: false,
|
|
223
|
+
})
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
return accounts
|
|
227
|
+
})()
|
|
228
|
+
|
|
229
|
+
const [data] = LzComposeParamsBeet.serialize(params)
|
|
230
|
+
const lzComposeTypesIx = new TransactionInstruction({
|
|
231
|
+
programId: composerProgram,
|
|
232
|
+
keys: lzComposeTypesAccounts,
|
|
233
|
+
data: Buffer.concat([instructionDiscriminator('lz_compose_types'), data]),
|
|
234
|
+
})
|
|
235
|
+
|
|
236
|
+
const response = await simulateTransaction(connection, [lzComposeTypesIx], composerProgram, payer)
|
|
237
|
+
const keys: AccountMeta[] = retrieveAccountFromSimulatedResp(response, payer)
|
|
238
|
+
return keys
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* Retrieves account metadata from a simulated transaction response.
|
|
243
|
+
*
|
|
244
|
+
* @param {Buffer} resp - The response buffer.
|
|
245
|
+
* @param {PublicKey} [payer] - Optional public key of the payer.
|
|
246
|
+
*
|
|
247
|
+
* @returns {AccountMeta[]} The list of account metadata.
|
|
248
|
+
*/
|
|
249
|
+
function retrieveAccountFromSimulatedResp(resp: Buffer, payer?: PublicKey): AccountMeta[] {
|
|
250
|
+
const result = array(LzReceiveAccountBeet)
|
|
251
|
+
const fixedBeet = result.toFixedFromData(resp, 0)
|
|
252
|
+
const results = fixedBeet.read(resp, 0)
|
|
253
|
+
return results.map((r) => {
|
|
254
|
+
if (r.pubkey.toBase58() == PublicKey.default.toBase58() && r.isSigner) {
|
|
255
|
+
if (!payer) throw new Error('payer is required')
|
|
256
|
+
return {
|
|
257
|
+
pubkey: payer,
|
|
258
|
+
isSigner: true,
|
|
259
|
+
isWritable: r.isWritable,
|
|
260
|
+
} satisfies AccountMeta
|
|
261
|
+
} else {
|
|
262
|
+
return {
|
|
263
|
+
pubkey: r.pubkey,
|
|
264
|
+
isSigner: r.isSigner,
|
|
265
|
+
isWritable: r.isWritable,
|
|
266
|
+
} satisfies AccountMeta
|
|
267
|
+
}
|
|
268
|
+
})
|
|
269
|
+
}
|