import { type Static } from "../core/utils";
import * as tbbox from "@sinclair/typebox";
export declare const ADAPTERS: {
    readonly s3: {
        readonly cls: typeof import("../media").StorageS3Adapter;
        readonly schema: tbbox.TObject<{
            access_key: tbbox.TString;
            secret_access_key: tbbox.TString;
            url: tbbox.TString;
        }>;
    };
    readonly cloudinary: {
        readonly cls: typeof import("../media").StorageCloudinaryAdapter;
        readonly schema: tbbox.TObject<{
            cloud_name: tbbox.TString;
            api_key: tbbox.TString;
            api_secret: tbbox.TString;
            upload_preset: tbbox.TOptional<tbbox.TString>;
        }>;
    };
};
export declare const registry: import("../core").Registry<{
    cls: import("../core").Constructor<import("../media").StorageAdapter> & {
        prototype: import("../media").StorageAdapter;
    };
    schema: tbbox.TObject;
}, Record<string, {
    cls: import("../core").Constructor<import("../media").StorageAdapter> & {
        prototype: import("../media").StorageAdapter;
    };
    schema: tbbox.TObject;
}>, import("../core/registry/Registry").RegisterFn<{
    cls: import("../core").Constructor<import("../media").StorageAdapter> & {
        prototype: import("../media").StorageAdapter;
    };
    schema: tbbox.TObject;
}>>;
export declare function buildMediaSchema(): tbbox.TObject<{
    enabled: tbbox.TBoolean;
    basepath: tbbox.TString;
    entity_name: tbbox.TString;
    storage: tbbox.TObject<{
        body_max_size: tbbox.TOptional<tbbox.TNumber>;
    }>;
    adapter: tbbox.TOptional<tbbox.TUnion<tbbox.TObject<{
        type: tbbox.TLiteral<string>;
        config: tbbox.TObject<tbbox.TProperties>;
    }>[]>>;
}>;
export declare const mediaConfigSchema: tbbox.TObject<{
    enabled: tbbox.TBoolean;
    basepath: tbbox.TString;
    entity_name: tbbox.TString;
    storage: tbbox.TObject<{
        body_max_size: tbbox.TOptional<tbbox.TNumber>;
    }>;
    adapter: tbbox.TOptional<tbbox.TUnion<tbbox.TObject<{
        type: tbbox.TLiteral<string>;
        config: tbbox.TObject<tbbox.TProperties>;
    }>[]>>;
}>;
export type TAppMediaConfig = Static<typeof mediaConfigSchema>;
