import * as v from "valibot";

//#region ../parsers/src/schemas/index.d.ts
declare function createUplinkInputSchema(): v.ObjectSchema<{
  /**
   * The uplink payload byte array, where each byte is represented by an integer between 0 and 255.
   */
  readonly bytes: v.ArraySchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 255, undefined>, v.IntegerAction<number, undefined>]>, undefined>;
  /**
   * The uplink message LoRaWAN `fPort`
   */
  readonly fPort: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 224, undefined>, v.IntegerAction<number, undefined>]>, undefined>;
  /**
   * ISO 8601 string representation of the time the message was received by the network server.
   */
  readonly recvTime: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
}, "Uplink input should be an object with `bytes` and optional `fPort` and `recvTime` properties.">;
declare function createHexUplinkInputSchema(): v.SchemaWithPipe<readonly [v.UnionSchema<[v.ObjectSchema<{
  readonly bytes: v.SchemaWithPipe<readonly [v.StringSchema<undefined>]>;
  readonly fPort: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 1, undefined>, v.MaxValueAction<number, 255, undefined>, v.IntegerAction<number, undefined>]>, undefined>;
  readonly recvTime: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
}, undefined>, v.StringSchema<undefined>], undefined>, v.TransformAction<string | {
  bytes: string;
  fPort?: number | undefined;
  recvTime?: string | undefined;
}, {
  bytes: string;
  fPort?: number | undefined;
  recvTime?: string | undefined;
}>]>;
type UplinkInput = v.InferOutput<ReturnType<typeof createUplinkInputSchema>>;
type HexUplinkInput = v.InferOutput<ReturnType<typeof createHexUplinkInputSchema>>;
//#endregion
//#region ../parsers/src/types.d.ts
interface GenericSuccessfulUplinkOutput {
  warnings?: string[];
  data: object;
  errors?: never;
}
interface GenericUplinkOutputFailure {
  errors: string[];
  warnings?: never;
  data?: never;
}
type DownlinkFrame = number[];
interface DownlinkOutputFailure {
  errors: string[];
  warnings?: never;
  fPort?: never;
  bytes?: never;
}
interface MultipleDownlinkOutputFailure {
  errors: string[];
  warnings?: never;
  fPort?: never;
  frames?: never;
}
type DownlinkOutput = {
  fPort: number;
  bytes: DownlinkFrame;
  warnings?: string[];
  errors?: never;
} | DownlinkOutputFailure;
type MultipleDownlinkOutput = {
  fPort: number;
  frames: DownlinkFrame[];
  warnings?: string[];
  errors?: never;
} | MultipleDownlinkOutputFailure;
type GenericUplinkOutput<TData extends GenericSuccessfulUplinkOutput = GenericSuccessfulUplinkOutput> = TData | GenericUplinkOutputFailure;
interface Range {
  start: number;
  end: number;
}
interface Channel$1<TName extends string = string> extends Range {
  adjustMeasurementRangeDisallowed?: true;
  name: TName;
}
//#endregion
//#region ../parsers/src/codecs/codec.d.ts
type Codec<TProtocol extends string, TCodecName extends string, TData extends GenericUplinkOutput, TChannelName extends string | never, TEncoder extends (((input: any) => DownlinkOutput) | undefined) = undefined, TMultipleEncoder extends (((input: any) => MultipleDownlinkOutput) | undefined) = undefined> = {
  name: TCodecName;
  protocol: TProtocol;
  adjustRoundingDecimals: (decimals: number) => void;
  adjustMeasuringRange: (name: TChannelName, range: {
    start: number;
    end: number;
  }) => void;
  getChannels: () => Channel$1[];
  canTryDecode: (input: UplinkInput) => boolean;
  decode: (input: UplinkInput) => TData;
} & (undefined extends TEncoder ? {} : {
  encode: TEncoder;
}) & (undefined extends TMultipleEncoder ? {} : {
  encodeMultiple: TMultipleEncoder;
});
type AnyCodec = (Codec<any, any, any, never, any, any> & {
  encode?: (input: any) => DownlinkOutput;
  encodeMultiple?: (input: any) => MultipleDownlinkOutput;
}) | (Codec<any, any, never, any, any, any> & {
  encode?: (input: any) => DownlinkOutput;
  encodeMultiple?: (input: any) => MultipleDownlinkOutput;
});
//#endregion
//#region ../parsers/src/codecs/protocols.d.ts
/**
 * TULIP2 protocol identifier.
 * Used for legacy devices with basic message handling (0x00-0x09 message types).
 */
declare const TULIP2_PROTOCOL: "TULIP2";
/**
 * TULIP3 protocol identifier.
 * Used for advanced devices with comprehensive sensor support (0x10-0x17 message types).
 */
declare const TULIP3_PROTOCOL: "TULIP3";
//#endregion
//#region ../parsers/src/codecs/tulip2/index.d.ts
interface TULIP2Channel extends Channel$1 {
  channelId: number;
}
type Encoder<TInput = any> = (input: TInput) => DownlinkOutput;
type MultipleEncoder<TInput = any> = (input: TInput) => MultipleDownlinkOutput;
type EncoderFactory<TInput = any> = (options: {
  getChannels: () => TULIP2Channel[];
}) => Encoder<TInput>;
type MultipleEncoderFactory<TInput = any> = (options: {
  getChannels: () => TULIP2Channel[];
}) => MultipleEncoder<TInput>;
type ReturnOfFactory<TFactory extends EncoderFactory<any> | MultipleEncoderFactory<any> | undefined> = TFactory extends ((...args: any[]) => infer TResult) ? TResult : undefined;
type Handler<TChannels extends TULIP2Channel[] = TULIP2Channel[], TReturn extends GenericUplinkOutput = GenericUplinkOutput> = (input: UplinkInput, options: {
  roundingDecimals: number;
  channels: TChannels;
}) => TReturn;
interface MessageHandlers<TChannels extends TULIP2Channel[] = TULIP2Channel[], TReturn extends GenericUplinkOutput = GenericUplinkOutput> {
  0x00?: Handler<TChannels, TReturn>;
  0x01?: Handler<TChannels, TReturn>;
  0x02?: Handler<TChannels, TReturn>;
  0x03?: Handler<TChannels, TReturn>;
  0x04?: Handler<TChannels, TReturn>;
  0x05?: Handler<TChannels, TReturn>;
  0x06?: Handler<TChannels, TReturn>;
  0x07?: Handler<TChannels, TReturn>;
  0x08?: Handler<TChannels, TReturn>;
  0x09?: Handler<TChannels, TReturn>;
  0x0A?: Handler<TChannels, TReturn>;
  0x0B?: Handler<TChannels, TReturn>;
  0x0C?: Handler<TChannels, TReturn>;
  0x0D?: Handler<TChannels, TReturn>;
}
type ReturnTypeOfHandlers<TChannels extends TULIP2Channel[], THandlers extends MessageHandlers<TChannels, any>> = { [K in keyof THandlers]: THandlers[K] extends Handler<TChannels, infer TReturn> ? TReturn : never }[keyof THandlers];
type TULIP2AdjustableChannelNames<TChannels extends TULIP2Channel[]> = { [K in keyof TChannels]: TChannels[K] extends TULIP2Channel ? (TChannels[K]['adjustMeasurementRangeDisallowed'] extends true ? never : TChannels[K]['name']) : never }[number];
/**
 * Type alias for a TULIP2 codec with protocol identification.
 * Wrapper around base Codec type that fixes the protocol to TULIP2 and passes through all other type parameters.
 */
