import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import Long from "long";
/**
 * Possible log levels.
 *
 * NOTE (known proto3 deviation): The zero value is LOG_LEVEL_TRACE rather than
 * LOG_LEVEL_UNSPECIFIED. This is intentional because the backend maps these values
 * directly to the host logging framework's integer levels (0 = Trace). Changing the
 * zero value would require cascading changes across the service implementation.
 * Consumers should not rely on default-constructed messages having a neutral log level.
 */
export declare enum LogLevel {
    /**
     * LOG_LEVEL_TRACE - Logs that contain the most detailed messages. These messages may contain sensitive application data.
     * These messages are disabled by default and should never be enabled in a production environment.
     */
    LOG_LEVEL_TRACE = 0,
    /**
     * LOG_LEVEL_DEBUG - Logs that are used for interactive investigation during development. These logs should primarily
     * contain information useful for debugging and have no long-term value.
     */
    LOG_LEVEL_DEBUG = 1,
    /** LOG_LEVEL_INFORMATION - Logs that track the general flow of the application. These logs should have long-term value. */
    LOG_LEVEL_INFORMATION = 2,
    /**
     * LOG_LEVEL_WARNING - Logs that highlight an abnormal or unexpected event in the application flow, but do not otherwise
     * cause the application execution to stop.
     */
    LOG_LEVEL_WARNING = 3,
    /**
     * LOG_LEVEL_ERROR - Logs that highlight when the current flow of execution is stopped due to a failure. These should
     * indicate a failure in the current activity, not an application-wide failure.
     */
    LOG_LEVEL_ERROR = 4,
    /**
     * LOG_LEVEL_CRITICAL - Logs that describe an unrecoverable application or system crash, or a catastrophic failure that
     * requires immediate attention.
     */
    LOG_LEVEL_CRITICAL = 5,
    /** LOG_LEVEL_NONE - Not used for writing log messages. Specifies that a logging category should not write any messages. */
    LOG_LEVEL_NONE = 6,
    UNRECOGNIZED = -1
}
export declare function logLevelFromJSON(object: any): LogLevel;
export declare function logLevelToJSON(object: LogLevel): string;
/**
 * Possible application events.
 * @internal
 */
export declare enum AppEvent {
    APP_EVENT_UNSPECIFIED = 0,
    /** APP_EVENT_LICENSE_INFO_CHANGED - Raised when the license information has changed. */
    APP_EVENT_LICENSE_INFO_CHANGED = 1,
    /** APP_EVENT_EXTENSION_CHANGED - Raised when an extension has been installed, updated, or uninstalled. */
    APP_EVENT_EXTENSION_CHANGED = 2,
    UNRECOGNIZED = -1
}
export declare function appEventFromJSON(object: any): AppEvent;
export declare function appEventToJSON(object: AppEvent): string;
/**
 * A request message for setting log level.
 * @internal
 */
export interface SetLogLevelRequest {
    /** The new log level. */
    logLevel: LogLevel;
}
/**
 * A response message for receiving the current log level.
 * @internal
 */
export interface GetLogLevelResponse {
    /** The current log level. */
    logLevel: LogLevel;
}
/** A log message. */
export interface LogMessage {
    /** Time of the message. */
    time: Long;
    /** The log level. */
    logLevel: LogLevel;
    /** The event identifier. */
    eventId: number;
    /** The category name. */
    categoryName: string;
    /** The message. */
    message: string;
}
/** A collection of log messages. */
export interface LogMessages {
    /** The log message items. */
    items: LogMessage[];
}
/**
 * License information.
 * @internal
 */
export interface LicenseInformation {
    /** The license key. */
    licenseKey: string;
    /** The product identifier. */
    productId: string;
    /** The product name. */
    productName: string;
    /** The product version. */
    productVersion: string;
    /** The instance identifier. */
    instanceId: string;
    /** The instance name. */
    instanceName: string;
    /** Expiration date as unix time is in seconds. */
    expirationDate: Long;
    /** A flag indicating if the license is valid. */
    isValid: boolean;
}
/**
 * A collection of licenses.
 * @internal
 */
export interface Licenses {
    /** The license information items. */
    items: LicenseInformation[];
}
/**
 * Event arguments.
 * @internal
 */
export interface AppEventArgs {
    /** The application event type. */
    eventType: AppEvent;
    /** A collection of registered licenses. */
    licenses?: Licenses | undefined;
    /** A collection of extension information. */
    extensions?: ExtensionInfos | undefined;
}
/**
 * Message holding extension information.
 * @internal
 */
