import type { TsCodeFragment } from '@baseplate-dev/core-generators';
export interface FileCategoriesProvider {
    getFileCategoryImportFragment(name: string): TsCodeFragment;
}
export declare const fileCategoriesProvider: import("@baseplate-dev/sync").ProviderType<FileCategoriesProvider>;
/**
 * Generator for a set of file categories (tied to a feature).
 */
export declare const fileCategoriesGenerator: import("@baseplate-dev/sync").GeneratorBundleCreator<{
    featureId: string;
    fileCategories: {
        name: string;
        maxFileSizeMb: number;
        adapter: string;
        authorize: {
            uploadRoles: string[];
        };
        referencedByRelations: string[];
        disableAutoCleanup?: boolean | undefined;
    }[];
}, {
    main: import("@baseplate-dev/sync").GeneratorTask<{
        fileCategories: import("@baseplate-dev/sync").ProviderExport<FileCategoriesProvider>;
    }, {
        storageModuleImports: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").InferTsImportMapFromSchema<{
            cleanUnusedFiles: {};
            cleanUnusedFilesQueue: {};
            createFileCategory: {};
            createPresignedDownloadUrl: {};
            CreatePresignedUploadOptions: {
                isTypeOnly: true;
            };
            createPresignedUploadUrl: {};
            createS3Adapter: {};
            createUrlAdapter: {};
            downloadFile: {};
            FILE_CATEGORIES: {};
            FileCategory: {
                isTypeOnly: true;
            };
            FileCategoryName: {
                isTypeOnly: true;
            };
            fileField: {};
            FileInput: {
                isTypeOnly: true;
            };
            fileInputInputType: {};
            FileMetadata: {
                isTypeOnly: true;
            };
            FileSize: {};
            FileUploadOptions: {
                isTypeOnly: true;
            };
            getAdapterOrThrow: {};
            getCategoryByName: {};
            getCategoryByNameOrThrow: {};
            getEncodingFromContentType: {};
            getMimeTypeFromContentType: {};
            InvalidMimeTypeError: {};
            MimeTypes: {};
            PresignedUploadUrl: {
                isTypeOnly: true;
            };
            STORAGE_ADAPTERS: {};
            StorageAdapter: {
                isTypeOnly: true;
            };
            StorageAdapterKey: {
                isTypeOnly: true;
            };
            ValidatedPendingUpload: {
                isTypeOnly: true;
            };
            validateFileExtensionWithMimeType: {};
            validateFileUploadOptions: {};
            validatePendingUpload: {};
        }>>;
        typescriptFile: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/core-generators").TypescriptFileProvider>;
        appModule: import("@baseplate-dev/sync").ProviderType<import("@baseplate-dev/fastify-generators").AppModuleProvider>;
        storageModuleConfig: import("@baseplate-dev/sync").ProviderType<Omit<import("@baseplate-dev/utils").FieldMap<{
            fileCategories: import("@baseplate-dev/utils").MapContainer<string, TsCodeFragment>;
        }>, "getValues">>;
    }, any>;
}>;
//# sourceMappingURL=file-categories.generator.d.ts.map