type TULIP2Codec<TChannels extends TULIP2Channel[], TName extends string, THandlers extends MessageHandlers<TChannels>, TEncoderFactory extends EncoderFactory<any> | undefined = undefined, TMultipleEncoderFactory extends MultipleEncoderFactory<any> | undefined = undefined> = Codec<typeof TULIP2_PROTOCOL, `${TName}TULIP2`, ReturnTypeOfHandlers<TChannels, THandlers>, TULIP2AdjustableChannelNames<TChannels>, ReturnOfFactory<TEncoderFactory>, ReturnOfFactory<TMultipleEncoderFactory>>;
//#endregion
//#region ../parsers/src/devices/A2G/parser/index.d.ts
declare function useParser(): {
  adjustRoundingDecimals: (decimals: number) => void;
  adjustMeasuringRange: (channel: never, range: {
    start: number;
    end: number;
  }) => void;
  decodeUplink: (input: UplinkInput) => GenericUplinkOutput<ReturnTypeOfHandlers<[{
    readonly channelId: 0;
    readonly name: "pressure";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 1;
    readonly name: "flow";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 2;
    readonly name: "input_1";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 3;
    readonly name: "input_2";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 4;
    readonly name: "input_3";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 5;
    readonly name: "input_4";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 6;
    readonly name: "relay_status_1";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 7;
    readonly name: "relay_status_2";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }], {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "flow";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 2;
      readonly name: "input_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 3;
      readonly name: "input_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 4;
      readonly name: "input_3";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 5;
      readonly name: "input_4";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 6;
      readonly name: "relay_status_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 7;
      readonly name: "relay_status_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1;
        measurement: {
          channels: [{
            channelId: 0;
            channelName: "pressure";
            value: number;
          }] | [{
            channelId: 0;
            channelName: "pressure";
            value: number;
          }, {
            channelId: 1;
            channelName: "flow";
            value: number;
          }, {
            channelId: 2;
            channelName: "input_1";
            value: number;
          }, {
            channelId: 3;
            channelName: "input_2";
            value: number;
          }, {
            channelId: 4;
            channelName: "input_3";
            value: number;
          }, {
            channelId: 5;
            channelName: "input_4";
            value: number;
          }, {
            channelId: 6;
            channelName: "relay_status_1";
            value: number;
          }, {
            channelId: 7;
            channelName: "relay_status_2";
            value: number;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "flow";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 2;
      readonly name: "input_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 3;
      readonly name: "input_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 4;
      readonly name: "input_3";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 5;
      readonly name: "input_4";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 6;
      readonly name: "relay_status_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 7;
      readonly name: "relay_status_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: {
          TemperatureInput4SignalOverload: boolean;
          TemperatureInput3SignalOverload: boolean;
          VoltageInput2SignalOverload: boolean;
          VoltageInput1SignalOverload: boolean;
          ModbusCommunicationError: boolean;
          AnalogOutput2SignalOverload: boolean;
          AnalogOutput1SignalOverload: boolean;
          PressureSignalOverload: boolean;
        };
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "flow";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 2;
      readonly name: "input_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 3;
      readonly name: "input_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 4;
      readonly name: "input_3";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 5;
      readonly name: "input_4";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 6;
      readonly name: "relay_status_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 7;
      readonly name: "relay_status_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarms: {
          ADCConverterError: boolean;
          PressureSensorNoResponseError: boolean;
          PressureSensorTimeoutError: boolean;
          FactoryOptionsWriteError: boolean;
          FactoryOptionsDeleteError: boolean;
          InvalidFactoryOptionsError: boolean;
          UserSettingsInvalidError: boolean;
          UserSettingsReadWriteError: boolean;
          ZeroOffsetOverRangeError: boolean;
          InvalidSignalSourceSpecifiedError: boolean;
          AnalogOutput2OverTemperatureError: boolean;
          AnalogOutput2LoadFaultError: boolean;
          AnalogOutput2OverRangeError: boolean;
          AnalogOutput1OverTemperatureError: boolean;
          AnalogOutput1LoadFaultError: boolean;
          AnalogOutput1OverRangeError: boolean;
        };
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "flow";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 2;
      readonly name: "input_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 3;
      readonly name: "input_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 4;
      readonly name: "input_3";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 5;
      readonly name: "input_4";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 6;
      readonly name: "relay_status_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 7;
      readonly name: "relay_status_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceInformation: {
          productId: 13;
          productIdName: "A2G";
          productSubId: number;
          productSubIdName: "LoRaWAN" | "MIOTY" | "Unknown";
          sensorFirmwareVersion: string;
          sensorHardwareVersion: string;
          hardwareAssemblyTypeId: number;
          hardwareAssemblyTypeName: "A2G HE0 Full Assembly" | "A2G HE1 1AO Assembly" | "A2G HE2 Modbus Assembly" | "A2G HE3 Modular Assembly" | "A2G LC1 LC1VAO" | "A2G LC2 CT" | "A2G LC3 BAT";
          serialNumber: string;
          channelConfigurations: [{
            measurand: 3;
            measurandName: "Pressure (gauge)" | "Pressure (absolute)" | "Pressure (differential)";
            measurementRangeStart: number;
            measurementRangeEnd: number;
            unit: 1 | 2 | 3 | 4 | 5;
            unitName: "mbar" | "Pa" | "kPa" | "mmWC" | "inWC";
          }] | [{
            measurand: 3;
            measurandName: "Pressure (gauge)" | "Pressure (absolute)" | "Pressure (differential)";
            measurementRangeStart: number;
            measurementRangeEnd: number;
            unit: 1 | 2 | 3 | 4 | 5;
            unitName: "mbar" | "Pa" | "kPa" | "mmWC" | "inWC";
          }, {
            measurand: 6;
            measurandName: "Flow (vol.)" | "Flow (mass)";
            unit: 10 | 11 | 12 | 13 | 14 | 15;
            unitName: "[m³/s] cubic metre per second" | "[m³/h] cubic metre per hour (cbm/h)" | "[l/s] litre per second" | "[cfm] cubic feet per minute" | "[m/s]" | "[ft/min]";
            measurementRangeStart?: number | undefined;
            measurementRangeEnd?: number | undefined;
          }, {
            measurand: 70;
            measurandName: "Input 1" | "Input 2" | "Input 3" | "Input 4";
            unit: 0 | 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 22 | 31 | 32 | 21 | 23 | 24 | 45 | 46 | 30 | 40 | 41;
            unitName: "°C" | "°F" | "mbar" | "Pa" | "kPa" | "V" | "ppm" | "mmWC" | "inWC" | "[m³/s] cubic metre per second" | "[m³/h] cubic metre per hour (cbm/h)" | "[l/s] litre per second" | "[cfm] cubic feet per minute" | "[m/s]" | "[ft/min]" | "None" | "% rH" | "[g/m³]" | "[g/ft³]" | "[kJ/kg]" | "[BTU/lb]" | "normalized" | "[%] percent" | "bin";
            measurementRangeStart?: number | undefined;
            measurementRangeEnd?: number | undefined;
          }, {
            measurand: 71;
            measurandName: "Input 1" | "Input 2" | "Input 3" | "Input 4";
            unit: 0 | 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 22 | 31 | 32 | 21 | 23 | 24 | 45 | 46 | 30 | 40 | 41;
            unitName: "°C" | "°F" | "mbar" | "Pa" | "kPa" | "V" | "ppm" | "mmWC" | "inWC" | "[m³/s] cubic metre per second" | "[m³/h] cubic metre per hour (cbm/h)" | "[l/s] litre per second" | "[cfm] cubic feet per minute" | "[m/s]" | "[ft/min]" | "None" | "% rH" | "[g/m³]" | "[g/ft³]" | "[kJ/kg]" | "[BTU/lb]" | "normalized" | "[%] percent" | "bin";
            measurementRangeStart?: number | undefined;
            measurementRangeEnd?: number | undefined;
          }, {
            measurand: 72;
            measurandName: "Input 1" | "Input 2" | "Input 3" | "Input 4";
            unit: 0 | 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 22 | 31 | 32 | 21 | 23 | 24 | 45 | 46 | 30 | 40 | 41;
            unitName: "°C" | "°F" | "mbar" | "Pa" | "kPa" | "V" | "ppm" | "mmWC" | "inWC" | "[m³/s] cubic metre per second" | "[m³/h] cubic metre per hour (cbm/h)" | "[l/s] litre per second" | "[cfm] cubic feet per minute" | "[m/s]" | "[ft/min]" | "None" | "% rH" | "[g/m³]" | "[g/ft³]" | "[kJ/kg]" | "[BTU/lb]" | "normalized" | "[%] percent" | "bin";
            measurementRangeStart?: number | undefined;
            measurementRangeEnd?: number | undefined;
          }, {
            measurand: 73;
            measurandName: "Input 1" | "Input 2" | "Input 3" | "Input 4";
            unit: 0 | 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 22 | 31 | 32 | 21 | 23 | 24 | 45 | 46 | 30 | 40 | 41;
            unitName: "°C" | "°F" | "mbar" | "Pa" | "kPa" | "V" | "ppm" | "mmWC" | "inWC" | "[m³/s] cubic metre per second" | "[m³/h] cubic metre per hour (cbm/h)" | "[l/s] litre per second" | "[cfm] cubic feet per minute" | "[m/s]" | "[ft/min]" | "None" | "% rH" | "[g/m³]" | "[g/ft³]" | "[kJ/kg]" | "[BTU/lb]" | "normalized" | "[%] percent" | "bin";
            measurementRangeStart?: number | undefined;
            measurementRangeEnd?: number | undefined;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "flow";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 2;
      readonly name: "input_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 3;
      readonly name: "input_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 4;
      readonly name: "input_3";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 5;
      readonly name: "input_4";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 6;
      readonly name: "relay_status_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 7;
      readonly name: "relay_status_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          batteryLevelNewEvent: boolean;
          batteryLevelPercent: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
  }>>;
  decodeHexUplink: (input: HexUplinkInput) => GenericUplinkOutput<ReturnTypeOfHandlers<[{
    readonly channelId: 0;
    readonly name: "pressure";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 1;
    readonly name: "flow";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 2;
    readonly name: "input_1";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 3;
    readonly name: "input_2";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 4;
    readonly name: "input_3";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 5;
    readonly name: "input_4";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 6;
    readonly name: "relay_status_1";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 7;
    readonly name: "relay_status_2";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }], {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "flow";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 2;
      readonly name: "input_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 3;
      readonly name: "input_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 4;
      readonly name: "input_3";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 5;
      readonly name: "input_4";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 6;
      readonly name: "relay_status_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 7;
      readonly name: "relay_status_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1;
        measurement: {
          channels: [{
            channelId: 0;
            channelName: "pressure";
            value: number;
          }] | [{
            channelId: 0;
            channelName: "pressure";
            value: number;
          }, {
            channelId: 1;
            channelName: "flow";
            value: number;
          }, {
            channelId: 2;
            channelName: "input_1";
            value: number;
          }, {
            channelId: 3;
            channelName: "input_2";
            value: number;
          }, {
            channelId: 4;
            channelName: "input_3";
            value: number;
          }, {
            channelId: 5;
            channelName: "input_4";
            value: number;
          }, {
            channelId: 6;
            channelName: "relay_status_1";
            value: number;
          }, {
            channelId: 7;
            channelName: "relay_status_2";
            value: number;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "flow";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 2;
      readonly name: "input_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 3;
      readonly name: "input_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 4;
      readonly name: "input_3";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 5;
      readonly name: "input_4";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 6;
      readonly name: "relay_status_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 7;
      readonly name: "relay_status_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: {
          TemperatureInput4SignalOverload: boolean;
          TemperatureInput3SignalOverload: boolean;
          VoltageInput2SignalOverload: boolean;
          VoltageInput1SignalOverload: boolean;
          ModbusCommunicationError: boolean;
          AnalogOutput2SignalOverload: boolean;
          AnalogOutput1SignalOverload: boolean;
          PressureSignalOverload: boolean;
        };
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "flow";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 2;
      readonly name: "input_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 3;
      readonly name: "input_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 4;
      readonly name: "input_3";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 5;
      readonly name: "input_4";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 6;
      readonly name: "relay_status_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 7;
      readonly name: "relay_status_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarms: {
          ADCConverterError: boolean;
          PressureSensorNoResponseError: boolean;
          PressureSensorTimeoutError: boolean;
          FactoryOptionsWriteError: boolean;
          FactoryOptionsDeleteError: boolean;
          InvalidFactoryOptionsError: boolean;
          UserSettingsInvalidError: boolean;
          UserSettingsReadWriteError: boolean;
          ZeroOffsetOverRangeError: boolean;
          InvalidSignalSourceSpecifiedError: boolean;
          AnalogOutput2OverTemperatureError: boolean;
          AnalogOutput2LoadFaultError: boolean;
          AnalogOutput2OverRangeError: boolean;
          AnalogOutput1OverTemperatureError: boolean;
          AnalogOutput1LoadFaultError: boolean;
          AnalogOutput1OverRangeError: boolean;
        };
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "flow";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 2;
      readonly name: "input_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 3;
      readonly name: "input_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 4;
      readonly name: "input_3";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 5;
      readonly name: "input_4";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 6;
      readonly name: "relay_status_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 7;
      readonly name: "relay_status_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceInformation: {
          productId: 13;
          productIdName: "A2G";
          productSubId: number;
          productSubIdName: "LoRaWAN" | "MIOTY" | "Unknown";
          sensorFirmwareVersion: string;
          sensorHardwareVersion: string;
          hardwareAssemblyTypeId: number;
          hardwareAssemblyTypeName: "A2G HE0 Full Assembly" | "A2G HE1 1AO Assembly" | "A2G HE2 Modbus Assembly" | "A2G HE3 Modular Assembly" | "A2G LC1 LC1VAO" | "A2G LC2 CT" | "A2G LC3 BAT";
          serialNumber: string;
          channelConfigurations: [{
            measurand: 3;
            measurandName: "Pressure (gauge)" | "Pressure (absolute)" | "Pressure (differential)";
            measurementRangeStart: number;
            measurementRangeEnd: number;
            unit: 1 | 2 | 3 | 4 | 5;
            unitName: "mbar" | "Pa" | "kPa" | "mmWC" | "inWC";
          }] | [{
            measurand: 3;
            measurandName: "Pressure (gauge)" | "Pressure (absolute)" | "Pressure (differential)";
            measurementRangeStart: number;
            measurementRangeEnd: number;
            unit: 1 | 2 | 3 | 4 | 5;
            unitName: "mbar" | "Pa" | "kPa" | "mmWC" | "inWC";
          }, {
            measurand: 6;
            measurandName: "Flow (vol.)" | "Flow (mass)";
            unit: 10 | 11 | 12 | 13 | 14 | 15;
            unitName: "[m³/s] cubic metre per second" | "[m³/h] cubic metre per hour (cbm/h)" | "[l/s] litre per second" | "[cfm] cubic feet per minute" | "[m/s]" | "[ft/min]";
            measurementRangeStart?: number | undefined;
            measurementRangeEnd?: number | undefined;
          }, {
            measurand: 70;
            measurandName: "Input 1" | "Input 2" | "Input 3" | "Input 4";
            unit: 0 | 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 22 | 31 | 32 | 21 | 23 | 24 | 45 | 46 | 30 | 40 | 41;
            unitName: "°C" | "°F" | "mbar" | "Pa" | "kPa" | "V" | "ppm" | "mmWC" | "inWC" | "[m³/s] cubic metre per second" | "[m³/h] cubic metre per hour (cbm/h)" | "[l/s] litre per second" | "[cfm] cubic feet per minute" | "[m/s]" | "[ft/min]" | "None" | "% rH" | "[g/m³]" | "[g/ft³]" | "[kJ/kg]" | "[BTU/lb]" | "normalized" | "[%] percent" | "bin";
            measurementRangeStart?: number | undefined;
            measurementRangeEnd?: number | undefined;
          }, {
            measurand: 71;
            measurandName: "Input 1" | "Input 2" | "Input 3" | "Input 4";
            unit: 0 | 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 22 | 31 | 32 | 21 | 23 | 24 | 45 | 46 | 30 | 40 | 41;
            unitName: "°C" | "°F" | "mbar" | "Pa" | "kPa" | "V" | "ppm" | "mmWC" | "inWC" | "[m³/s] cubic metre per second" | "[m³/h] cubic metre per hour (cbm/h)" | "[l/s] litre per second" | "[cfm] cubic feet per minute" | "[m/s]" | "[ft/min]" | "None" | "% rH" | "[g/m³]" | "[g/ft³]" | "[kJ/kg]" | "[BTU/lb]" | "normalized" | "[%] percent" | "bin";
            measurementRangeStart?: number | undefined;
            measurementRangeEnd?: number | undefined;
          }, {
            measurand: 72;
            measurandName: "Input 1" | "Input 2" | "Input 3" | "Input 4";
            unit: 0 | 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 22 | 31 | 32 | 21 | 23 | 24 | 45 | 46 | 30 | 40 | 41;
            unitName: "°C" | "°F" | "mbar" | "Pa" | "kPa" | "V" | "ppm" | "mmWC" | "inWC" | "[m³/s] cubic metre per second" | "[m³/h] cubic metre per hour (cbm/h)" | "[l/s] litre per second" | "[cfm] cubic feet per minute" | "[m/s]" | "[ft/min]" | "None" | "% rH" | "[g/m³]" | "[g/ft³]" | "[kJ/kg]" | "[BTU/lb]" | "normalized" | "[%] percent" | "bin";
            measurementRangeStart?: number | undefined;
            measurementRangeEnd?: number | undefined;
          }, {
            measurand: 73;
            measurandName: "Input 1" | "Input 2" | "Input 3" | "Input 4";
            unit: 0 | 1 | 2 | 3 | 4 | 5 | 10 | 11 | 12 | 13 | 14 | 15 | 20 | 22 | 31 | 32 | 21 | 23 | 24 | 45 | 46 | 30 | 40 | 41;
            unitName: "°C" | "°F" | "mbar" | "Pa" | "kPa" | "V" | "ppm" | "mmWC" | "inWC" | "[m³/s] cubic metre per second" | "[m³/h] cubic metre per hour (cbm/h)" | "[l/s] litre per second" | "[cfm] cubic feet per minute" | "[m/s]" | "[ft/min]" | "None" | "% rH" | "[g/m³]" | "[g/ft³]" | "[kJ/kg]" | "[BTU/lb]" | "normalized" | "[%] percent" | "bin";
            measurementRangeStart?: number | undefined;
            measurementRangeEnd?: number | undefined;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "flow";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 2;
      readonly name: "input_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 3;
      readonly name: "input_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 4;
      readonly name: "input_3";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 5;
      readonly name: "input_4";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 6;
      readonly name: "relay_status_1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 7;
      readonly name: "relay_status_2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          batteryLevelNewEvent: boolean;
          batteryLevelPercent: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
  }>>;
};
//#endregion
//#region ../parsers/src/schemas/tulip2/downlink.d.ts
interface Tulip2EncodeFeatureFlags {
  /**
   * Maximum allowed configurationId value for actions that include configurationId.
   * Used by the generated action schema validators.
   */
  maxConfigId: number;
  /**
   * Enables `startUpTime` on per-channel configuration object schemas.
   * If omitted/false, `startUpTime` is not accepted.
   */
  channelsStartupTime?: boolean;
  /**
   * Enables `measureOffset` on per-channel configuration object schemas.
   * If omitted/false, `measureOffset` is not accepted.
   */
  channelsMeasureOffset?: boolean;
  /**
   * Enables `isBLEEnabled` in mainConfiguration schema.
   */
  mainConfigBLE?: boolean;
  /**
   * Switches mainConfiguration from dual measuring rates
   * (`measuringRateWhenNoAlarm` + `measuringRateWhenAlarm`)
   * to single `measuringRate`.
   */
  mainConfigSingleMeasuringRate?: boolean;
  /**
   * Channel keys that must be boolean-only in configuration actions.
   *
   * Example: `['channel1']`
   * - `channel1: true | false` is allowed
   * - `channel1: { alarms: ... }` is rejected by schema
   *
   * This also affects TypeScript output types (`TULIP2ConfigurationAction`) so
   * listed channels are inferred as `true | false` only, while other channels
   * still allow full channel configuration objects.
   */
  channelsBooleanOnly?: readonly [`channel${number}`, ...`channel${number}`[]];
}
interface Tulip2DownlinkSpanLimitFactors {
  /**
   * The maximum span factor for the dead band, meaning that the allowed dead band will be at most span * this factor.
   * Default is 1 (100%).
   * Only set if the dead band range is restricted to a smaller range than the full span, e.g. 10% of the span would be a factor of 0.1.
   */
  deadBandMaxSpanFactor?: number;
  /**
   * The maximum span factor for the slope, meaning that the allowed slope will be at most span * this factor.
   * Default is 1 (100%).
   * Only set if the slope range is restricted to a smaller range than the full span, e.g. 10% of the span would be a factor of 0.1.
   */
  slopeMaxSpanFactor?: number;
  /**
   * The minimum span factor for the measure offset, meaning that the allowed measure offset will be at least +/- span * this factor.
   * Default is 1 (100%).
   * Only set if the offset range is restricted to a smaller range than the full span, e.g. +/- 5% of the span would be a factor of 0.05.
   */
  measureOffsetMinSpanFactor?: number;
  /**
   * The maximum span factor for the measure offset, meaning that the allowed measure offset will be at most +/- span * this factor.
   * Default is 1 (100%).
   * Only set if the offset range is restricted to a smaller range than the full span, e.g. +/- 5% of the span would be a factor of 0.05.
   */
  measureOffsetMaxSpanFactor?: number;
}
declare function createConfigurationIdSchema(maxConfigId: number): v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<"configurationId needs to be a number">, v.MinValueAction<number, 1, "configurationId needs to be at least 1">, v.MaxValueAction<number, number, `configurationId needs to be at most ${number}`>, v.IntegerAction<number, "configurationId needs to be an integer">]>, undefined>;
declare function createByteLimitSchema(): v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.IntegerAction<number, undefined>]>, undefined>;
type TULIP2BaseActionEntries<TAction extends string, TObjectExtension extends v.ObjectEntries> = {
  deviceAction: v.LiteralSchema<TAction, undefined>;
} & TObjectExtension;
type TULIP2ActionEntriesWithConfigurationId<TAction extends string, TObjectExtension extends v.ObjectEntries> = TULIP2BaseActionEntries<TAction, TObjectExtension> & {
  configurationId: ReturnType<typeof createConfigurationIdSchema>;
};
type TULIP2ActionEntriesWithByteLimit<TAction extends string, TObjectExtension extends v.ObjectEntries> = TULIP2BaseActionEntries<TAction, TObjectExtension> & {
  byteLimit: ReturnType<typeof createByteLimitSchema>;
};
type TULIP2ActionEntriesWithConfigurationIdAndByteLimit<TAction extends string, TObjectExtension extends v.ObjectEntries> = TULIP2ActionEntriesWithConfigurationId<TAction, TObjectExtension> & TULIP2ActionEntriesWithByteLimit<TAction, TObjectExtension>;
type Tulip2DownlinkMainConfigBase = v.ObjectSchema<{
  publicationFactorWhenAlarm: v.NumberSchema<undefined>;
  publicationFactorWhenNoAlarm: v.NumberSchema<undefined>;
  measuringRateWhenNoAlarm: v.NumberSchema<undefined>;
  measuringRateWhenAlarm: v.NumberSchema<undefined>;
}, undefined>;
type Tulip2DownlinkMainConfigWithBLE = v.ObjectSchema<{
  publicationFactorWhenAlarm: v.NumberSchema<undefined>;
  publicationFactorWhenNoAlarm: v.NumberSchema<undefined>;
  isBLEEnabled: v.BooleanSchema<undefined>;
  measuringRateWhenNoAlarm: v.NumberSchema<undefined>;
  measuringRateWhenAlarm: v.NumberSchema<undefined>;
}, undefined>;
type Tulip2DownlinkMainConfigSingleRate = v.ObjectSchema<{
  publicationFactorWhenAlarm: v.NumberSchema<undefined>;
  publicationFactorWhenNoAlarm: v.NumberSchema<undefined>;
  measuringRate: v.NumberSchema<undefined>;
}, undefined>;
type Tulip2DownlinkMainConfigWithBLEAndSingleRate = v.ObjectSchema<{
  publicationFactorWhenAlarm: v.NumberSchema<undefined>;
  publicationFactorWhenNoAlarm: v.NumberSchema<undefined>;
  isBLEEnabled: v.BooleanSchema<undefined>;
  measuringRate: v.NumberSchema<undefined>;
}, undefined>;
type Tulip2DownlinkMainConfiguration<TFeatureFlags extends Tulip2EncodeFeatureFlags> = TFeatureFlags['mainConfigBLE'] extends true ? TFeatureFlags['mainConfigSingleMeasuringRate'] extends true ? Tulip2DownlinkMainConfigWithBLEAndSingleRate : Tulip2DownlinkMainConfigWithBLE : TFeatureFlags['mainConfigSingleMeasuringRate'] extends true ? Tulip2DownlinkMainConfigSingleRate : Tulip2DownlinkMainConfigBase;
type Tulip2DownlinkChannelSchemaBase = v.ObjectSchema<{
  alarms: v.OptionalSchema<v.ObjectSchema<{
    deadBand: v.NumberSchema<undefined>;
    lowThreshold: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
    highThreshold: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
    lowThresholdWithDelay: v.OptionalSchema<v.ObjectSchema<{
      value: v.NumberSchema<undefined>;
      delay: v.NumberSchema<undefined>;
    }, undefined>, undefined>;
    highThresholdWithDelay: v.OptionalSchema<v.ObjectSchema<{
      value: v.NumberSchema<undefined>;
      delay: v.NumberSchema<undefined>;
    }, undefined>, undefined>;
    risingSlope: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
    fallingSlope: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  }, undefined>, undefined>;
}, undefined>;
type Tulip2DownlinkChannelSchemaWithStartup = v.ObjectSchema<{
  alarms: v.OptionalSchema<v.ObjectSchema<{
    deadBand: v.NumberSchema<undefined>;
    lowThreshold: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
    highThreshold: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
    lowThresholdWithDelay: v.OptionalSchema<v.ObjectSchema<{
      value: v.NumberSchema<undefined>;
      delay: v.NumberSchema<undefined>;
    }, undefined>, undefined>;
    highThresholdWithDelay: v.OptionalSchema<v.ObjectSchema<{
      value: v.NumberSchema<undefined>;
      delay: v.NumberSchema<undefined>;
    }, undefined>, undefined>;
    risingSlope: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
    fallingSlope: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  }, undefined>, undefined>;
  startUpTime: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
}, undefined>;
type Tulip2DownlinkChannelSchemaWithOffset = v.ObjectSchema<{
  alarms: v.OptionalSchema<v.ObjectSchema<{
    deadBand: v.NumberSchema<undefined>;
    lowThreshold: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
    highThreshold: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
    lowThresholdWithDelay: v.OptionalSchema<v.ObjectSchema<{
      value: v.NumberSchema<undefined>;
      delay: v.NumberSchema<undefined>;
    }, undefined>, undefined>;
    highThresholdWithDelay: v.OptionalSchema<v.ObjectSchema<{
      value: v.NumberSchema<undefined>;
      delay: v.NumberSchema<undefined>;
    }, undefined>, undefined>;
    risingSlope: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
    fallingSlope: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  }, undefined>, undefined>;
  measureOffset: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
}, undefined>;
type Tulip2DownlinkChannelSchemaWithBoth = v.ObjectSchema<{
  alarms: v.OptionalSchema<v.ObjectSchema<{
    deadBand: v.NumberSchema<undefined>;
    lowThreshold: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
    highThreshold: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
    lowThresholdWithDelay: v.OptionalSchema<v.ObjectSchema<{
      value: v.NumberSchema<undefined>;
      delay: v.NumberSchema<undefined>;
    }, undefined>, undefined>;
    highThresholdWithDelay: v.OptionalSchema<v.ObjectSchema<{
      value: v.NumberSchema<undefined>;
      delay: v.NumberSchema<undefined>;
    }, undefined>, undefined>;
    risingSlope: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
    fallingSlope: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  }, undefined>, undefined>;
  startUpTime: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  measureOffset: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
}, undefined>;
type Tulip2DownlinkChannelSchema<TFeatureFlags extends Tulip2EncodeFeatureFlags> = TFeatureFlags['channelsStartupTime'] extends true ? TFeatureFlags['channelsMeasureOffset'] extends true ? Tulip2DownlinkChannelSchemaWithBoth : Tulip2DownlinkChannelSchemaWithStartup : TFeatureFlags['channelsMeasureOffset'] extends true ? Tulip2DownlinkChannelSchemaWithOffset : Tulip2DownlinkChannelSchemaBase;
type Tulip2ChannelSchemasObject<TChannels extends TULIP2Channel[], TFeatureFlags extends Tulip2EncodeFeatureFlags> = { [K in TChannels[number] as `channel${K['channelId']}`]: `channel${K['channelId']}` extends ChannelBooleanOnlyKeys<TFeatureFlags> ? v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<false, undefined>, v.LiteralSchema<true, undefined>], undefined>, undefined> : v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<false, undefined>, v.LiteralSchema<true, undefined>, Tulip2DownlinkChannelSchema<TFeatureFlags>], undefined>, undefined> };
type ChannelBooleanOnlyKeys<TFeatureFlags extends Tulip2EncodeFeatureFlags> = TFeatureFlags['channelsBooleanOnly'] extends readonly `channel${number}`[] ? TFeatureFlags['channelsBooleanOnly'][number] : never;
declare function createTULIP2DownlinkConfigurationActionSchema<TChannel extends TULIP2Channel, TFeatureFlags extends Tulip2EncodeFeatureFlags>(channels: TChannel[], featureFlags: TFeatureFlags, spanLimitFactors?: Tulip2DownlinkSpanLimitFactors): v.ObjectSchema<TULIP2ActionEntriesWithConfigurationIdAndByteLimit<"configuration", {
  readonly mainConfiguration: v.OptionalSchema<Tulip2DownlinkMainConfiguration<TFeatureFlags>, undefined>;
} & Tulip2ChannelSchemasObject<TChannel[], TFeatureFlags>>, undefined>;
declare function createDownlinkResetToFactorySchema(): v.ObjectSchema<{
  readonly deviceAction: v.LiteralSchema<"resetToFactory", undefined>;
}, undefined>;
declare function createDownlinkResetBatteryIndicatorSchema(featureFlags: Tulip2EncodeFeatureFlags): v.ObjectSchema<TULIP2ActionEntriesWithConfigurationId<"resetBatteryIndicator", Record<never, never>>, undefined>;
type DownlinkResetToFactory = v.InferOutput<ReturnType<typeof createDownlinkResetToFactorySchema>>;
type InferValibotOutput<TSchema> = TSchema extends {
  '~types'?: {
    output: infer TOutput;
  } | undefined;
} ? TOutput : never;
type TULIP2ConfigurationAction<TChannels extends TULIP2Channel, TFeatureFlags extends Tulip2EncodeFeatureFlags> = InferValibotOutput<ReturnType<typeof createTULIP2DownlinkConfigurationActionSchema<TChannels, TFeatureFlags>>>;
type TULIP2DownlinkInput<TChannels extends TULIP2Channel, TFeatureFlags extends Tulip2EncodeFeatureFlags> = DownlinkResetToFactory | TULIP2ConfigurationAction<TChannels, TFeatureFlags>;
//#endregion
//#region ../parsers/src/devices/FLRU_NETRIS3/parser/tulip2/channels.d.ts
declare function createTULIP2FLRUChannels(): [{
  readonly channelId: 0;
  readonly name: "level";
  readonly start: number;
  readonly end: number;
}];
//#endregion
//#region ../parsers/src/devices/FLRU_NETRIS3/parser/tulip2/constants.d.ts
declare const FLRU_DOWNLINK_FEATURE_FLAGS: {
  readonly maxConfigId: 31;
  readonly channelsStartupTime: false;
  readonly channelsMeasureOffset: true;
  readonly mainConfigBLE: false;
  readonly mainConfigSingleMeasuringRate: false;
};
type FLRUTulip2Channels = ReturnType<typeof createTULIP2FLRUChannels>;
type FLRUTulip2DownlinkInput = TULIP2DownlinkInput<FLRUTulip2Channels[number], typeof FLRU_DOWNLINK_FEATURE_FLAGS>;
//#endregion
//#region ../parsers/src/codecs/tulip3/lookups.d.ts
declare const protocolDataTypeLookup: {
  readonly 0: "float - IEEE754";
  readonly 1: "int 24 - Fixed-point s16.7 (Q16.7)";
  readonly 2: "int 16 - Fixed-point s10.5 (Q10.5)";
  readonly 3: "uint16 - TULIP scale 2500 - 12500";
};
declare const measurandLookup: {
  readonly 1: "Temperature";
  readonly 2: "Temperature difference";
  readonly 3: "Pressure (gauge)";
  readonly 4: "Pressure (absolute)";
  readonly 5: "Pressure (differential)";
  readonly 6: "Flow (vol.)";
  readonly 7: "Flow (mass)";
  readonly 8: "Force";
  readonly 9: "Mass";
  readonly 10: "Level";
  readonly 11: "Length";
  readonly 12: "Volume";
  readonly 13: "Current";
  readonly 14: "Voltage";
  readonly 15: "Resistance";
  readonly 16: "Capacitance";
  readonly 17: "Inductance";
  readonly 18: "Relative";
  readonly 19: "Time";
  readonly 20: "Frequency";
  readonly 21: "Speed";
  readonly 22: "Acceleration";
  readonly 23: "Density";
  readonly 24: "Density (gauge pressure at 20 °C)";
  readonly 25: "Density (absolute pressure at 20 °C)";
  readonly 26: "Humidity (relative)";
  readonly 27: "Humidity (absolute)";
  readonly 28: "Angle of rotation / inclination";
  readonly 29: "Strain";
};
declare const unitsLookup: {
  readonly 1: "°C";
  readonly 2: "°F";
  readonly 3: "K";
  readonly 4: "°R";
  readonly 7: "bar";
  readonly 8: "mbar";
  readonly 9: "μbar";
  readonly 10: "Pa";
  readonly 11: "hPa";
  readonly 12: "kPa";
  readonly 13: "MPa";
  readonly 14: "psi";
  readonly 15: "lbf/ft²";
  readonly 16: "kN/m²";
  readonly 17: "N/cm²";
  readonly 18: "atm";
  readonly 19: "kg/cm²";
  readonly 20: "kg/mm²";
  readonly 21: "μmHg";
  readonly 22: "mmHg";
  readonly 23: "cmHg";
  readonly 24: "inHg";
  readonly 25: "mmH2O";
  readonly 26: "mH2O";
  readonly 27: "inH2O";
  readonly 28: "ftH2O";
  readonly 45: "N";
  readonly 46: "daN";
  readonly 47: "kN";
  readonly 48: "MN";
  readonly 49: "kp";
  readonly 50: "lbf";
  readonly 51: "ozf";
  readonly 52: "dyn";
  readonly 55: "kg";
  readonly 56: "g";
  readonly 57: "mg";
  readonly 58: "lb";
  readonly 60: "mm";
  readonly 61: "cm";
  readonly 62: "m";
  readonly 63: "μm";
  readonly 64: "ft";
  readonly 65: "in";
  readonly 70: "l";
  readonly 71: "ml";
  readonly 72: "m³";
  readonly 73: "gal (UK)";
  readonly 74: "gal (US)";
  readonly 75: "ft³";
  readonly 76: "in³";
  readonly 82: "mΩ";
  readonly 83: "Ω";
  readonly 84: "kΩ";
  readonly 86: "μV";
  readonly 87: "mV";
  readonly 88: "V";
  readonly 90: "mA";
  readonly 91: "μA";
  readonly 93: "μF";
  readonly 94: "nF";
  readonly 95: "pF";
  readonly 97: "mH";
  readonly 98: "μH";
  readonly 100: "%";
  readonly 101: "‰";
  readonly 102: "ppm";
  readonly 105: "°";
  readonly 106: "rad";
  readonly 108: "counts";
  readonly 110: "kg/m³";
  readonly 111: "g/m³";
  readonly 112: "mg/m³";
  readonly 113: "μg/m³";
  readonly 114: "kg/l";
  readonly 115: "g/l";
  readonly 116: "lb/ft³";
  readonly 120: "l/min";
  readonly 121: "l/s";
  readonly 122: "m³/h";
  readonly 123: "m³/s";
  readonly 124: "cfm";
  readonly 140: "kg/s";
  readonly 141: "kg/h";
  readonly 160: "s";
  readonly 161: "min";
  readonly 162: "h";
  readonly 163: "d";
  readonly 167: "Hz";
  readonly 168: "kHz";
  readonly 170: "m/s";
  readonly 171: "cm/s";
  readonly 172: "ft/min";
  readonly 173: "ft/s";
  readonly 180: "m/s²";
  readonly 181: "ft/s²";
  readonly 185: "µeps";
};
//#endregion
//#region ../parsers/src/codecs/tulip3/registers/index.d.ts
interface RegisterEntry<TData extends number[], TResult = any, TPath extends string = string> {
  path: TPath;
  size: number;
  parsing: (data: TData) => TResult;
}
interface CustomRegisterEntry<TData extends number[], TSchema extends v.BaseSchema<unknown, unknown, v.BaseIssue<unknown>>, TPath extends string = string> extends RegisterEntry<TData, v.InferOutput<TSchema>, TPath> {
  schema: TSchema;
}
type AnyCustomRegisterLookup = Record<number, CustomRegisterEntry<any, any>>;
//#endregion
//#region ../parsers/src/codecs/tulip3/profile.d.ts
interface ChannelIdentificationRegisterFlags {
  measurand?: true;
  unit?: true;
  minMeasureRange?: true;
  maxMeasureRange?: true;
  minPhysicalLimit?: true;
  maxPhysicalLimit?: true;
  accuracy?: true;
  offset?: true;
  gain?: true;
  calibrationDate?: true;
}
interface ChannelConfigurationRegisterFlags {
  protocolDataType?: true;
  processAlarmEnabled?: true;
  processAlarmDeadBand?: true;
  lowThresholdAlarmValue?: true;
  highThresholdAlarmValue?: true;
  fallingSlopeAlarmValue?: true;
  risingSlopeAlarmValue?: true;
  lowThresholdWithDelayAlarmValue?: true;
  lowThresholdWithDelayAlarmDelay?: true;
  highThresholdWithDelayAlarmValue?: true;
  highThresholdWithDelayAlarmDelay?: true;
}
interface ChannelRegisterConfig {
  tulip3IdentificationRegisters: ChannelIdentificationRegisterFlags;
  tulip3ConfigurationRegisters: ChannelConfigurationRegisterFlags;
  channelSpecificIdentificationRegisters: AnyCustomRegisterLookup;
  channelSpecificConfigurationRegisters: AnyCustomRegisterLookup;
}
interface TULIP3ChannelConfig {
  /**
   * Measurement limit, not physical limit
   */
  start: number;
  /**
   * Measurement limit, not physical limit
   */
  end: number;
  measurementTypes: typeof protocolDataTypeLookup[keyof typeof protocolDataTypeLookup][];
  /**
   * Available measurands for this channel (at least one required).
   * Array of measurand strings from measurandLookup that this channel supports.
   * Used to validate measurand selection in uplink output and downlink input schemas.
   * @example ['Temperature', 'Pressure (gauge)']
   */
  availableMeasurands: [(typeof measurandLookup)[keyof typeof measurandLookup], ...((typeof measurandLookup)[keyof typeof measurandLookup])[]];
  /**
   * Available units for this channel (at least one required).
   * Array of unit strings from unitsLookup that this channel supports.
   * Used to validate unit selection in uplink output and downlink input schemas.
   * @example ['bar', 'mbar', 'Pa', 'kPa']
   */
  availableUnits: [(typeof unitsLookup)[keyof typeof unitsLookup], ...((typeof unitsLookup)[keyof typeof unitsLookup])[]];
  channelName: string;
  adjustMeasurementRangeDisallowed?: boolean;
  alarmFlags: AlarmFlags;
  registerConfig: ChannelRegisterConfig;
}
interface SensorIdentificationRegisterFlags {
  sensorType?: true;
  existingChannels?: true;
  firmwareVersion?: true;
  hardwareVersion?: true;
  productionDate?: true;
  serialNumberPart1?: true;
  serialNumberPart2?: true;
}
interface SensorConfigurationRegisterFlags {
  samplingChannels?: true;
  bootTime?: true;
  communicationTimeout?: true;
  communicationRetryCount?: true;
}
interface SensorRegisterConfig {
  tulip3IdentificationRegisters: SensorIdentificationRegisterFlags;
  tulip3ConfigurationRegisters: SensorConfigurationRegisterFlags;
  sensorSpecificIdentificationRegisters: AnyCustomRegisterLookup;
  sensorSpecificConfigurationRegisters: AnyCustomRegisterLookup;
}
interface TULIP3SensorConfig {
  channel1?: TULIP3ChannelConfig;
  channel2?: TULIP3ChannelConfig;
  channel3?: TULIP3ChannelConfig;
  channel4?: TULIP3ChannelConfig;
  channel5?: TULIP3ChannelConfig;
  channel6?: TULIP3ChannelConfig;
  channel7?: TULIP3ChannelConfig;
  channel8?: TULIP3ChannelConfig;
  alarmFlags: AlarmFlags;
  registerConfig: SensorRegisterConfig;
}
interface CommunicationModuleIdentificationRegisterFlags {
  productId?: true;
  productSubId?: true;
  channelPlan?: true;
  connectedSensors?: true;
  firmwareVersion?: true;
  hardwareVersion?: true;
  productionDate?: true;
  serialNumberPart1?: true;
  serialNumberPart2?: true;
}
interface CommunicationModuleConfigurationRegisterFlags {
  measuringPeriodAlarmOff?: true;
  measuringPeriodAlarmOn?: true;
  transmissionRateAlarmOff?: true;
  transmissionRateAlarmOn?: true;
  overVoltageThreshold?: true;
  underVoltageThreshold?: true;
  overTemperatureCmChip?: true;
  underTemperatureCmChip?: true;
  downlinkAnswerTimeout?: true;
  fetchAdditionalDownlinkTimeInterval?: true;
  enableBleAdvertising?: true;
}
interface CommunicationModuleRegisterConfig {
  tulip3IdentificationRegisters: CommunicationModuleIdentificationRegisterFlags;
  tulip3ConfigurationRegisters: CommunicationModuleConfigurationRegisterFlags;
}
interface TULIP3DeviceConfig {
  sensor1?: TULIP3SensorConfig;
  sensor2?: TULIP3SensorConfig;
  sensor3?: TULIP3SensorConfig;
  sensor4?: TULIP3SensorConfig;
  alarmFlags: AlarmFlags;
  registerConfig: CommunicationModuleRegisterConfig;
}
/**
 * The key, value pair for flag names and the bits that the value needs to be xor'd against.
 * @example
 * const flags: DeviceAlarmFlags = {
 *   highVoltage: 0b0100_0000,
 *   lowVoltage: 0b0010_0000,
 *   memoryError: 0b0001_0000,
 *   airTimeLimitation: 0b0000_1000,
 *   chipHighTemperature: 0b0000_0100,
 *   chipLowTemperature: 0b0000_0010,
 *   localUserAccessDenied: 0b0000_0001,
 * }
 */
type AlarmFlags = Record<string, number>;
interface TULIP3DeviceProfile<TTULIP3DeviceConfig extends TULIP3DeviceConfig = TULIP3DeviceConfig> {
  deviceName: string;
  /**
   * Number of decimal places for rounding.
   * Will floor the value to the specified number of decimal places.
   * If provided value is less than 0, it will default to 4.
   * @default 4
   */
  roundingDecimals?: number;
  sensorChannelConfig: TTULIP3DeviceConfig;
}
//#endregion
//#region ../parsers/src/schemas/tulip3/schemaUtils.d.ts
/**
 * Creates a validation schema for protocol data types specific to a channel.
 * Uses the channel's measurementTypes to enforce only valid types for that channel.
 * This schema is shared across all TULIP3 schemas (uplink/downlink, read/write).
 *
 * @param config - Channel configuration with measurementTypes
 * @returns A Valibot picklist schema that validates against the channel's supported protocol data types
 * @example
 * ```typescript
 * const schema = createProtocolDataTypeSchema(channelConfig)
 * const result = v.parse(schema, "uint16 - TULIP scale 2500 - 12500")
 * ```
 */
declare function createProtocolDataTypeSchema<const TConfig extends TULIP3ChannelConfig>(config: TConfig): v.PicklistSchema<("float - IEEE754" | "int 24 - Fixed-point s16.7 (Q16.7)" | "int 16 - Fixed-point s10.5 (Q10.5)" | "uint16 - TULIP scale 2500 - 12500")[], undefined>;
/**
 * Creates a validation schema for process alarm enabled flags.
 * This schema is shared across all TULIP3 schemas (uplink/downlink, read/write).
 *
 * @returns A Valibot object schema with boolean flags for each alarm type
 * @example
 * ```typescript
 * const schema = createProcessAlarmEnabledSchema()
 * const result = v.parse(schema, {
 *   lowThreshold: true,
 *   highThreshold: false,
 *   fallingSlope: true
 * })
 * ```
 */
declare function createProcessAlarmEnabledSchema(): v.ObjectSchema<{
  readonly lowThreshold: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  readonly highThreshold: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  readonly fallingSlope: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  readonly risingSlope: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  readonly lowThresholdWithDelay: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  readonly highThresholdWithDelay: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
}, undefined>;
/**
 * Creates a validation schema for sampling channels configuration.
 * Generates channel properties in the format "channelN" where N is the channel number.
 * This schema is shared across all TULIP3 schemas (uplink/downlink, read/write).
 *
 * @param config - Configuration object for the sensor channels
 * @returns A Valibot object schema with boolean flags for each channel
 * @template TConfig - Type-safe sensor configuration
 * @example
 * ```typescript
 * const schema = createSamplingChannelsSchema(sensorConfig)
 * const result = v.parse(schema, { channel1: true, channel2: true, channel3: false })
 * ```
 */
declare function createSamplingChannelsSchema<const TConfig extends TULIP3SensorConfig>(config: TConfig): v.ObjectSchema<{ [K in keyof TConfig as K extends `channel${number}` ? K : never]: v.BooleanSchema<undefined> }, undefined>;
/**
 * Creates a validation schema for measurand names specific to a channel.
 * Uses the channel's availableMeasurands strings directly.
 * This schema is used for the 'measurand' field (string value) in uplink schemas and downlink write schemas.
 *
 * @param config - Channel configuration with availableMeasurands
 * @returns A Valibot picklist schema that validates against the channel's supported measurand names
 * @example
 * ```typescript
 * const schema = createChannelMeasurandNameSchema(channelConfig)
 * const result = v.parse(schema, "Temperature") // Valid if 'Temperature' is in availableMeasurands
 * ```
 */
declare function createChannelMeasurandNameSchema<const TConfig extends TULIP3ChannelConfig>(config: TConfig): v.PicklistSchema<["Temperature" | "Temperature difference" | "Pressure (gauge)" | "Pressure (absolute)" | "Pressure (differential)" | "Flow (vol.)" | "Flow (mass)" | "Force" | "Mass" | "Level" | "Length" | "Volume" | "Current" | "Voltage" | "Resistance" | "Capacitance" | "Inductance" | "Relative" | "Time" | "Frequency" | "Speed" | "Acceleration" | "Density" | "Density (gauge pressure at 20 °C)" | "Density (absolute pressure at 20 °C)" | "Humidity (relative)" | "Humidity (absolute)" | "Angle of rotation / inclination" | "Strain", ...("Temperature" | "Temperature difference" | "Pressure (gauge)" | "Pressure (absolute)" | "Pressure (differential)" | "Flow (vol.)" | "Flow (mass)" | "Force" | "Mass" | "Level" | "Length" | "Volume" | "Current" | "Voltage" | "Resistance" | "Capacitance" | "Inductance" | "Relative" | "Time" | "Frequency" | "Speed" | "Acceleration" | "Density" | "Density (gauge pressure at 20 °C)" | "Density (absolute pressure at 20 °C)" | "Humidity (relative)" | "Humidity (absolute)" | "Angle of rotation / inclination" | "Strain")[]], undefined>;
/**
 * Creates a validation schema for unit names specific to a channel.
 * Uses the channel's availableUnits strings directly.
 * This schema is used for the 'unit' field (string value) in uplink schemas and downlink write schemas.
 *
 * @param config - Channel configuration with availableUnits
 * @returns A Valibot picklist schema that validates against the channel's supported unit names
 * @example
 * ```typescript
 * const schema = createChannelUnitNameSchema(channelConfig)
 * const result = v.parse(schema, "bar") // Valid if 'bar' is in availableUnits
 * ```
 */
declare function createChannelUnitNameSchema<const TConfig extends TULIP3ChannelConfig>(config: TConfig): v.PicklistSchema<["°C" | "°F" | "K" | "°R" | "bar" | "mbar" | "μbar" | "Pa" | "hPa" | "kPa" | "MPa" | "psi" | "lbf/ft²" | "kN/m²" | "N/cm²" | "atm" | "kg/cm²" | "kg/mm²" | "μmHg" | "mmHg" | "cmHg" | "inHg" | "mmH2O" | "mH2O" | "inH2O" | "ftH2O" | "N" | "daN" | "kN" | "MN" | "kp" | "lbf" | "ozf" | "dyn" | "kg" | "g" | "mg" | "lb" | "mm" | "cm" | "m" | "μm" | "ft" | "in" | "l" | "ml" | "m³" | "gal (UK)" | "gal (US)" | "ft³" | "in³" | "mΩ" | "Ω" | "kΩ" | "μV" | "mV" | "V" | "mA" | "μA" | "μF" | "nF" | "pF" | "mH" | "μH" | "%" | "‰" | "ppm" | "°" | "rad" | "counts" | "kg/m³" | "g/m³" | "mg/m³" | "μg/m³" | "kg/l" | "g/l" | "lb/ft³" | "l/min" | "l/s" | "m³/h" | "m³/s" | "cfm" | "kg/s" | "kg/h" | "s" | "min" | "h" | "d" | "Hz" | "kHz" | "m/s" | "cm/s" | "ft/min" | "ft/s" | "m/s²" | "ft/s²" | "µeps", ...("°C" | "°F" | "K" | "°R" | "bar" | "mbar" | "μbar" | "Pa" | "hPa" | "kPa" | "MPa" | "psi" | "lbf/ft²" | "kN/m²" | "N/cm²" | "atm" | "kg/cm²" | "kg/mm²" | "μmHg" | "mmHg" | "cmHg" | "inHg" | "mmH2O" | "mH2O" | "inH2O" | "ftH2O" | "N" | "daN" | "kN" | "MN" | "kp" | "lbf" | "ozf" | "dyn" | "kg" | "g" | "mg" | "lb" | "mm" | "cm" | "m" | "μm" | "ft" | "in" | "l" | "ml" | "m³" | "gal (UK)" | "gal (US)" | "ft³" | "in³" | "mΩ" | "Ω" | "kΩ" | "μV" | "mV" | "V" | "mA" | "μA" | "μF" | "nF" | "pF" | "mH" | "μH" | "%" | "‰" | "ppm" | "°" | "rad" | "counts" | "kg/m³" | "g/m³" | "mg/m³" | "μg/m³" | "kg/l" | "g/l" | "lb/ft³" | "l/min" | "l/s" | "m³/h" | "m³/s" | "cfm" | "kg/s" | "kg/h" | "s" | "min" | "h" | "d" | "Hz" | "kHz" | "m/s" | "cm/s" | "ft/min" | "ft/s" | "m/s²" | "ft/s²" | "µeps")[]], undefined>;
//#endregion
//#region ../parsers/src/schemas/tulip3/configuration.d.ts
interface CommunicationModuleConfigurationFieldSchemas {
  measuringPeriodAlarmOff: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  measuringPeriodAlarmOn: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  transmissionRateAlarmOff: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  transmissionRateAlarmOn: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  overVoltageThreshold: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  underVoltageThreshold: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  overTemperatureCmChip: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  underTemperatureCmChip: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  downlinkAnswerTimeout: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  fetchAdditionalDownlinkTimeInterval: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  enableBleAdvertising: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
}
type EnabledCommunicationModuleConfigurationFields<TConfig extends TULIP3DeviceConfig> = { [K in keyof TConfig['registerConfig']['tulip3ConfigurationRegisters'] as TConfig['registerConfig']['tulip3ConfigurationRegisters'][K] extends true ? K : never]: K extends keyof CommunicationModuleConfigurationFieldSchemas ? CommunicationModuleConfigurationFieldSchemas[K] : never };
interface SensorConfigurationFieldSchemas<TConfig extends TULIP3SensorConfig> {
  samplingChannels: v.OptionalSchema<ReturnType<typeof createSamplingChannelsSchema<TConfig>>, undefined>;
  bootTime: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  communicationTimeout: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  communicationRetryCount: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
}
type EnabledSensorConfigurationFields<TConfig extends TULIP3SensorConfig> = { [K in keyof TConfig['registerConfig']['tulip3ConfigurationRegisters'] as TConfig['registerConfig']['tulip3ConfigurationRegisters'][K] extends true ? K : never]: K extends keyof SensorConfigurationFieldSchemas<TConfig> ? SensorConfigurationFieldSchemas<TConfig>[K] : never };
interface ChannelConfigurationFieldSchemas<TChannelName extends string, TConfig extends TULIP3ChannelConfig> {
  protocolDataType: v.OptionalSchema<ReturnType<typeof createProtocolDataTypeSchema<TConfig>>, undefined>;
  processAlarmEnabled: v.OptionalSchema<ReturnType<typeof createProcessAlarmEnabledSchema>, undefined>;
  processAlarmDeadBand: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  lowThresholdAlarmValue: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  highThresholdAlarmValue: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  fallingSlopeAlarmValue: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  risingSlopeAlarmValue: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  lowThresholdWithDelayAlarmValue: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  lowThresholdWithDelayAlarmDelay: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  highThresholdWithDelayAlarmValue: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  highThresholdWithDelayAlarmDelay: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  channelName: v.LiteralSchema<TChannelName, undefined>;
}
type EnabledChannelConfigurationFields<TConfig extends TULIP3ChannelConfig, TChannelName extends string> = { [K in keyof TConfig['registerConfig']['tulip3ConfigurationRegisters'] as TConfig['registerConfig']['tulip3ConfigurationRegisters'][K] extends true ? K : never]: K extends keyof ChannelConfigurationFieldSchemas<TChannelName, TConfig> ? ChannelConfigurationFieldSchemas<TChannelName, TConfig>[K] : never } & {
  channelName: v.LiteralSchema<TChannelName, undefined>;
};
/**
 * Creates a validation schema for a sensor with its associated channel configurations.
 * Combines sensor configuration with individual channel configurations.
 *
 * @param sensorChannelConfig - Configuration object defining which channels are available for this sensor
 * @returns A Valibot object schema combining sensor configuration and channel configurations
 * @template TTULIP3SensorConfig - Type-safe sensor channel configuration
 * @example
 * ```typescript
 * const config = { channel1: true, channel2: true }
 * const schema = createSensorWithChannelConfigurationsSchema(config)
 * const result = v.parse(schema, {
 *   configuration: {
 *     samplingChannels: { channel1: true, channel2: true },
 *     bootTime: 5000
 *   },
 *   channel1: {
 *     protocolDataType: "float - IEEE754",
 *     lowThresholdAlarmValue: -10.0
 *   },
 *   channel2: {
 *     protocolDataType: "float - IEEE754",
 *     highThresholdAlarmValue: 50.0
 *   }
 * })
 * ```
 */
declare function createSensorWithChannelConfigurationsSchema<const TTULIP3SensorConfig extends TULIP3SensorConfig>(sensorChannelConfig: TTULIP3SensorConfig): v.ObjectSchema<{
  readonly configuration: v.OptionalSchema<v.ObjectSchema<EnabledSensorConfigurationFields<TTULIP3SensorConfig>, undefined>, undefined>;
} & { [ChannelKey in keyof TTULIP3SensorConfig as ChannelKey extends `channel${number}` ? ChannelKey : never]: TTULIP3SensorConfig[ChannelKey] extends TULIP3ChannelConfig ? v.OptionalSchema<v.ObjectSchema<EnabledChannelConfigurationFields<TTULIP3SensorConfig[ChannelKey], TTULIP3SensorConfig[ChannelKey]["channelName"]>, undefined>, undefined> : never }, undefined>;
type MappedSensorChannelConfig$1<TTULIP3DeviceConfig extends TULIP3DeviceConfig> = { [K in keyof TTULIP3DeviceConfig as K extends `sensor${number}` ? K : never]: TTULIP3DeviceConfig[K] extends TULIP3SensorConfig ? v.OptionalSchema<ReturnType<typeof createSensorWithChannelConfigurationsSchema<TTULIP3DeviceConfig[K]>>, undefined> : never };
/**
 * Creates a validation schema for configuration message uplink output (read response).
 * This is the main schema creator for TULIP3 configuration read messages.
 *
 * @param config - Configuration object defining sensor-to-channel mappings
 * @returns A Valibot object schema for configuration message uplink output
 * @template TTULIP3DeviceConfig - Type-safe sensor channel configuration
 * @example
 * ```typescript
 * const config = {
 *   sensor1: { channel1: {}, channel2: {} },
 *   sensor2: { channel1: {}, channel2: {}, channel3: {} }
 * }
 * const schema = createConfigurationReadRegistersResponseUplinkOutputSchema(config)
 *
 * const result = v.parse(schema, {
 *   data: {
 *     messageType: 0x15,
 *     messageSubType: 0x01,
 *     configuration: {
 *       communicationModule: {
 *         measuringPeriodAlarmOff: 3600000,
 *         transmissionRateAlarmOff: 60
 *       },
 *       sensor1: {
 *         configuration: { samplingChannels: { channel1: true } },
 *         channel1: { protocolDataType: "float - IEEE754" }
 *       }
 *     }
 *   },
 *   warnings: ["Optional warning message"]
 * })
 * ```
 */
declare function createConfigurationReadRegistersResponseUplinkOutputSchema<const TTULIP3DeviceConfig extends TULIP3DeviceConfig>(config: TTULIP3DeviceConfig): v.ObjectSchema<{
  readonly data: v.ObjectSchema<{
    readonly messageType: v.PicklistSchema<[21], undefined>;
    readonly messageSubType: v.PicklistSchema<[1, 2], undefined>;
  } & {
    readonly configuration: v.ObjectSchema<{
      readonly communicationModule: v.OptionalSchema<v.ObjectSchema<EnabledCommunicationModuleConfigurationFields<TTULIP3DeviceConfig>, undefined>, undefined>;
    } & MappedSensorChannelConfig$1<TTULIP3DeviceConfig>, undefined>;
  }, undefined>;
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
}, undefined>;
/**
 * Creates a validation schema for configuration write response uplink output.
 * This schema validates the response from configuration write operations.
 *
 * @returns A Valibot object schema for configuration write response uplink output
 * @example
 * ```typescript
 * const schema = createConfigurationWriteRegistersResponseUplinkOutputSchema()
 * const result = v.parse(schema, {
 *   data: {
 *     messageType: 0x15,
 *     messageSubType: 0x04,
 *     configuration: {
 *       revisionCounter: 123,
 *       totalWrongFrames: 0,
 *       frames: [
 *         { frameNumber: 1, status: "Configuration received and applied with success" }
 *       ]
 *     }
 *   }
 * })
 * ```
 */
declare function createConfigurationWriteRegistersResponseUplinkOutputSchema(): v.ObjectSchema<{
  readonly data: v.ObjectSchema<{
    readonly messageType: v.PicklistSchema<[21], undefined>;
    readonly messageSubType: v.PicklistSchema<[3], undefined>;
  } & {
    readonly configuration: v.ObjectSchema<{
      readonly revisionCounter: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
      readonly totalWrongFrames: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
      readonly frames: v.TupleWithRestSchema<[v.ObjectSchema<{
        readonly frameNumber: v.NumberSchema<undefined>;
        readonly status: v.PicklistSchema<("Configuration received but not applied" | "Configuration received and applied with success" | "Configuration rejected - Tried to write a read only register" | "Configuration rejected - At least one register has an invalid value" | "Configuration rejected - The combination register start address/number of bytes is wrong" | "Entire configuration discarded because of invalid parameter combination" | "Entire configuration discarded because no answer from the cloud" | "Missing frame" | "Frame rejected - frame number already received")[], undefined>;
      }, undefined>], v.ObjectSchema<{
        readonly frameNumber: v.NumberSchema<undefined>;
        readonly status: v.PicklistSchema<("Configuration received but not applied" | "Configuration received and applied with success" | "Configuration rejected - Tried to write a read only register" | "Configuration rejected - At least one register has an invalid value" | "Configuration rejected - The combination register start address/number of bytes is wrong" | "Entire configuration discarded because of invalid parameter combination" | "Entire configuration discarded because no answer from the cloud" | "Missing frame" | "Frame rejected - frame number already received")[], undefined>;
      }, undefined>, undefined>;
    }, undefined>;
  }, undefined>;
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
}, undefined>;
type ConfigurationReadRegistersResponseUplinkOutput<TTULIP3DeviceConfig extends TULIP3DeviceConfig> = v.InferOutput<ReturnType<typeof createConfigurationReadRegistersResponseUplinkOutputSchema<TTULIP3DeviceConfig>>>;
type ConfigurationWriteRegistersResponseUplinkOutput = v.InferOutput<ReturnType<typeof createConfigurationWriteRegistersResponseUplinkOutputSchema>>;
//#endregion
//#region ../parsers/src/schemas/tulip3/data.d.ts
/**
 * Creates a validation schema for data message uplink output.
 * This is the main schema for TULIP3 data messages, including optional warnings.
 *
 * @param config - Configuration object defining sensor-to-channel mappings
 * @returns A Valibot object schema for data message uplink output
 * @template TTULIP3DeviceConfig - Type-safe sensor configuration
 * @example
 * ```typescript
 * const config = {
 *   sensor1: {
 *     channel1: {
 *       min: 0,
 *       max: 100,
 *       unit: "°C",
 *       measurementTypes: ["float - IEEE754"]
 *     }
 *   }
 * }
 * const schema = createDataMessageUplinkOutputSchema(config)
 *
 * const result = v.parse(schema, {
 *   data: {
 *     messageType: 0x10,
 *     messageSubType: 0x01,
 *     measurements: [
 *       {
 *         sensorId: 0,
 *         channelId: 0,
 *         channelName: "temperature",
 *         sourceDataType: "float - IEEE754",
 *         valueAcquisitionError: false,
 *         value: 23.5
 *       }
 *     ]
 *   },
 *   warnings: ["Optional warning message"]
 * })
 * ```
 */
declare function createDataMessageUplinkOutputSchema<const TTULIP3DeviceConfig extends TULIP3DeviceConfig>(config: TTULIP3DeviceConfig): v.ObjectSchema<{
  readonly data: v.ObjectSchema<{
    readonly messageType: v.PicklistSchema<[16, 17], undefined>;
    readonly messageSubType: v.PicklistSchema<[1], undefined>;
  } & {
    readonly measurements: v.TupleWithRestSchema<[v.SchemaWithPipe<readonly [v.UnionSchema<({ [TSensor in keyof TTULIP3DeviceConfig]: { [TChannel in keyof NonNullable<TTULIP3DeviceConfig[TSensor]>]: NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel] extends TULIP3ChannelConfig ? v.ObjectSchema<{
      sensor: v.LiteralSchema<TSensor, undefined>;
      sensorId: v.NumberSchema<undefined>;
      channel: v.LiteralSchema<TChannel, undefined>;
      channelId: v.NumberSchema<undefined>;
      channelName: v.LiteralSchema<NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel]["channelName"], undefined>;
      sourceDataType: v.PicklistSchema<(NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel] extends TULIP3ChannelConfig ? NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel] : never) extends infer T ? T extends (NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel] extends TULIP3ChannelConfig ? NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel] : never) ? T extends {
        measurementTypes: infer U;
      } ? U extends readonly (string | number | bigint)[] ? U : never : never : never : never, undefined>;
    } & {
      readonly valueAcquisitionError: v.LiteralSchema<true, undefined>;
      readonly value: v.OptionalSchema<v.UndefinedSchema<undefined>, undefined>;
    }, undefined> : never }[keyof NonNullable<TTULIP3DeviceConfig[TSensor]>] }[keyof TTULIP3DeviceConfig] | { [TSensor_1 in keyof TTULIP3DeviceConfig]: { [TChannel in keyof NonNullable<TTULIP3DeviceConfig[TSensor_1]>]: NonNullable<TTULIP3DeviceConfig[TSensor_1]>[TChannel] extends TULIP3ChannelConfig ? v.ObjectSchema<{
      sensor: v.LiteralSchema<TSensor_1, undefined>;
      sensorId: v.NumberSchema<undefined>;
      channel: v.LiteralSchema<TChannel, undefined>;
      channelId: v.NumberSchema<undefined>;
      channelName: v.LiteralSchema<NonNullable<TTULIP3DeviceConfig[TSensor_1]>[TChannel]["channelName"], undefined>;
      sourceDataType: v.PicklistSchema<(NonNullable<TTULIP3DeviceConfig[TSensor_1]>[TChannel] extends TULIP3ChannelConfig ? NonNullable<TTULIP3DeviceConfig[TSensor_1]>[TChannel] : never) extends infer T ? T extends (NonNullable<TTULIP3DeviceConfig[TSensor_1]>[TChannel] extends TULIP3ChannelConfig ? NonNullable<TTULIP3DeviceConfig[TSensor_1]>[TChannel] : never) ? T extends {
        measurementTypes: infer U;
      } ? U extends readonly (string | number | bigint)[] ? U : never : never : never : never, undefined>;
    } & {
      readonly valueAcquisitionError: v.LiteralSchema<false, undefined>;
      readonly value: v.NumberSchema<undefined>;
    }, undefined> : never }[keyof NonNullable<TTULIP3DeviceConfig[TSensor_1]>] }[keyof TTULIP3DeviceConfig])[], undefined>]>], v.SchemaWithPipe<readonly [v.UnionSchema<({ [TSensor in keyof TTULIP3DeviceConfig]: { [TChannel in keyof NonNullable<TTULIP3DeviceConfig[TSensor]>]: NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel] extends TULIP3ChannelConfig ? v.ObjectSchema<{
      sensor: v.LiteralSchema<TSensor, undefined>;
      sensorId: v.NumberSchema<undefined>;
      channel: v.LiteralSchema<TChannel, undefined>;
      channelId: v.NumberSchema<undefined>;
      channelName: v.LiteralSchema<NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel]["channelName"], undefined>;
      sourceDataType: v.PicklistSchema<(NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel] extends TULIP3ChannelConfig ? NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel] : never) extends infer T ? T extends (NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel] extends TULIP3ChannelConfig ? NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel] : never) ? T extends {
        measurementTypes: infer U;
      } ? U extends readonly (string | number | bigint)[] ? U : never : never : never : never, undefined>;
    } & {
      readonly valueAcquisitionError: v.LiteralSchema<true, undefined>;
      readonly value: v.OptionalSchema<v.UndefinedSchema<undefined>, undefined>;
    }, undefined> : never }[keyof NonNullable<TTULIP3DeviceConfig[TSensor]>] }[keyof TTULIP3DeviceConfig] | { [TSensor_1 in keyof TTULIP3DeviceConfig]: { [TChannel in keyof NonNullable<TTULIP3DeviceConfig[TSensor_1]>]: NonNullable<TTULIP3DeviceConfig[TSensor_1]>[TChannel] extends TULIP3ChannelConfig ? v.ObjectSchema<{
      sensor: v.LiteralSchema<TSensor_1, undefined>;
      sensorId: v.NumberSchema<undefined>;
      channel: v.LiteralSchema<TChannel, undefined>;
      channelId: v.NumberSchema<undefined>;
      channelName: v.LiteralSchema<NonNullable<TTULIP3DeviceConfig[TSensor_1]>[TChannel]["channelName"], undefined>;
      sourceDataType: v.PicklistSchema<(NonNullable<TTULIP3DeviceConfig[TSensor_1]>[TChannel] extends TULIP3ChannelConfig ? NonNullable<TTULIP3DeviceConfig[TSensor_1]>[TChannel] : never) extends infer T ? T extends (NonNullable<TTULIP3DeviceConfig[TSensor_1]>[TChannel] extends TULIP3ChannelConfig ? NonNullable<TTULIP3DeviceConfig[TSensor_1]>[TChannel] : never) ? T extends {
        measurementTypes: infer U;
      } ? U extends readonly (string | number | bigint)[] ? U : never : never : never : never, undefined>;
    } & {
      readonly valueAcquisitionError: v.LiteralSchema<false, undefined>;
      readonly value: v.NumberSchema<undefined>;
    }, undefined> : never }[keyof NonNullable<TTULIP3DeviceConfig[TSensor_1]>] }[keyof TTULIP3DeviceConfig])[], undefined>]>, undefined>;
  }, undefined>;
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
}, undefined>;
type DataMessageUplinkOutput<TTULIP3DeviceConfig extends TULIP3DeviceConfig> = v.InferOutput<ReturnType<typeof createDataMessageUplinkOutputSchema<TTULIP3DeviceConfig>>>;
//#endregion
//#region ../parsers/src/schemas/tulip3/deviceAlarm.d.ts
/**
 * Creates a validation schema for alarm flags.
 * Converts alarm flag bitfield configuration into boolean properties.
 */
