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";
/**
 * K-SCHED-003: Occupancy snapshot at peek time.
 *
 * @generated from protobuf message nimi.runtime.v1.SchedulingOccupancySnapshot
 */
export interface SchedulingOccupancySnapshot {
    /**
     * @generated from protobuf field: int32 global_used = 1
     */
    globalUsed: number;
    /**
     * @generated from protobuf field: int32 global_cap = 2
     */
    globalCap: number;
    /**
     * @generated from protobuf field: int32 app_used = 3
     */
    appUsed: number;
    /**
     * @generated from protobuf field: int32 app_cap = 4
     */
    appCap: number;
}
/**
 * K-SCHED-002: Scheduling preflight judgement result.
 *
 * @generated from protobuf message nimi.runtime.v1.SchedulingJudgement
 */
export interface SchedulingJudgement {
    /**
     * @generated from protobuf field: nimi.runtime.v1.SchedulingState state = 1
     */
    state: SchedulingState;
    /**
     * @generated from protobuf field: string detail = 2
     */
    detail: string;
    /**
     * @generated from protobuf field: nimi.runtime.v1.SchedulingOccupancySnapshot occupancy = 3
     */
    occupancy?: SchedulingOccupancySnapshot;
    /**
     * @generated from protobuf field: repeated string resource_warnings = 4
     */
    resourceWarnings: string[];
}
/**
 * K-SCHED-007: Target-scoped scheduling evaluation input.
 *
 * @generated from protobuf message nimi.runtime.v1.SchedulingResourceHint
 */
export interface SchedulingResourceHint {
    /**
     * @generated from protobuf field: int64 estimated_vram_bytes = 1
     */
    estimatedVramBytes: string;
    /**
     * @generated from protobuf field: int64 estimated_ram_bytes = 2
     */
    estimatedRamBytes: string;
    /**
     * @generated from protobuf field: int64 estimated_disk_bytes = 3
     */
    estimatedDiskBytes: string;
    /**
     * @generated from protobuf field: string engine = 4
     */
    engine: string;
}
/**
 * K-SCHED-002: Atomic scheduling evaluation target.
 *
 * @generated from protobuf message nimi.runtime.v1.SchedulingEvaluationTarget
 */
export interface SchedulingEvaluationTarget {
    /**
     * @generated from protobuf field: string capability = 1
     */
    capability: string;
    /**
     * @generated from protobuf field: string mod_id = 2
     */
    modId: string;
    /**
     * @generated from protobuf field: string profile_id = 3
     */
    profileId: string;
    /**
     * @generated from protobuf field: nimi.runtime.v1.SchedulingResourceHint resource_hint = 4
     */
    resourceHint?: SchedulingResourceHint;
}
/**
 * K-SCHED-002: Per-target scheduling judgement mapping.
 *
 * @generated from protobuf message nimi.runtime.v1.SchedulingTargetJudgement
 */
export interface SchedulingTargetJudgement {
    /**
     * @generated from protobuf field: nimi.runtime.v1.SchedulingEvaluationTarget target = 1
     */
    target?: SchedulingEvaluationTarget;
    /**
     * @generated from protobuf field: nimi.runtime.v1.SchedulingJudgement judgement = 2
     */
    judgement?: SchedulingJudgement;
}
/**
 * K-SCHED-002: PeekScheduling preflight request.
 *
 * @generated from protobuf message nimi.runtime.v1.PeekSchedulingRequest
 */
export interface PeekSchedulingRequest {
    /**
     * @generated from protobuf field: string app_id = 1
     */
    appId: string;
    /**
     * @generated from protobuf field: repeated nimi.runtime.v1.SchedulingEvaluationTarget targets = 2
     */
    targets: SchedulingEvaluationTarget[];
}
/**
 * @generated from protobuf message nimi.runtime.v1.PeekSchedulingResponse
 */
export interface PeekSchedulingResponse {
    /**
     * @generated from protobuf field: nimi.runtime.v1.SchedulingOccupancySnapshot occupancy = 1
     */
    occupancy?: SchedulingOccupancySnapshot;
    /**
     * @generated from protobuf field: nimi.runtime.v1.SchedulingJudgement aggregate_judgement = 2
     */
    aggregateJudgement?: SchedulingJudgement;
    /**
     * @generated from protobuf field: repeated nimi.runtime.v1.SchedulingTargetJudgement target_judgements = 3
     */
    targetJudgements: SchedulingTargetJudgement[];
}
/**
 * K-SCHED-001: Six-value scheduling judgement state enum.
 *
 * @generated from protobuf enum nimi.runtime.v1.SchedulingState
 */
