import { ServiceType } from "@protobuf-ts/runtime-rpc";
import type { BinaryWriteOptions } from "@protobuf-ts/runtime";
import type { IBinaryWriter } from "@protobuf-ts/runtime";
import type { BinaryReadOptions } from "@protobuf-ts/runtime";
import type { IBinaryReader } from "@protobuf-ts/runtime";
import type { PartialMessage } from "@protobuf-ts/runtime";
import { MessageType } from "@protobuf-ts/runtime";
import { ReasonCode } from "./common.js";
import { LocalHostRequirements } from "./local_runtime_types.js";
import { LocalWarmState } from "./local_runtime_types.js";
import { LocalBundleState } from "./local_runtime_types.js";
import { Timestamp } from "../../google/protobuf/timestamp.js";
/**
 * @generated from protobuf message nimi.runtime.v1.ModelCapabilityProfile
 */
export interface ModelCapabilityProfile {
    /**
     * @generated from protobuf field: bool supports_text_generate = 1
     */
    supportsTextGenerate: boolean;
    /**
     * @generated from protobuf field: bool supports_text_stream = 2
     */
    supportsTextStream: boolean;
    /**
     * @generated from protobuf field: bool supports_embedding = 3
     */
    supportsEmbedding: boolean;
    /**
     * @generated from protobuf field: bool supports_image_generation = 4
     */
    supportsImageGeneration: boolean;
    /**
     * @generated from protobuf field: bool supports_video_generation = 5
     */
    supportsVideoGeneration: boolean;
    /**
     * @generated from protobuf field: bool supports_speech_synthesis = 6
     */
    supportsSpeechSynthesis: boolean;
    /**
     * @generated from protobuf field: bool supports_speech_transcription = 7
     */
    supportsSpeechTranscription: boolean;
    /**
     * @generated from protobuf field: bool supports_async_media_job = 8
     */
    supportsAsyncMediaJob: boolean;
    /**
     * @generated from protobuf field: bool supports_streaming = 9
     */
    supportsStreaming: boolean;
}
/**
 * @generated from protobuf message nimi.runtime.v1.ModelDescriptor
 */
export interface ModelDescriptor {
    /**
     * @generated from protobuf field: string model_id = 1
     */
    modelId: string;
    /**
     * @generated from protobuf field: string version = 2
     */
    version: string;
    /**
     * @generated from protobuf field: nimi.runtime.v1.ModelStatus status = 3
     */
    status: ModelStatus;
    /**
     * @generated from protobuf field: repeated string capabilities = 4
     */
    capabilities: string[];
    /**
     * @generated from protobuf field: google.protobuf.Timestamp last_health_at = 5
     */
    lastHealthAt?: Timestamp;
    /**
     * @generated from protobuf field: nimi.runtime.v1.ModelCapabilityProfile capability_profile = 6
     */
    capabilityProfile?: ModelCapabilityProfile;
    /**
     * @generated from protobuf field: string logical_model_id = 7
     */
    logicalModelId: string;
    /**
     * @generated from protobuf field: string family = 8
     */
    family: string;
    /**
     * @generated from protobuf field: repeated string artifact_roles = 9
     */
    artifactRoles: string[];
    /**
     * @generated from protobuf field: string preferred_engine = 10
     */
    preferredEngine: string;
    /**
     * @generated from protobuf field: repeated string fallback_engines = 11
     */
    fallbackEngines: string[];
    /**
     * @generated from protobuf field: nimi.runtime.v1.LocalBundleState bundle_state = 12
     */
    bundleState: LocalBundleState;
    /**
     * @generated from protobuf field: nimi.runtime.v1.LocalWarmState warm_state = 13
     */
    warmState: LocalWarmState;
    /**
     * @generated from protobuf field: nimi.runtime.v1.LocalHostRequirements host_requirements = 14
     */
    hostRequirements?: LocalHostRequirements;
}
/**
 * @generated from protobuf message nimi.runtime.v1.ListModelsRequest
 */
export interface ListModelsRequest {
}
/**
 * @generated from protobuf message nimi.runtime.v1.ListModelsResponse
 */
export interface ListModelsResponse {
    /**
     * @generated from protobuf field: repeated nimi.runtime.v1.ModelDescriptor models = 1
     */
    models: ModelDescriptor[];
}
/**
 * @generated from protobuf message nimi.runtime.v1.PullModelRequest
 */
export interface PullModelRequest {
    /**
     * @generated from protobuf field: string app_id = 1
     */
    appId: string;
    /**
     * @generated from protobuf field: string model_ref = 2
     */
    modelRef: string;
    /**
     * @generated from protobuf field: string source = 3
     */
    source: string;
    /**
     * @generated from protobuf field: string digest = 4
     */
    digest: string;
}
/**
 * @generated from protobuf message nimi.runtime.v1.PullModelResponse
 */
export interface PullModelResponse {
    /**
     * @generated from protobuf field: string task_id = 1
     */
    taskId: string;
    /**
     * @generated from protobuf field: bool accepted = 2
     */
    accepted: boolean;
    /**
     * @generated from protobuf field: nimi.runtime.v1.ReasonCode reason_code = 3
     */
    reasonCode: ReasonCode;
}
/**
 * @generated from protobuf message nimi.runtime.v1.RemoveModelRequest
 */
