/**
* 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 {
addDecoderSizePrefix,
addEncoderSizePrefix,
assertAccountExists,
assertAccountsExist,
combineCodec,
decodeAccount,
fetchEncodedAccount,
fetchEncodedAccounts,
fixDecoderSize,
fixEncoderSize,
getAddressDecoder,
getAddressEncoder,
getArrayDecoder,
getArrayEncoder,
getBytesDecoder,
getBytesEncoder,
getI64Decoder,
getI64Encoder,
getStructDecoder,
getStructEncoder,
getU128Decoder,
getU128Encoder,
getU32Decoder,
getU32Encoder,
getU8Decoder,
getU8Encoder,
getUtf8Decoder,
getUtf8Encoder,
transformEncoder,
type Account,
type Address,
type Codec,
type Decoder,
type EncodedAccount,
type Encoder,
type FetchAccountConfig,
type FetchAccountsConfig,
type MaybeAccount,
type MaybeEncodedAccount,
type ReadonlyUint8Array,
} from "@solana/kit";
import {
getFeesDecoder,
getFeesEncoder,
getLimitDecoder,
getLimitEncoder,
getPoolAprDecoder,
getPoolAprEncoder,
type Fees,
type FeesArgs,
type Limit,
type LimitArgs,
type PoolApr,
type PoolAprArgs,
} from "../types";
export const POOL_DISCRIMINATOR = new Uint8Array([
241, 154, 109, 4, 17, 177, 109, 188,
]);
export function getPoolDiscriminatorBytes() {
return fixEncoderSize(getBytesEncoder(), 8).encode(POOL_DISCRIMINATOR);
}
export type Pool = {
discriminator: ReadonlyUint8Array;
name: string;
custodies: Array
;
aumUsd: bigint;
limit: Limit;
fees: Fees;
poolApr: PoolApr;
maxRequestExecutionSec: bigint;
bump: number;
lpTokenBump: number;
inceptionTime: bigint;
};
export type PoolArgs = {
name: string;
custodies: Array;
aumUsd: number | bigint;
limit: LimitArgs;
fees: FeesArgs;
poolApr: PoolAprArgs;
maxRequestExecutionSec: number | bigint;
bump: number;
lpTokenBump: number;
inceptionTime: number | bigint;
};
/** Gets the encoder for {@link PoolArgs} account data. */
export function getPoolEncoder(): Encoder {
return transformEncoder(
getStructEncoder([
["discriminator", fixEncoderSize(getBytesEncoder(), 8)],
["name", addEncoderSizePrefix(getUtf8Encoder(), getU32Encoder())],
["custodies", getArrayEncoder(getAddressEncoder())],
["aumUsd", getU128Encoder()],
["limit", getLimitEncoder()],
["fees", getFeesEncoder()],
["poolApr", getPoolAprEncoder()],
["maxRequestExecutionSec", getI64Encoder()],
["bump", getU8Encoder()],
["lpTokenBump", getU8Encoder()],
["inceptionTime", getI64Encoder()],
]),
(value) => ({ ...value, discriminator: POOL_DISCRIMINATOR }),
);
}
/** Gets the decoder for {@link Pool} account data. */
export function getPoolDecoder(): Decoder {
return getStructDecoder([
["discriminator", fixDecoderSize(getBytesDecoder(), 8)],
["name", addDecoderSizePrefix(getUtf8Decoder(), getU32Decoder())],
["custodies", getArrayDecoder(getAddressDecoder())],
["aumUsd", getU128Decoder()],
["limit", getLimitDecoder()],
["fees", getFeesDecoder()],
["poolApr", getPoolAprDecoder()],
["maxRequestExecutionSec", getI64Decoder()],
["bump", getU8Decoder()],
["lpTokenBump", getU8Decoder()],
["inceptionTime", getI64Decoder()],
]);
}
/** Gets the codec for {@link Pool} account data. */
export function getPoolCodec(): Codec {
return combineCodec(getPoolEncoder(), getPoolDecoder());
}
export function decodePool(
encodedAccount: EncodedAccount,
): Account;
export function decodePool(
encodedAccount: MaybeEncodedAccount,
): MaybeAccount;
export function decodePool(
encodedAccount: EncodedAccount | MaybeEncodedAccount,
): Account | MaybeAccount {
return decodeAccount(
encodedAccount as MaybeEncodedAccount,
getPoolDecoder(),
);
}
export async function fetchPool(
rpc: Parameters[0],
address: Address,
config?: FetchAccountConfig,
): Promise> {
const maybeAccount = await fetchMaybePool(rpc, address, config);
assertAccountExists(maybeAccount);
return maybeAccount;
}
export async function fetchMaybePool(
rpc: Parameters[0],
address: Address,
config?: FetchAccountConfig,
): Promise> {
const maybeAccount = await fetchEncodedAccount(rpc, address, config);
return decodePool(maybeAccount);
}
export async function fetchAllPool(
rpc: Parameters[0],
addresses: Array,
config?: FetchAccountsConfig,
): Promise[]> {
const maybeAccounts = await fetchAllMaybePool(rpc, addresses, config);
assertAccountsExist(maybeAccounts);
return maybeAccounts;
}
export async function fetchAllMaybePool(
rpc: Parameters[0],
addresses: Array,
config?: FetchAccountsConfig,
): Promise[]> {
const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
return maybeAccounts.map((maybeAccount) => decodePool(maybeAccount));
}