import { AddressLookupTableAccount, PublicKey, TransactionInstruction, TransactionSignature } from "@solana/web3.js";
import { BN } from "@coral-xyz/anchor";
export declare const BASKETS_PROGRAM_ID: PublicKey;
export declare const BASKETS_PROGRAM_PDA: PublicKey;
export declare const BASKETS_LOOKUP_TABLE_1: PublicKey;
export declare const BASKETS_LOOKUP_TABLE_2: PublicKey;
export declare const TOKEN_LIST_ADDRESS: PublicKey;
export declare const TOKEN_STATS_ADDRESS: PublicKey;
export declare const DATABASE_ADDESS: PublicKey;
export declare const CURVE_DATA_ADDRESS: PublicKey;
export declare const CREATE_FEE_ACCOUNT: PublicKey;
export declare const BUY_FEE_ACCOUNT: PublicKey;
export declare const BUY_FEE_WALLET: PublicKey;
export declare const REBALANCE_FEE_WALLET: PublicKey;
export declare const REBALANCE_FEE_ACCOUNT: PublicKey;
export declare const SWAP_FEE_ACCOUNT: PublicKey;
export declare const PRISM_AGGREGATOR: PublicKey;
export declare const JUP_AGGREGATOR: PublicKey;
export declare const BEYOND_LST_BASKET: PublicKey;
export declare const SWB_PID: PublicKey;
export declare const NUM_OF_DAYS_IN_DATABASE = 460;
export declare const COMBINED_TOKENS_IN_A_BASKET = 15;
export declare const NUM_OF_TOKENS_IN_BASKET = 20;
export declare const NUM_OF_TOKENS_IN_ASSET_POOL = 200;
export declare const WEIGHT_MULTIPLIER = 10000;
export declare const EXPO_DIVIDER = 100;
export declare const BPS_DIVIDER = 10000;
export declare const ADDITIONAL_FEE = 15000;
export declare const ADDITIONAL_UNITS = 1000000;
export declare class BasketError extends Error {
    txId: TransactionSignature;
    constructor(message: string, txId?: TransactionSignature);
}
export type BasketFilter = "manager" | "host";
export type FilterOption = {
    filterType: BasketFilter;
    filterPubkey: PublicKey;
};
export declare enum FilterType {
    Fixed = 0,
    MarketCap = 1,
    Volume = 2,
    Performance = 3
}
export declare enum WeightType {
    Fixed = 0,
    MarketCap = 1,
    Volume = 2,
    Performance = 3
}
export declare enum FilterTime {
    Day = 0,
    Week = 1,
    Month = 2,
    Quarter = 3,
    HalfYear = 4,
    Year = 5
}
export declare enum WeightTime {
    Day = 0,
    Week = 1,
    Month = 2,
    Quarter = 3,
    HalfYear = 4,
    Year = 5
}
export declare enum SortBy {
    DescendingOrder = 0,
    AscendingOrder = 1
}
export type Rule = {
    filterBy: FilterType;
    filterDays: FilterTime;
    sortBy: SortBy;
    totalWeight: number;
    fixedAsset: number;
    numAssets: number;
    weightBy: WeightType;
    weightDays: WeightTime;
    weightExpo: number;
    excludeAssets: number[];
    ruleAssets?: number[];
};
export type CreateBasketParams = {
    name: string;
    symbol: string;
    uri: string;
    hostPlatform: PublicKey;
    hostPlatformFee: number;
    manager: PublicKey;
    managerFee: number;
    activelyManaged: number;
    assetPool: number[];
    refilterInterval: number;
    reweightInterval: number;
    rebalanceInterval: number;
    rebalanceThreshold: number;
    rebalanceSlippage: number;
    lpOffsetThreshold: number;
    disableRebalance: boolean;
    disableLp: boolean;
    rules: Rule[];
};
export type SimpleCreateParams = {
    name: string;
    symbol: string;
    uri: string;
    hostPlatform: PublicKey;
    hostPlatformFee: number;
    manager: PublicKey;
    managerFee: number;
    activelyManaged: number;
    rebalanceInterval: number;
    rebalanceThreshold: number;
    rebalanceSlippage: number;
    lpOffsetThreshold: number;
    disableRebalance: boolean;
    disableLp: boolean;
    composition: {
        token: PublicKey;
        weight: number;
    }[];
    feeDelegate?: PublicKey;
};
export type SimpleEditParams = {
    managerFee: number;
    rebalanceInterval: number;
    rebalanceThreshold: number;
    rebalanceSlippage: number;
    lpOffsetThreshold: number;
    disableRebalance: boolean;
    disableLp: boolean;
    composition: {
        token: PublicKey;
        weight: number;
    }[];
    feeDelegate?: PublicKey;
};
export type BasketStateChainData = {
    version: BN;
    manager: PublicKey;
    fundToken: PublicKey;
    managerFee: BN;
    supplyOutstanding: BN;
    activelyManaged: BN;
    activeBuyStates: BN;
    sellState: BN;
    rebalanceSellState: BN;
    hostPubkey: PublicKey;
    hostFee: BN;
    numOfTokens: BN;
    currentCompToken: BN[];
    currentCompAmount: BN[];
    lastRebalanceTime: BN[];
    targetWeight: BN[];
    weightSum: BN;
    currentWeight: BN[];
    fundWorth: BN;
    lastUpdateTime: BN;
    refilterInterval: BN;
    reweightInterval: BN;
    rebalanceInterval: BN;
    rebalanceThreshold: BN;
    rebalanceSlippage: BN;
    lpOffsetThreshold: BN;
    lastRefilterTime: BN;
    lastReweightTime: BN;
    rulesReady: BN;
    assetPool: BN[];
    numOfRules: BN;
    rules: {
        filterBy: BN;
        filterDays: BN;
        sortBy: BN;
        totalWeight: BN;
        fixedAsset: BN;
        numAssets: BN;
        weightBy: BN;
        weightDays: BN;
        weightExpo: BN;
        excludeNum: BN;
        excludeAssets: BN[];
        ruleAssets: BN[];
    }[];
    numRuleTokens: BN;
    ruleTokens: BN[];
    ruleTokenWeights: BN[];
    messageDigestFive: number[];
    disableRebalance: BN;
    disableLp: BN;
    allowMultiAssetContribution: number;
    symbolLength: number;
    symbol: number[];
    nameLength: number;
    name: number[];
    uriLength: number;
    uri: number[];
    feeDelegate: PublicKey;
    extraBytes: number[];
};
export type BuyStateChainData = {
    fund: PublicKey;
    buyer: PublicKey;
    fundManager: PublicKey;
    hostPlatform: PublicKey;
    buyerFundTokenAccount: PublicKey;
    usdcContributed: BN;
    usdcLeft: BN;
    token: BN[];
    amountToSpend: BN[];
    amountBought: BN[];
    creationTimestamp: BN;
    contributedValue: BN;
};
export type TokenSettings = {
    id: number;
    symbol: string;
    name: string;
    tokenMint: string;
    decimals: number;
    coingeckoId: string;
    pdaTokenAccount: string;
    oracleType: string;
    oracleAccount: string;
    oracleIndex: number;
    oracleConfidencePct: number;
    fixedConfidenceBps: number;
    tokenSwapFeeBeforeTwBps: number;
    tokenSwapFeeAfterTwBps: number;
    isLive: boolean;
    lpOn: boolean;
    useCurveData: boolean;
    additionalData: number[];
};
export type JupSwapData = {
    type: String;
    programId: PublicKey;
    accounts: {
        pubkey: PublicKey;
        isSigner: boolean;
        isWritable: boolean;
    }[];
    firstIxEnd: number;
    firstIxAccounts: number;
    dataLength: number;
    data: Buffer;
    fromTokenId: number;
    midTokenPda: string;
    toTokenId: number;
    fromAmount: number;
    toAmount: number;
    slippageBps: number;
    feeBps: number;
    lookupTableAccounts: AddressLookupTableAccount[];
};
export declare enum Side {
    To = 0,
    From = 1
}
export type RebalanceInfo = {
    tokenId: number;
    tokenAccountFrom: string;
    mintFrom: string;
    oracleFrom: string;
    tokenAccountTo: string;
    mintTo: string;
    oracleTo: string;
    amountFrom: number;
    decimals: number;
    volume: number;
    side: Side;
};
export type TransactionToSend = {
    payerKey: PublicKey;
    instructions: TransactionInstruction[];
    lookupTables: AddressLookupTableAccount[];
};
