///
import { Slab } from "./slab";
import BN from "bn.js";
import { Account, AccountInfo, Commitment, PublicKey as PublicKeySolana } from "@solana/web3.js";
import { Connection, PublicKey } from "zeta-solana-web3";
import { Buffer } from "buffer";
import { ClockData } from "../types";
export declare const MARKET_STATE_LAYOUT_V3: any;
export declare class Market {
private _decoded;
private _baseSplTokenDecimals;
private _quoteSplTokenDecimals;
private _skipPreflight;
private _commitment;
private _programId;
private _openOrdersAccountsCache;
private _layoutOverride?;
private _feeDiscountKeysCache;
constructor(decoded: any, baseMintDecimals: number, quoteMintDecimals: number, options: MarketOptions, programId: PublicKey, layoutOverride?: any);
static load(connection: Connection, address: PublicKey, options: MarketOptions, programId: PublicKey, layoutOverride?: any): Promise;
static loadFromDecoded(decoded: any, options: MarketOptions, programId: PublicKey, layoutOverride?: any): Market;
get programId(): PublicKey;
get address(): PublicKey;
get publicKey(): PublicKey;
get baseMintAddress(): PublicKey;
get quoteMintAddress(): PublicKey;
get bidsAddress(): PublicKey;
get asksAddress(): PublicKey;
get requestQueueAddress(): PublicKey;
get eventQueueAddress(): PublicKey;
get baseVaultAddress(): PublicKey;
get quoteVaultAddress(): PublicKey;
get epochStartTs(): BN;
get epochLength(): BN;
get startEpochSeqNum(): BN;
get decoded(): any;
updateDecoded(connection: Connection): Promise;
loadBids(connection: Connection): Promise;
loadAsks(connection: Connection): Promise;
loadBidsAndAsks(connection: Connection): Promise;
loadBidsAndAsksFromData(clockInfo: ClockData, bidsInfo: any, asksInfo: any): any;
loadRequestQueue(connection: Connection): Promise;
loadEventQueue(connection: Connection): Promise;
loadEventQueueHeader(connection: Connection): Promise;
private get _baseSplTokenMultiplier();
private get _quoteSplTokenMultiplier();
priceLotsToNumber(price: BN): number;
priceNumberToLots(price: number): BN;
baseSplSizeToNumber(size: BN): number;
quoteSplSizeToNumber(size: BN): number;
baseSizeLotsToNumber(size: BN): number;
baseSizeNumberToLots(size: number): BN;
quoteSizeLotsToNumber(size: BN): number;
quoteSizeNumberToLots(size: number): BN;
get minOrderSize(): number;
get tickSize(): number;
}
export interface MarketOptions {
skipPreflight?: boolean;
commitment?: Commitment;
}
export interface OrderParams {
owner: T;
payer: PublicKey;
side: "buy" | "sell";
price: number;
size: number;
orderType?: "limit" | "ioc" | "postOnly";
clientId?: BN;
openOrdersAddressKey?: PublicKey;
openOrdersAccount?: Account;
feeDiscountPubkey?: PublicKey | null;
selfTradeBehavior?: "decrementTake" | "cancelProvide" | "abortTransaction" | undefined;
programId?: PublicKey;
}
export declare const _OPEN_ORDERS_LAYOUT_V2: any;
export declare class OpenOrders {
private _programId;
address: PublicKey;
market: PublicKey;
owner: PublicKey;
baseTokenFree: BN;
baseTokenTotal: BN;
quoteTokenFree: BN;
quoteTokenTotal: BN;
orders: BN[];
clientIds: BN[];
constructor(address: PublicKey, decoded: any, programId: PublicKey);
static load(connection: Connection, address: PublicKey, programId: PublicKey): Promise;
static fromAccountInfo(address: PublicKey, accountInfo: AccountInfo, programId: PublicKey): OpenOrders;
}
export declare const ORDERBOOK_LAYOUT: any;
export declare class Orderbook {
market: Market;
isBids: boolean;
slab: Slab;
constructor(market: Market, accountFlags: any, slab: Slab);
static get LAYOUT(): any;
static decode(market: Market, buffer: Buffer): Orderbook;
[Symbol.iterator](): Generator;
items(descending?: boolean): Generator;
}
export interface Order {
orderId: BN;
openOrdersAddress: PublicKeySolana;
openOrdersSlot: number;
price: number;
priceLots: BN;
size: number;
feeTier: number;
sizeLots: BN;
side: "buy" | "sell";
clientId?: BN;
tifOffset: number;
tifOffsetBN: BN;
}
export declare function getMintDecimals(connection: Connection, mint: PublicKey): Promise;
export declare function throwIfNull(value: T | null, message?: string): T;