/**
 * Zabbix JSON-RPC 2.0 客户端
 * 代理路径：/zabbix-api → http://172.16.50.14/api_jsonrpc.php
 */
export interface ZabbixClientConfig {
    url: string;
    token: string;
}
export interface ZabbixGroup {
    groupid: string;
    name: string;
}
export interface ZabbixApplication {
    applicationid: string;
    name: string;
}
export interface ZabbixHost {
    hostid: string;
    host: string;
    name: string;
}
export interface ZabbixItemTag {
    tag: string;
    value?: string;
}
export interface ZabbixItem {
    itemid: string;
    hostid: string;
    name: string;
    key_: string;
    value_type: string;
    units: string;
    valuemapid?: string;
    tags?: ZabbixItemTag[];
}
export interface ZabbixHistoryPoint {
    itemid: string;
    clock: string;
    value: string;
    ns: string;
}
export interface ZabbixTrendPoint {
    itemid: string;
    clock: string;
    num: string;
    value_min: string;
    value_avg: string;
    value_max: string;
}
/** 查询主机组列表 */
export declare function getGroups(cfg: ZabbixClientConfig): Promise<ZabbixGroup[]>;
/** 查询主机列表，可按组过滤 */
export declare function getHosts(groupids: string[] | undefined, search: string | undefined, cfg: ZabbixClientConfig): Promise<ZabbixHost[]>;
/** 查询应用集列表（Zabbix < 5.4），可按主机过滤 */
export declare function getApplications(hostids: string[], cfg: ZabbixClientConfig): Promise<ZabbixApplication[]>;
/** 查询指定主机的监控项，可按应用集和 tag 过滤 */
/**
 * 查询指定主机的监控项，可按应用集和 item tag 过滤（Zabbix 5.4+）
 *  itemTag: "tag: value" 格式字符串，空字符串表示不过滤
 */
export declare function getItems(hostids: string[], applicationids: string[] | undefined, search: string | undefined, cfg: ZabbixClientConfig, itemTag?: string): Promise<ZabbixItem[]>;
/** 按 itemid 列表直接查询监控项元数据（不限 value_type） */
export declare function getItemsByIds(itemids: string[], cfg: ZabbixClientConfig): Promise<ZabbixItem[]>;
/** Format item tag to display string */
export declare function itemTagToString(tag: ZabbixItemTag): string;
/** 查询文本类型监控项（value_type=1,2,4） */
export declare function getTextItems(hostids: string[], applicationids: string[] | undefined, cfg: ZabbixClientConfig): Promise<ZabbixItem[]>;
export interface ZabbixTrigger {
    triggerid: string;
    description: string;
    priority: string;
    status: string;
}
export interface ZabbixProblem {
    eventid: string;
    objectid: string;
    name: string;
    severity: string;
    clock: string;
    acknowledged: string;
}
export interface ZabbixMacro {
    hostmacroid: string;
    macro: string;
    value: string;
}
export interface ZabbixITService {
    serviceid: string;
    name: string;
}
/** 查询触发器列表 */
export declare function getTriggers(hostids: string[] | undefined, groupids: string[] | undefined, cfg: ZabbixClientConfig): Promise<ZabbixTrigger[]>;
/** 查询当前问题列表 */
export declare function getProblems(groupids: string[] | undefined, hostids: string[] | undefined, severities: number[] | undefined, timeFrom: number | undefined, timeTill: number | undefined, cfg: ZabbixClientConfig): Promise<ZabbixProblem[]>;
/** 查询主机宏 */
export declare function getMacros(hostids: string[] | undefined, cfg: ZabbixClientConfig): Promise<ZabbixMacro[]>;
/** 查询 IT 服务列表 */
export declare function getITServices(cfg: ZabbixClientConfig): Promise<ZabbixITService[]>;
/**
 * 拉取历史数据
 * 时间跨度 < 7天 用 history.get，否则用 trend.get（小时级聚合）
 */
export declare function getHistory(itemids: string[], timeFrom: number, timeTill: number, cfg: ZabbixClientConfig): Promise<ZabbixHistoryPoint[]>;
export interface ZabbixValueMap {
    valuemapid: string;
    name: string;
    mappings: {
        value: string;
        newvalue: string;
    }[];
}
/** 拉取所有 value mapping 定义 */
export declare function getValueMappings(cfg: ZabbixClientConfig): Promise<ZabbixValueMap[]>;
export interface ZabbixDiscoveryRule {
    itemid: string;
    hostid: string;
    name: string;
    key_: string;
}
export interface ZabbixDiscoveredItem {
    itemid: string;
    hostid: string;
    name: string;
    key_: string;
    value_type: string;
    units: string;
    lastvalue: string;
    lastclock: string;
    description: string;
}
/** 查询主机上的 LLD 发现规则列表 */
export declare function getDiscoveryRules(hostids: string[], cfg: ZabbixClientConfig): Promise<ZabbixDiscoveryRule[]>;
export interface ZabbixItemPrototype {
    itemid: string;
    name: string;
    key_: string;
}
/** 查询发现规则下的监控项原型，返回 key_ 列表（含宏，如 net.if.in[ifHCInOctets.{#SNMPINDEX}]） */
export declare function getItemPrototypes(discoveryRuleId: string, cfg: ZabbixClientConfig): Promise<ZabbixItemPrototype[]>;
/**
 * 查询 LLD 规则下已发现的监控项（item.get 过滤 discoveryRule）
 * keyPatterns: 要匹配的 item key 前缀列表，如 ["net.if.in", "net.if.out"]
 * 空数组表示返回该规则下所有 item
 */
/**
 * 查询 LLD 规则下已发现的监控项。
 * 流程：
 *   1. itemprototype.get 拿原型 key 列表
 *   2. 若 keyPatterns 非空，按前缀筛选原型
 *   3. 从原型 key 提取前缀（去掉 [...]），用于客户端过滤实际 item
 *   4. item.get 拉取该规则下全部 item，客户端按前缀过滤
 */
export declare function getDiscoveredItems(hostids: string[], discoveryRuleId: string, keyPatterns: string[], cfg: ZabbixClientConfig): Promise<ZabbixDiscoveredItem[]>;
