@robertprp/intents-sdk
Version:
Shogun Network Intent-based cross-chain swaps SDK
143 lines (128 loc) • 4.5 kB
text/typescript
/**
* 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,
decodeAccount,
fetchEncodedAccount,
fetchEncodedAccounts,
type Account,
type EncodedAccount,
type FetchAccountConfig,
type FetchAccountsConfig,
type MaybeAccount,
type MaybeEncodedAccount,
} from '@solana/kit';
import { getAddressDecoder, getAddressEncoder, type Address } from '@solana/kit';
import {
combineCodec,
fixDecoderSize,
fixEncoderSize,
getBytesDecoder,
getBytesEncoder,
getStructDecoder,
getStructEncoder,
getU8Decoder,
getU8Encoder,
transformEncoder,
type Codec,
type Decoder,
type Encoder,
type ReadonlyUint8Array,
} from '@solana/kit';
export const ADMIN_SINGLETON_DISCRIMINATOR = new Uint8Array([179, 22, 254, 245, 204, 230, 222, 194]);
export function getAdminSingletonDiscriminatorBytes() {
return fixEncoderSize(getBytesEncoder(), 8).encode(ADMIN_SINGLETON_DISCRIMINATOR);
}
export type AdminSingleton = {
discriminator: ReadonlyUint8Array;
/** Guard admin */
admin: Address;
/** Pending guard admin */
pendingAdmin: Address;
/** PDA bump */
bump: number;
};
export type AdminSingletonArgs = {
/** Guard admin */
admin: Address;
/** Pending guard admin */
pendingAdmin: Address;
/** PDA bump */
bump: number;
};
export function getAdminSingletonEncoder(): Encoder<AdminSingletonArgs> {
return transformEncoder(
getStructEncoder([
['discriminator', fixEncoderSize(getBytesEncoder(), 8)],
['admin', getAddressEncoder()],
['pendingAdmin', getAddressEncoder()],
['bump', getU8Encoder()],
]),
(value) => ({ ...value, discriminator: ADMIN_SINGLETON_DISCRIMINATOR }),
);
}
export function getAdminSingletonDecoder(): Decoder<AdminSingleton> {
return getStructDecoder([
['discriminator', fixDecoderSize(getBytesDecoder(), 8)],
['admin', getAddressDecoder()],
['pendingAdmin', getAddressDecoder()],
['bump', getU8Decoder()],
]);
}
export function getAdminSingletonCodec(): Codec<AdminSingletonArgs, AdminSingleton> {
return combineCodec(getAdminSingletonEncoder(), getAdminSingletonDecoder());
}
export function decodeAdminSingleton<TAddress extends string = string>(
encodedAccount: EncodedAccount<TAddress>,
): Account<AdminSingleton, TAddress>;
export function decodeAdminSingleton<TAddress extends string = string>(
encodedAccount: MaybeEncodedAccount<TAddress>,
): MaybeAccount<AdminSingleton, TAddress>;
export function decodeAdminSingleton<TAddress extends string = string>(
encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,
): Account<AdminSingleton, TAddress> | MaybeAccount<AdminSingleton, TAddress> {
return decodeAccount(encodedAccount as MaybeEncodedAccount<TAddress>, getAdminSingletonDecoder());
}
export async function fetchAdminSingleton<TAddress extends string = string>(
rpc: Parameters<typeof fetchEncodedAccount>[0],
address: Address<TAddress>,
config?: FetchAccountConfig,
): Promise<Account<AdminSingleton, TAddress>> {
const maybeAccount = await fetchMaybeAdminSingleton(rpc, address, config);
assertAccountExists(maybeAccount);
return maybeAccount;
}
export async function fetchMaybeAdminSingleton<TAddress extends string = string>(
rpc: Parameters<typeof fetchEncodedAccount>[0],
address: Address<TAddress>,
config?: FetchAccountConfig,
): Promise<MaybeAccount<AdminSingleton, TAddress>> {
const maybeAccount = await fetchEncodedAccount(rpc, address, config);
return decodeAdminSingleton(maybeAccount);
}
export async function fetchAllAdminSingleton(
rpc: Parameters<typeof fetchEncodedAccounts>[0],
addresses: Array<Address>,
config?: FetchAccountsConfig,
): Promise<Account<AdminSingleton>[]> {
const maybeAccounts = await fetchAllMaybeAdminSingleton(rpc, addresses, config);
assertAccountsExist(maybeAccounts);
return maybeAccounts;
}
export async function fetchAllMaybeAdminSingleton(
rpc: Parameters<typeof fetchEncodedAccounts>[0],
addresses: Array<Address>,
config?: FetchAccountsConfig,
): Promise<MaybeAccount<AdminSingleton>[]> {
const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);
return maybeAccounts.map((maybeAccount) => decodeAdminSingleton(maybeAccount));
}
export function getAdminSingletonSize(): number {
return 73;
}