import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, PayableOverrides, PopulatedTransaction, Signer, utils } from 'ethers';
import type { FunctionFragment, Result, EventFragment } from '@ethersproject/abi';
import type { Listener, Provider } from '@ethersproject/providers';
import type { TypedEventFilter, TypedEvent, TypedListener, OnEvent, PromiseOrValue } from './common';
export declare namespace ThrottleLib {
    type ParamsStruct = {
        amtRate: PromiseOrValue<BigNumberish>;
        pctRate: PromiseOrValue<BigNumberish>;
    };
    type ParamsStructOutput = [BigNumber, BigNumber] & {
        amtRate: BigNumber;
        pctRate: BigNumber;
    };
}
export interface RtokenInterface extends utils.Interface {
    functions: {
        'DOMAIN_SEPARATOR()': FunctionFragment;
        'MAX_EXCHANGE_RATE()': FunctionFragment;
        'MAX_THROTTLE_PCT_AMT()': FunctionFragment;
        'MAX_THROTTLE_RATE_AMT()': FunctionFragment;
        'MIN_EXCHANGE_RATE()': FunctionFragment;
        'MIN_THROTTLE_RATE_AMT()': FunctionFragment;
        'allowance(address,address)': FunctionFragment;
        'approve(address,uint256)': FunctionFragment;
        'balanceOf(address)': FunctionFragment;
        'basketsNeeded()': FunctionFragment;
        'decimals()': FunctionFragment;
        'decreaseAllowance(address,uint256)': FunctionFragment;
        'increaseAllowance(address,uint256)': FunctionFragment;
        'init(address,string,string,string,(uint256,uint192),(uint256,uint192))': FunctionFragment;
        'issuanceAvailable()': FunctionFragment;
        'issuanceThrottleParams()': FunctionFragment;
        'issue(uint256)': FunctionFragment;
        'issueTo(address,uint256)': FunctionFragment;
        'main()': FunctionFragment;
        'mandate()': FunctionFragment;
        'melt(uint256)': FunctionFragment;
        'mint(address,uint256)': FunctionFragment;
        'monetizeDonations(address)': FunctionFragment;
        'name()': FunctionFragment;
        'nonces(address)': FunctionFragment;
        'permit(address,address,uint256,uint256,uint8,bytes32,bytes32)': FunctionFragment;
        'proxiableUUID()': FunctionFragment;
        'redeem(uint256,uint48)': FunctionFragment;
        'redeemTo(address,uint256,uint48)': FunctionFragment;
        'redemptionAvailable()': FunctionFragment;
        'redemptionThrottleParams()': FunctionFragment;
        'setBasketsNeeded(uint192)': FunctionFragment;
        'setIssuanceThrottleParams((uint256,uint192))': FunctionFragment;
        'setRedemptionThrottleParams((uint256,uint192))': FunctionFragment;
        'symbol()': FunctionFragment;
        'totalSupply()': FunctionFragment;
        'transfer(address,uint256)': FunctionFragment;
        'transferFrom(address,address,uint256)': FunctionFragment;
        'upgradeTo(address)': FunctionFragment;
        'upgradeToAndCall(address,bytes)': FunctionFragment;
        'version()': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'DOMAIN_SEPARATOR' | 'MAX_EXCHANGE_RATE' | 'MAX_THROTTLE_PCT_AMT' | 'MAX_THROTTLE_RATE_AMT' | 'MIN_EXCHANGE_RATE' | 'MIN_THROTTLE_RATE_AMT' | 'allowance' | 'approve' | 'balanceOf' | 'basketsNeeded' | 'decimals' | 'decreaseAllowance' | 'increaseAllowance' | 'init' | 'issuanceAvailable' | 'issuanceThrottleParams' | 'issue' | 'issueTo' | 'main' | 'mandate' | 'melt' | 'mint' | 'monetizeDonations' | 'name' | 'nonces' | 'permit' | 'proxiableUUID' | 'redeem' | 'redeemTo' | 'redemptionAvailable' | 'redemptionThrottleParams' | 'setBasketsNeeded' | 'setIssuanceThrottleParams' | 'setRedemptionThrottleParams' | 'symbol' | 'totalSupply' | 'transfer' | 'transferFrom' | 'upgradeTo' | 'upgradeToAndCall' | 'version'): FunctionFragment;
    encodeFunctionData(functionFragment: 'DOMAIN_SEPARATOR', values?: undefined): string;
    encodeFunctionData(functionFragment: 'MAX_EXCHANGE_RATE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'MAX_THROTTLE_PCT_AMT', values?: undefined): string;
    encodeFunctionData(functionFragment: 'MAX_THROTTLE_RATE_AMT', values?: undefined): string;
    encodeFunctionData(functionFragment: 'MIN_EXCHANGE_RATE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'MIN_THROTTLE_RATE_AMT', values?: undefined): string;
    encodeFunctionData(functionFragment: 'allowance', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'approve', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'balanceOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'basketsNeeded', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decimals', values?: undefined): string;
    encodeFunctionData(functionFragment: 'decreaseAllowance', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'increaseAllowance', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'init', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        ThrottleLib.ParamsStruct,
        ThrottleLib.ParamsStruct
    ]): string;
    encodeFunctionData(functionFragment: 'issuanceAvailable', values?: undefined): string;
    encodeFunctionData(functionFragment: 'issuanceThrottleParams', values?: undefined): string;
    encodeFunctionData(functionFragment: 'issue', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'issueTo', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'main', values?: undefined): string;
    encodeFunctionData(functionFragment: 'mandate', values?: undefined): string;
    encodeFunctionData(functionFragment: 'melt', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'mint', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'monetizeDonations', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'name', values?: undefined): string;
    encodeFunctionData(functionFragment: 'nonces', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'permit', values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<BytesLike>
    ]): string;
    encodeFunctionData(functionFragment: 'proxiableUUID', values?: undefined): string;
    encodeFunctionData(functionFragment: 'redeem', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'redeemTo', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'redemptionAvailable', values?: undefined): string;
    encodeFunctionData(functionFragment: 'redemptionThrottleParams', values?: undefined): string;
    encodeFunctionData(functionFragment: 'setBasketsNeeded', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'setIssuanceThrottleParams', values: [ThrottleLib.ParamsStruct]): string;
    encodeFunctionData(functionFragment: 'setRedemptionThrottleParams', values: [ThrottleLib.ParamsStruct]): string;
    encodeFunctionData(functionFragment: 'symbol', values?: undefined): string;
    encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transfer', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'transferFrom', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'upgradeTo', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'upgradeToAndCall', values: [PromiseOrValue<string>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'version', values?: undefined): string;
    decodeFunctionResult(functionFragment: 'DOMAIN_SEPARATOR', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'MAX_EXCHANGE_RATE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'MAX_THROTTLE_PCT_AMT', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'MAX_THROTTLE_RATE_AMT', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'MIN_EXCHANGE_RATE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'MIN_THROTTLE_RATE_AMT', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'allowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'basketsNeeded', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decimals', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'decreaseAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'increaseAllowance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'init', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'issuanceAvailable', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'issuanceThrottleParams', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'issue', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'issueTo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'main', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'mandate', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'melt', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'mint', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'monetizeDonations', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'nonces', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'permit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'proxiableUUID', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeem', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redeemTo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redemptionAvailable', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'redemptionThrottleParams', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setBasketsNeeded', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setIssuanceThrottleParams', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setRedemptionThrottleParams', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transfer', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'upgradeTo', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'upgradeToAndCall', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'version', data: BytesLike): Result;
    events: {
        'AdminChanged(address,address)': EventFragment;
        'Approval(address,address,uint256)': EventFragment;
        'BasketsNeededChanged(uint192,uint192)': EventFragment;
        'BeaconUpgraded(address)': EventFragment;
        'Initialized(uint8)': EventFragment;
        'Issuance(address,address,uint256,uint192)': EventFragment;
        'IssuanceThrottleSet(tuple,tuple)': EventFragment;
        'Melted(uint256)': EventFragment;
        'Redemption(address,address,uint256,uint192)': EventFragment;
        'RedemptionThrottleSet(tuple,tuple)': EventFragment;
        'Transfer(address,address,uint256)': EventFragment;
        'Upgraded(address)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'AdminChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'BasketsNeededChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'BeaconUpgraded'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Initialized'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Issuance'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'IssuanceThrottleSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Melted'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Redemption'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RedemptionThrottleSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Upgraded'): EventFragment;
}
export interface AdminChangedEventObject {
    previousAdmin: string;
    newAdmin: string;
}
export declare type AdminChangedEvent = TypedEvent<[string, string], AdminChangedEventObject>;
export declare type AdminChangedEventFilter = TypedEventFilter<AdminChangedEvent>;
export interface ApprovalEventObject {
    owner: string;
    spender: string;
    value: BigNumber;
}
export declare type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>;
export declare type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
export interface BasketsNeededChangedEventObject {
    oldBasketsNeeded: BigNumber;
    newBasketsNeeded: BigNumber;
}
export declare type BasketsNeededChangedEvent = TypedEvent<[BigNumber, BigNumber], BasketsNeededChangedEventObject>;
export declare type BasketsNeededChangedEventFilter = TypedEventFilter<BasketsNeededChangedEvent>;
export interface BeaconUpgradedEventObject {
    beacon: string;
}
export declare type BeaconUpgradedEvent = TypedEvent<[string], BeaconUpgradedEventObject>;
export declare type BeaconUpgradedEventFilter = TypedEventFilter<BeaconUpgradedEvent>;
export interface InitializedEventObject {
    version: number;
}
export declare type InitializedEvent = TypedEvent<[number], InitializedEventObject>;
export declare type InitializedEventFilter = TypedEventFilter<InitializedEvent>;
export interface IssuanceEventObject {
    issuer: string;
    recipient: string;
    amount: BigNumber;
    baskets: BigNumber;
}
export declare type IssuanceEvent = TypedEvent<[string, string, BigNumber, BigNumber], IssuanceEventObject>;
export declare type IssuanceEventFilter = TypedEventFilter<IssuanceEvent>;
export interface IssuanceThrottleSetEventObject {
    oldVal: ThrottleLib.ParamsStructOutput;
    newVal: ThrottleLib.ParamsStructOutput;
}
export declare type IssuanceThrottleSetEvent = TypedEvent<[
    ThrottleLib.ParamsStructOutput,
    ThrottleLib.ParamsStructOutput
], IssuanceThrottleSetEventObject>;
export declare type IssuanceThrottleSetEventFilter = TypedEventFilter<IssuanceThrottleSetEvent>;
export interface MeltedEventObject {
    amount: BigNumber;
}
export declare type MeltedEvent = TypedEvent<[BigNumber], MeltedEventObject>;
export declare type MeltedEventFilter = TypedEventFilter<MeltedEvent>;
export interface RedemptionEventObject {
    redeemer: string;
    recipient: string;
    amount: BigNumber;
    baskets: BigNumber;
}
export declare type RedemptionEvent = TypedEvent<[string, string, BigNumber, BigNumber], RedemptionEventObject>;
export declare type RedemptionEventFilter = TypedEventFilter<RedemptionEvent>;
export interface RedemptionThrottleSetEventObject {
    oldVal: ThrottleLib.ParamsStructOutput;
    newVal: ThrottleLib.ParamsStructOutput;
}
export declare type RedemptionThrottleSetEvent = TypedEvent<[
    ThrottleLib.ParamsStructOutput,
    ThrottleLib.ParamsStructOutput
], RedemptionThrottleSetEventObject>;
export declare type RedemptionThrottleSetEventFilter = TypedEventFilter<RedemptionThrottleSetEvent>;
export interface TransferEventObject {
    from: string;
    to: string;
    value: BigNumber;
}
export declare type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>;
export declare type TransferEventFilter = TypedEventFilter<TransferEvent>;
export interface UpgradedEventObject {
    implementation: string;
}
export declare type UpgradedEvent = TypedEvent<[string], UpgradedEventObject>;
export declare type UpgradedEventFilter = TypedEventFilter<UpgradedEvent>;
export interface Rtoken extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: RtokenInterface;
    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: {
        DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<[string]>;
        MAX_EXCHANGE_RATE(overrides?: CallOverrides): Promise<[BigNumber]>;
        MAX_THROTTLE_PCT_AMT(overrides?: CallOverrides): Promise<[BigNumber]>;
        MAX_THROTTLE_RATE_AMT(overrides?: CallOverrides): Promise<[BigNumber]>;
        MIN_EXCHANGE_RATE(overrides?: CallOverrides): Promise<[BigNumber]>;
        MIN_THROTTLE_RATE_AMT(overrides?: CallOverrides): Promise<[BigNumber]>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        basketsNeeded(overrides?: CallOverrides): Promise<[BigNumber]>;
        decimals(overrides?: CallOverrides): Promise<[number]>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        init(main_: PromiseOrValue<string>, name_: PromiseOrValue<string>, symbol_: PromiseOrValue<string>, mandate_: PromiseOrValue<string>, issuanceThrottleParams_: ThrottleLib.ParamsStruct, redemptionThrottleParams_: ThrottleLib.ParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        issuanceAvailable(overrides?: CallOverrides): Promise<[BigNumber]>;
        issuanceThrottleParams(overrides?: CallOverrides): Promise<[ThrottleLib.ParamsStructOutput]>;
        issue(amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        issueTo(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        main(overrides?: CallOverrides): Promise<[string]>;
        mandate(overrides?: CallOverrides): Promise<[string]>;
        melt(amtRToken: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        mint(recipient: PromiseOrValue<string>, amtRToken: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        monetizeDonations(erc20: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        name(overrides?: CallOverrides): Promise<[string]>;
        nonces(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        permit(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, value: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        proxiableUUID(overrides?: CallOverrides): Promise<[string]>;
        redeem(amount: PromiseOrValue<BigNumberish>, basketNonce: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        redeemTo(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, basketNonce: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        redemptionAvailable(overrides?: CallOverrides): Promise<[BigNumber] & {
            available: BigNumber;
        }>;
        redemptionThrottleParams(overrides?: CallOverrides): Promise<[ThrottleLib.ParamsStructOutput]>;
        setBasketsNeeded(basketsNeeded_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setIssuanceThrottleParams(params: ThrottleLib.ParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setRedemptionThrottleParams(params: ThrottleLib.ParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
        totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
        transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        version(overrides?: CallOverrides): Promise<[string]>;
    };
    DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<string>;
    MAX_EXCHANGE_RATE(overrides?: CallOverrides): Promise<BigNumber>;
    MAX_THROTTLE_PCT_AMT(overrides?: CallOverrides): Promise<BigNumber>;
    MAX_THROTTLE_RATE_AMT(overrides?: CallOverrides): Promise<BigNumber>;
    MIN_EXCHANGE_RATE(overrides?: CallOverrides): Promise<BigNumber>;
    MIN_THROTTLE_RATE_AMT(overrides?: CallOverrides): Promise<BigNumber>;
    allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    basketsNeeded(overrides?: CallOverrides): Promise<BigNumber>;
    decimals(overrides?: CallOverrides): Promise<number>;
    decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    init(main_: PromiseOrValue<string>, name_: PromiseOrValue<string>, symbol_: PromiseOrValue<string>, mandate_: PromiseOrValue<string>, issuanceThrottleParams_: ThrottleLib.ParamsStruct, redemptionThrottleParams_: ThrottleLib.ParamsStruct, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    issuanceAvailable(overrides?: CallOverrides): Promise<BigNumber>;
    issuanceThrottleParams(overrides?: CallOverrides): Promise<ThrottleLib.ParamsStructOutput>;
    issue(amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    issueTo(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    main(overrides?: CallOverrides): Promise<string>;
    mandate(overrides?: CallOverrides): Promise<string>;
    melt(amtRToken: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    mint(recipient: PromiseOrValue<string>, amtRToken: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    monetizeDonations(erc20: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    name(overrides?: CallOverrides): Promise<string>;
    nonces(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    permit(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, value: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    proxiableUUID(overrides?: CallOverrides): Promise<string>;
    redeem(amount: PromiseOrValue<BigNumberish>, basketNonce: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    redeemTo(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, basketNonce: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    redemptionAvailable(overrides?: CallOverrides): Promise<BigNumber>;
    redemptionThrottleParams(overrides?: CallOverrides): Promise<ThrottleLib.ParamsStructOutput>;
    setBasketsNeeded(basketsNeeded_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setIssuanceThrottleParams(params: ThrottleLib.ParamsStruct, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setRedemptionThrottleParams(params: ThrottleLib.ParamsStruct, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    symbol(overrides?: CallOverrides): Promise<string>;
    totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
    transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    version(overrides?: CallOverrides): Promise<string>;
    callStatic: {
        DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<string>;
        MAX_EXCHANGE_RATE(overrides?: CallOverrides): Promise<BigNumber>;
        MAX_THROTTLE_PCT_AMT(overrides?: CallOverrides): Promise<BigNumber>;
        MAX_THROTTLE_RATE_AMT(overrides?: CallOverrides): Promise<BigNumber>;
        MIN_EXCHANGE_RATE(overrides?: CallOverrides): Promise<BigNumber>;
        MIN_THROTTLE_RATE_AMT(overrides?: CallOverrides): Promise<BigNumber>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        basketsNeeded(overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<number>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        init(main_: PromiseOrValue<string>, name_: PromiseOrValue<string>, symbol_: PromiseOrValue<string>, mandate_: PromiseOrValue<string>, issuanceThrottleParams_: ThrottleLib.ParamsStruct, redemptionThrottleParams_: ThrottleLib.ParamsStruct, overrides?: CallOverrides): Promise<void>;
        issuanceAvailable(overrides?: CallOverrides): Promise<BigNumber>;
        issuanceThrottleParams(overrides?: CallOverrides): Promise<ThrottleLib.ParamsStructOutput>;
        issue(amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        issueTo(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        main(overrides?: CallOverrides): Promise<string>;
        mandate(overrides?: CallOverrides): Promise<string>;
        melt(amtRToken: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        mint(recipient: PromiseOrValue<string>, amtRToken: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        monetizeDonations(erc20: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        name(overrides?: CallOverrides): Promise<string>;
        nonces(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        permit(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, value: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        proxiableUUID(overrides?: CallOverrides): Promise<string>;
        redeem(amount: PromiseOrValue<BigNumberish>, basketNonce: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        redeemTo(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, basketNonce: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        redemptionAvailable(overrides?: CallOverrides): Promise<BigNumber>;
        redemptionThrottleParams(overrides?: CallOverrides): Promise<ThrottleLib.ParamsStructOutput>;
        setBasketsNeeded(basketsNeeded_: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setIssuanceThrottleParams(params: ThrottleLib.ParamsStruct, overrides?: CallOverrides): Promise<void>;
        setRedemptionThrottleParams(params: ThrottleLib.ParamsStruct, overrides?: CallOverrides): Promise<void>;
        symbol(overrides?: CallOverrides): Promise<string>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        version(overrides?: CallOverrides): Promise<string>;
    };
    filters: {
        'AdminChanged(address,address)'(previousAdmin?: null, newAdmin?: null): AdminChangedEventFilter;
        AdminChanged(previousAdmin?: null, newAdmin?: null): AdminChangedEventFilter;
        'Approval(address,address,uint256)'(owner?: PromiseOrValue<string> | null, spender?: PromiseOrValue<string> | null, value?: null): ApprovalEventFilter;
        Approval(owner?: PromiseOrValue<string> | null, spender?: PromiseOrValue<string> | null, value?: null): ApprovalEventFilter;
        'BasketsNeededChanged(uint192,uint192)'(oldBasketsNeeded?: null, newBasketsNeeded?: null): BasketsNeededChangedEventFilter;
        BasketsNeededChanged(oldBasketsNeeded?: null, newBasketsNeeded?: null): BasketsNeededChangedEventFilter;
        'BeaconUpgraded(address)'(beacon?: PromiseOrValue<string> | null): BeaconUpgradedEventFilter;
        BeaconUpgraded(beacon?: PromiseOrValue<string> | null): BeaconUpgradedEventFilter;
        'Initialized(uint8)'(version?: null): InitializedEventFilter;
        Initialized(version?: null): InitializedEventFilter;
        'Issuance(address,address,uint256,uint192)'(issuer?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amount?: PromiseOrValue<BigNumberish> | null, baskets?: null): IssuanceEventFilter;
        Issuance(issuer?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amount?: PromiseOrValue<BigNumberish> | null, baskets?: null): IssuanceEventFilter;
        'IssuanceThrottleSet(tuple,tuple)'(oldVal?: null, newVal?: null): IssuanceThrottleSetEventFilter;
        IssuanceThrottleSet(oldVal?: null, newVal?: null): IssuanceThrottleSetEventFilter;
        'Melted(uint256)'(amount?: null): MeltedEventFilter;
        Melted(amount?: null): MeltedEventFilter;
        'Redemption(address,address,uint256,uint192)'(redeemer?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amount?: PromiseOrValue<BigNumberish> | null, baskets?: null): RedemptionEventFilter;
        Redemption(redeemer?: PromiseOrValue<string> | null, recipient?: PromiseOrValue<string> | null, amount?: PromiseOrValue<BigNumberish> | null, baskets?: null): RedemptionEventFilter;
        'RedemptionThrottleSet(tuple,tuple)'(oldVal?: null, newVal?: null): RedemptionThrottleSetEventFilter;
        RedemptionThrottleSet(oldVal?: null, newVal?: null): RedemptionThrottleSetEventFilter;
        'Transfer(address,address,uint256)'(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, value?: null): TransferEventFilter;
        Transfer(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, value?: null): TransferEventFilter;
        'Upgraded(address)'(implementation?: PromiseOrValue<string> | null): UpgradedEventFilter;
        Upgraded(implementation?: PromiseOrValue<string> | null): UpgradedEventFilter;
    };
    estimateGas: {
        DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<BigNumber>;
        MAX_EXCHANGE_RATE(overrides?: CallOverrides): Promise<BigNumber>;
        MAX_THROTTLE_PCT_AMT(overrides?: CallOverrides): Promise<BigNumber>;
        MAX_THROTTLE_RATE_AMT(overrides?: CallOverrides): Promise<BigNumber>;
        MIN_EXCHANGE_RATE(overrides?: CallOverrides): Promise<BigNumber>;
        MIN_THROTTLE_RATE_AMT(overrides?: CallOverrides): Promise<BigNumber>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        basketsNeeded(overrides?: CallOverrides): Promise<BigNumber>;
        decimals(overrides?: CallOverrides): Promise<BigNumber>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        init(main_: PromiseOrValue<string>, name_: PromiseOrValue<string>, symbol_: PromiseOrValue<string>, mandate_: PromiseOrValue<string>, issuanceThrottleParams_: ThrottleLib.ParamsStruct, redemptionThrottleParams_: ThrottleLib.ParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        issuanceAvailable(overrides?: CallOverrides): Promise<BigNumber>;
        issuanceThrottleParams(overrides?: CallOverrides): Promise<BigNumber>;
        issue(amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        issueTo(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        main(overrides?: CallOverrides): Promise<BigNumber>;
        mandate(overrides?: CallOverrides): Promise<BigNumber>;
        melt(amtRToken: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        mint(recipient: PromiseOrValue<string>, amtRToken: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        monetizeDonations(erc20: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        nonces(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        permit(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, value: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        proxiableUUID(overrides?: CallOverrides): Promise<BigNumber>;
        redeem(amount: PromiseOrValue<BigNumberish>, basketNonce: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        redeemTo(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, basketNonce: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        redemptionAvailable(overrides?: CallOverrides): Promise<BigNumber>;
        redemptionThrottleParams(overrides?: CallOverrides): Promise<BigNumber>;
        setBasketsNeeded(basketsNeeded_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setIssuanceThrottleParams(params: ThrottleLib.ParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setRedemptionThrottleParams(params: ThrottleLib.ParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        version(overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        DOMAIN_SEPARATOR(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MAX_EXCHANGE_RATE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MAX_THROTTLE_PCT_AMT(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MAX_THROTTLE_RATE_AMT(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MIN_EXCHANGE_RATE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MIN_THROTTLE_RATE_AMT(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        allowance(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        approve(spender: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        balanceOf(account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        basketsNeeded(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decimals(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        decreaseAllowance(spender: PromiseOrValue<string>, subtractedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        increaseAllowance(spender: PromiseOrValue<string>, addedValue: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        init(main_: PromiseOrValue<string>, name_: PromiseOrValue<string>, symbol_: PromiseOrValue<string>, mandate_: PromiseOrValue<string>, issuanceThrottleParams_: ThrottleLib.ParamsStruct, redemptionThrottleParams_: ThrottleLib.ParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        issuanceAvailable(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        issuanceThrottleParams(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        issue(amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        issueTo(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        main(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        mandate(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        melt(amtRToken: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        mint(recipient: PromiseOrValue<string>, amtRToken: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        monetizeDonations(erc20: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        nonces(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        permit(owner: PromiseOrValue<string>, spender: PromiseOrValue<string>, value: PromiseOrValue<BigNumberish>, deadline: PromiseOrValue<BigNumberish>, v: PromiseOrValue<BigNumberish>, r: PromiseOrValue<BytesLike>, s: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        proxiableUUID(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        redeem(amount: PromiseOrValue<BigNumberish>, basketNonce: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        redeemTo(recipient: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, basketNonce: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        redemptionAvailable(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        redemptionThrottleParams(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        setBasketsNeeded(basketsNeeded_: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setIssuanceThrottleParams(params: ThrottleLib.ParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setRedemptionThrottleParams(params: ThrottleLib.ParamsStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transfer(to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        upgradeTo(newImplementation: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        upgradeToAndCall(newImplementation: PromiseOrValue<string>, data: PromiseOrValue<BytesLike>, overrides?: PayableOverrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        version(overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