export interface ExtensionInfo {
    /** Timestamp of when the extension was packed */
    createdDate: string;
    /** Extension name. */
    name: string;
    /** Extension display name. */
    displayName: string;
    /** Extension description. */
    description: string;
    /** Extension version. */
    version: string;
    /** Extension author. */
    author: string;
    /** Extension data, i.e., default configuration for a service extension. */
    data: string;
    /** Extension type. */
    extensionType?: string | undefined;
    /** Product identifier of the extension, used for license validation. */
    productId?: string | undefined;
    /** European Article Number (EAN) of the extension. */
    ean?: string | undefined;
    /** License type of the extension. */
    licenseType?: string | undefined;
    /** Publisher of the extension, extracted from signing certificate. */
    publisher?: string | undefined;
    /** Indicates if the extension requires activation. */
    requiresActivation?: boolean | undefined;
    /** Copyright notice of the extension. */
    copyrightNotice?: string | undefined;
    /** End User License Agreement (EULA) of the extension. */
    eula?: string | undefined;
    /** Signed date of the extension, ISO 8601 timestamp. */
    signedDate?: string | undefined;
}
/**
 * A collection of extension information.
 * @internal
 */
export interface ExtensionInfos {
    /** A collection of extension information items. */
    items: ExtensionInfo[];
}
/**
 * Request message for installing a GUI or service extension.
 * @internal
 */
export interface InstallExtensionRequest {
    /** Full path to the service extension WebAssembly file (.wasm file), or the GUI extension Node.js package file (.tgz file). */
    filePath: string;
    /** An optional flag that can be used if an extension should be replace/updated with a new version. */
    replaceExisting?: boolean | undefined;
}
/**
 * Request message for uninstalling a GUI or service extension.
 * @internal
 */
export interface UninstallExtensionRequest {
    /** Name of the extension. */
    name: string;
}
/**
 * Request message for getting information about an extension, either from a service extension WebAssembly file (.wasm file),
 * a GUI extension Node.js package file (.tgz file), or from an installed extension.
 * @internal
 */
export interface GetExtensionInfoRequest {
    /**
     * Full path to the service extension WebAssembly file (.wasm file), the GUI extension Node.js package file (.tgz file),
     * or the extension name if it is already installed.
     */
    filePathOrName: string;
}
/**
 * Response message for getting licenses.
 * @internal
 */
export interface GetLicensesResponse {
    /** A collection of registered licenses. */
    licenses: LicenseInformation[];
}
/**
 * Request message for activating a license.
 * @internal
 */
export interface ActivateLicenseRequest {
    /** The license key. */
    licenseKey: string;
    /** Optional product_id, used if activating anything but the base CanKing product. */
    productId: string;
}
/**
 * Message for getting about information.
 * @internal
 */
export interface AboutInformation {
    /** The API version used by the service. */
    apiVersion: string;
    /** The service version running */
    serviceVersion: string;
    /** The Canlib version used */
    canlibVersion: string;
}
export declare const SetLogLevelRequest: MessageFns<SetLogLevelRequest>;
export declare const GetLogLevelResponse: MessageFns<GetLogLevelResponse>;
export declare const LogMessage: MessageFns<LogMessage>;
export declare const LogMessages: MessageFns<LogMessages>;
export declare const LicenseInformation: MessageFns<LicenseInformation>;
export declare const Licenses: MessageFns<Licenses>;
export declare const AppEventArgs: MessageFns<AppEventArgs>;
export declare const ExtensionInfo: MessageFns<ExtensionInfo>;
export declare const ExtensionInfos: MessageFns<ExtensionInfos>;
export declare const InstallExtensionRequest: MessageFns<InstallExtensionRequest>;
export declare const UninstallExtensionRequest: MessageFns<UninstallExtensionRequest>;
export declare const GetExtensionInfoRequest: MessageFns<GetExtensionInfoRequest>;
export declare const GetLicensesResponse: MessageFns<GetLicensesResponse>;
export declare const ActivateLicenseRequest: MessageFns<ActivateLicenseRequest>;
export declare const AboutInformation: MessageFns<AboutInformation>;
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
type DeepPartial<T> = T extends Builtin ? T : T extends Long ? string | number | Long : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
type KeysOfUnion<T> = T extends T ? keyof T : never;
type Exact<P, I extends P> = P extends Builtin ? P : P & {
    [K in keyof P]: Exact<P[K], I[K]>;
} & {
    [K in Exclude<keyof I, KeysOfUnion<P>>]: never;
};
interface MessageFns<T> {
    encode(message: T, writer?: BinaryWriter): BinaryWriter;
    decode(input: BinaryReader | Uint8Array, length?: number): T;
    fromJSON(object: any): T;
    toJSON(message: T): unknown;
    create<I extends Exact<DeepPartial<T>, I>>(base?: I): T;
    fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T;
}
export {};
