import type { SupabaseClient } from '../index';
import { BucketOptions, FileOptions, SearchOptions, TransformOptions } from '.';
type Client = SupabaseClient & {
    native: org.nativescript.supabase.SupabaseClient;
};
declare class FileUploadResponse {
    native_: io.github.jan.supabase.storage.FileUploadResponse;
    static fromNative(value: io.github.jan.supabase.storage.FileUploadResponse): FileUploadResponse;
    get native(): io.github.jan.supabase.storage.FileUploadResponse;
    get fullPath(): string;
    get id(): string;
    get path(): string;
}
declare class SignedURLUploadResponse {
    native_: io.github.jan.supabase.storage.FileUploadResponse;
    static fromNative(value: io.github.jan.supabase.storage.FileUploadResponse): SignedURLUploadResponse;
    get native(): io.github.jan.supabase.storage.FileUploadResponse;
    get fullPath(): string;
    get path(): string;
}
declare class SignedUploadURL {
    native_: io.github.jan.supabase.storage.UploadSignedUrl;
    static fromNative(value: io.github.jan.supabase.storage.UploadSignedUrl): SignedUploadURL;
    get native(): io.github.jan.supabase.storage.UploadSignedUrl;
    get path(): string;
    get signedURL(): string;
    get token(): string;
}
declare class FileObject {
    native_: io.github.jan.supabase.storage.FileObject;
    static fromNative(value: io.github.jan.supabase.storage.FileObject): FileObject;
    get native(): io.github.jan.supabase.storage.FileObject;
    get bucketId(): string;
    get createdAt(): Date;
    get id(): string;
    get lastAccessedAt(): Date;
    get metadata(): Record<string, any>;
    get name(): string;
    get owner(): string;
    get updatedAt(): Date;
    toJSON(): {
        bucketId: string;
        createdAt: Date;
        id: string;
        lastAccessedAt: Date;
        metadata: Record<string, any>;
        name: string;
        owner: string;
        updatedAt: Date;
    };
}
export declare class StorageBucket {
    native_: io.github.jan.supabase.storage.Bucket;
    static fromNative(value: io.github.jan.supabase.storage.Bucket): StorageBucket;
    get native(): io.github.jan.supabase.storage.Bucket;
    get allowedMimeTypes(): string[];
    get createdAt(): Date;
    get id(): string;
    get isPublic(): boolean;
    get name(): string;
    get owner(): string;
    get updatedAt(): Date;
    toJSON(): {
        allowedMimeTypes: string[];
        createdAt: Date;
        id: string;
        isPublic: boolean;
        name: string;
        owner: string;
        updatedAt: Date;
    };
}
export declare class StorageFileApi {
    native_: org.nativescript.supabase.SupabseStorage.FileApi;
    static fromNative(value: org.nativescript.supabase.SupabseStorage.FileApi): StorageFileApi;
    get native(): org.nativescript.supabase.SupabseStorage.FileApi;
    copy(fromPath: string, toPath: string): Promise<string>;
    createSignedUploadUrl(path: string): Promise<SignedUploadURL>;
    createSignedUrl(path: string, expiresIn: number, options?: {
        download?: string | boolean;
        transform: TransformOptions;
    }): Promise<string>;
    createSignedUrls(paths: string[], expiresIn: number, options?: {
        download: string | boolean;
    }): Promise<string[]>;
    download(path: string, options?: TransformOptions): Promise<ArrayBuffer>;
    getPublicUrl(path: string, options?: {
        transform: TransformOptions;
        download?: string | boolean;
    }): string;
    list(path?: string, options?: SearchOptions): Promise<FileObject[]>;
    move(fromPath: string, toPath: string): Promise<{
        data: any;
        error: any;
    }>;
    remove(paths: string[]): Promise<FileObject[]>;
    update(path: string, data: ArrayBuffer | string, options: FileOptions): Promise<FileUploadResponse>;
    upload(path: string, data: ArrayBuffer | string, options: FileOptions): Promise<FileUploadResponse>;
    uploadToSignedUrl(path: string, token: string, data: ArrayBuffer | string, options?: FileOptions): Promise<SignedURLUploadResponse>;
}
export declare class SupabaseStorageClient {
    client: Client;
    constructor(client: Client);
    get native(): org.nativescript.supabase.SupabseStorage;
    createBucket(id: string, options?: BucketOptions): Promise<void>;
    getBucket(id: string): Promise<unknown>;
    listBuckets(id: string): Promise<unknown>;
    updateBucket(id: string, options?: BucketOptions): Promise<void>;
    deleteBucket(id: string): Promise<void>;
    emptyBucket(id: string): Promise<void>;
    from(id: string): StorageFileApi;
}
export {};