export declare enum SchedulingState {
    /**
     * @generated from protobuf enum value: SCHEDULING_STATE_UNSPECIFIED = 0;
     */
    UNSPECIFIED = 0,
    /**
     * @generated from protobuf enum value: SCHEDULING_STATE_RUNNABLE = 1;
     */
    RUNNABLE = 1,
    /**
     * @generated from protobuf enum value: SCHEDULING_STATE_QUEUE_REQUIRED = 2;
     */
    QUEUE_REQUIRED = 2,
    /**
     * @generated from protobuf enum value: SCHEDULING_STATE_PREEMPTION_RISK = 3;
     */
    PREEMPTION_RISK = 3,
    /**
     * @generated from protobuf enum value: SCHEDULING_STATE_SLOWDOWN_RISK = 4;
     */
    SLOWDOWN_RISK = 4,
    /**
     * @generated from protobuf enum value: SCHEDULING_STATE_DENIED = 5;
     */
    DENIED = 5,
    /**
     * @generated from protobuf enum value: SCHEDULING_STATE_UNKNOWN = 6;
     */
    UNKNOWN = 6
}
declare class SchedulingOccupancySnapshot$Type extends MessageType<SchedulingOccupancySnapshot> {
    constructor();
    create(value?: PartialMessage<SchedulingOccupancySnapshot>): SchedulingOccupancySnapshot;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SchedulingOccupancySnapshot): SchedulingOccupancySnapshot;
    internalBinaryWrite(message: SchedulingOccupancySnapshot, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.SchedulingOccupancySnapshot
 */
export declare const SchedulingOccupancySnapshot: SchedulingOccupancySnapshot$Type;
declare class SchedulingJudgement$Type extends MessageType<SchedulingJudgement> {
    constructor();
    create(value?: PartialMessage<SchedulingJudgement>): SchedulingJudgement;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SchedulingJudgement): SchedulingJudgement;
    internalBinaryWrite(message: SchedulingJudgement, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.SchedulingJudgement
 */
export declare const SchedulingJudgement: SchedulingJudgement$Type;
declare class SchedulingResourceHint$Type extends MessageType<SchedulingResourceHint> {
    constructor();
    create(value?: PartialMessage<SchedulingResourceHint>): SchedulingResourceHint;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SchedulingResourceHint): SchedulingResourceHint;
    internalBinaryWrite(message: SchedulingResourceHint, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.SchedulingResourceHint
 */
export declare const SchedulingResourceHint: SchedulingResourceHint$Type;
declare class SchedulingEvaluationTarget$Type extends MessageType<SchedulingEvaluationTarget> {
    constructor();
    create(value?: PartialMessage<SchedulingEvaluationTarget>): SchedulingEvaluationTarget;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SchedulingEvaluationTarget): SchedulingEvaluationTarget;
    internalBinaryWrite(message: SchedulingEvaluationTarget, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.SchedulingEvaluationTarget
 */
export declare const SchedulingEvaluationTarget: SchedulingEvaluationTarget$Type;
declare class SchedulingTargetJudgement$Type extends MessageType<SchedulingTargetJudgement> {
    constructor();
    create(value?: PartialMessage<SchedulingTargetJudgement>): SchedulingTargetJudgement;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: SchedulingTargetJudgement): SchedulingTargetJudgement;
    internalBinaryWrite(message: SchedulingTargetJudgement, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.SchedulingTargetJudgement
 */
export declare const SchedulingTargetJudgement: SchedulingTargetJudgement$Type;
declare class PeekSchedulingRequest$Type extends MessageType<PeekSchedulingRequest> {
    constructor();
    create(value?: PartialMessage<PeekSchedulingRequest>): PeekSchedulingRequest;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PeekSchedulingRequest): PeekSchedulingRequest;
    internalBinaryWrite(message: PeekSchedulingRequest, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.PeekSchedulingRequest
 */
export declare const PeekSchedulingRequest: PeekSchedulingRequest$Type;
declare class PeekSchedulingResponse$Type extends MessageType<PeekSchedulingResponse> {
    constructor();
    create(value?: PartialMessage<PeekSchedulingResponse>): PeekSchedulingResponse;
    internalBinaryRead(reader: IBinaryReader, length: number, options: BinaryReadOptions, target?: PeekSchedulingResponse): PeekSchedulingResponse;
    internalBinaryWrite(message: PeekSchedulingResponse, writer: IBinaryWriter, options: BinaryWriteOptions): IBinaryWriter;
}
/**
 * @generated MessageType for protobuf message nimi.runtime.v1.PeekSchedulingResponse
 */
export declare const PeekSchedulingResponse: PeekSchedulingResponse$Type;
export {};
//# sourceMappingURL=ai_scheduling.d.ts.map