import type { ScheduleItem } from '../Schedule/types';
export interface MultiLangObject {
    en?: string;
    ja?: string;
    pt?: string;
    'zh-CN'?: string;
    'zh-HK'?: string;
    original?: string;
    [key: string]: string | undefined;
}
export interface OpenDataConfig {
    'basic.enable'?: boolean;
    'basic.code'?: string | null;
    'basic.name'?: string | MultiLangObject;
    'basic.unavailable_message'?: string | MultiLangObject;
    'availability.paused'?: boolean;
    'availability.pause_message'?: string | MultiLangObject;
    'availability.pause_behavior'?: string;
    'availability.closed_behavior'?: string;
    'availability.closed_message'?: string | MultiLangObject;
    'availability.operating_hours'?: number[];
    'reservation.enable'?: boolean;
    'reservation.auto_confirm'?: boolean;
    'reservation.auto_confirm_mode'?: string;
    'reservation.auto_confirm_delay_seconds'?: number;
    'sale.allow_item_notes'?: boolean;
    'sale.allow_order_notes'?: boolean;
    'sale.enable_item_rules'?: boolean;
    'sale.enable_short_number'?: boolean;
    'sale.short_number_daily_reset'?: boolean;
    'sale.short_number_start_number'?: number;
    'sale.short_number_prefix'?: string | null;
    'sale.sale_number_prefix'?: string | null;
    'sale.enabled_item_rules'?: number[];
    'fulfillment.enable_pickup'?: boolean;
    'fulfillment.overdue_reminder'?: boolean;
    'fulfillment.manual_input_type'?: string;
    'fulfillment.enable_auto_complete'?: boolean;
    'fulfillment.enable_table_service'?: boolean;
    'fulfillment.fulfillment_ref_mode'?: string;
    'fulfillment.advance_warning_minutes'?: number;
    'fulfillment.update_end_time_on_auto_complete'?: string;
    'menu.associated_menus'?: Array<{
        label: string;
        value: number;
    }>;
    [key: string]: any;
}
export interface OpenDataState {
    data: OpenDataConfig | null;
    lastFetchedAt: number | null;
}
export interface OpenDataFetchParams {
    scope: string;
    target: string;
    section_code: string[];
}
export interface OpenDataApiResponse {
    status: boolean;
    code: number;
    message: string;
    data: OpenDataConfig;
}
export type OpenDataUnavailableReason = 'shop_disabled' | 'paused' | 'closed' | 'reservation_disabled';
export interface OpenDataAvailabilityResult {
    available: boolean;
    reason: OpenDataUnavailableReason | null;
    message: string | MultiLangObject | null;
}
export interface ComputeAvailabilityParams {
    config: OpenDataConfig | null;
    scheduleList?: ScheduleItem[];
}
