import { BN } from "@coral-xyz/anchor"; import { AccountMeta, PublicKey, TransactionInstruction, TransactionSignature, VersionedTransaction } from "@solana/web3.js"; import { BaseClient, BaseTxBuilder, ProtocolPolicyClient, ProtocolPolicyTxBuilder, TxOptions } from "./base"; import { MarginfiPolicy } from "../deser/integrationPolicies"; export type MarginfiBaseAccounts = { group: PublicKey; marginfiAccount: PublicKey; bank: PublicKey; liquidityVault: PublicKey; tokenProgram?: PublicKey; }; export type MarginfiDepositAccounts = MarginfiBaseAccounts & { sourceTokenAccount: PublicKey; }; export type MarginfiWithdrawAccounts = MarginfiBaseAccounts & { destinationTokenAccount: PublicKey; bankLiquidityVaultAuthority: PublicKey; }; export type KaminoCollateralAccounts = { group: PublicKey; marginfiAccount: PublicKey; bank: PublicKey; tokenAccount: PublicKey; liquidityVaultAuthority: PublicKey; liquidityVault: PublicKey; integrationAcc1: PublicKey; integrationAcc2: PublicKey; lendingMarket: PublicKey; lendingMarketAuthority: PublicKey; mint: PublicKey; reserveLiquiditySupply: PublicKey; reserveCollateralMint: PublicKey; reserveDestinationDepositCollateral?: PublicKey; reserveSourceCollateral?: PublicKey; obligationFarmUserState?: PublicKey | null; reserveFarmState?: PublicKey | null; kaminoProgram: PublicKey; farmsProgram: PublicKey; collateralTokenProgram?: PublicKey; liquidityTokenProgram?: PublicKey; }; export type MarginfiBank = { address: PublicKey; group: PublicKey; mint: PublicKey; liquidityVault: PublicKey; liquidityVaultAuthority: PublicKey; integrationAcc1: PublicKey; integrationAcc2: PublicKey; oracleKeys: PublicKey[]; }; declare class TxBuilder extends BaseTxBuilder implements ProtocolPolicyTxBuilder { private commonAccounts; initializeAccountPdaIx(marginfiGroup: PublicKey, marginfiAccount: PublicKey, accountIndex: number, thirdPartyId?: number | null, signer?: PublicKey): Promise; closeAccountIx(marginfiAccount: PublicKey, signer?: PublicKey): Promise; depositIx(accounts: MarginfiDepositAccounts, amount: BN, depositUpToLimit?: boolean | null, signer?: PublicKey): Promise; withdrawIx(accounts: MarginfiWithdrawAccounts, amount: BN, withdrawAll?: boolean | null, signer?: PublicKey): Promise; borrowIx(accounts: MarginfiWithdrawAccounts, amount: BN, signer?: PublicKey, remainingAccounts?: AccountMeta[]): Promise; repayIx(accounts: MarginfiDepositAccounts, amount: BN, repayAll?: boolean | null, signer?: PublicKey): Promise; kaminoDepositIx(accounts: KaminoCollateralAccounts, amount: BN, signer?: PublicKey): Promise; kaminoWithdrawIx(accounts: KaminoCollateralAccounts, amount: BN, withdrawAll?: boolean | null, signer?: PublicKey, remainingAccounts?: AccountMeta[]): Promise; setPolicyIx(policy: MarginfiPolicy, signer?: PublicKey): Promise; setPolicyTx(policy: MarginfiPolicy, txOptions?: TxOptions): Promise; clearPolicyIx(signer?: PublicKey): Promise; clearPolicyTx(txOptions?: TxOptions): Promise; } export declare class MarginfiClient implements ProtocolPolicyClient { readonly base: BaseClient; readonly txBuilder: TxBuilder; constructor(base: BaseClient); fetchPolicy(): Promise; setPolicy(policy: MarginfiPolicy, txOptions?: TxOptions): Promise; clearPolicy(txOptions?: TxOptions): Promise; getAccountPda(group: PublicKey, accountIndex?: number, thirdPartyId?: number | null, authority?: PublicKey): PublicKey; getLiquidityVaultAuthority(bank: PublicKey): PublicKey; getKaminoMarketAuthority(market: PublicKey): PublicKey; getKaminoFarmUserState(farmUser: PublicKey, farm: PublicKey): PublicKey; fetchBank(bank: PublicKey | string): Promise; getHealthRemainingAccounts(marginfiAccount: PublicKey | string, targetBank?: PublicKey | string): Promise; getHealthBanks(marginfiAccount: PublicKey | string, targetBank?: PublicKey | string): Promise; buildHealthRemainingAccounts(banks: MarginfiBank[]): AccountMeta[]; pulseHealthIx(marginfiAccount: PublicKey | string): Promise<{ ixs: TransactionInstruction[]; banks: MarginfiBank[]; }>; getBankRefreshInstructions(banks: MarginfiBank[]): Promise; resolveKaminoCollateralAccounts(bank: PublicKey | string, marginfiAccount: PublicKey | string): Promise; private resolveKaminoReserveScopePrices; resolveBorrowAccounts(bank: PublicKey | string, marginfiAccount: PublicKey | string): Promise; resolveRepayAccounts(bank: PublicKey | string, marginfiAccount: PublicKey | string): Promise; initializeAccountPda(group: PublicKey | string, marginfiAccount: PublicKey | string, accountIndex: number, thirdPartyId?: number | null, txOptions?: TxOptions): Promise; closeAccount(marginfiAccount: PublicKey | string, txOptions?: TxOptions): Promise; deposit(accounts: MarginfiDepositAccounts, amount: BN | number | string, depositUpToLimit?: boolean | null, txOptions?: TxOptions): Promise; withdraw(accounts: MarginfiWithdrawAccounts, amount: BN | number | string, withdrawAll?: boolean | null, txOptions?: TxOptions): Promise; borrow(accounts: MarginfiWithdrawAccounts, amount: BN | number | string, txOptions?: TxOptions): Promise; repay(accounts: MarginfiDepositAccounts, amount: BN | number | string, repayAll?: boolean | null, txOptions?: TxOptions): Promise; kaminoDeposit(accounts: KaminoCollateralAccounts, amount: BN | number | string, txOptions?: TxOptions): Promise; kaminoWithdraw(accounts: KaminoCollateralAccounts, amount: BN | number | string, withdrawAll?: boolean | null, txOptions?: TxOptions): Promise; } export {};