import * as NodeRSAType from "node-rsa";
import Web3 from "web3";
import BN from "bn.js";
import { List, Map } from "immutable";
import * as shamir from "./shamir";
import { DarknodeRegistryContract } from "../contracts/bindings/darknode_registry";
import { OrderbookContract } from "../contracts/bindings/orderbook";
import { OrderID, OrderInputsAll, OrderStatus, SimpleConsole, TokenCode } from "../types";
import { EncodedData } from "./encodedData";
export declare enum OrderSettlement {
    RenEx = 1,
    RenExAtomic = 3
}
export declare enum OrderType {
    MIDPOINT = 0,
    LIMIT = 1,
    MIDPOINT_IOC = 2,
    LIMIT_IOC = 3
}
export declare enum OrderParity {
    BUY = 0,
    SELL = 1
}
declare const Tuple_base: import("./record").RecordInterface<{
    c: number;
    q: number;
}>;
export declare class Tuple extends Tuple_base {
}
declare const Order_base: import("./record").RecordInterface<{
    signature: string;
    id: string;
    type: OrderType;
    parity: OrderParity;
    orderSettlement: OrderSettlement;
    expiry: number;
    tokens: BN;
    price: BN;
    volume: BN;
    minimumVolume: BN;
    nonce: BN;
}>;
export declare class Order extends Order_base {
}
declare const AtomAuthorizationRequest_base: import("./record").RecordInterface<{
    address: string;
    signature: string;
}>;
export declare class AtomAuthorizationRequest extends AtomAuthorizationRequest_base {
}
declare const OpenOrderRequest_base: import("./record").RecordInterface<{
    address: string;
    orderFragmentMappings: Map<string, List<OrderFragment>>[];
}>;
export declare class OpenOrderRequest extends OpenOrderRequest_base {
}
declare const WithdrawRequest_base: import("./record").RecordInterface<{
    address: string;
    tokenID: number;
}>;
export declare class WithdrawRequest extends WithdrawRequest_base {
}
declare const OrderFragment_base: import("./record").RecordInterface<{
    id: string;
    orderId: string;
    orderType: OrderType;
    orderParity: OrderParity;
    orderSettlement: OrderSettlement;
    orderExpiry: number;
    tokens: string;
    price: string[];
    volume: string[];
    minimumVolume: string[];
    nonce: string;
    index: number;
}>;
export declare class OrderFragment extends OrderFragment_base {
}
declare const Pod_base: import("./record").RecordInterface<{
    id: string;
    darknodes: List<string>;
    orderFragments: List<OrderFragment>;
}>;
export declare class Pod extends Pod_base {
}
export declare function randomNonce(randomBN: () => BN): BN;
export declare function authorizeSwapper(ingressURL: string, request: AtomAuthorizationRequest): Promise<boolean>;
export declare function _authorizeSwapperd(web3: Web3, ingressURL: string, swapperdAddress: string, address: string): Promise<void>;
export declare function createOrder(orderInputs: OrderInputsAll, nonce?: BN): Order;
export declare function submitOrderFragments(ingressURL: string, request: OpenOrderRequest): Promise<EncodedData>;
export declare function requestWithdrawalSignature(ingressURL: string, address: string, token: TokenCode): Promise<EncodedData>;
export declare function getOrders(web3: Web3, orderbook: OrderbookContract, startIn?: number, limitIn?: number): Promise<List<[OrderID, OrderStatus, string]>>;
export declare function getOrderID(web3: Web3, order: Order): EncodedData;
export declare function buildOrderMapping(web3: Web3, darknodeRegistryContract: DarknodeRegistryContract, order: Order, simpleConsole: SimpleConsole): Promise<Map<string, List<OrderFragment>>>;
export declare function encryptForDarknode(darknodeKey: NodeRSAType | null, share: shamir.Share, byteCount: number): EncodedData;
export {};
