import type { BaseContract, BigNumberish, BytesLike, FunctionFragment, Result, Interface, EventFragment, AddressLike, ContractRunner, ContractMethod, Listener } from "ethers"; import type { TypedContractEvent, TypedDeferredTopicFilter, TypedEventLog, TypedLogDescription, TypedListener, TypedContractMethod } from "./common"; export interface IReferralInterface extends Interface { getFunction(nameOrSignature: "claimRebate" | "getRebateAmounts" | "getRebatePercents()" | "getRebatePercents(address)" | "getRebateTier" | "getRebates" | "getReferrer" | "setPrimaryRebatePercent" | "setRebateTier" | "setSecondaryRebatePercent" | "useReferral"): FunctionFragment; getEvent(nameOrSignatureOrTopic: "ClaimRebate" | "Refer" | "SetPrimaryRebatePercent" | "SetRebateTier" | "SetSecondaryRebatePercent"): EventFragment; encodeFunctionData(functionFragment: "claimRebate", values: [AddressLike[]]): string; encodeFunctionData(functionFragment: "getRebateAmounts", values: [AddressLike, AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "getRebatePercents()", values?: undefined): string; encodeFunctionData(functionFragment: "getRebatePercents(address)", values: [AddressLike]): string; encodeFunctionData(functionFragment: "getRebateTier", values: [AddressLike]): string; encodeFunctionData(functionFragment: "getRebates", values: [AddressLike]): string; encodeFunctionData(functionFragment: "getReferrer", values: [AddressLike]): string; encodeFunctionData(functionFragment: "setPrimaryRebatePercent", values: [BigNumberish, BigNumberish]): string; encodeFunctionData(functionFragment: "setRebateTier", values: [AddressLike, BigNumberish]): string; encodeFunctionData(functionFragment: "setSecondaryRebatePercent", values: [BigNumberish]): string; encodeFunctionData(functionFragment: "useReferral", values: [AddressLike, AddressLike, AddressLike, BigNumberish, BigNumberish]): string; decodeFunctionResult(functionFragment: "claimRebate", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getRebateAmounts", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getRebatePercents()", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getRebatePercents(address)", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getRebateTier", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getRebates", data: BytesLike): Result; decodeFunctionResult(functionFragment: "getReferrer", data: BytesLike): Result; decodeFunctionResult(functionFragment: "setPrimaryRebatePercent", data: BytesLike): Result; decodeFunctionResult(functionFragment: "setRebateTier", data: BytesLike): Result; decodeFunctionResult(functionFragment: "setSecondaryRebatePercent", data: BytesLike): Result; decodeFunctionResult(functionFragment: "useReferral", data: BytesLike): Result; } export declare namespace ClaimRebateEvent { type InputTuple = [ referrer: AddressLike, token: AddressLike, amount: BigNumberish ]; type OutputTuple = [referrer: string, token: string, amount: bigint]; interface OutputObject { referrer: string; token: string; amount: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace ReferEvent { type InputTuple = [ user: AddressLike, primaryReferrer: AddressLike, secondaryReferrer: AddressLike, token: AddressLike, primaryRebatePercent: BigNumberish, primaryRebate: BigNumberish, secondaryRebate: BigNumberish ]; type OutputTuple = [ user: string, primaryReferrer: string, secondaryReferrer: string, token: string, primaryRebatePercent: bigint, primaryRebate: bigint, secondaryRebate: bigint ]; interface OutputObject { user: string; primaryReferrer: string; secondaryReferrer: string; token: string; primaryRebatePercent: bigint; primaryRebate: bigint; secondaryRebate: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace SetPrimaryRebatePercentEvent { type InputTuple = [ tier: BigNumberish, oldPercent: BigNumberish, newPercent: BigNumberish ]; type OutputTuple = [ tier: bigint, oldPercent: bigint, newPercent: bigint ]; interface OutputObject { tier: bigint; oldPercent: bigint; newPercent: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace SetRebateTierEvent { type InputTuple = [ referrer: AddressLike, oldTier: BigNumberish, newTier: BigNumberish ]; type OutputTuple = [ referrer: string, oldTier: bigint, newTier: bigint ]; interface OutputObject { referrer: string; oldTier: bigint; newTier: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export declare namespace SetSecondaryRebatePercentEvent { type InputTuple = [oldPercent: BigNumberish, newPercent: BigNumberish]; type OutputTuple = [oldPercent: bigint, newPercent: bigint]; interface OutputObject { oldPercent: bigint; newPercent: bigint; } type Event = TypedContractEvent; type Filter = TypedDeferredTopicFilter; type Log = TypedEventLog; type LogDescription = TypedLogDescription; } export interface IReferral extends BaseContract { connect(runner?: ContractRunner | null): IReferral; waitForDeployment(): Promise; interface: IReferralInterface; queryFilter(event: TCEvent, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; queryFilter(filter: TypedDeferredTopicFilter, fromBlockOrBlockhash?: string | number | undefined, toBlock?: string | number | undefined): Promise>>; on(event: TCEvent, listener: TypedListener): Promise; on(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; once(event: TCEvent, listener: TypedListener): Promise; once(filter: TypedDeferredTopicFilter, listener: TypedListener): Promise; listeners(event: TCEvent): Promise>>; listeners(eventName?: string): Promise>; removeAllListeners(event?: TCEvent): Promise; claimRebate: TypedContractMethod<[ tokens: AddressLike[] ], [ void ], "nonpayable">; getRebateAmounts: TypedContractMethod<[ user: AddressLike, referrer: AddressLike, tradingFee: BigNumberish ], [ [bigint, bigint] & { primaryRebate: bigint; secondaryRebate: bigint; } ], "view">; "getRebatePercents()": TypedContractMethod<[ ], [ [ bigint[], bigint ] & { primaryRebatePercents: bigint[]; secondaryRebatePercent: bigint; } ], "view">; "getRebatePercents(address)": TypedContractMethod<[ referrer: AddressLike ], [ [ bigint, bigint ] & { primaryRebatePercent: bigint; secondaryRebatePercent: bigint; } ], "view">; getRebateTier: TypedContractMethod<[referrer: AddressLike], [bigint], "view">; getRebates: TypedContractMethod<[ referrer: AddressLike ], [ [string[], bigint[]] & { tokens: string[]; rebates: bigint[]; } ], "view">; getReferrer: TypedContractMethod<[user: AddressLike], [string], "view">; setPrimaryRebatePercent: TypedContractMethod<[ percent: BigNumberish, tier: BigNumberish ], [ void ], "nonpayable">; setRebateTier: TypedContractMethod<[ referrer: AddressLike, tier: BigNumberish ], [ void ], "nonpayable">; setSecondaryRebatePercent: TypedContractMethod<[ percent: BigNumberish ], [ void ], "nonpayable">; useReferral: TypedContractMethod<[ user: AddressLike, referrer: AddressLike, token: AddressLike, primaryRebate: BigNumberish, secondaryRebate: BigNumberish ], [ void ], "nonpayable">; getFunction(key: string | FunctionFragment): T; getFunction(nameOrSignature: "claimRebate"): TypedContractMethod<[tokens: AddressLike[]], [void], "nonpayable">; getFunction(nameOrSignature: "getRebateAmounts"): TypedContractMethod<[ user: AddressLike, referrer: AddressLike, tradingFee: BigNumberish ], [ [bigint, bigint] & { primaryRebate: bigint; secondaryRebate: bigint; } ], "view">; getFunction(nameOrSignature: "getRebatePercents()"): TypedContractMethod<[ ], [ [ bigint[], bigint ] & { primaryRebatePercents: bigint[]; secondaryRebatePercent: bigint; } ], "view">; getFunction(nameOrSignature: "getRebatePercents(address)"): TypedContractMethod<[ referrer: AddressLike ], [ [ bigint, bigint ] & { primaryRebatePercent: bigint; secondaryRebatePercent: bigint; } ], "view">; getFunction(nameOrSignature: "getRebateTier"): TypedContractMethod<[referrer: AddressLike], [bigint], "view">; getFunction(nameOrSignature: "getRebates"): TypedContractMethod<[ referrer: AddressLike ], [ [string[], bigint[]] & { tokens: string[]; rebates: bigint[]; } ], "view">; getFunction(nameOrSignature: "getReferrer"): TypedContractMethod<[user: AddressLike], [string], "view">; getFunction(nameOrSignature: "setPrimaryRebatePercent"): TypedContractMethod<[ percent: BigNumberish, tier: BigNumberish ], [ void ], "nonpayable">; getFunction(nameOrSignature: "setRebateTier"): TypedContractMethod<[ referrer: AddressLike, tier: BigNumberish ], [ void ], "nonpayable">; getFunction(nameOrSignature: "setSecondaryRebatePercent"): TypedContractMethod<[percent: BigNumberish], [void], "nonpayable">; getFunction(nameOrSignature: "useReferral"): TypedContractMethod<[ user: AddressLike, referrer: AddressLike, token: AddressLike, primaryRebate: BigNumberish, secondaryRebate: BigNumberish ], [ void ], "nonpayable">; getEvent(key: "ClaimRebate"): TypedContractEvent; getEvent(key: "Refer"): TypedContractEvent; getEvent(key: "SetPrimaryRebatePercent"): TypedContractEvent; getEvent(key: "SetRebateTier"): TypedContractEvent; getEvent(key: "SetSecondaryRebatePercent"): TypedContractEvent; filters: { "ClaimRebate(address,address,uint256)": TypedContractEvent; ClaimRebate: TypedContractEvent; "Refer(address,address,address,address,uint256,uint256,uint256)": TypedContractEvent; Refer: TypedContractEvent; "SetPrimaryRebatePercent(uint8,uint256,uint256)": TypedContractEvent; SetPrimaryRebatePercent: TypedContractEvent; "SetRebateTier(address,uint8,uint8)": TypedContractEvent; SetRebateTier: TypedContractEvent; "SetSecondaryRebatePercent(uint256,uint256)": TypedContractEvent; SetSecondaryRebatePercent: TypedContractEvent; }; }