import type { Dayjs } from 'dayjs';
export declare type BlockTimeModalTimeRange = [Dayjs, Dayjs] | null;
export interface BlockTimeModalResource {
    id: string | number;
    name: string;
    [key: string]: unknown;
}
export interface BlockTimeModalDraft {
    name: string;
    note: string;
    resourceId: string;
    timeRange: BlockTimeModalTimeRange;
}
export interface BlockTimeModalSubmitPayload {
    name: string;
    note?: string;
    resource_ids: number[];
    blocked_sales_channels: string[];
    /** `YYYY-MM-DD HH:mm` */
    start_time: string;
    /** `YYYY-MM-DD HH:mm` */
    end_time: string;
}
export interface BlockTimeModalOpenOptions {
    resources: BlockTimeModalResource[];
    initialName?: string;
    initialNote?: string;
    initialResourceId?: string | number;
    initialTimeRange?: BlockTimeModalTimeRange;
    blockedSalesChannels?: string[];
    minuteStep?: number;
    title?: string;
    confirmText?: string;
    cancelText?: string;
    closeOnBackdrop?: boolean;
    zIndex?: number;
    theme?: 'light' | 'dark';
    submitErrorMessage?: string;
    onSubmit?: (context: BlockTimeModalSubmitContext) => Promise<unknown> | unknown;
}
export interface BlockTimeModalResult {
    draft: BlockTimeModalDraft;
    submitPayload: BlockTimeModalSubmitPayload;
    submitResult?: unknown;
}
export interface BlockTimeModalSubmitContext {
    draft: BlockTimeModalDraft;
    submitPayload: BlockTimeModalSubmitPayload;
    options: BlockTimeModalOpenOptions;
}
export interface BlockTimeModalCloseReason {
    type: 'cancel' | 'backdrop' | 'escape' | 'programmatic-close' | 'replaced';
    message?: string;
}
export interface BlockTimeModalRendererProps {
    options: BlockTimeModalOpenOptions;
    onResolve: (result: BlockTimeModalResult) => void;
    onReject: (reason: BlockTimeModalCloseReason) => void;
}
