import _m0 from 'protobufjs/minimal';
import { Instance, Platform, Programmer } from './common';
import { Port } from './port';
export interface BoardDetailsRequest {
    /** Arduino Core Service instance from the `Init` response. */
    instance: Instance | undefined;
    /**
     * The fully qualified board name of the board you want information about
     * (e.g., `arduino:avr:uno`).
     */
    fqbn: string;
    /**
     * If set to true the returned build properties will be left unexpanded, with
     * the variables placeholders exactly as defined in the platform.
     */
    doNotExpandBuildProperties: boolean;
}
export interface BoardDetailsResponse {
    /** The fully qualified board name of the board. */
    fqbn: string;
    /** Name used to identify the board to humans (e.g., Arduino Uno). */
    name: string;
    /** Installed version of the board's platform. */
    version: string;
    /** The board ID component of the FQBN (e.g., `uno`). */
    propertiesId: string;
    /**
     * Board alias that can be used as a more user friendly alternative to the
     * FQBN.
     */
    alias: string;
    /** Whether this is an official or 3rd party board. */
    official: boolean;
    /** URL of the board's pinout documentation. */
    pinout: string;
    /** Data about the package that contains the board's platform. */
    package: Package | undefined;
    /** Data about the board's platform. */
    platform: BoardPlatform | undefined;
    /** Tool dependencies of the board. */
    toolsDependencies: ToolsDependencies[];
    /** The board's custom configuration options. */
    configOptions: ConfigOption[];
    /** List of programmers supported by the board. */
    programmers: Programmer[];
    /** Identifying information for the board (e.g., USB VID/PID). */
    identificationProperties: BoardIdentificationProperties[];
    /** Board build properties used for compiling. */
    buildProperties: string[];
    /** Default programmer for the board. */
    defaultProgrammerId: string;
}
export interface BoardIdentificationProperties {
    /** A set of properties that must all be matched to identify the board. */
    properties: {
        [key: string]: string;
    };
}
export interface BoardIdentificationProperties_PropertiesEntry {
    key: string;
    value: string;
}
export interface Package {
    /** Maintainer of the package. */
    maintainer: string;
    /**
     * The URL of the platforms index file (e.g.,
     * https://downloads.arduino.cc/packages/package_index.json).
     */
    url: string;
    /** A URL provided by the package author, intended to point to their website. */
    websiteUrl: string;
    /** Email address of the package maintainer. */
    email: string;
    /** Package vendor name. */
    name: string;
    /** Resources for getting help about using the package. */
    help: Help | undefined;
}
export interface Help {
    /** URL for getting online help. */
    online: string;
}
export interface BoardPlatform {
    /** Architecture of the platform (e.g., `avr`). */
    architecture: string;
    /** Category of the platform. Set to `Contributed` for 3rd party platforms. */
    category: string;
    /** Download URL of the platform archive file. */
    url: string;
    /** File name of the platform archive. */
    archiveFilename: string;
    /** Checksum of the platform archive. */
    checksum: string;
    /** File size of the platform archive. */
    size: number;
    /** Name used to identify the platform to humans. */
    name: string;
}
export interface ToolsDependencies {
    /** Vendor name of the package containing the tool definition. */
    packager: string;
    /** Tool name. */
    name: string;
    /** Tool version. */
    version: string;
    /** Data for the operating system-specific builds of the tool. */
    systems: Systems[];
}
export interface Systems {
    /** Checksum of the tool archive. */
    checksum: string;
    /** Operating system identifier. */
    host: string;
    /** File name of the tool archive. */
    archiveFilename: string;
    /** Download URL of the tool archive. */
    url: string;
    /** File size of the tool archive. */
    size: number;
}
export interface ConfigOption {
    /** ID of the configuration option. For identifying the option to machines. */
    option: string;
    /** Name of the configuration option for identifying the option to humans. */
    optionLabel: string;
    /** Possible values of the configuration option. */
    values: ConfigValue[];
}
export interface ConfigValue {
    /** The configuration option value. */
    value: string;
    /** Label to identify the configuration option to humans. */
    valueLabel: string;
    /** Whether the configuration option is selected. */
    selected: boolean;
}
export interface BoardListRequest {
    /** Arduino Core Service instance from the `Init` response. */
    instance: Instance | undefined;
    /** Search for boards for the given time (in milliseconds). */
    timeout: number;
    /**
     * The fully qualified board name of the board you want information about
     * (e.g., `arduino:avr:uno`).
     */
    fqbn: string;
    /**
     * If set to true, when a board cannot be identified using the installed
     * platforms, the cloud API will not be called to detect the board.
     */
    skipCloudApiForBoardDetection: boolean;
}
export interface BoardListResponse {
    /** List of ports and the boards detected on those ports. */
    ports: DetectedPort[];
    /** Warning messages or errors coming from the discoveries. */
    warnings: string[];
}
export interface DetectedPort {
    /** The possible boards attached to the port. */
    matchingBoards: BoardListItem[];
    /** The port details. */
    port: Port | undefined;
}
export interface BoardListAllRequest {
    /** Arduino Core Service instance from the `Init` response. */
    instance: Instance | undefined;
    /** The search query to filter the board list by. */
    searchArgs: string[];
    /** Set to true to get also the boards marked as "hidden" in the platform. */
    includeHiddenBoards: boolean;
}
export interface BoardListAllResponse {
    /** List of installed boards. */
    boards: BoardListItem[];
}
export interface BoardListWatchRequest {
    /** Arduino Core Service instance from the `Init` response. */
    instance: Instance | undefined;
    /**
     * If set to true, when a board cannot be identified using the installed
     * platforms, the cloud API will not be called to detect the board.
     */
    skipCloudApiForBoardDetection: boolean;
}
export interface BoardListWatchResponse {
    /** Event type as received from the serial discovery tool. */
    eventType: string;
    /** Information about the port. */
    port: DetectedPort | undefined;
    /** Eventual errors when detecting connected boards. */
    error: string;
}
export interface BoardListItem {
    /** The name for use when identifying the board to a human. */
    name: string;
    /** The fully qualified board name. Used to identify the board to a machine. */
    fqbn: string;
    /** If the board is marked as "hidden" in the platform. */
    isHidden: boolean;
    /** Platform this board belongs to. */
    platform: Platform | undefined;
}
export interface BoardSearchRequest {
    /** Arduino Core Service instance from the `Init` response. */
    instance: Instance | undefined;
    /** The search query to filter the board list by. */
    searchArgs: string;
    /**
     * Set to true to get also the boards marked as "hidden" in installed
     * platforms.
     */
    includeHiddenBoards: boolean;
}
export interface BoardSearchResponse {
    /** List of installed and installable boards. */
    boards: BoardListItem[];
}
export interface BoardIdentifyRequest {
    /** Arduino Core Service instance from the `Init` response. */
    instance: Instance | undefined;
    /** A set of properties to search (can be taken from a Port message). */
    properties: {
        [key: string]: string;
    };
    /**
     * If set to true, when a board cannot be identified using the installed
     * platforms, the cloud API will be called to detect the board.
     */
    useCloudApiForUnknownBoardDetection: boolean;
}
export interface BoardIdentifyRequest_PropertiesEntry {
    key: string;
    value: string;
}
export interface BoardIdentifyResponse {
    /** List of matching boards (they may have an FQBN with options set). */
    boards: BoardListItem[];
}
export declare const BoardDetailsRequest: {
    encode(message: BoardDetailsRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardDetailsRequest;
    fromJSON(object: any): BoardDetailsRequest;
    toJSON(message: BoardDetailsRequest): unknown;
    create(base?: DeepPartial<BoardDetailsRequest>): BoardDetailsRequest;
    fromPartial(object: DeepPartial<BoardDetailsRequest>): BoardDetailsRequest;
};
export declare const BoardDetailsResponse: {
    encode(message: BoardDetailsResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardDetailsResponse;
    fromJSON(object: any): BoardDetailsResponse;
    toJSON(message: BoardDetailsResponse): unknown;
    create(base?: DeepPartial<BoardDetailsResponse>): BoardDetailsResponse;
    fromPartial(object: DeepPartial<BoardDetailsResponse>): BoardDetailsResponse;
};
export declare const BoardIdentificationProperties: {
    encode(message: BoardIdentificationProperties, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardIdentificationProperties;
    fromJSON(object: any): BoardIdentificationProperties;
    toJSON(message: BoardIdentificationProperties): unknown;
    create(base?: DeepPartial<BoardIdentificationProperties>): BoardIdentificationProperties;
    fromPartial(object: DeepPartial<BoardIdentificationProperties>): BoardIdentificationProperties;
};
export declare const BoardIdentificationProperties_PropertiesEntry: {
    encode(message: BoardIdentificationProperties_PropertiesEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardIdentificationProperties_PropertiesEntry;
    fromJSON(object: any): BoardIdentificationProperties_PropertiesEntry;
    toJSON(message: BoardIdentificationProperties_PropertiesEntry): unknown;
    create(base?: DeepPartial<BoardIdentificationProperties_PropertiesEntry>): BoardIdentificationProperties_PropertiesEntry;
    fromPartial(object: DeepPartial<BoardIdentificationProperties_PropertiesEntry>): BoardIdentificationProperties_PropertiesEntry;
};
export declare const Package: {
    encode(message: Package, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Package;
    fromJSON(object: any): Package;
    toJSON(message: Package): unknown;
    create(base?: DeepPartial<Package>): Package;
    fromPartial(object: DeepPartial<Package>): Package;
};
export declare const Help: {
    encode(message: Help, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Help;
    fromJSON(object: any): Help;
    toJSON(message: Help): unknown;
    create(base?: DeepPartial<Help>): Help;
    fromPartial(object: DeepPartial<Help>): Help;
};
export declare const BoardPlatform: {
    encode(message: BoardPlatform, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardPlatform;
    fromJSON(object: any): BoardPlatform;
    toJSON(message: BoardPlatform): unknown;
    create(base?: DeepPartial<BoardPlatform>): BoardPlatform;
    fromPartial(object: DeepPartial<BoardPlatform>): BoardPlatform;
};
export declare const ToolsDependencies: {
    encode(message: ToolsDependencies, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ToolsDependencies;
    fromJSON(object: any): ToolsDependencies;
    toJSON(message: ToolsDependencies): unknown;
    create(base?: DeepPartial<ToolsDependencies>): ToolsDependencies;
    fromPartial(object: DeepPartial<ToolsDependencies>): ToolsDependencies;
};
export declare const Systems: {
    encode(message: Systems, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): Systems;
    fromJSON(object: any): Systems;
    toJSON(message: Systems): unknown;
    create(base?: DeepPartial<Systems>): Systems;
    fromPartial(object: DeepPartial<Systems>): Systems;
};
export declare const ConfigOption: {
    encode(message: ConfigOption, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ConfigOption;
    fromJSON(object: any): ConfigOption;
    toJSON(message: ConfigOption): unknown;
    create(base?: DeepPartial<ConfigOption>): ConfigOption;
    fromPartial(object: DeepPartial<ConfigOption>): ConfigOption;
};
export declare const ConfigValue: {
    encode(message: ConfigValue, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): ConfigValue;
    fromJSON(object: any): ConfigValue;
    toJSON(message: ConfigValue): unknown;
    create(base?: DeepPartial<ConfigValue>): ConfigValue;
    fromPartial(object: DeepPartial<ConfigValue>): ConfigValue;
};
export declare const BoardListRequest: {
    encode(message: BoardListRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardListRequest;
    fromJSON(object: any): BoardListRequest;
    toJSON(message: BoardListRequest): unknown;
    create(base?: DeepPartial<BoardListRequest>): BoardListRequest;
    fromPartial(object: DeepPartial<BoardListRequest>): BoardListRequest;
};
export declare const BoardListResponse: {
    encode(message: BoardListResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardListResponse;
    fromJSON(object: any): BoardListResponse;
    toJSON(message: BoardListResponse): unknown;
    create(base?: DeepPartial<BoardListResponse>): BoardListResponse;
    fromPartial(object: DeepPartial<BoardListResponse>): BoardListResponse;
};
export declare const DetectedPort: {
    encode(message: DetectedPort, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): DetectedPort;
    fromJSON(object: any): DetectedPort;
    toJSON(message: DetectedPort): unknown;
    create(base?: DeepPartial<DetectedPort>): DetectedPort;
    fromPartial(object: DeepPartial<DetectedPort>): DetectedPort;
};
export declare const BoardListAllRequest: {
    encode(message: BoardListAllRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardListAllRequest;
    fromJSON(object: any): BoardListAllRequest;
    toJSON(message: BoardListAllRequest): unknown;
    create(base?: DeepPartial<BoardListAllRequest>): BoardListAllRequest;
    fromPartial(object: DeepPartial<BoardListAllRequest>): BoardListAllRequest;
};
export declare const BoardListAllResponse: {
    encode(message: BoardListAllResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardListAllResponse;
    fromJSON(object: any): BoardListAllResponse;
    toJSON(message: BoardListAllResponse): unknown;
    create(base?: DeepPartial<BoardListAllResponse>): BoardListAllResponse;
    fromPartial(object: DeepPartial<BoardListAllResponse>): BoardListAllResponse;
};
export declare const BoardListWatchRequest: {
    encode(message: BoardListWatchRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardListWatchRequest;
    fromJSON(object: any): BoardListWatchRequest;
    toJSON(message: BoardListWatchRequest): unknown;
    create(base?: DeepPartial<BoardListWatchRequest>): BoardListWatchRequest;
    fromPartial(object: DeepPartial<BoardListWatchRequest>): BoardListWatchRequest;
};
export declare const BoardListWatchResponse: {
    encode(message: BoardListWatchResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardListWatchResponse;
    fromJSON(object: any): BoardListWatchResponse;
    toJSON(message: BoardListWatchResponse): unknown;
    create(base?: DeepPartial<BoardListWatchResponse>): BoardListWatchResponse;
    fromPartial(object: DeepPartial<BoardListWatchResponse>): BoardListWatchResponse;
};
export declare const BoardListItem: {
    encode(message: BoardListItem, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardListItem;
    fromJSON(object: any): BoardListItem;
    toJSON(message: BoardListItem): unknown;
    create(base?: DeepPartial<BoardListItem>): BoardListItem;
    fromPartial(object: DeepPartial<BoardListItem>): BoardListItem;
};
export declare const BoardSearchRequest: {
    encode(message: BoardSearchRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardSearchRequest;
    fromJSON(object: any): BoardSearchRequest;
    toJSON(message: BoardSearchRequest): unknown;
    create(base?: DeepPartial<BoardSearchRequest>): BoardSearchRequest;
    fromPartial(object: DeepPartial<BoardSearchRequest>): BoardSearchRequest;
};
export declare const BoardSearchResponse: {
    encode(message: BoardSearchResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardSearchResponse;
    fromJSON(object: any): BoardSearchResponse;
    toJSON(message: BoardSearchResponse): unknown;
    create(base?: DeepPartial<BoardSearchResponse>): BoardSearchResponse;
    fromPartial(object: DeepPartial<BoardSearchResponse>): BoardSearchResponse;
};
export declare const BoardIdentifyRequest: {
    encode(message: BoardIdentifyRequest, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardIdentifyRequest;
    fromJSON(object: any): BoardIdentifyRequest;
    toJSON(message: BoardIdentifyRequest): unknown;
    create(base?: DeepPartial<BoardIdentifyRequest>): BoardIdentifyRequest;
    fromPartial(object: DeepPartial<BoardIdentifyRequest>): BoardIdentifyRequest;
};
export declare const BoardIdentifyRequest_PropertiesEntry: {
    encode(message: BoardIdentifyRequest_PropertiesEntry, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardIdentifyRequest_PropertiesEntry;
    fromJSON(object: any): BoardIdentifyRequest_PropertiesEntry;
    toJSON(message: BoardIdentifyRequest_PropertiesEntry): unknown;
    create(base?: DeepPartial<BoardIdentifyRequest_PropertiesEntry>): BoardIdentifyRequest_PropertiesEntry;
    fromPartial(object: DeepPartial<BoardIdentifyRequest_PropertiesEntry>): BoardIdentifyRequest_PropertiesEntry;
};
export declare const BoardIdentifyResponse: {
    encode(message: BoardIdentifyResponse, writer?: _m0.Writer): _m0.Writer;
    decode(input: _m0.Reader | Uint8Array, length?: number): BoardIdentifyResponse;
    fromJSON(object: any): BoardIdentifyResponse;
    toJSON(message: BoardIdentifyResponse): unknown;
    create(base?: DeepPartial<BoardIdentifyResponse>): BoardIdentifyResponse;
    fromPartial(object: DeepPartial<BoardIdentifyResponse>): BoardIdentifyResponse;
};
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.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=board.d.ts.map