import type { Address } from 'viem';
import type { Bus } from './bus.js';
import type { AccountValue } from '../index.js';
import { CHAINS } from '../index.js';
export type LidoSDKWithdrawModuleProps = {
    bus: Bus;
    version?: string;
};
export type RequestStatus = {
    amountOfStETH: bigint;
    amountOfShares: bigint;
    owner: Address;
    timestamp: bigint;
    isFinalized: boolean;
    isClaimed: boolean;
};
export type RequestStatusWithId = {
    amountOfStETH: bigint;
    amountOfShares: bigint;
    owner: Address;
    timestamp: bigint;
    isFinalized: boolean;
    isClaimed: boolean;
    id: bigint;
    stringId: string;
};
export type PropsWithAccount = {
    account?: AccountValue;
};
export type GetPendingRequestsInfoReturnType = {
    pendingRequests: RequestStatusWithId[];
    pendingAmountStETH: bigint;
};
export type GetClaimableRequestsInfoReturnType = {
    claimableRequests: RequestStatusWithId[];
    claimableAmountStETH: bigint;
};
export type GetClaimableRequestsETHByAccountReturnType = {
    ethByRequests: readonly bigint[];
    ethSum: bigint;
    hints: readonly bigint[];
    requests: readonly RequestStatusWithId[];
    sortedIds: readonly bigint[];
};
export type GetWithdrawalRequestsInfoReturnType = {
    claimableInfo: GetClaimableRequestsInfoReturnType;
    pendingInfo: GetPendingRequestsInfoReturnType;
    claimableETH: GetClaimableRequestsETHByAccountReturnType;
};
export type WqApiCustomUrlGetter = (defaultUrl: string | null, chainId: CHAINS) => string;
export type WithdrawalWaitingTimeByAmountParams = {
    amount?: bigint;
    getCustomApiUrl?: WqApiCustomUrlGetter;
};
export type RequestInfo = {
    finalizationIn: number;
    finalizationAt: string;
    type: WaitingTimeCalculationType;
};
export type WithdrawalWaitingTimeByAmountResponse = {
    requestInfo: RequestInfo;
    status: WaitingTimeStatus;
    nextCalculationAt: string;
};
export type WithdrawalWaitingTimeByRequestIdsParams = {
    ids: readonly bigint[];
    requestDelay?: number;
    getCustomApiUrl?: WqApiCustomUrlGetter;
};
export type RequestByIdInfo = {
    finalizationIn: number;
    finalizationAt: string;
    requestId?: string;
    requestedAt?: string;
    type: WaitingTimeCalculationType;
};
export type WithdrawalWaitingTimeRequestInfo = {
    requestInfo: RequestByIdInfo;
    status: WaitingTimeStatus;
    nextCalculationAt: string;
};
export declare enum WaitingTimeStatus {
    initializing = "initializing",
    calculating = "calculating",
    finalized = "finalized",
    calculated = "calculated"
}
export declare enum WaitingTimeCalculationType {
    buffer = "buffer",
    bunker = "bunker",
    vaultsBalance = "vaultsBalance",
    rewardsOnly = "rewardsOnly",
    validatorBalances = "validatorBalances",
    requestTimestampMargin = "requestTimestampMargin",
    exitValidators = "exitValidators"
}
//# sourceMappingURL=types.d.ts.map