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 type AddressesStruct = {
    feeStrategy: PromiseOrValue<string>;
    stakingStrategy: PromiseOrValue<string>;
    optionPricing: PromiseOrValue<string>;
    priceOracle: PromiseOrValue<string>;
    volatilityOracle: PromiseOrValue<string>;
    feeDistributor: PromiseOrValue<string>;
    optionsTokenImplementation: PromiseOrValue<string>;
};
export declare type AddressesStructOutput = [string, string, string, string, string, string, string] & {
    feeStrategy: string;
    stakingStrategy: string;
    optionPricing: string;
    priceOracle: string;
    volatilityOracle: string;
    feeDistributor: string;
    optionsTokenImplementation: string;
};
export declare type EpochDataStruct = {
    expired: PromiseOrValue<boolean>;
    startTime: PromiseOrValue<BigNumberish>;
    expiry: PromiseOrValue<BigNumberish>;
    settlementPrice: PromiseOrValue<BigNumberish>;
    totalCollateralBalance: PromiseOrValue<BigNumberish>;
    collateralExchangeRate: PromiseOrValue<BigNumberish>;
    settlementCollateralExchangeRate: PromiseOrValue<BigNumberish>;
    strikes: PromiseOrValue<BigNumberish>[];
    totalRewardsCollected: PromiseOrValue<BigNumberish>[];
    rewardDistributionRatios: PromiseOrValue<BigNumberish>[];
    rewardTokensToDistribute: PromiseOrValue<string>[];
};
export declare type EpochDataStructOutput = [
    boolean,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber[],
    BigNumber[],
    BigNumber[],
    string[]
] & {
    expired: boolean;
    startTime: BigNumber;
    expiry: BigNumber;
    settlementPrice: BigNumber;
    totalCollateralBalance: BigNumber;
    collateralExchangeRate: BigNumber;
    settlementCollateralExchangeRate: BigNumber;
    strikes: BigNumber[];
    totalRewardsCollected: BigNumber[];
    rewardDistributionRatios: BigNumber[];
    rewardTokensToDistribute: string[];
};
export declare type EpochStrikeDataStruct = {
    strikeToken: PromiseOrValue<string>;
    totalCollateral: PromiseOrValue<BigNumberish>;
    activeCollateral: PromiseOrValue<BigNumberish>;
    totalPremiums: PromiseOrValue<BigNumberish>;
    checkpointPointer: PromiseOrValue<BigNumberish>;
    rewardStoredForPremiums: PromiseOrValue<BigNumberish>[];
    rewardDistributionRatiosForPremiums: PromiseOrValue<BigNumberish>[];
};
export declare type EpochStrikeDataStructOutput = [
    string,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber[],
    BigNumber[]
] & {
    strikeToken: string;
    totalCollateral: BigNumber;
    activeCollateral: BigNumber;
    totalPremiums: BigNumber;
    checkpointPointer: BigNumber;
    rewardStoredForPremiums: BigNumber[];
    rewardDistributionRatiosForPremiums: BigNumber[];
};
export interface DopexSsovV3Interface extends utils.Interface {
    functions: {
        'DEFAULT_ADMIN_ROLE()': FunctionFragment;
        'MANAGER_ROLE()': FunctionFragment;
        'addToContractWhitelist(address)': FunctionFragment;
        'addresses()': FunctionFragment;
        'approve(address,uint256)': FunctionFragment;
        'balanceOf(address)': FunctionFragment;
        'bootstrap(uint256[],uint256,string)': FunctionFragment;
        'burn(uint256)': FunctionFragment;
        'calculatePnl(uint256,uint256,uint256,uint256)': FunctionFragment;
        'calculatePremium(uint256,uint256,uint256)': FunctionFragment;
        'calculatePurchaseFees(uint256,uint256)': FunctionFragment;
        'calculateSettlementFees(uint256)': FunctionFragment;
        'changeAllowanceForStakingStrategy(bool,uint256)': FunctionFragment;
        'checkpoints(uint256,uint256,uint256)': FunctionFragment;
        'collateralPrecision()': FunctionFragment;
        'collateralToken()': FunctionFragment;
        'currentEpoch()': FunctionFragment;
        'deposit(uint256,uint256,address)': FunctionFragment;
        'emergencyWithdraw(address[],bool)': FunctionFragment;
        'expire()': FunctionFragment;
        'expire(uint256,uint256)': FunctionFragment;
        'expireDelayTolerance()': FunctionFragment;
        'getApproved(uint256)': FunctionFragment;
        'getCollateralPrice()': FunctionFragment;
        'getEpochData(uint256)': FunctionFragment;
        'getEpochStrikeCheckpointsLength(uint256,uint256)': FunctionFragment;
        'getEpochStrikeData(uint256,uint256)': FunctionFragment;
        'getEpochTimes(uint256)': FunctionFragment;
        'getRoleAdmin(bytes32)': FunctionFragment;
        'getUnderlyingPrice()': FunctionFragment;
        'getVolatility(uint256)': FunctionFragment;
        'grantRole(bytes32,address)': FunctionFragment;
        'hasRole(bytes32,address)': FunctionFragment;
        'isApprovedForAll(address,address)': FunctionFragment;
        'isContract(address)': FunctionFragment;
        'isPut()': FunctionFragment;
        'name()': FunctionFragment;
        'ownerOf(uint256)': FunctionFragment;
        'pause()': FunctionFragment;
        'paused()': FunctionFragment;
        'purchase(uint256,uint256,address)': FunctionFragment;
        'removeFromContractWhitelist(address)': FunctionFragment;
        'renounceRole(bytes32,address)': FunctionFragment;
        'revokeRole(bytes32,address)': FunctionFragment;
        'safeTransferFrom(address,address,uint256)': FunctionFragment;
        'safeTransferFrom(address,address,uint256,bytes)': FunctionFragment;
        'setAddresses((address,address,address,address,address,address,address))': FunctionFragment;
        'setApprovalForAll(address,bool)': FunctionFragment;
        'settle(uint256,uint256,uint256,address)': FunctionFragment;
        'supportsInterface(bytes4)': FunctionFragment;
        'symbol()': FunctionFragment;
        'tokenByIndex(uint256)': FunctionFragment;
        'tokenOfOwnerByIndex(address,uint256)': FunctionFragment;
        'tokenURI(uint256)': FunctionFragment;
        'totalSupply()': FunctionFragment;
        'transferFrom(address,address,uint256)': FunctionFragment;
        'underlyingSymbol()': FunctionFragment;
        'unpause()': FunctionFragment;
        'updateExpireDelayTolerance(uint256)': FunctionFragment;
        'whitelistedContracts(address)': FunctionFragment;
        'withdraw(uint256,address)': FunctionFragment;
        'writePosition(uint256)': FunctionFragment;
    };
    getFunction(nameOrSignatureOrTopic: 'DEFAULT_ADMIN_ROLE' | 'MANAGER_ROLE' | 'addToContractWhitelist' | 'addresses' | 'approve' | 'balanceOf' | 'bootstrap' | 'burn' | 'calculatePnl' | 'calculatePremium' | 'calculatePurchaseFees' | 'calculateSettlementFees' | 'changeAllowanceForStakingStrategy' | 'checkpoints' | 'collateralPrecision' | 'collateralToken' | 'currentEpoch' | 'deposit' | 'emergencyWithdraw' | 'expire()' | 'expire(uint256,uint256)' | 'expireDelayTolerance' | 'getApproved' | 'getCollateralPrice' | 'getEpochData' | 'getEpochStrikeCheckpointsLength' | 'getEpochStrikeData' | 'getEpochTimes' | 'getRoleAdmin' | 'getUnderlyingPrice' | 'getVolatility' | 'grantRole' | 'hasRole' | 'isApprovedForAll' | 'isContract' | 'isPut' | 'name' | 'ownerOf' | 'pause' | 'paused' | 'purchase' | 'removeFromContractWhitelist' | 'renounceRole' | 'revokeRole' | 'safeTransferFrom(address,address,uint256)' | 'safeTransferFrom(address,address,uint256,bytes)' | 'setAddresses' | 'setApprovalForAll' | 'settle' | 'supportsInterface' | 'symbol' | 'tokenByIndex' | 'tokenOfOwnerByIndex' | 'tokenURI' | 'totalSupply' | 'transferFrom' | 'underlyingSymbol' | 'unpause' | 'updateExpireDelayTolerance' | 'whitelistedContracts' | 'withdraw' | 'writePosition'): FunctionFragment;
    encodeFunctionData(functionFragment: 'DEFAULT_ADMIN_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'MANAGER_ROLE', values?: undefined): string;
    encodeFunctionData(functionFragment: 'addToContractWhitelist', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'addresses', values?: undefined): string;
    encodeFunctionData(functionFragment: 'approve', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'balanceOf', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'bootstrap', values: [PromiseOrValue<BigNumberish>[], PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'burn', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'calculatePnl', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>
    ]): string;
    encodeFunctionData(functionFragment: 'calculatePremium', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'calculatePurchaseFees', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'calculateSettlementFees', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'changeAllowanceForStakingStrategy', values: [PromiseOrValue<boolean>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'checkpoints', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'collateralPrecision', values?: undefined): string;
    encodeFunctionData(functionFragment: 'collateralToken', values?: undefined): string;
    encodeFunctionData(functionFragment: 'currentEpoch', values?: undefined): string;
    encodeFunctionData(functionFragment: 'deposit', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'emergencyWithdraw', values: [PromiseOrValue<string>[], PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'expire()', values?: undefined): string;
    encodeFunctionData(functionFragment: 'expire(uint256,uint256)', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'expireDelayTolerance', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getApproved', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getCollateralPrice', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getEpochData', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getEpochStrikeCheckpointsLength', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getEpochStrikeData', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getEpochTimes', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'getRoleAdmin', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'getUnderlyingPrice', values?: undefined): string;
    encodeFunctionData(functionFragment: 'getVolatility', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'grantRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'hasRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'isApprovedForAll', values: [PromiseOrValue<string>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'isContract', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'isPut', values?: undefined): string;
    encodeFunctionData(functionFragment: 'name', values?: undefined): string;
    encodeFunctionData(functionFragment: 'ownerOf', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'pause', values?: undefined): string;
    encodeFunctionData(functionFragment: 'paused', values?: undefined): string;
    encodeFunctionData(functionFragment: 'purchase', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'removeFromContractWhitelist', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'renounceRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'revokeRole', values: [PromiseOrValue<BytesLike>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'safeTransferFrom(address,address,uint256)', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>, PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'setAddresses', values: [AddressesStruct]): string;
    encodeFunctionData(functionFragment: 'setApprovalForAll', values: [PromiseOrValue<string>, PromiseOrValue<boolean>]): string;
    encodeFunctionData(functionFragment: 'settle', values: [
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<BigNumberish>,
        PromiseOrValue<string>
    ]): string;
    encodeFunctionData(functionFragment: 'supportsInterface', values: [PromiseOrValue<BytesLike>]): string;
    encodeFunctionData(functionFragment: 'symbol', values?: undefined): string;
    encodeFunctionData(functionFragment: 'tokenByIndex', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'tokenOfOwnerByIndex', values: [PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'tokenURI', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'totalSupply', values?: undefined): string;
    encodeFunctionData(functionFragment: 'transferFrom', values: [PromiseOrValue<string>, PromiseOrValue<string>, PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'underlyingSymbol', values?: undefined): string;
    encodeFunctionData(functionFragment: 'unpause', values?: undefined): string;
    encodeFunctionData(functionFragment: 'updateExpireDelayTolerance', values: [PromiseOrValue<BigNumberish>]): string;
    encodeFunctionData(functionFragment: 'whitelistedContracts', values: [PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'withdraw', values: [PromiseOrValue<BigNumberish>, PromiseOrValue<string>]): string;
    encodeFunctionData(functionFragment: 'writePosition', values: [PromiseOrValue<BigNumberish>]): string;
    decodeFunctionResult(functionFragment: 'DEFAULT_ADMIN_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'MANAGER_ROLE', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addToContractWhitelist', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'addresses', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'approve', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'balanceOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'bootstrap', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'burn', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'calculatePnl', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'calculatePremium', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'calculatePurchaseFees', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'calculateSettlementFees', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'changeAllowanceForStakingStrategy', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'checkpoints', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'collateralPrecision', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'collateralToken', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'currentEpoch', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'deposit', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'emergencyWithdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'expire()', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'expire(uint256,uint256)', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'expireDelayTolerance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getApproved', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getCollateralPrice', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getEpochData', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getEpochStrikeCheckpointsLength', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getEpochStrikeData', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getEpochTimes', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getRoleAdmin', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getUnderlyingPrice', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'getVolatility', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'grantRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'hasRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isApprovedForAll', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isContract', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'isPut', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'name', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'ownerOf', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'pause', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'paused', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'purchase', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'removeFromContractWhitelist', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'renounceRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'revokeRole', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256)', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'safeTransferFrom(address,address,uint256,bytes)', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setAddresses', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'setApprovalForAll', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'settle', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'supportsInterface', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'symbol', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'tokenByIndex', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'tokenOfOwnerByIndex', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'tokenURI', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'totalSupply', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'transferFrom', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'underlyingSymbol', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'unpause', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'updateExpireDelayTolerance', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'whitelistedContracts', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'withdraw', data: BytesLike): Result;
    decodeFunctionResult(functionFragment: 'writePosition', data: BytesLike): Result;
    events: {
        'AddToContractWhitelist(address)': EventFragment;
        'AddressesSet(tuple)': EventFragment;
        'Approval(address,address,uint256)': EventFragment;
        'ApprovalForAll(address,address,bool)': EventFragment;
        'Bootstrap(uint256,uint256[])': EventFragment;
        'Deposit(uint256,address,address)': EventFragment;
        'EmergencyWithdraw(address)': EventFragment;
        'EpochExpired(address,uint256)': EventFragment;
        'ExpireDelayToleranceUpdate(uint256)': EventFragment;
        'Paused(address)': EventFragment;
        'Purchase(uint256,uint256,uint256,uint256,uint256,address,address)': EventFragment;
        'RemoveFromContractWhitelist(address)': EventFragment;
        'RoleAdminChanged(bytes32,bytes32,bytes32)': EventFragment;
        'RoleGranted(bytes32,address,address)': EventFragment;
        'RoleRevoked(bytes32,address,address)': EventFragment;
        'Settle(uint256,uint256,uint256,uint256,uint256,address,address)': EventFragment;
        'Transfer(address,address,uint256)': EventFragment;
        'Unpaused(address)': EventFragment;
        'Withdraw(uint256,uint256,uint256[],address,address)': EventFragment;
    };
    getEvent(nameOrSignatureOrTopic: 'AddToContractWhitelist'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'AddressesSet'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Approval'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ApprovalForAll'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Bootstrap'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Deposit'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'EmergencyWithdraw'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'EpochExpired'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'ExpireDelayToleranceUpdate'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Paused'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Purchase'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RemoveFromContractWhitelist'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleAdminChanged'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleGranted'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'RoleRevoked'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Settle'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Transfer'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Unpaused'): EventFragment;
    getEvent(nameOrSignatureOrTopic: 'Withdraw'): EventFragment;
}
export interface AddToContractWhitelistEventObject {
    _contract: string;
}
export declare type AddToContractWhitelistEvent = TypedEvent<[string], AddToContractWhitelistEventObject>;
export declare type AddToContractWhitelistEventFilter = TypedEventFilter<AddToContractWhitelistEvent>;
export interface AddressesSetEventObject {
    addresses: AddressesStructOutput;
}
export declare type AddressesSetEvent = TypedEvent<[AddressesStructOutput], AddressesSetEventObject>;
export declare type AddressesSetEventFilter = TypedEventFilter<AddressesSetEvent>;
export interface ApprovalEventObject {
    owner: string;
    approved: string;
    tokenId: BigNumber;
}
export declare type ApprovalEvent = TypedEvent<[string, string, BigNumber], ApprovalEventObject>;
export declare type ApprovalEventFilter = TypedEventFilter<ApprovalEvent>;
export interface ApprovalForAllEventObject {
    owner: string;
    operator: string;
    approved: boolean;
}
export declare type ApprovalForAllEvent = TypedEvent<[string, string, boolean], ApprovalForAllEventObject>;
export declare type ApprovalForAllEventFilter = TypedEventFilter<ApprovalForAllEvent>;
export interface BootstrapEventObject {
    epoch: BigNumber;
    strikes: BigNumber[];
}
export declare type BootstrapEvent = TypedEvent<[BigNumber, BigNumber[]], BootstrapEventObject>;
export declare type BootstrapEventFilter = TypedEventFilter<BootstrapEvent>;
export interface DepositEventObject {
    tokenId: BigNumber;
    to: string;
    sender: string;
}
export declare type DepositEvent = TypedEvent<[BigNumber, string, string], DepositEventObject>;
export declare type DepositEventFilter = TypedEventFilter<DepositEvent>;
export interface EmergencyWithdrawEventObject {
    sender: string;
}
export declare type EmergencyWithdrawEvent = TypedEvent<[string], EmergencyWithdrawEventObject>;
export declare type EmergencyWithdrawEventFilter = TypedEventFilter<EmergencyWithdrawEvent>;
export interface EpochExpiredEventObject {
    sender: string;
    settlementPrice: BigNumber;
}
export declare type EpochExpiredEvent = TypedEvent<[string, BigNumber], EpochExpiredEventObject>;
export declare type EpochExpiredEventFilter = TypedEventFilter<EpochExpiredEvent>;
export interface ExpireDelayToleranceUpdateEventObject {
    expireDelayTolerance: BigNumber;
}
export declare type ExpireDelayToleranceUpdateEvent = TypedEvent<[BigNumber], ExpireDelayToleranceUpdateEventObject>;
export declare type ExpireDelayToleranceUpdateEventFilter = TypedEventFilter<ExpireDelayToleranceUpdateEvent>;
export interface PausedEventObject {
    account: string;
}
export declare type PausedEvent = TypedEvent<[string], PausedEventObject>;
export declare type PausedEventFilter = TypedEventFilter<PausedEvent>;
export interface PurchaseEventObject {
    epoch: BigNumber;
    strike: BigNumber;
    amount: BigNumber;
    premium: BigNumber;
    fee: BigNumber;
    to: string;
    sender: string;
}
export declare type PurchaseEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    string,
    string
], PurchaseEventObject>;
export declare type PurchaseEventFilter = TypedEventFilter<PurchaseEvent>;
export interface RemoveFromContractWhitelistEventObject {
    _contract: string;
}
export declare type RemoveFromContractWhitelistEvent = TypedEvent<[string], RemoveFromContractWhitelistEventObject>;
export declare type RemoveFromContractWhitelistEventFilter = TypedEventFilter<RemoveFromContractWhitelistEvent>;
export interface RoleAdminChangedEventObject {
    role: string;
    previousAdminRole: string;
    newAdminRole: string;
}
export declare type RoleAdminChangedEvent = TypedEvent<[string, string, string], RoleAdminChangedEventObject>;
export declare type RoleAdminChangedEventFilter = TypedEventFilter<RoleAdminChangedEvent>;
export interface RoleGrantedEventObject {
    role: string;
    account: string;
    sender: string;
}
export declare type RoleGrantedEvent = TypedEvent<[string, string, string], RoleGrantedEventObject>;
export declare type RoleGrantedEventFilter = TypedEventFilter<RoleGrantedEvent>;
export interface RoleRevokedEventObject {
    role: string;
    account: string;
    sender: string;
}
export declare type RoleRevokedEvent = TypedEvent<[string, string, string], RoleRevokedEventObject>;
export declare type RoleRevokedEventFilter = TypedEventFilter<RoleRevokedEvent>;
export interface SettleEventObject {
    epoch: BigNumber;
    strike: BigNumber;
    amount: BigNumber;
    pnl: BigNumber;
    fee: BigNumber;
    to: string;
    sender: string;
}
export declare type SettleEvent = TypedEvent<[
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    BigNumber,
    string,
    string
], SettleEventObject>;
export declare type SettleEventFilter = TypedEventFilter<SettleEvent>;
export interface TransferEventObject {
    from: string;
    to: string;
    tokenId: BigNumber;
}
export declare type TransferEvent = TypedEvent<[string, string, BigNumber], TransferEventObject>;
export declare type TransferEventFilter = TypedEventFilter<TransferEvent>;
export interface UnpausedEventObject {
    account: string;
}
export declare type UnpausedEvent = TypedEvent<[string], UnpausedEventObject>;
export declare type UnpausedEventFilter = TypedEventFilter<UnpausedEvent>;
export interface WithdrawEventObject {
    tokenId: BigNumber;
    collateralTokenWithdrawn: BigNumber;
    rewardTokenWithdrawAmounts: BigNumber[];
    to: string;
    sender: string;
}
export declare type WithdrawEvent = TypedEvent<[BigNumber, BigNumber, BigNumber[], string, string], WithdrawEventObject>;
export declare type WithdrawEventFilter = TypedEventFilter<WithdrawEvent>;
export interface DopexSsovV3 extends BaseContract {
    connect(signerOrProvider: Signer | Provider | string): this;
    attach(addressOrName: string): this;
    deployed(): Promise<this>;
    interface: DopexSsovV3Interface;
    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: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<[string]>;
        MANAGER_ROLE(overrides?: CallOverrides): Promise<[string]>;
        addToContractWhitelist(_contract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        addresses(overrides?: CallOverrides): Promise<[
            string,
            string,
            string,
            string,
            string,
            string,
            string
        ] & {
            feeStrategy: string;
            stakingStrategy: string;
            optionPricing: string;
            priceOracle: string;
            volatilityOracle: string;
            feeDistributor: string;
            optionsTokenImplementation: string;
        }>;
        approve(to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber]>;
        bootstrap(strikes: PromiseOrValue<BigNumberish>[], expiry: PromiseOrValue<BigNumberish>, expirySymbol: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        burn(tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        calculatePnl(price: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, collateralExchangeRate: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        calculatePremium(_strike: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _expiry: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber] & {
            premium: BigNumber;
        }>;
        calculatePurchaseFees(strike: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        calculateSettlementFees(pnl: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        changeAllowanceForStakingStrategy(_increase: PromiseOrValue<boolean>, _allowance: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        checkpoints(arg0: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<BigNumberish>, arg2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            activeCollateral: BigNumber;
            totalCollateral: BigNumber;
            accruedPremium: BigNumber;
        }>;
        collateralPrecision(overrides?: CallOverrides): Promise<[BigNumber]>;
        collateralToken(overrides?: CallOverrides): Promise<[string]>;
        currentEpoch(overrides?: CallOverrides): Promise<[BigNumber]>;
        deposit(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        emergencyWithdraw(tokens: PromiseOrValue<string>[], transferNative: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        'expire()'(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        'expire(uint256,uint256)'(_settlementPrice: PromiseOrValue<BigNumberish>, _settlementCollateralExchangeRate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        expireDelayTolerance(overrides?: CallOverrides): Promise<[BigNumber]>;
        getApproved(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        getCollateralPrice(overrides?: CallOverrides): Promise<[BigNumber]>;
        getEpochData(epoch: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[EpochDataStructOutput]>;
        getEpochStrikeCheckpointsLength(epoch: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        getEpochStrikeData(epoch: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[EpochStrikeDataStructOutput]>;
        getEpochTimes(epoch: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            start: BigNumber;
            end: BigNumber;
        }>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[string]>;
        getUnderlyingPrice(overrides?: CallOverrides): Promise<[BigNumber]>;
        getVolatility(_strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        isApprovedForAll(owner: PromiseOrValue<string>, operator: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        isContract(addr: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        isPut(overrides?: CallOverrides): Promise<[boolean]>;
        name(overrides?: CallOverrides): Promise<[string]>;
        ownerOf(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        paused(overrides?: CallOverrides): Promise<[boolean]>;
        purchase(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        removeFromContractWhitelist(_contract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        'safeTransferFrom(address,address,uint256)'(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        'safeTransferFrom(address,address,uint256,bytes)'(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setAddresses(_addresses: AddressesStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        setApprovalForAll(operator: PromiseOrValue<string>, approved: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        settle(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, epoch: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<[boolean]>;
        symbol(overrides?: CallOverrides): Promise<[string]>;
        tokenByIndex(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        tokenOfOwnerByIndex(owner: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber]>;
        tokenURI(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[string]>;
        totalSupply(overrides?: CallOverrides): Promise<[BigNumber]>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        underlyingSymbol(overrides?: CallOverrides): Promise<[string]>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        updateExpireDelayTolerance(_expireDelayTolerance: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        whitelistedContracts(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[boolean]>;
        withdraw(tokenId: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<ContractTransaction>;
        writePosition(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber[]
        ] & {
            epoch: BigNumber;
            strike: BigNumber;
            collateralAmount: BigNumber;
            checkpointIndex: BigNumber;
            rewardDistributionRatios: BigNumber[];
        }>;
    };
    DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
    MANAGER_ROLE(overrides?: CallOverrides): Promise<string>;
    addToContractWhitelist(_contract: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    addresses(overrides?: CallOverrides): Promise<[
        string,
        string,
        string,
        string,
        string,
        string,
        string
    ] & {
        feeStrategy: string;
        stakingStrategy: string;
        optionPricing: string;
        priceOracle: string;
        volatilityOracle: string;
        feeDistributor: string;
        optionsTokenImplementation: string;
    }>;
    approve(to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
    bootstrap(strikes: PromiseOrValue<BigNumberish>[], expiry: PromiseOrValue<BigNumberish>, expirySymbol: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    burn(tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    calculatePnl(price: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, collateralExchangeRate: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    calculatePremium(_strike: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _expiry: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    calculatePurchaseFees(strike: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    calculateSettlementFees(pnl: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    changeAllowanceForStakingStrategy(_increase: PromiseOrValue<boolean>, _allowance: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    checkpoints(arg0: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<BigNumberish>, arg2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber
    ] & {
        activeCollateral: BigNumber;
        totalCollateral: BigNumber;
        accruedPremium: BigNumber;
    }>;
    collateralPrecision(overrides?: CallOverrides): Promise<BigNumber>;
    collateralToken(overrides?: CallOverrides): Promise<string>;
    currentEpoch(overrides?: CallOverrides): Promise<BigNumber>;
    deposit(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    emergencyWithdraw(tokens: PromiseOrValue<string>[], transferNative: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    'expire()'(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    'expire(uint256,uint256)'(_settlementPrice: PromiseOrValue<BigNumberish>, _settlementCollateralExchangeRate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    expireDelayTolerance(overrides?: CallOverrides): Promise<BigNumber>;
    getApproved(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    getCollateralPrice(overrides?: CallOverrides): Promise<BigNumber>;
    getEpochData(epoch: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<EpochDataStructOutput>;
    getEpochStrikeCheckpointsLength(epoch: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    getEpochStrikeData(epoch: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<EpochStrikeDataStructOutput>;
    getEpochTimes(epoch: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
        start: BigNumber;
        end: BigNumber;
    }>;
    getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
    getUnderlyingPrice(overrides?: CallOverrides): Promise<BigNumber>;
    getVolatility(_strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    isApprovedForAll(owner: PromiseOrValue<string>, operator: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    isContract(addr: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    isPut(overrides?: CallOverrides): Promise<boolean>;
    name(overrides?: CallOverrides): Promise<string>;
    ownerOf(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    pause(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    paused(overrides?: CallOverrides): Promise<boolean>;
    purchase(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    removeFromContractWhitelist(_contract: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    'safeTransferFrom(address,address,uint256)'(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    'safeTransferFrom(address,address,uint256,bytes)'(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setAddresses(_addresses: AddressesStruct, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    setApprovalForAll(operator: PromiseOrValue<string>, approved: PromiseOrValue<boolean>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    settle(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, epoch: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
    symbol(overrides?: CallOverrides): Promise<string>;
    tokenByIndex(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    tokenOfOwnerByIndex(owner: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    tokenURI(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
    totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
    transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    underlyingSymbol(overrides?: CallOverrides): Promise<string>;
    unpause(overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    updateExpireDelayTolerance(_expireDelayTolerance: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    whitelistedContracts(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
    withdraw(tokenId: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
        from?: PromiseOrValue<string>;
    }): Promise<ContractTransaction>;
    writePosition(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber,
        BigNumber[]
    ] & {
        epoch: BigNumber;
        strike: BigNumber;
        collateralAmount: BigNumber;
        checkpointIndex: BigNumber;
        rewardDistributionRatios: BigNumber[];
    }>;
    callStatic: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<string>;
        MANAGER_ROLE(overrides?: CallOverrides): Promise<string>;
        addToContractWhitelist(_contract: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        addresses(overrides?: CallOverrides): Promise<[
            string,
            string,
            string,
            string,
            string,
            string,
            string
        ] & {
            feeStrategy: string;
            stakingStrategy: string;
            optionPricing: string;
            priceOracle: string;
            volatilityOracle: string;
            feeDistributor: string;
            optionsTokenImplementation: string;
        }>;
        approve(to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        bootstrap(strikes: PromiseOrValue<BigNumberish>[], expiry: PromiseOrValue<BigNumberish>, expirySymbol: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        burn(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        calculatePnl(price: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, collateralExchangeRate: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculatePremium(_strike: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _expiry: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculatePurchaseFees(strike: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculateSettlementFees(pnl: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        changeAllowanceForStakingStrategy(_increase: PromiseOrValue<boolean>, _allowance: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        checkpoints(arg0: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<BigNumberish>, arg2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber
        ] & {
            activeCollateral: BigNumber;
            totalCollateral: BigNumber;
            accruedPremium: BigNumber;
        }>;
        collateralPrecision(overrides?: CallOverrides): Promise<BigNumber>;
        collateralToken(overrides?: CallOverrides): Promise<string>;
        currentEpoch(overrides?: CallOverrides): Promise<BigNumber>;
        deposit(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        emergencyWithdraw(tokens: PromiseOrValue<string>[], transferNative: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        'expire()'(overrides?: CallOverrides): Promise<void>;
        'expire(uint256,uint256)'(_settlementPrice: PromiseOrValue<BigNumberish>, _settlementCollateralExchangeRate: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        expireDelayTolerance(overrides?: CallOverrides): Promise<BigNumber>;
        getApproved(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        getCollateralPrice(overrides?: CallOverrides): Promise<BigNumber>;
        getEpochData(epoch: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<EpochDataStructOutput>;
        getEpochStrikeCheckpointsLength(epoch: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getEpochStrikeData(epoch: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<EpochStrikeDataStructOutput>;
        getEpochTimes(epoch: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            start: BigNumber;
            end: BigNumber;
        }>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<string>;
        getUnderlyingPrice(overrides?: CallOverrides): Promise<BigNumber>;
        getVolatility(_strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        isApprovedForAll(owner: PromiseOrValue<string>, operator: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        isContract(addr: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        isPut(overrides?: CallOverrides): Promise<boolean>;
        name(overrides?: CallOverrides): Promise<string>;
        ownerOf(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        pause(overrides?: CallOverrides): Promise<void>;
        paused(overrides?: CallOverrides): Promise<boolean>;
        purchase(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[BigNumber, BigNumber] & {
            premium: BigNumber;
            totalFee: BigNumber;
        }>;
        removeFromContractWhitelist(_contract: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<void>;
        'safeTransferFrom(address,address,uint256)'(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        'safeTransferFrom(address,address,uint256,bytes)'(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<void>;
        setAddresses(_addresses: AddressesStruct, overrides?: CallOverrides): Promise<void>;
        setApprovalForAll(operator: PromiseOrValue<string>, approved: PromiseOrValue<boolean>, overrides?: CallOverrides): Promise<void>;
        settle(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, epoch: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<boolean>;
        symbol(overrides?: CallOverrides): Promise<string>;
        tokenByIndex(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        tokenOfOwnerByIndex(owner: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        tokenURI(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<string>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        underlyingSymbol(overrides?: CallOverrides): Promise<string>;
        unpause(overrides?: CallOverrides): Promise<void>;
        updateExpireDelayTolerance(_expireDelayTolerance: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<void>;
        whitelistedContracts(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<boolean>;
        withdraw(tokenId: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber[]
        ] & {
            collateralTokenWithdrawAmount: BigNumber;
            rewardTokenWithdrawAmounts: BigNumber[];
        }>;
        writePosition(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<[
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber,
            BigNumber[]
        ] & {
            epoch: BigNumber;
            strike: BigNumber;
            collateralAmount: BigNumber;
            checkpointIndex: BigNumber;
            rewardDistributionRatios: BigNumber[];
        }>;
    };
    filters: {
        'AddToContractWhitelist(address)'(_contract?: PromiseOrValue<string> | null): AddToContractWhitelistEventFilter;
        AddToContractWhitelist(_contract?: PromiseOrValue<string> | null): AddToContractWhitelistEventFilter;
        'AddressesSet(tuple)'(addresses?: null): AddressesSetEventFilter;
        AddressesSet(addresses?: null): AddressesSetEventFilter;
        'Approval(address,address,uint256)'(owner?: PromiseOrValue<string> | null, approved?: PromiseOrValue<string> | null, tokenId?: PromiseOrValue<BigNumberish> | null): ApprovalEventFilter;
        Approval(owner?: PromiseOrValue<string> | null, approved?: PromiseOrValue<string> | null, tokenId?: PromiseOrValue<BigNumberish> | null): ApprovalEventFilter;
        'ApprovalForAll(address,address,bool)'(owner?: PromiseOrValue<string> | null, operator?: PromiseOrValue<string> | null, approved?: null): ApprovalForAllEventFilter;
        ApprovalForAll(owner?: PromiseOrValue<string> | null, operator?: PromiseOrValue<string> | null, approved?: null): ApprovalForAllEventFilter;
        'Bootstrap(uint256,uint256[])'(epoch?: null, strikes?: null): BootstrapEventFilter;
        Bootstrap(epoch?: null, strikes?: null): BootstrapEventFilter;
        'Deposit(uint256,address,address)'(tokenId?: null, to?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): DepositEventFilter;
        Deposit(tokenId?: null, to?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): DepositEventFilter;
        'EmergencyWithdraw(address)'(sender?: null): EmergencyWithdrawEventFilter;
        EmergencyWithdraw(sender?: null): EmergencyWithdrawEventFilter;
        'EpochExpired(address,uint256)'(sender?: null, settlementPrice?: null): EpochExpiredEventFilter;
        EpochExpired(sender?: null, settlementPrice?: null): EpochExpiredEventFilter;
        'ExpireDelayToleranceUpdate(uint256)'(expireDelayTolerance?: null): ExpireDelayToleranceUpdateEventFilter;
        ExpireDelayToleranceUpdate(expireDelayTolerance?: null): ExpireDelayToleranceUpdateEventFilter;
        'Paused(address)'(account?: null): PausedEventFilter;
        Paused(account?: null): PausedEventFilter;
        'Purchase(uint256,uint256,uint256,uint256,uint256,address,address)'(epoch?: null, strike?: null, amount?: null, premium?: null, fee?: null, to?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): PurchaseEventFilter;
        Purchase(epoch?: null, strike?: null, amount?: null, premium?: null, fee?: null, to?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): PurchaseEventFilter;
        'RemoveFromContractWhitelist(address)'(_contract?: PromiseOrValue<string> | null): RemoveFromContractWhitelistEventFilter;
        RemoveFromContractWhitelist(_contract?: PromiseOrValue<string> | null): RemoveFromContractWhitelistEventFilter;
        'RoleAdminChanged(bytes32,bytes32,bytes32)'(role?: PromiseOrValue<BytesLike> | null, previousAdminRole?: PromiseOrValue<BytesLike> | null, newAdminRole?: PromiseOrValue<BytesLike> | null): RoleAdminChangedEventFilter;
        RoleAdminChanged(role?: PromiseOrValue<BytesLike> | null, previousAdminRole?: PromiseOrValue<BytesLike> | null, newAdminRole?: PromiseOrValue<BytesLike> | null): RoleAdminChangedEventFilter;
        'RoleGranted(bytes32,address,address)'(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleGrantedEventFilter;
        RoleGranted(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleGrantedEventFilter;
        'RoleRevoked(bytes32,address,address)'(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleRevokedEventFilter;
        RoleRevoked(role?: PromiseOrValue<BytesLike> | null, account?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): RoleRevokedEventFilter;
        'Settle(uint256,uint256,uint256,uint256,uint256,address,address)'(epoch?: null, strike?: null, amount?: null, pnl?: null, fee?: null, to?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): SettleEventFilter;
        Settle(epoch?: null, strike?: null, amount?: null, pnl?: null, fee?: null, to?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): SettleEventFilter;
        'Transfer(address,address,uint256)'(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, tokenId?: PromiseOrValue<BigNumberish> | null): TransferEventFilter;
        Transfer(from?: PromiseOrValue<string> | null, to?: PromiseOrValue<string> | null, tokenId?: PromiseOrValue<BigNumberish> | null): TransferEventFilter;
        'Unpaused(address)'(account?: null): UnpausedEventFilter;
        Unpaused(account?: null): UnpausedEventFilter;
        'Withdraw(uint256,uint256,uint256[],address,address)'(tokenId?: null, collateralTokenWithdrawn?: null, rewardTokenWithdrawAmounts?: null, to?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): WithdrawEventFilter;
        Withdraw(tokenId?: null, collateralTokenWithdrawn?: null, rewardTokenWithdrawAmounts?: null, to?: PromiseOrValue<string> | null, sender?: PromiseOrValue<string> | null): WithdrawEventFilter;
    };
    estimateGas: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        MANAGER_ROLE(overrides?: CallOverrides): Promise<BigNumber>;
        addToContractWhitelist(_contract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        addresses(overrides?: CallOverrides): Promise<BigNumber>;
        approve(to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        bootstrap(strikes: PromiseOrValue<BigNumberish>[], expiry: PromiseOrValue<BigNumberish>, expirySymbol: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        burn(tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        calculatePnl(price: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, collateralExchangeRate: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculatePremium(_strike: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _expiry: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculatePurchaseFees(strike: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        calculateSettlementFees(pnl: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        changeAllowanceForStakingStrategy(_increase: PromiseOrValue<boolean>, _allowance: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        checkpoints(arg0: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<BigNumberish>, arg2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        collateralPrecision(overrides?: CallOverrides): Promise<BigNumber>;
        collateralToken(overrides?: CallOverrides): Promise<BigNumber>;
        currentEpoch(overrides?: CallOverrides): Promise<BigNumber>;
        deposit(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        emergencyWithdraw(tokens: PromiseOrValue<string>[], transferNative: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        'expire()'(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        'expire(uint256,uint256)'(_settlementPrice: PromiseOrValue<BigNumberish>, _settlementCollateralExchangeRate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        expireDelayTolerance(overrides?: CallOverrides): Promise<BigNumber>;
        getApproved(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getCollateralPrice(overrides?: CallOverrides): Promise<BigNumber>;
        getEpochData(epoch: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getEpochStrikeCheckpointsLength(epoch: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getEpochStrikeData(epoch: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getEpochTimes(epoch: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        getUnderlyingPrice(overrides?: CallOverrides): Promise<BigNumber>;
        getVolatility(_strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        isApprovedForAll(owner: PromiseOrValue<string>, operator: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        isContract(addr: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        isPut(overrides?: CallOverrides): Promise<BigNumber>;
        name(overrides?: CallOverrides): Promise<BigNumber>;
        ownerOf(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        paused(overrides?: CallOverrides): Promise<BigNumber>;
        purchase(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        removeFromContractWhitelist(_contract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        'safeTransferFrom(address,address,uint256)'(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        'safeTransferFrom(address,address,uint256,bytes)'(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setAddresses(_addresses: AddressesStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        setApprovalForAll(operator: PromiseOrValue<string>, approved: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        settle(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, epoch: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<BigNumber>;
        symbol(overrides?: CallOverrides): Promise<BigNumber>;
        tokenByIndex(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        tokenOfOwnerByIndex(owner: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        tokenURI(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
        totalSupply(overrides?: CallOverrides): Promise<BigNumber>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        underlyingSymbol(overrides?: CallOverrides): Promise<BigNumber>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        updateExpireDelayTolerance(_expireDelayTolerance: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        whitelistedContracts(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<BigNumber>;
        withdraw(tokenId: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<BigNumber>;
        writePosition(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<BigNumber>;
    };
    populateTransaction: {
        DEFAULT_ADMIN_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        MANAGER_ROLE(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        addToContractWhitelist(_contract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        addresses(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        approve(to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        balanceOf(owner: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        bootstrap(strikes: PromiseOrValue<BigNumberish>[], expiry: PromiseOrValue<BigNumberish>, expirySymbol: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        burn(tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        calculatePnl(price: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, collateralExchangeRate: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        calculatePremium(_strike: PromiseOrValue<BigNumberish>, _amount: PromiseOrValue<BigNumberish>, _expiry: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        calculatePurchaseFees(strike: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        calculateSettlementFees(pnl: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        changeAllowanceForStakingStrategy(_increase: PromiseOrValue<boolean>, _allowance: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        checkpoints(arg0: PromiseOrValue<BigNumberish>, arg1: PromiseOrValue<BigNumberish>, arg2: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        collateralPrecision(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        collateralToken(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        currentEpoch(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        deposit(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        emergencyWithdraw(tokens: PromiseOrValue<string>[], transferNative: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        'expire()'(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        'expire(uint256,uint256)'(_settlementPrice: PromiseOrValue<BigNumberish>, _settlementCollateralExchangeRate: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        expireDelayTolerance(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getApproved(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getCollateralPrice(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getEpochData(epoch: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getEpochStrikeCheckpointsLength(epoch: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getEpochStrikeData(epoch: PromiseOrValue<BigNumberish>, strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getEpochTimes(epoch: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getRoleAdmin(role: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getUnderlyingPrice(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        getVolatility(_strike: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        grantRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        hasRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isApprovedForAll(owner: PromiseOrValue<string>, operator: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isContract(addr: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        isPut(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        name(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        ownerOf(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        pause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        paused(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        purchase(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        removeFromContractWhitelist(_contract: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        renounceRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        revokeRole(role: PromiseOrValue<BytesLike>, account: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        'safeTransferFrom(address,address,uint256)'(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        'safeTransferFrom(address,address,uint256,bytes)'(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, data: PromiseOrValue<BytesLike>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setAddresses(_addresses: AddressesStruct, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        setApprovalForAll(operator: PromiseOrValue<string>, approved: PromiseOrValue<boolean>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        settle(strikeIndex: PromiseOrValue<BigNumberish>, amount: PromiseOrValue<BigNumberish>, epoch: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        supportsInterface(interfaceId: PromiseOrValue<BytesLike>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        symbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        tokenByIndex(index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        tokenOfOwnerByIndex(owner: PromiseOrValue<string>, index: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        tokenURI(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        totalSupply(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        transferFrom(from: PromiseOrValue<string>, to: PromiseOrValue<string>, tokenId: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        underlyingSymbol(overrides?: CallOverrides): Promise<PopulatedTransaction>;
        unpause(overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        updateExpireDelayTolerance(_expireDelayTolerance: PromiseOrValue<BigNumberish>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        whitelistedContracts(arg0: PromiseOrValue<string>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
        withdraw(tokenId: PromiseOrValue<BigNumberish>, to: PromiseOrValue<string>, overrides?: Overrides & {
            from?: PromiseOrValue<string>;
        }): Promise<PopulatedTransaction>;
        writePosition(tokenId: PromiseOrValue<BigNumberish>, overrides?: CallOverrides): Promise<PopulatedTransaction>;
    };
}
