import { Field } from 'o1js';
import { G1Affine, G2Affine } from '../ec/index.js';
import { Fp2, Fp12 } from '../towers/index.js';
import { computeLineCoeffs } from './coeffs.js';
import { AffineCache } from './precompute.js';
declare const G2Line_base: (new (value: {
    lambda: Fp2;
    neg_mu: Fp2;
}) => {
    lambda: Fp2;
    neg_mu: Fp2;
}) & {
    _isStruct: true;
} & Omit<import("node_modules/o1js/dist/node/lib/provable/types/provable-intf.js").Provable<{
    lambda: Fp2;
    neg_mu: Fp2;
}, {
    lambda: {
        c0: bigint;
        c1: bigint;
    };
    neg_mu: {
        c0: bigint;
        c1: bigint;
    };
}>, "fromFields"> & {
    fromFields: (fields: import("node_modules/o1js/dist/node/lib/provable/field.js").Field[]) => {
        lambda: Fp2;
        neg_mu: Fp2;
    };
} & {
    fromValue: (value: {
        lambda: Fp2 | {
            c0: bigint | import("o1js").AlmostForeignField;
            c1: bigint | import("o1js").AlmostForeignField;
        };
        neg_mu: Fp2 | {
            c0: bigint | import("o1js").AlmostForeignField;
            c1: bigint | import("o1js").AlmostForeignField;
        };
    }) => {
        lambda: Fp2;
        neg_mu: Fp2;
    };
    toInput: (x: {
        lambda: Fp2;
        neg_mu: Fp2;
    }) => {
        fields?: Field[] | undefined;
        packed?: [Field, number][] | undefined;
    };
    toJSON: (x: {
        lambda: Fp2;
        neg_mu: Fp2;
    }) => {
        lambda: {
            c0: string;
            c1: string;
        };
        neg_mu: {
            c0: string;
            c1: string;
        };
    };
    fromJSON: (x: {
        lambda: {
            c0: string;
            c1: string;
        };
        neg_mu: {
            c0: string;
            c1: string;
        };
    }) => {
        lambda: Fp2;
        neg_mu: Fp2;
    };
    empty: () => {
        lambda: Fp2;
        neg_mu: Fp2;
    };
};
declare class G2Line extends G2Line_base {
    constructor(lambda: Fp2, neg_mu: Fp2);
    static fromJSON(json: any): G2Line;
    static fromPoints(lhs: G2Affine, rhs: G2Affine): G2Line;
    psi(cache: AffineCache): Fp12;
    evaluate(p: G2Affine): Fp2;
    assert_is_line(t: G2Affine, q: G2Affine): void;
    assert_is_tangent(p: G2Affine): void;
    evaluate_g1(p: G1Affine): Fp2;
}
export { G2Line, computeLineCoeffs };
