import { Commitment, PublicKey } from '@solana/web3.js';
export type RpcOptions = {
    skipPreflight?: boolean;
    microLamports?: number;
    computeBudget?: number;
    commitment?: Commitment;
};
export type Pool = {
    address: string;
    id: number;
    question: string;
    authority: string;
    isFast: boolean;
    isFastMarketActive: boolean;
};
export type Market = {
    address: string;
    bump: number;
    authority: string;
    marketId: string;
    hypePrice: string;
    flopPrice: string;
    hypeLiquidity: string;
    flopLiquidity: string;
    hypeShares: string;
    flopShares: string;
    volume: string;
    mint: string;
    updateTs: string;
    resolvedTs: string;
    nextOrderId: string;
    feeBps: number;
    isAllowedToPayout: boolean;
    payoutFeeAvailable: string;
    payoutFeeClaimed: string;
    marketFeeAvailable: string;
    marketFeeClaimed: string;
    marketStart: string;
    marketEnd: string;
    question: string;
    winningDirection: WinningDirection;
    marketLiquidityAtStart: string;
    payoutFee: number;
    customer: string;
    poolId: number;
    feeRecipient: string;
};
export type UserTrade = {
    user: string;
    totalDeposits: string;
    totalWithdraws: string;
    orders: Order[];
    nonce: string;
    poseidon: string;
    isSubUser: boolean;
};
export type Order = {
    ts: string;
    orderId: string;
    marketId: string;
    orderStatus: OrderStatus;
    price: string;
    totalShares: string;
    filledShares: string;
    orderType: OrderType;
    orderDirection: OrderDirection;
    orderSide: OrderSide;
    userNonce: string;
    authority: string;
    createdAt: string;
    isTrdPayout: boolean;
};
export type BookOrder = {
    id: string;
    price: string;
    totalShares: string;
    filledShares: string;
    authority: string;
    orderDirection: OrderDirection;
    orderSide: OrderSide;
    userNonce: string;
    linkedBookOrderId: string;
};
export declare enum WinningDirection {
    HYPE = "Hype",
    DRAW = "Draw",
    FLOP = "Flop",
    NONE = "None"
}
export declare enum OrderDirection {
    HYPE = "hype",
    FLOP = "flop"
}
export declare enum OrderStatus {
    INIT = "init",
    OPEN = "open",
    CLOSED = "closed",
    CLAIMED = "claimed",
    LIQUIDATED = "liquidated",
    WAITING = "waiting"
}
export declare enum OrderType {
    LIMIT = "limit",
    MARKET = "market"
}
export declare enum OrderSide {
    BID = "bid",
    ASK = "ask"
}
export type OrderDirectionEncoded = {
    hype: {};
} | {
    flop: {};
};
export type OrderTypeEncoded = {
    limit: {};
} | {
    market: {};
};
export type OrderSideEncoded = {
    bid: {};
} | {
    ask: {};
};
export type OrderStatusEncoded = {
    init: {};
} | {
    open: {};
} | {
    closed: {};
} | {
    claimed: {};
} | {
    liquidated: {};
} | {
    waiting: {};
};
export type WinningDirectionEncoded = {
    hype: {};
} | {
    flop: {};
} | {
    draw: {};
} | {
    none: {};
};
export type PlaceBidOrderArgs = {
    marketId: number;
    orders: {
        amount: number;
        price: number;
        orderDirection: OrderDirectionEncoded;
    }[];
    isTrdPayout: boolean;
};
export type PlaceAskOrderArgs = {
    marketId: number;
    orders: {
        amount: number;
        price: number;
        bidOrderId: number;
        userNonce: number;
    }[];
};
export type InitializeMarketArgs = {
    marketId: number;
    startTime: number;
    endTime: number;
    question: string;
    feeBps: number;
    customer: PublicKey | null;
};
export type CreateCustomerArgs = {
    id: number;
    name: string;
    authority: PublicKey;
    feeRecipient: PublicKey;
};
export type OpenOrderArgs = {
    marketId: number;
    amount: number;
    token: string;
    direction: OrderDirectionEncoded;
    mint: PublicKey;
};
export type CreateMarketArgs = {
    markets: {
        marketId: number;
        startTime: number;
        endTime: number;
        question: string;
        feeBps: number;
        payoutFee: number;
    }[];
    customer: PublicKey;
    poolId?: number;
};
export type CreatePoolArgs = {
    poolId: number;
    question?: string;
    startTime: number;
    endTime: number;
    feeBps: number;
    payoutFee: number;
    customer: PublicKey;
    markets: {
        marketId: number;
        question: string;
    }[];
    isFast?: boolean;
};
export type CancelBidOrderArgs = {
    marketId: number;
    orders: {
        orderId: number;
        userNonce: number;
        orderDirection: OrderDirectionEncoded;
    }[];
};
export type CancelAskOrderArgs = {
    marketId: number;
    orders: {
        orderId: number;
        userNonce: number;
        orderDirection: OrderDirectionEncoded;
    }[];
};
export type MarketBidOrderArgs = {
    marketId: number;
    amount: number;
    orderDirection: OrderDirectionEncoded;
    feeBps: number;
    isTrdPayout: boolean;
};
export type MarketAskOrderArgs = {
    marketId: number;
    orders: {
        shares: number;
        bidOrderId: number;
        userNonce: number;
    }[];
    orderDirection: OrderDirectionEncoded;
    isTrdPayout: boolean;
    feeBps: number;
};
export type CollectMarketFeeArgs = {
    markets: {
        marketAddress: PublicKey;
        customerId: number;
        customerFeeRecipient: PublicKey;
    }[];
};
export type Customer = {
    id: number;
    authority: string;
    name: string;
    feeRecipient: string;
    feeBps: number;
    isVerified: boolean;
    address: string;
};
export type StakeVault = {
    name: string;
    collection: string;
    authority: string;
    slots: number;
    amount: number;
    isLocked: boolean;
    tokenMint: string;
    amountPaid: number;
    nftStaked: number;
    tokenDecimals: number;
    tokenStaked: number;
    week: number;
    initTs: number;
    endTs: number;
};
export type Stake = {
    authority: string;
    initTs: number;
    checkedTs: number;
    claimed: number;
    available: number;
    amount: number;
};
export type Unstake = {
    address: string;
    authority: string;
    amount: number;
    withdrawTs: number;
};
