import { Address, Option } from '@solana/kit'; import { KaminoMarket, KaminoObligation } from '../classes'; export type ObligationType = VanillaObligation | MultiplyObligation | LendingObligation | LeverageObligation | MultiplyObligationFixedRate | LendingObligationFixedRate | LeverageObligationFixedRate; export declare enum ObligationTypeTag { Vanilla = 0, Multiply = 1, Lending = 2, Leverage = 3, MultiplyFixedRate = 4, LendingFixedRate = 5, LeverageFixedRate = 6 } export type InitObligationArgsModel = { tag: number; id: number; seed1: Address; seed2: Address; }; export declare class VanillaObligation { readonly programId: Address; readonly id: number; static tag: number; constructor(programId: Address, id?: number); toArgs(): InitObligationArgsModel; toPda(market: Address, user: Address): Promise
; } export declare class MultiplyObligation { readonly collToken: Address; readonly debtToken: Address; readonly programId: Address; readonly id: number; static tag: number; constructor(collToken: Address, debtToken: Address, programId: Address, id?: number); toArgs(): InitObligationArgsModel; toPda(market: Address, user: Address): Promise
; } export declare class MultiplyObligationFixedRate { readonly collReserveAddress: Address; readonly debtReserveAddress: Address; readonly programId: Address; readonly id: number; static tag: number; constructor(collReserveAddress: Address, debtReserveAddress: Address, programId: Address, id?: number); toArgs(): InitObligationArgsModel; toPda(market: Address, user: Address): Promise
; } export declare class LeverageObligation { readonly collToken: Address; readonly debtToken: Address; readonly programId: Address; readonly id: number; static tag: number; constructor(collToken: Address, debtToken: Address, programId: Address, id?: number); toArgs(): InitObligationArgsModel; toPda(market: Address, user: Address): Promise
; } export declare class LeverageObligationFixedRate { readonly collReserveAddress: Address; readonly debtReserveAddress: Address; readonly programId: Address; readonly id: number; static tag: number; constructor(collReserveAddress: Address, debtReserveAddress: Address, programId: Address, id?: number); toArgs(): InitObligationArgsModel; toPda(market: Address, user: Address): Promise
; } export declare class LendingObligation { readonly token: Address; readonly programId: Address; readonly id: number; static tag: number; constructor(token: Address, programId: Address, id?: number); toArgs(): InitObligationArgsModel; toPda(market: Address, user: Address): Promise
; } export declare class LendingObligationFixedRate { readonly reserveAddress: Address; readonly programId: Address; readonly id: number; static tag: number; constructor(reserveAddress: Address, programId: Address, id?: number); toArgs(): InitObligationArgsModel; toPda(market: Address, user: Address): Promise
; } export declare function getObligationPdaWithArgs(market: Address, user: Address, args: InitObligationArgsModel, programId: Address): Promise
; /** * Resolves the {@link ObligationType} subclass for the given tag. * * **Reserve-addresses only** (a single mint can map to a float-rate reserve plus multiple * fixed-rate reserves — mint alone is ambiguous). Variable-rate tags (1/2/3) derive their * mint seeds from the supplied reserve address via {@link KaminoMarket.getExistingReserveByAddress}; * fixed-rate tags (4/5/6) use the reserve address directly as the seed. * * @param reserveAddress1 deposit/collateral reserve. Required for every non-Vanilla tag. * @param reserveAddress2 borrow/debt reserve. Required for Multiply/Leverage (variable and fixed-rate). */ export declare function getObligationType(kaminoMarket: KaminoMarket, obligationTag: ObligationTypeTag, reserveAddress1?: Option
, reserveAddress2?: Option
): ObligationType; export declare function getObligationTypeFromObligation(kaminoMarket: KaminoMarket, obligation: KaminoObligation): ObligationType; //# sourceMappingURL=ObligationType.d.ts.map