import { BN } from "@coral-xyz/anchor"; import { Commitment, Keypair, PublicKey, TransactionInstruction, TransactionSignature } from "@solana/web3.js"; import { BaseClient, type ProtocolPolicyClient, type TxOptions } from "../base"; import { LoopscaleLendingPolicy } from "../../deser/integrationPolicies"; import { LoopscaleLoan, LoopscaleMarketInformation, LoopscaleStrategy } from "../../deser"; import { CloseStrategyAccounts, CreateStrategyParams, DepositStrategyAccounts, LoopscaleApiCollateralTermUpdate, LoopscaleApiUpdateStrategyParams, LoopscaleCoreClient, LoopscaleLendTxBuilder, LoopscaleMappedTransaction, LoopscaleMultiCollateralTermsUpdateParams, LoopscaleSellLedgerTerms, LoopscaleStrategyWithMarket, PriceStrategiesAccounts, SellLedgerAccounts, SellLedgerParams, WithdrawStrategyAccounts } from "./core"; export type CreateStrategyResult = { nonce: PublicKey; strategy: PublicKey; signature: TransactionSignature; signatures: TransactionSignature[]; }; export type PriceStrategiesParams = { commitment?: Commitment; solUsdOracle?: PublicKey; baseAssetOracle?: PublicKey; }; export declare class LoopscaleLendClient implements ProtocolPolicyClient { private readonly core; readonly txBuilder: LoopscaleLendTxBuilder; constructor(core: LoopscaleCoreClient); get base(): BaseClient; get programId(): PublicKey; get integrationAuthorityPda(): PublicKey; getEventAuthorityPda(): PublicKey; getStrategyPda(nonce: PublicKey): PublicKey; getStrategyTokenAta(strategy: PublicKey, mint: PublicKey, tokenProgram?: PublicKey): PublicKey; fetchPolicy(): Promise; setPolicy(policy: LoopscaleLendingPolicy, txOptions?: TxOptions): Promise; clearPolicy(txOptions?: TxOptions): Promise; fetchMarketInformation(marketInformation: PublicKey): Promise; fetchStrategy(strategy: PublicKey): Promise; fetchOwnedStrategy(strategy: PublicKey, lender?: PublicKey): Promise; fetchRegisteredStrategies(commitment?: Commitment): Promise; fetchStrategyMarket(strategy: PublicKey | LoopscaleStrategy): Promise; fetchOwnedStrategyWithMarket(strategy: PublicKey, lender?: PublicKey): Promise; assertStrategyClosable(strategy: LoopscaleStrategy): void; resolveSellLedgerMarketAccounts(params: { loan: PublicKey | LoopscaleLoan; ledgerIndex: number; newStrategy: PublicKey | LoopscaleStrategy; }): Promise; buildApiSellLedgerIxs(params: { loan: PublicKey; oldStrategy: PublicKey; newStrategy: PublicKey; ledgerIndex: number; expectedSalePrice: BN; assetIndexGuidance: number[]; }): Promise; buildApiDepositStrategyIxs(params: { strategy: PublicKey; amount: BN; }): Promise; buildApiWithdrawStrategyIxs(params: { strategy: PublicKey; principalMint?: PublicKey; amount: BN; withdrawAll: boolean; }): Promise; buildApiCloseStrategyIxs(params: { strategy: PublicKey; }): Promise; buildApiUpdateStrategyTxs(params: { strategy: PublicKey; collateralTerms?: LoopscaleApiCollateralTermUpdate; updateParams?: LoopscaleApiUpdateStrategyParams; }): Promise; buildApiCreateStrategyTxs(params: CreateStrategyParams & { amount: BN; collateralTerms: LoopscaleMultiCollateralTermsUpdateParams[]; }, accounts: { marketInformation: PublicKey; principalMint: PublicKey; nonce: Keypair; }): Promise<{ nonce: Keypair; strategy: PublicKey; txs: LoopscaleMappedTransaction[]; }>; private replaceApiCreateStrategyAccounts; /** * Creates a strategy account using local ix builder * * @param params * @param accounts * @param txOptions * @returns */ createStrategy(params: CreateStrategyParams, accounts: { marketInformation: PublicKey; principalMint: PublicKey; nonce?: Keypair; }, txOptions?: TxOptions): Promise; /** * Creates a strategy account and deposits initial principal using API * * @param params * @param accounts * @param txOptions * @returns */ createAndDepositStrategy(params: CreateStrategyParams & { amount: BN; collateralTerms: LoopscaleMultiCollateralTermsUpdateParams[]; }, accounts: { marketInformation: PublicKey; principalMint: PublicKey; nonce?: Keypair; }, txOptions?: TxOptions): Promise; depositStrategy(amount: BN, accounts: DepositStrategyAccounts, txOptions?: TxOptions): Promise; updateStrategy(params: { strategy: PublicKey; collateralTerms?: LoopscaleApiCollateralTermUpdate; updateParams?: LoopscaleApiUpdateStrategyParams; }, txOptions?: TxOptions): Promise; withdrawStrategy(amount: BN, withdrawAll: boolean, accounts: WithdrawStrategyAccounts, txOptions?: TxOptions): Promise; closeStrategy(accounts: CloseStrategyAccounts, txOptions?: TxOptions): Promise; sellLedger(params: SellLedgerParams, accounts: SellLedgerAccounts, txOptions?: TxOptions): Promise; priceStrategiesIx(params?: PriceStrategiesParams): Promise; priceStrategies(params?: PriceStrategiesParams, txOptions?: TxOptions): Promise; getPriceStrategiesAccounts(commitment?: Commitment): Promise; }