import { Capi } from '@tencent-sdk/capi';
import { Cls } from '@tencent-sdk/cls';
import { ApiMap, ActionType } from './apis';
import { Monitor } from './monitor';
import { Credentials, FaasOptions, FaasBaseConfig, FunctionInfo, GetFaasOptions, GetVersionsOptions, GetLogOptions, GetLogDetailOptions, ClsConfig, SearchLogItem, SearchLogDetailItem, InvokeOptions, InvokeResult, GetMonitorDataOptions, MonitorData, FormatedMonitorData, GetTriggersOptions, TriggerData, GetAliasesOptions, Version, Alias } from './typings';
export * from './typings';
export * from './monitor';
export declare class FaaS {
    credentials: Credentials;
    region: string;
    debug: boolean;
    capi: Capi;
    cls: Cls;
    monitor: Monitor;
    apis: ApiMap;
    clsConfigCache: {
        [prop: string]: {
            logsetId: string;
            topicId: string;
        };
    };
    constructor({ secretId, secretKey, token, region, debug, }: FaasOptions);
    /**
     * 设置当前地域
     * @param {string} region 地区
     */
    setRegion(region: string): void;
    /**
     * 获取当前地域
     * @returns {string} 地域
     */
    getRegion(): string;
    request({ Action, ...data }: {
        Action: ActionType;
        [key: string]: any;
    }): Promise<any>;
    getTriggers({ name, namespace, page, }: GetTriggersOptions): Promise<TriggerData[]>;
    /**
     * 获取 faas 命名空间列表
     */
    getNamespaces(options?: {
        page?: number;
        limit?: number;
    }): Promise<any>;
    /**
     * 获取 faas 版本列表
     * @param {getVersionsOptions} options 参数
     * @returns {Promise<Version[]>} 函数版本列表，字符串数组
     */
    getVersions({ name, namespace, page, limit, order, orderBy, }: GetVersionsOptions): Promise<Version[]>;
    /**
     * 获取 faas 别名列表
     * @param {GetAliasesOptions} options 参数
     * @returns {Promise<Alias[]>} 函数版本列表，字符串数组
     */
    getAliases({ name, namespace, page, limit, }: GetAliasesOptions): Promise<Alias[]>;
    isVersionExist({ name, namespace, version, }: {
        version: string;
        name: string;
        namespace?: string;
    }): Promise<boolean>;
    isAliasExist({ name, namespace, alias, }: {
        alias: string;
        name: string;
        namespace?: string;
    }): Promise<boolean>;
    /**
     *  获取 faas 详情
     * @param {GetFaasOptions} options 参数
     * @returns {Promise<FunctionInfo | null>} 函数详情，如果不存在则返回 null
     */
    get({ name, namespace, qualifier, showCode, showTriggers, }: GetFaasOptions): Promise<FunctionInfo | null>;
    invokeHTTPFaas({ name, namespace, event, }: InvokeOptions): Promise<string>;
    /**
     * 调用函数
     * @param {InvokeOptions} options 参数
     * @returns {Promise<InvokeResult>} 函数执行结果
     */
    invoke({ name, namespace, qualifier, event, logType, invokeType, }: InvokeOptions): Promise<InvokeResult | string>;
    /**
     * 获取 faas 的 CLS 配置
     * @param {FaasBaseConfig} options 参数
     * @returns {Promise<ClsConfig>} 函数 CLS 配置
     */
    getClsConfig({ name, namespace, qualifier, }: FaasBaseConfig): Promise<ClsConfig>;
    /**
     * 获取函数日志列表，默认 近1个小时
     * 注意如果同时定义了 startTime 和 endTime，interval 参数将不起作用
     * @param {GetLogOptions} options 参数
     * @returns {Promise<SearchLogItem[]>} 日志列表
     */
    getLogList({ name, namespace, qualifier, status, endTime, interval, limit, startTime, isFilterCompleted, }: GetLogOptions): Promise<SearchLogItem[]>;
    /**
     * 获取请求 ID日志详情，包含多条日志（流式日志），需要自定义拼接
     * @param {GetLogDetailOptions} options 参数
     * @returns {Promise<SearchLogDetailItem[]>} 日志详情列表
     */
    getLogDetail({ startTime, logsetId, topicId, reqId, endTime, }: GetLogDetailOptions): Promise<SearchLogDetailItem[]>;
    /**
     * 通过请求 ID 获取日志详情
     * @param {GetLogOptions} options 参数
     * @returns {Promise<SearchLogItem>} 单条日志详情
     */
    getLogByReqId({ name, namespace, qualifier, endTime, reqId, }: GetLogOptions): Promise<SearchLogItem>;
    /**
     * 获取监控数据，默认获取 Invocation 指标
     * @param {GetMonitorDataOptions} options 参数
     * @returns
     */
    getMetric({ metric, ...rest }: GetMonitorDataOptions): Promise<FormatedMonitorData[] | MonitorData[]>;
}
//# sourceMappingURL=index.d.ts.map