import type { BaseContract, BigNumber, BigNumberish, BytesLike, CallOverrides, ContractTransaction, Overrides, 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 AttoDecimal {
    type InstanceStruct = {
        mantissa: PromiseOrValue<BigNumberish>;
    };
    type InstanceStructOutput = [BigNumber] & {
        mantissa: BigNumber;
    };
}
export declare namespace SomaStarter {
    type PropsStruct = {
        issuanceLimit: PromiseOrValue<BigNumberish>;
        startsAt: PromiseOrValue<BigNumberish>;
        endsAt: PromiseOrValue<BigNumberish>;
        paymentToken: PromiseOrValue<string>;
        issuanceToken: PromiseOrValue<string>;
        fee: AttoDecimal.InstanceStruct;
        rate: AttoDecimal.InstanceStruct;
    };
    type PropsStructOutput = [
        BigNumber,
        BigNumber,
        BigNumber,
        string,
        string,
        AttoDecimal.InstanceStructOutput,
        AttoDecimal.InstanceStructOutput
    ] & {
        issuanceLimit: BigNumber;
        startsAt: BigNumber;
        endsAt: BigNumber;
        paymentToken: string;
        issuanceToken: string;
        fee: AttoDecimal.InstanceStructOutput;
        rate: AttoDecimal.InstanceStructOutput;
    };
    type IntervalStruct = {
        startsAt: PromiseOrValue<BigNumberish>;
        unlockingPart: AttoDecimal.InstanceStruct;
    };
    type IntervalStructOutput = [
        BigNumber,
        AttoDecimal.InstanceStructOutput
    ] & {
        startsAt: BigNumber;
        unlockingPart: AttoDecimal.InstanceStructOutput;
    };
    type AccountStateStruct = {
        limitIndex: PromiseOrValue<BigNumberish>;
        paymentSum: PromiseOrValue<BigNumberish>;
    };
    type AccountStateStructOutput = [BigNumber, BigNumber] & {
        limitIndex: BigNumber;
        paymentSum: BigNumber;
    };
    type ComplexAccountStateStruct = {
        issuanceAmount: PromiseOrValue<BigNumberish>;
        withdrawnIssuanceAmount: PromiseOrValue<BigNumberish>;
    };
    type ComplexAccountStateStructOutput = [BigNumber, BigNumber] & {
        issuanceAmount: BigNumber;
        withdrawnIssuanceAmount: BigNumber;
    };
    type LinearPropsStruct = {
        endsAt: PromiseOrValue<BigNumberish>;
        duration: PromiseOrValue<BigNumberish>;
    };
    type LinearPropsStructOutput = [BigNumber, BigNumber] & {
        endsAt: BigNumber;
        duration: BigNumber;
    };
    type StateStruct = {
        available: PromiseOrValue<BigNumberish>;
        issuance: PromiseOrValue<BigNumberish>;
        lockedPayments: PromiseOrValue<BigNumberish>;
        unlockedPayments: PromiseOrValue<BigNumberish>;
        nominatedOwner: PromiseOrValue<string>;
        owner: PromiseOrValue<string>;
        paymentLimits: PromiseOrValue<BigNumberish>[];
        requiredPrivileges: PromiseOrValue<BytesLike>;
    };
    type StateStructOutput = [
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        string,
        string,
        BigNumber[],
        string
    ] & {
        available: BigNumber;
        issuance: BigNumber;
        lockedPayments: BigNumber;
        unlockedPayments: BigNumber;
        nominatedOwner: string;
        owner: string;
        paymentLimits: BigNumber[];
        requiredPrivileges: string;
    };
}
export interface SomaStarterInterface extends utils.Interface {
    functions: {
        "GLOBAL_ADMIN_ROLE()": FunctionFragment;
        "GLOBAL_WHITELIST_ROLE()": FunctionFragment;
        "LOCAL_ADMIN_ROLE()": FunctionFragment;
        "LOCAL_WHITELIST_ROLE()": FunctionFragment;
        "SOMA()": FunctionFragment;
        "TOKEN_RECOVERY_ROLE()": FunctionFragment;
        "acceptPoolOwnership(uint256)": FunctionFragment;
        "changeLimit(uint256,uint256,uint256)": FunctionFragment;
        "collectFee(uint256)": FunctionFragment;
        "collectedFees(address)": FunctionFragment;
        "createIntervalPool((uint256,uint256,uint256,address,address,(uint256),(uint256)),uint256,bytes32,address,(uint256),(uint256,(uint256))[])": FunctionFragment;
        "createLinearPool((uint256,uint256,uint256,address,address,(uint256),(uint256)),uint256,bytes32,address,(uint256),uint256)": FunctionFragment;
        "createPaymentLimit(uint256,uint256)": FunctionFragment;
        "createSimplePool((uint256,uint256,uint256,address,address,(uint256),(uint256)),uint256,bytes32,address)": FunctionFragment;
        "getRoleAdmin(bytes32)": FunctionFragment;
        "hasRole(bytes32,address)": FunctionFragment;
        "increaseIssuance(uint256,uint256)": FunctionFragment;
        "initialize()": FunctionFragment;
        "intervalPoolAccount(uint256,address)": FunctionFragment;
        "intervalPoolProps(uint256)": FunctionFragment;
        "linearPoolAccount(uint256,address)": FunctionFragment;
        "linearPoolProps(uint256)": FunctionFragment;
        "multicall(bytes[])": FunctionFragment;
        "nominateNewPoolOwner(uint256,address)": FunctionFragment;
        "pause()": FunctionFragment;
        "paused()": FunctionFragment;
        "poolAccount(uint256,address)": FunctionFragment;
        "poolProps(uint256)": FunctionFragment;
        "poolState(uint256)": FunctionFragment;
        "poolsCount()": FunctionFragment;
        "recoverTokens(address,address,uint256)": FunctionFragment;
        "setAccountsLimit(uint256,uint256,address[])": FunctionFragment;
        "supportsInterface(bytes4)": FunctionFragment;
        "swap(uint256,uint256)": FunctionFragment;
        "unlockInterval(uint256,uint256)": FunctionFragment;
        "unlockLinear(uint256)": FunctionFragment;
        "unpause()": FunctionFragment;
        "updateRequiredPrivileges(uint256,bytes32)": FunctionFragment;
        "withdrawFee(address,address)": FunctionFragment;
        "withdrawPayments(uint256)": FunctionFragment;
        "withdrawUnsold(uint256)": FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: "GLOBAL_ADMIN_ROLE" | "GLOBAL_WHITELIST_ROLE" | "LOCAL_ADMIN_ROLE" | "LOCAL_WHITELIST_ROLE" | "SOMA" | "TOKEN_RECOVERY_ROLE" | "acceptPoolOwnership" | "changeLimit" | "collectFee" | "collectedFees" | "createIntervalPool" | "createLinearPool" | "createPaymentLimit" | "createSimplePool" | "getRoleAdmin" | "hasRole" | "increaseIssuance" | "initialize" | "intervalPoolAccount" | "intervalPoolProps" | "linearPoolAccount" | "linearPoolProps" | "multicall" | "nominateNewPoolOwner" | "pause" | "paused" | "poolAccount" | "poolProps" | "poolState" | "poolsCount" | "recoverTokens" | "setAccountsLimit" | "supportsInterface" | "swap" | "unlockInterval" | "unlockLinear" | "unpause" | "updateRequiredPrivileges" | "withdrawFee" | "withdrawPayments" | "withdrawUnsold"): FunctionFragment;
    encodeFunctionData(functionFragment: "GLOBAL_ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "GLOBAL_WHITELIST_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "LOCAL_ADMIN_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "LOCAL_WHITELIST_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "SOMA", values?: undefined): string;
    encodeFunctionData(functionFragment: "TOKEN_RECOVERY_ROLE", values?: undefined): string;
    encodeFunctionData(functionFragment: "acceptPoolOwnership", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "changeLimit", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "collectFee", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "collectedFees", values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "createIntervalPool", values: [
        SomaStarter.PropsStruct,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>,
        AttoDecimal.InstanceStruct,
        SomaStarter.IntervalStruct[]
    ]): string;
    encodeFunctionData(functionFragment: "createLinearPool", values: [
        SomaStarter.PropsStruct,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>,
        AttoDecimal.InstanceStruct,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "createPaymentLimit", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "createSimplePool", values: [
        SomaStarter.PropsStruct,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BytesLike>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: "getRoleAdmin", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "hasRole", values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "increaseIssuance", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "initialize", values?: undefined): string;
    encodeFunctionData(functionFragment: "intervalPoolAccount", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "intervalPoolProps", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "linearPoolAccount", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "linearPoolProps", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "multicall", values: [PromiseOrValue<BytesLike>[]]): string;
    encodeFunctionData(functionFragment: "nominateNewPoolOwner", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "pause", values?: undefined): string;
    encodeFunctionData(functionFragment: "paused", values?: undefined): string;
    encodeFunctionData(functionFragment: "poolAccount", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "poolProps", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "poolState", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "poolsCount", values?: undefined): string;
    encodeFunctionData(functionFragment: "recoverTokens", values: [
        PromiseOrValue<string>,
        PromiseOrValue<string>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: "setAccountsLimit", values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>[]
    ]): string;
    encodeFunctionData(functionFragment: "supportsInterface", values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "swap", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "unlockInterval", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "unlockLinear", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "unpause", values?: undefined): string;
    encodeFunctionData(functionFragment: "updateRequiredPrivileges", values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: "withdrawFee", values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: "withdrawPayments", values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: "withdrawUnsold", values: [PromiseOrValue<BigNumberish>]): string;
    decodeFunctionResult(functionFragment: "GLOBAL_ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "GLOBAL_WHITELIST_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "LOCAL_ADMIN_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "LOCAL_WHITELIST_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "SOMA", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "TOKEN_RECOVERY_ROLE", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "acceptPoolOwnership", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "changeLimit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "collectFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "collectedFees", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "createIntervalPool", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "createLinearPool", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "createPaymentLimit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "createSimplePool", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "getRoleAdmin", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "hasRole", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "increaseIssuance", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "initialize", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "intervalPoolAccount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "intervalPoolProps", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "linearPoolAccount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "linearPoolProps", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "multicall", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "nominateNewPoolOwner", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "pause", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "paused", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "poolAccount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "poolProps", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "poolState", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "poolsCount", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "recoverTokens", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "setAccountsLimit", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "supportsInterface", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "swap", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unlockInterval", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unlockLinear", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "unpause", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "updateRequiredPrivileges", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawFee", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawPayments", data: BytesLike): Result;
    decodeFunctionResult(functionFragment: "withdrawUnsold", data: BytesLike): Result;
    events: {
        "AccountLimitChanged(uint256,address,uint256)": EventFragment;
        "FeeWithdrawn(address,uint256)": EventFragment;
        "ImmediatelyUnlockingPartUpdated(uint256,uint256)": EventFragment;
        "Initialized(uint8)": EventFragment;
        "IntervalCreated(uint256,uint256,uint256)": EventFragment;
        "IntervalPoolUnlocking(uint256,address,uint256)": EventFragment;
        "IssuanceIncreased(uint256,uint256)": EventFragment;
        "LinearPoolUnlocking(uint256,address,uint256)": EventFragment;
        "LinearUnlockingEndingTimestampUpdated(uint256,uint256)": EventFragment;
        "Paused(address)": EventFragment;
        "PaymentLimitChanged(uint256,uint256,uint256)": EventFragment;
        "PaymentLimitCreated(uint256,uint256,uint256)": EventFragment;
        "PaymentUnlocked(uint256,uint256,uint256)": EventFragment;
        "PaymentsWithdrawn(uint256,uint256)": EventFragment;
        "PoolCreated(uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)": EventFragment;
        "PoolOwnerChanged(uint256,address)": EventFragment;
        "PoolOwnerNominated(uint256,address)": EventFragment;
        "PoolPrivilegesChanged(uint256,bytes32)": EventFragment;
        "Swap(uint256,address,uint256,uint256,uint256)": EventFragment;
        "TokensRecovered(address,address,uint256,address)": EventFragment;
        "Unpaused(address)": EventFragment;
        "UnsoldWithdrawn(uint256,uint256)": EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: "AccountLimitChanged"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "FeeWithdrawn"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "ImmediatelyUnlockingPartUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Initialized"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "IntervalCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "IntervalPoolUnlocking"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "IssuanceIncreased"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LinearPoolUnlocking"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "LinearUnlockingEndingTimestampUpdated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Paused"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PaymentLimitChanged"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PaymentLimitCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PaymentUnlocked"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PaymentsWithdrawn"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PoolCreated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PoolOwnerChanged"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PoolOwnerNominated"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "PoolPrivilegesChanged"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Swap"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "TokensRecovered"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "Unpaused"): EventFragment;
    getEvent(nameOrSignatureOrTopic: "UnsoldWithdrawn"): EventFragment;
}
export interface AccountLimitChangedEventObject {
    poolIndex: BigNumber;
    address_: string;
    limitIndex: BigNumber;
}
export declare type AccountLimitChangedEvent = TypedEvent<[
    BigNumber,
    string,
    BigNumber
], AccountLimitChangedEventObject>;
export declare type AccountLimitChangedEventFilter = TypedEventFilter<AccountLimitChangedEvent>;
export interface FeeWithdrawnEventObject {
    token: string;
    amount: BigNumber;
}
export declare type FeeWithdrawnEvent = TypedEvent<[
    string,
    BigNumber
], FeeWithdrawnEventObject>;
export declare type FeeWithdrawnEventFilter = TypedEventFilter<FeeWithdrawnEvent>;
export interface ImmediatelyUnlockingPartUpdatedEventObject {
    poolIndex: BigNumber;
    mantissa: BigNumber;
}
export declare type ImmediatelyUnlockingPartUpdatedEvent = TypedEvent<[
    BigNumber,
    BigNumber
], ImmediatelyUnlockingPartUpdatedEventObject>;
export declare type ImmediatelyUnlockingPartUpdatedEventFilter = TypedEventFilter<ImmediatelyUnlockingPartUpdatedEvent>;
export interface InitializedEventObject {
    version: number;
}
export declare type InitializedEvent = TypedEvent<[number], InitializedEventObject>;
export declare type InitializedEventFilter = TypedEventFilter<InitializedEvent>;
export interface IntervalCreatedEventObject {
    poolIndex: BigNumber;
    startsAt: BigNumber;
    unlockingPart: BigNumber;
}
export declare type IntervalCreatedEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber
], IntervalCreatedEventObject>;
export declare type IntervalCreatedEventFilter = TypedEventFilter<IntervalCreatedEvent>;
export interface IntervalPoolUnlockingEventObject {
    poolIndex: BigNumber;
    account: string;
    amount: BigNumber;
}
export declare type IntervalPoolUnlockingEvent = TypedEvent<[
    BigNumber,
    string,
    BigNumber
], IntervalPoolUnlockingEventObject>;
export declare type IntervalPoolUnlockingEventFilter = TypedEventFilter<IntervalPoolUnlockingEvent>;
export interface IssuanceIncreasedEventObject {
    poolIndex: BigNumber;
    amount: BigNumber;
}
export declare type IssuanceIncreasedEvent = TypedEvent<[
    BigNumber,
    BigNumber
], IssuanceIncreasedEventObject>;
export declare type IssuanceIncreasedEventFilter = TypedEventFilter<IssuanceIncreasedEvent>;
export interface LinearPoolUnlockingEventObject {
    poolIndex: BigNumber;
    account: string;
    amount: BigNumber;
}
export declare type LinearPoolUnlockingEvent = TypedEvent<[
    BigNumber,
    string,
    BigNumber
], LinearPoolUnlockingEventObject>;
export declare type LinearPoolUnlockingEventFilter = TypedEventFilter<LinearPoolUnlockingEvent>;
export interface LinearUnlockingEndingTimestampUpdatedEventObject {
    poolIndex: BigNumber;
    timestamp: BigNumber;
}
export declare type LinearUnlockingEndingTimestampUpdatedEvent = TypedEvent<[
    BigNumber,
    BigNumber
], LinearUnlockingEndingTimestampUpdatedEventObject>;
export declare type LinearUnlockingEndingTimestampUpdatedEventFilter = TypedEventFilter<LinearUnlockingEndingTimestampUpdatedEvent>;
export interface PausedEventObject {
    account: string;
}
export declare type PausedEvent = TypedEvent<[string], PausedEventObject>;
export declare type PausedEventFilter = TypedEventFilter<PausedEvent>;
export interface PaymentLimitChangedEventObject {
    poolIndex: BigNumber;
    limitIndex: BigNumber;
    newLimit: BigNumber;
}
export declare type PaymentLimitChangedEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber
], PaymentLimitChangedEventObject>;
export declare type PaymentLimitChangedEventFilter = TypedEventFilter<PaymentLimitChangedEvent>;
export interface PaymentLimitCreatedEventObject {
    poolIndex: BigNumber;
    limitIndex: BigNumber;
    limit: BigNumber;
}
export declare type PaymentLimitCreatedEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber
], PaymentLimitCreatedEventObject>;
export declare type PaymentLimitCreatedEventFilter = TypedEventFilter<PaymentLimitCreatedEvent>;
export interface PaymentUnlockedEventObject {
    poolIndex: BigNumber;
    unlockedAmount: BigNumber;
    collectedFee: BigNumber;
}
export declare type PaymentUnlockedEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber
], PaymentUnlockedEventObject>;
export declare type PaymentUnlockedEventFilter = TypedEventFilter<PaymentUnlockedEvent>;
export interface PaymentsWithdrawnEventObject {
    poolIndex: BigNumber;
    amount: BigNumber;
}
export declare type PaymentsWithdrawnEvent = TypedEvent<[
    BigNumber,
    BigNumber
], PaymentsWithdrawnEventObject>;
export declare type PaymentsWithdrawnEventFilter = TypedEventFilter<PaymentsWithdrawnEvent>;
export interface PoolCreatedEventObject {
    type_: number;
    paymentToken: string;
    issuanceToken: string;
    poolIndex: BigNumber;
    issuanceLimit: BigNumber;
    startsAt: BigNumber;
    endsAt: BigNumber;
    fee: BigNumber;
    rate: BigNumber;
    paymentLimit: BigNumber;
}
export declare type PoolCreatedEvent = TypedEvent<[
    number,
    string,
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber
], PoolCreatedEventObject>;
export declare type PoolCreatedEventFilter = TypedEventFilter<PoolCreatedEvent>;
export interface PoolOwnerChangedEventObject {
    poolIndex: BigNumber;
    newOwner: string;
}
export declare type PoolOwnerChangedEvent = TypedEvent<[
    BigNumber,
    string
], PoolOwnerChangedEventObject>;
export declare type PoolOwnerChangedEventFilter = TypedEventFilter<PoolOwnerChangedEvent>;
export interface PoolOwnerNominatedEventObject {
    poolIndex: BigNumber;
    nominatedOwner: string;
}
export declare type PoolOwnerNominatedEvent = TypedEvent<[
    BigNumber,
    string
], PoolOwnerNominatedEventObject>;
export declare type PoolOwnerNominatedEventFilter = TypedEventFilter<PoolOwnerNominatedEvent>;
export interface PoolPrivilegesChangedEventObject {
    poolIndex: BigNumber;
    newRequiredPrivileges: string;
}
export declare type PoolPrivilegesChangedEvent = TypedEvent<[
    BigNumber,
    string
], PoolPrivilegesChangedEventObject>;
export declare type PoolPrivilegesChangedEventFilter = TypedEventFilter<PoolPrivilegesChangedEvent>;
export interface SwapEventObject {
    poolIndex: BigNumber;
    caller: string;
    requestedPaymentAmount: BigNumber;
    paymentAmount: BigNumber;
    issuanceAmount: BigNumber;
}
export declare type SwapEvent = TypedEvent<[
    BigNumber,
    string,
    BigNumber,
    BigNumber,
    BigNumber
], SwapEventObject>;
export declare type SwapEventFilter = TypedEventFilter<SwapEvent>;
export interface TokensRecoveredEventObject {
    token: string;
    to: string;
    amount: BigNumber;
    sender: string;
}
export declare type TokensRecoveredEvent = TypedEvent<[
    string,
    string,
    BigNumber,
    string
], TokensRecoveredEventObject>;
export declare type TokensRecoveredEventFilter = TypedEventFilter<TokensRecoveredEvent>;
export interface UnpausedEventObject {
    account: string;
}
export declare type UnpausedEvent = TypedEvent<[string], UnpausedEventObject>;
export declare type UnpausedEventFilter = TypedEventFilter<UnpausedEvent>;
export interface UnsoldWithdrawnEventObject {
    poolIndex: BigNumber;
    amount: BigNumber;
}
export declare type UnsoldWithdrawnEvent = TypedEvent<[
    BigNumber,
    BigNumber
], UnsoldWithdrawnEventObject>;
export declare type UnsoldWithdrawnEventFilter = TypedEventFilter<UnsoldWithdrawnEvent>;
export interface SomaStarter extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: SomaStarterInterface;
    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: {
        GLOBAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        GLOBAL_WHITELIST_ROLE(overrides?: CallOverrides): Promise<[string]>;
        LOCAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        LOCAL_WHITELIST_ROLE(overrides?: CallOverrides): Promise<[string]>;
        SOMA(overrides?: CallOverrides): Promise<[string]>;
        TOKEN_RECOVERY_ROLE(overrides?: CallOverrides): Promise<[string]>;
        acceptPoolOwnership(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        changeLimit(poolIndex: PromiseOrValue<BigNumberish>, limitIndex: PromiseOrValue<BigNumberish>, newLimit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        collectFee(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        collectedFees(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        createIntervalPool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, immediatelyUnlockingPart: AttoDecimal.InstanceStruct, intervals: SomaStarter.IntervalStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        createLinearPool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, immediatelyUnlockingPart: AttoDecimal.InstanceStruct, linearUnlockingEndsAt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        createPaymentLimit(poolIndex: PromiseOrValue<BigNumberish>, limit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        createSimplePool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        increaseIssuance(poolIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        initialize(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        intervalPoolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            SomaStarter.AccountStateStructOutput,
            SomaStarter.ComplexAccountStateStructOutput,
            BigNumber
        ] & {
            state: SomaStarter.AccountStateStructOutput;
            complex: SomaStarter.ComplexAccountStateStructOutput;
            unlockedIntervalsCount: BigNumber;
        }>;
        intervalPoolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            SomaStarter.PropsStructOutput,
            AttoDecimal.InstanceStructOutput,
            SomaStarter.IntervalStructOutput[]
        ] & {
            props: SomaStarter.PropsStructOutput;
            immediatelyUnlockingPart: AttoDecimal.InstanceStructOutput;
            intervals: SomaStarter.IntervalStructOutput[];
        }>;
        linearPoolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            SomaStarter.AccountStateStructOutput,
            SomaStarter.ComplexAccountStateStructOutput,
            BigNumber
        ] & {
            state: SomaStarter.AccountStateStructOutput;
            complex: SomaStarter.ComplexAccountStateStructOutput;
            immediatelyUnlockedAmount: BigNumber;
        }>;
        linearPoolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            SomaStarter.PropsStructOutput,
            AttoDecimal.InstanceStructOutput,
            SomaStarter.LinearPropsStructOutput
        ] & {
            props: SomaStarter.PropsStructOutput;
            immediatelyUnlockingPart: AttoDecimal.InstanceStructOutput;
            linear: SomaStarter.LinearPropsStructOutput;
        }>;
        multicall(data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        nominateNewPoolOwner(poolIndex: PromiseOrValue<BigNumberish>, nominatedOwner_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        paused(overrides?: CallOverrides): Promise<[boolean]>;
        poolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            number,
            SomaStarter.AccountStateStructOutput
        ] & {
            type_: number;
            state: SomaStarter.AccountStateStructOutput;
        }>;
        poolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            number,
            SomaStarter.PropsStructOutput
        ] & {
            type_: number;
            props: SomaStarter.PropsStructOutput;
        }>;
        poolState(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            SomaStarter.StateStructOutput
        ] & {
            state: SomaStarter.StateStructOutput;
        }>;
        poolsCount(overrides?: CallOverrides): Promise<[BigNumber]>;
        recoverTokens(token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setAccountsLimit(poolIndex: PromiseOrValue<BigNumberish>, limitIndex: PromiseOrValue<BigNumberish>, accounts: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[boolean]>;
        swap(poolIndex: PromiseOrValue<BigNumberish>, requestedPaymentAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unlockInterval(poolIndex: PromiseOrValue<BigNumberish>, intervalIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unlockLinear(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updateRequiredPrivileges(poolIndex: PromiseOrValue<BigNumberish>, newRequiredPrivileges: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawFee(token: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawPayments(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        withdrawUnsold(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
    };
    GLOBAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    GLOBAL_WHITELIST_ROLE(overrides?: CallOverrides): Promise<string>;
    LOCAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    LOCAL_WHITELIST_ROLE(overrides?: CallOverrides): Promise<string>;
    SOMA(overrides?: CallOverrides): Promise<string>;
    TOKEN_RECOVERY_ROLE(overrides?: CallOverrides): Promise<string>;
    acceptPoolOwnership(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    changeLimit(poolIndex: PromiseOrValue<BigNumberish>, limitIndex: PromiseOrValue<BigNumberish>, newLimit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    collectFee(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    collectedFees(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    createIntervalPool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, immediatelyUnlockingPart: AttoDecimal.InstanceStruct, intervals: SomaStarter.IntervalStruct[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    createLinearPool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, immediatelyUnlockingPart: AttoDecimal.InstanceStruct, linearUnlockingEndsAt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    createPaymentLimit(poolIndex: PromiseOrValue<BigNumberish>, limit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    createSimplePool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    increaseIssuance(poolIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    initialize(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    intervalPoolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        SomaStarter.AccountStateStructOutput,
        SomaStarter.ComplexAccountStateStructOutput,
        BigNumber
    ] & {
        state: SomaStarter.AccountStateStructOutput;
        complex: SomaStarter.ComplexAccountStateStructOutput;
        unlockedIntervalsCount: BigNumber;
    }>;
    intervalPoolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        SomaStarter.PropsStructOutput,
        AttoDecimal.InstanceStructOutput,
        SomaStarter.IntervalStructOutput[]
    ] & {
        props: SomaStarter.PropsStructOutput;
        immediatelyUnlockingPart: AttoDecimal.InstanceStructOutput;
        intervals: SomaStarter.IntervalStructOutput[];
    }>;
    linearPoolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        SomaStarter.AccountStateStructOutput,
        SomaStarter.ComplexAccountStateStructOutput,
        BigNumber
    ] & {
        state: SomaStarter.AccountStateStructOutput;
        complex: SomaStarter.ComplexAccountStateStructOutput;
        immediatelyUnlockedAmount: BigNumber;
    }>;
    linearPoolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        SomaStarter.PropsStructOutput,
        AttoDecimal.InstanceStructOutput,
        SomaStarter.LinearPropsStructOutput
    ] & {
        props: SomaStarter.PropsStructOutput;
        immediatelyUnlockingPart: AttoDecimal.InstanceStructOutput;
        linear: SomaStarter.LinearPropsStructOutput;
    }>;
    multicall(data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    nominateNewPoolOwner(poolIndex: PromiseOrValue<BigNumberish>, nominatedOwner_: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    pause(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    paused(overrides?: CallOverrides): Promise<boolean>;
    poolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
        number,
        SomaStarter.AccountStateStructOutput
    ] & {
        type_: number;
        state: SomaStarter.AccountStateStructOutput;
    }>;
    poolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        number,
        SomaStarter.PropsStructOutput
    ] & {
        type_: number;
        props: SomaStarter.PropsStructOutput;
    }>;
    poolState(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<SomaStarter.StateStructOutput>;
    poolsCount(overrides?: CallOverrides): Promise<BigNumber>;
    recoverTokens(token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setAccountsLimit(poolIndex: PromiseOrValue<BigNumberish>, limitIndex: PromiseOrValue<BigNumberish>, accounts: PromiseOrValue<string>[], overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
    swap(poolIndex: PromiseOrValue<BigNumberish>, requestedPaymentAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unlockInterval(poolIndex: PromiseOrValue<BigNumberish>, intervalIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unlockLinear(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    unpause(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updateRequiredPrivileges(poolIndex: PromiseOrValue<BigNumberish>, newRequiredPrivileges: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawFee(token: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawPayments(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    withdrawUnsold(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    callStatic: {
        GLOBAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        GLOBAL_WHITELIST_ROLE(overrides?: CallOverrides): Promise<string>;
        LOCAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        LOCAL_WHITELIST_ROLE(overrides?: CallOverrides): Promise<string>;
        SOMA(overrides?: CallOverrides): Promise<string>;
        TOKEN_RECOVERY_ROLE(overrides?: CallOverrides): Promise<string>;
        acceptPoolOwnership(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        changeLimit(poolIndex: PromiseOrValue<BigNumberish>, limitIndex: PromiseOrValue<BigNumberish>, newLimit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        collectFee(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        collectedFees(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        createIntervalPool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, immediatelyUnlockingPart: AttoDecimal.InstanceStruct, intervals: SomaStarter.IntervalStruct[], overrides?: CallOverrides): Promise<[
            boolean,
            BigNumber
        ] & {
            success: boolean;
            poolIndex: BigNumber;
        }>;
        createLinearPool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, immediatelyUnlockingPart: AttoDecimal.InstanceStruct, linearUnlockingEndsAt: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            boolean,
            BigNumber
        ] & {
            success: boolean;
            poolIndex: BigNumber;
        }>;
        createPaymentLimit(poolIndex: PromiseOrValue<BigNumberish>, limit: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        createSimplePool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            boolean,
            BigNumber
        ] & {
            success: boolean;
            poolIndex: BigNumber;
        }>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        increaseIssuance(poolIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        initialize(overrides?: CallOverrides): Promise<void>;
        intervalPoolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            SomaStarter.AccountStateStructOutput,
            SomaStarter.ComplexAccountStateStructOutput,
            BigNumber
        ] & {
            state: SomaStarter.AccountStateStructOutput;
            complex: SomaStarter.ComplexAccountStateStructOutput;
            unlockedIntervalsCount: BigNumber;
        }>;
        intervalPoolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            SomaStarter.PropsStructOutput,
            AttoDecimal.InstanceStructOutput,
            SomaStarter.IntervalStructOutput[]
        ] & {
            props: SomaStarter.PropsStructOutput;
            immediatelyUnlockingPart: AttoDecimal.InstanceStructOutput;
            intervals: SomaStarter.IntervalStructOutput[];
        }>;
        linearPoolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            SomaStarter.AccountStateStructOutput,
            SomaStarter.ComplexAccountStateStructOutput,
            BigNumber
        ] & {
            state: SomaStarter.AccountStateStructOutput;
            complex: SomaStarter.ComplexAccountStateStructOutput;
            immediatelyUnlockedAmount: BigNumber;
        }>;
        linearPoolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            SomaStarter.PropsStructOutput,
            AttoDecimal.InstanceStructOutput,
            SomaStarter.LinearPropsStructOutput
        ] & {
            props: SomaStarter.PropsStructOutput;
            immediatelyUnlockingPart: AttoDecimal.InstanceStructOutput;
            linear: SomaStarter.LinearPropsStructOutput;
        }>;
        multicall(data: PromiseOrValue<BytesLike>[], overrides?: CallOverrides): Promise<string[]>;
        nominateNewPoolOwner(poolIndex: PromiseOrValue<BigNumberish>, nominatedOwner_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        pause(overrides?: CallOverrides): Promise<void>;
        paused(overrides?: CallOverrides): Promise<boolean>;
        poolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            number,
            SomaStarter.AccountStateStructOutput
        ] & {
            type_: number;
            state: SomaStarter.AccountStateStructOutput;
        }>;
        poolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            number,
            SomaStarter.PropsStructOutput
        ] & {
            type_: number;
            props: SomaStarter.PropsStructOutput;
        }>;
        poolState(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<SomaStarter.StateStructOutput>;
        poolsCount(overrides?: CallOverrides): Promise<BigNumber>;
        recoverTokens(token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        setAccountsLimit(poolIndex: PromiseOrValue<BigNumberish>, limitIndex: PromiseOrValue<BigNumberish>, accounts: PromiseOrValue<string>[], overrides?: CallOverrides): Promise<boolean>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        swap(poolIndex: PromiseOrValue<BigNumberish>, requestedPaymentAmount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber
        ] & {
            paymentAmount: BigNumber;
            issuanceAmount: BigNumber;
        }>;
        unlockInterval(poolIndex: PromiseOrValue<BigNumberish>, intervalIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        unlockLinear(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        unpause(overrides?: CallOverrides): Promise<void>;
        updateRequiredPrivileges(poolIndex: PromiseOrValue<BigNumberish>, newRequiredPrivileges: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        withdrawFee(token: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        withdrawPayments(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
        withdrawUnsold(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<boolean>;
    };
    filters: {
        "AccountLimitChanged(uint256,address,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, address_?: PromiseOrValue<string> | null, limitIndex?: PromiseOrValue<BigNumberish> | null): AccountLimitChangedEventFilter;
        AccountLimitChanged(poolIndex?: PromiseOrValue<BigNumberish> | null, address_?: PromiseOrValue<string> | null, limitIndex?: PromiseOrValue<BigNumberish> | null): AccountLimitChangedEventFilter;
        "FeeWithdrawn(address,uint256)"(token?: PromiseOrValue<string> | null, amount?: null): FeeWithdrawnEventFilter;
        FeeWithdrawn(token?: PromiseOrValue<string> | null, amount?: null): FeeWithdrawnEventFilter;
        "ImmediatelyUnlockingPartUpdated(uint256,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, mantissa?: null): ImmediatelyUnlockingPartUpdatedEventFilter;
        ImmediatelyUnlockingPartUpdated(poolIndex?: PromiseOrValue<BigNumberish> | null, mantissa?: null): ImmediatelyUnlockingPartUpdatedEventFilter;
        "Initialized(uint8)"(version?: null): InitializedEventFilter;
        Initialized(version?: null): InitializedEventFilter;
        "IntervalCreated(uint256,uint256,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, startsAt?: null, unlockingPart?: null): IntervalCreatedEventFilter;
        IntervalCreated(poolIndex?: PromiseOrValue<BigNumberish> | null, startsAt?: null, unlockingPart?: null): IntervalCreatedEventFilter;
        "IntervalPoolUnlocking(uint256,address,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, account?: PromiseOrValue<string> | null, amount?: null): IntervalPoolUnlockingEventFilter;
        IntervalPoolUnlocking(poolIndex?: PromiseOrValue<BigNumberish> | null, account?: PromiseOrValue<string> | null, amount?: null): IntervalPoolUnlockingEventFilter;
        "IssuanceIncreased(uint256,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, amount?: null): IssuanceIncreasedEventFilter;
        IssuanceIncreased(poolIndex?: PromiseOrValue<BigNumberish> | null, amount?: null): IssuanceIncreasedEventFilter;
        "LinearPoolUnlocking(uint256,address,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, account?: PromiseOrValue<string> | null, amount?: null): LinearPoolUnlockingEventFilter;
        LinearPoolUnlocking(poolIndex?: PromiseOrValue<BigNumberish> | null, account?: PromiseOrValue<string> | null, amount?: null): LinearPoolUnlockingEventFilter;
        "LinearUnlockingEndingTimestampUpdated(uint256,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, timestamp?: null): LinearUnlockingEndingTimestampUpdatedEventFilter;
        LinearUnlockingEndingTimestampUpdated(poolIndex?: PromiseOrValue<BigNumberish> | null, timestamp?: null): LinearUnlockingEndingTimestampUpdatedEventFilter;
        "Paused(address)"(account?: null): PausedEventFilter;
        Paused(account?: null): PausedEventFilter;
        "PaymentLimitChanged(uint256,uint256,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, limitIndex?: PromiseOrValue<BigNumberish> | null, newLimit?: null): PaymentLimitChangedEventFilter;
        PaymentLimitChanged(poolIndex?: PromiseOrValue<BigNumberish> | null, limitIndex?: PromiseOrValue<BigNumberish> | null, newLimit?: null): PaymentLimitChangedEventFilter;
        "PaymentLimitCreated(uint256,uint256,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, limitIndex?: PromiseOrValue<BigNumberish> | null, limit?: null): PaymentLimitCreatedEventFilter;
        PaymentLimitCreated(poolIndex?: PromiseOrValue<BigNumberish> | null, limitIndex?: PromiseOrValue<BigNumberish> | null, limit?: null): PaymentLimitCreatedEventFilter;
        "PaymentUnlocked(uint256,uint256,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, unlockedAmount?: null, collectedFee?: null): PaymentUnlockedEventFilter;
        PaymentUnlocked(poolIndex?: PromiseOrValue<BigNumberish> | null, unlockedAmount?: null, collectedFee?: null): PaymentUnlockedEventFilter;
        "PaymentsWithdrawn(uint256,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, amount?: null): PaymentsWithdrawnEventFilter;
        PaymentsWithdrawn(poolIndex?: PromiseOrValue<BigNumberish> | null, amount?: null): PaymentsWithdrawnEventFilter;
        "PoolCreated(uint8,address,address,uint256,uint256,uint256,uint256,uint256,uint256,uint256)"(type_?: null, paymentToken?: PromiseOrValue<string> | null, issuanceToken?: PromiseOrValue<string> | null, poolIndex?: null, issuanceLimit?: null, startsAt?: null, endsAt?: null, fee?: null, rate?: null, paymentLimit?: null): PoolCreatedEventFilter;
        PoolCreated(type_?: null, paymentToken?: PromiseOrValue<string> | null, issuanceToken?: PromiseOrValue<string> | null, poolIndex?: null, issuanceLimit?: null, startsAt?: null, endsAt?: null, fee?: null, rate?: null, paymentLimit?: null): PoolCreatedEventFilter;
        "PoolOwnerChanged(uint256,address)"(poolIndex?: PromiseOrValue<BigNumberish> | null, newOwner?: PromiseOrValue<string> | null): PoolOwnerChangedEventFilter;
        PoolOwnerChanged(poolIndex?: PromiseOrValue<BigNumberish> | null, newOwner?: PromiseOrValue<string> | null): PoolOwnerChangedEventFilter;
        "PoolOwnerNominated(uint256,address)"(poolIndex?: PromiseOrValue<BigNumberish> | null, nominatedOwner?: PromiseOrValue<string> | null): PoolOwnerNominatedEventFilter;
        PoolOwnerNominated(poolIndex?: PromiseOrValue<BigNumberish> | null, nominatedOwner?: PromiseOrValue<string> | null): PoolOwnerNominatedEventFilter;
        "PoolPrivilegesChanged(uint256,bytes32)"(poolIndex?: null, newRequiredPrivileges?: null): PoolPrivilegesChangedEventFilter;
        PoolPrivilegesChanged(poolIndex?: null, newRequiredPrivileges?: null): PoolPrivilegesChangedEventFilter;
        "Swap(uint256,address,uint256,uint256,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, caller?: PromiseOrValue<string> | null, requestedPaymentAmount?: null, paymentAmount?: null, issuanceAmount?: null): SwapEventFilter;
        Swap(poolIndex?: PromiseOrValue<BigNumberish> | null, caller?: PromiseOrValue<string> | null, requestedPaymentAmount?: null, paymentAmount?: null, issuanceAmount?: null): SwapEventFilter;
        "TokensRecovered(address,address,uint256,address)"(token?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, amount?: null, sender?: PromiseOrValue<string> | null): TokensRecoveredEventFilter;
        TokensRecovered(token?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, amount?: null, sender?: PromiseOrValue<string> | null): TokensRecoveredEventFilter;
        "Unpaused(address)"(account?: null): UnpausedEventFilter;
        Unpaused(account?: null): UnpausedEventFilter;
        "UnsoldWithdrawn(uint256,uint256)"(poolIndex?: PromiseOrValue<BigNumberish> | null, amount?: null): UnsoldWithdrawnEventFilter;
        UnsoldWithdrawn(poolIndex?: PromiseOrValue<BigNumberish> | null, amount?: null): UnsoldWithdrawnEventFilter;
    };
    estimateGas: {
        GLOBAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        GLOBAL_WHITELIST_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        LOCAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        LOCAL_WHITELIST_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        SOMA(overrides?: CallOverrides): Promise<BigNumber>;
        TOKEN_RECOVERY_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        acceptPoolOwnership(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        changeLimit(poolIndex: PromiseOrValue<BigNumberish>, limitIndex: PromiseOrValue<BigNumberish>, newLimit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        collectFee(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        collectedFees(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        createIntervalPool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, immediatelyUnlockingPart: AttoDecimal.InstanceStruct, intervals: SomaStarter.IntervalStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        createLinearPool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, immediatelyUnlockingPart: AttoDecimal.InstanceStruct, linearUnlockingEndsAt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        createPaymentLimit(poolIndex: PromiseOrValue<BigNumberish>, limit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        createSimplePool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        increaseIssuance(poolIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        initialize(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        intervalPoolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        intervalPoolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        linearPoolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        linearPoolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        multicall(data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        nominateNewPoolOwner(poolIndex: PromiseOrValue<BigNumberish>, nominatedOwner_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        paused(overrides?: CallOverrides): Promise<BigNumber>;
        poolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        poolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        poolState(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        poolsCount(overrides?: CallOverrides): Promise<BigNumber>;
        recoverTokens(token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setAccountsLimit(poolIndex: PromiseOrValue<BigNumberish>, limitIndex: PromiseOrValue<BigNumberish>, accounts: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        swap(poolIndex: PromiseOrValue<BigNumberish>, requestedPaymentAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unlockInterval(poolIndex: PromiseOrValue<BigNumberish>, intervalIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unlockLinear(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updateRequiredPrivileges(poolIndex: PromiseOrValue<BigNumberish>, newRequiredPrivileges: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawFee(token: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawPayments(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        withdrawUnsold(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
    };
    populateTransaction: {
        GLOBAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        GLOBAL_WHITELIST_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        LOCAL_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        LOCAL_WHITELIST_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        SOMA(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        TOKEN_RECOVERY_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        acceptPoolOwnership(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        changeLimit(poolIndex: PromiseOrValue<BigNumberish>, limitIndex: PromiseOrValue<BigNumberish>, newLimit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        collectFee(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        collectedFees(token: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        createIntervalPool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, immediatelyUnlockingPart: AttoDecimal.InstanceStruct, intervals: SomaStarter.IntervalStruct[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        createLinearPool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, immediatelyUnlockingPart: AttoDecimal.InstanceStruct, linearUnlockingEndsAt: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        createPaymentLimit(poolIndex: PromiseOrValue<BigNumberish>, limit: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        createSimplePool(props: SomaStarter.PropsStruct, paymentLimit: PromiseOrValue<BigNumberish>, requiredPrivileges: PromiseOrValue<BytesLike>, owner_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        increaseIssuance(poolIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        initialize(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        intervalPoolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        intervalPoolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        linearPoolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        linearPoolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        multicall(data: PromiseOrValue<BytesLike>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        nominateNewPoolOwner(poolIndex: PromiseOrValue<BigNumberish>, nominatedOwner_: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        paused(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolAccount(poolIndex: PromiseOrValue<BigNumberish>, address_: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolProps(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolState(poolIndex: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        poolsCount(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        recoverTokens(token: PromiseOrValue<string>, to: PromiseOrValue<string>, amount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setAccountsLimit(poolIndex: PromiseOrValue<BigNumberish>, limitIndex: PromiseOrValue<BigNumberish>, accounts: PromiseOrValue<string>[], overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        swap(poolIndex: PromiseOrValue<BigNumberish>, requestedPaymentAmount: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unlockInterval(poolIndex: PromiseOrValue<BigNumberish>, intervalIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unlockLinear(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updateRequiredPrivileges(poolIndex: PromiseOrValue<BigNumberish>, newRequiredPrivileges: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawFee(token: PromiseOrValue<string>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawPayments(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        withdrawUnsold(poolIndex: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
    };
}
//# sourceMappingURL=SomaStarter.d.ts.map