import type { Synapse } from '@filoz/synapse-sdk';
import type { Logger } from 'pino';
import type { ProgressEvent, ProgressEventHandler, Warning } from '../utils/types.js';
import type { DataSetSummary } from './types.js';
export interface ActualStorageResult {
    /** Total storage in bytes across all active data sets */
    totalBytes: bigint;
    /** Number of active data sets found */
    dataSetCount: number;
    /** Number of data sets successfully processed */
    dataSetsProcessed: number;
    /** Total number of pieces across all data sets */
    pieceCount: number;
    /** Whether the calculation timed out */
    timedOut?: boolean;
    /** Non-fatal warnings encountered during calculation */
    warnings: Warning[];
}
export type ActualStorageProgressEvents = ProgressEvent<'actual-storage:progress', {
    dataSetsProcessed: number;
    dataSetCount: number;
    pieceCount: number;
    totalBytes: bigint;
}>;
/**
 * Calculate actual storage from all active data sets for an address
 *
 * This function queries all active/live data sets and sums up the actual piece sizes.
 * It's more accurate than deriving storage from billing rates, but can be slow for
 * users with many pieces.
 *
 * The calculation respects abort signals - if aborted, it will return partial results
 * with a timedOut flag set to true.
 *
 * Example usage:
 * ```typescript
 * const result = await calculateActualStorage(synapse, {
 *   address: '0x1234...',
 *   signal: AbortSignal.timeout(30000), // 30 second timeout
 *   logger: myLogger
 * })
 *
 * console.log(`Total storage: ${result.totalBytes} bytes`)
 * console.log(`Across ${result.dataSetsProcessed}/${result.dataSetCount} data sets`)
 * console.log(`Total pieces: ${result.pieceCount}`)
 *
 * if (result.timedOut) {
 *   console.warn('Calculation was aborted, results may be incomplete')
 * }
 *
 * if (result.warnings.length > 0) {
 *   console.warn('Encountered warnings:', result.warnings)
 * }
 * ```
 *
 * @param synapse - Initialized Synapse instance
 * @param options - Configuration options
 * @returns Actual storage calculation result
 */
export declare function calculateActualStorage(synapse: Synapse, dataSets: DataSetSummary[], options?: {
    /** Address to calculate storage for (defaults to synapse client address) */
    address?: string;
    /** Abort signal for cancellation/timeout (optional) */
    signal?: AbortSignal;
    /** Logger for debugging (optional) */
    logger?: Logger;
    /** Max number of providers to query in parallel (defaults to 10) */
    maxParallelProviders?: number;
    /** Max concurrent datasets per provider (defaults to 10) */
    maxParallelPerProvider?: number;
    /** Progress callback for UI updates */
    onProgress?: ProgressEventHandler<ActualStorageProgressEvents>;
}): Promise<ActualStorageResult>;
//# sourceMappingURL=calculate-actual-storage.d.ts.map