import { type Constructor, Registry } from "../core/registry/Registry";
import type { StorageAdapter } from "./storage/StorageAdapter";
import type { s } from "bknd/utils";
import { StorageS3Adapter } from "./storage/adapters/s3/StorageS3Adapter";
import { StorageCloudinaryAdapter } from "./storage/adapters/cloudinary/StorageCloudinaryAdapter";
type ClassThatImplements<T> = Constructor<T> & {
    prototype: T;
};
export declare const MediaAdapterRegistry: Registry<{
    cls: ClassThatImplements<StorageAdapter>;
    schema: s.Schema;
}, Record<string, {
    cls: ClassThatImplements<StorageAdapter>;
    schema: s.Schema;
}>, import("../core/registry/Registry").RegisterFn<{
    cls: ClassThatImplements<StorageAdapter>;
    schema: s.Schema;
}>>;
export declare const MediaAdapters: {
    readonly s3: {
        readonly cls: typeof StorageS3Adapter;
        readonly schema: s.ObjectSchema<{
            readonly access_key: import("bknd/utils").SecretSchema<s.IStringOptions> & s.IStringOptions;
            readonly secret_access_key: import("bknd/utils").SecretSchema<s.IStringOptions> & s.IStringOptions;
            readonly url: s.StringSchema<s.IStringOptions> & s.IStringOptions;
        }, {
            readonly title: "AWS S3";
            readonly description: "AWS S3 or compatible storage";
        }> & {
            readonly title: "AWS S3";
            readonly description: "AWS S3 or compatible storage";
        };
    };
    readonly cloudinary: {
        readonly cls: typeof StorageCloudinaryAdapter;
        readonly schema: s.ObjectSchema<{
            readonly cloud_name: s.StringSchema<s.IStringOptions> & s.IStringOptions;
            readonly api_key: import("bknd/utils").SecretSchema<s.IStringOptions> & s.IStringOptions;
            readonly api_secret: import("bknd/utils").SecretSchema<s.IStringOptions> & s.IStringOptions;
            readonly upload_preset: {
                default?: any;
                maxLength?: number | undefined;
                minLength?: number | undefined;
                pattern?: (string | RegExp) | undefined;
                format?: string | undefined;
                enum?: (readonly any[] | any[]) | undefined;
                const?: any;
            } & s.Schema<s.ISchemaOptions, string | undefined, string | undefined>;
        }, {
            readonly title: "Cloudinary";
            readonly description: "Cloudinary media storage";
        }> & {
            readonly title: "Cloudinary";
            readonly description: "Cloudinary media storage";
        };
    };
};
export {};
