import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire";
import { ImgDetections } from "./ImgDetections";
export declare const protobufPackage = "dai.proto.event";
export declare enum PrepareFileUploadClass {
    UNKNOWN_FILE = 0,
    IMAGE_COLOR = 1,
    IMAGE_STEREO_LEFT = 2,
    IMAGE_STEREO_RIGHT = 3,
    DISPARITY = 4,
    VIDEO = 5,
    POINTCLOUD = 6,
    ANNOTATION = 7,
    UNRECOGNIZED = -1
}
export declare function prepareFileUploadClassFromJSON(object: any): PrepareFileUploadClass;
export declare function prepareFileUploadClassToJSON(object: PrepareFileUploadClass): string;
export declare enum RejectedFileGroupReason {
    GROUP_UNEXPECTED_ERROR = 0,
    FILE_INPUT_VALIDATION = 1,
    STORAGE_QUOTA_EXCEEDED = 2,
    UNRECOGNIZED = -1
}
export declare function rejectedFileGroupReasonFromJSON(object: any): RejectedFileGroupReason;
export declare function rejectedFileGroupReasonToJSON(object: RejectedFileGroupReason): string;
export declare enum RejectedFileReason {
    FILE_UNEXPECTED_ERROR = 0,
    INPUT_VALIDATION = 1,
    UNRECOGNIZED = -1
}
export declare function rejectedFileReasonFromJSON(object: any): RejectedFileReason;
export declare function rejectedFileReasonToJSON(object: RejectedFileReason): string;
export declare enum RejectedEventReason {
    GENERIC_EVENT_REJECTED = 0,
    EVENT_VALIDATION = 1,
    UNRECOGNIZED = -1
}
export declare function rejectedEventReasonFromJSON(object: any): RejectedEventReason;
export declare function rejectedEventReasonToJSON(object: RejectedEventReason): string;
export interface BatchPrepareFileUpload {
    groups: PrepareFileUploadGroup[];
}
export interface PrepareFileUploadGroup {
    files: PrepareFileUpload[];
}
export interface PrepareFileUpload {
    checksum: string;
    mimeType: string;
    size: number;
    filename: string;
    classification: PrepareFileUploadClass;
}
export interface BatchFileUploadResult {
    groups: FileUploadGroupResult[];
}
export interface FileUploadGroupResult {
    rejected?: RejectedFileGroup | undefined;
    files: FileUploadResult[];
}
export interface RejectedFileGroup {
    reason: RejectedFileGroupReason;
}
export interface FileUploadResult {
    accepted?: AcceptedFile | undefined;
    rejected?: RejectedFile | undefined;
}
export interface AcceptedFile {
    uploadUrl: string;
    id: string;
}
export interface RejectedFile {
    reason: RejectedFileReason;
    message: string;
}
export interface BatchUploadEvents {
    events: Event[];
}
export interface Event {
    createdAt: number;
    name: string;
    tags: string[];
    extras: {
        [key: string]: string;
    };
    sourceSerialNumber?: string | undefined;
    sourceAppId?: string | undefined;
    sourceAppIdentifier?: string | undefined;
    associateFiles: AssociateFile[];
}
export interface Event_ExtrasEntry {
    key: string;
    value: string;
}
export interface AssociateFile {
    id: string;
}
export interface BatchUploadEventsResult {
    events: EventResult[];
}
export interface EventResult {
    accepted?: AcceptedEvent | undefined;
    rejected?: RejectedEvent | undefined;
}
export interface AcceptedEvent {
    id: string;
}
export interface RejectedEvent {
    reason: RejectedEventReason;
    message: string;
}
export interface FileLimits {
    maxFileSizeBytes: number;
    remainingStorageBytes: number;
    bytesPerHourRate: number;
    uploadsPerHourRate: number;
    groupsPerAllocation: number;
    filesPerGroupInAllocation: number;
}
export interface EventLimits {
    eventsPerHourRate: number;
    snapsPerHourRate: number;
    eventsPerRequest: number;
}
export interface ApiUsage {
    files: FileLimits | undefined;
    events: EventLimits | undefined;
}
export interface SnapAnnotations {
    detections?: ImgDetections | undefined;
}
export declare const BatchPrepareFileUpload: MessageFns<BatchPrepareFileUpload>;
export declare const PrepareFileUploadGroup: MessageFns<PrepareFileUploadGroup>;
export declare const PrepareFileUpload: MessageFns<PrepareFileUpload>;
export declare const BatchFileUploadResult: MessageFns<BatchFileUploadResult>;
export declare const FileUploadGroupResult: MessageFns<FileUploadGroupResult>;
export declare const RejectedFileGroup: MessageFns<RejectedFileGroup>;
export declare const FileUploadResult: MessageFns<FileUploadResult>;
export declare const AcceptedFile: MessageFns<AcceptedFile>;
export declare const RejectedFile: MessageFns<RejectedFile>;
export declare const BatchUploadEvents: MessageFns<BatchUploadEvents>;
export declare const Event: MessageFns<Event>;
export declare const Event_ExtrasEntry: MessageFns<Event_ExtrasEntry>;
export declare const AssociateFile: MessageFns<AssociateFile>;
export declare const BatchUploadEventsResult: MessageFns<BatchUploadEventsResult>;
export declare const EventResult: MessageFns<EventResult>;
export declare const AcceptedEvent: MessageFns<AcceptedEvent>;
export declare const RejectedEvent: MessageFns<RejectedEvent>;
export declare const FileLimits: MessageFns<FileLimits>;
export declare const EventLimits: MessageFns<EventLimits>;
export declare const ApiUsage: MessageFns<ApiUsage>;
export declare const SnapAnnotations: MessageFns<SnapAnnotations>;
type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined;
export 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 {} ? {
    [K in keyof T]?: DeepPartial<T[K]>;
} : Partial<T>;
type KeysOfUnion<T> = T extends T ? keyof T : never;
export 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;
};
export 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 declare const protobufName = "Event";
export {};
//# sourceMappingURL=Event.d.ts.map