/** * This code was GENERATED using the solita package. * Please DO NOT EDIT THIS FILE, instead rerun solita to update it or write a wrapper to add functionality. * * See: https://github.com/metaplex-foundation/solita */ import * as web3 from '@solana/web3.js' import * as beet from '@convergence-rfq/beet' import * as beetSolana from '@convergence-rfq/beet-solana' import { ApiLeg, apiLegBeet } from '../types/ApiLeg' import { OrderType, orderTypeBeet } from '../types/OrderType' import { QuoteAsset, quoteAssetBeet } from '../types/QuoteAsset' import { FixedSize, fixedSizeBeet } from '../types/FixedSize' /** * @category Instructions * @category CreateRfq * @category generated */ export type CreateRfqInstructionArgs = { expectedLegsSize: number expectedLegsHash: number[] /* size: 32 */ legs: ApiLeg[] printTradeProvider: beet.COption orderType: OrderType quoteAsset: QuoteAsset fixedSize: FixedSize activeWindow: number settlingWindow: number recentTimestamp: beet.bignum } /** * @category Instructions * @category CreateRfq * @category generated */ export const createRfqStruct = new beet.FixableBeetArgsStruct< CreateRfqInstructionArgs & { instructionDiscriminator: number[] /* size: 8 */ } >( [ ['instructionDiscriminator', beet.uniformFixedSizeArray(beet.u8, 8)], ['expectedLegsSize', beet.u16], ['expectedLegsHash', beet.uniformFixedSizeArray(beet.u8, 32)], ['legs', beet.array(apiLegBeet)], ['printTradeProvider', beet.coption(beetSolana.publicKey)], ['orderType', orderTypeBeet], ['quoteAsset', quoteAssetBeet], ['fixedSize', fixedSizeBeet], ['activeWindow', beet.u32], ['settlingWindow', beet.u32], ['recentTimestamp', beet.u64], ], 'CreateRfqInstructionArgs' ) /** * Accounts required by the _createRfq_ instruction * * @property [_writable_, **signer**] taker * @property [] protocol * @property [_writable_] rfq * @property [_writable_] whitelist * @category Instructions * @category CreateRfq * @category generated */ export type CreateRfqInstructionAccounts = { taker: web3.PublicKey protocol: web3.PublicKey rfq: web3.PublicKey whitelist: web3.PublicKey systemProgram?: web3.PublicKey anchorRemainingAccounts?: web3.AccountMeta[] } export const createRfqInstructionDiscriminator = [ 127, 84, 185, 131, 235, 154, 189, 2, ] /** * Creates a _CreateRfq_ instruction. * * @param accounts that will be accessed while the instruction is processed * @param args to provide as instruction data to the program * * @category Instructions * @category CreateRfq * @category generated */ export function createCreateRfqInstruction( accounts: CreateRfqInstructionAccounts, args: CreateRfqInstructionArgs, programId = new web3.PublicKey('FqAhTZg86EKEzeWMLtutVDRXJuLWrey7oDHr3Au6RFdo') ) { const [data] = createRfqStruct.serialize({ instructionDiscriminator: createRfqInstructionDiscriminator, ...args, }) const keys: web3.AccountMeta[] = [ { pubkey: accounts.taker, isWritable: true, isSigner: true, }, { pubkey: accounts.protocol, isWritable: false, isSigner: false, }, { pubkey: accounts.rfq, isWritable: true, isSigner: false, }, { pubkey: accounts.whitelist, isWritable: true, isSigner: false, }, { pubkey: accounts.systemProgram ?? web3.SystemProgram.programId, isWritable: false, isSigner: false, }, ] if (accounts.anchorRemainingAccounts != null) { for (const acc of accounts.anchorRemainingAccounts) { keys.push(acc) } } const ix = new web3.TransactionInstruction({ programId, keys, data, }) return ix }