/// <reference types="node" />
/// <reference types="node" />
export type FileBody = ArrayBuffer | ArrayBufferView | Blob | Buffer | File | FormData | NodeJS.ReadableStream | ReadableStream<Uint8Array> | URLSearchParams | string;
export type BucketType = 'STANDARD' | 'ANALYTICS';
export interface Bucket {
    id: string;
    type?: BucketType;
    name: string;
    owner: string;
    file_size_limit?: number;
    allowed_mime_types?: string[];
    created_at: string;
    updated_at: string;
    public: boolean;
}
export interface FileObject {
    name: string;
    bucket_id: string;
    owner: string;
    id: string;
    updated_at: string;
    created_at: string;
    last_accessed_at: string;
    metadata: Record<string, any>;
    buckets: Bucket;
}
export interface FileObjectV2 {
    id: string;
    version: string;
    name: string;
    bucket_id: string;
    updated_at: string;
    created_at: string;
    last_accessed_at: string;
    size?: number;
    cache_control?: string;
    content_type?: string;
    etag?: string;
    last_modified?: string;
    metadata?: Record<string, any>;
}
export interface FileOptions {
    cacheControl?: string;
    contentType?: string;
    upsert?: boolean;
    duplex?: string;
    metadata?: Record<string, any>;
    headers?: Record<string, string>;
}
export interface DestinationOptions {
    destinationBucket?: string;
}
export interface TransformOptions {
    width?: number;
    height?: number;
    resize?: 'cover' | 'contain' | 'fill';
    quality?: number;
    format?: 'origin';
}
type CamelCase<S extends string> = S extends `${infer P1}_${infer P2}${infer P3}` ? `${Lowercase<P1>}${Uppercase<P2>}${CamelCase<P3>}` : S;
export type Camelize<T> = {
    [K in keyof T as CamelCase<Extract<K, string>>]: T[K];
};
export {};
