import { ActionObj, RouterVars } from '@showbridge/types';
import { EventEmitter } from 'node:events';
import { Message } from '../messages/index.js';
import { RouterProtocols } from '../router.js';
import Transform from '../transforms/transform.js';
declare class Action<T extends Object> extends EventEmitter {
    private obj;
    transforms: Transform<unknown>[];
    constructor(actionObj: ActionObj<T>);
    loadTransforms(): void;
    resolveTemplatedParams(data: any): T;
    get type(): string;
    get params(): T;
    get enabled(): boolean;
    get comment(): string;
    getTransformedMessage<T extends Message>(msg: T, vars: RouterVars): any;
    _run(msg: Message, vars: RouterVars, protocols: RouterProtocols): void;
    run(msg: Message, vars: RouterVars, protocols: RouterProtocols): void;
    toJSON(): {
        comment: string;
        type: string;
        params: T;
        transforms: {
            type: string;
            params: unknown;
            enabled: boolean;
            comment: string;
        }[];
        enabled: boolean;
    };
}
export default Action;
