import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, PopulatedTransaction, Signer, utils } from "ethers";
import type { FunctionFragment, Result } from "@ethersproject/abi";
import type { Listener, Provider } from "@ethersproject/providers";
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from "./common";
export interface EllipticCurveInterface extends utils.Interface {
    functions: {
        "add(uint256,uint256,uint256,uint256)": FunctionFragment;
        "addAndReturnProjectivePoint(uint256,uint256,uint256,uint256)": FunctionFragment;
        "addProj(uint256,uint256,uint256,uint256,uint256,uint256)": FunctionFragment;
        "isOnCurve(uint256,uint256)": FunctionFragment;
        "isZeroCurve(uint256,uint256)": FunctionFragment;
        "multipleGeneratorByScalar(uint256)": FunctionFragment;
        "multiplyPowerBase2(uint256,uint256,uint256)": FunctionFragment;
        "multiplyScalar(uint256,uint256,uint256)": FunctionFragment;
        "toAffinePoint(uint256,uint256,uint256)": FunctionFragment;
        "toProjectivePoint(uint256,uint256)": FunctionFragment;
        "twice(uint256,uint256)": FunctionFragment;
        "twiceProj(uint256,uint256,uint256)": FunctionFragment;
        "validateSignature(bytes32,uint256[2],uint256[2])": FunctionFragment;
        "zeroAffine()": FunctionFragment;
        "zeroProj()": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "add" | "addAndReturnProjectivePoint" | "addProj" | "isOnCurve" | "isZeroCurve" | "multipleGeneratorByScalar" | "multiplyPowerBase2" | "multiplyScalar" | "toAffinePoint" | "toProjectivePoint" | "twice" | "twiceProj" | "validateSignature" | "zeroAffine" | "zeroProj"): FunctionFragment;
    encodeFunctionData(functionFragment: "add", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "addAndReturnProjectivePoint", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "addProj", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "isOnCurve", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "isZeroCurve", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "multipleGeneratorByScalar", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "multiplyPowerBase2", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "multiplyScalar", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "toAffinePoint", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "toProjectivePoint", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "twice", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "twiceProj", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "validateSignature", values: [
        PromiseOrValue<BytesLike>,
        [
            PromiseOrValue<BigNumberish>,
            PromiseOrValue<BigNumberish>
        ],
        [
            PromiseOrValue<BigNumberish>,
            PromiseOrValue<BigNumberish>
        ]
    ]): string;
    encodeFunctionData(functionFragment: "zeroAffine", values?: undefined): string;
    encodeFunctionData(functionFragment: "zeroProj", values?: undefined): string;
    decodeFunctionResult(functionFragment: "add", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addAndReturnProjectivePoint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "addProj", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isOnCurve", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "isZeroCurve", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "multipleGeneratorByScalar", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "multiplyPowerBase2", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "multiplyScalar", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "toAffinePoint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "toProjectivePoint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "twice", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "twiceProj", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "validateSignature", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "zeroAffine", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "zeroProj", data: BytesLike): Result;
    events: {};
}
export interface EllipticCurve extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: EllipticCurveInterface;
    queryFilter<TEvent extends TypedEvent>(event: TypedEventFilter<TEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TEvent>>;
    listeners<TEvent extends TypedEvent>(eventFilter?: TypedEventFilter<TEvent>): Array<TypedListener<TEvent>>;
    listeners(eventName?: string): Array<Listener>;
    removeAllListeners<TEvent extends TypedEvent>(eventFilter: TypedEventFilter<TEvent>): this;
    removeAllListeners(eventName?: string): this;
    off: OnEvent<this>;
    on: OnEvent<this>;
    once: OnEvent<this>;
    removeListener: OnEvent<this>;
    functions: {
        add(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        addAndReturnProjectivePoint(x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, x2: PromiseOrValue<BigNumberish>, y2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            [BigNumber, BigNumber, BigNumber]
        ] & {
            P: [BigNumber, BigNumber, BigNumber];
        }>;
        addProj(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, z1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            x2: BigNumber;
            y2: BigNumber;
            z2: BigNumber;
        }>;
        isOnCurve(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[boolean]>;
        isZeroCurve(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[boolean] & {
            isZero: boolean;
        }>;
        multipleGeneratorByScalar(scalar: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        multiplyPowerBase2(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, exp: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        multiplyScalar(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, scalar: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            x1: BigNumber;
            y1: BigNumber;
        }>;
        toAffinePoint(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            x1: BigNumber;
            y1: BigNumber;
        }>;
        toProjectivePoint(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            [BigNumber, BigNumber, BigNumber]
        ] & {
            P: [BigNumber, BigNumber, BigNumber];
        }>;
        twice(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        twiceProj(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            x1: BigNumber;
            y1: BigNumber;
            z1: BigNumber;
        }>;
        validateSignature(message: PromiseOrValue<BytesLike>, rs: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>], Q: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>], overrides?: CallOverrides): Promise<[boolean]>;
        zeroAffine(overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            x: BigNumber;
            y: BigNumber;
        }>;
        zeroProj(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            x: BigNumber;
            y: BigNumber;
            z: BigNumber;
        }>;
    };
    add(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    addAndReturnProjectivePoint(x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, x2: PromiseOrValue<BigNumberish>, y2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber]>;
    addProj(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, z1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        x2: BigNumber;
        y2: BigNumber;
        z2: BigNumber;
    }>;
    isOnCurve(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
    isZeroCurve(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
    multipleGeneratorByScalar(scalar: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    multiplyPowerBase2(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, exp: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    multiplyScalar(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, scalar: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
        x1: BigNumber;
        y1: BigNumber;
    }>;
    toAffinePoint(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
        x1: BigNumber;
        y1: BigNumber;
    }>;
    toProjectivePoint(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber]>;
    twice(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
    twiceProj(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        x1: BigNumber;
        y1: BigNumber;
        z1: BigNumber;
    }>;
    validateSignature(message: PromiseOrValue<BytesLike>, rs: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>], Q: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>], overrides?: CallOverrides): Promise<boolean>;
    zeroAffine(overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
        x: BigNumber;
        y: BigNumber;
    }>;
    zeroProj(overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        x: BigNumber;
        y: BigNumber;
        z: BigNumber;
    }>;
    callStatic: {
        add(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        addAndReturnProjectivePoint(x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, x2: PromiseOrValue<BigNumberish>, y2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber]>;
        addProj(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, z1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            x2: BigNumber;
            y2: BigNumber;
            z2: BigNumber;
        }>;
        isOnCurve(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        isZeroCurve(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        multipleGeneratorByScalar(scalar: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        multiplyPowerBase2(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, exp: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        multiplyScalar(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, scalar: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            x1: BigNumber;
            y1: BigNumber;
        }>;
        toAffinePoint(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            x1: BigNumber;
            y1: BigNumber;
        }>;
        toProjectivePoint(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber, BigNumber]>;
        twice(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber]>;
        twiceProj(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            x1: BigNumber;
            y1: BigNumber;
            z1: BigNumber;
        }>;
        validateSignature(message: PromiseOrValue<BytesLike>, rs: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>], Q: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>], overrides?: CallOverrides): Promise<boolean>;
        zeroAffine(overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            x: BigNumber;
            y: BigNumber;
        }>;
        zeroProj(overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            x: BigNumber;
            y: BigNumber;
            z: BigNumber;
        }>;
    };
    filters: {};
    estimateGas: {
        add(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        addAndReturnProjectivePoint(x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, x2: PromiseOrValue<BigNumberish>, y2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        addProj(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, z1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        isOnCurve(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        isZeroCurve(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        multipleGeneratorByScalar(scalar: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        multiplyPowerBase2(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, exp: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        multiplyScalar(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, scalar: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        toAffinePoint(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        toProjectivePoint(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        twice(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        twiceProj(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        validateSignature(message: PromiseOrValue<BytesLike>, rs: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>], Q: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>], overrides?: CallOverrides): Promise<BigNumber>;
        zeroAffine(overrides?: CallOverrides): Promise<BigNumber>;
        zeroProj(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        add(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        addAndReturnProjectivePoint(x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, x2: PromiseOrValue<BigNumberish>, y2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        addProj(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, x1: PromiseOrValue<BigNumberish>, y1: PromiseOrValue<BigNumberish>, z1: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isOnCurve(x: PromiseOrValue<BigNumberish>, y: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isZeroCurve(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        multipleGeneratorByScalar(scalar: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        multiplyPowerBase2(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, exp: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        multiplyScalar(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, scalar: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        toAffinePoint(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        toProjectivePoint(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        twice(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        twiceProj(x0: PromiseOrValue<BigNumberish>, y0: PromiseOrValue<BigNumberish>, z0: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        validateSignature(message: PromiseOrValue<BytesLike>, rs: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>], Q: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>], overrides?: CallOverrides): Promise<PopulatedTransaction>;
        zeroAffine(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        zeroProj(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
