/// <reference types="node" resolution-mode="require"/>
import { Readable } from 'node:stream';
import { z } from 'zod';
import { Storage } from '@google-cloud/storage';
export declare const bucket_config: z.ZodObject<{
    /**
     * Name of the Google Cloud Storage bucket to upload the audio file to.
     */
    bucketName: z.ZodString;
}, "strip", z.ZodTypeAny, {
    bucketName: string;
}, {
    bucketName: string;
}>;
export type BucketConfig = z.input<typeof bucket_config>;
export declare const write_config: z.ZodObject<{
    /**
     * Name of the audio asset to be uploaded to Cloud Storage.
     */
    assetName: z.ZodString;
    /**
     * Readable stream containing the audio data to be uploaded to Cloud Storage.
     */
    readable: z.ZodType<Readable, z.ZodTypeDef, Readable>;
}, "strip", z.ZodTypeAny, {
    assetName: string;
    readable: Readable;
}, {
    assetName: string;
    readable: Readable;
}>;
export type WriteConfig = z.input<typeof write_config>;
export declare const write: (storage: Storage, cfg: BucketConfig, config: WriteConfig) => Promise<{
    value: {
        message: string;
        href: string;
    };
    error?: undefined;
} | {
    error: Error;
    value?: undefined;
}> | {
    error: Error;
};
export declare const auth_options: z.ZodObject<{
    credentials: z.ZodOptional<z.ZodObject<{
        client_email: z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString]>;
        private_key: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        client_email: string;
        private_key: string;
    }, {
        client_email: string;
        private_key: string;
    }>>;
    keyFilename: z.ZodOptional<z.ZodDefault<z.ZodString>>;
}, "strip", z.ZodTypeAny, {
    credentials?: {
        client_email: string;
        private_key: string;
    } | undefined;
    keyFilename?: string | undefined;
}, {
    credentials?: {
        client_email: string;
        private_key: string;
    } | undefined;
    keyFilename?: string | undefined;
}>;
export type AuthOptions = z.input<typeof auth_options>;
export declare const client_config: z.ZodObject<z.objectUtil.extendShape<{
    credentials: z.ZodOptional<z.ZodObject<{
        client_email: z.ZodUnion<[z.ZodString, z.ZodString, z.ZodString]>;
        private_key: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        client_email: string;
        private_key: string;
    }, {
        client_email: string;
        private_key: string;
    }>>;
    keyFilename: z.ZodOptional<z.ZodDefault<z.ZodString>>;
}, {
    /**
     * Name of the Google Cloud Storage bucket to upload the audio file to.
     */
    bucketName: z.ZodString;
}>, "strip", z.ZodTypeAny, {
    bucketName: string;
    credentials?: {
        client_email: string;
        private_key: string;
    } | undefined;
    keyFilename?: string | undefined;
}, {
    bucketName: string;
    credentials?: {
        client_email: string;
        private_key: string;
    } | undefined;
    keyFilename?: string | undefined;
}>;
export type ClientConfig = z.input<typeof client_config>;
/**
 * Client for Google Cloud Storage.
 */
export declare const defClient: (config: ClientConfig) => {
    config: {
        bucketName: string;
    };
    write: (config: {
        assetName: string;
        readable: Readable;
    }) => Promise<{
        value: {
            message: string;
            href: string;
        };
        error?: undefined;
    } | {
        error: Error;
        value?: undefined;
    }> | {
        error: Error;
    };
};
//# sourceMappingURL=cloud-storage.d.ts.map