import { Feishu } from "./Feishu.js";
export interface FieldData {
    [key: string]: any;
}
export interface SearchResult<T> {
    items?: T[] | undefined;
    page_token?: string | undefined;
    has_more?: boolean | undefined;
}
export interface RecordData {
    record_id?: string | undefined;
    fields?: FieldData | undefined;
    created_time?: string | undefined;
    last_modified_time?: string | undefined;
}
export interface FieldInfo {
    field_id?: string | undefined;
    field_name?: string | undefined;
    type?: number | undefined;
    property?: any;
}
export interface SearchCondition {
    field_name: string;
    operator: "is" | "isNot" | "contains" | "doesNotContain" | "isEmpty" | "isNotEmpty" | "isGreater" | "isGreaterEqual" | "isLess" | "isLessEqual" | "like" | "in" | "equal";
    value: any[];
}
export interface SearchFilter {
    conjunction: "and" | "or";
    conditions: SearchCondition[];
}
export interface SearchSort {
    field_name: string;
    desc?: boolean;
}
/**
 * 搜索选项
 * @param filter - 搜索过滤条件
 * @param sort - 搜索排序条件
 * @param view_id - 搜索多维表格中视图的唯一标识。
 * @param field_name - 搜索字段名称,字段名称，用于指定本次查询返回记录中包含的字段


 */
export interface SearchOptions {
    filter?: SearchFilter;
    sort?: SearchSort[];
    view_id?: string;
    field_name?: string;
    page?: SearchPage;
}
/**
 * 搜索分页
 * @param page_size - 每页返回的记录数
 * @param page_token - 分页标记，用于获取下一页数据
 */
export interface SearchPage {
    page_size?: number;
    page_token?: string;
}
export interface TableMeta {
    app_token?: string;
    table_id?: string;
    table_name?: string;
    revision?: number;
}
/**
 * 使用FeishuTable 需要确认提供 appId、appSecret、appToken、 tableId
 */
export declare class Table<T extends FieldData = FieldData> {
    private appToken;
    private tableId;
    private client;
    constructor({ appToken, tableId, feishu, }?: {
        appToken?: string;
        tableId?: string;
        feishu?: Feishu;
    });
    /**
     * 插入记录
     *
     * @param fields - 要插入的字段数据
     * @returns 成功返回记录数据，失败返回 null
     */
    insert(fields: T): Promise<RecordData | null>;
    /**
     * 删除记录
     *
     * @param recordId - 要删除的记录 ID
     * @returns 成功返回 true，失败返回 false
     */
    delete(recordId: string): Promise<boolean>;
    /**
     * 获取多维表格元数据
     *
     * @returns 成功返回表格元数据，失败返回 null
     */
    meta(): Promise<TableMeta | null>;
    /**
     * 搜索记录
     *
     * @param options - 搜索选项
     * @returns 成功返回搜索结果，失败返回 null
     */
    search(options?: SearchOptions): Promise<SearchResult<RecordData> | null>;
    iterate(options: SearchOptions | undefined, callback: (record: RecordData[]) => void | Promise<void>): Promise<void>;
    /**
     * 列出多维表格的所有字段
     *
     * @returns 成功返回字段列表，失败返回 null
     */
    fields(): Promise<FieldInfo[] | null>;
    /**
     * 更新记录
     *
     * @param recordId - 要更新的记录 ID
     * @param fields - 要更新的字段数据
     * @returns 成功返回更新后的记录数据，失败返回 null
     */
    update(recordId: string, fields: FieldData): Promise<RecordData | null>;
}
//# sourceMappingURL=Table.d.ts.map