import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers";
import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedListener, TypedContractMethod } from "../../common";
export declare namespace IFraxGaugeController {
    type PointStruct = {
        bias: BigNumberish;
        slope: BigNumberish;
    };
    type PointStructOutput = [bias: bigint, slope: bigint] & {
        bias: bigint;
        slope: bigint;
    };
    type VotedSlopeStruct = {
        slope: BigNumberish;
        power: BigNumberish;
        end: BigNumberish;
    };
    type VotedSlopeStructOutput = [
        slope: bigint,
        power: bigint,
        end: bigint
    ] & {
        slope: bigint;
        power: bigint;
        end: bigint;
    };
}
export interface IFraxGaugeControllerInterface extends Interface {
    getFunction(nameOrSignature: "add_gauge" | "add_type" | "admin" | "apply_transfer_ownership" | "change_gauge_weight" | "change_global_emission_rate" | "change_type_weight" | "checkpoint" | "checkpoint_gauge" | "commit_transfer_ownership" | "future_admin" | "gauge_relative_weight(address)" | "gauge_relative_weight(address,uint256)" | "gauge_relative_weight_write(address,uint256)" | "gauge_relative_weight_write(address)" | "gauge_type_names" | "gauge_types" | "gauges" | "get_gauge_weight" | "get_total_weight" | "get_type_weight" | "get_weights_sum_per_type" | "global_emission_rate" | "last_user_vote" | "n_gauge_types" | "n_gauges" | "points_sum" | "points_total" | "points_type_weight" | "points_weight" | "time_sum" | "time_total" | "time_type_weight" | "time_weight" | "token" | "vote_for_gauge_weights" | "vote_user_power" | "vote_user_slopes" | "voting_escrow"): FunctionFragment;
    encodeFunctionData(functionFragment: "add_gauge", values: [AddressLike, BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "add_type", values: [string, BigNumberish]): string;
    encodeFunctionData(functionFragment: "admin", values?: undefined): string;
    encodeFunctionData(functionFragment: "apply_transfer_ownership", values?: undefined): string;
    encodeFunctionData(functionFragment: "change_gauge_weight", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "change_global_emission_rate", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "change_type_weight", values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "checkpoint", values?: undefined): string;
    encodeFunctionData(functionFragment: "checkpoint_gauge", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "commit_transfer_ownership", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "future_admin", values?: undefined): string;
    encodeFunctionData(functionFragment: "gauge_relative_weight(address)", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "gauge_relative_weight(address,uint256)", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "gauge_relative_weight_write(address,uint256)", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "gauge_relative_weight_write(address)", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "gauge_type_names", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "gauge_types", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "gauges", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "get_gauge_weight", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "get_total_weight", values?: undefined): string;
    encodeFunctionData(functionFragment: "get_type_weight", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "get_weights_sum_per_type", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "global_emission_rate", values?: undefined): string;
    encodeFunctionData(functionFragment: "last_user_vote", values: [AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "n_gauge_types", values?: undefined): string;
    encodeFunctionData(functionFragment: "n_gauges", values?: undefined): string;
    encodeFunctionData(functionFragment: "points_sum", values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "points_total", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "points_type_weight", values: [BigNumberish, BigNumberish]): string;
    encodeFunctionData(functionFragment: "points_weight", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "time_sum", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "time_total", values?: undefined): string;
    encodeFunctionData(functionFragment: "time_type_weight", values: [BigNumberish]): string;
    encodeFunctionData(functionFragment: "time_weight", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "token", values?: undefined): string;
    encodeFunctionData(functionFragment: "vote_for_gauge_weights", values: [AddressLike, BigNumberish]): string;
    encodeFunctionData(functionFragment: "vote_user_power", values: [AddressLike]): string;
    encodeFunctionData(functionFragment: "vote_user_slopes", values: [AddressLike, AddressLike]): string;
    encodeFunctionData(functionFragment: "voting_escrow", values?: undefined): string;
    decodeFunctionResult(functionFragment: "add_gauge", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "add_type", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "admin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "apply_transfer_ownership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "change_gauge_weight", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "change_global_emission_rate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "change_type_weight", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "checkpoint", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "checkpoint_gauge", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "commit_transfer_ownership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "future_admin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "gauge_relative_weight(address)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "gauge_relative_weight(address,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "gauge_relative_weight_write(address,uint256)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "gauge_relative_weight_write(address)", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "gauge_type_names", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "gauge_types", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "gauges", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "get_gauge_weight", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "get_total_weight", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "get_type_weight", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "get_weights_sum_per_type", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "global_emission_rate", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "last_user_vote", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "n_gauge_types", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "n_gauges", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "points_sum", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "points_total", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "points_type_weight", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "points_weight", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "time_sum", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "time_total", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "time_type_weight", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "time_weight", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "token", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "vote_for_gauge_weights", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "vote_user_power", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "vote_user_slopes", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "voting_escrow", data: BytesLike): Result;
}
export interface IFraxGaugeController extends BaseContract {
    connect(runner?: ContractRunner | null): IFraxGaugeController;
    waitForDeployment(): Promise<this>;
    interface: IFraxGaugeControllerInterface;
    queryFilter<TCEvent extends TypedContractEvent>(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    queryFilter<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise<Array<TypedEventLog<TCEvent>>>;
    on<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    on<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(event: TCEvent, listener: TypedListener<TCEvent>): Promise<this>;
    once<TCEvent extends TypedContractEvent>(filter: TypedDeferredTopicFilter<TCEvent>, listener: TypedListener<TCEvent>): Promise<this>;
    listeners<TCEvent extends TypedContractEvent>(event: TCEvent): Promise<Array<TypedListener<TCEvent>>>;
    listeners(eventName?: string): Promise<Array<Listener>>;
    removeAllListeners<TCEvent extends TypedContractEvent>(event?: TCEvent): Promise<this>;
    add_gauge: TypedContractMethod<[
        arg0: AddressLike,
        arg1: BigNumberish,
        arg2: BigNumberish
    ], [
        void
    ], "nonpayable">;
    add_type: TypedContractMethod<[
        arg0: string,
        arg1: BigNumberish
    ], [
        void
    ], "nonpayable">;
    admin: TypedContractMethod<[], [string], "view">;
    apply_transfer_ownership: TypedContractMethod<[], [void], "nonpayable">;
    change_gauge_weight: TypedContractMethod<[
        arg0: AddressLike,
        arg1: BigNumberish
    ], [
        void
    ], "nonpayable">;
    change_global_emission_rate: TypedContractMethod<[
        arg0: BigNumberish
    ], [
        void
    ], "nonpayable">;
    change_type_weight: TypedContractMethod<[
        arg0: BigNumberish,
        arg1: BigNumberish
    ], [
        void
    ], "nonpayable">;
    checkpoint: TypedContractMethod<[], [void], "nonpayable">;
    checkpoint_gauge: TypedContractMethod<[
        arg0: AddressLike
    ], [
        void
    ], "nonpayable">;
    commit_transfer_ownership: TypedContractMethod<[
        arg0: AddressLike
    ], [
        void
    ], "nonpayable">;
    future_admin: TypedContractMethod<[], [string], "view">;
    "gauge_relative_weight(address)": TypedContractMethod<[
        arg0: AddressLike
    ], [
        bigint
    ], "view">;
    "gauge_relative_weight(address,uint256)": TypedContractMethod<[
        arg0: AddressLike,
        arg1: BigNumberish
    ], [
        bigint
    ], "view">;
    "gauge_relative_weight_write(address,uint256)": TypedContractMethod<[
        arg0: AddressLike,
        arg1: BigNumberish
    ], [
        bigint
    ], "nonpayable">;
    "gauge_relative_weight_write(address)": TypedContractMethod<[
        arg0: AddressLike
    ], [
        bigint
    ], "nonpayable">;
    gauge_type_names: TypedContractMethod<[arg0: BigNumberish], [string], "view">;
    gauge_types: TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
    gauges: TypedContractMethod<[arg0: BigNumberish], [string], "view">;
    get_gauge_weight: TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
    get_total_weight: TypedContractMethod<[], [bigint], "view">;
    get_type_weight: TypedContractMethod<[arg0: BigNumberish], [bigint], "view">;
    get_weights_sum_per_type: TypedContractMethod<[
        arg0: BigNumberish
    ], [
        bigint
    ], "view">;
    global_emission_rate: TypedContractMethod<[], [bigint], "view">;
    last_user_vote: TypedContractMethod<[
        arg0: AddressLike,
        arg1: AddressLike
    ], [
        bigint
    ], "view">;
    n_gauge_types: TypedContractMethod<[], [bigint], "view">;
    n_gauges: TypedContractMethod<[], [bigint], "view">;
    points_sum: TypedContractMethod<[
        arg0: BigNumberish,
        arg1: BigNumberish
    ], [
        IFraxGaugeController.PointStructOutput
    ], "view">;
    points_total: TypedContractMethod<[arg0: BigNumberish], [bigint], "view">;
    points_type_weight: TypedContractMethod<[
        arg0: BigNumberish,
        arg1: BigNumberish
    ], [
        bigint
    ], "view">;
    points_weight: TypedContractMethod<[
        arg0: AddressLike,
        arg1: BigNumberish
    ], [
        IFraxGaugeController.PointStructOutput
    ], "view">;
    time_sum: TypedContractMethod<[arg0: BigNumberish], [bigint], "view">;
    time_total: TypedContractMethod<[], [bigint], "view">;
    time_type_weight: TypedContractMethod<[arg0: BigNumberish], [bigint], "view">;
    time_weight: TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
    token: TypedContractMethod<[], [string], "view">;
    vote_for_gauge_weights: TypedContractMethod<[
        arg0: AddressLike,
        arg1: BigNumberish
    ], [
        void
    ], "nonpayable">;
    vote_user_power: TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
    vote_user_slopes: TypedContractMethod<[
        arg0: AddressLike,
        arg1: AddressLike
    ], [
        IFraxGaugeController.VotedSlopeStructOutput
    ], "view">;
    voting_escrow: TypedContractMethod<[], [string], "view">;
    getFunction<T extends ContractMethod = ContractMethod>(key: string | FunctionFragment): T;
    getFunction(nameOrSignature: "add_gauge"): TypedContractMethod<[
        arg0: AddressLike,
        arg1: BigNumberish,
        arg2: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "add_type"): TypedContractMethod<[
        arg0: string,
        arg1: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "admin"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "apply_transfer_ownership"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "change_gauge_weight"): TypedContractMethod<[
        arg0: AddressLike,
        arg1: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "change_global_emission_rate"): TypedContractMethod<[arg0: BigNumberish], [void], "nonpayable">;
    getFunction(nameOrSignature: "change_type_weight"): TypedContractMethod<[
        arg0: BigNumberish,
        arg1: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "checkpoint"): TypedContractMethod<[], [void], "nonpayable">;
    getFunction(nameOrSignature: "checkpoint_gauge"): TypedContractMethod<[arg0: AddressLike], [void], "nonpayable">;
    getFunction(nameOrSignature: "commit_transfer_ownership"): TypedContractMethod<[arg0: AddressLike], [void], "nonpayable">;
    getFunction(nameOrSignature: "future_admin"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "gauge_relative_weight(address)"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "gauge_relative_weight(address,uint256)"): TypedContractMethod<[
        arg0: AddressLike,
        arg1: BigNumberish
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "gauge_relative_weight_write(address,uint256)"): TypedContractMethod<[
        arg0: AddressLike,
        arg1: BigNumberish
    ], [
        bigint
    ], "nonpayable">;
    getFunction(nameOrSignature: "gauge_relative_weight_write(address)"): TypedContractMethod<[arg0: AddressLike], [bigint], "nonpayable">;
    getFunction(nameOrSignature: "gauge_type_names"): TypedContractMethod<[arg0: BigNumberish], [string], "view">;
    getFunction(nameOrSignature: "gauge_types"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "gauges"): TypedContractMethod<[arg0: BigNumberish], [string], "view">;
    getFunction(nameOrSignature: "get_gauge_weight"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "get_total_weight"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "get_type_weight"): TypedContractMethod<[arg0: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "get_weights_sum_per_type"): TypedContractMethod<[arg0: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "global_emission_rate"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "last_user_vote"): TypedContractMethod<[
        arg0: AddressLike,
        arg1: AddressLike
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "n_gauge_types"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "n_gauges"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "points_sum"): TypedContractMethod<[
        arg0: BigNumberish,
        arg1: BigNumberish
    ], [
        IFraxGaugeController.PointStructOutput
    ], "view">;
    getFunction(nameOrSignature: "points_total"): TypedContractMethod<[arg0: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "points_type_weight"): TypedContractMethod<[
        arg0: BigNumberish,
        arg1: BigNumberish
    ], [
        bigint
    ], "view">;
    getFunction(nameOrSignature: "points_weight"): TypedContractMethod<[
        arg0: AddressLike,
        arg1: BigNumberish
    ], [
        IFraxGaugeController.PointStructOutput
    ], "view">;
    getFunction(nameOrSignature: "time_sum"): TypedContractMethod<[arg0: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "time_total"): TypedContractMethod<[], [bigint], "view">;
    getFunction(nameOrSignature: "time_type_weight"): TypedContractMethod<[arg0: BigNumberish], [bigint], "view">;
    getFunction(nameOrSignature: "time_weight"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "token"): TypedContractMethod<[], [string], "view">;
    getFunction(nameOrSignature: "vote_for_gauge_weights"): TypedContractMethod<[
        arg0: AddressLike,
        arg1: BigNumberish
    ], [
        void
    ], "nonpayable">;
    getFunction(nameOrSignature: "vote_user_power"): TypedContractMethod<[arg0: AddressLike], [bigint], "view">;
    getFunction(nameOrSignature: "vote_user_slopes"): TypedContractMethod<[
        arg0: AddressLike,
        arg1: AddressLike
    ], [
        IFraxGaugeController.VotedSlopeStructOutput
    ], "view">;
    getFunction(nameOrSignature: "voting_escrow"): TypedContractMethod<[], [string], "view">;
    filters: {};
}