export interface RemoveModelRequest {
    /**
     * @generated from protobuf field: string app_id = 1
     */
    appId: string;
    /**
     * @generated from protobuf field: string model_id = 2
     */
    modelId: string;
}
/**
 * @generated from protobuf message nimi.runtime.v1.CheckModelHealthRequest
 */
export interface CheckModelHealthRequest {
    /**
     * @generated from protobuf field: string model_id = 1
     */
    modelId: string;
    /**
     * @generated from protobuf field: string app_id = 2
     */
    appId: string;
}
/**
 * @generated from protobuf message nimi.runtime.v1.CheckModelHealthResponse
 */
export interface CheckModelHealthResponse {
    /**
     * @generated from protobuf field: bool healthy = 1
     */
    healthy: boolean;
    /**
     * @generated from protobuf field: nimi.runtime.v1.ReasonCode reason_code = 2
     */
    reasonCode: ReasonCode;
    /**
     * @generated from protobuf field: string action_hint = 3
     */
    actionHint: string;
}
/**
 * @generated from protobuf enum nimi.runtime.v1.ModelStatus
 */
export declare enum ModelStatus {
    /**
     * @generated from protobuf enum value: MODEL_STATUS_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: MODEL_STATUS_INSTALLED = 1;
     */
    INSTALLED = 1,
    /**
     * @generated from protobuf enum value: MODEL_STATUS_PULLING = 2;
     */
    PULLING = 2,
    /**
     * @generated from protobuf enum value: MODEL_STATUS_FAILED = 3;
     */
    FAILED = 3,
    /**
     * @generated from protobuf enum value: MODEL_STATUS_REMOVED = 4;
     */
    REMOVED = 4
}
declare class ModelCapabilityProfile$Type extends MessageType<ModelCapabilityProfile> {
    constructor();
    create(value?: PartialMessage<ModelCapabilityProfile>): ModelCapabilityProfile;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ModelCapabilityProfile): ModelCapabilityProfile;
    internalBinaryWrite(message: ModelCapabilityProfile, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.ModelCapabilityProfile
 */
export declare const ModelCapabilityProfile: ModelCapabilityProfile$Type;
declare class ModelDescriptor$Type extends MessageType<ModelDescriptor> {
    constructor();
    create(value?: PartialMessage<ModelDescriptor>): ModelDescriptor;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ModelDescriptor): ModelDescriptor;
    internalBinaryWrite(message: ModelDescriptor, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.ModelDescriptor
 */
export declare const ModelDescriptor: ModelDescriptor$Type;
declare class ListModelsRequest$Type extends MessageType<ListModelsRequest> {
    constructor();
    create(value?: PartialMessage<ListModelsRequest>): ListModelsRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListModelsRequest): ListModelsRequest;
    internalBinaryWrite(message: ListModelsRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.ListModelsRequest
 */
export declare const ListModelsRequest: ListModelsRequest$Type;
declare class ListModelsResponse$Type extends MessageType<ListModelsResponse> {
    constructor();
    create(value?: PartialMessage<ListModelsResponse>): ListModelsResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: ListModelsResponse): ListModelsResponse;
    internalBinaryWrite(message: ListModelsResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.ListModelsResponse
 */
export declare const ListModelsResponse: ListModelsResponse$Type;
declare class PullModelRequest$Type extends MessageType<PullModelRequest> {
    constructor();
    create(value?: PartialMessage<PullModelRequest>): PullModelRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PullModelRequest): PullModelRequest;
    internalBinaryWrite(message: PullModelRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.PullModelRequest
 */
export declare const PullModelRequest: PullModelRequest$Type;
declare class PullModelResponse$Type extends MessageType<PullModelResponse> {
    constructor();
    create(value?: PartialMessage<PullModelResponse>): PullModelResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PullModelResponse): PullModelResponse;
    internalBinaryWrite(message: PullModelResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.PullModelResponse
 */
export declare const PullModelResponse: PullModelResponse$Type;
declare class RemoveModelRequest$Type extends MessageType<RemoveModelRequest> {
    constructor();
    create(value?: PartialMessage<RemoveModelRequest>): RemoveModelRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: RemoveModelRequest): RemoveModelRequest;
    internalBinaryWrite(message: RemoveModelRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.RemoveModelRequest
 */
export declare const RemoveModelRequest: RemoveModelRequest$Type;
declare class CheckModelHealthRequest$Type extends MessageType<CheckModelHealthRequest> {
    constructor();
    create(value?: PartialMessage<CheckModelHealthRequest>): CheckModelHealthRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CheckModelHealthRequest): CheckModelHealthRequest;
    internalBinaryWrite(message: CheckModelHealthRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.CheckModelHealthRequest
 */
export declare const CheckModelHealthRequest: CheckModelHealthRequest$Type;
declare class CheckModelHealthResponse$Type extends MessageType<CheckModelHealthResponse> {
    constructor();
    create(value?: PartialMessage<CheckModelHealthResponse>): CheckModelHealthResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: CheckModelHealthResponse): CheckModelHealthResponse;
    internalBinaryWrite(message: CheckModelHealthResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.CheckModelHealthResponse
 */
export declare const CheckModelHealthResponse: CheckModelHealthResponse$Type;
/**
 * @generated ServiceType for protobuf service nimi.runtime.v1.RuntimeModelService
 */
export declare const RuntimeModelService: ServiceType;
export {};
//# sourceMappingURL=model.d.ts.map