import _m0 from 'protobufjs/minimal';
import { Instance, MonitorPortConfiguration } from './common';
import { Port } from './port';
export interface MonitorRequest {
    message?: {
        $case: 'openRequest';
        openRequest: MonitorPortOpenRequest;
    } | {
        $case: 'txData';
        txData: Uint8Array;
    } | {
        $case: 'updatedConfiguration';
        updatedConfiguration: MonitorPortConfiguration;
    } | {
        $case: 'close';
        close: boolean;
    } | undefined;
}
export interface MonitorPortOpenRequest {
    /** Arduino Core Service instance from the `Init` response. */
    instance: Instance | undefined;
    /** Port to open, must be filled only on the first request. */
    port: Port | undefined;
    /**
     * The board FQBN we are trying to connect to. This is optional, and  it's
     * needed to disambiguate if more than one platform provides the pluggable
     * monitor for a given port protocol.
     */
    fqbn: string;
    /** Port configuration, optional, contains settings of the port to be applied. */
    portConfiguration: MonitorPortConfiguration | undefined;
}
export interface MonitorResponse {
    message?: {
        $case: 'error';
        error: string;
    } | {
        $case: 'rxData';
        rxData: Uint8Array;
    } | {
        $case: 'appliedSettings';
        appliedSettings: MonitorPortConfiguration;
    } | {
        $case: 'success';
        success: boolean;
    } | undefined;
}
export interface EnumerateMonitorPortSettingsRequest {
    /** Arduino Core Service instance from the `Init` response. */
    instance: Instance | undefined;
    /** The port protocol to enumerate settings. */
    portProtocol: string;
    /**
     * The board FQBN we are trying to connect to. This is optional, and it's
     * needed to disambiguate if more than one platform provides the pluggable
     * monitor for a given port protocol.
     */
    fqbn: string;
}
export interface EnumerateMonitorPortSettingsResponse {
    /**
     * A list of descriptors of the settings that may be changed for the monitor
     * port.
     */
    settings: MonitorPortSettingDescriptor[];
}
export interface MonitorPortSettingDescriptor {
    /** The setting identifier. */
    settingId: string;
    /** A human-readable label of the setting (to be displayed on the GUI). */
    label: string;
    /** The setting type (at the moment only "enum" is avaiable). */
    type: string;
    /** The values allowed on "enum" types. */
    enumValues: string[];
    /** The selected or default value. */
    value: string;
}
export declare const MonitorRequest: {
    encode(message: MonitorRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MonitorRequest;
    fromJSON(object: any): MonitorRequest;
    toJSON(message: MonitorRequest): unknown;
    create(base?: DeepPartial<MonitorRequest>): MonitorRequest;
    fromPartial(object: DeepPartial<MonitorRequest>): MonitorRequest;
};
export declare const MonitorPortOpenRequest: {
    encode(message: MonitorPortOpenRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MonitorPortOpenRequest;
    fromJSON(object: any): MonitorPortOpenRequest;
    toJSON(message: MonitorPortOpenRequest): unknown;
    create(base?: DeepPartial<MonitorPortOpenRequest>): MonitorPortOpenRequest;
    fromPartial(object: DeepPartial<MonitorPortOpenRequest>): MonitorPortOpenRequest;
};
export declare const MonitorResponse: {
    encode(message: MonitorResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MonitorResponse;
    fromJSON(object: any): MonitorResponse;
    toJSON(message: MonitorResponse): unknown;
    create(base?: DeepPartial<MonitorResponse>): MonitorResponse;
    fromPartial(object: DeepPartial<MonitorResponse>): MonitorResponse;
};
export declare const EnumerateMonitorPortSettingsRequest: {
    encode(message: EnumerateMonitorPortSettingsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): EnumerateMonitorPortSettingsRequest;
    fromJSON(object: any): EnumerateMonitorPortSettingsRequest;
    toJSON(message: EnumerateMonitorPortSettingsRequest): unknown;
    create(base?: DeepPartial<EnumerateMonitorPortSettingsRequest>): EnumerateMonitorPortSettingsRequest;
    fromPartial(object: DeepPartial<EnumerateMonitorPortSettingsRequest>): EnumerateMonitorPortSettingsRequest;
};
export declare const EnumerateMonitorPortSettingsResponse: {
    encode(message: EnumerateMonitorPortSettingsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): EnumerateMonitorPortSettingsResponse;
    fromJSON(object: any): EnumerateMonitorPortSettingsResponse;
    toJSON(message: EnumerateMonitorPortSettingsResponse): unknown;
    create(base?: DeepPartial<EnumerateMonitorPortSettingsResponse>): EnumerateMonitorPortSettingsResponse;
    fromPartial(object: DeepPartial<EnumerateMonitorPortSettingsResponse>): EnumerateMonitorPortSettingsResponse;
};
export declare const MonitorPortSettingDescriptor: {
    encode(message: MonitorPortSettingDescriptor, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): MonitorPortSettingDescriptor;
    fromJSON(object: any): MonitorPortSettingDescriptor;
    toJSON(message: MonitorPortSettingDescriptor): unknown;
    create(base?: DeepPartial<MonitorPortSettingDescriptor>): MonitorPortSettingDescriptor;
    fromPartial(object: DeepPartial<MonitorPortSettingDescriptor>): MonitorPortSettingDescriptor;
};
declare type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
declare type DeepPartial<T> = T extends Builtin ? T : T extends Array<infer U> ? Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {
    $case: string;
} ? {
    [K in keyof Omit<T, '$case'>]?: DeepPartial<T[K]>;
} & {
    $case: T['$case'];
} : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
export {};
//# sourceMappingURL=monitor.d.ts.map