import { Command, ResponseInterface } from '@iotize/device-client.js/client/api';
import { FilterFunction, Predicate, ResponseAdapter, ResponseAdapterFunction, RouteType } from './definitions';
export declare class EqualRequestFilter implements Predicate<Command> {
    protected command: Command;
    constructor(command: Command);
    test(command: Command): boolean;
    toString(): string;
}
export declare class RegExpFilter implements Predicate<Command> {
    protected regex: RegExp;
    constructor(regex: RegExp);
    test(input: Command): boolean;
}
export declare class Util {
    static parseApiRequestString(cmdString: string): Command;
}
export declare class Router {
    _routes: {
        predicate: Predicate<any>;
        adapter: ResponseAdapter<any>;
    }[];
    constructor();
    get routes(): {
        predicate: Predicate<any>;
        adapter: ResponseAdapter<any>;
    }[];
    findRoute(request: Command): any;
    addRoute<T>(left: FilterFunction<Command> | Predicate<Command> | Command | RegExp | string, right: ResponseAdapterFunction<T> | ResponseAdapter<T> | ResponseInterface<T> | Uint8Array): this;
    /**
     * Mapping a command (represented as a string with format "<request-type> <path> [data]"
     * ie: GET /3//3 0xABCD or POST /1024//0 0xtest
     *
     * Response must either be:
     *  - an hexadecimal data represented as a string (0xABCD)
     *  - An object with a coreRet and a body
     *  - A Uint8Array
     */
    addRoutes(map: {
        [key: string]: RouteType;
    }): this;
    clearRoutes(): this;
}
