import { PublicKey } from '@solana/web3.js';
import { KaminoMarket, KaminoObligation } from '../classes';
export type ObligationType = VanillaObligation | MultiplyObligation | LendingObligation | LeverageObligation;
export declare enum ObligationTypeTag {
    Vanilla = 0,
    Multiply = 1,
    Lending = 2,
    Leverage = 3
}
export type InitObligationArgsModel = {
    tag: number;
    id: number;
    seed1: PublicKey;
    seed2: PublicKey;
};
export declare class VanillaObligation {
    readonly programId: PublicKey;
    readonly id: number;
    static tag: number;
    constructor(programId: PublicKey, id?: number);
    toArgs(): InitObligationArgsModel;
    toPda(market: PublicKey, user: PublicKey): PublicKey;
}
export declare class MultiplyObligation {
    readonly collToken: PublicKey;
    readonly debtToken: PublicKey;
    readonly programId: PublicKey;
    readonly id: number;
    static tag: number;
    constructor(collToken: PublicKey, debtToken: PublicKey, programId: PublicKey, id?: number);
    toArgs(): InitObligationArgsModel;
    toPda(market: PublicKey, user: PublicKey): PublicKey;
}
export declare class LeverageObligation {
    readonly collToken: PublicKey;
    readonly debtToken: PublicKey;
    readonly programId: PublicKey;
    readonly id: number;
    static tag: number;
    constructor(collToken: PublicKey, debtToken: PublicKey, programId: PublicKey, id?: number);
    toArgs(): InitObligationArgsModel;
    toPda(market: PublicKey, user: PublicKey): PublicKey;
}
export declare class LendingObligation {
    readonly token: PublicKey;
    readonly programId: PublicKey;
    readonly id: number;
    static tag: number;
    constructor(token: PublicKey, programId: PublicKey, id?: number);
    toArgs(): InitObligationArgsModel;
    toPda(market: PublicKey, user: PublicKey): PublicKey;
}
export declare function getObligationPdaWithArgs(market: PublicKey, user: PublicKey, args: InitObligationArgsModel, programId: PublicKey): PublicKey;
export declare function getObligationType(kaminoMarket: KaminoMarket, obligationTag: ObligationTypeTag, mintAddress1?: PublicKey, mintAddress2?: PublicKey): ObligationType;
export declare function getObligationTypeFromObligation(kaminoMarket: KaminoMarket, obligation: KaminoObligation): ObligationType;
//# sourceMappingURL=ObligationType.d.ts.map