declare module 'laravel-vapor' {
    interface VaporStoreOptions {
        baseURL?: string | null;
        bucket?: string;
        cancelToken?: unknown;
        contentType?: string;
        data?: Record<string, unknown>;
        expires?: string;
        headers?: Record<string, string>;
        options?: Record<string, unknown>;
        progress?: (progress: number) => void;
        signedStorageUrl?: string;
        visibility?: string;
    }

    interface VaporStoredFile {
        bucket?: string;
        extension: string;
        key?: string;
        uuid?: string;
        [key: string]: unknown;
    }

    interface Vapor {
        asset(path: string): string;
        withBaseAssetUrl(url?: string): void;
        store(file: File, options?: VaporStoreOptions): Promise<VaporStoredFile>;
    }

    const Vapor: Vapor;

    export default Vapor;
}
