@kamino-finance/kliquidity-sdk
Version:
Typescript SDK for interacting with the Kamino Liquidity (kliquidity) protocol
39 lines (30 loc) • 3.13 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 { combineCodec, getDiscriminatedUnionDecoder, getDiscriminatedUnionEncoder, getI32Decoder, getI32Encoder, getStructDecoder, getStructEncoder, getTupleDecoder, getTupleEncoder, getUnitDecoder, getUnitEncoder, type Codec, type Decoder, type Encoder, type GetDiscriminatedUnionVariant, type GetDiscriminatedUnionVariantContent } from '@solana/kit';
import { getDexSpecificPriceDecoder, getDexSpecificPriceEncoder, type DexSpecificPrice, type DexSpecificPriceArgs } from '.';
export type RebalanceAction = { __kind: "NewPriceRange", fields: readonly [DexSpecificPrice, DexSpecificPrice]; } | { __kind: "NewTickRange", fields: readonly [number, number]; } | { __kind: "WithdrawAndFreeze" };
export type RebalanceActionArgs = { __kind: "NewPriceRange", fields: readonly [DexSpecificPriceArgs, DexSpecificPriceArgs]; } | { __kind: "NewTickRange", fields: readonly [number, number]; } | { __kind: "WithdrawAndFreeze" };
export function getRebalanceActionEncoder(): Encoder<RebalanceActionArgs> {
return getDiscriminatedUnionEncoder([['NewPriceRange', getStructEncoder([['fields', getTupleEncoder([getDexSpecificPriceEncoder(), getDexSpecificPriceEncoder()])]])], ['NewTickRange', getStructEncoder([['fields', getTupleEncoder([getI32Encoder(), getI32Encoder()])]])], ['WithdrawAndFreeze', getUnitEncoder()]]);
}
export function getRebalanceActionDecoder(): Decoder<RebalanceAction> {
return getDiscriminatedUnionDecoder([['NewPriceRange', getStructDecoder([['fields', getTupleDecoder([getDexSpecificPriceDecoder(), getDexSpecificPriceDecoder()])]])], ['NewTickRange', getStructDecoder([['fields', getTupleDecoder([getI32Decoder(), getI32Decoder()])]])], ['WithdrawAndFreeze', getUnitDecoder()]]);
}
export function getRebalanceActionCodec(): Codec<RebalanceActionArgs, RebalanceAction> {
return combineCodec(getRebalanceActionEncoder(), getRebalanceActionDecoder());
}
// Data Enum Helpers.
export function rebalanceAction(kind: 'NewPriceRange', data: GetDiscriminatedUnionVariantContent<RebalanceActionArgs, '__kind', 'NewPriceRange'>['fields']): GetDiscriminatedUnionVariant<RebalanceActionArgs, '__kind', 'NewPriceRange'>;
export function rebalanceAction(kind: 'NewTickRange', data: GetDiscriminatedUnionVariantContent<RebalanceActionArgs, '__kind', 'NewTickRange'>['fields']): GetDiscriminatedUnionVariant<RebalanceActionArgs, '__kind', 'NewTickRange'>;
export function rebalanceAction(kind: 'WithdrawAndFreeze'): GetDiscriminatedUnionVariant<RebalanceActionArgs, '__kind', 'WithdrawAndFreeze'>;
export function rebalanceAction<K extends RebalanceActionArgs['__kind'], Data>(kind: K, data?: Data) {
return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) };
}
export function isRebalanceAction<K extends RebalanceAction['__kind']>(kind: K, value: RebalanceAction): value is RebalanceAction & { __kind: K } {
return value.__kind === kind;
};