import { Program, Wallet } from "@coral-xyz/anchor";
import { AccountInfo, AddressLookupTableAccount, Connection, PublicKey, TransactionInstruction, TransactionSignature } from "@solana/web3.js";
import { BasketsIDL } from "./basketsIDL";
import { BasketStateChainData, RebalanceInfo, TokenSettings, JupSwapData, SimpleEditParams, SimpleCreateParams, TransactionToSend } from "./config";
export declare class Basket {
    ownAddress: PublicKey;
    data: BasketStateChainData;
    constructor(ownAddress: PublicKey, basketData: BasketStateChainData);
    static loadFromRawData(program: Program<BasketsIDL>, rawData: {
        pubkey: PublicKey;
        account: AccountInfo<Buffer>;
    }): Basket;
    static loadFromPubkey(program: Program<BasketsIDL>, basketState: PublicKey): Promise<Basket>;
    static getCompositionAndPrice(connection: Connection, pubkey: PublicKey, getPrice?: boolean): Promise<any>;
    static create(program: Program<BasketsIDL>, connection: Connection, wallet: Wallet, tokenList: TokenSettings[], lookups: AddressLookupTableAccount[], basketParams: SimpleCreateParams, lamports?: number): Promise<Basket>;
    update(program: Program<BasketsIDL>): Promise<void>;
    editManager(program: Program<BasketsIDL>, connection: Connection, wallet: Wallet, newManager: PublicKey, lamports?: number): Promise<TransactionSignature>;
    edit(program: Program<BasketsIDL>, connection: Connection, wallet: Wallet, tokenList: TokenSettings[], lookups: AddressLookupTableAccount[], basketParams: SimpleEditParams, lamports?: number): Promise<TransactionSignature>;
    setMetaData(program: Program<BasketsIDL>, wallet: Wallet, symbol: string, name: string, uri: string, lamports?: number): Promise<TransactionSignature>;
    close(program: Program<BasketsIDL>, wallet: Wallet, lamports?: number): Promise<TransactionSignature>;
    getSwbFeeds(tokenList: TokenSettings[]): PublicKey[];
    rebalanceFromUsdcTransactionData(program: Program<BasketsIDL>, wallet: Wallet, pda: PublicKey, basketState: PublicKey, tokenList: TokenSettings[], rebalanceFeeAccount: PublicKey, jupSwapData: JupSwapData, lamports?: number): Promise<{
        payerKey: PublicKey;
        instructions: TransactionInstruction[];
        lookupTables: AddressLookupTableAccount[];
    }>;
    rebalanceToUsdcTransactionData(program: Program<BasketsIDL>, wallet: Wallet, pda: PublicKey, basketState: PublicKey, tokenList: TokenSettings[], rebalanceFeeAccount: PublicKey, jupSwapData: JupSwapData, lamports?: number): Promise<TransactionToSend>;
    getRebalanceInfo(program: Program<BasketsIDL>, tokenList: TokenSettings[], oraclePriceData: number[], timestamp: number, forceRebalance?: boolean): RebalanceInfo[];
    rebalanceFrom(program: Program<BasketsIDL>, wallet: Wallet, tokenList: TokenSettings[], jupSwapDatas: JupSwapData[], rebalanceInfos: RebalanceInfo[], lookups: AddressLookupTableAccount[], lamports?: number): Promise<TransactionToSend[]>;
    rebalanceTo(program: Program<BasketsIDL>, wallet: Wallet, tokenList: TokenSettings[], jupSwapDatas: JupSwapData[], rebalanceInfos: RebalanceInfo[], lookups: AddressLookupTableAccount[], lamports?: number): Promise<{
        payerKey: PublicKey;
        instructions: TransactionInstruction[];
        lookupTables: AddressLookupTableAccount[];
    }[]>;
    computeOutputAmountWithSingleToken(oraclePrices: number[], tokenList: TokenSettings[], withdrawToken: TokenSettings, burnAmount: number): Promise<number>;
    sell(program: Program<BasketsIDL>, wallet: Wallet, amount: number, rebalance: number, lamports?: number): Promise<Basket>;
    claimTokens(program: Program<BasketsIDL>, wallet: Wallet, tokenList: TokenSettings[], lamports?: number): Promise<TransactionSignature[]>;
    removeDust(program: Program<BasketsIDL>, wallet: Wallet, tokenList: TokenSettings[], oraclePriceData: number[], lamports: number, updateOracles: boolean): Promise<TransactionSignature[]>;
    liquidityProvision(program: Program<BasketsIDL>, wallet: Wallet, tokenList: TokenSettings[], fromToken: number, toToken: number, fromAmount: number, lamports?: number): Promise<TransactionSignature[]>;
}