declare function createGenericAlarmFlagsSchema<const TAlarmFlags extends AlarmFlags>(flags: TAlarmFlags): v.ObjectSchema<Record<keyof TAlarmFlags, v.BooleanSchema<undefined>>, undefined>;
/**
 * Creates validation schema for communication module alarm uplink (message 0x13/0x01).
 * Extracts alarm flags from the device config's root `alarmFlags` property.
 *
 * @param config - Device sensor configuration containing alarm flags
 * @returns Validation schema for communication module alarm messages
 */
declare function createCommunicationModuleAlarmUplinkOutputSchema<const TTULIP3DeviceConfig extends TULIP3DeviceConfig>(config: TTULIP3DeviceConfig): v.ObjectSchema<{
  readonly data: v.ObjectSchema<{
    readonly messageType: v.PicklistSchema<[19], undefined>;
    readonly messageSubType: v.PicklistSchema<[1], undefined>;
  } & {
    readonly communicationModuleAlarms: v.ObjectSchema<{
      readonly alarmFlags: v.ObjectSchema<Record<string, v.BooleanSchema<undefined>>, undefined>;
    }, undefined>;
  }, undefined>;
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
}, undefined>;
type MappedSensorAlarmSchemaEntries<TTULIP3DeviceConfig extends TULIP3DeviceConfig> = { [TSensor in Extract<keyof TTULIP3DeviceConfig, `sensor${number}`>]: v.ObjectSchema<{
  sensor: v.LiteralSchema<TSensor, undefined>;
  sensorId: v.NumberSchema<undefined>;
  alarmFlags: TTULIP3DeviceConfig[TSensor] extends {
    alarmFlags: infer TFlags extends AlarmFlags;
  } ? ReturnType<typeof createGenericAlarmFlagsSchema<TFlags>> : never;
}, undefined> }[Extract<keyof TTULIP3DeviceConfig, `sensor${number}`>][];
/**
 * Creates validation schema for sensor alarm uplink (message 0x13/0x02).
 * Validates array of sensor alarm entries with alarm flags.
 *
 * @param config - Device sensor configuration with sensor alarm flags
 * @returns Validation schema for sensor alarm messages
 */
declare function createSensorAlarmUplinkOutputSchema<const TTULIP3DeviceConfig extends TULIP3DeviceConfig>(config: TTULIP3DeviceConfig): v.ObjectSchema<{
  readonly data: v.ObjectSchema<{
    readonly messageType: v.PicklistSchema<[19], undefined>;
    readonly messageSubType: v.PicklistSchema<[2], undefined>;
  } & {
    readonly sensorAlarms: v.TupleWithRestSchema<[v.UnionSchema<MappedSensorAlarmSchemaEntries<TTULIP3DeviceConfig>, undefined>], v.UnionSchema<MappedSensorAlarmSchemaEntries<TTULIP3DeviceConfig>, undefined>, undefined>;
  }, undefined>;
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
}, undefined>;
type MappedChannelAlarmSchemaEntries<TTULIP3DeviceConfig extends TULIP3DeviceConfig> = { [TSensor in Extract<keyof TTULIP3DeviceConfig, `sensor${number}`>]: TTULIP3DeviceConfig[TSensor] extends TULIP3SensorConfig ? { [TChannel in Extract<keyof TTULIP3DeviceConfig[TSensor], `channel${number}`>]: TTULIP3DeviceConfig[TSensor][TChannel] extends {
  alarmFlags: infer TFlags extends AlarmFlags;
} ? v.ObjectSchema<{
  sensor: v.LiteralSchema<TSensor, undefined>;
  sensorId: v.NumberSchema<undefined>;
  channel: v.LiteralSchema<TChannel, undefined>;
  channelId: v.NumberSchema<undefined>;
  channelName: TTULIP3DeviceConfig[TSensor][TChannel] extends {
    channelName: infer TName extends string;
  } ? v.LiteralSchema<TName, undefined> : v.StringSchema<undefined>;
  alarmFlags: ReturnType<typeof createGenericAlarmFlagsSchema<TFlags>>;
}, undefined> : never }[Extract<keyof TTULIP3DeviceConfig[TSensor], `channel${number}`>] : never }[Extract<keyof TTULIP3DeviceConfig, `sensor${number}`>][];
/**
 * Creates validation schema for channel alarm uplink (message 0x13/0x03).
 * Validates array of channel alarm entries with alarm flags per channel.
 *
 * @param config - Device sensor configuration with channel alarm flags
 * @returns Validation schema for channel alarm messages
 */
declare function createChannelAlarmUplinkOutputSchema<const TTULIP3DeviceConfig extends TULIP3DeviceConfig>(config: TTULIP3DeviceConfig): v.ObjectSchema<{
  readonly data: v.ObjectSchema<{
    readonly messageType: v.PicklistSchema<[19], undefined>;
    readonly messageSubType: v.PicklistSchema<[3], undefined>;
  } & {
    readonly channelAlarms: v.TupleWithRestSchema<[v.UnionSchema<MappedChannelAlarmSchemaEntries<TTULIP3DeviceConfig>, undefined>], v.UnionSchema<MappedChannelAlarmSchemaEntries<TTULIP3DeviceConfig>, undefined>, undefined>;
  }, undefined>;
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
}, undefined>;
type CommunicationModuleAlarmMessageUplinkOutput<TTULIP3DeviceConfig extends TULIP3DeviceConfig> = v.InferOutput<ReturnType<typeof createCommunicationModuleAlarmUplinkOutputSchema<TTULIP3DeviceConfig>>>;
type SensorAlarmMessageUplinkOutput<TTULIP3DeviceConfig extends TULIP3DeviceConfig> = v.InferOutput<ReturnType<typeof createSensorAlarmUplinkOutputSchema<TTULIP3DeviceConfig>>>;
type ChannelAlarmMessageUplinkOutput<TTULIP3DeviceConfig extends TULIP3DeviceConfig> = v.InferOutput<ReturnType<typeof createChannelAlarmUplinkOutputSchema<TTULIP3DeviceConfig>>>;
//#endregion
//#region ../parsers/src/schemas/tulip3/identification.d.ts
/**
 * Creates a validation schema for product sub-IDs.
 *
 * @returns A Valibot picklist schema that validates against known product sub-IDs
 * @example
 * ```typescript
 * const schema = createProductSubIdSchema()
 * const result = v.parse(schema, "PEW-1000")
 * ```
 */
declare function createProductSubIdSchema(): v.PicklistSchema<("LoRaWAN class A" | "BLE only" | "LoRaWAN class B" | "LoRaWAN class C" | "Mioty class Z" | "Mioty class A" | "Mioty class B")[], undefined>;
/**
 * Creates a unified validation schema for channel plans.
 *
 * NOTE: The lookup-based approach for LoRaWAN and Mioty channel plans is currently not used
 * due to issues with the lookups. This schema now only allows non-negative integers.
 *
 * @returns A Valibot schema that validates a non-negative integer channel plan
 * @example
 * ```typescript
 * const schema = createChannelPlanSchema()
 * const result = v.parse(schema, 1) // Only non-negative integers are valid
 * ```
 */
declare function createChannelPlanSchema(): v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.IntegerAction<number, undefined>]>;
/**
 * Creates a validation schema for connected sensors configuration based on a config object.
 *
 * @param config - The device sensor config object (keys are sensor names)
 * @returns A Valibot object schema with boolean flags for each possible sensor
 * @example
 * ```typescript
 * const config = { sensor1: {}, sensor2: {} }
 * const schema = createConnectedSensorsSchema(config)
 * const result = v.parse(schema, { sensor1: true, sensor2: false, sensor3: false, sensor4: false })
 * ```
 */
declare function createConnectedSensorsSchema<const TConfig extends TULIP3DeviceConfig>(config: TConfig): v.ObjectSchema<{
  sensor1: keyof TConfig extends "sensor1" ? v.LiteralSchema<true, undefined> : v.LiteralSchema<false, undefined>;
  sensor2: keyof TConfig extends "sensor2" ? v.LiteralSchema<true, undefined> : v.LiteralSchema<false, undefined>;
  sensor3: keyof TConfig extends "sensor3" ? v.LiteralSchema<true, undefined> : v.LiteralSchema<false, undefined>;
  sensor4: keyof TConfig extends "sensor4" ? v.LiteralSchema<true, undefined> : v.LiteralSchema<false, undefined>;
}, undefined>;
/**
 * Creates a validation schema for existing channels configuration based on a config object.
 *
 * @param config - The sensor channel config object (keys are channel names)
 * @returns A Valibot object schema with boolean flags for each possible channel
 * @example
 * ```typescript
 * const config = { channel1: true, channel2: true }
 * const schema = createExistingChannelsSchema(config)
 * const result = v.parse(schema, { channel1: true, channel2: true, channel3: false, channel4: false, channel5: false, channel6: false, channel7: false, channel8: false })
 * ```
 */
declare function createExistingChannelsSchema<const TConfig extends TULIP3SensorConfig>(config: TConfig): v.ObjectSchema<{
  channel1: keyof TConfig extends "channel1" ? v.LiteralSchema<true, undefined> : v.LiteralSchema<false, undefined>;
  channel2: keyof TConfig extends "channel2" ? v.LiteralSchema<true, undefined> : v.LiteralSchema<false, undefined>;
  channel3: keyof TConfig extends "channel3" ? v.LiteralSchema<true, undefined> : v.LiteralSchema<false, undefined>;
  channel4: keyof TConfig extends "channel4" ? v.LiteralSchema<true, undefined> : v.LiteralSchema<false, undefined>;
  channel5: keyof TConfig extends "channel5" ? v.LiteralSchema<true, undefined> : v.LiteralSchema<false, undefined>;
  channel6: keyof TConfig extends "channel6" ? v.LiteralSchema<true, undefined> : v.LiteralSchema<false, undefined>;
  channel7: keyof TConfig extends "channel7" ? v.LiteralSchema<true, undefined> : v.LiteralSchema<false, undefined>;
  channel8: keyof TConfig extends "channel8" ? v.LiteralSchema<true, undefined> : v.LiteralSchema<false, undefined>;
}, undefined>;
interface CommunicationModuleIdentificationFieldSchemas<TConfig extends TULIP3DeviceConfig> {
  productId: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  productSubId: v.OptionalSchema<ReturnType<typeof createProductSubIdSchema>, undefined>;
  channelPlan: v.OptionalSchema<ReturnType<typeof createChannelPlanSchema>, undefined>;
  connectedSensors: v.OptionalSchema<ReturnType<typeof createConnectedSensorsSchema<TConfig>>, undefined>;
  firmwareVersion: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
  hardwareVersion: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
  productionDate: v.OptionalSchema<v.SchemaWithPipe<[v.StringSchema<undefined>, v.IsoDateAction<string, undefined>]>, undefined>;
  serialNumberPart1: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
  serialNumberPart2: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
}
type EnabledCommunicationModuleIdentificationFields<TConfig extends TULIP3DeviceConfig> = { [K in keyof TConfig['registerConfig']['tulip3IdentificationRegisters'] as TConfig['registerConfig']['tulip3IdentificationRegisters'][K] extends true ? K : never]: K extends keyof CommunicationModuleIdentificationFieldSchemas<TConfig> ? CommunicationModuleIdentificationFieldSchemas<TConfig>[K] : never };
/**
 * Creates a validation schema for communication module identification data.
 * Contains hardware and software information about the communication module.
 * Only includes fields that are enabled in the device configuration flags.
 *
 * @param config - Device sensor config object (keys are sensor names)
 * @returns A Valibot object schema for communication module identification
 * @template TConfig - Type-safe device configuration
 * @example
 * ```typescript
 * const config = {
 *   sensor1: {},
 *   registerConfig: {
 *     tulip3IdentificationRegisters: {
 *       productId: true,
 *       firmwareVersion: true
 *     }
 *   }
 * }
 * const schema = createCommunicationModuleIdentificationSchema(config)
 * const result = v.parse(schema, {
 *   productId: 0x0B, // PEW-1000
 *   firmwareVersion: "1.2.3"
 * })
 * ```
 */
interface SensorIdentificationFieldSchemas<TConfig extends TULIP3SensorConfig> {
  sensorType: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  existingChannels: v.OptionalSchema<ReturnType<typeof createExistingChannelsSchema<TConfig>>, undefined>;
  firmwareVersion: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
  hardwareVersion: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
  productionDate: v.OptionalSchema<v.SchemaWithPipe<[v.StringSchema<undefined>, v.IsoDateAction<string, undefined>]>, undefined>;
  serialNumberPart1: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
  serialNumberPart2: v.OptionalSchema<v.StringSchema<undefined>, undefined>;
}
type EnabledSensorIdentificationFields<TConfig extends TULIP3SensorConfig> = { [K in keyof TConfig['registerConfig']['tulip3IdentificationRegisters'] as TConfig['registerConfig']['tulip3IdentificationRegisters'][K] extends true ? K : never]: K extends keyof SensorIdentificationFieldSchemas<TConfig> ? SensorIdentificationFieldSchemas<TConfig>[K] : never };
interface ChannelIdentificationFieldSchemas<TChannelName extends string, TConfig extends TULIP3ChannelConfig> {
  measurand: v.OptionalSchema<ReturnType<typeof createChannelMeasurandNameSchema<TConfig>>, undefined>;
  unit: v.OptionalSchema<ReturnType<typeof createChannelUnitNameSchema<TConfig>>, undefined>;
  minMeasureRange: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  maxMeasureRange: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  minPhysicalLimit: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  maxPhysicalLimit: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  accuracy: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  offset: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  gain: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  calibrationDate: v.OptionalSchema<v.SchemaWithPipe<[v.StringSchema<undefined>, v.IsoDateAction<string, undefined>]>, undefined>;
  channelName: v.LiteralSchema<TChannelName, undefined>;
}
type EnabledChannelIdentificationFields<TConfig extends TULIP3ChannelConfig, TChannelName extends string> = { [K in keyof TConfig['registerConfig']['tulip3IdentificationRegisters'] as TConfig['registerConfig']['tulip3IdentificationRegisters'][K] extends true ? K : never]: K extends keyof ChannelIdentificationFieldSchemas<TChannelName, TConfig> ? ChannelIdentificationFieldSchemas<TChannelName, TConfig>[K] : never } & {
  channelName: v.LiteralSchema<TChannelName, undefined>;
};
/**
 * Creates a validation schema for a sensor with its associated channels.
 * Combines sensor identification with individual channel configurations.
 *
 * @param sensorChannelConfig - Configuration object defining which channels are available for this sensor
 * @returns A Valibot object schema combining sensor identification and channel configurations
 * @template TTULIP3SensorConfig - Type-safe sensor channel configuration
 * @example
 * ```typescript
 * const config = { channel1: true, channel2: true }
 * const schema = createSensorWithChannelsSchema(config)
 * const result = v.parse(schema, {
 *   identification: {
 *     sensorType: 0x0001,
 *     firmwareVersion: "1.0.0"
 *   },
 *   channel1: {
 *     measurand: "temperature",
 *     unit: "°C"
 *   },
 *   channel2: {
 *     measurand: "pressure",
 *     unit: "bar"
 *   }
 * })
 * ```
 */
declare function createSensorWithChannelsSchema<const TTULIP3SensorConfig extends TULIP3SensorConfig>(sensorChannelConfig: TTULIP3SensorConfig): v.ObjectSchema<{
  readonly identification: v.OptionalSchema<v.ObjectSchema<EnabledSensorIdentificationFields<TTULIP3SensorConfig>, undefined>, undefined>;
} & { [ChannelKey in keyof TTULIP3SensorConfig as ChannelKey extends `channel${number}` ? ChannelKey : never]: TTULIP3SensorConfig[ChannelKey] extends TULIP3ChannelConfig ? v.OptionalSchema<v.ObjectSchema<EnabledChannelIdentificationFields<TTULIP3SensorConfig[ChannelKey], TTULIP3SensorConfig[ChannelKey]["channelName"]>, undefined>, undefined> : never }, undefined>;
type MappedSensorChannelConfig<TTULIP3DeviceConfig extends TULIP3DeviceConfig> = { [K in keyof TTULIP3DeviceConfig as K extends `sensor${number}` ? K : never]: TTULIP3DeviceConfig[K] extends TULIP3SensorConfig ? v.OptionalSchema<ReturnType<typeof createSensorWithChannelsSchema<TTULIP3DeviceConfig[K]>>, undefined> : never };
/**
 * Creates a validation schema for generic identification message uplink output.
 * This is the main schema creator for TULIP3 identification messages.
 *
 * @param config - Configuration object defining sensor-to-channel mappings
 * @returns A Valibot object schema for identification message uplink output
 * @template TKeepSensorChannelsConfig - Type-safe sensor channel configuration
 * @example
 * ```typescript
 * const config = {
 *   sensor1: [1, 2] as [number, ...number[]],
 *   sensor2: [1, 2, 3] as [number, ...number[]]
 * }
 * const schema = createGenericIdentificationMessageUplinkOutputSchema(config)
 *
 * const result = v.parse(schema, {
 *   data: {
 *     messageType: 0x14,
 *     messageSubType: 0x01,
 *     communicationModule: {
 *       productId: 0x0B,
 *       firmwareVersion: "1.2.3"
 *     },
 *     sensor1: {
 *       identification: { sensorType: 0x0001 },
 *       channel1: { measurand: "temperature", unit: "°C" },
 *       channel2: { measurand: "pressure", unit: "bar" }
 *     }
 *   },
 *   warnings: ["Optional warning message"]
 * })
 * ```
 */
declare function createIdentificationReadRegistersResponseUplinkOutputSchema<const TTULIP3DeviceConfig extends TULIP3DeviceConfig>(config: TTULIP3DeviceConfig): v.ObjectSchema<{
  readonly data: v.ObjectSchema<{
    readonly messageType: v.PicklistSchema<[20], undefined>;
    readonly messageSubType: v.PicklistSchema<[1, 2, 4], undefined>;
  } & {
    readonly identification: v.ObjectSchema<MappedSensorChannelConfig<TTULIP3DeviceConfig> & {
      communicationModule: v.OptionalSchema<v.ObjectSchema<EnabledCommunicationModuleIdentificationFields<TTULIP3DeviceConfig>, undefined>, undefined>;
    }, undefined>;
  }, undefined>;
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
}, undefined>;
declare function createIdentificationWriteRegistersResponseUplinkOutputSchema(): v.ObjectSchema<{
  readonly data: v.ObjectSchema<{
    readonly messageType: v.PicklistSchema<[20], undefined>;
    readonly messageSubType: v.PicklistSchema<[3], undefined>;
  } & {
    readonly identification: v.ObjectSchema<{
      readonly revisionCounter: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
      readonly totalWrongFrames: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
      readonly frames: v.TupleWithRestSchema<[v.ObjectSchema<{
        readonly frameNumber: v.NumberSchema<undefined>;
        readonly status: v.PicklistSchema<("Configuration received but not applied" | "Configuration received and applied with success" | "Configuration rejected - Tried to write a read only register" | "Configuration rejected - At least one register has an invalid value" | "Configuration rejected - The combination register start address/number of bytes is wrong" | "Entire configuration discarded because of invalid parameter combination" | "Entire configuration discarded because no answer from the cloud" | "Missing frame" | "Frame rejected - frame number already received")[], undefined>;
      }, undefined>], v.ObjectSchema<{
        readonly frameNumber: v.NumberSchema<undefined>;
        readonly status: v.PicklistSchema<("Configuration received but not applied" | "Configuration received and applied with success" | "Configuration rejected - Tried to write a read only register" | "Configuration rejected - At least one register has an invalid value" | "Configuration rejected - The combination register start address/number of bytes is wrong" | "Entire configuration discarded because of invalid parameter combination" | "Entire configuration discarded because no answer from the cloud" | "Missing frame" | "Frame rejected - frame number already received")[], undefined>;
      }, undefined>, undefined>;
    }, undefined>;
  }, undefined>;
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
}, undefined>;
type IdentificationReadRegistersResponseUplinkOutput<TTULIP3DeviceConfig extends TULIP3DeviceConfig> = v.InferOutput<ReturnType<typeof createIdentificationReadRegistersResponseUplinkOutputSchema<TTULIP3DeviceConfig>>>;
type IdentificationWriteRegistersResponseUplinkOutput = v.InferOutput<ReturnType<typeof createIdentificationWriteRegistersResponseUplinkOutputSchema>>;
//#endregion
//#region ../parsers/src/schemas/tulip3/keepAlive.d.ts
/**
 * Creates a validation schema for keep alive message uplink output (message type 0x16, subtype 0x01).
 *
 * Behavior summary:
 * - Transmitted every 24 hours (not configurable)
 * - Always requires acknowledgement from the network server
 *
 * Payload:
 * - messageType: 0x16 (Periodic event)
 * - messageSubType: 0x01 (Keep alive message)
 * - status: Status byte with power, battery computation, and restart flags
 * - revisionCounter: 2-byte revision counter for local configuration changes
 * - batteryLevel: 1-byte battery level in % (present only if able to compute battery level)
 *
 * @returns A Valibot object schema for keep alive uplink output
 * @example
 * ```ts
 * const schema = createKeepAliveUplinkOutputSchema()
 * const result = v.parse(schema, {
 *   data: {
 *     messageType: 0x16,
 *     messageSubType: 0x01,
 *     status: {
 *       mainPowered: false,
 *       ableToComputeBatteryLevel: true,
 *       hasCommunicationModuleRestarted: false,
 *     },
 *     revisionCounter: 12345,
 *     batteryLevel: 85,
 *   },
 * })
 * ```
 */
declare function createKeepAliveUplinkOutputSchema(): v.ObjectSchema<{
  readonly data: v.ObjectSchema<{
    readonly messageType: v.PicklistSchema<[22], undefined>;
    readonly messageSubType: v.PicklistSchema<[1], undefined>;
  } & {
    readonly keepAliveData: v.UnionSchema<[v.ObjectSchema<{
      readonly status: v.ObjectSchema<{
        readonly mainPowered: v.BooleanSchema<undefined>;
        readonly ableToComputeBatteryLevel: v.LiteralSchema<true, undefined>;
        readonly hasCommunicationModuleRestarted: v.BooleanSchema<undefined>;
      }, undefined>;
      readonly revisionCounter: v.NumberSchema<undefined>;
      readonly batteryLevel: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 100, undefined>]>;
    }, undefined>, v.ObjectSchema<{
      readonly status: v.ObjectSchema<{
        readonly mainPowered: v.BooleanSchema<undefined>;
        readonly ableToComputeBatteryLevel: v.LiteralSchema<false, undefined>;
        readonly hasCommunicationModuleRestarted: v.BooleanSchema<undefined>;
      }, undefined>;
      readonly revisionCounter: v.NumberSchema<undefined>;
      readonly batteryLevel: v.OptionalSchema<v.UndefinedSchema<undefined>, undefined>;
    }, undefined>], undefined>;
  }, undefined>;
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
}, undefined>;
type KeepAliveMessageUplinkOutput = v.InferOutput<ReturnType<typeof createKeepAliveUplinkOutputSchema>>;
//#endregion
//#region ../parsers/src/schemas/tulip3/processAlarm.d.ts
/**
 * Creates a validation schema for process alarm message uplink output (message type 0x12, subtype 0x01).
 *
 * Behavior summary:
 * - Sent when a process alarm on a channel appears or turns off; affected channels included
 * - Sent on cloud request  for all or selected channels
 * - Disabled alarms are also reported with false=0
 * - Requires acknowledgement by the network server
 *
 * Payload:
 * - messageType: 0x12
 * - messageSubType: 0x01
 * - alarms: array of sensor/channel entries with alarm bitfields
 *
 * @param config - Device sensor configuration mapping sensors to channels
 * @returns A Valibot object schema for process alarm uplink output
 * @template TTULIP3DeviceConfig - Type-safe sensor configuration
 * @example
 * ```ts
 * const config = { sensor1: { channel1: {} } } as const
 * const schema = createProcessAlarmUplinkOutputSchema(config)
 * const result = v.parse(schema, {
 *   data: {
 *     messageType: 0x12,
 *     messageSubType: 0x01,
 *     processAlarms: [
 *       {
 *         sensor: 'sensor1', sensorId: 0,
 *         channel: 'channel1', channelId: 0,
 *         alarmFlags: {
 *           lowThreshold: true,
 *           highThreshold: false,
 *           fallingSlope: false,
 *           risingSlope: false,
 *           lowThresholdWithDelay: false,
 *           highThresholdWithDelay: false,
 *         },
 *       },
 *     ],
 *   },
 * })
 * ```
 */
declare function createProcessAlarmUplinkOutputSchema<const TTULIP3DeviceConfig extends TULIP3DeviceConfig>(config: TTULIP3DeviceConfig): v.ObjectSchema<{
  readonly data: v.ObjectSchema<{
    readonly messageType: v.PicklistSchema<[18], undefined>;
    readonly messageSubType: v.PicklistSchema<[1], undefined>;
  } & {
    readonly processAlarms: v.TupleWithRestSchema<[v.UnionSchema<{ [TSensor in keyof TTULIP3DeviceConfig]: { [TChannel in keyof NonNullable<TTULIP3DeviceConfig[TSensor]>]: NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel] extends TULIP3ChannelConfig ? v.ObjectSchema<{
      sensor: v.LiteralSchema<TSensor, undefined>;
      sensorId: v.NumberSchema<undefined>;
      channel: v.LiteralSchema<TChannel, undefined>;
      channelId: v.NumberSchema<undefined>;
      channelName: v.LiteralSchema<NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel]["channelName"], undefined>;
    } & {
      readonly alarmFlags: v.ObjectSchema<{
        readonly lowThreshold: v.BooleanSchema<undefined>;
        readonly highThreshold: v.BooleanSchema<undefined>;
        readonly fallingSlope: v.BooleanSchema<undefined>;
        readonly risingSlope: v.BooleanSchema<undefined>;
        readonly lowThresholdWithDelay: v.BooleanSchema<undefined>;
        readonly highThresholdWithDelay: v.BooleanSchema<undefined>;
      }, undefined>;
    }, undefined> : never }[keyof NonNullable<TTULIP3DeviceConfig[TSensor]>] }[keyof TTULIP3DeviceConfig][], undefined>], v.UnionSchema<{ [TSensor in keyof TTULIP3DeviceConfig]: { [TChannel in keyof NonNullable<TTULIP3DeviceConfig[TSensor]>]: NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel] extends TULIP3ChannelConfig ? v.ObjectSchema<{
      sensor: v.LiteralSchema<TSensor, undefined>;
      sensorId: v.NumberSchema<undefined>;
      channel: v.LiteralSchema<TChannel, undefined>;
      channelId: v.NumberSchema<undefined>;
      channelName: v.LiteralSchema<NonNullable<TTULIP3DeviceConfig[TSensor]>[TChannel]["channelName"], undefined>;
    } & {
      readonly alarmFlags: v.ObjectSchema<{
        readonly lowThreshold: v.BooleanSchema<undefined>;
        readonly highThreshold: v.BooleanSchema<undefined>;
        readonly fallingSlope: v.BooleanSchema<undefined>;
        readonly risingSlope: v.BooleanSchema<undefined>;
        readonly lowThresholdWithDelay: v.BooleanSchema<undefined>;
        readonly highThresholdWithDelay: v.BooleanSchema<undefined>;
      }, undefined>;
    }, undefined> : never }[keyof NonNullable<TTULIP3DeviceConfig[TSensor]>] }[keyof TTULIP3DeviceConfig][], undefined>, undefined>;
  }, undefined>;
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
}, undefined>;
type ProcessAlarmMessageUplinkOutput<TTULIP3DeviceConfig extends TULIP3DeviceConfig> = v.InferOutput<ReturnType<typeof createProcessAlarmUplinkOutputSchema<TTULIP3DeviceConfig>>>;
//#endregion
//#region ../parsers/src/codecs/tulip3/messages/spontaneous.d.ts
declare const allowedTypeSubTypeCombinations: {
  readonly 1: readonly [1, 2];
  readonly 2: readonly [1, 2];
  readonly 3: readonly [1, 2, 3];
  readonly 4: readonly [1];
  readonly 5: readonly [1];
};
//#endregion
//#region ../parsers/src/schemas/tulip3/spontaneous.d.ts
type AllowedTypeCombinationsSchema = v.UnionSchema<{ [K in keyof typeof allowedTypeSubTypeCombinations]: v.ObjectSchema<{
  type: v.LiteralSchema<K, undefined>;
  subType: v.PicklistSchema<typeof allowedTypeSubTypeCombinations[K], undefined>;
}, undefined> }[keyof typeof allowedTypeSubTypeCombinations][], undefined>;
declare function createSpontaneousDownlinkAnswerUplinkOutputSchema(): v.ObjectSchema<{
  readonly data: v.ObjectSchema<{
    readonly messageType: v.PicklistSchema<[23], undefined>;
    readonly messageSubType: v.PicklistSchema<[1], undefined>;
  } & {
    readonly spontaneousDownlinkAnswer: v.UnionSchema<[v.ObjectSchema<{
      readonly answeredDownlink: AllowedTypeCombinationsSchema;
      readonly status: v.UnionSchema<v.LiteralSchema<"Success" | "Unsupported command" | "Logical error" | "Memory error" | "Wrong frame format" | "Communication session lock", undefined>[], undefined>;
    }, undefined>, v.ObjectSchema<{
      readonly answeredDownlink: AllowedTypeCombinationsSchema;
      readonly status: v.LiteralSchema<"Device error", undefined>;
      readonly deviceErrorCode: v.NumberSchema<undefined>;
    }, undefined>], undefined>;
  }, undefined>;
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
}, undefined>;
type SpontaneousDownlinkAnswerUplinkOutput = v.InferOutput<ReturnType<typeof createSpontaneousDownlinkAnswerUplinkOutputSchema>>;
declare function createSpontaneousFetchAdditionalDownlinkMessageSchema(): v.ObjectSchema<{
  readonly data: v.ObjectSchema<{
    readonly messageType: v.PicklistSchema<[23], undefined>;
    readonly messageSubType: v.PicklistSchema<[2], undefined>;
  }, undefined>;
  readonly warnings: v.OptionalSchema<v.ArraySchema<v.StringSchema<undefined>, undefined>, undefined>;
}, undefined>;
type SpontaneousFetchAdditionalDownlinkMessageUplinkOutput = v.InferOutput<ReturnType<typeof createSpontaneousFetchAdditionalDownlinkMessageSchema>>;
//#endregion
//#region ../parsers/src/schemas/tulip3/index.d.ts
type TULIP3UplinkOutput<TDeviceProfile extends TULIP3DeviceProfile> = DataMessageUplinkOutput<TDeviceProfile['sensorChannelConfig']> | ProcessAlarmMessageUplinkOutput<TDeviceProfile['sensorChannelConfig']> | CommunicationModuleAlarmMessageUplinkOutput<TDeviceProfile['sensorChannelConfig']> | SensorAlarmMessageUplinkOutput<TDeviceProfile['sensorChannelConfig']> | ChannelAlarmMessageUplinkOutput<TDeviceProfile['sensorChannelConfig']> | IdentificationReadRegistersResponseUplinkOutput<TDeviceProfile['sensorChannelConfig']> | IdentificationWriteRegistersResponseUplinkOutput | ConfigurationReadRegistersResponseUplinkOutput<TDeviceProfile['sensorChannelConfig']> | ConfigurationWriteRegistersResponseUplinkOutput | SpontaneousDownlinkAnswerUplinkOutput | SpontaneousFetchAdditionalDownlinkMessageUplinkOutput | KeepAliveMessageUplinkOutput;
//#endregion
//#region ../parsers/src/schemas/tulip3/downlink/read.d.ts
interface ChannelIdentificationReadFieldSchemas {
  measurand: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  unit: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  minMeasureRange: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  maxMeasureRange: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  minPhysicalLimit: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  maxPhysicalLimit: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  accuracy: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  offset: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  gain: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  calibrationDate: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
}
type EnabledChannelIdentificationReadFields<TConfig extends TULIP3ChannelConfig> = { [K in keyof TConfig['registerConfig']['tulip3IdentificationRegisters'] as TConfig['registerConfig']['tulip3IdentificationRegisters'][K] extends true ? K extends keyof ChannelIdentificationReadFieldSchemas ? K : never : never]: K extends keyof ChannelIdentificationReadFieldSchemas ? ChannelIdentificationReadFieldSchemas[K] : never };
interface SensorIdentificationReadFieldSchemas {
  sensorType: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  existingChannels: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  firmwareVersion: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  hardwareVersion: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  productionDate: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  serialNumberPart1: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  serialNumberPart2: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
}
type EnabledSensorIdentificationReadFields<TConfig extends TULIP3SensorConfig> = { [K in keyof TConfig['registerConfig']['tulip3IdentificationRegisters'] as TConfig['registerConfig']['tulip3IdentificationRegisters'][K] extends true ? K extends keyof SensorIdentificationReadFieldSchemas ? K : never : never]: K extends keyof SensorIdentificationReadFieldSchemas ? SensorIdentificationReadFieldSchemas[K] : never };
interface CommunicationModuleIdentificationReadFieldSchemas {
  productId: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  productSubId: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  channelPlan: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  connectedSensors: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  firmwareVersion: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  hardwareVersion: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  productionDate: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  serialNumberPart1: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  serialNumberPart2: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
}
type EnabledCommunicationModuleIdentificationReadFields<TConfig extends TULIP3DeviceConfig> = { [K in keyof TConfig['registerConfig']['tulip3IdentificationRegisters'] as TConfig['registerConfig']['tulip3IdentificationRegisters'][K] extends true ? K extends keyof CommunicationModuleIdentificationReadFieldSchemas ? K : never : never]: K extends keyof CommunicationModuleIdentificationReadFieldSchemas ? CommunicationModuleIdentificationReadFieldSchemas[K] : never };
interface ChannelConfigurationReadFieldSchemas {
  protocolDataType: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  processAlarmEnabled: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  processAlarmDeadBand: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  lowThresholdAlarmValue: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  highThresholdAlarmValue: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  fallingSlopeAlarmValue: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  risingSlopeAlarmValue: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  lowThresholdWithDelayAlarmValue: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  lowThresholdWithDelayAlarmDelay: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  highThresholdWithDelayAlarmValue: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  highThresholdWithDelayAlarmDelay: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
}
type EnabledChannelConfigurationReadFields<TConfig extends TULIP3ChannelConfig> = { [K in keyof TConfig['registerConfig']['tulip3ConfigurationRegisters'] as TConfig['registerConfig']['tulip3ConfigurationRegisters'][K] extends true ? K extends keyof ChannelConfigurationReadFieldSchemas ? K : never : never]: K extends keyof ChannelConfigurationReadFieldSchemas ? ChannelConfigurationReadFieldSchemas[K] : never };
interface SensorConfigurationReadFieldSchemas {
  samplingChannels: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  bootTime: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  communicationTimeout: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  communicationRetryCount: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
}
type EnabledSensorConfigurationReadFields<TConfig extends TULIP3SensorConfig> = { [K in keyof TConfig['registerConfig']['tulip3ConfigurationRegisters'] as TConfig['registerConfig']['tulip3ConfigurationRegisters'][K] extends true ? K extends keyof SensorConfigurationReadFieldSchemas ? K : never : never]: K extends keyof SensorConfigurationReadFieldSchemas ? SensorConfigurationReadFieldSchemas[K] : never };
interface CommunicationModuleConfigurationReadFieldSchemas {
  measuringPeriodAlarmOff: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  measuringPeriodAlarmOn: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  transmissionRateAlarmOff: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  transmissionRateAlarmOn: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  overVoltageThreshold: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  underVoltageThreshold: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  overTemperatureCmChip: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  underTemperatureCmChip: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  downlinkAnswerTimeout: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  fetchAdditionalDownlinkTimeInterval: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  enableBleAdvertising: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
}
type EnabledCommunicationModuleConfigurationReadFields<TConfig extends TULIP3DeviceConfig> = { [K in keyof TConfig['registerConfig']['tulip3ConfigurationRegisters'] as TConfig['registerConfig']['tulip3ConfigurationRegisters'][K] extends true ? K extends keyof CommunicationModuleConfigurationReadFieldSchemas ? K : never : never]: K extends keyof CommunicationModuleConfigurationReadFieldSchemas ? CommunicationModuleConfigurationReadFieldSchemas[K] : never };
/**
 * Creates a validation schema for channel identification read input.
 * Uses boolean flags to indicate which registers to read.
 *
 * @param config - Channel configuration with register flags
 * @returns A Valibot object schema with optional boolean flags
 */
