/// <reference types="bn.js" />
import { MarketTypeStr, Order, ProtectedMakerParams } from '../types';
import { DLOBNode, DLOBNodeMap } from './DLOBNode';
import { BN } from '../isomorphic/anchor';
export type SortDirection = 'asc' | 'desc';
export declare function getOrderSignature(orderId: number, userAccount: string): string;
export interface DLOBNodeGenerator {
    getGenerator(): Generator<DLOBNode>;
}
export declare class NodeList<NodeType extends keyof DLOBNodeMap> implements DLOBNodeGenerator {
    private nodeType;
    private sortDirection;
    head?: DLOBNodeMap[NodeType];
    length: number;
    nodeMap: Map<string, DLOBNodeMap[NodeType]>;
    constructor(nodeType: NodeType, sortDirection: SortDirection);
    clear(): void;
    insert(order: Order, marketType: MarketTypeStr, userAccount: string, isProtectedMaker: boolean, protectedMakerParamsMap?: ProtectedMakerParams, baseAssetAmount?: BN): void;
    prependNode(currentNode: DLOBNodeMap[NodeType], newNode: DLOBNodeMap[NodeType]): boolean;
    update(order: Order, userAccount: string): void;
    remove(order: Order, userAccount: string): void;
    getGenerator(): Generator<DLOBNode>;
    has(order: Order, userAccount: string): boolean;
    get(orderSignature: string): DLOBNodeMap[NodeType] | undefined;
    print(): void;
    printTop(): void;
}
