import { ConfigObj } from '@showbridge/types';
import { CloudProtocolParams, HTTPProtocolParams, MIDIProtocolParams, MQTTProtocolParams, TCPProtocolParams, UDPProtocolParams } from '@showbridge/types/dist/models/params/protocols.js';
import { ValidateFunction } from 'ajv';
import { SomeJSONSchema } from 'ajv/dist/types/json-schema.js';
import { Trigger } from './triggers/index.js';
type ConfigProtocols = {
    cloud: {
        params: CloudProtocolParams;
    };
    http: {
        params: HTTPProtocolParams;
    };
    midi: {
        params: MIDIProtocolParams;
    };
    mqtt: {
        params: MQTTProtocolParams;
    };
    tcp: {
        params: TCPProtocolParams;
    };
    udp: {
        params: UDPProtocolParams;
    };
};
type ConfigHandlers = {
    http: {
        triggers: Trigger<unknown>[];
    };
    midi: {
        triggers: Trigger<unknown>[];
    };
    mqtt: {
        triggers: Trigger<unknown>[];
    };
    osc: {
        triggers: Trigger<unknown>[];
    };
    tcp: {
        triggers: Trigger<unknown>[];
    };
    udp: {
        triggers: Trigger<unknown>[];
    };
    ws: {
        triggers: Trigger<unknown>[];
    };
};
declare class Config {
    schema: SomeJSONSchema;
    validate: ValidateFunction<unknown>;
    obj: ConfigObj;
    handlers: ConfigHandlers;
    protocols: ConfigProtocols;
    constructor(configObj: any, schema: SomeJSONSchema);
    loadHandlers(): void;
    loadProtocols(): void;
    migrate(configObj: ConfigObj): ConfigObj;
    getTriggers(messageType: string): Trigger<unknown>[];
    toJSON(): any;
}
export default Config;