declare function createChannelIdentificationReadSchema<const TConfig extends TULIP3ChannelConfig>(config: TConfig): v.ObjectSchema<EnabledChannelIdentificationReadFields<TConfig>, undefined>;
/**
 * Creates a validation schema for channel configuration read input.
 * Uses boolean flags to indicate which registers to read.
 *
 * @param config - Channel configuration with register flags
 * @returns A Valibot object schema with optional boolean flags
 */
declare function createChannelConfigurationReadSchema<const TConfig extends TULIP3ChannelConfig>(config: TConfig): v.ObjectSchema<EnabledChannelConfigurationReadFields<TConfig>, undefined>;
/**
 * Creates a validation schema for channel read input (Multiple variant).
 * Allows both identification AND configuration fields.
 *
 * @param config - Channel configuration with register flags
 * @returns A Valibot object schema with optional identification and configuration
 */
type MappedChannelsForSensorReadSingle<TSensorConfig extends TULIP3SensorConfig> = { [K in keyof TSensorConfig as K extends `channel${number}` ? K : never]: TSensorConfig[K] extends TULIP3ChannelConfig ? v.OptionalSchema<v.ObjectSchema<{
  identification: ReturnType<typeof createChannelIdentificationReadSchema<TSensorConfig[K]>>;
}, undefined>, undefined> : never };
type MappedChannelsForSensorReadSingleConfiguration<TSensorConfig extends TULIP3SensorConfig> = { [K in keyof TSensorConfig as K extends `channel${number}` ? K : never]: TSensorConfig[K] extends TULIP3ChannelConfig ? v.OptionalSchema<v.ObjectSchema<{
  configuration: ReturnType<typeof createChannelConfigurationReadSchema<TSensorConfig[K]>>;
}, undefined>, undefined> : never };
/**
 * Creates a validation schema for a sensor's read input (Single variant).
 * Allows EITHER identification OR configuration at sensor level, but not both.
 * Channels use Single variant (identification OR configuration per channel).
 *
 * @param sensorConfig - Sensor configuration with channels
 * @returns A Valibot union schema with identification OR configuration
 */
declare function createSensorReadSingleSchema<const TConfig extends TULIP3SensorConfig>(sensorConfig: TConfig): v.UnionSchema<[v.ObjectSchema<{
  readonly identification: v.OptionalSchema<v.ObjectSchema<EnabledSensorIdentificationReadFields<TConfig>, undefined>, undefined>;
} & MappedChannelsForSensorReadSingle<TConfig>, undefined>, v.ObjectSchema<{
  readonly configuration: v.OptionalSchema<v.ObjectSchema<EnabledSensorConfigurationReadFields<TConfig>, undefined>, undefined>;
} & MappedChannelsForSensorReadSingleConfiguration<TConfig>, undefined>], undefined>;
/**
 * Creates a validation schema for a sensor's read input (Multiple variant).
 * Allows both identification AND configuration at sensor level.
 * Channels use Multiple variant (both identification and configuration per channel).
 *
 * @param sensorConfig - Sensor configuration with channels
 * @returns A Valibot object schema with optional identification and configuration
 */
type MappedSensorsReadInputSingle<TDeviceConfig extends TULIP3DeviceConfig> = { [K in keyof TDeviceConfig as K extends `sensor${number}` ? K : never]: TDeviceConfig[K] extends TULIP3SensorConfig ? v.OptionalSchema<ReturnType<typeof createSensorReadSingleSchema<TDeviceConfig[K]>>, undefined> : never };
/**
 * Creates the main read input data schema for TULIP3 downlink (Single variant).
 * Allows EITHER identification OR configuration at all levels.
 * Used by encode() for single command encoding.
 *
 * @param config - Device configuration with all sensors and channels
 * @returns A Valibot schema for single-command read input structure
 */
declare function createReadInputDataSingleSchema<const TConfig extends TULIP3DeviceConfig>(config: TConfig): v.ObjectSchema<{
  readonly communicationModule: v.OptionalSchema<v.UnionSchema<[v.ObjectSchema<{
    readonly identification: v.ObjectSchema<EnabledCommunicationModuleIdentificationReadFields<TConfig>, undefined>;
  }, undefined>, v.ObjectSchema<{
    readonly configuration: v.ObjectSchema<EnabledCommunicationModuleConfigurationReadFields<TConfig>, undefined>;
  }, undefined>], undefined>, undefined>;
} & MappedSensorsReadInputSingle<TConfig>, undefined>;
/**
 * Creates the main read input data schema for TULIP3 downlink (Multiple variant).
 * Allows both identification AND configuration at all levels.
 * Used by encodeMultiple() for batch command encoding.
 *
 * @param config - Device configuration with all sensors and channels
 * @returns A Valibot schema for multiple-command read input structure
 */
/**
 * Read input data type for single command encoding.
 * Enforces EITHER identification OR configuration at all levels.
 * Used by encode().
 */
type ReadSingleInputData<TConfig extends TULIP3DeviceConfig> = v.InferOutput<ReturnType<typeof createReadInputDataSingleSchema<TConfig>>>;
//#endregion
//#region ../parsers/src/schemas/tulip3/downlink/write.d.ts
interface ChannelIdentificationWriteFieldSchemas<TConfig extends TULIP3ChannelConfig> {
  unit: v.OptionalSchema<ReturnType<typeof createChannelUnitNameSchema<TConfig>>, undefined>;
  offset: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  gain: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
}
type EnabledChannelIdentificationWriteFields<TConfig extends TULIP3ChannelConfig> = { [K in keyof TConfig['registerConfig']['tulip3IdentificationRegisters'] as TConfig['registerConfig']['tulip3IdentificationRegisters'][K] extends true ? K extends keyof ChannelIdentificationWriteFieldSchemas<TConfig> ? K : never : never]: K extends keyof ChannelIdentificationWriteFieldSchemas<TConfig> ? ChannelIdentificationWriteFieldSchemas<TConfig>[K] : never };
interface ChannelConfigurationWriteFieldSchemas<TConfig extends TULIP3ChannelConfig> {
  protocolDataType: v.OptionalSchema<ReturnType<typeof createProtocolDataTypeSchema<TConfig>>, undefined>;
  processAlarmEnabled: v.OptionalSchema<ReturnType<typeof createProcessAlarmEnabledSchema>, undefined>;
  processAlarmDeadBand: v.OptionalSchema<ReturnType<typeof createChannelRangeSpanValueSchema>, undefined>;
  lowThresholdAlarmValue: v.OptionalSchema<ReturnType<typeof createChannelThresholdValueSchema>, undefined>;
  highThresholdAlarmValue: v.OptionalSchema<ReturnType<typeof createChannelThresholdValueSchema>, undefined>;
  fallingSlopeAlarmValue: v.OptionalSchema<ReturnType<typeof createChannelRangeSpanValueSchema>, undefined>;
  risingSlopeAlarmValue: v.OptionalSchema<ReturnType<typeof createChannelRangeSpanValueSchema>, undefined>;
  lowThresholdWithDelayAlarmValue: v.OptionalSchema<ReturnType<typeof createChannelThresholdValueSchema>, undefined>;
  lowThresholdWithDelayAlarmDelay: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  highThresholdWithDelayAlarmValue: v.OptionalSchema<ReturnType<typeof createChannelThresholdValueSchema>, undefined>;
  highThresholdWithDelayAlarmDelay: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
}
type EnabledChannelConfigurationWriteFields<TConfig extends TULIP3ChannelConfig> = { [K in keyof TConfig['registerConfig']['tulip3ConfigurationRegisters'] as TConfig['registerConfig']['tulip3ConfigurationRegisters'][K] extends true ? K extends keyof ChannelConfigurationWriteFieldSchemas<TConfig> ? K : never : never]: K extends keyof ChannelConfigurationWriteFieldSchemas<TConfig> ? ChannelConfigurationWriteFieldSchemas<TConfig>[K] : never };
interface SensorConfigurationWriteFieldSchemas<TConfig extends TULIP3SensorConfig> {
  samplingChannels: v.OptionalSchema<ReturnType<typeof createSamplingChannelsSchema<TConfig>>, undefined>;
  bootTime: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  communicationTimeout: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  communicationRetryCount: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
}
type EnabledSensorConfigurationWriteFields<TConfig extends TULIP3SensorConfig> = { [K in keyof TConfig['registerConfig']['tulip3ConfigurationRegisters'] as TConfig['registerConfig']['tulip3ConfigurationRegisters'][K] extends true ? K extends keyof SensorConfigurationWriteFieldSchemas<TConfig> ? K : never : never]: K extends keyof SensorConfigurationWriteFieldSchemas<TConfig> ? SensorConfigurationWriteFieldSchemas<TConfig>[K] : never };
interface CommunicationModuleConfigurationWriteFieldSchemas {
  measuringPeriodAlarmOff: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  measuringPeriodAlarmOn: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  transmissionRateAlarmOff: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  transmissionRateAlarmOn: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  overTemperatureCmChip: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  underTemperatureCmChip: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  downlinkAnswerTimeout: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  fetchAdditionalDownlinkTimeInterval: v.OptionalSchema<v.NumberSchema<undefined>, undefined>;
  enableBleAdvertising: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
}
type EnabledCommunicationModuleConfigurationWriteFields<TConfig extends TULIP3DeviceConfig> = { [K in keyof TConfig['registerConfig']['tulip3ConfigurationRegisters'] as TConfig['registerConfig']['tulip3ConfigurationRegisters'][K] extends true ? K extends keyof CommunicationModuleConfigurationWriteFieldSchemas ? K : never : never]: K extends keyof CommunicationModuleConfigurationWriteFieldSchemas ? CommunicationModuleConfigurationWriteFieldSchemas[K] : never };
/**
 * Creates a validation schema for channel threshold alarm values.
 * Values are validated against the channel's measurement range (min to max).
 * Used for: lowThresholdAlarmValue, highThresholdAlarmValue, etc.
 *
 * @param channelConfig - Channel configuration with start/end range
 * @returns A Valibot schema with range validation
 */
declare function createChannelThresholdValueSchema(channelConfig: TULIP3ChannelConfig): v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, number, `Value must be >= ${number}`>, v.MaxValueAction<number, number, `Value must be <= ${number}`>]>;
/**
 * Creates a validation schema for channel dead band and slope alarm values.
 * Values are validated from 0 to the range span (max - min).
 * Used for: processAlarmDeadBand, fallingSlopeAlarmValue, risingSlopeAlarmValue.
 *
 * @param channelConfig - Channel configuration with start/end range
 * @returns A Valibot schema with range span validation
 */
declare function createChannelRangeSpanValueSchema(channelConfig: TULIP3ChannelConfig): v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, "Value must be >= 0">, v.MaxValueAction<number, number, `Value must be <= ${number} (range span)`>]>;
/**
 * Creates a validation schema for channel identification write input.
 * Only includes writable identification registers: unit, offset, gain.
 * Other identification registers are factory-set and read-only.
 *
 * @param config - Channel configuration with register flags and measurement range
 * @returns A Valibot object schema with writable identification fields
 */
declare function createChannelIdentificationWriteSchema<const TConfig extends TULIP3ChannelConfig>(config: TConfig): v.ObjectSchema<EnabledChannelIdentificationWriteFields<TConfig>, undefined>;
/**
 * Creates a validation schema for channel configuration write input.
 * Uses actual typed values (physical units) for writable configuration registers.
 *
 * @param config - Channel configuration with register flags and measurement range
 * @returns A Valibot object schema with typed value fields
 */
declare function createChannelConfigurationWriteSchema<const TConfig extends TULIP3ChannelConfig>(config: TConfig): v.ObjectSchema<EnabledChannelConfigurationWriteFields<TConfig>, undefined>;
/**
 * Creates a validation schema for channel write input (Multiple variant).
 * Allows both identification AND configuration fields.
 *
 * @param config - Channel configuration with register flags and measurement range
 * @returns A Valibot object schema with optional identification and configuration
 */
type MappedChannelsForSensorWriteSingle<TSensorConfig extends TULIP3SensorConfig> = { [K in keyof TSensorConfig as K extends `channel${number}` ? K : never]: TSensorConfig[K] extends TULIP3ChannelConfig ? v.OptionalSchema<v.ObjectSchema<{
  identification: ReturnType<typeof createChannelIdentificationWriteSchema<TSensorConfig[K]>>;
}, undefined>, undefined> : never };
type MappedChannelsForSensorWriteSingleConfiguration<TSensorConfig extends TULIP3SensorConfig> = { [K in keyof TSensorConfig as K extends `channel${number}` ? K : never]: TSensorConfig[K] extends TULIP3ChannelConfig ? v.OptionalSchema<v.ObjectSchema<{
  configuration: ReturnType<typeof createChannelConfigurationWriteSchema<TSensorConfig[K]>>;
}, undefined>, undefined> : never };
/**
 * Creates a validation schema for a sensor's write input (Single variant).
 * Allows only configuration at sensor level (no identification - read-only).
 * Channels use Single variant (identification OR configuration per channel).
 *
 * @param sensorConfig - Sensor configuration with channels
 * @returns A Valibot object schema with configuration and channels
 */
declare function createSensorWriteSingleSchema<const TConfig extends TULIP3SensorConfig>(sensorConfig: TConfig): v.UnionSchema<[v.ObjectSchema<MappedChannelsForSensorWriteSingle<TConfig>, undefined>, v.ObjectSchema<{
  readonly configuration: v.OptionalSchema<v.ObjectSchema<EnabledSensorConfigurationWriteFields<TConfig>, undefined>, undefined>;
} & MappedChannelsForSensorWriteSingleConfiguration<TConfig>, undefined>], undefined>;
/**
 * Creates a validation schema for a sensor's write input (Multiple variant).
 * Allows configuration at sensor level (no identification - read-only).
 * Channels use Multiple variant (both identification and configuration per channel).
 *
 * @param sensorConfig - Sensor configuration with channels
 * @returns A Valibot object schema with optional configuration and channels
 */
type MappedSensorsWriteInputSingle<TDeviceConfig extends TULIP3DeviceConfig> = { [K in keyof TDeviceConfig as K extends `sensor${number}` ? K : never]: TDeviceConfig[K] extends TULIP3SensorConfig ? v.OptionalSchema<ReturnType<typeof createSensorWriteSingleSchema<TDeviceConfig[K]>>, undefined> : never };
/**
 * Creates the main write input data schema for TULIP3 downlink (Single variant).
 * Allows only configuration at CM level (no identification - read-only).
 * Sensors follow Single variant pattern.
 * Used by encode() for single command encoding.
 *
 * @param config - Device configuration with all sensors and channels
 * @returns A Valibot schema for single-command write input structure
 */
declare function createWriteInputDataSingleSchema<const TConfig extends TULIP3DeviceConfig>(config: TConfig): v.ObjectSchema<{
  readonly communicationModule: v.OptionalSchema<v.ObjectSchema<{
    readonly configuration: v.ObjectSchema<EnabledCommunicationModuleConfigurationWriteFields<TConfig>, undefined>;
  }, undefined>, undefined>;
} & MappedSensorsWriteInputSingle<TConfig>, undefined>;
/**
 * Creates the main write input data schema for TULIP3 downlink (Multiple variant).
 * Allows configuration at CM level (no identification - read-only).
 * Sensors follow Multiple variant pattern.
 * Used by encodeMultiple() for batch command encoding.
 *
 * @param config - Device configuration with all sensors and channels
 * @returns A Valibot schema for multiple-command write input structure
 */
/**
 * Write input data type for single command encoding.
 * Includes all writable registers per TULIP3 spec:
 * - CM: Configuration only (all identification registers read-only)
 * - Sensor: Configuration only (all identification registers read-only)
 * - Channel: Identification (unit, offset, gain) + Configuration
 * Used by encode().
 */
type WriteSingleInputData<TConfig extends TULIP3DeviceConfig> = v.InferOutput<ReturnType<typeof createWriteInputDataSingleSchema<TConfig>>>;
//#endregion
//#region ../parsers/src/schemas/tulip3/downlink/generic.d.ts
/**
 * Mapped type for channel targets within a sensor.
 * Creates optional boolean flags for each channel in the sensor.
 */
type MappedChannelTargets<TSensorConfig extends TULIP3SensorConfig> = { [K in keyof TSensorConfig as K extends `channel${number}` ? K : never]: TSensorConfig[K] extends TULIP3ChannelConfig ? v.OptionalSchema<v.BooleanSchema<undefined>, undefined> : never };
/**
 * Mapped type for sensor targets in the device.
 * Creates optional objects for each sensor containing their channel targets.
 */
type MappedSensorTargets<TDeviceConfig extends TULIP3DeviceConfig> = { [K in keyof TDeviceConfig as K extends `sensor${number}` ? K : never]: TDeviceConfig[K] extends TULIP3SensorConfig ? v.OptionalSchema<v.ObjectSchema<MappedChannelTargets<TDeviceConfig[K]>, undefined>, undefined> : never };
//#endregion
//#region ../parsers/src/schemas/tulip3/downlink/index.d.ts
/**
 * Metadata schema for TULIP3 downlink messages.
 * Contains configuration for frame assembly and encoding behavior.
 */
declare function createDownlinkMetadataSchema(): v.ObjectSchema<{
  /**
   * Maximum byte size per downlink frame (including headers).
   * Minimum 11 bytes (LoRaWAN requirement). Default: 51 bytes.
   */
  readonly byteLimit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 11, undefined>]>, undefined>;
  /**
   * Starting frame counter for multi-frame messages.
   * Range: 0-31 (5-bit counter in frame number byte, bits 6-2).
   * Default: 0.
   */
  readonly startingFrameCounter: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 31, undefined>]>, undefined>;
  /**
   * Automatically set apply-config bit (bit 7) on last frame of write sequences.
   * Set to false if sending partial configuration that will be applied later.
   * Default: true for write modes.
   */
  readonly autoApplyConfig: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
}, undefined>;
/**
 * Read registers action (Multiple variant)
 */
declare function createReadRegistersActionMultipleSchema<const TConfig extends TULIP3DeviceConfig>(config: TConfig): v.ObjectSchema<{
  readonly action: v.LiteralSchema<"readRegisters", undefined>;
  readonly metadata: v.OptionalSchema<v.ObjectSchema<{
    /**
     * Maximum byte size per downlink frame (including headers).
     * Minimum 11 bytes (LoRaWAN requirement). Default: 51 bytes.
     */
    readonly byteLimit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 11, undefined>]>, undefined>;
    /**
     * Starting frame counter for multi-frame messages.
     * Range: 0-31 (5-bit counter in frame number byte, bits 6-2).
     * Default: 0.
     */
    readonly startingFrameCounter: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 31, undefined>]>, undefined>;
    /**
     * Automatically set apply-config bit (bit 7) on last frame of write sequences.
     * Set to false if sending partial configuration that will be applied later.
     * Default: true for write modes.
     */
    readonly autoApplyConfig: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  }, undefined>, undefined>;
  readonly input: v.ObjectSchema<{
    readonly communicationModule: v.OptionalSchema<v.ObjectSchema<{
      readonly identification: v.OptionalSchema<v.ObjectSchema<{ [K in keyof TConfig["registerConfig"]["tulip3IdentificationRegisters"] as TConfig["registerConfig"]["tulip3IdentificationRegisters"][K] extends true ? K extends keyof CommunicationModuleIdentificationReadFieldSchemas ? K : never : never]: K extends keyof CommunicationModuleIdentificationReadFieldSchemas ? CommunicationModuleIdentificationReadFieldSchemas[K] : never }, undefined>, undefined>;
      readonly configuration: v.OptionalSchema<v.ObjectSchema<{ [K_1 in keyof TConfig["registerConfig"]["tulip3ConfigurationRegisters"] as TConfig["registerConfig"]["tulip3ConfigurationRegisters"][K_1] extends true ? K_1 extends keyof CommunicationModuleConfigurationReadFieldSchemas ? K_1 : never : never]: K_1 extends keyof CommunicationModuleConfigurationReadFieldSchemas ? CommunicationModuleConfigurationReadFieldSchemas[K_1] : never }, undefined>, undefined>;
    }, undefined>, undefined>;
  } & { [K_2 in keyof TConfig as K_2 extends `sensor${number}` ? K_2 : never]: TConfig[K_2] extends TULIP3SensorConfig ? v.OptionalSchema<v.ObjectSchema<{
    readonly identification: v.OptionalSchema<v.ObjectSchema<{ [K_4 in keyof TConfig[K_2]["registerConfig"]["tulip3IdentificationRegisters"] as TConfig[K_2]["registerConfig"]["tulip3IdentificationRegisters"][K_4] extends true ? K_4 extends keyof SensorIdentificationReadFieldSchemas ? K_4 : never : never]: K_4 extends keyof SensorIdentificationReadFieldSchemas ? SensorIdentificationReadFieldSchemas[K_4] : never }, undefined>, undefined>;
    readonly configuration: v.OptionalSchema<v.ObjectSchema<{ [K_5 in keyof TConfig[K_2]["registerConfig"]["tulip3ConfigurationRegisters"] as TConfig[K_2]["registerConfig"]["tulip3ConfigurationRegisters"][K_5] extends true ? K_5 extends keyof SensorConfigurationReadFieldSchemas ? K_5 : never : never]: K_5 extends keyof SensorConfigurationReadFieldSchemas ? SensorConfigurationReadFieldSchemas[K_5] : never }, undefined>, undefined>;
  } & (TConfig[K_2] extends infer T extends TULIP3SensorConfig ? { [K_6 in keyof T as K_6 extends `channel${number}` ? K_6 : never]: T[K_6] extends TULIP3ChannelConfig ? v.OptionalSchema<v.ObjectSchema<{
    readonly identification: v.OptionalSchema<v.ObjectSchema<{ [K_8 in keyof T[K_6]["registerConfig"]["tulip3IdentificationRegisters"] as T[K_6]["registerConfig"]["tulip3IdentificationRegisters"][K_8] extends true ? K_8 extends keyof ChannelIdentificationReadFieldSchemas ? K_8 : never : never]: K_8 extends keyof ChannelIdentificationReadFieldSchemas ? ChannelIdentificationReadFieldSchemas[K_8] : never }, undefined>, undefined>;
    readonly configuration: v.OptionalSchema<v.ObjectSchema<{ [K_9 in keyof T[K_6]["registerConfig"]["tulip3ConfigurationRegisters"] as T[K_6]["registerConfig"]["tulip3ConfigurationRegisters"][K_9] extends true ? K_9 extends keyof ChannelConfigurationReadFieldSchemas ? K_9 : never : never]: K_9 extends keyof ChannelConfigurationReadFieldSchemas ? ChannelConfigurationReadFieldSchemas[K_9] : never }, undefined>, undefined>;
  }, undefined>, undefined> : never } : never), undefined>, undefined> : never }, undefined>;
}, undefined>;
/**
 * Write registers action (Multiple variant)
 */
declare function createWriteRegistersActionMultipleSchema<const TConfig extends TULIP3DeviceConfig>(config: TConfig): v.ObjectSchema<{
  readonly action: v.LiteralSchema<"writeRegisters", undefined>;
  readonly metadata: v.OptionalSchema<v.ObjectSchema<{
    /**
     * Maximum byte size per downlink frame (including headers).
     * Minimum 11 bytes (LoRaWAN requirement). Default: 51 bytes.
     */
    readonly byteLimit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 11, undefined>]>, undefined>;
    /**
     * Starting frame counter for multi-frame messages.
     * Range: 0-31 (5-bit counter in frame number byte, bits 6-2).
     * Default: 0.
     */
    readonly startingFrameCounter: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 31, undefined>]>, undefined>;
    /**
     * Automatically set apply-config bit (bit 7) on last frame of write sequences.
     * Set to false if sending partial configuration that will be applied later.
     * Default: true for write modes.
     */
    readonly autoApplyConfig: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  }, undefined>, undefined>;
  readonly input: v.ObjectSchema<{
    readonly communicationModule: v.OptionalSchema<v.ObjectSchema<{
      readonly configuration: v.OptionalSchema<v.ObjectSchema<{ [K in keyof TConfig["registerConfig"]["tulip3ConfigurationRegisters"] as TConfig["registerConfig"]["tulip3ConfigurationRegisters"][K] extends true ? K extends keyof CommunicationModuleConfigurationWriteFieldSchemas ? K : never : never]: K extends keyof CommunicationModuleConfigurationWriteFieldSchemas ? CommunicationModuleConfigurationWriteFieldSchemas[K] : never }, undefined>, undefined>;
    }, undefined>, undefined>;
  } & { [K_1 in keyof TConfig as K_1 extends `sensor${number}` ? K_1 : never]: TConfig[K_1] extends TULIP3SensorConfig ? v.OptionalSchema<v.ObjectSchema<{
    readonly configuration: v.OptionalSchema<v.ObjectSchema<{ [K_3 in keyof TConfig[K_1]["registerConfig"]["tulip3ConfigurationRegisters"] as TConfig[K_1]["registerConfig"]["tulip3ConfigurationRegisters"][K_3] extends true ? K_3 extends keyof SensorConfigurationWriteFieldSchemas<TConfig_1> ? K_3 : never : never]: K_3 extends keyof SensorConfigurationWriteFieldSchemas<TConfig_1> ? SensorConfigurationWriteFieldSchemas<TConfig[K_1]>[K_3] : never }, undefined>, undefined>;
  } & (TConfig[K_1] extends infer T extends TULIP3SensorConfig ? { [K_4 in keyof T as K_4 extends `channel${number}` ? K_4 : never]: T[K_4] extends TULIP3ChannelConfig ? v.OptionalSchema<v.ObjectSchema<{
    readonly identification: v.OptionalSchema<v.ObjectSchema<{ [K_6 in keyof T[K_4]["registerConfig"]["tulip3IdentificationRegisters"] as T[K_4]["registerConfig"]["tulip3IdentificationRegisters"][K_6] extends true ? K_6 extends keyof ChannelIdentificationWriteFieldSchemas<TConfig_1> ? K_6 : never : never]: K_6 extends keyof ChannelIdentificationWriteFieldSchemas<TConfig_1> ? ChannelIdentificationWriteFieldSchemas<T[K_4]>[K_6] : never }, undefined>, undefined>;
    readonly configuration: v.OptionalSchema<v.ObjectSchema<{ [K_7 in keyof T[K_4]["registerConfig"]["tulip3ConfigurationRegisters"] as T[K_4]["registerConfig"]["tulip3ConfigurationRegisters"][K_7] extends true ? K_7 extends keyof ChannelConfigurationWriteFieldSchemas<TConfig_1> ? K_7 : never : never]: K_7 extends keyof ChannelConfigurationWriteFieldSchemas<TConfig_1> ? ChannelConfigurationWriteFieldSchemas<T[K_4]>[K_7] : never }, undefined>, undefined>;
  }, undefined>, undefined> : never } : never), undefined>, undefined> : never }, undefined>;
}, undefined>;
/**
 * Force close session action (0x03 0x01)
 */
declare function createForceCloseSessionActionSchema(): v.ObjectSchema<{
  readonly action: v.LiteralSchema<"forceCloseSession", undefined>;
  readonly metadata: v.OptionalSchema<v.ObjectSchema<{
    /**
     * Maximum byte size per downlink frame (including headers).
     * Minimum 11 bytes (LoRaWAN requirement). Default: 51 bytes.
     */
    readonly byteLimit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 11, undefined>]>, undefined>;
    /**
     * Starting frame counter for multi-frame messages.
     * Range: 0-31 (5-bit counter in frame number byte, bits 6-2).
     * Default: 0.
     */
    readonly startingFrameCounter: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 31, undefined>]>, undefined>;
    /**
     * Automatically set apply-config bit (bit 7) on last frame of write sequences.
     * Set to false if sending partial configuration that will be applied later.
     * Default: true for write modes.
     */
    readonly autoApplyConfig: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  }, undefined>, undefined>;
}, undefined>;
/**
 * Restore default configuration action (0x03 0x02)
 */
declare function createRestoreDefaultConfigurationActionSchema(): v.ObjectSchema<{
  readonly action: v.LiteralSchema<"restoreDefaultConfiguration", undefined>;
  readonly metadata: v.OptionalSchema<v.ObjectSchema<{
    /**
     * Maximum byte size per downlink frame (including headers).
     * Minimum 11 bytes (LoRaWAN requirement). Default: 51 bytes.
     */
    readonly byteLimit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 11, undefined>]>, undefined>;
    /**
     * Starting frame counter for multi-frame messages.
     * Range: 0-31 (5-bit counter in frame number byte, bits 6-2).
     * Default: 0.
     */
    readonly startingFrameCounter: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 31, undefined>]>, undefined>;
    /**
     * Automatically set apply-config bit (bit 7) on last frame of write sequences.
     * Set to false if sending partial configuration that will be applied later.
     * Default: true for write modes.
     */
    readonly autoApplyConfig: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  }, undefined>, undefined>;
}, undefined>;
/**
 * New battery inserted action (0x03 0x03)
 */
declare function createNewBatteryInsertedActionSchema(): v.ObjectSchema<{
  readonly action: v.LiteralSchema<"newBatteryInserted", undefined>;
  readonly metadata: v.OptionalSchema<v.ObjectSchema<{
    /**
     * Maximum byte size per downlink frame (including headers).
     * Minimum 11 bytes (LoRaWAN requirement). Default: 51 bytes.
     */
    readonly byteLimit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 11, undefined>]>, undefined>;
    /**
     * Starting frame counter for multi-frame messages.
     * Range: 0-31 (5-bit counter in frame number byte, bits 6-2).
     * Default: 0.
     */
    readonly startingFrameCounter: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 31, undefined>]>, undefined>;
    /**
     * Automatically set apply-config bit (bit 7) on last frame of write sequences.
     * Set to false if sending partial configuration that will be applied later.
     * Default: true for write modes.
     */
    readonly autoApplyConfig: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  }, undefined>, undefined>;
}, undefined>;
/**
 * Get alarm status action (0x04 0x01)
 */
declare function createGetAlarmStatusActionSchema<const TConfig extends TULIP3DeviceConfig>(config: TConfig): v.ObjectSchema<{
  readonly action: v.LiteralSchema<"getAlarmStatus", undefined>;
  readonly metadata: v.OptionalSchema<v.ObjectSchema<{
    /**
     * Maximum byte size per downlink frame (including headers).
     * Minimum 11 bytes (LoRaWAN requirement). Default: 51 bytes.
     */
    readonly byteLimit: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 11, undefined>]>, undefined>;
    /**
     * Starting frame counter for multi-frame messages.
     * Range: 0-31 (5-bit counter in frame number byte, bits 6-2).
     * Default: 0.
     */
    readonly startingFrameCounter: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.IntegerAction<number, undefined>, v.MinValueAction<number, 0, undefined>, v.MaxValueAction<number, 31, undefined>]>, undefined>;
    /**
     * Automatically set apply-config bit (bit 7) on last frame of write sequences.
     * Set to false if sending partial configuration that will be applied later.
     * Default: true for write modes.
     */
    readonly autoApplyConfig: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
  }, undefined>, undefined>;
  readonly input: v.ObjectSchema<{
    readonly processAlarmRequested: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
    readonly cmAlarmRequested: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
    readonly sensorAlarmRequested: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
    readonly channelAlarmRequested: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
    readonly targets: v.OptionalSchema<v.ObjectSchema<MappedSensorTargets<TConfig>, undefined>, undefined>;
  }, undefined>;
}, undefined>;
/**
 * Creates the TULIP3 downlink schema for single encode() (Single variant).
 * - readRegisters/writeRegisters use Single schemas (identification OR configuration)
 * - Generic actions remain the same
 *
 * Actions:
 * - readRegisters: Read identification OR configuration registers (not both)
 * - writeRegisters: Write identification OR configuration registers (not both)
 * - forceCloseSession: Abort current downlink session (0x03 0x01)
 * - restoreDefaultConfiguration: Reset to factory defaults (0x03 0x02)
 * - newBatteryInserted: Reset battery level indicator (0x03 0x03)
 * - getAlarmStatus: Request alarm status (0x04 0x01)
 *
 * @param config - Device configuration for profile-aware validation
 * @returns Discriminated union schema for single-frame downlink actions
 */
