/** * 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 { assertAccountExists, assertAccountsExist, combineCodec, decodeAccount, fetchEncodedAccount, fetchEncodedAccounts, fixDecoderSize, fixEncoderSize, getAddressDecoder, getAddressEncoder, getBooleanDecoder, getBooleanEncoder, getBytesDecoder, getBytesEncoder, getI64Decoder, getI64Encoder, getOptionDecoder, getOptionEncoder, getStructDecoder, getStructEncoder, getU64Decoder, getU64Encoder, getU8Decoder, getU8Encoder, transformEncoder, type Account, type Address, type Codec, type Decoder, type EncodedAccount, type Encoder, type FetchAccountConfig, type FetchAccountsConfig, type MaybeAccount, type MaybeEncodedAccount, type Option, type OptionOrNullable, type ReadonlyUint8Array, } from "@solana/kit"; import { getRequestChangeDecoder, getRequestChangeEncoder, getRequestTypeDecoder, getRequestTypeEncoder, getSideDecoder, getSideEncoder, type RequestChange, type RequestChangeArgs, type RequestType, type RequestTypeArgs, type Side, type SideArgs, } from "../types"; export const POSITION_REQUEST_DISCRIMINATOR = new Uint8Array([ 12, 38, 250, 199, 46, 154, 32, 216, ]); export function getPositionRequestDiscriminatorBytes() { return fixEncoderSize(getBytesEncoder(), 8).encode( POSITION_REQUEST_DISCRIMINATOR, ); } export type PositionRequest = { discriminator: ReadonlyUint8Array; owner: Address; pool: Address; custody: Address; position: Address; mint: Address; openTime: bigint; updateTime: bigint; sizeUsdDelta: bigint; collateralDelta: bigint; requestChange: RequestChange; requestType: RequestType; side: Side; priceSlippage: Option; jupiterMinimumOut: Option; preSwapAmount: Option; triggerPrice: Option; triggerAboveThreshold: Option; entirePosition: Option; executed: boolean; counter: bigint; bump: number; referral: Option
; }; export type PositionRequestArgs = { owner: Address; pool: Address; custody: Address; position: Address; mint: Address; openTime: number | bigint; updateTime: number | bigint; sizeUsdDelta: number | bigint; collateralDelta: number | bigint; requestChange: RequestChangeArgs; requestType: RequestTypeArgs; side: SideArgs; priceSlippage: OptionOrNullable; jupiterMinimumOut: OptionOrNullable; preSwapAmount: OptionOrNullable; triggerPrice: OptionOrNullable; triggerAboveThreshold: OptionOrNullable; entirePosition: OptionOrNullable; executed: boolean; counter: number | bigint; bump: number; referral: OptionOrNullable
; }; /** Gets the encoder for {@link PositionRequestArgs} account data. */ export function getPositionRequestEncoder(): Encoder { return transformEncoder( getStructEncoder([ ["discriminator", fixEncoderSize(getBytesEncoder(), 8)], ["owner", getAddressEncoder()], ["pool", getAddressEncoder()], ["custody", getAddressEncoder()], ["position", getAddressEncoder()], ["mint", getAddressEncoder()], ["openTime", getI64Encoder()], ["updateTime", getI64Encoder()], ["sizeUsdDelta", getU64Encoder()], ["collateralDelta", getU64Encoder()], ["requestChange", getRequestChangeEncoder()], ["requestType", getRequestTypeEncoder()], ["side", getSideEncoder()], ["priceSlippage", getOptionEncoder(getU64Encoder())], ["jupiterMinimumOut", getOptionEncoder(getU64Encoder())], ["preSwapAmount", getOptionEncoder(getU64Encoder())], ["triggerPrice", getOptionEncoder(getU64Encoder())], ["triggerAboveThreshold", getOptionEncoder(getBooleanEncoder())], ["entirePosition", getOptionEncoder(getBooleanEncoder())], ["executed", getBooleanEncoder()], ["counter", getU64Encoder()], ["bump", getU8Encoder()], ["referral", getOptionEncoder(getAddressEncoder())], ]), (value) => ({ ...value, discriminator: POSITION_REQUEST_DISCRIMINATOR }), ); } /** Gets the decoder for {@link PositionRequest} account data. */ export function getPositionRequestDecoder(): Decoder { return getStructDecoder([ ["discriminator", fixDecoderSize(getBytesDecoder(), 8)], ["owner", getAddressDecoder()], ["pool", getAddressDecoder()], ["custody", getAddressDecoder()], ["position", getAddressDecoder()], ["mint", getAddressDecoder()], ["openTime", getI64Decoder()], ["updateTime", getI64Decoder()], ["sizeUsdDelta", getU64Decoder()], ["collateralDelta", getU64Decoder()], ["requestChange", getRequestChangeDecoder()], ["requestType", getRequestTypeDecoder()], ["side", getSideDecoder()], ["priceSlippage", getOptionDecoder(getU64Decoder())], ["jupiterMinimumOut", getOptionDecoder(getU64Decoder())], ["preSwapAmount", getOptionDecoder(getU64Decoder())], ["triggerPrice", getOptionDecoder(getU64Decoder())], ["triggerAboveThreshold", getOptionDecoder(getBooleanDecoder())], ["entirePosition", getOptionDecoder(getBooleanDecoder())], ["executed", getBooleanDecoder()], ["counter", getU64Decoder()], ["bump", getU8Decoder()], ["referral", getOptionDecoder(getAddressDecoder())], ]); } /** Gets the codec for {@link PositionRequest} account data. */ export function getPositionRequestCodec(): Codec< PositionRequestArgs, PositionRequest > { return combineCodec(getPositionRequestEncoder(), getPositionRequestDecoder()); } export function decodePositionRequest( encodedAccount: EncodedAccount, ): Account; export function decodePositionRequest( encodedAccount: MaybeEncodedAccount, ): MaybeAccount; export function decodePositionRequest( encodedAccount: EncodedAccount | MaybeEncodedAccount, ): | Account | MaybeAccount { return decodeAccount( encodedAccount as MaybeEncodedAccount, getPositionRequestDecoder(), ); } export async function fetchPositionRequest( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybePositionRequest(rpc, address, config); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybePositionRequest< TAddress extends string = string, >( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodePositionRequest(maybeAccount); } export async function fetchAllPositionRequest( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybePositionRequest( rpc, addresses, config, ); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybePositionRequest( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodePositionRequest(maybeAccount), ); }