import z__default from 'zod';
import { Message } from '@bufbuild/protobuf';

/**
 * @generated from message public_api.v1.NotifyUserAboutProductAvailabilityRequest
 */
type NotifyUserAboutProductAvailabilityRequest = Message<"public_api.v1.NotifyUserAboutProductAvailabilityRequest"> & {
    /**
     * @generated from field: string project_id = 1;
     */
    projectId: string;
    /**
     * @generated from field: string product_id = 2;
     */
    productId: string;
    /**
     * @generated from field: string email = 3;
     */
    email: string;
};

declare namespace BitsnapBackend {
    function setCustomHost(host: string): Promise<void>;
    function getHost(): string;
    function setApiKey(apiKey: string): Promise<void>;
    function getProduct(projectID: string, id: string, requestInit?: RequestInit): Promise<{
        data: {
            message?: string | undefined;
            result?: {
                metadata?: Record<string, any> | undefined;
                availableQuantity?: number | undefined;
                ownerID?: string | undefined;
                description?: string | null | undefined;
                createdAt?: number | undefined;
                updatedAt?: number | undefined;
                isDeliverable?: boolean | undefined;
                additional?: {
                    sku?: string | undefined;
                    baselinkerFields?: {
                        storageID?: string | undefined;
                    } | undefined;
                } | undefined;
                variants?: {
                    metadata?: Record<string, any> | undefined;
                    id: string;
                    name: string;
                    price: number;
                    currency: string;
                    images: string[];
                    availableQuantity: number;
                }[] | undefined;
                id: string;
                name: string;
                price: number;
                currency: string;
                image_url: string;
                images: string[];
            } | undefined;
            success: boolean;
        };
    } | undefined>;
    function getProducts(projectID: string, limit: number, offset: number, requestInit?: RequestInit, opts?: {
        groupVariants?: boolean;
    }): Promise<{
        data: {
            success: boolean;
            result: {
                metadata?: Record<string, any> | undefined;
                availableQuantity?: number | undefined;
                ownerID?: string | undefined;
                description?: string | null | undefined;
                createdAt?: number | undefined;
                updatedAt?: number | undefined;
                isDeliverable?: boolean | undefined;
                additional?: {
                    sku?: string | undefined;
                    baselinkerFields?: {
                        storageID?: string | undefined;
                    } | undefined;
                } | undefined;
                variants?: {
                    metadata?: Record<string, any> | undefined;
                    id: string;
                    name: string;
                    price: number;
                    currency: string;
                    images: string[];
                    availableQuantity: number;
                }[] | undefined;
                id: string;
                name: string;
                price: number;
                currency: string;
                image_url: string;
                images: string[];
            }[];
            totalCount: number;
        };
    } | {
        categories: undefined;
        products: undefined;
    }>;
    function sendNotification(request: NotificationRequest, requestInit?: RequestInit): Promise<"success" | "failure">;
    function notifyProductAvailability(request: Pick<NotifyUserAboutProductAvailabilityRequest, "productId" | "email" | "projectId">, opts?: {
        headers?: Headers;
        signal?: AbortSignal;
        timeoutMs?: number;
    }): Promise<{
        status: "success" | "failure";
        message?: "failed-to-notify";
    }>;
}
declare const notificationRequestSchema: z__default.ZodObject<{
    to: z__default.ZodArray<z__default.ZodString>;
    title: z__default.ZodString;
    body: z__default.ZodOptional<z__default.ZodString>;
    type: z__default.ZodDefault<z__default.ZodUnion<readonly [z__default.ZodEnum<{
        email: "email";
        push: "push";
        sms: "sms";
    }>, z__default.ZodArray<z__default.ZodEnum<{
        email: "email";
        push: "push";
        sms: "sms";
    }>>]>>;
    emailOptions: z__default.ZodOptional<z__default.ZodObject<{
        subject: z__default.ZodOptional<z__default.ZodString>;
        replyTo: z__default.ZodOptional<z__default.ZodString>;
        htmlText: z__default.ZodOptional<z__default.ZodString>;
    }, {}>>;
}, {}>;
type NotificationRequest = z__default.infer<typeof notificationRequestSchema>;

export { BitsnapBackend, type NotificationRequest };
