import { Loader } from 'astro/loaders';
import { CloudinaryResource, CloudinaryResourceResourceType } from '@cloudinary-util/types';

/**
 * listResources
 * @description
 */
interface ListResourcesOptions {
    deliveryType: 'upload' | 'fetch' | 'private' | 'authenticated' | 'sprite' | 'facebook' | 'twitter' | 'youtube' | 'vimeo';
    fields?: Array<string>;
    folder?: CloudinaryResource["folder"];
    folderMode?: string;
    limit?: number;
    nextCursor?: string;
    resourceType: Omit<CloudinaryResourceResourceType, "auto">;
    context?: boolean;
    metadata?: boolean;
    moderation?: boolean;
    tags?: boolean;
}

interface CloudinaryAssetsLoaderOptions {
    deliveryType?: ListResourcesOptions["deliveryType"];
    fields?: ListResourcesOptions["fields"];
    folder?: ListResourcesOptions["folder"];
    limit?: ListResourcesOptions["limit"];
    resourceType?: ListResourcesOptions["resourceType"];
    context?: ListResourcesOptions["context"];
    metadata?: ListResourcesOptions["metadata"];
    moderation?: ListResourcesOptions["moderation"];
    tags?: ListResourcesOptions["tags"];
}
declare function cldAssetsLoader(options?: CloudinaryAssetsLoaderOptions): Loader;

export { type CloudinaryAssetsLoaderOptions, cldAssetsLoader };
