export interface TEProperty {
    name: string;
    displayName?: string;
    type: 'string' | 'number' | 'bool' | 'datetime' | 'object' | 'array_row' | 'array_string';
    desc?: string;
    createTime?: string;
    creator?: string;
    lastUpdateAuth?: string;
    lastUpdateTime?: string;
    hasReported?: boolean;
}
export interface TEUserProperty extends TEProperty {
    propTag?: string;
    updateType: 'user_set' | 'user_setOnce' | 'user_add';
    updateTypeName?: string;
}
export interface TEEvent {
    eventName: string;
    displayName?: string;
    eventDesc?: string;
    eventTag?: string;
    createTime?: string;
    creator?: string;
    lastUpdateAuth?: string;
    lastUpdateTime?: string;
    hasReported?: boolean;
    props: string[];
    propInfosOnEvent?: Array<{
        name: string;
        hasReported?: boolean;
    }>;
}
export interface TEProgram {
    projectId: number;
    createTime?: string;
    events: TEEvent[];
    eventProps: TEProperty[];
    commonEventProps: TEProperty[];
    userProps: TEUserProperty[];
}
export declare class TEClient {
    private opts;
    constructor(opts: {
        host: string;
        token: string;
    });
    private url;
    private assertOk;
    getProgram(projectId: number): Promise<TEProgram | null>;
    deleteProgram(projectId: number): Promise<{
        return_code: number;
        return_message: string;
    }>;
    uploadProgramExcel(args: {
        projectId: number;
        file: Buffer;
        filename: string;
    }): Promise<{
        return_code: number;
        return_message: string;
    }>;
    /** 获取 AE 用户配置（含语言设置 umi_locale） */
    getAEConfig(): Promise<Record<string, unknown> | null>;
    /** 切换 AE 语言（lang 格式：en_US, zh_CN, ja_JP, ko_KR） */
    setAELang(langCode: string): Promise<void>;
}
