/**
 * filter-operators.ts — Advanced Filter Operator Registry SSOT
 *
 * Single source of truth for all filter operator definitions.
 * 51 ops × 9 columnTypes × 12 ValueShapes.
 *
 * **禁止**:component 內 hardcode op 字串。一律走 `OPERATOR_REGISTRY[columnType]`。
 *
 * 設計路線:ClickUp baseline + 合理擴充(string +2, url 獨立 +4, date +2)。
 * 詳細 spec:`./filter-operators.spec.md`
 */
import type { ColumnType } from './column-types';
/**
 * Filter value 該用什麼 picker — panel 只認 ValueShape,不認 op。
 * 新增 op 只需 map 到既有 shape。
 */
export type ValueShape = 'none' | 'text' | 'number' | 'date_single' | 'date_range' | 'date_relative' | 'datetime_single' | 'datetime_range' | 'select_single' | 'select_multi' | 'person_single' | 'person_multi';
export interface OperatorSpec {
    /** Internal key, snake_case, immutable for FilterTree serialization */
    op: string;
    /** UI label in zh-TW(暫硬編,留 i18n hook) */
    label: string;
    /** Reference label for English / future i18n key */
    labelEn: string;
    /**
     * Value picker shape.
     * date_* shapes auto-promote to datetime_* when includeTime=true(via `getValueShape`).
     */
    valueShape: ValueShape;
}
export declare const DATE_RELATIVE_GROUPS: readonly [{
    readonly key: "past";
    readonly label: "過去";
}, {
    readonly key: "current";
    readonly label: "目前";
}, {
    readonly key: "future";
    readonly label: "未來";
}];
export declare const DATE_RELATIVE_OPTIONS: readonly [{
    readonly value: "past_30_days";
    readonly label: "過去 30 天";
    readonly group: "past";
}, {
    readonly value: "past_7_days";
    readonly label: "過去 7 天";
    readonly group: "past";
}, {
    readonly value: "last_month";
    readonly label: "上月";
    readonly group: "past";
}, {
    readonly value: "last_week";
    readonly label: "上週";
    readonly group: "past";
}, {
    readonly value: "yesterday";
    readonly label: "昨天";
    readonly group: "past";
}, {
    readonly value: "today";
    readonly label: "今天";
    readonly group: "current";
}, {
    readonly value: "this_week";
    readonly label: "本週";
    readonly group: "current";
}, {
    readonly value: "this_month";
    readonly label: "本月";
    readonly group: "current";
}, {
    readonly value: "tomorrow";
    readonly label: "明天";
    readonly group: "future";
}, {
    readonly value: "next_week";
    readonly label: "下週";
    readonly group: "future";
}, {
    readonly value: "next_month";
    readonly label: "下月";
    readonly group: "future";
}, {
    readonly value: "next_7_days";
    readonly label: "未來 7 天";
    readonly group: "future";
}, {
    readonly value: "next_30_days";
    readonly label: "未來 30 天";
    readonly group: "future";
}];
/**
 * SSOT canonical — 全部 51 ops, 9 columnTypes 對照表.
 *
 * **禁止繞過**:component 內勿 hardcode op 字串(M17 Rule-of-3 + Phase 5 Q3=c TypeScript-enforce 派)。
 * `currency` 共用 `number` op set,渲染依 `column.meta.precision/prefix` 格式化。
 */
export declare const OPERATOR_REGISTRY: Record<ColumnType, OperatorSpec[]>;
/** Default operator per columnType — 開新 condition 時的 op preset */
export declare const DEFAULT_OPERATOR: Record<ColumnType, string>;
/**
 * Resolve ValueShape for a given op + columnType + includeTime flag.
 *
 * `date_single` / `date_range` shapes auto-promote to `datetime_single` /
 * `datetime_range` when columnType=`date` && includeTime=true. All other
 * shapes pass-through unchanged.
 *
 * `date_relative` stays as-is(relative 本質 day-level,e.g. `today` =
 * 從今天 00:00 到 23:59:59,跟 includeTime 無關)。
 */
export declare function getValueShape(op: OperatorSpec, columnType: ColumnType, includeTime?: boolean): ValueShape;
/** Get OperatorSpec by columnType + op key. Returns null if not found. */
export declare function getOperatorSpec(columnType: ColumnType, op: string): OperatorSpec | null;
//# sourceMappingURL=filter-operators.d.ts.map