type ReadRegistersAction<TConfig extends TULIP3DeviceConfig> = v.InferOutput<ReturnType<typeof createReadRegistersActionMultipleSchema<TConfig>>>;
type WriteRegistersAction<TConfig extends TULIP3DeviceConfig> = v.InferOutput<ReturnType<typeof createWriteRegistersActionMultipleSchema<TConfig>>>;
type ForceCloseSessionAction = v.InferOutput<ReturnType<typeof createForceCloseSessionActionSchema>>;
type RestoreDefaultConfigurationAction = v.InferOutput<ReturnType<typeof createRestoreDefaultConfigurationActionSchema>>;
type NewBatteryInsertedAction = v.InferOutput<ReturnType<typeof createNewBatteryInsertedActionSchema>>;
type GetAlarmStatusAction<TConfig extends TULIP3DeviceConfig> = v.InferOutput<ReturnType<typeof createGetAlarmStatusActionSchema<TConfig>>>;
/**
 * Read registers action for single encode (identification-only OR configuration-only).
 * Uses ReadSingleInputData which enforces the constraint that both cannot be present.
 */
interface ReadRegistersActionSingle<TConfig extends TULIP3DeviceConfig> {
  action: 'readRegisters';
  metadata?: v.InferOutput<ReturnType<typeof createDownlinkMetadataSchema>>;
  input: ReadSingleInputData<TConfig>;
}
/**
 * Write registers action for single encode (identification-only OR configuration-only).
 * Uses WriteSingleInputData which enforces the constraint that both cannot be present.
 */
interface WriteRegistersActionSingle<TConfig extends TULIP3DeviceConfig> {
  action: 'writeRegisters';
  metadata?: v.InferOutput<ReturnType<typeof createDownlinkMetadataSchema>>;
  input: WriteSingleInputData<TConfig>;
}
/**
 * Union of all downlink actions for single encode() function.
 * - readRegisters/writeRegisters use Single variants (identification-only OR configuration-only)
 * - Generic actions (forceCloseSession, etc.) appear here as they work the same for single/multiple
 * - getAlarmStatus appears here (small enough to always be single frame)
 *
 * Note: Protocol discrimination is handled at the codec/parser layer via the codec's protocol field.
 * These action types do not include a protocol field - that is added by the parser when routing to codecs.
 */
type TULIP3DownlinkActionSingle<TConfig extends TULIP3DeviceConfig> = ReadRegistersActionSingle<TConfig> | WriteRegistersActionSingle<TConfig> | ForceCloseSessionAction | RestoreDefaultConfigurationAction | NewBatteryInsertedAction | GetAlarmStatusAction<TConfig>;
/**
 * Union of all downlink actions for encodeMultiple() function.
 * - readRegisters/writeRegisters use Multiple variants (allows both identification AND configuration)
 * - Generic actions (forceCloseSession, etc.) appear here as they work the same for single/multiple
 * - getAlarmStatus appears here (small enough to always be single frame)
 *
 * Note: Protocol discrimination is handled at the codec/parser layer via the codec's protocol field.
 * These action types do not include a protocol field - that is added by the parser when routing to codecs.
 */
type TULIP3DownlinkActionMultiple<TConfig extends TULIP3DeviceConfig> = ReadRegistersAction<TConfig> | WriteRegistersAction<TConfig> | ForceCloseSessionAction | RestoreDefaultConfigurationAction | NewBatteryInsertedAction | GetAlarmStatusAction<TConfig>;
//#endregion
//#region ../parsers/src/codecs/tulip3/codec.d.ts
/**
 * Type alias for a TULIP3 codec with protocol identification.
 * Wrapper around base Codec type that fixes the protocol to TULIP3 and passes through all other type parameters.
 */
