import { DataType, DataTypeFunction } from '../datatype/DataType';
import { ProtocolConfiguration } from './ProtocolConfiguration';
import { ComplexDataType } from '../..';
export declare type ProtocolTypeSetup = {
    name?: string;
    description?: string;
    isProtocolDataType?: (protocolDataType: any) => boolean;
};
export declare type ProtocolDataType = {
    name: string | Function;
};
export declare class ProtocolType {
    name: string;
    description: string;
    isProtocolDataType: (protocolDataType: any) => boolean;
    protocolConfiguration: ProtocolConfiguration;
    private _dataTypeMap;
    private _dynamicDataTypeMap;
    constructor(setup?: ProtocolTypeSetup);
    addDataTypeMap(schemaDataType: DataType | DataTypeFunction, protocolDataType: ProtocolDataType): void;
    addDynamicDataTypeMap(schemaDataTypeDetector: Function, protocolDataType: any): void;
    convertToProtocolDataType(schemaDataType: DataType | ComplexDataType | DataTypeFunction, sourceName?: string, asInput?: boolean): any;
    setProtocolConfiguration(protocolConfiguration: any): void;
    getProtocolConfiguration(): ProtocolConfiguration;
    toString(): string;
}
export declare const isProtocolType: (obj: unknown) => obj is ProtocolType;
