export interface ToolConfig {
    name: string;
    description: string;
    requestTemplate: {
        method: string;
        url: string;
        headers?: Array<{
            key: string;
            value: string;
        }>;
    };
    args: ToolArg[];
}
export interface ToolArg {
    name: string;
    type: string;
    required: boolean;
    position: 'body' | 'query' | 'path';
    description: string;
    items?: any;
}
export interface TokenCacheData {
    access_token: string;
    expires_in: number;
    expires_at: number;
    created_at: number;
    app_id?: string;
}
export interface DingTalkResponse<T = any> {
    errcode: number;
    errmsg: string;
    request_id?: string;
    result?: T;
}
export interface DepartmentDetail {
    dept_id: number;
    name: string;
    parent_id: number;
    source_identifier?: string;
    create_dept_group: boolean;
    auto_add_user: boolean;
    tags?: string;
    from_union_org?: boolean;
    order: number;
    dept_group_chat_id?: string;
    group_contain_sub_dept?: boolean;
    org_dept_owner?: string;
    dept_manager_userid_list?: string[];
    outer_dept?: boolean;
    outer_permit_depts?: number[];
    outer_permit_users?: string[];
    user_permits?: string[];
    hide_dept?: boolean;
    dept_permits?: number[];
    auto_approve_apply?: boolean;
    code?: string;
    union_dept_ext?: {
        deptId: number;
        corpId: string;
    };
    member_count?: number;
    owning_member_count?: number;
}
export interface DepartmentBase {
    dept_id: number;
    name: string;
    parent_id: number;
    create_dept_group: boolean;
    auto_add_user: boolean;
}
export interface SearchDepartmentResponse {
    hasMore: boolean;
    totalCount: number;
    list: number[];
}
export interface DepartmentParentsResponse {
    parent_id_list: number[];
}
export interface UserDepartmentParentsResponse {
    parent_list: Array<{
        parent_dept_id_list: number[];
    }>;
}
export interface SubDepartmentIdsResponse {
    dept_id_list: number[];
}
