/**
 * More efficient multiplication of sums
 */
import { AlmostForeignField, ForeignField, Gadgets } from 'o1js';
export { assertMul, UnreducedSum, AlmostReducedSum };
type ForeignFieldSum = ReturnType<typeof Gadgets.ForeignField.Sum>;
declare function assertMul(a: AlmostReducedSum | AlmostForeignField, b: AlmostReducedSum | AlmostForeignField, c: UnreducedSum | ForeignField): void;
declare class UnreducedSum {
    value: ForeignFieldSum;
    modulus: bigint;
    type: typeof ForeignField;
    constructor(input: ForeignField);
    add(input: ForeignField): this;
    sub(input: ForeignField): this;
    toBigint(): bigint;
    static from<S extends UnreducedSum>(sum: S | ForeignField): S;
}
declare class AlmostReducedSum extends UnreducedSum {
    constructor(input: AlmostForeignField);
    add(input: AlmostForeignField): this;
    sub(input: AlmostForeignField): this;
}