type TULIP3Codec<TCodecName extends string, TData extends GenericUplinkOutput, TChannelName extends string | never, TEncoder extends (((input: any) => DownlinkOutput) | undefined) = undefined, TMultipleEncoder extends (((input: any) => MultipleDownlinkOutput) | undefined) = undefined> = Codec<typeof TULIP3_PROTOCOL, TCodecName, TData, TChannelName, TEncoder, TMultipleEncoder>;
//#endregion
//#region ../parsers/src/parser.d.ts
type ChannelNamesFromCodec<TCodecs extends AnyCodec> = { [C in TCodecs as C['name']]: C extends Codec<any, any, any, infer N, any> ? N : never }[TCodecs['name']];
type EncodeInput<TCodecs extends AnyCodec> = TCodecs extends {
  encode: infer THandler extends (input: any) => any;
} ? THandler extends ((input: infer TInput) => any) ? {
  protocol: TCodecs['protocol'];
  input: TInput;
} : never : never;
type EncodeMultipleInput<TCodecs extends AnyCodec> = TCodecs extends {
  encodeMultiple: infer THandler extends (input: any) => any;
} ? THandler extends ((input: infer TInput) => any) ? {
  protocol: TCodecs['protocol'];
  input: TInput;
} : never : never;
type HasEncoder<TParserOptions extends ParserOptions<AnyCodec>> = [Extract<TParserOptions['codecs'][number], {
  encode: (input: any) => any;
}>] extends [never] ? false : true;
type HasMultipleEncoder<TParserOptions extends ParserOptions<AnyCodec>> = [Extract<TParserOptions['codecs'][number], {
  encodeMultiple: (input: any) => any;
}>] extends [never] ? false : true;
interface ParserOptions<TCodec extends AnyCodec = AnyCodec> {
  parserName: string;
  /**
   * The list of codecs to use for encoding/decoding.
   * All channels of all codecs must have same name and range.
   * Otherwise, an error will be thrown on initialization.
   */
  codecs: TCodec[];
  /**
   * Whether to throw an error if multiple codecs match the input during decoding.
   * If false, result of the first matching codec will be returned.
   * @default true
   */
  throwOnMultipleDecode?: boolean;
  /**
   * The number of decimal places to round to.
   * Uses the {@link getRoundingDecimals} function.
   * @default 4
   */
  roundingDecimals?: number;
}
type DeviceParser<TParserOptions extends ParserOptions<AnyCodec>> = {
  /**
   * Adjust the rounding of decimal values in the parsed data.
   * @param decimals The number of decimal places to round to.
   * Uses the {@link getRoundingDecimals} function.
   * @returns void
   */
  adjustRoundingDecimals: (decimals: number) => void;
  adjustMeasuringRange: (channel: ChannelNamesFromCodec<TParserOptions['codecs'][number]>, range: {
    start: number;
    end: number;
  }) => void;
  decodeUplink: (input: UplinkInput) => GenericUplinkOutput<ReturnType<TParserOptions['codecs'][number]['decode']>>;
  decodeHexUplink: (input: HexUplinkInput) => GenericUplinkOutput<ReturnType<TParserOptions['codecs'][number]['decode']>>;
} & (HasEncoder<TParserOptions> extends true ? {
  encodeDownlink: (input: EncodeInput<TParserOptions['codecs'][number]>) => DownlinkOutput;
} : {}) & (HasMultipleEncoder<TParserOptions> extends true ? {
  encodeMultipleDownlinks: (input: EncodeMultipleInput<TParserOptions['codecs'][number]>) => MultipleDownlinkOutput;
} : {});
//#endregion
//#region ../parsers/src/devices/FLRU_NETRIS3/parser/index.d.ts
declare function useParser$1(): DeviceParser<{
  readonly parserName: "FLRU+NETRIS3";
  readonly codecs: [TULIP2Codec<[{
    readonly channelId: 0;
    readonly name: "level";
    readonly start: number;
    readonly end: number;
  }], "FLRU+NETRIS3", {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "level";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: {
            channelId: 0;
            channelName: "level";
            value: number;
          }[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    2: Handler<[{
      readonly channelId: 0;
      readonly name: "level";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: {
            channelId: 0;
            channelName: "level";
            value: number;
          }[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    3: Handler<[{
      readonly channelId: 0;
      readonly name: "level";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 3;
        processAlarms: {
          channelId: 0;
          channelName: "level";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          alarmType: 0 | 1 | 2 | 3 | 4 | 5;
          alarmTypeName: "low threshold" | "high threshold" | "falling slope" | "rising slope" | "low threshold with delay" | "high threshold with delay";
          value: number;
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "level";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: {
          alarmType: number;
          alarmTypeName: "MV_STAT channel 0" | "MV_STAT channel 1" | "MV_STAT channel 2" | "MV_STAT channel 3" | "STAT_DEV";
          causeOfFailure: number;
          causeOfFailureName: "MV_STAT_ERROR" | "MV_STAT_WARNING" | "STAT_DEV_ERROR" | "STAT_DEV_WARNING" | "STAT_DEV_RESTARTED";
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "level";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarm: {
          alarmStatus: number;
          alarmStatusNames: ("duty cycle alarm" | "low battery" | "temperature alarm" | "UART alarm")[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "level";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceInformation: {
          productId: 15;
          productIdName: "NETRIS3";
          productSubId: 0;
          productSubIdName: "LoRaWAN";
          sensorDeviceTypeId: 20;
          channelConfigurations: [{
            channelId: 0;
            channelName: "level";
            measurand: 10;
            measurandName: "Level";
            measurementRangeStart: number;
            measurementRangeEnd: number;
            unit: 64 | 60 | 61 | 62 | 63 | 65;
            unitName: "mm" | "cm" | "m" | "ft" | "in" | "µm";
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "level";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          numberOfMeasurements: number;
          numberOfTransmissions: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
    9: Handler<[{
      readonly channelId: 0;
      readonly name: "level";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 9;
        extendedDeviceInformation: {
          optionalFieldsMask: number;
          wikaSensorSerialNumber?: string | undefined;
          sensorLUID?: number | undefined;
          sensorHardwareVersion?: string | undefined;
          deviceHardwareVersion: string;
          sensorFirmwareVersion?: string | undefined;
          deviceSerialNumber: string;
          deviceProductCode: string;
          deviceFirmwareVersion: string;
        };
      };
      warnings?: string[] | undefined;
    }>;
  }, EncoderFactory<FLRUTulip2DownlinkInput>, MultipleEncoderFactory<FLRUTulip2DownlinkInput>>, TULIP3Codec<"FLRU+NETRIS3TULIP3Codec", TULIP3UplinkOutput<{
    readonly deviceName: "FLRU+NETRIS3";
    readonly deviceAlarmConfig: {
      readonly communicationModuleAlarms: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly sensorAlarms: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly sensorChannelAlarms: {
        readonly outOfMinPhysicalSensorLimit: 16;
        readonly outOfMaxPhysicalSensorLimit: 32;
      };
    };
    readonly sensorChannelConfig: {
      readonly alarmFlags: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly measuringPeriodAlarmOff: true;
          readonly transmissionRateAlarmOff: true;
          readonly measuringPeriodAlarmOn: true;
          readonly transmissionRateAlarmOn: true;
          readonly underVoltageThreshold: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly productId: true;
          readonly productSubId: true;
          readonly channelPlan: true;
          readonly connectedSensors: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly communicationModuleSpecificConfigurationRegisters: {};
        readonly communicationModuleSpecificIdentificationRegisters: {};
      };
      readonly sensor1: {
        readonly alarmFlags: {
          sensorCommunicationError: 1;
          sensorBusy: 32768;
          sensorMemoryIntegrity: 16384;
          sensorALUSaturation: 8192;
        };
        readonly registerConfig: {
          readonly tulip3ConfigurationRegisters: {
            readonly samplingChannels: true;
          };
          readonly tulip3IdentificationRegisters: {
            readonly sensorType: true;
            readonly existingChannels: true;
            readonly firmwareVersion: true;
            readonly hardwareVersion: true;
            readonly productionDate: true;
            readonly serialNumberPart1: true;
            readonly serialNumberPart2: true;
          };
          readonly sensorSpecificConfigurationRegisters: {};
          readonly sensorSpecificIdentificationRegisters: {};
        };
        readonly channel1: {
          readonly channelName: "level";
          readonly start: 0;
          readonly end: 1000;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
          readonly availableMeasurands: ["Level"];
          readonly availableUnits: ["mm", "in"];
          readonly alarmFlags: {
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
      };
    };
  }>, "level", (input: TULIP3DownlinkActionSingle<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "level";
        readonly start: 0;
        readonly end: 1000;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Level"];
        readonly availableUnits: ["mm", "in"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => DownlinkOutput, (input: TULIP3DownlinkActionMultiple<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "level";
        readonly start: 0;
        readonly end: 1000;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Level"];
        readonly availableUnits: ["mm", "in"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => MultipleDownlinkOutput>];
}>;
//#endregion
//#region ../parsers/src/devices/GD20W/schema/tulip2.d.ts
declare function createGD20WTULIP2GetConfigurationSchema(): v.ObjectSchema<{
  deviceAction: v.LiteralSchema<"getConfiguration", undefined>;
} & {
  readonly mainConfiguration: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  readonly channel0: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<true, undefined>, v.ObjectSchema<{
    readonly alarms: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  }, undefined>], undefined>, undefined>;
  readonly channel1: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<true, undefined>, v.ObjectSchema<{
    readonly alarms: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  }, undefined>], undefined>, undefined>;
  readonly channel2: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<true, undefined>, v.ObjectSchema<{
    readonly alarms: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  }, undefined>], undefined>, undefined>;
  readonly channel3: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<true, undefined>, v.ObjectSchema<{
    readonly alarms: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  }, undefined>], undefined>, undefined>;
  readonly channel4: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<true, undefined>, v.ObjectSchema<{
    readonly alarms: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  }, undefined>], undefined>, undefined>;
  readonly channel5: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<true, undefined>, v.ObjectSchema<{
    readonly alarms: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  }, undefined>], undefined>, undefined>;
} & {
  configurationId: ReturnType<typeof createConfigurationIdSchema>;
} & {
  byteLimit: ReturnType<() => v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.IntegerAction<number, undefined>]>, undefined>>;
}, undefined>;
type GD20WTULIP2GetConfigurationAction = v.InferOutput<ReturnType<typeof createGD20WTULIP2GetConfigurationSchema>>;
type GD20WTULIP2ResetBatteryAction = v.InferOutput<ReturnType<typeof createDownlinkResetBatteryIndicatorSchema>>;
type GD20WTULIP2DownlinkExtraInput = GD20WTULIP2GetConfigurationAction | GD20WTULIP2ResetBatteryAction;
//#endregion
//#region ../parsers/src/devices/GD20W/parser/tulip2/channels.d.ts
declare function createGD20WTULIP2Channels(): [{
  readonly channelId: 0;
  readonly name: "channel0";
  readonly start: 0;
  readonly end: 12;
}, {
  readonly channelId: 1;
  readonly name: "channel1";
  readonly start: -1.013;
  readonly end: 10.987;
}, {
  readonly channelId: 2;
  readonly name: "channel2";
  readonly start: 0;
  readonly end: 85.7879104614;
}, {
  readonly channelId: 3;
  readonly name: "channel3";
  readonly start: -1.013;
  readonly end: 14.7351512909;
}, {
  readonly channelId: 4;
  readonly name: "channel4";
  readonly start: 0;
  readonly end: 15.7481508255;
}, {
  readonly channelId: 5;
  readonly name: "channel5";
  readonly start: -40;
  readonly end: 80;
}];
//#endregion
//#region ../parsers/src/devices/GD20W/parser/tulip2/constants.d.ts
declare const GD20W_DOWNLINK_FEATURE_FLAGS: {
  readonly maxConfigId: 255;
  readonly channelsStartupTime: false;
  readonly channelsMeasureOffset: false;
  readonly mainConfigBLE: false;
  readonly mainConfigSingleMeasuringRate: false;
};
type GD20WTulip2Channels = ReturnType<typeof createGD20WTULIP2Channels>;
type GD20WTulip2DownlinkInput = TULIP2DownlinkInput<GD20WTulip2Channels[number], typeof GD20W_DOWNLINK_FEATURE_FLAGS> | GD20WTULIP2DownlinkExtraInput;
//#endregion
//#region ../parsers/src/devices/GD20W/parser/index.d.ts
declare function useParser$2(): DeviceParser<{
  readonly parserName: "GD-20-W";
  readonly codecs: [TULIP2Codec<[{
    readonly channelId: 0;
    readonly name: "channel0";
    readonly start: 0;
    readonly end: 12;
  }, {
    readonly channelId: 1;
    readonly name: "channel1";
    readonly start: -1.013;
    readonly end: 10.987;
  }, {
    readonly channelId: 2;
    readonly name: "channel2";
    readonly start: 0;
    readonly end: 85.7879104614;
  }, {
    readonly channelId: 3;
    readonly name: "channel3";
    readonly start: -1.013;
    readonly end: 14.7351512909;
  }, {
    readonly channelId: 4;
    readonly name: "channel4";
    readonly start: 0;
    readonly end: 15.7481508255;
  }, {
    readonly channelId: 5;
    readonly name: "channel5";
    readonly start: -40;
    readonly end: 80;
  }], "GD-20-W", {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "channel0";
      readonly start: 0;
      readonly end: 12;
    }, {
      readonly channelId: 1;
      readonly name: "channel1";
      readonly start: -1.013;
      readonly end: 10.987;
    }, {
      readonly channelId: 2;
      readonly name: "channel2";
      readonly start: 0;
      readonly end: 85.7879104614;
    }, {
      readonly channelId: 3;
      readonly name: "channel3";
      readonly start: -1.013;
      readonly end: 14.7351512909;
    }, {
      readonly channelId: 4;
      readonly name: "channel4";
      readonly start: 0;
      readonly end: 15.7481508255;
    }, {
      readonly channelId: 5;
      readonly name: "channel5";
      readonly start: -40;
      readonly end: 80;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurements: {
          channels: {
            channelId: 0 | 1 | 2 | 3 | 4 | 5;
            channelName: "channel0" | "channel1" | "channel2" | "channel3" | "channel4" | "channel5";
            value: number;
          }[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    2: Handler<[{
      readonly channelId: 0;
      readonly name: "channel0";
      readonly start: 0;
      readonly end: 12;
    }, {
      readonly channelId: 1;
      readonly name: "channel1";
      readonly start: -1.013;
      readonly end: 10.987;
    }, {
      readonly channelId: 2;
      readonly name: "channel2";
      readonly start: 0;
      readonly end: 85.7879104614;
    }, {
      readonly channelId: 3;
      readonly name: "channel3";
      readonly start: -1.013;
      readonly end: 14.7351512909;
    }, {
      readonly channelId: 4;
      readonly name: "channel4";
      readonly start: 0;
      readonly end: 15.7481508255;
    }, {
      readonly channelId: 5;
      readonly name: "channel5";
      readonly start: -40;
      readonly end: 80;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurements: {
          channels: {
            channelId: 0 | 1 | 2 | 3 | 4 | 5;
            channelName: "channel0" | "channel1" | "channel2" | "channel3" | "channel4" | "channel5";
            value: number;
          }[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    3: Handler<[{
      readonly channelId: 0;
      readonly name: "channel0";
      readonly start: 0;
      readonly end: 12;
    }, {
      readonly channelId: 1;
      readonly name: "channel1";
      readonly start: -1.013;
      readonly end: 10.987;
    }, {
      readonly channelId: 2;
      readonly name: "channel2";
      readonly start: 0;
      readonly end: 85.7879104614;
    }, {
      readonly channelId: 3;
      readonly name: "channel3";
      readonly start: -1.013;
      readonly end: 14.7351512909;
    }, {
      readonly channelId: 4;
      readonly name: "channel4";
      readonly start: 0;
      readonly end: 15.7481508255;
    }, {
      readonly channelId: 5;
      readonly name: "channel5";
      readonly start: -40;
      readonly end: 80;
    }], {
      data: {
        configurationId: number;
        messageType: 3;
        processAlarms: {
          channelId: 0 | 1 | 2 | 3 | 4 | 5;
          channelName: "channel0" | "channel1" | "channel2" | "channel3" | "channel4" | "channel5";
          alarmType: 0 | 1 | 2 | 3 | 4 | 5;
          alarmTypeName: "low threshold" | "high threshold" | "falling slope" | "rising slope" | "low threshold with delay" | "high threshold with delay";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          value: number;
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "channel0";
      readonly start: 0;
      readonly end: 12;
    }, {
      readonly channelId: 1;
      readonly name: "channel1";
      readonly start: -1.013;
      readonly end: 10.987;
    }, {
      readonly channelId: 2;
      readonly name: "channel2";
      readonly start: 0;
      readonly end: 85.7879104614;
    }, {
      readonly channelId: 3;
      readonly name: "channel3";
      readonly start: -1.013;
      readonly end: 14.7351512909;
    }, {
      readonly channelId: 4;
      readonly name: "channel4";
      readonly start: 0;
      readonly end: 15.7481508255;
    }, {
      readonly channelId: 5;
      readonly name: "channel5";
      readonly start: -40;
      readonly end: 80;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        sensorTechnicalAlarms: {
          channelId: 0 | 1 | 2 | 3 | 4 | 5;
          channelName: "channel0" | "channel1" | "channel2" | "channel3" | "channel4" | "channel5";
          alarmType: 0 | 1 | 3 | 4 | 5 | 6 | 7 | 10;
          alarmDescription: string;
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "channel0";
      readonly start: 0;
      readonly end: 12;
    }, {
      readonly channelId: 1;
      readonly name: "channel1";
      readonly start: -1.013;
      readonly end: 10.987;
    }, {
      readonly channelId: 2;
      readonly name: "channel2";
      readonly start: 0;
      readonly end: 85.7879104614;
    }, {
      readonly channelId: 3;
      readonly name: "channel3";
      readonly start: -1.013;
      readonly end: 14.7351512909;
    }, {
      readonly channelId: 4;
      readonly name: "channel4";
      readonly start: 0;
      readonly end: 15.7481508255;
    }, {
      readonly channelId: 5;
      readonly name: "channel5";
      readonly start: -40;
      readonly end: 80;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarms: {
          alarmType: 0 | 2 | 3 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15;
          alarmDescription: string;
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    6: Handler<[{
      readonly channelId: 0;
      readonly name: "channel0";
      readonly start: 0;
      readonly end: 12;
    }, {
      readonly channelId: 1;
      readonly name: "channel1";
      readonly start: -1.013;
      readonly end: 10.987;
    }, {
      readonly channelId: 2;
      readonly name: "channel2";
      readonly start: 0;
      readonly end: 85.7879104614;
    }, {
      readonly channelId: 3;
      readonly name: "channel3";
      readonly start: -1.013;
      readonly end: 14.7351512909;
    }, {
      readonly channelId: 4;
      readonly name: "channel4";
      readonly start: 0;
      readonly end: 15.7481508255;
    }, {
      readonly channelId: 5;
      readonly name: "channel5";
      readonly start: -40;
      readonly end: 80;
    }], {
      data: {
        configurationId: number;
        messageType: 6;
        configurationStatus: {
          status: number;
          statusDescription: "configuration successful" | "configuration rejected" | "command failed" | "configuration discarded" | "command success";
          commandType: 4;
          mainConfiguration: {
            acquisitionTimeAlarmsOff: number | "unauthorized";
            publicationTimeFactorAlarmsOff: number | "unauthorized";
            acquisitionTimeAlarmsOn: number | "unauthorized";
            publicationTimeFactorAlarmsOn: number | "unauthorized";
          };
        } | {
          status: number;
          statusDescription: "configuration successful" | "configuration rejected" | "command failed" | "configuration discarded" | "command success";
          commandType: number;
          channelConfiguration: {
            sensorOrChannelId: number;
            deadBand: number;
            alarm1Threshold?: number | undefined;
            alarm2Threshold?: number | undefined;
            alarm3Slope?: number | undefined;
            alarm4Slope?: number | undefined;
            alarm5Threshold?: number | undefined;
            alarm5Period?: number | undefined;
            alarm6Threshold?: number | undefined;
            alarm6Period?: number | undefined;
          };
        };
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "channel0";
      readonly start: 0;
      readonly end: 12;
    }, {
      readonly channelId: 1;
      readonly name: "channel1";
      readonly start: -1.013;
      readonly end: 10.987;
    }, {
      readonly channelId: 2;
      readonly name: "channel2";
      readonly start: 0;
      readonly end: 85.7879104614;
    }, {
      readonly channelId: 3;
      readonly name: "channel3";
      readonly start: -1.013;
      readonly end: 14.7351512909;
    }, {
      readonly channelId: 4;
      readonly name: "channel4";
      readonly start: 0;
      readonly end: 15.7481508255;
    }, {
      readonly channelId: 5;
      readonly name: "channel5";
      readonly start: -40;
      readonly end: 80;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceIdentification: {
          productId: 21;
          productSubId: 64;
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
          serialNumber: string;
          channels: {
            channel0: {
              measurandId: 1 | 3 | 4 | 23 | 24 | 25;
              measurand: "Temperature" | "Density" | "Density (gauge pressure at 20 °C)" | "Density (absolute pressure at 20 °C)" | "Pressure gauge" | "Pressure absolute";
              unitId: 1 | 2 | 3 | 7 | 10 | 12 | 13 | 14 | 17 | 110 | 115;
              unit: "°C" | "°F" | "K" | "bar" | "Pa" | "kPa" | "MPa" | "N/cm²" | "kg/m³" | "g/l" | "Psi";
            };
            channel1: {
              measurandId: 1 | 3 | 4 | 23 | 24 | 25;
              measurand: "Temperature" | "Density" | "Density (gauge pressure at 20 °C)" | "Density (absolute pressure at 20 °C)" | "Pressure gauge" | "Pressure absolute";
              unitId: 1 | 2 | 3 | 7 | 10 | 12 | 13 | 14 | 17 | 110 | 115;
              unit: "°C" | "°F" | "K" | "bar" | "Pa" | "kPa" | "MPa" | "N/cm²" | "kg/m³" | "g/l" | "Psi";
            };
            channel2: {
              measurandId: 1 | 3 | 4 | 23 | 24 | 25;
              measurand: "Temperature" | "Density" | "Density (gauge pressure at 20 °C)" | "Density (absolute pressure at 20 °C)" | "Pressure gauge" | "Pressure absolute";
              unitId: 1 | 2 | 3 | 7 | 10 | 12 | 13 | 14 | 17 | 110 | 115;
              unit: "°C" | "°F" | "K" | "bar" | "Pa" | "kPa" | "MPa" | "N/cm²" | "kg/m³" | "g/l" | "Psi";
            };
            channel3: {
              measurandId: 1 | 3 | 4 | 23 | 24 | 25;
              measurand: "Temperature" | "Density" | "Density (gauge pressure at 20 °C)" | "Density (absolute pressure at 20 °C)" | "Pressure gauge" | "Pressure absolute";
              unitId: 1 | 2 | 3 | 7 | 10 | 12 | 13 | 14 | 17 | 110 | 115;
              unit: "°C" | "°F" | "K" | "bar" | "Pa" | "kPa" | "MPa" | "N/cm²" | "kg/m³" | "g/l" | "Psi";
            };
            channel4: {
              measurandId: 1 | 3 | 4 | 23 | 24 | 25;
              measurand: "Temperature" | "Density" | "Density (gauge pressure at 20 °C)" | "Density (absolute pressure at 20 °C)" | "Pressure gauge" | "Pressure absolute";
              unitId: 1 | 2 | 3 | 7 | 10 | 12 | 13 | 14 | 17 | 110 | 115;
              unit: "°C" | "°F" | "K" | "bar" | "Pa" | "kPa" | "MPa" | "N/cm²" | "kg/m³" | "g/l" | "Psi";
            };
            channel5: {
              measurandId: 1 | 3 | 4 | 23 | 24 | 25;
              measurand: "Temperature" | "Density" | "Density (gauge pressure at 20 °C)" | "Density (absolute pressure at 20 °C)" | "Pressure gauge" | "Pressure absolute";
              unitId: 1 | 2 | 3 | 7 | 10 | 12 | 13 | 14 | 17 | 110 | 115;
              unit: "°C" | "°F" | "K" | "bar" | "Pa" | "kPa" | "MPa" | "N/cm²" | "kg/m³" | "g/l" | "Psi";
            };
          };
          gasMixtures: {
            SF6: number;
            N2: number;
            CF4: number;
            O2: number;
            C02: number;
            Novec4710: number;
            He: number;
            Ar: number;
          };
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "channel0";
      readonly start: 0;
      readonly end: 12;
    }, {
      readonly channelId: 1;
      readonly name: "channel1";
      readonly start: -1.013;
      readonly end: 10.987;
    }, {
      readonly channelId: 2;
      readonly name: "channel2";
      readonly start: 0;
      readonly end: 85.7879104614;
    }, {
      readonly channelId: 3;
      readonly name: "channel3";
      readonly start: -1.013;
      readonly end: 14.7351512909;
    }, {
      readonly channelId: 4;
      readonly name: "channel4";
      readonly start: 0;
      readonly end: 15.7481508255;
    }, {
      readonly channelId: 5;
      readonly name: "channel5";
      readonly start: -40;
      readonly end: 80;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        batteryLevelIndicator: {
          restartedSinceLastKeepAlive: boolean;
          batteryLevelPercent: number;
          batteryLevelCalculationError: boolean;
          batteryPresent: boolean;
        };
      };
      warnings?: string[] | undefined;
    }>;
    9: Handler<[{
      readonly channelId: 0;
      readonly name: "channel0";
      readonly start: 0;
      readonly end: 12;
    }, {
      readonly channelId: 1;
      readonly name: "channel1";
      readonly start: -1.013;
      readonly end: 10.987;
    }, {
      readonly channelId: 2;
      readonly name: "channel2";
      readonly start: 0;
      readonly end: 85.7879104614;
    }, {
      readonly channelId: 3;
      readonly name: "channel3";
      readonly start: -1.013;
      readonly end: 14.7351512909;
    }, {
      readonly channelId: 4;
      readonly name: "channel4";
      readonly start: 0;
      readonly end: 15.7481508255;
    }, {
      readonly channelId: 5;
      readonly name: "channel5";
      readonly start: -40;
      readonly end: 80;
    }], {
      data: {
        configurationId: number;
        messageType: 9;
        channelRanges: {
          channel0: {
            min: number;
            max: number;
          };
          channel1: {
            min: number;
            max: number;
          };
          channel2: {
            min: number;
            max: number;
          };
          channel3: {
            min: number;
            max: number;
          };
          channel4: {
            min: number;
            max: number;
          };
          channel5: {
            min: number;
            max: number;
          };
        };
      };
      warnings?: string[] | undefined;
    }>;
  }, EncoderFactory<GD20WTulip2DownlinkInput>, MultipleEncoderFactory<GD20WTulip2DownlinkInput>>];
}>;
//#endregion
//#region ../parsers/src/devices/NETRIS1/schema/tulip2.d.ts
declare function createNETRIS1TULIP2GetConfigurationSchema(): v.ObjectSchema<{
  deviceAction: v.LiteralSchema<"getConfiguration", undefined>;
} & {
  readonly mainConfiguration: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  readonly processAlarmConfiguration: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
} & {
  configurationId: ReturnType<typeof createConfigurationIdSchema>;
} & {
  byteLimit: ReturnType<() => v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.IntegerAction<number, undefined>]>, undefined>>;
}, undefined>;
declare function createNETRIS1TULIP2ResetBatterySchema(): v.ObjectSchema<{
  deviceAction: v.LiteralSchema<"resetBatteryIndicator", undefined>;
} & Record<never, never> & {
  configurationId: ReturnType<typeof createConfigurationIdSchema>;
}, undefined>;
type NETRIS1TULIP2GetConfigurationAction = v.InferOutput<ReturnType<typeof createNETRIS1TULIP2GetConfigurationSchema>>;
type NETRIS1TULIP2ResetBatteryAction = v.InferOutput<ReturnType<typeof createNETRIS1TULIP2ResetBatterySchema>>;
type NETRIS1TULIP2DownlinkExtraInput = NETRIS1TULIP2GetConfigurationAction | NETRIS1TULIP2ResetBatteryAction;
//#endregion
//#region ../parsers/src/devices/NETRIS1/parser/tulip2/constants.d.ts
declare function createTULIP2NETRIS1Channels(): [{
  readonly channelId: 0;
  readonly name: "measurement";
  readonly start: number;
  readonly end: number;
}];
declare const NETRIS1_DOWNLINK_FEATURE_FLAGS: {
  readonly maxConfigId: 31;
  readonly channelsStartupTime: false;
  readonly channelsMeasureOffset: false;
  readonly mainConfigBLE: false;
  readonly mainConfigSingleMeasuringRate: false;
};
type NETRIS1Tulip2Channels = ReturnType<typeof createTULIP2NETRIS1Channels>;
type NETRIS1Tulip2DownlinkInput = TULIP2DownlinkInput<NETRIS1Tulip2Channels[number], typeof NETRIS1_DOWNLINK_FEATURE_FLAGS> | NETRIS1TULIP2DownlinkExtraInput;
//#endregion
//#region ../parsers/src/devices/NETRIS1/parser/index.d.ts
declare function useParser$3(): DeviceParser<{
  readonly parserName: "NETRIS1";
  readonly codecs: [TULIP2Codec<[{
    readonly channelId: 0;
    readonly name: "measurement";
    readonly start: number;
    readonly end: number;
  }], "NETRIS1", {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: [{
            channelId: 0;
            channelName: "measurement";
            value: number;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    2: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: [{
            channelId: 0;
            channelName: "measurement";
            value: number;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    3: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 3;
        processAlarms: ({
          sensorId: 0;
          channelId: 0;
          channelName: "measurement";
          event: 0;
          eventName: "triggered";
          alarmFlags: {
            lowThreshold: boolean;
            highThreshold: boolean;
            fallingSlope: boolean;
            risingSlope: boolean;
            lowThresholdDelay: boolean;
            highThresholdDelay: boolean;
          };
          value: number;
        } | {
          sensorId: 0;
          channelId: 0;
          channelName: "measurement";
          event: 1;
          eventName: "disappeared";
          alarmFlags: {
            lowThreshold: boolean;
            highThreshold: boolean;
            fallingSlope: boolean;
            risingSlope: boolean;
            lowThresholdDelay: boolean;
            highThresholdDelay: boolean;
          };
          value: number;
        })[];
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: [{
          sensorId: 0;
          alarmType: number;
          alarmTypeNames: ("SSM communication error" | "SSM identity error")[];
        }];
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarm: {
          alarmType: number;
          alarmTypeNames: ("low battery error" | "duty cycle alarm" | "configuration error")[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceInformation: {
          productId: 15 | 16 | 17;
          productIdName: "NETRIS1" | "NETRIS©1 BLE+LPWAN" | "NETRIS©1 BLE";
          sensorId: 0 | 1 | 2;
          sensorIdName: "TRW" | "RTD" | "E-Signal";
          productSubId: number;
          productSubIdName: string;
          lpwanId: number;
          lpwanIdName: string;
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
          serialNumber: string;
          measurementRangeStart: number;
          measurementRangeEnd: number;
          measurand: 1 | 13 | 14 | 18;
          measurandName: "Temperature" | "Current" | "Voltage" | "Relative";
          unit: 1 | 2 | 100 | 88 | 90;
          unitName: "°C" | "°F" | "V" | "mA" | "%";
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          batteryLevelNewEvent: boolean;
          batteryLevelPercent: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
    10: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 10;
        channelFailureAlarm: {
          sensorId: 0;
          channelId: 0;
          channelName: "measurement";
          alarmType: number;
          alarmTypeNames: ("MV_STAT_ERROR" | "MV_STAT_WARNING" | "MV_STAT_LIM_HI" | "MV_STAT_LIM_LO" | "MV_STAT_WARNING_2")[];
        };
      };
      warnings?: string[] | undefined;
    }>;
  }, EncoderFactory<NETRIS1Tulip2DownlinkInput>, MultipleEncoderFactory<NETRIS1Tulip2DownlinkInput>>, TULIP3Codec<"NETRIS1TULIP3Codec", TULIP3UplinkOutput<{
    readonly deviceName: "NETRIS1";
    readonly deviceAlarmConfig: {
      readonly communicationModuleAlarms: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly sensorAlarms: {
        sensorCommunicationError: 1;
        sensorInternalError: 4;
        sensorIdentificationError: 32768;
      };
      readonly sensorChannelAlarms: {
        readonly shortCondition: 1;
        readonly openCondition: 2;
        readonly outOfMinMeasurementRange: 4;
        readonly outOfMaxMeasurementRange: 8;
        readonly outOfMinPhysicalSensorLimit: 16;
        readonly outOfMaxPhysicalSensorLimit: 32;
      };
    };
    readonly sensorChannelConfig: {
      readonly alarmFlags: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly enableBleAdvertising: true;
          readonly measuringPeriodAlarmOff: true;
          readonly transmissionRateAlarmOff: true;
          readonly measuringPeriodAlarmOn: true;
          readonly transmissionRateAlarmOn: true;
          readonly underVoltageThreshold: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly productId: true;
          readonly productSubId: true;
          readonly channelPlan: true;
          readonly connectedSensors: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly communicationModuleSpecificConfigurationRegisters: {};
        readonly communicationModuleSpecificIdentificationRegisters: {};
      };
      readonly sensor1: {
        readonly alarmFlags: {
          sensorCommunicationError: 1;
          sensorInternalError: 4;
          sensorIdentificationError: 32768;
        };
        readonly registerConfig: {
          readonly tulip3ConfigurationRegisters: {
            readonly samplingChannels: true;
            readonly bootTime: true;
          };
          readonly tulip3IdentificationRegisters: {
            readonly sensorType: true;
            readonly existingChannels: true;
            readonly firmwareVersion: true;
            readonly hardwareVersion: true;
            readonly productionDate: true;
            readonly serialNumberPart1: true;
            readonly serialNumberPart2: true;
          };
          readonly sensorSpecificConfigurationRegisters: {};
          readonly sensorSpecificIdentificationRegisters: {};
        };
        readonly channel1: {
          readonly channelName: "measurement";
          readonly start: 0;
          readonly end: 10;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
          readonly availableMeasurands: ["Temperature", "Current", "Voltage", "Resistance"];
          readonly availableUnits: ["°C", "°F", "V", "mA", "%"];
          readonly alarmFlags: {
            readonly shortCondition: 1;
            readonly openCondition: 2;
            readonly outOfMinMeasurementRange: 4;
            readonly outOfMaxMeasurementRange: 8;
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
      };
    };
  }>, "measurement", (input: TULIP3DownlinkActionSingle<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly enableBleAdvertising: true;
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorInternalError: 4;
        sensorIdentificationError: 32768;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
          readonly bootTime: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "measurement";
        readonly start: 0;
        readonly end: 10;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Temperature", "Current", "Voltage", "Resistance"];
        readonly availableUnits: ["°C", "°F", "V", "mA", "%"];
        readonly alarmFlags: {
          readonly shortCondition: 1;
          readonly openCondition: 2;
          readonly outOfMinMeasurementRange: 4;
          readonly outOfMaxMeasurementRange: 8;
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => DownlinkOutput, (input: TULIP3DownlinkActionMultiple<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly enableBleAdvertising: true;
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorInternalError: 4;
        sensorIdentificationError: 32768;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
          readonly bootTime: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "measurement";
        readonly start: 0;
        readonly end: 10;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Temperature", "Current", "Voltage", "Resistance"];
        readonly availableUnits: ["°C", "°F", "V", "mA", "%"];
        readonly alarmFlags: {
          readonly shortCondition: 1;
          readonly openCondition: 2;
          readonly outOfMinMeasurementRange: 4;
          readonly outOfMaxMeasurementRange: 8;
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => MultipleDownlinkOutput>];
}>;
//#endregion
//#region ../parsers/src/devices/NETRIS2/parser/tulip2/constants.d.ts
declare function createTULIP2NETRIS2Channels(): [{
  readonly channelId: 0;
  readonly name: "Electrical current1";
  readonly start: number;
  readonly end: number;
  readonly adjustMeasurementRangeDisallowed: true;
}, {
  readonly channelId: 1;
  readonly name: "Electrical current2";
  readonly start: number;
  readonly end: number;
  readonly adjustMeasurementRangeDisallowed: true;
}];
declare const NETRIS2_DOWNLINK_FEATURE_FLAGS: {
  readonly maxConfigId: 31;
  readonly channelsStartupTime: true;
  readonly channelsMeasureOffset: true;
};
type Netris2Tulip2Channels = ReturnType<typeof createTULIP2NETRIS2Channels>;
type Netris2Tulip2DownlinkInput = TULIP2DownlinkInput<Netris2Tulip2Channels[number], typeof NETRIS2_DOWNLINK_FEATURE_FLAGS> | {
  deviceAction: 'resetBatteryIndicator';
  configurationId?: number;
};
//#endregion
//#region ../parsers/src/devices/NETRIS2/parser/index.d.ts
declare function useParser$4(): DeviceParser<{
  readonly parserName: "NETRIS2";
  readonly codecs: [TULIP2Codec<[{
    readonly channelId: 0;
    readonly name: "Electrical current1";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }, {
    readonly channelId: 1;
    readonly name: "Electrical current2";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }], "NETRIS2", {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "Electrical current1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "Electrical current2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: [{
            channelId: 0;
            channelName: "Electrical current1";
            value: number;
          }] | [{
            channelId: 0;
            channelName: "Electrical current1";
            value: number;
          }, {
            channelId: 1;
            channelName: "Electrical current2";
            value: number;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    2: Handler<[{
      readonly channelId: 0;
      readonly name: "Electrical current1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "Electrical current2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: [{
            channelId: 0;
            channelName: "Electrical current1";
            value: number;
          }] | [{
            channelId: 0;
            channelName: "Electrical current1";
            value: number;
          }, {
            channelId: 1;
            channelName: "Electrical current2";
            value: number;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    3: Handler<[{
      readonly channelId: 0;
      readonly name: "Electrical current1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "Electrical current2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 3;
        processAlarms: ({
          channelId: 0;
          channelName: "Electrical current1";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          alarmType: 0 | 1 | 2 | 3 | 4 | 5;
          alarmTypeName: "low threshold" | "high threshold" | "falling slope" | "rising slope" | "low threshold with delay" | "high threshold with delay";
          value: number;
        } | {
          channelId: 1;
          channelName: "Electrical current2";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          alarmType: 0 | 1 | 2 | 3 | 4 | 5;
          alarmTypeName: "low threshold" | "high threshold" | "falling slope" | "rising slope" | "low threshold with delay" | "high threshold with delay";
          value: number;
        })[];
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "Electrical current1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "Electrical current2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: ({
          channelId: 0;
          channelName: "Electrical current1";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          causeOfFailure: number;
          causeOfFailureName: "no alarm" | "open condition" | "short condition" | "saturated low" | "saturated high" | "ADC communication error";
        } | {
          channelId: 1;
          channelName: "Electrical current2";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          causeOfFailure: number;
          causeOfFailureName: "no alarm" | "open condition" | "short condition" | "saturated low" | "saturated high" | "ADC communication error";
        })[];
      };
      warnings?: string[] | undefined;
    }>;
    6: Handler<[{
      readonly channelId: 0;
      readonly name: "Electrical current1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "Electrical current2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 6;
        configurationStatus: {
          statusId: 32 | 48 | 112 | 96;
          status: "configuration successful" | "configuration rejected" | "command successful" | "command failed";
        };
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "Electrical current1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "Electrical current2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        radioUnitIdentification: {
          productId: 14;
          productIdName: "NETRIS2";
          productSubId: 0;
          productSubIdName: "standard";
          radioUnitModemFirmwareVersion: string;
          radioUnitModemHardwareVersion: string;
          radioUnitFirmwareVersion: string;
          radioUnitHardwareVersion: string;
          serialNumber: string;
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "Electrical current1";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }, {
      readonly channelId: 1;
      readonly name: "Electrical current2";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          numberOfMeasurements: number;
          numberOfTransmissions: number;
          batteryResetSinceLastKeepAlive: boolean;
          estimatedBatteryPercent: number;
          batteryCalculationError: boolean;
          radioUnitTemperatureLevel_C: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
  }, EncoderFactory<Netris2Tulip2DownlinkInput>, MultipleEncoderFactory<Netris2Tulip2DownlinkInput>>, TULIP3Codec<"NETRIS2TULIP3Codec", TULIP3UplinkOutput<{
    readonly deviceName: "NETRIS2";
    readonly deviceAlarmConfig: {
      readonly communicationModuleAlarms: {
        readonly cmChipLowTemperature: 2;
        readonly cmChipHighTemperature: 4;
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
        readonly highVoltage: 64;
      };
      readonly sensorAlarms: {
        sensorCommunicationError: 1;
        sensorInternalError: 4;
        sensorIdentificationError: 32768;
      };
      readonly sensorChannelAlarms: {
        readonly shortCondition: 1;
        readonly openCondition: 2;
        readonly outOfMinMeasurementRange: 4;
        readonly outOfMaxMeasurementRange: 8;
        readonly outOfMinPhysicalSensorLimit: 16;
        readonly outOfMaxPhysicalSensorLimit: 32;
      };
    };
    readonly sensorChannelConfig: {
      readonly alarmFlags: {
        readonly cmChipLowTemperature: 2;
        readonly cmChipHighTemperature: 4;
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
        readonly highVoltage: 64;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly measuringPeriodAlarmOff: true;
          readonly measuringPeriodAlarmOn: true;
          readonly transmissionRateAlarmOff: true;
          readonly transmissionRateAlarmOn: true;
          readonly overVoltageThreshold: true;
          readonly underVoltageThreshold: true;
          readonly overTemperatureCmChip: true;
          readonly underTemperatureCmChip: true;
          readonly downlinkAnswerTimeout: true;
          readonly fetchAdditionalDownlinkTimeInterval: true;
          readonly enableBleAdvertising: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly productId: true;
          readonly productSubId: true;
          readonly channelPlan: true;
          readonly connectedSensors: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly communicationModuleSpecificConfigurationRegisters: {};
        readonly communicationModuleSpecificIdentificationRegisters: {};
      };
      readonly sensor1: {
        readonly alarmFlags: {
          sensorCommunicationError: 1;
          sensorInternalError: 4;
          sensorIdentificationError: 32768;
        };
        readonly registerConfig: {
          readonly tulip3ConfigurationRegisters: {
            readonly samplingChannels: true;
            readonly bootTime: true;
            readonly communicationTimeout: true;
            readonly communicationRetryCount: true;
          };
          readonly tulip3IdentificationRegisters: {
            readonly sensorType: true;
            readonly existingChannels: true;
            readonly firmwareVersion: true;
            readonly hardwareVersion: true;
            readonly productionDate: true;
            readonly serialNumberPart1: true;
            readonly serialNumberPart2: true;
          };
          readonly sensorSpecificConfigurationRegisters: {};
          readonly sensorSpecificIdentificationRegisters: {};
        };
        readonly channel1: {
          readonly channelName: "Electrical current1";
          readonly start: 4;
          readonly end: 20;
          readonly measurementTypes: ["float - IEEE754", "uint16 - TULIP scale 2500 - 12500"];
          readonly availableMeasurands: ["Current"];
          readonly availableUnits: ["mA"];
          readonly adjustMeasurementRangeDisallowed: true;
          readonly alarmFlags: {
            readonly shortCondition: 1;
            readonly openCondition: 2;
            readonly outOfMinMeasurementRange: 4;
            readonly outOfMaxMeasurementRange: 8;
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly protocolDataType: true;
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
      };
      readonly sensor2: {
        readonly alarmFlags: {
          sensorCommunicationError: 1;
          sensorInternalError: 4;
          sensorIdentificationError: 32768;
        };
        readonly registerConfig: {
          readonly tulip3ConfigurationRegisters: {
            readonly samplingChannels: true;
            readonly bootTime: true;
            readonly communicationTimeout: true;
            readonly communicationRetryCount: true;
          };
          readonly tulip3IdentificationRegisters: {
            readonly sensorType: true;
            readonly existingChannels: true;
            readonly firmwareVersion: true;
            readonly hardwareVersion: true;
            readonly productionDate: true;
            readonly serialNumberPart1: true;
            readonly serialNumberPart2: true;
          };
          readonly sensorSpecificConfigurationRegisters: {};
          readonly sensorSpecificIdentificationRegisters: {};
        };
        readonly channel1: {
          readonly channelName: "Electrical current2";
          readonly start: 4;
          readonly end: 20;
          readonly measurementTypes: ["float - IEEE754", "uint16 - TULIP scale 2500 - 12500"];
          readonly availableMeasurands: ["Current"];
          readonly availableUnits: ["mA"];
          readonly adjustMeasurementRangeDisallowed: true;
          readonly alarmFlags: {
            readonly shortCondition: 1;
            readonly openCondition: 2;
            readonly outOfMinMeasurementRange: 4;
            readonly outOfMaxMeasurementRange: 8;
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly protocolDataType: true;
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
      };
    };
  }>, never, (input: TULIP3DownlinkActionSingle<{
    readonly alarmFlags: {
      readonly cmChipLowTemperature: 2;
      readonly cmChipHighTemperature: 4;
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
      readonly highVoltage: 64;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly measuringPeriodAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOff: true;
        readonly transmissionRateAlarmOn: true;
        readonly overVoltageThreshold: true;
        readonly underVoltageThreshold: true;
        readonly overTemperatureCmChip: true;
        readonly underTemperatureCmChip: true;
        readonly downlinkAnswerTimeout: true;
        readonly fetchAdditionalDownlinkTimeInterval: true;
        readonly enableBleAdvertising: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorInternalError: 4;
        sensorIdentificationError: 32768;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
          readonly bootTime: true;
          readonly communicationTimeout: true;
          readonly communicationRetryCount: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "Electrical current1";
        readonly start: 4;
        readonly end: 20;
        readonly measurementTypes: ["float - IEEE754", "uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Current"];
        readonly availableUnits: ["mA"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly shortCondition: 1;
          readonly openCondition: 2;
          readonly outOfMinMeasurementRange: 4;
          readonly outOfMaxMeasurementRange: 8;
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly protocolDataType: true;
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
    readonly sensor2: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorInternalError: 4;
        sensorIdentificationError: 32768;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
          readonly bootTime: true;
          readonly communicationTimeout: true;
          readonly communicationRetryCount: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "Electrical current2";
        readonly start: 4;
        readonly end: 20;
        readonly measurementTypes: ["float - IEEE754", "uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Current"];
        readonly availableUnits: ["mA"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly shortCondition: 1;
          readonly openCondition: 2;
          readonly outOfMinMeasurementRange: 4;
          readonly outOfMaxMeasurementRange: 8;
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly protocolDataType: true;
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => DownlinkOutput, (input: TULIP3DownlinkActionMultiple<{
    readonly alarmFlags: {
      readonly cmChipLowTemperature: 2;
      readonly cmChipHighTemperature: 4;
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
      readonly highVoltage: 64;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly measuringPeriodAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOff: true;
        readonly transmissionRateAlarmOn: true;
        readonly overVoltageThreshold: true;
        readonly underVoltageThreshold: true;
        readonly overTemperatureCmChip: true;
        readonly underTemperatureCmChip: true;
        readonly downlinkAnswerTimeout: true;
        readonly fetchAdditionalDownlinkTimeInterval: true;
        readonly enableBleAdvertising: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorInternalError: 4;
        sensorIdentificationError: 32768;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
          readonly bootTime: true;
          readonly communicationTimeout: true;
          readonly communicationRetryCount: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "Electrical current1";
        readonly start: 4;
        readonly end: 20;
        readonly measurementTypes: ["float - IEEE754", "uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Current"];
        readonly availableUnits: ["mA"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly shortCondition: 1;
          readonly openCondition: 2;
          readonly outOfMinMeasurementRange: 4;
          readonly outOfMaxMeasurementRange: 8;
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly protocolDataType: true;
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
    readonly sensor2: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorInternalError: 4;
        sensorIdentificationError: 32768;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
          readonly bootTime: true;
          readonly communicationTimeout: true;
          readonly communicationRetryCount: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "Electrical current2";
        readonly start: 4;
        readonly end: 20;
        readonly measurementTypes: ["float - IEEE754", "uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Current"];
        readonly availableUnits: ["mA"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly shortCondition: 1;
          readonly openCondition: 2;
          readonly outOfMinMeasurementRange: 4;
          readonly outOfMaxMeasurementRange: 8;
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly protocolDataType: true;
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => MultipleDownlinkOutput>];
}>;
//#endregion
//#region ../parsers/src/devices/NETRISF/schema/tulip2.d.ts
declare function createNetrisFTULIP2GetConfigurationSchema(): v.ObjectSchema<{
  deviceAction: v.LiteralSchema<"getConfiguration", undefined>;
} & {
  readonly mainConfiguration: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  readonly channel0: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<true, undefined>, v.ObjectSchema<{
    readonly alarms: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
    readonly measureOffset: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  }, undefined>], undefined>, undefined>;
  readonly channel1: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<true, undefined>, v.ObjectSchema<{
    readonly alarms: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
    readonly measureOffset: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  }, undefined>], undefined>, undefined>;
} & {
  configurationId: ReturnType<typeof createConfigurationIdSchema>;
} & {
  byteLimit: ReturnType<() => v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.IntegerAction<number, undefined>]>, undefined>>;
}, undefined>;
type NetrisFTULIP2GetConfigurationAction = v.InferOutput<ReturnType<typeof createNetrisFTULIP2GetConfigurationSchema>>;
type NetrisFTULIP2ResetBatteryAction = v.InferOutput<ReturnType<typeof createDownlinkResetBatteryIndicatorSchema>>;
type NetrisFTULIP2DownlinkExtraInput = NetrisFTULIP2GetConfigurationAction | NetrisFTULIP2ResetBatteryAction;
//#endregion
//#region ../parsers/src/devices/NETRISF/parser/tulip2/channels.d.ts
declare function createNetrisFTULIP2Channels(): [{
  readonly channelId: 0;
  readonly name: "measurement";
  readonly start: number;
  readonly end: number;
}, {
  readonly channelId: 1;
  readonly name: "device temperature";
  readonly start: number;
  readonly end: number;
  readonly adjustMeasurementRangeDisallowed: true;
}];
//#endregion
//#region ../parsers/src/devices/NETRISF/parser/tulip2/constants.d.ts
declare const NETRISF_DOWNLINK_FEATURE_FLAGS: {
  readonly maxConfigId: 31;
  readonly channelsStartupTime: false;
  readonly channelsMeasureOffset: true;
  readonly mainConfigBLE: true;
  readonly mainConfigSingleMeasuringRate: false;
};
type NetrisFTulip2Channels = ReturnType<typeof createNetrisFTULIP2Channels>;
type NetrisFTulip2DownlinkInput = TULIP2DownlinkInput<NetrisFTulip2Channels[number], typeof NETRISF_DOWNLINK_FEATURE_FLAGS> | NetrisFTULIP2DownlinkExtraInput;
//#endregion
//#region ../parsers/src/devices/NETRISF/parser/index.d.ts
declare function useParser$5(): DeviceParser<{
  readonly parserName: "NETRIS_F";
  readonly codecs: [TULIP2Codec<[{
    readonly channelId: 0;
    readonly name: "measurement";
    readonly start: number;
    readonly end: number;
  }, {
    readonly channelId: 1;
    readonly name: "device temperature";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }], "NETRIS_F", {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: {
            channelId: 0 | 1 | 2;
            channelName: "measurement" | "device temperature" | "battery voltage";
            value: number;
          }[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    2: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: {
            channelId: 0 | 1 | 2;
            channelName: "measurement" | "device temperature" | "battery voltage";
            value: number;
          }[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    3: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 3;
        processAlarms: {
          channelId: 0 | 1;
          channelName: "measurement" | "device temperature";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          alarmFlags: {
            lowThreshold: boolean;
            highThreshold: boolean;
            fallingSlope: boolean;
            risingSlope: boolean;
            lowThresholdDelay: boolean;
            highThresholdDelay: boolean;
          };
          value: number;
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: {
          alarmType: 1 | 4 | 32 | 64;
          alarmTypeName: "Punctual sensor error" | "Permanent sensor error" | "strain value out of limit" | "temperature value out of limit";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarm: {
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          alarmType: 0 | 4;
          alarmTypeName: "duty cycle alarm" | "low battery alarm";
          causeOfFailure: number;
          causeOfFailureName: "generic" | "device dependent";
          batteryValue?: number | undefined;
        };
      };
      warnings?: string[] | undefined;
    }>;
    6: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 6;
        configStatus: 2 | 3 | 5 | 6 | 7;
        configStatusName: "configuration rejected" | "command failed" | "configuration discarded" | "command success" | "configuration applied";
        commandResponse?: {
          commandType: 4;
          commandTypeName: "get main configuration";
          commandStatus: 0;
          measurementPeriodNoAlarm: number;
          transmissionMultiplierNoAlarm: number;
          measurementPeriodWithAlarm: number;
          transmissionMultiplierWithAlarm: number;
          bleAdvertisingEnabled: boolean;
        } | {
          commandType: 64;
          commandTypeName: "reset battery indicator";
          commandStatus: 0 | 1;
          resetSuccess: boolean;
        } | {
          commandType: 80 | 81;
          commandTypeName: "get process alarm configuration strain" | "get process alarm configuration temperature";
          commandStatus: 0;
          channel: 0 | 1;
          channelName: "measurement" | "device temperature";
          deadBand: number;
          lowThreshold: boolean;
          lowThresholdValue?: number | undefined;
          highThreshold: boolean;
          highThresholdValue?: number | undefined;
          fallingSlope: boolean;
          fallingSlopeValue?: number | undefined;
          risingSlope: boolean;
          risingSlopeValue?: number | undefined;
          lowThresholdWithDelay: boolean;
          lowThresholdWithDelayValue?: number | undefined;
          lowThresholdWithDelayDelay?: number | undefined;
          highThresholdWithDelay: boolean;
          highThresholdWithDelayValue?: number | undefined;
          highThresholdWithDelayDelay?: number | undefined;
        } | {
          commandType: 97 | 96;
          commandTypeName: "get channel property configuration strain" | "get channel property configuration temperature";
          commandStatus: 0;
          channel: 0 | 1;
          channelName: "measurement" | "device temperature";
          measurementOffset: number;
        } | undefined;
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceInformation: {
          productId: 11;
          productIdName: "NETRIS_F";
          productSubId: 0;
          productSubIdName: "LoRaWAN";
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
          serialNumber: string;
          measurementType: "absolute" | "relative";
          measurementRangeStart: number;
          measurementRangeEnd: number;
          measurementRangeStartDeviceTemperature: number;
          measurementRangeEndDeviceTemperature: number;
          measurementUnit: 45 | 47 | 55 | 56 | 185;
          unitName: "N" | "kN" | "kg" | "g" | "µeps";
          deviceTemperatureUnit: 32 | 33;
          deviceTemperatureUnitName: "°C" | "°F";
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "measurement";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          batteryLevelNewEvent: boolean;
          batteryLevelPercent: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
  }, EncoderFactory<NetrisFTulip2DownlinkInput>, MultipleEncoderFactory<NetrisFTulip2DownlinkInput>>, TULIP3Codec<"NETRIS_FTULIP3Codec", TULIP3UplinkOutput<{
    readonly deviceName: "NETRIS_F";
    readonly deviceAlarmConfig: {
      readonly communicationModuleAlarms: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly sensorAlarms: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly sensorChannelAlarms: {
        readonly outOfMinPhysicalSensorLimit: 16;
        readonly outOfMaxPhysicalSensorLimit: 32;
      };
    };
    readonly sensorChannelConfig: {
      readonly alarmFlags: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly enableBleAdvertising: true;
          readonly measuringPeriodAlarmOff: true;
          readonly transmissionRateAlarmOff: true;
          readonly measuringPeriodAlarmOn: true;
          readonly transmissionRateAlarmOn: true;
          readonly underVoltageThreshold: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly productId: true;
          readonly productSubId: true;
          readonly channelPlan: true;
          readonly connectedSensors: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly communicationModuleSpecificConfigurationRegisters: {};
        readonly communicationModuleSpecificIdentificationRegisters: {};
      };
      readonly sensor1: {
        readonly alarmFlags: {
          sensorCommunicationError: 1;
          sensorBusy: 32768;
          sensorMemoryIntegrity: 16384;
          sensorALUSaturation: 8192;
        };
        readonly registerConfig: {
          readonly tulip3ConfigurationRegisters: {
            readonly samplingChannels: true;
          };
          readonly tulip3IdentificationRegisters: {
            readonly sensorType: true;
            readonly existingChannels: true;
            readonly firmwareVersion: true;
            readonly hardwareVersion: true;
            readonly productionDate: true;
            readonly serialNumberPart1: true;
            readonly serialNumberPart2: true;
          };
          readonly sensorSpecificConfigurationRegisters: {};
          readonly sensorSpecificIdentificationRegisters: {};
        };
        readonly channel1: {
          readonly channelName: "measurement";
          readonly start: -312.5;
          readonly end: 312.5;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
          readonly availableMeasurands: ["Force", "Mass", "Strain"];
          readonly availableUnits: ["N", "daN", "kN", "MN", "kp", "lbf", "ozf", "dyn", "kg", "g", "mg", "lb", "µeps"];
          readonly alarmFlags: {
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
        readonly channel2: {
          readonly channelName: "device temperature";
          readonly start: -45;
          readonly end: 110;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
          readonly availableMeasurands: ["Temperature"];
          readonly availableUnits: ["°C"];
          readonly adjustMeasurementRangeDisallowed: true;
          readonly alarmFlags: {
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
      };
    };
  }>, "measurement", (input: TULIP3DownlinkActionSingle<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly enableBleAdvertising: true;
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "measurement";
        readonly start: -312.5;
        readonly end: 312.5;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Force", "Mass", "Strain"];
        readonly availableUnits: ["N", "daN", "kN", "MN", "kp", "lbf", "ozf", "dyn", "kg", "g", "mg", "lb", "µeps"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
      readonly channel2: {
        readonly channelName: "device temperature";
        readonly start: -45;
        readonly end: 110;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => DownlinkOutput, (input: TULIP3DownlinkActionMultiple<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly enableBleAdvertising: true;
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "measurement";
        readonly start: -312.5;
        readonly end: 312.5;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Force", "Mass", "Strain"];
        readonly availableUnits: ["N", "daN", "kN", "MN", "kp", "lbf", "ozf", "dyn", "kg", "g", "mg", "lb", "µeps"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
      readonly channel2: {
        readonly channelName: "device temperature";
        readonly start: -45;
        readonly end: 110;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => MultipleDownlinkOutput>];
}>;
//#endregion
//#region ../parsers/src/devices/PEU_NETRIS3/parser/tulip2/channels.d.ts
declare function createTULIP2PEUChannels(): [{
  readonly channelId: 0;
  readonly name: "pressure";
  readonly start: number;
  readonly end: number;
}, {
  readonly channelId: 1;
  readonly name: "device temperature";
  readonly start: number;
  readonly end: number;
  readonly adjustMeasurementRangeDisallowed: true;
}];
//#endregion
//#region ../parsers/src/devices/PEU_NETRIS3/parser/tulip2/constants.d.ts
declare const PEU_DOWNLINK_FEATURE_FLAGS: {
  readonly maxConfigId: 31;
  readonly channelsStartupTime: false;
  readonly channelsMeasureOffset: true;
  readonly mainConfigBLE: false;
  readonly mainConfigSingleMeasuringRate: false;
};
type PEUTulip2Channels = ReturnType<typeof createTULIP2PEUChannels>;
type PEUTulip2DownlinkInput = TULIP2DownlinkInput<PEUTulip2Channels[number], typeof PEU_DOWNLINK_FEATURE_FLAGS>;
//#endregion
//#region ../parsers/src/devices/PEU_NETRIS3/parser/index.d.ts
declare function useParser$6(): DeviceParser<{
  readonly parserName: "PEU+NETRIS3";
  readonly codecs: [TULIP2Codec<[{
    readonly channelId: 0;
    readonly name: "pressure";
    readonly start: number;
    readonly end: number;
  }, {
    readonly channelId: 1;
    readonly name: "device temperature";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }], "PEU+NETRIS3", {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: ({
            channelId: 0;
            channelName: "pressure";
            value: number;
          } | {
            channelId: 1;
            channelName: "device temperature";
            value: number;
          })[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    2: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: ({
            channelId: 0;
            channelName: "pressure";
            value: number;
          } | {
            channelId: 1;
            channelName: "device temperature";
            value: number;
          })[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    3: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 3;
        processAlarms: ({
          channelId: 0;
          channelName: "pressure";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          alarmType: 0 | 1 | 2 | 3 | 4 | 5;
          alarmTypeName: "low threshold" | "high threshold" | "falling slope" | "rising slope" | "low threshold with delay" | "high threshold with delay";
          value: number;
        } | {
          channelId: 1;
          channelName: "device temperature";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          alarmType: 0 | 1 | 2 | 3 | 4 | 5;
          alarmTypeName: "low threshold" | "high threshold" | "falling slope" | "rising slope" | "low threshold with delay" | "high threshold with delay";
          value: number;
        })[];
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: {
          alarmType: 0 | 1 | 2 | 3 | 4;
          alarmTypeName: "MV_STAT channel 0" | "MV_STAT channel 1" | "MV_STAT channel 2" | "MV_STAT channel 3" | "STAT_DEV";
          causeOfFailure: number;
          causeOfFailureName: "MV_STAT_ERROR" | "MV_STAT_WARNING" | "STAT_DEV_ERROR" | "STAT_DEV_WARNING" | "STAT_DEV_RESTARTED";
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarm: {
          alarmStatus: number;
          alarmStatusNames: ("duty cycle alarm" | "low battery" | "temperature alarm" | "UART alarm")[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceInformation: {
          productId: 15;
          productIdName: "NETRIS3";
          productSubId: 0 | 1;
          productSubIdName: "LoRaWAN" | "MIOTY";
          sensorDeviceTypeId: number;
          channelConfigurations: [{
            channelId: 0;
            channelName: "pressure";
            measurand: 3 | 4 | 5;
            measurandName: "Pressure (gauge)" | "Pressure (absolute)" | "Pressure (differential)";
            measurementRangeStart: number;
            measurementRangeEnd: number;
            unit: 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 22 | 32 | 21 | 23 | 24 | 25 | 33 | 34;
            unitName: "bar" | "mbar" | "Pa" | "hPa" | "kPa" | "MPa" | "psi" | "lbf/ft²" | "kN/m²" | "N/cm²" | "atm" | "kg/cm²" | "kg/mm²" | "mmHg" | "cmHg" | "inHg" | "mmH2O" | "mH2O" | "inH2O" | "ftH2O" | "µbar" | "µmHg";
          }, {
            channelId: 1;
            channelName: "device temperature";
            measurand: 1;
            measurandName: "Temperature";
            measurementRangeStart: number;
            measurementRangeEnd: number;
            unit: 1 | 2 | 3 | 4;
            unitName: "°C" | "°F" | "K" | "°R";
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          numberOfMeasurements: number;
          numberOfTransmissions: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
    9: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 9;
        extendedDeviceInformation: {
          optionalFieldsMask: number;
          wikaSensorSerialNumber?: string | undefined;
          sensorLUID?: number | undefined;
          sensorHardwareVersion?: string | undefined;
          deviceHardwareVersion: string;
          sensorFirmwareVersion?: string | undefined;
          deviceSerialNumber: string;
          deviceProductCode: string;
          deviceFirmwareVersion: string;
        };
      };
      warnings?: string[] | undefined;
    }>;
  }, EncoderFactory<PEUTulip2DownlinkInput>, MultipleEncoderFactory<PEUTulip2DownlinkInput>>, TULIP3Codec<"PEU+NETRIS3TULIP3Codec", TULIP3UplinkOutput<{
    readonly deviceName: "PEU+NETRIS3";
    readonly deviceAlarmConfig: {
      readonly communicationModuleAlarms: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly sensorAlarms: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly sensorChannelAlarms: {
        readonly outOfMinPhysicalSensorLimit: 16;
        readonly outOfMaxPhysicalSensorLimit: 32;
      };
    };
    readonly sensorChannelConfig: {
      readonly alarmFlags: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly measuringPeriodAlarmOff: true;
          readonly transmissionRateAlarmOff: true;
          readonly measuringPeriodAlarmOn: true;
          readonly transmissionRateAlarmOn: true;
          readonly underVoltageThreshold: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly productId: true;
          readonly productSubId: true;
          readonly channelPlan: true;
          readonly connectedSensors: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly communicationModuleSpecificConfigurationRegisters: {};
        readonly communicationModuleSpecificIdentificationRegisters: {};
      };
      readonly sensor1: {
        readonly alarmFlags: {
          sensorCommunicationError: 1;
          sensorBusy: 32768;
          sensorMemoryIntegrity: 16384;
          sensorALUSaturation: 8192;
        };
        readonly registerConfig: {
          readonly tulip3ConfigurationRegisters: {
            readonly samplingChannels: true;
          };
          readonly tulip3IdentificationRegisters: {
            readonly sensorType: true;
            readonly existingChannels: true;
            readonly firmwareVersion: true;
            readonly hardwareVersion: true;
            readonly productionDate: true;
            readonly serialNumberPart1: true;
            readonly serialNumberPart2: true;
          };
          readonly sensorSpecificConfigurationRegisters: {};
          readonly sensorSpecificIdentificationRegisters: {};
        };
        readonly channel1: {
          readonly channelName: "pressure";
          readonly start: 0;
          readonly end: 10;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
          readonly availableMeasurands: ["Pressure (gauge)", "Pressure (absolute)"];
          readonly availableUnits: ["psi", "MPa", "bar"];
          readonly alarmFlags: {
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
        readonly channel2: {
          readonly channelName: "device temperature";
          readonly start: -40;
          readonly end: 60;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
          readonly availableMeasurands: ["Temperature"];
          readonly availableUnits: ["°C", "°F", "K"];
          readonly adjustMeasurementRangeDisallowed: true;
          readonly alarmFlags: {
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
      };
    };
  }>, "pressure", (input: TULIP3DownlinkActionSingle<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "pressure";
        readonly start: 0;
        readonly end: 10;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Pressure (gauge)", "Pressure (absolute)"];
        readonly availableUnits: ["psi", "MPa", "bar"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
      readonly channel2: {
        readonly channelName: "device temperature";
        readonly start: -40;
        readonly end: 60;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C", "°F", "K"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => DownlinkOutput, (input: TULIP3DownlinkActionMultiple<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "pressure";
        readonly start: 0;
        readonly end: 10;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Pressure (gauge)", "Pressure (absolute)"];
        readonly availableUnits: ["psi", "MPa", "bar"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
      readonly channel2: {
        readonly channelName: "device temperature";
        readonly start: -40;
        readonly end: 60;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C", "°F", "K"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => MultipleDownlinkOutput>];
}>;
//#endregion
//#region ../parsers/src/devices/PEW/schema/tulip2.d.ts
declare function createPEWTULIP2DropConfigurationSchema(): v.ObjectSchema<{
  deviceAction: v.LiteralSchema<"dropConfiguration", undefined>;
} & Record<never, never> & {
  configurationId: ReturnType<typeof createConfigurationIdSchema>;
}, undefined>;
declare function createPEWTULIP2GetConfigurationSchema(): v.ObjectSchema<{
  deviceAction: v.LiteralSchema<"getConfiguration", undefined>;
} & {
  readonly mainConfiguration: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  readonly channel0: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<true, undefined>, v.ObjectSchema<{
    readonly alarms: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
    readonly measureOffset: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  }, undefined>], undefined>, undefined>;
  readonly channel1: v.OptionalSchema<v.UnionSchema<[v.LiteralSchema<true, undefined>, v.ObjectSchema<{
    readonly alarms: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
    readonly measureOffset: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  }, undefined>], undefined>, undefined>;
} & {
  configurationId: ReturnType<typeof createConfigurationIdSchema>;
} & {
  byteLimit: ReturnType<() => v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.IntegerAction<number, undefined>]>, undefined>>;
}, undefined>;
type PEWTULIP2DropConfigurationAction = v.InferOutput<ReturnType<typeof createPEWTULIP2DropConfigurationSchema>>;
type PEWTULIP2GetConfigurationAction = v.InferOutput<ReturnType<typeof createPEWTULIP2GetConfigurationSchema>>;
type PEWTULIP2ResetBatteryAction = v.InferOutput<ReturnType<typeof createDownlinkResetBatteryIndicatorSchema>>;
type PEWTULIP2DownlinkExtraInput = PEWTULIP2DropConfigurationAction | PEWTULIP2GetConfigurationAction | PEWTULIP2ResetBatteryAction;
//#endregion
//#region ../parsers/src/devices/PEW/parser/tulip2/constants.d.ts
declare function createTULIP2PEWChannels(): [{
  readonly channelId: 0;
  readonly name: "pressure";
  readonly start: number;
  readonly end: number;
}, {
  readonly channelId: 1;
  readonly name: "device temperature";
  readonly start: number;
  readonly end: number;
  readonly adjustMeasurementRangeDisallowed: true;
}];
declare const PEW_DOWNLINK_FEATURE_FLAGS: {
  readonly maxConfigId: 127;
  readonly channelsStartupTime: false;
  readonly channelsMeasureOffset: true;
  readonly mainConfigBLE: true;
  readonly mainConfigSingleMeasuringRate: false;
};
type PewTulip2Channels = ReturnType<typeof createTULIP2PEWChannels>;
type PewTulip2DownlinkInput = TULIP2DownlinkInput<PewTulip2Channels[number], typeof PEW_DOWNLINK_FEATURE_FLAGS> | PEWTULIP2DownlinkExtraInput;
//#endregion
//#region ../parsers/src/devices/PEW/parser/index.d.ts
declare function useParser$7(): DeviceParser<{
  readonly parserName: "PEW-1000";
  readonly codecs: [TULIP2Codec<[{
    readonly channelId: 0;
    readonly name: "pressure";
    readonly start: number;
    readonly end: number;
  }, {
    readonly channelId: 1;
    readonly name: "device temperature";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }], "PEW-1000", {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: [{
            channelName: "pressure";
            channelId: 0;
            value: number;
          }, {
            channelName: "device temperature";
            channelId: 1;
            value: number;
          }, {
            channelName: "battery voltage";
            channelId: 2;
            value: number;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    2: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: [{
            channelName: "pressure";
            channelId: 0;
            value: number;
          }, {
            channelName: "device temperature";
            channelId: 1;
            value: number;
          }, {
            channelName: "battery voltage";
            channelId: 2;
            value: number;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    3: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 3;
        processAlarms: ({
          channelId: 0;
          channelName: "pressure";
          event: 0;
          eventName: "triggered";
          alarmFlags: {
            lowThreshold: boolean;
            highThreshold: boolean;
            fallingSlope: boolean;
            risingSlope: boolean;
            lowThresholdDelay: boolean;
            highThresholdDelay: boolean;
          };
          value: number;
        } | {
          channelId: 0;
          channelName: "pressure";
          event: 1;
          eventName: "disappeared";
          alarmFlags: {
            lowThreshold: boolean;
            highThreshold: boolean;
            fallingSlope: boolean;
            risingSlope: boolean;
            lowThresholdDelay: boolean;
            highThresholdDelay: boolean;
          };
          value: number;
        } | {
          channelId: 1;
          channelName: "device temperature";
          event: 0;
          eventName: "triggered";
          alarmFlags: {
            lowThreshold: boolean;
            highThreshold: boolean;
            fallingSlope: boolean;
            risingSlope: boolean;
            lowThresholdDelay: boolean;
            highThresholdDelay: boolean;
          };
          value: number;
        } | {
          channelId: 1;
          channelName: "device temperature";
          event: 1;
          eventName: "disappeared";
          alarmFlags: {
            lowThreshold: boolean;
            highThreshold: boolean;
            fallingSlope: boolean;
            risingSlope: boolean;
            lowThresholdDelay: boolean;
            highThresholdDelay: boolean;
          };
          value: number;
        })[];
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: [{
          event: 0;
          eventName: "triggered";
          alarmType: number;
          alarmTypeNames: ("ALU saturation error" | "sensor memory integrity error" | "sensor busy error" | "reserved" | "sensor communication error" | "pressure out of limit" | "temperature out of limit")[];
        } | {
          event: 1;
          eventName: "disappeared";
          alarmType: number;
          alarmTypeNames: ("ALU saturation error" | "sensor memory integrity error" | "sensor busy error" | "reserved" | "sensor communication error" | "pressure out of limit" | "temperature out of limit")[];
        }];
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarm: {
          event: 0;
          eventName: "triggered";
          alarmType: 0;
          alarmTypeName: "battery low";
          causeOfFailure: 0;
          causeOfFailureName: "generic";
          value: number;
        } | {
          event: 0;
          eventName: "triggered";
          alarmType: 0;
          alarmTypeName: "battery low";
          causeOfFailure: 1;
          causeOfFailureName: "device dependent";
          value: number;
        } | {
          event: 0;
          eventName: "triggered";
          alarmType: 4;
          alarmTypeName: "acknowledged message not emitted";
          causeOfFailure: 0;
          causeOfFailureName: "generic";
          value?: undefined;
        } | {
          event: 0;
          eventName: "triggered";
          alarmType: 4;
          alarmTypeName: "acknowledged message not emitted";
          causeOfFailure: 1;
          causeOfFailureName: "device dependent";
          value?: undefined;
        } | {
          event: 1;
          eventName: "disappeared";
          alarmType: 0;
          alarmTypeName: "battery low";
          causeOfFailure: 0;
          causeOfFailureName: "generic";
          value: number;
        } | {
          event: 1;
          eventName: "disappeared";
          alarmType: 0;
          alarmTypeName: "battery low";
          causeOfFailure: 1;
          causeOfFailureName: "device dependent";
          value: number;
        } | {
          event: 1;
          eventName: "disappeared";
          alarmType: 4;
          alarmTypeName: "acknowledged message not emitted";
          causeOfFailure: 0;
          causeOfFailureName: "generic";
          value?: undefined;
        } | {
          event: 1;
          eventName: "disappeared";
          alarmType: 4;
          alarmTypeName: "acknowledged message not emitted";
          causeOfFailure: 1;
          causeOfFailureName: "device dependent";
          value?: undefined;
        };
      };
      warnings?: string[] | undefined;
    }>;
    6: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 6;
        configStatus: 2 | 3 | 5 | 6 | 7;
        configStatusName: "configuration rejected" | "command failed" | "configuration discarded" | "command success" | "configuration applied";
        commandResponse?: {
          commandType: 4;
          commandTypeName: "get main configuration";
          commandStatus: 0;
          measurementPeriodNoAlarm: number;
          transmissionMultiplierNoAlarm: number;
          measurementPeriodWithAlarm: number;
          transmissionMultiplierWithAlarm: number;
          bleAdvertisingEnabled: boolean;
        } | {
          commandType: 64;
          commandTypeName: "reset battery indicator";
          commandStatus: 0 | 1;
          resetSuccess: boolean;
        } | {
          commandType: 80 | 81;
          commandTypeName: "get process alarm configuration temperature" | "get process alarm configuration pressure";
          commandStatus: 0;
          channel: 0 | 1;
          channelName: "pressure" | "device temperature";
          deadBand: number;
          lowThreshold: boolean;
          lowThresholdValue?: number | undefined;
          highThreshold: boolean;
          highThresholdValue?: number | undefined;
          fallingSlope: boolean;
          fallingSlopeValue?: number | undefined;
          risingSlope: boolean;
          risingSlopeValue?: number | undefined;
          lowThresholdWithDelay: boolean;
          lowThresholdWithDelayValue?: number | undefined;
          lowThresholdWithDelayDelay?: number | undefined;
          highThresholdWithDelay: boolean;
          highThresholdWithDelayValue?: number | undefined;
          highThresholdWithDelayDelay?: number | undefined;
        } | {
          commandType: 97 | 96;
          commandTypeName: "get channel property configuration temperature" | "get channel property configuration pressure";
          commandStatus: 0;
          channel: 0 | 1;
          channelName: "pressure" | "device temperature";
          measurementOffset: number;
        } | undefined;
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceInformation: {
          productIdName: "PEW";
          productId: 11;
          productSubId: 0;
          productSubIdName: "LoRaWAN";
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
        } | {
          productIdName: "PEW";
          productId: 11;
          productSubId: 0;
          productSubIdName: "LoRaWAN";
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
          serialNumber: string;
          pressureType: 1;
          measurementRangeStartPressure: number;
          measurementRangeEndPressure: number;
          measurementRangeStartDeviceTemperature: number;
          measurementRangeEndDeviceTemperature: number;
          pressureUnit: 7;
          pressureUnitName: "bar";
          deviceTemperatureUnit: 32;
          deviceTemperatureUnitName: "Celsius";
        } | {
          productIdName: "PEW";
          productId: 11;
          productSubId: 0;
          productSubIdName: "LoRaWAN";
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
          serialNumber: string;
          pressureType: 1;
          measurementRangeStartPressure: number;
          measurementRangeEndPressure: number;
          measurementRangeStartDeviceTemperature: number;
          measurementRangeEndDeviceTemperature: number;
          pressureUnit: 237;
          pressureUnitName: "MPa";
          deviceTemperatureUnit: 32;
          deviceTemperatureUnitName: "Celsius";
        } | {
          productIdName: "PEW";
          productId: 11;
          productSubId: 0;
          productSubIdName: "LoRaWAN";
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
          serialNumber: string;
          pressureType: 1;
          measurementRangeStartPressure: number;
          measurementRangeEndPressure: number;
          measurementRangeStartDeviceTemperature: number;
          measurementRangeEndDeviceTemperature: number;
          pressureUnit: 6;
          pressureUnitName: "psi";
          deviceTemperatureUnit: 32;
          deviceTemperatureUnitName: "Celsius";
        } | {
          productIdName: "PEW";
          productId: 11;
          productSubId: 0;
          productSubIdName: "LoRaWAN";
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
          serialNumber: string;
          pressureType: 2;
          measurementRangeStartPressure: number;
          measurementRangeEndPressure: number;
          measurementRangeStartDeviceTemperature: number;
          measurementRangeEndDeviceTemperature: number;
          pressureUnit: 7;
          pressureUnitName: "bar";
          deviceTemperatureUnit: 32;
          deviceTemperatureUnitName: "Celsius";
        } | {
          productIdName: "PEW";
          productId: 11;
          productSubId: 0;
          productSubIdName: "LoRaWAN";
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
          serialNumber: string;
          pressureType: 2;
          measurementRangeStartPressure: number;
          measurementRangeEndPressure: number;
          measurementRangeStartDeviceTemperature: number;
          measurementRangeEndDeviceTemperature: number;
          pressureUnit: 237;
          pressureUnitName: "MPa";
          deviceTemperatureUnit: 32;
          deviceTemperatureUnitName: "Celsius";
        } | {
          productIdName: "PEW";
          productId: 11;
          productSubId: 0;
          productSubIdName: "LoRaWAN";
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
          serialNumber: string;
          pressureType: 2;
          measurementRangeStartPressure: number;
          measurementRangeEndPressure: number;
          measurementRangeStartDeviceTemperature: number;
          measurementRangeEndDeviceTemperature: number;
          pressureUnit: 6;
          pressureUnitName: "psi";
          deviceTemperatureUnit: 32;
          deviceTemperatureUnitName: "Celsius";
        } | {
          productIdName: "PEW";
          productId: 11;
          productSubId: 0;
          productSubIdName: "LoRaWAN";
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          batteryLevelNewEvent: boolean;
          batteryLevelPercent: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
    11: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 11;
        mainConfiguration: {
          measurementPeriodNoAlarm: number;
          transmissionMultiplierNoAlarm: number;
          measurementPeriodWithAlarm: number;
          transmissionMultiplierWithAlarm: number;
          bleAdvertisingEnabled: boolean;
        };
      };
      warnings?: string[] | undefined;
    }>;
    12: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 12;
        processAlarmConfiguration: {
          channel: 0 | 1;
          channelName: "pressure" | "device temperature";
          deadBand: number;
          lowThreshold: boolean;
          lowThresholdValue?: number | undefined;
          highThreshold: boolean;
          highThresholdValue?: number | undefined;
          fallingSlope: boolean;
          fallingSlopeValue?: number | undefined;
          risingSlope: boolean;
          risingSlopeValue?: number | undefined;
          lowThresholdWithDelay: boolean;
          lowThresholdWithDelayValue?: number | undefined;
          lowThresholdWithDelayDelay?: number | undefined;
          highThresholdWithDelay: boolean;
          highThresholdWithDelayValue?: number | undefined;
          highThresholdWithDelayDelay?: number | undefined;
        };
      };
      warnings?: string[] | undefined;
    }>;
    13: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 13;
        channelPropertyConfiguration: {
          channel: 0 | 1;
          channelName: "pressure" | "device temperature";
          measurementOffset: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
  }, EncoderFactory<PewTulip2DownlinkInput>, MultipleEncoderFactory<PewTulip2DownlinkInput>>, TULIP3Codec<"PEW-1000TULIP3Codec", TULIP3UplinkOutput<{
    readonly deviceName: "PEW-1000";
    readonly deviceAlarmConfig: {
      readonly communicationModuleAlarms: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly sensorAlarms: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly sensorChannelAlarms: {
        readonly outOfMinPhysicalSensorLimit: 16;
        readonly outOfMaxPhysicalSensorLimit: 32;
      };
    };
    readonly sensorChannelConfig: {
      readonly alarmFlags: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly enableBleAdvertising: true;
          readonly measuringPeriodAlarmOff: true;
          readonly transmissionRateAlarmOff: true;
          readonly measuringPeriodAlarmOn: true;
          readonly transmissionRateAlarmOn: true;
          readonly underVoltageThreshold: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly productId: true;
          readonly productSubId: true;
          readonly channelPlan: true;
          readonly connectedSensors: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly communicationModuleSpecificConfigurationRegisters: {};
        readonly communicationModuleSpecificIdentificationRegisters: {};
      };
      readonly sensor1: {
        readonly alarmFlags: {
          sensorCommunicationError: 1;
          sensorBusy: 32768;
          sensorMemoryIntegrity: 16384;
          sensorALUSaturation: 8192;
        };
        readonly registerConfig: {
          readonly tulip3ConfigurationRegisters: {
            readonly samplingChannels: true;
          };
          readonly tulip3IdentificationRegisters: {
            readonly sensorType: true;
            readonly existingChannels: true;
            readonly firmwareVersion: true;
            readonly hardwareVersion: true;
            readonly productionDate: true;
            readonly serialNumberPart1: true;
            readonly serialNumberPart2: true;
          };
          readonly sensorSpecificConfigurationRegisters: {};
          readonly sensorSpecificIdentificationRegisters: {};
        };
        readonly channel1: {
          readonly channelName: "pressure";
          readonly start: 0;
          readonly end: 10;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
          readonly availableMeasurands: ["Pressure (gauge)", "Pressure (absolute)"];
          readonly availableUnits: ["psi", "MPa", "bar"];
          readonly alarmFlags: {
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
        readonly channel2: {
          readonly channelName: "device temperature";
          readonly start: -45;
          readonly end: 110;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
          readonly availableMeasurands: ["Temperature"];
          readonly availableUnits: ["°C"];
          readonly adjustMeasurementRangeDisallowed: true;
          readonly alarmFlags: {
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
      };
    };
  }>, "pressure", (input: TULIP3DownlinkActionSingle<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly enableBleAdvertising: true;
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "pressure";
        readonly start: 0;
        readonly end: 10;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Pressure (gauge)", "Pressure (absolute)"];
        readonly availableUnits: ["psi", "MPa", "bar"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
      readonly channel2: {
        readonly channelName: "device temperature";
        readonly start: -45;
        readonly end: 110;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => DownlinkOutput, (input: TULIP3DownlinkActionMultiple<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly enableBleAdvertising: true;
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "pressure";
        readonly start: 0;
        readonly end: 10;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Pressure (gauge)", "Pressure (absolute)"];
        readonly availableUnits: ["psi", "MPa", "bar"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
      readonly channel2: {
        readonly channelName: "device temperature";
        readonly start: -45;
        readonly end: 110;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => MultipleDownlinkOutput>];
}>;
//#endregion
//#region ../parsers/src/devices/PGU_NETRIS3/parser/tulip2/channels.d.ts
declare function createTULIP2PGUChannels(): [{
  readonly channelId: 0;
  readonly name: "pressure";
  readonly start: number;
  readonly end: number;
}, {
  readonly channelId: 1;
  readonly name: "device temperature";
  readonly start: number;
  readonly end: number;
  readonly adjustMeasurementRangeDisallowed: true;
}];
//#endregion
//#region ../parsers/src/devices/PGU_NETRIS3/parser/tulip2/constants.d.ts
declare const PGU_DOWNLINK_FEATURE_FLAGS: {
  readonly maxConfigId: 31;
  readonly channelsStartupTime: false;
  readonly channelsMeasureOffset: true;
  readonly mainConfigBLE: false;
  readonly mainConfigSingleMeasuringRate: false;
};
type PGUTulip2Channels = ReturnType<typeof createTULIP2PGUChannels>;
type PGUTulip2DownlinkInput = TULIP2DownlinkInput<PGUTulip2Channels[number], typeof PGU_DOWNLINK_FEATURE_FLAGS>;
//#endregion
//#region ../parsers/src/devices/PGU_NETRIS3/parser/index.d.ts
declare function useParser$8(): DeviceParser<{
  readonly parserName: "PGU+NETRIS3";
  readonly codecs: [TULIP2Codec<[{
    readonly channelId: 0;
    readonly name: "pressure";
    readonly start: number;
    readonly end: number;
  }, {
    readonly channelId: 1;
    readonly name: "device temperature";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }], "PGU+NETRIS3", {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: ({
            channelId: 0;
            channelName: "pressure";
            value: number;
          } | {
            channelId: 1;
            channelName: "device temperature";
            value: number;
          })[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    2: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: ({
            channelId: 0;
            channelName: "pressure";
            value: number;
          } | {
            channelId: 1;
            channelName: "device temperature";
            value: number;
          })[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    3: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 3;
        processAlarms: ({
          channelId: 0;
          channelName: "pressure";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          alarmType: 0 | 1 | 2 | 3 | 4 | 5;
          alarmTypeName: "low threshold" | "high threshold" | "falling slope" | "rising slope" | "low threshold with delay" | "high threshold with delay";
          value: number;
        } | {
          channelId: 1;
          channelName: "device temperature";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          alarmType: 0 | 1 | 2 | 3 | 4 | 5;
          alarmTypeName: "low threshold" | "high threshold" | "falling slope" | "rising slope" | "low threshold with delay" | "high threshold with delay";
          value: number;
        })[];
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: {
          alarmType: 0 | 1 | 2 | 3 | 4;
          alarmTypeName: "MV_STAT channel 0" | "MV_STAT channel 1" | "MV_STAT channel 2" | "MV_STAT channel 3" | "STAT_DEV";
          causeOfFailure: number;
          causeOfFailureName: "MV_STAT_ERROR" | "MV_STAT_WARNING" | "STAT_DEV_ERROR" | "STAT_DEV_WARNING" | "STAT_DEV_RESTARTED";
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarm: {
          alarmStatus: number;
          alarmStatusNames: ("duty cycle alarm" | "low battery" | "temperature alarm" | "UART alarm")[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceInformation: {
          productId: 15;
          productIdName: "NETRIS3";
          productSubId: 0;
          productSubIdName: "LoRaWAN";
          sensorDeviceTypeId: number;
          channelConfigurations: [{
            channelId: 0;
            channelName: "pressure";
            measurand: 3 | 4 | 5;
            measurandName: "Pressure (gauge)" | "Pressure (absolute)" | "Pressure (differential)";
            measurementRangeStart: number;
            measurementRangeEnd: number;
            unit: 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 22 | 32 | 21 | 23 | 24 | 25 | 33 | 34;
            unitName: "bar" | "mbar" | "Pa" | "hPa" | "kPa" | "MPa" | "psi" | "lbf/ft²" | "kN/m²" | "N/cm²" | "atm" | "kg/cm²" | "kg/mm²" | "mmHg" | "cmHg" | "inHg" | "mmH2O" | "mH2O" | "inH2O" | "ftH2O" | "µbar" | "µmHg";
          }, {
            channelId: 1;
            channelName: "device temperature";
            measurand: 1;
            measurandName: "Temperature";
            measurementRangeStart: number;
            measurementRangeEnd: number;
            unit: 1 | 2 | 3 | 4;
            unitName: "°C" | "°F" | "K" | "°R";
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          numberOfMeasurements: number;
          numberOfTransmissions: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
    9: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 9;
        extendedDeviceInformation: {
          optionalFieldsMask: number;
          wikaSensorSerialNumber?: string | undefined;
          sensorLUID?: number | undefined;
          sensorHardwareVersion?: string | undefined;
          deviceHardwareVersion: string;
          sensorFirmwareVersion?: string | undefined;
          deviceSerialNumber: string;
          deviceProductCode: string;
          deviceFirmwareVersion: string;
        };
      };
      warnings?: string[] | undefined;
    }>;
  }, EncoderFactory<PGUTulip2DownlinkInput>, MultipleEncoderFactory<PGUTulip2DownlinkInput>>, TULIP3Codec<"PGU+NETRIS3TULIP3Codec", TULIP3UplinkOutput<{
    readonly deviceName: "PGU+NETRIS3";
    readonly deviceAlarmConfig: {
      readonly communicationModuleAlarms: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly sensorAlarms: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly sensorChannelAlarms: {
        readonly outOfMinPhysicalSensorLimit: 16;
        readonly outOfMaxPhysicalSensorLimit: 32;
      };
    };
    readonly sensorChannelConfig: {
      readonly alarmFlags: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly measuringPeriodAlarmOff: true;
          readonly transmissionRateAlarmOff: true;
          readonly measuringPeriodAlarmOn: true;
          readonly transmissionRateAlarmOn: true;
          readonly underVoltageThreshold: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly productId: true;
          readonly productSubId: true;
          readonly channelPlan: true;
          readonly connectedSensors: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly communicationModuleSpecificConfigurationRegisters: {};
        readonly communicationModuleSpecificIdentificationRegisters: {};
      };
      readonly sensor1: {
        readonly alarmFlags: {
          sensorCommunicationError: 1;
          sensorBusy: 32768;
          sensorMemoryIntegrity: 16384;
          sensorALUSaturation: 8192;
        };
        readonly registerConfig: {
          readonly tulip3ConfigurationRegisters: {
            readonly samplingChannels: true;
          };
          readonly tulip3IdentificationRegisters: {
            readonly sensorType: true;
            readonly existingChannels: true;
            readonly firmwareVersion: true;
            readonly hardwareVersion: true;
            readonly productionDate: true;
            readonly serialNumberPart1: true;
            readonly serialNumberPart2: true;
          };
          readonly sensorSpecificConfigurationRegisters: {};
          readonly sensorSpecificIdentificationRegisters: {};
        };
        readonly channel1: {
          readonly channelName: "pressure";
          readonly start: 0;
          readonly end: 10;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
          readonly availableMeasurands: ["Pressure (gauge)", "Pressure (absolute)"];
          readonly availableUnits: ["psi", "MPa", "bar"];
          readonly alarmFlags: {
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
        readonly channel2: {
          readonly channelName: "device temperature";
          readonly start: -40;
          readonly end: 60;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
          readonly availableMeasurands: ["Temperature"];
          readonly availableUnits: ["°C", "°F", "K"];
          readonly adjustMeasurementRangeDisallowed: true;
          readonly alarmFlags: {
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
      };
    };
  }>, "pressure", (input: TULIP3DownlinkActionSingle<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "pressure";
        readonly start: 0;
        readonly end: 10;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Pressure (gauge)", "Pressure (absolute)"];
        readonly availableUnits: ["psi", "MPa", "bar"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
      readonly channel2: {
        readonly channelName: "device temperature";
        readonly start: -40;
        readonly end: 60;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C", "°F", "K"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => DownlinkOutput, (input: TULIP3DownlinkActionMultiple<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "pressure";
        readonly start: 0;
        readonly end: 10;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Pressure (gauge)", "Pressure (absolute)"];
        readonly availableUnits: ["psi", "MPa", "bar"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
      readonly channel2: {
        readonly channelName: "device temperature";
        readonly start: -40;
        readonly end: 60;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C", "°F", "K"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => MultipleDownlinkOutput>];
}>;
//#endregion
//#region ../parsers/src/devices/PGW23_100_11/parser/tulip2/constants.d.ts
declare function createTULIP2PGWChannels(): [{
  readonly channelId: 0;
  readonly name: "pressure";
  readonly start: number;
  readonly end: number;
}, {
  readonly channelId: 1;
  readonly name: "device temperature";
  readonly start: number;
  readonly end: number;
  readonly adjustMeasurementRangeDisallowed: true;
}];
declare const PGW_DOWNLINK_FEATURE_FLAGS: {
  readonly maxConfigId: 127;
  readonly channelsStartupTime: false;
  readonly channelsMeasureOffset: false;
  readonly channelsBooleanOnly: readonly ["channel1"];
  readonly mainConfigBLE: false;
  readonly mainConfigSingleMeasuringRate: true;
};
type PGWTulip2Channels = ReturnType<typeof createTULIP2PGWChannels>;
type PGWTulip2BaseDownlinkInput = TULIP2DownlinkInput<PGWTulip2Channels[number], typeof PGW_DOWNLINK_FEATURE_FLAGS>;
//#endregion
//#region ../parsers/src/devices/PGW23_100_11/parser/tulip2/lookups.d.ts
declare const PRESSURE_UNITS: {
  readonly inH2O: 1;
  readonly inHg: 2;
  readonly ftH2O: 3;
  readonly mmH2O: 4;
  readonly mmHg: 5;
  readonly psi: 6;
  readonly bar: 7;
  readonly mbar: 8;
  readonly 'g/cm\u00B2': 9;
  readonly 'kg/cm\u00B2': 10;
  readonly Pa: 11;
  readonly kPa: 12;
  readonly Torr: 13;
  readonly at: 14;
  readonly 'inH2O (60 \u00B0F)': 145;
  readonly 'cmH2O (4 \u00B0C)': 170;
  readonly 'mH2O (4 \u00B0C)': 171;
  readonly cmHg: 172;
  readonly 'lb/ft\u00B2': 173;
  readonly hPa: 174;
  readonly psia: 175;
  readonly 'kg/m\u00B2': 176;
  readonly 'ftH2O (4 \u00B0C)': 177;
  readonly 'ftH2O (60 \u00B0F)': 178;
  readonly mHg: 179;
  readonly Mpsi: 180;
  readonly MPa: 237;
  readonly 'inH2O (4 \u00B0C)': 238;
  readonly 'mmH2O (4 \u00B0C)': 239;
};
declare const TEMPERATURE_UNITS: {
  readonly '\u00B0C': 32;
  readonly '\u00B0F': 33;
};
//#endregion
//#region ../parsers/src/devices/PGW23_100_11/schema/tulip2.d.ts
type PressureUnitName = keyof typeof PRESSURE_UNITS;
type PressureUnitValues = typeof PRESSURE_UNITS[PressureUnitName];
type TemperatureUnitName = keyof typeof TEMPERATURE_UNITS;
type TemperatureUnitValues = typeof TEMPERATURE_UNITS[TemperatureUnitName];
//#endregion
//#region ../parsers/src/devices/PGW23_100_11/parser/index.d.ts
declare function useParser$9(): DeviceParser<{
  readonly parserName: "PGW23.100.11";
  readonly codecs: [TULIP2Codec<[{
    readonly channelId: 0;
    readonly name: "pressure";
    readonly start: number;
    readonly end: number;
  }, {
    readonly channelId: 1;
    readonly name: "device temperature";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }], "PGW23.100.11", {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: [{
            channelId: 0;
            channelName: "pressure";
            value: number;
          }, {
            channelId: 1;
            channelName: "device temperature";
            value: number;
          }, {
            channelId: 2;
            channelName: "battery voltage";
            value: number;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    2: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: [{
            channelId: 0;
            channelName: "pressure";
            value: number;
          }, {
            channelId: 1;
            channelName: "device temperature";
            value: number;
          }, {
            channelId: 2;
            channelName: "battery voltage";
            value: number;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    3: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 3;
        processAlarms: {
          readonly [x: string]: any;
          [x: number]: any;
          [x: symbol]: any;
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: {
          readonly [x: string]: any;
          [x: number]: any;
          [x: symbol]: any;
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarm: {
          readonly [x: string]: any;
          [x: number]: any;
          [x: symbol]: any;
        };
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceInformation: {
          productIdName: string;
          productId: number;
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
          sensorModuleFirmwareVersion: string;
          sensorModuleHardwareVersion: string;
          serialNumber: string;
          pressureType: "absolute" | "relative" | "differential";
          measurementRangeStartPressure: number;
          measurementRangeEndPressure: number;
          measurementRangeStartDeviceTemperature: number;
          measurementRangeEndDeviceTemperature: number;
          pressureUnit: PressureUnitValues;
          pressureUnitName: "at" | "bar" | "mbar" | "Pa" | "hPa" | "kPa" | "MPa" | "psi" | "kg/cm²" | "mmHg" | "cmHg" | "inHg" | "mmH2O" | "inH2O" | "ftH2O" | "g/cm²" | "Torr" | "inH2O (60 °F)" | "cmH2O (4 °C)" | "mH2O (4 °C)" | "lb/ft²" | "psia" | "kg/m²" | "ftH2O (4 °C)" | "ftH2O (60 °F)" | "mHg" | "Mpsi" | "inH2O (4 °C)" | "mmH2O (4 °C)";
          deviceTemperatureUnit: TemperatureUnitValues;
          deviceTemperatureUnitName: "°C" | "°F";
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "pressure";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          batteryLevelNewEvent: boolean;
          batteryLevelPercent: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
  }, EncoderFactory<{
    deviceAction: "resetBatteryIndicator";
    configurationId?: number | undefined;
  } | PGWTulip2BaseDownlinkInput>, MultipleEncoderFactory<{
    deviceAction: "resetBatteryIndicator";
    configurationId?: number | undefined;
  } | PGWTulip2BaseDownlinkInput>>];
}>;
//#endregion
//#region ../parsers/src/devices/TGU_NETRIS3/parser/tulip2/channels.d.ts
declare function createTULIP2TGUChannels(): [{
  readonly channelId: 0;
  readonly name: "temperature";
  readonly start: number;
  readonly end: number;
}, {
  readonly channelId: 1;
  readonly name: "device temperature";
  readonly start: number;
  readonly end: number;
  readonly adjustMeasurementRangeDisallowed: true;
}];
//#endregion
//#region ../parsers/src/devices/TGU_NETRIS3/parser/tulip2/constants.d.ts
declare const TGU_DOWNLINK_FEATURE_FLAGS: {
  readonly maxConfigId: 31;
  readonly channelsStartupTime: false;
  readonly channelsMeasureOffset: true;
  readonly mainConfigBLE: false;
  readonly mainConfigSingleMeasuringRate: false;
};
type TGUTulip2Channels = ReturnType<typeof createTULIP2TGUChannels>;
type TGUTulip2DownlinkInput = TULIP2DownlinkInput<TGUTulip2Channels[number], typeof TGU_DOWNLINK_FEATURE_FLAGS>;
//#endregion
//#region ../parsers/src/devices/TGU_NETRIS3/parser/index.d.ts
declare function useParser$10(): DeviceParser<{
  readonly parserName: "TGU+NETRIS3";
  readonly codecs: [TULIP2Codec<[{
    readonly channelId: 0;
    readonly name: "temperature";
    readonly start: number;
    readonly end: number;
  }, {
    readonly channelId: 1;
    readonly name: "device temperature";
    readonly start: number;
    readonly end: number;
    readonly adjustMeasurementRangeDisallowed: true;
  }], "TGU+NETRIS3", {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: ({
            channelId: 0;
            channelName: "temperature";
            value: number;
          } | {
            channelId: 1;
            channelName: "device temperature";
            value: number;
          })[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    2: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: ({
            channelId: 0;
            channelName: "temperature";
            value: number;
          } | {
            channelId: 1;
            channelName: "device temperature";
            value: number;
          })[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    3: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 3;
        processAlarms: ({
          channelId: 0;
          channelName: "temperature";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          alarmType: 0 | 1 | 2 | 3 | 4 | 5;
          alarmTypeName: "low threshold" | "high threshold" | "falling slope" | "rising slope" | "low threshold with delay" | "high threshold with delay";
          value: number;
        } | {
          channelId: 1;
          channelName: "device temperature";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          alarmType: 0 | 1 | 2 | 3 | 4 | 5;
          alarmTypeName: "low threshold" | "high threshold" | "falling slope" | "rising slope" | "low threshold with delay" | "high threshold with delay";
          value: number;
        })[];
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: {
          alarmType: 0 | 1 | 2 | 3 | 4;
          alarmTypeName: "MV_STAT channel 0" | "MV_STAT channel 1" | "MV_STAT channel 2" | "MV_STAT channel 3" | "STAT_DEV";
          causeOfFailure: number;
          causeOfFailureName: "MV_STAT_ERROR" | "MV_STAT_WARNING" | "STAT_DEV_ERROR" | "STAT_DEV_WARNING" | "STAT_DEV_RESTARTED";
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarm: {
          alarmStatus: number;
          alarmStatusNames: ("duty cycle alarm" | "low battery" | "temperature alarm" | "UART alarm")[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceInformation: {
          productId: 15;
          productIdName: "NETRIS3";
          productSubId: 0;
          productSubIdName: "LoRaWAN";
          sensorDeviceTypeId: number;
          channelConfigurations: [{
            channelId: 0;
            channelName: "temperature";
            measurand: 1;
            measurandName: "Temperature";
            measurementRangeStart: number;
            measurementRangeEnd: number;
            unit: 1 | 2 | 3 | 4;
            unitName: "°C" | "°F" | "K" | "°R";
          }, {
            channelId: 1;
            channelName: "device temperature";
            measurand: 1;
            measurandName: "Temperature";
            measurementRangeStart: number;
            measurementRangeEnd: number;
            unit: 1 | 2 | 3 | 4;
            unitName: "°C" | "°F" | "K" | "°R";
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          numberOfMeasurements: number;
          numberOfTransmissions: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
    9: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }, {
      readonly channelId: 1;
      readonly name: "device temperature";
      readonly start: number;
      readonly end: number;
      readonly adjustMeasurementRangeDisallowed: true;
    }], {
      data: {
        configurationId: number;
        messageType: 9;
        extendedDeviceInformation: {
          optionalFieldsMask: number;
          wikaSensorSerialNumber?: string | undefined;
          sensorLUID?: number | undefined;
          sensorHardwareVersion?: string | undefined;
          deviceHardwareVersion: string;
          sensorFirmwareVersion?: string | undefined;
          deviceSerialNumber: string;
          deviceProductCode: string;
          deviceFirmwareVersion: string;
        };
      };
      warnings?: string[] | undefined;
    }>;
  }, EncoderFactory<TGUTulip2DownlinkInput>, MultipleEncoderFactory<TGUTulip2DownlinkInput>>, TULIP3Codec<"TGU+NETRIS3TULIP3Codec", TULIP3UplinkOutput<{
    readonly deviceName: "TGU+NETRIS3";
    readonly deviceAlarmConfig: {
      readonly communicationModuleAlarms: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly sensorAlarms: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly sensorChannelAlarms: {
        readonly outOfMinPhysicalSensorLimit: 16;
        readonly outOfMaxPhysicalSensorLimit: 32;
      };
    };
    readonly sensorChannelConfig: {
      readonly alarmFlags: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly measuringPeriodAlarmOff: true;
          readonly transmissionRateAlarmOff: true;
          readonly measuringPeriodAlarmOn: true;
          readonly transmissionRateAlarmOn: true;
          readonly underVoltageThreshold: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly productId: true;
          readonly productSubId: true;
          readonly channelPlan: true;
          readonly connectedSensors: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly communicationModuleSpecificConfigurationRegisters: {};
        readonly communicationModuleSpecificIdentificationRegisters: {};
      };
      readonly sensor1: {
        readonly alarmFlags: {
          sensorCommunicationError: 1;
          sensorBusy: 32768;
          sensorMemoryIntegrity: 16384;
          sensorALUSaturation: 8192;
        };
        readonly registerConfig: {
          readonly tulip3ConfigurationRegisters: {
            readonly samplingChannels: true;
          };
          readonly tulip3IdentificationRegisters: {
            readonly sensorType: true;
            readonly existingChannels: true;
            readonly firmwareVersion: true;
            readonly hardwareVersion: true;
            readonly productionDate: true;
            readonly serialNumberPart1: true;
            readonly serialNumberPart2: true;
          };
          readonly sensorSpecificConfigurationRegisters: {};
          readonly sensorSpecificIdentificationRegisters: {};
        };
        readonly channel1: {
          readonly channelName: "temperature";
          readonly start: 0;
          readonly end: 100;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
          readonly availableMeasurands: ["Temperature"];
          readonly availableUnits: ["°C", "°F", "K"];
          readonly alarmFlags: {
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
        readonly channel2: {
          readonly channelName: "device temperature";
          readonly start: -40;
          readonly end: 60;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
          readonly availableMeasurands: ["Temperature"];
          readonly availableUnits: ["°C", "°F", "K"];
          readonly adjustMeasurementRangeDisallowed: true;
          readonly alarmFlags: {
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
      };
    };
  }>, "temperature", (input: TULIP3DownlinkActionSingle<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "temperature";
        readonly start: 0;
        readonly end: 100;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C", "°F", "K"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
      readonly channel2: {
        readonly channelName: "device temperature";
        readonly start: -40;
        readonly end: 60;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C", "°F", "K"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => DownlinkOutput, (input: TULIP3DownlinkActionMultiple<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "temperature";
        readonly start: 0;
        readonly end: 100;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C", "°F", "K"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
      readonly channel2: {
        readonly channelName: "device temperature";
        readonly start: -40;
        readonly end: 60;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C", "°F", "K"];
        readonly adjustMeasurementRangeDisallowed: true;
        readonly alarmFlags: {
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => MultipleDownlinkOutput>];
}>;
//#endregion
//#region ../parsers/src/devices/TRU_NETRIS3/parser/tulip2/channels.d.ts
declare function createTULIP2TRUChannels(): [{
  readonly channelId: 0;
  readonly name: "temperature";
  readonly start: number;
  readonly end: number;
}];
//#endregion
//#region ../parsers/src/devices/TRU_NETRIS3/parser/tulip2/constants.d.ts
declare const TRU_DOWNLINK_FEATURE_FLAGS: {
  readonly maxConfigId: 31;
  readonly channelsStartupTime: false;
  readonly channelsMeasureOffset: true;
  readonly mainConfigBLE: false;
  readonly mainConfigSingleMeasuringRate: false;
};
type TRUTulip2Channels = ReturnType<typeof createTULIP2TRUChannels>;
type TRUTulip2DownlinkInput = TULIP2DownlinkInput<TRUTulip2Channels[number], typeof TRU_DOWNLINK_FEATURE_FLAGS>;
//#endregion
//#region ../parsers/src/devices/TRU_NETRIS3/parser/index.d.ts
declare function useParser$11(): DeviceParser<{
  readonly parserName: "TRU+NETRIS3";
  readonly codecs: [TULIP2Codec<[{
    readonly channelId: 0;
    readonly name: "temperature";
    readonly start: number;
    readonly end: number;
  }], "TRU+NETRIS3", {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: {
            channelId: 0;
            channelName: "temperature";
            value: number;
          }[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    2: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: {
            channelId: 0;
            channelName: "temperature";
            value: number;
          }[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    3: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 3;
        processAlarms: {
          channelId: 0;
          channelName: "temperature";
          event: 0 | 1;
          eventName: "triggered" | "disappeared";
          alarmType: 0 | 1 | 2 | 3 | 4 | 5;
          alarmTypeName: "low threshold" | "high threshold" | "falling slope" | "rising slope" | "low threshold with delay" | "high threshold with delay";
          value: number;
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: {
          alarmType: number;
          alarmTypeName: "MV_STAT channel 0" | "MV_STAT channel 1" | "MV_STAT channel 2" | "MV_STAT channel 3" | "STAT_DEV";
          causeOfFailure: number;
          causeOfFailureName: "MV_STAT_ERROR" | "MV_STAT_WARNING" | "STAT_DEV_ERROR" | "STAT_DEV_WARNING" | "STAT_DEV_RESTARTED";
        }[];
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarm: {
          alarmStatus: number;
          alarmStatusNames: ("duty cycle alarm" | "low battery" | "temperature alarm" | "UART alarm")[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceInformation: {
          productId: number;
          productIdName: number | "NETRIS3";
          productSubId: number;
          productSubIdName: "LoRaWAN" | "MIOTY";
          sensorDeviceTypeId: number;
          channelConfigurations: [{
            channelId: 0;
            channelName: "temperature";
            measurand: 1;
            measurandName: "Temperature";
            measurementRangeStart: number;
            measurementRangeEnd: number;
            unit: 1 | 2 | 3;
            unitName: "°C" | "°F" | "K";
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          numberOfMeasurements: number;
          numberOfTransmissions: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
    9: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 9;
        extendedDeviceInformation: {
          optionalFieldsMask: number;
          wikaSensorSerialNumber?: string | undefined;
          sensorLUID?: number | undefined;
          sensorHardwareVersion?: string | undefined;
          deviceHardwareVersion: string;
          sensorFirmwareVersion?: string | undefined;
          deviceSerialNumber: string;
          deviceProductCode: string;
          deviceFirmwareVersion: string;
        };
      };
      warnings?: string[] | undefined;
    }>;
  }, EncoderFactory<TRUTulip2DownlinkInput>, MultipleEncoderFactory<TRUTulip2DownlinkInput>>, TULIP3Codec<"TRU+NETRIS3TULIP3Codec", TULIP3UplinkOutput<{
    readonly deviceName: "TRU+NETRIS3";
    readonly deviceAlarmConfig: {
      readonly communicationModuleAlarms: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly sensorAlarms: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly sensorChannelAlarms: {
        readonly outOfMinPhysicalSensorLimit: 16;
        readonly outOfMaxPhysicalSensorLimit: 32;
      };
    };
    readonly sensorChannelConfig: {
      readonly alarmFlags: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly measuringPeriodAlarmOff: true;
          readonly transmissionRateAlarmOff: true;
          readonly measuringPeriodAlarmOn: true;
          readonly transmissionRateAlarmOn: true;
          readonly underVoltageThreshold: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly productId: true;
          readonly productSubId: true;
          readonly channelPlan: true;
          readonly connectedSensors: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly communicationModuleSpecificConfigurationRegisters: {};
        readonly communicationModuleSpecificIdentificationRegisters: {};
      };
      readonly sensor1: {
        readonly alarmFlags: {
          sensorCommunicationError: 1;
          sensorBusy: 32768;
          sensorMemoryIntegrity: 16384;
          sensorALUSaturation: 8192;
        };
        readonly registerConfig: {
          readonly tulip3ConfigurationRegisters: {
            readonly samplingChannels: true;
          };
          readonly tulip3IdentificationRegisters: {
            readonly sensorType: true;
            readonly existingChannels: true;
            readonly firmwareVersion: true;
            readonly hardwareVersion: true;
            readonly productionDate: true;
            readonly serialNumberPart1: true;
            readonly serialNumberPart2: true;
          };
          readonly sensorSpecificConfigurationRegisters: {};
          readonly sensorSpecificIdentificationRegisters: {};
        };
        readonly channel1: {
          readonly channelName: "temperature";
          readonly start: 0;
          readonly end: 600;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
          readonly availableMeasurands: ["Temperature"];
          readonly availableUnits: ["°C", "°F", "K"];
          readonly alarmFlags: {
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
      };
    };
  }>, "temperature", (input: TULIP3DownlinkActionSingle<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "temperature";
        readonly start: 0;
        readonly end: 600;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C", "°F", "K"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => DownlinkOutput, (input: TULIP3DownlinkActionMultiple<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorBusy: 32768;
        sensorMemoryIntegrity: 16384;
        sensorALUSaturation: 8192;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "temperature";
        readonly start: 0;
        readonly end: 600;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500", "float - IEEE754"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C", "°F", "K"];
        readonly alarmFlags: {
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => MultipleDownlinkOutput>];
}>;
//#endregion
//#region ../parsers/src/devices/TRW/schema/tulip2.d.ts
declare function createTRWTULIP2GetConfigurationSchema(): v.ObjectSchema<{
  deviceAction: v.LiteralSchema<"getConfiguration", undefined>;
} & {
  readonly mainConfiguration: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
  readonly processAlarmConfiguration: v.OptionalSchema<v.LiteralSchema<true, undefined>, undefined>;
} & {
  configurationId: ReturnType<typeof createConfigurationIdSchema>;
} & {
  byteLimit: ReturnType<() => v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, 0, undefined>, v.IntegerAction<number, undefined>]>, undefined>>;
}, undefined>;
declare function createTRWTULIP2ResetBatterySchema(): v.ObjectSchema<{
  deviceAction: v.LiteralSchema<"resetBatteryIndicator", undefined>;
} & Record<never, never> & {
  configurationId: ReturnType<typeof createConfigurationIdSchema>;
}, undefined>;
type TRWTULIP2GetConfigurationAction = v.InferOutput<ReturnType<typeof createTRWTULIP2GetConfigurationSchema>>;
type TRWTULIP2ResetBatteryAction = v.InferOutput<ReturnType<typeof createTRWTULIP2ResetBatterySchema>>;
type TRWTULIP2DownlinkExtraInput = TRWTULIP2GetConfigurationAction | TRWTULIP2ResetBatteryAction;
//#endregion
//#region ../parsers/src/devices/TRW/parser/tulip2/constants.d.ts
declare function createTULIP2TRWChannels(): [{
  readonly channelId: 0;
  readonly name: "temperature";
  readonly start: number;
  readonly end: number;
}];
declare const TRW_DOWNLINK_FEATURE_FLAGS: {
  readonly maxConfigId: 31;
  readonly channelsStartupTime: false;
  readonly channelsMeasureOffset: false;
  readonly mainConfigBLE: false;
  readonly mainConfigSingleMeasuringRate: false;
};
type TRWTulip2Channels = ReturnType<typeof createTULIP2TRWChannels>;
type TRWTulip2DownlinkInput = TULIP2DownlinkInput<TRWTulip2Channels[number], typeof TRW_DOWNLINK_FEATURE_FLAGS> | TRWTULIP2DownlinkExtraInput;
//#endregion
//#region ../parsers/src/devices/TRW/parser/index.d.ts
declare function useParser$12(): DeviceParser<{
  readonly parserName: "TRW";
  readonly codecs: [TULIP2Codec<[{
    readonly channelId: 0;
    readonly name: "temperature";
    readonly start: number;
    readonly end: number;
  }], "TRW", {
    1: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: [{
            channelId: 0;
            channelName: "temperature";
            value: number;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    2: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 1 | 2;
        measurement: {
          channels: [{
            channelId: 0;
            channelName: "temperature";
            value: number;
          }];
        };
      };
      warnings?: string[] | undefined;
    }>;
    3: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 3;
        processAlarms: ({
          sensorId: 0;
          channelId: 0;
          channelName: "temperature";
          event: 0;
          eventName: "triggered";
          alarmFlags: {
            lowThreshold: boolean;
            highThreshold: boolean;
            fallingSlope: boolean;
            risingSlope: boolean;
            lowThresholdDelay: boolean;
            highThresholdDelay: boolean;
          };
          value: number;
        } | {
          sensorId: 0;
          channelId: 0;
          channelName: "temperature";
          event: 1;
          eventName: "disappeared";
          alarmFlags: {
            lowThreshold: boolean;
            highThreshold: boolean;
            fallingSlope: boolean;
            risingSlope: boolean;
            lowThresholdDelay: boolean;
            highThresholdDelay: boolean;
          };
          value: number;
        })[];
      };
      warnings?: string[] | undefined;
    }>;
    4: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 4;
        technicalAlarms: [{
          sensorId: 0;
          alarmType: number;
          alarmTypeNames: ("SSM communication error" | "SSM identity error")[];
        }];
      };
      warnings?: string[] | undefined;
    }>;
    5: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 5;
        deviceAlarm: {
          alarmType: number;
          alarmTypeNames: ("low battery error" | "duty cycle alarm" | "configuration error")[];
        };
      };
      warnings?: string[] | undefined;
    }>;
    7: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 7;
        deviceInformation: {
          productIdName: string;
          productId: number;
          productSubId: number;
          productSubIdName: string;
          wirelessModuleFirmwareVersion: string;
          wirelessModuleHardwareVersion: string;
          serialNumber: string;
          measurementRangeStart: number;
          measurementRangeEnd: number;
          measurand: 1;
          measurandName: "Temperature";
          unit: 1 | 2;
          unitName: "°C" | "°F";
        };
      };
      warnings?: string[] | undefined;
    }>;
    8: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 8;
        deviceStatistic: {
          batteryLevelNewEvent: boolean;
          batteryLevelPercent: number;
        };
      };
      warnings?: string[] | undefined;
    }>;
    9: Handler<[{
      readonly channelId: 0;
      readonly name: "temperature";
      readonly start: number;
      readonly end: number;
    }], {
      data: {
        configurationId: number;
        messageType: 9;
        channelFailureAlarm: {
          sensorId: 0;
          channelId: 0;
          channelName: "temperature";
          alarmType: number;
          alarmTypeNames: ("MV_STAT_ERROR" | "MV_STAT_WARNING" | "MV_STAT_LIM_HI" | "MV_STAT_LIM_LO" | "MV_STAT_WARNING_2")[];
        };
      };
      warnings?: string[] | undefined;
    }>;
  }, EncoderFactory<TRWTulip2DownlinkInput>, MultipleEncoderFactory<TRWTulip2DownlinkInput>>, TULIP3Codec<"TRWTULIP3Codec", TULIP3UplinkOutput<{
    readonly deviceName: "TRW";
    readonly deviceAlarmConfig: {
      readonly communicationModuleAlarms: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly sensorAlarms: {
        sensorCommunicationError: 1;
        sensorInternalError: 4;
        sensorIdentificationError: 32768;
      };
      readonly sensorChannelAlarms: {
        readonly shortCondition: 1;
        readonly openCondition: 2;
        readonly outOfMinMeasurementRange: 4;
        readonly outOfMaxMeasurementRange: 8;
        readonly outOfMinPhysicalSensorLimit: 16;
        readonly outOfMaxPhysicalSensorLimit: 32;
      };
    };
    readonly sensorChannelConfig: {
      readonly alarmFlags: {
        readonly airTimeLimitation: 8;
        readonly memoryError: 16;
        readonly lowVoltage: 32;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly enableBleAdvertising: true;
          readonly measuringPeriodAlarmOff: true;
          readonly transmissionRateAlarmOff: true;
          readonly measuringPeriodAlarmOn: true;
          readonly transmissionRateAlarmOn: true;
          readonly underVoltageThreshold: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly productId: true;
          readonly productSubId: true;
          readonly channelPlan: true;
          readonly connectedSensors: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly communicationModuleSpecificConfigurationRegisters: {};
        readonly communicationModuleSpecificIdentificationRegisters: {};
      };
      readonly sensor1: {
        readonly alarmFlags: {
          sensorCommunicationError: 1;
          sensorInternalError: 4;
          sensorIdentificationError: 32768;
        };
        readonly registerConfig: {
          readonly tulip3ConfigurationRegisters: {
            readonly samplingChannels: true;
            readonly bootTime: true;
          };
          readonly tulip3IdentificationRegisters: {
            readonly sensorType: true;
            readonly existingChannels: true;
            readonly firmwareVersion: true;
            readonly hardwareVersion: true;
            readonly productionDate: true;
            readonly serialNumberPart1: true;
            readonly serialNumberPart2: true;
          };
          readonly sensorSpecificConfigurationRegisters: {};
          readonly sensorSpecificIdentificationRegisters: {};
        };
        readonly channel1: {
          readonly channelName: "temperature";
          readonly start: 0;
          readonly end: 10;
          readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
          readonly availableMeasurands: ["Temperature"];
          readonly availableUnits: ["°C", "°F"];
          readonly alarmFlags: {
            readonly shortCondition: 1;
            readonly openCondition: 2;
            readonly outOfMinMeasurementRange: 4;
            readonly outOfMaxMeasurementRange: 8;
            readonly outOfMinPhysicalSensorLimit: 16;
            readonly outOfMaxPhysicalSensorLimit: 32;
          };
          readonly registerConfig: {
            tulip3IdentificationRegisters: {
              readonly measurand: true;
              readonly unit: true;
              readonly minMeasureRange: true;
              readonly maxMeasureRange: true;
              readonly minPhysicalLimit: true;
              readonly maxPhysicalLimit: true;
              readonly accuracy: true;
              readonly offset: true;
              readonly gain: true;
              readonly calibrationDate: true;
            };
            tulip3ConfigurationRegisters: {
              readonly processAlarmEnabled: true;
              readonly processAlarmDeadBand: true;
              readonly lowThresholdAlarmValue: true;
              readonly highThresholdAlarmValue: true;
              readonly fallingSlopeAlarmValue: true;
              readonly risingSlopeAlarmValue: true;
              readonly lowThresholdWithDelayAlarmValue: true;
              readonly lowThresholdWithDelayAlarmDelay: true;
              readonly highThresholdWithDelayAlarmValue: true;
              readonly highThresholdWithDelayAlarmDelay: true;
            };
            channelSpecificConfigurationRegisters: {};
            channelSpecificIdentificationRegisters: {};
          };
        };
      };
    };
  }>, "temperature", (input: TULIP3DownlinkActionSingle<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly enableBleAdvertising: true;
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorInternalError: 4;
        sensorIdentificationError: 32768;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
          readonly bootTime: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "temperature";
        readonly start: 0;
        readonly end: 10;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C", "°F"];
        readonly alarmFlags: {
          readonly shortCondition: 1;
          readonly openCondition: 2;
          readonly outOfMinMeasurementRange: 4;
          readonly outOfMaxMeasurementRange: 8;
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => DownlinkOutput, (input: TULIP3DownlinkActionMultiple<{
    readonly alarmFlags: {
      readonly airTimeLimitation: 8;
      readonly memoryError: 16;
      readonly lowVoltage: 32;
    };
    readonly registerConfig: {
      readonly tulip3ConfigurationRegisters: {
        readonly enableBleAdvertising: true;
        readonly measuringPeriodAlarmOff: true;
        readonly transmissionRateAlarmOff: true;
        readonly measuringPeriodAlarmOn: true;
        readonly transmissionRateAlarmOn: true;
        readonly underVoltageThreshold: true;
      };
      readonly tulip3IdentificationRegisters: {
        readonly productId: true;
        readonly productSubId: true;
        readonly channelPlan: true;
        readonly connectedSensors: true;
        readonly firmwareVersion: true;
        readonly hardwareVersion: true;
        readonly productionDate: true;
        readonly serialNumberPart1: true;
        readonly serialNumberPart2: true;
      };
      readonly communicationModuleSpecificConfigurationRegisters: {};
      readonly communicationModuleSpecificIdentificationRegisters: {};
    };
    readonly sensor1: {
      readonly alarmFlags: {
        sensorCommunicationError: 1;
        sensorInternalError: 4;
        sensorIdentificationError: 32768;
      };
      readonly registerConfig: {
        readonly tulip3ConfigurationRegisters: {
          readonly samplingChannels: true;
          readonly bootTime: true;
        };
        readonly tulip3IdentificationRegisters: {
          readonly sensorType: true;
          readonly existingChannels: true;
          readonly firmwareVersion: true;
          readonly hardwareVersion: true;
          readonly productionDate: true;
          readonly serialNumberPart1: true;
          readonly serialNumberPart2: true;
        };
        readonly sensorSpecificConfigurationRegisters: {};
        readonly sensorSpecificIdentificationRegisters: {};
      };
      readonly channel1: {
        readonly channelName: "temperature";
        readonly start: 0;
        readonly end: 10;
        readonly measurementTypes: ["uint16 - TULIP scale 2500 - 12500"];
        readonly availableMeasurands: ["Temperature"];
        readonly availableUnits: ["°C", "°F"];
        readonly alarmFlags: {
          readonly shortCondition: 1;
          readonly openCondition: 2;
          readonly outOfMinMeasurementRange: 4;
          readonly outOfMaxMeasurementRange: 8;
          readonly outOfMinPhysicalSensorLimit: 16;
          readonly outOfMaxPhysicalSensorLimit: 32;
        };
        readonly registerConfig: {
          tulip3IdentificationRegisters: {
            readonly measurand: true;
            readonly unit: true;
            readonly minMeasureRange: true;
            readonly maxMeasureRange: true;
            readonly minPhysicalLimit: true;
            readonly maxPhysicalLimit: true;
            readonly accuracy: true;
            readonly offset: true;
            readonly gain: true;
            readonly calibrationDate: true;
          };
          tulip3ConfigurationRegisters: {
            readonly processAlarmEnabled: true;
            readonly processAlarmDeadBand: true;
            readonly lowThresholdAlarmValue: true;
            readonly highThresholdAlarmValue: true;
            readonly fallingSlopeAlarmValue: true;
            readonly risingSlopeAlarmValue: true;
            readonly lowThresholdWithDelayAlarmValue: true;
            readonly lowThresholdWithDelayAlarmDelay: true;
            readonly highThresholdWithDelayAlarmValue: true;
            readonly highThresholdWithDelayAlarmDelay: true;
          };
          channelSpecificConfigurationRegisters: {};
          channelSpecificIdentificationRegisters: {};
        };
      };
    };
  }>) => MultipleDownlinkOutput>];
}>;
//#endregion
//#region src/index.d.ts
type Prettify<T> = { [K in keyof T]: [Extract<T[K], object>] extends [never] ? T[K] : Prettify<Extract<T[K], object>> | Exclude<T[K], object> } & {};
type InferGenericSuccessfulUplinkData<T> = T extends {
  data: object;
} ? T : never;
type DecodeUplinkInput = UplinkInput;
type DecodeUplinkFailureOutput = GenericUplinkOutputFailure;
type DecodeHexUplinkInput = HexUplinkInput;
type DecodeHexUplinkFailureOutput = GenericUplinkOutputFailure;
type EncodeDownlinkOutput = DownlinkOutput;
type EncodeDownlinkFailureOutput = GenericUplinkOutputFailure;
type EncodeMultipleDownlinksOutput = MultipleDownlinkOutput;
type EncodeMultipleDownlinksFailureOutput = MultipleDownlinkOutputFailure;
type NETRISFDecodeUplinkOutput = ReturnType<ReturnType<typeof useParser$5>['decodeUplink']>;
type NETRISFDecodeUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<NETRISFDecodeUplinkOutput>;
type NETRISFDecodeHexUplinkOutput = ReturnType<ReturnType<typeof useParser$5>['decodeHexUplink']>;
type NETRISFDecodeHexUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<NETRISFDecodeHexUplinkOutput>;
type FLRUNETRIS3DecodeUplinkgOutput = ReturnType<ReturnType<typeof useParser$1>['decodeUplink']>;
type FLRUNETRIS3DecodeUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<FLRUNETRIS3DecodeUplinkgOutput>;
type FLRUNETRIS3DecodeHexUplinkOutput = ReturnType<ReturnType<typeof useParser$1>['decodeHexUplink']>;
type FLRUNETRIS3DecodeHexUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<FLRUNETRIS3DecodeHexUplinkOutput>;
type FLRUNETRIS3EncodeTULIP2DownLinkInput = Prettify<Extract<Parameters<ReturnType<typeof useParser$1>['encodeDownlink']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type FLRUNETRIS3EncodeTULIP3DownLinkInput = Prettify<Extract<Parameters<ReturnType<typeof useParser$1>['encodeDownlink']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type FLRUNETRIS3EncodeTULIP2MultipleDownlinksInput = Prettify<Extract<Parameters<ReturnType<typeof useParser$1>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type FLRUNETRIS3EncodeTULIP3MultipleDownlinksInput = Prettify<Extract<Parameters<ReturnType<typeof useParser$1>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type GD20WDecodeUplinkOutput = ReturnType<ReturnType<typeof useParser$2>['decodeUplink']>;
type GD20WDecodeUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<GD20WDecodeUplinkOutput>;
type GD20WDecodeHexUplinkOutput = ReturnType<ReturnType<typeof useParser$2>['decodeHexUplink']>;
type GD20WDecodeHexUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<GD20WDecodeHexUplinkOutput>;
type NETRIS1DecodeUplinkOutput = ReturnType<ReturnType<typeof useParser$3>['decodeUplink']>;
type NETRIS1DecodeUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<NETRIS1DecodeUplinkOutput>;
type NETRIS1DecodeHexUplinkOutput = ReturnType<ReturnType<typeof useParser$3>['decodeHexUplink']>;
type NETRIS1DecodeHexUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<NETRIS1DecodeHexUplinkOutput>;
type NETRIS1TULIP2EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$3>['encodeDownlink']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type NETRIS1TULIP3EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$3>['encodeDownlink']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type NETRIS1TULIP2EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$3>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type NETRIS1TULIP3EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$3>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type NETRIS2DecodeUplinkOutput = ReturnType<ReturnType<typeof useParser$4>['decodeUplink']>;
type NETRIS2DecodeUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<NETRIS2DecodeUplinkOutput>;
type NETRIS2DecodeHexUplinkOutput = ReturnType<ReturnType<typeof useParser$4>['decodeHexUplink']>;
type NETRIS2DecodeHexUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<NETRIS2DecodeHexUplinkOutput>;
type NETRIS2TULIP2EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$4>['encodeDownlink']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type NETRIS2TULIP3EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$4>['encodeDownlink']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type NETRIS2TULIP2EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$4>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type NETRIS2TULIP3EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$4>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type PEUDecodeUplinkOutput = ReturnType<ReturnType<typeof useParser$6>['decodeUplink']>;
type PEUDecodeUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<PEUDecodeUplinkOutput>;
type PEUDecodeHexUplinkOutput = ReturnType<ReturnType<typeof useParser$6>['decodeHexUplink']>;
type PEUDecodeHexUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<PEUDecodeHexUplinkOutput>;
type PEUTULIP2EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$6>['encodeDownlink']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type PEUTULIP3EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$6>['encodeDownlink']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type PEUTULIP2EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$6>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type PEUTULIP3EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$6>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type PEWDecodeUplinkOutput = ReturnType<ReturnType<typeof useParser$7>['decodeUplink']>;
type PEWDecodeUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<PEWDecodeUplinkOutput>;
type PEWDecodeHexUplinkOutput = ReturnType<ReturnType<typeof useParser$7>['decodeHexUplink']>;
type PEWDecodeHexUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<PEWDecodeHexUplinkOutput>;
type PEWTULIP2EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$7>['encodeDownlink']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type PEWTULIP3EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$7>['encodeDownlink']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type PEWTULIP2EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$7>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type PEWTULIP3EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$7>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type PGUDecodeUplinkOutput = ReturnType<ReturnType<typeof useParser$8>['decodeUplink']>;
type PGUDecodeUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<PGUDecodeUplinkOutput>;
type PGUDecodeHexUplinkOutput = ReturnType<ReturnType<typeof useParser$8>['decodeHexUplink']>;
type PGUDecodeHexUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<PGUDecodeHexUplinkOutput>;
type PGUTULIP2EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$8>['encodeDownlink']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type PGUTULIP3EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$8>['encodeDownlink']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type PGUTULIP2EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$8>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type PGUTULIP3EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$8>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type PGW23DecodeUplinkOutput = ReturnType<ReturnType<typeof useParser$9>['decodeUplink']>;
type PGW23DecodeUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<PGW23DecodeUplinkOutput>;
type PGW23DecodeHexUplinkOutput = ReturnType<ReturnType<typeof useParser$9>['decodeHexUplink']>;
type PGW23DecodeHexUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<PGW23DecodeHexUplinkOutput>;
type TGUDecodeUplinkOutput = ReturnType<ReturnType<typeof useParser$10>['decodeUplink']>;
type TGUDecodeUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<TGUDecodeUplinkOutput>;
type TGUDecodeHexUplinkOutput = ReturnType<ReturnType<typeof useParser$10>['decodeHexUplink']>;
type TGUDecodeHexUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<TGUDecodeHexUplinkOutput>;
type TGUTULIP2EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$10>['encodeDownlink']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type TGUTULIP3EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$10>['encodeDownlink']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type TGUTULIP2EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$10>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type TGUTULIP3EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$10>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type TRUDecodeUplinkOutput = ReturnType<ReturnType<typeof useParser$11>['decodeUplink']>;
type TRUDecodeUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<TRUDecodeUplinkOutput>;
type TRUDecodeHexUplinkOutput = ReturnType<ReturnType<typeof useParser$11>['decodeHexUplink']>;
type TRUDecodeHexUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<TRUDecodeHexUplinkOutput>;
type TRUTULIP2EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$11>['encodeDownlink']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type TRUTULIP3EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$11>['encodeDownlink']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type TRUTULIP2EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$11>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type TRUTULIP3EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$11>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type TRWDecodeUplinkOutput = ReturnType<ReturnType<typeof useParser$12>['decodeUplink']>;
type TRWDecodeUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<TRWDecodeUplinkOutput>;
type TRWDecodeHexUplinkOutput = ReturnType<ReturnType<typeof useParser$12>['decodeHexUplink']>;
type TRWDecodeHexUplinkSuccessfulOutput = InferGenericSuccessfulUplinkData<TRWDecodeHexUplinkOutput>;
type TRWTULIP2EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$12>['encodeDownlink']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type TRWTULIP3EncodeDownlink = Prettify<Extract<Parameters<ReturnType<typeof useParser$12>['encodeDownlink']>[0], {
  protocol: 'TULIP3';
}>['input']>;
type TRWTULIP2EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$12>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP2';
}>['input']>;
type TRWTULIP3EncodeMultipleDownlinks = Prettify<Extract<Parameters<ReturnType<typeof useParser$12>['encodeMultipleDownlinks']>[0], {
  protocol: 'TULIP3';
}>['input']>;
//#endregion
export { useParser as A2GParser, DecodeHexUplinkFailureOutput, DecodeHexUplinkInput, DecodeUplinkFailureOutput, DecodeUplinkInput, EncodeDownlinkFailureOutput, EncodeDownlinkOutput, EncodeMultipleDownlinksFailureOutput, EncodeMultipleDownlinksOutput, FLRUNETRIS3DecodeHexUplinkOutput, FLRUNETRIS3DecodeHexUplinkSuccessfulOutput, FLRUNETRIS3DecodeUplinkSuccessfulOutput, FLRUNETRIS3DecodeUplinkgOutput, FLRUNETRIS3EncodeTULIP2DownLinkInput, FLRUNETRIS3EncodeTULIP2MultipleDownlinksInput, FLRUNETRIS3EncodeTULIP3DownLinkInput, FLRUNETRIS3EncodeTULIP3MultipleDownlinksInput, useParser$1 as FLRUParser, GD20WDecodeHexUplinkOutput, GD20WDecodeHexUplinkSuccessfulOutput, GD20WDecodeUplinkOutput, GD20WDecodeUplinkSuccessfulOutput, useParser$2 as GD20WParser, NETRIS1DecodeHexUplinkOutput, NETRIS1DecodeHexUplinkSuccessfulOutput, NETRIS1DecodeUplinkOutput, NETRIS1DecodeUplinkSuccessfulOutput, useParser$3 as NETRIS1Parser, NETRIS1TULIP2EncodeDownlink, NETRIS1TULIP2EncodeMultipleDownlinks, NETRIS1TULIP3EncodeDownlink, NETRIS1TULIP3EncodeMultipleDownlinks, NETRIS2DecodeHexUplinkOutput, NETRIS2DecodeHexUplinkSuccessfulOutput, NETRIS2DecodeUplinkOutput, NETRIS2DecodeUplinkSuccessfulOutput, useParser$4 as NETRIS2Parser, NETRIS2TULIP2EncodeDownlink, NETRIS2TULIP2EncodeMultipleDownlinks, NETRIS2TULIP3EncodeDownlink, NETRIS2TULIP3EncodeMultipleDownlinks, NETRISFDecodeHexUplinkOutput, NETRISFDecodeHexUplinkSuccessfulOutput, NETRISFDecodeUplinkOutput, NETRISFDecodeUplinkSuccessfulOutput, useParser$5 as NETRISFParser, PEUDecodeHexUplinkOutput, PEUDecodeHexUplinkSuccessfulOutput, PEUDecodeUplinkOutput, PEUDecodeUplinkSuccessfulOutput, useParser$6 as PEUParser, PEUTULIP2EncodeDownlink, PEUTULIP2EncodeMultipleDownlinks, PEUTULIP3EncodeDownlink, PEUTULIP3EncodeMultipleDownlinks, PEWDecodeHexUplinkOutput, PEWDecodeHexUplinkSuccessfulOutput, PEWDecodeUplinkOutput, PEWDecodeUplinkSuccessfulOutput, useParser$7 as PEWParser, PEWTULIP2EncodeDownlink, PEWTULIP2EncodeMultipleDownlinks, PEWTULIP3EncodeDownlink, PEWTULIP3EncodeMultipleDownlinks, PGUDecodeHexUplinkOutput, PGUDecodeHexUplinkSuccessfulOutput, PGUDecodeUplinkOutput, PGUDecodeUplinkSuccessfulOutput, useParser$8 as PGUParser, PGUTULIP2EncodeDownlink, PGUTULIP2EncodeMultipleDownlinks, PGUTULIP3EncodeDownlink, PGUTULIP3EncodeMultipleDownlinks, PGW23DecodeHexUplinkOutput, PGW23DecodeHexUplinkSuccessfulOutput, PGW23DecodeUplinkOutput, PGW23DecodeUplinkSuccessfulOutput, useParser$9 as PGW23Parser, TGUDecodeHexUplinkOutput, TGUDecodeHexUplinkSuccessfulOutput, TGUDecodeUplinkOutput, TGUDecodeUplinkSuccessfulOutput, useParser$10 as TGUParser, TGUTULIP2EncodeDownlink, TGUTULIP2EncodeMultipleDownlinks, TGUTULIP3EncodeDownlink, TGUTULIP3EncodeMultipleDownlinks, TRUDecodeHexUplinkOutput, TRUDecodeHexUplinkSuccessfulOutput, TRUDecodeUplinkOutput, TRUDecodeUplinkSuccessfulOutput, useParser$11 as TRUParser, TRUTULIP2EncodeDownlink, TRUTULIP2EncodeMultipleDownlinks, TRUTULIP3EncodeDownlink, TRUTULIP3EncodeMultipleDownlinks, TRWDecodeHexUplinkOutput, TRWDecodeHexUplinkSuccessfulOutput, TRWDecodeUplinkOutput, TRWDecodeUplinkSuccessfulOutput, useParser$12 as TRWParser, TRWTULIP2EncodeDownlink, TRWTULIP2EncodeMultipleDownlinks, TRWTULIP3EncodeDownlink, TRWTULIP3EncodeMultipleDownlinks };