///
import { BigNumber } from "bignumber.js";
import { Context } from "./context";
import { Mining } from "./mining";
import { Fill, OrderInfo, Participation, RingPayments, TransferItem } from "./types";
export declare class Ring {
participations: Participation[];
hash?: Buffer;
minerFeesToOrdersPercentage?: number;
valid: boolean;
payments: RingPayments;
private context;
private orderUtil;
private feeBalances;
private detailTransferS;
private detailTransferB;
private detailTransferFee;
constructor(context: Context, orders: OrderInfo[]);
updateHash(): void;
checkOrdersValid(): void;
checkForSubRings(): void;
calculateFillAmountAndFee(): Promise;
checkFills(p: Participation): boolean;
hasRoundingError(value: BigNumber, numerator: BigNumber, denominator: BigNumber): boolean;
setMaxFillAmounts(p: Participation): Promise;
calculateFees(p: Participation, prevP: Participation): Promise;
generateFills(): Fill[];
adjustOrderState(p: Participation): void;
adjustOrderStates(): void;
revertOrderStats(): void;
doPayments(mining: Mining, feeBalances: {
[id: string]: any;
}): Promise;
private transferTokens(mining);
private addTokenTransfer(transferItems, token, from, to, amount);
private payFees(mining);
private payFeesAndBurn(mining, p, token, totalAmount, walletSplitPercentage, payment, feePercentage?);
private addFeePayment(token, to, amount);
private resize(i, smallest);
private validateSettlement(mining, transfers);
private assertAlmostEqual(n1, n2, description, precision?);
private logPayment(parent, token, from, to, amount, description?);
}