| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- /**
- * This code was AUTOGENERATED using the Codama library.
- * Please DO NOT EDIT THIS FILE, instead use visitors
- * to add features, then rerun Codama to update it.
- *
- * @see https://github.com/codama-idl/codama
- */
- import {
- combineCodec,
- getStructDecoder,
- getStructEncoder,
- getU32Decoder,
- getU32Encoder,
- getU64Decoder,
- getU64Encoder,
- transformEncoder,
- type AccountMeta,
- type AccountSignerMeta,
- type Address,
- type FixedSizeCodec,
- type FixedSizeDecoder,
- type FixedSizeEncoder,
- type Instruction,
- type InstructionWithAccounts,
- type InstructionWithData,
- type ReadonlyAccount,
- type ReadonlySignerAccount,
- type ReadonlyUint8Array,
- type TransactionSigner,
- type WritableAccount,
- } from '@solana/kit';
- import { SYSTEM_PROGRAM_ADDRESS } from '../programs';
- import { getAccountMetaFactory, type ResolvedAccount } from '../shared';
- export const WITHDRAW_NONCE_ACCOUNT_DISCRIMINATOR = 5;
- export function getWithdrawNonceAccountDiscriminatorBytes() {
- return getU32Encoder().encode(WITHDRAW_NONCE_ACCOUNT_DISCRIMINATOR);
- }
- export type WithdrawNonceAccountInstruction<
- TProgram extends string = typeof SYSTEM_PROGRAM_ADDRESS,
- TAccountNonceAccount extends string | AccountMeta<string> = string,
- TAccountRecipientAccount extends string | AccountMeta<string> = string,
- TAccountRecentBlockhashesSysvar extends
- | string
- | AccountMeta<string> = 'SysvarRecentB1ockHashes11111111111111111111',
- TAccountRentSysvar extends
- | string
- | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',
- TAccountNonceAuthority extends string | AccountMeta<string> = string,
- TRemainingAccounts extends readonly AccountMeta<string>[] = [],
- > = Instruction<TProgram> &
- InstructionWithData<ReadonlyUint8Array> &
- InstructionWithAccounts<
- [
- TAccountNonceAccount extends string
- ? WritableAccount<TAccountNonceAccount>
- : TAccountNonceAccount,
- TAccountRecipientAccount extends string
- ? WritableAccount<TAccountRecipientAccount>
- : TAccountRecipientAccount,
- TAccountRecentBlockhashesSysvar extends string
- ? ReadonlyAccount<TAccountRecentBlockhashesSysvar>
- : TAccountRecentBlockhashesSysvar,
- TAccountRentSysvar extends string
- ? ReadonlyAccount<TAccountRentSysvar>
- : TAccountRentSysvar,
- TAccountNonceAuthority extends string
- ? ReadonlySignerAccount<TAccountNonceAuthority> &
- AccountSignerMeta<TAccountNonceAuthority>
- : TAccountNonceAuthority,
- ...TRemainingAccounts,
- ]
- >;
- export type WithdrawNonceAccountInstructionData = {
- discriminator: number;
- withdrawAmount: bigint;
- };
- export type WithdrawNonceAccountInstructionDataArgs = {
- withdrawAmount: number | bigint;
- };
- export function getWithdrawNonceAccountInstructionDataEncoder(): FixedSizeEncoder<WithdrawNonceAccountInstructionDataArgs> {
- return transformEncoder(
- getStructEncoder([
- ['discriminator', getU32Encoder()],
- ['withdrawAmount', getU64Encoder()],
- ]),
- (value) => ({
- ...value,
- discriminator: WITHDRAW_NONCE_ACCOUNT_DISCRIMINATOR,
- })
- );
- }
- export function getWithdrawNonceAccountInstructionDataDecoder(): FixedSizeDecoder<WithdrawNonceAccountInstructionData> {
- return getStructDecoder([
- ['discriminator', getU32Decoder()],
- ['withdrawAmount', getU64Decoder()],
- ]);
- }
- export function getWithdrawNonceAccountInstructionDataCodec(): FixedSizeCodec<
- WithdrawNonceAccountInstructionDataArgs,
- WithdrawNonceAccountInstructionData
- > {
- return combineCodec(
- getWithdrawNonceAccountInstructionDataEncoder(),
- getWithdrawNonceAccountInstructionDataDecoder()
- );
- }
- export type WithdrawNonceAccountInput<
- TAccountNonceAccount extends string = string,
- TAccountRecipientAccount extends string = string,
- TAccountRecentBlockhashesSysvar extends string = string,
- TAccountRentSysvar extends string = string,
- TAccountNonceAuthority extends string = string,
- > = {
- nonceAccount: Address<TAccountNonceAccount>;
- recipientAccount: Address<TAccountRecipientAccount>;
- recentBlockhashesSysvar?: Address<TAccountRecentBlockhashesSysvar>;
- rentSysvar?: Address<TAccountRentSysvar>;
- nonceAuthority: TransactionSigner<TAccountNonceAuthority>;
- withdrawAmount: WithdrawNonceAccountInstructionDataArgs['withdrawAmount'];
- };
- export function getWithdrawNonceAccountInstruction<
- TAccountNonceAccount extends string,
- TAccountRecipientAccount extends string,
- TAccountRecentBlockhashesSysvar extends string,
- TAccountRentSysvar extends string,
- TAccountNonceAuthority extends string,
- TProgramAddress extends Address = typeof SYSTEM_PROGRAM_ADDRESS,
- >(
- input: WithdrawNonceAccountInput<
- TAccountNonceAccount,
- TAccountRecipientAccount,
- TAccountRecentBlockhashesSysvar,
- TAccountRentSysvar,
- TAccountNonceAuthority
- >,
- config?: { programAddress?: TProgramAddress }
- ): WithdrawNonceAccountInstruction<
- TProgramAddress,
- TAccountNonceAccount,
- TAccountRecipientAccount,
- TAccountRecentBlockhashesSysvar,
- TAccountRentSysvar,
- TAccountNonceAuthority
- > {
- // Program address.
- const programAddress = config?.programAddress ?? SYSTEM_PROGRAM_ADDRESS;
- // Original accounts.
- const originalAccounts = {
- nonceAccount: { value: input.nonceAccount ?? null, isWritable: true },
- recipientAccount: {
- value: input.recipientAccount ?? null,
- isWritable: true,
- },
- recentBlockhashesSysvar: {
- value: input.recentBlockhashesSysvar ?? null,
- isWritable: false,
- },
- rentSysvar: { value: input.rentSysvar ?? null, isWritable: false },
- nonceAuthority: { value: input.nonceAuthority ?? null, isWritable: false },
- };
- const accounts = originalAccounts as Record<
- keyof typeof originalAccounts,
- ResolvedAccount
- >;
- // Original args.
- const args = { ...input };
- // Resolve default values.
- if (!accounts.recentBlockhashesSysvar.value) {
- accounts.recentBlockhashesSysvar.value =
- 'SysvarRecentB1ockHashes11111111111111111111' as Address<'SysvarRecentB1ockHashes11111111111111111111'>;
- }
- if (!accounts.rentSysvar.value) {
- accounts.rentSysvar.value =
- 'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;
- }
- const getAccountMeta = getAccountMetaFactory(programAddress, 'omitted');
- return Object.freeze({
- accounts: [
- getAccountMeta(accounts.nonceAccount),
- getAccountMeta(accounts.recipientAccount),
- getAccountMeta(accounts.recentBlockhashesSysvar),
- getAccountMeta(accounts.rentSysvar),
- getAccountMeta(accounts.nonceAuthority),
- ],
- data: getWithdrawNonceAccountInstructionDataEncoder().encode(
- args as WithdrawNonceAccountInstructionDataArgs
- ),
- programAddress,
- } as WithdrawNonceAccountInstruction<
- TProgramAddress,
- TAccountNonceAccount,
- TAccountRecipientAccount,
- TAccountRecentBlockhashesSysvar,
- TAccountRentSysvar,
- TAccountNonceAuthority
- >);
- }
- export type ParsedWithdrawNonceAccountInstruction<
- TProgram extends string = typeof SYSTEM_PROGRAM_ADDRESS,
- TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],
- > = {
- programAddress: Address<TProgram>;
- accounts: {
- nonceAccount: TAccountMetas[0];
- recipientAccount: TAccountMetas[1];
- recentBlockhashesSysvar: TAccountMetas[2];
- rentSysvar: TAccountMetas[3];
- nonceAuthority: TAccountMetas[4];
- };
- data: WithdrawNonceAccountInstructionData;
- };
- export function parseWithdrawNonceAccountInstruction<
- TProgram extends string,
- TAccountMetas extends readonly AccountMeta[],
- >(
- instruction: Instruction<TProgram> &
- InstructionWithAccounts<TAccountMetas> &
- InstructionWithData<ReadonlyUint8Array>
- ): ParsedWithdrawNonceAccountInstruction<TProgram, TAccountMetas> {
- if (instruction.accounts.length < 5) {
- // TODO: Coded error.
- throw new Error('Not enough accounts');
- }
- let accountIndex = 0;
- const getNextAccount = () => {
- const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;
- accountIndex += 1;
- return accountMeta;
- };
- return {
- programAddress: instruction.programAddress,
- accounts: {
- nonceAccount: getNextAccount(),
- recipientAccount: getNextAccount(),
- recentBlockhashesSysvar: getNextAccount(),
- rentSysvar: getNextAccount(),
- nonceAuthority: getNextAccount(),
- },
- data: getWithdrawNonceAccountInstructionDataDecoder().decode(
- instruction.data
- ),
- };
- }
|