import { Firestore } from 'firebase-admin/firestore';
import { B as BookerServerConfig, E as ReservationValidationInput, F as ReservationValidationResult, i as BookingOrderInput, C as CreateOrderResult, h as BookingOrder, w as ProcessBookingChangeOrder, x as ProcessBookingChangeReservation, v as ProcessBookingChangeOptions, P as PaymentLinkOptions, q as PaymentLinkResult, r as PaymentWebhookResult } from './shared/ocd-studio-core-sdk.ShBMfdE2.js';
export { e as BookingAdjustment, f as BookingMetadata, g as BookingMetadataValue, j as BookingOrderRequestData, k as BookingOrderReservation, m as BookingValidationError, n as BookingValidationErrorCode, o as BookingValidationErrorScope, p as CustomerInfo, s as ProcessBookingCancelledContext, t as ProcessBookingChangeCallbackContext, u as ProcessBookingChangeEvent, y as ProcessBookingChangeReservationContext, z as ProcessBookingConfirmedContext, V as ValidatedReservation } from './shared/ocd-studio-core-sdk.ShBMfdE2.js';
import 'vue';
import '@internationalized/date';
import 'firebase-functions/v2/firestore';

interface WebshopServerConfig {
    defaultBrand?: string;
    defaultCurrency?: string;
    defaultLocale?: string;
    provider: 'firebase';
    firebase?: {
        db: Firestore;
        products: string;
        collections: string;
        shippingOptions: string;
        promoCodes: string;
    };
    paymentProvider: 'stripe';
    stripe?: {
        key: string;
        webhook_secret: string;
    };
}
interface PromoCodeDto {
    id?: string;
    code: string;
    type: string;
    value?: number;
    minOrderAmount?: number;
}

declare class WebshopServer {
    private config;
    constructor(config: WebshopServerConfig);
    validatePromoCode(code: string): Promise<{
        valid: boolean;
        promo?: PromoCodeDto;
        error?: string;
    }>;
    createPaymentLink(checkoutData: any): Promise<string>;
}

declare class BookerServer {
    private config;
    constructor(config: BookerServerConfig);
    validateReservation(input: ReservationValidationInput): Promise<ReservationValidationResult>;
    validateReservations(inputs: ReservationValidationInput[]): Promise<ReservationValidationResult[]>;
    createOrder(input: BookingOrderInput): Promise<CreateOrderResult>;
    getOrder(orderId: string): Promise<BookingOrder | null>;
    updateOrderStatus(orderId: string, status: BookingOrder['status'], paymentStatus?: BookingOrder['paymentStatus'], amountPaid?: number): Promise<void>;
    processBookingChange<Order extends ProcessBookingChangeOrder<ProcessBookingChangeReservation> = BookingOrder, Params = Record<string, string>>(options: ProcessBookingChangeOptions<Order, Params>): Promise<void>;
    createPaymentLink(orderId: string, options: PaymentLinkOptions): Promise<PaymentLinkResult>;
    handleWebhook(payload: string | Buffer, signature: string): Promise<PaymentWebhookResult>;
}

export { BookerServer, BookerServerConfig, BookingOrder, BookingOrderInput, CreateOrderResult, PaymentLinkOptions, PaymentLinkResult, PaymentWebhookResult, ProcessBookingChangeOptions, ProcessBookingChangeOrder, ProcessBookingChangeReservation, ReservationValidationInput, ReservationValidationResult, WebshopServer };
export type { WebshopServerConfig };
