import * as plugins from './plugins.js';
/**
 * Authentication configuration
 */
export interface IAuthConfig {
    enabled: boolean;
    credentials: Array<{
        accessKeyId: string;
        secretAccessKey: string;
    }>;
}
/**
 * CORS configuration
 */
export interface ICorsConfig {
    enabled: boolean;
    allowedOrigins?: string[];
    allowedMethods?: string[];
    allowedHeaders?: string[];
    exposedHeaders?: string[];
    maxAge?: number;
    allowCredentials?: boolean;
}
/**
 * Logging configuration
 */
export interface ILoggingConfig {
    level?: 'error' | 'warn' | 'info' | 'debug';
    format?: 'text' | 'json';
    enabled?: boolean;
}
/**
 * Request limits configuration
 */
export interface ILimitsConfig {
    maxObjectSize?: number;
    maxMetadataSize?: number;
    requestTimeout?: number;
}
/**
 * Multipart upload configuration
 */
export interface IMultipartConfig {
    expirationDays?: number;
    cleanupIntervalMinutes?: number;
}
/**
 * Server configuration
 */
export interface IServerConfig {
    port?: number;
    address?: string;
    silent?: boolean;
    region?: string;
}
/**
 * Storage configuration
 */
export interface IStorageConfig {
    directory?: string;
    cleanSlate?: boolean;
}
/**
 * Erasure coding configuration
 */
export interface IErasureConfig {
    dataShards?: number;
    parityShards?: number;
    chunkSizeBytes?: number;
}
/**
 * Drive configuration for multi-drive support
 */
export interface IDriveConfig {
    paths: string[];
}
/**
 * Cluster configuration for distributed mode
 */
export interface IClusterConfig {
    enabled: boolean;
    nodeId?: string;
    quicPort?: number;
    seedNodes?: string[];
    erasure?: IErasureConfig;
    drives?: IDriveConfig;
    heartbeatIntervalMs?: number;
    heartbeatTimeoutMs?: number;
}
/**
 * Complete smartstorage configuration
 */
export interface ISmartStorageConfig {
    server?: IServerConfig;
    storage?: IStorageConfig;
    auth?: IAuthConfig;
    cors?: ICorsConfig;
    logging?: ILoggingConfig;
    limits?: ILimitsConfig;
    multipart?: IMultipartConfig;
    cluster?: IClusterConfig;
}
/**
 * Main SmartStorage class - production-ready S3-compatible storage server
 */
export declare class SmartStorage {
    static createAndStart(configArg?: ISmartStorageConfig): Promise<SmartStorage>;
    config: Required<ISmartStorageConfig>;
    private bridge;
    constructor(configArg?: ISmartStorageConfig);
    start(): Promise<void>;
    getStorageDescriptor(optionsArg?: Partial<plugins.tsclass.storage.IS3Descriptor>): Promise<plugins.tsclass.storage.IS3Descriptor>;
    createBucket(bucketNameArg: string): Promise<{
        name: string;
    }>;
    stop(): Promise<void>;
}
