/// <reference types="node" />
import { StorageFile } from './file.js';
import { StorageNop } from './nop.js';
import type { StorageEtcd } from './etcd.js';
import type { StorageObs } from './obs.js';
import type { StorageS3 } from './s3.js';
export interface StorageNopOptions {
    placeholder?: never;
}
export declare type StorageFileOptions = StorageNopOptions;
export interface StorageS3Options {
    accessKeyId: string;
    secretAccessKey: string;
    region: string;
    bucket: string;
}
export interface StorageObsOptions {
    accessKeyId: string;
    secretAccessKey: string;
    server: string;
    bucket: string;
}
export interface StorageEtcdOptions {
    hosts: string[] | string;
    auth?: {
        username: string;
        password: string;
    };
    credentials?: {
        rootCertificate: Buffer;
        privateKey?: Buffer;
        certChain?: Buffer;
    };
}
declare function obsLoader(): Promise<typeof StorageObs>;
declare function s3Loader(): Promise<typeof StorageS3>;
declare function etcdLoader(): Promise<typeof StorageEtcd>;
export declare const BACKEND_FACTORY_DICT: {
    etcd: typeof etcdLoader;
    file: () => Promise<typeof StorageFile>;
    nop: () => Promise<typeof StorageNop>;
    obs: typeof obsLoader;
    s3: typeof s3Loader;
};
export declare type StorageBackendType = keyof typeof BACKEND_FACTORY_DICT;
export declare type StorageBackendOptions = ({
    type?: 'file';
} & StorageFileOptions) | ({
    type?: 'nop';
} & StorageNopOptions) | ({
    type?: 's3';
} & StorageS3Options) | ({
    type?: 'obs';
} & StorageObsOptions) | ({
    type?: 'etcd';
} & StorageEtcdOptions);
export {};
//# sourceMappingURL=backend-config.d.ts.map