import type { Types } from "mongoose";
import mongoose from "mongoose";
import type { HiddenBodyKeys } from "../interfaces";
import { type BuildStatus, type DeployStatus } from "../interfaces/SystemTypes";
import type { IApp } from "./App";
import type { IBase } from "./Base";
import type { IContainerRegistry } from "./ContainerRegistry";
export interface IBuild extends IBase {
    name?: string;
    image?: string;
    /**
     * Image tag is also "buildTag"
     */
    tag?: string;
    /**
     * Build number
     */
    num?: number;
    /**
     * Build start time
     */
    startTime?: Date;
    /**
     * Build end time
     */
    endTime?: Date;
    /**
     * Build duration in miliseconds
     */
    duration?: number;
    /**
     * Build for which deploy environment
     * - **[OPTIONAL] DO NOT rely on this!**
     * - A build should be able to be used for any deploy environments.
     */
    env?: string;
    /**
     * Release revision message
     */
    message?: string;
    /**
     * Build from which git branch
     */
    branch?: string;
    cliVersion?: string;
    serverVersion?: string;
    serverLocation?: string;
    createdBy?: string;
    status?: BuildStatus;
    deployStatus?: DeployStatus;
    projectSlug?: string;
    /**
     * App's slug
     */
    appSlug?: string;
    logs?: string;
    /**
     * ID of the container registry
     * @remarks This can be populated to {IContainerRegistry} data
     */
    registry?: Types.ObjectId | IContainerRegistry | string;
    /**
     * ID of the app
     * @remarks This can be populated to {IApp} data
     */
    app?: Types.ObjectId | IApp | string;
}
export type BuildDto = Omit<IBuild, keyof HiddenBodyKeys>;
export declare const buildSchema: mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
    collection: string;
    timestamps: true;
}, {
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    env?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    projectSlug?: string;
    app?: Types.ObjectId;
    appSlug?: string;
    registry?: Types.ObjectId;
    message?: string;
    status?: "start" | "success" | "failed" | "pending" | "building" | "cancelled";
    image?: string;
    owner?: Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: Types.ObjectId;
    updatedById?: Types.ObjectId;
    deletedBy?: Types.ObjectId;
    deletedById?: Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    createdBy?: string;
    cliVersion?: string;
    logs?: string;
    branch?: string;
    startTime?: Date;
    endTime?: Date;
    duration?: number;
    deployStatus?: "success" | "in_progress" | "failed" | "pending" | "cancelled";
    tag?: string;
    num?: number;
    serverVersion?: string;
    serverLocation?: string;
}, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    env?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    projectSlug?: string;
    app?: Types.ObjectId;
    appSlug?: string;
    registry?: Types.ObjectId;
    message?: string;
    status?: "start" | "success" | "failed" | "pending" | "building" | "cancelled";
    image?: string;
    owner?: Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: Types.ObjectId;
    updatedById?: Types.ObjectId;
    deletedBy?: Types.ObjectId;
    deletedById?: Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    createdBy?: string;
    cliVersion?: string;
    logs?: string;
    branch?: string;
    startTime?: Date;
    endTime?: Date;
    duration?: number;
    deployStatus?: "success" | "in_progress" | "failed" | "pending" | "cancelled";
    tag?: string;
    num?: number;
    serverVersion?: string;
    serverLocation?: string;
}>> & mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    env?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    projectSlug?: string;
    app?: Types.ObjectId;
    appSlug?: string;
    registry?: Types.ObjectId;
    message?: string;
    status?: "start" | "success" | "failed" | "pending" | "building" | "cancelled";
    image?: string;
    owner?: Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: Types.ObjectId;
    updatedById?: Types.ObjectId;
    deletedBy?: Types.ObjectId;
    deletedById?: Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    createdBy?: string;
    cliVersion?: string;
    logs?: string;
    branch?: string;
    startTime?: Date;
    endTime?: Date;
    duration?: number;
    deployStatus?: "success" | "in_progress" | "failed" | "pending" | "cancelled";
    tag?: string;
    num?: number;
    serverVersion?: string;
    serverLocation?: string;
}> & {
    _id: Types.ObjectId;
}>;
export declare const BuildModel: mongoose.Model<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    env?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    projectSlug?: string;
    app?: Types.ObjectId;
    appSlug?: string;
    registry?: Types.ObjectId;
    message?: string;
    status?: "start" | "success" | "failed" | "pending" | "building" | "cancelled";
    image?: string;
    owner?: Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: Types.ObjectId;
    updatedById?: Types.ObjectId;
    deletedBy?: Types.ObjectId;
    deletedById?: Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    createdBy?: string;
    cliVersion?: string;
    logs?: string;
    branch?: string;
    startTime?: Date;
    endTime?: Date;
    duration?: number;
    deployStatus?: "success" | "in_progress" | "failed" | "pending" | "cancelled";
    tag?: string;
    num?: number;
    serverVersion?: string;
    serverLocation?: string;
}, {}, {}, {}, mongoose.Document<unknown, {}, {
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    env?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    projectSlug?: string;
    app?: Types.ObjectId;
    appSlug?: string;
    registry?: Types.ObjectId;
    message?: string;
    status?: "start" | "success" | "failed" | "pending" | "building" | "cancelled";
    image?: string;
    owner?: Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: Types.ObjectId;
    updatedById?: Types.ObjectId;
    deletedBy?: Types.ObjectId;
    deletedById?: Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    createdBy?: string;
    cliVersion?: string;
    logs?: string;
    branch?: string;
    startTime?: Date;
    endTime?: Date;
    duration?: number;
    deployStatus?: "success" | "in_progress" | "failed" | "pending" | "cancelled";
    tag?: string;
    num?: number;
    serverVersion?: string;
    serverLocation?: string;
}> & {
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    env?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    projectSlug?: string;
    app?: Types.ObjectId;
    appSlug?: string;
    registry?: Types.ObjectId;
    message?: string;
    status?: "start" | "success" | "failed" | "pending" | "building" | "cancelled";
    image?: string;
    owner?: Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: Types.ObjectId;
    updatedById?: Types.ObjectId;
    deletedBy?: Types.ObjectId;
    deletedById?: Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    createdBy?: string;
    cliVersion?: string;
    logs?: string;
    branch?: string;
    startTime?: Date;
    endTime?: Date;
    duration?: number;
    deployStatus?: "success" | "in_progress" | "failed" | "pending" | "cancelled";
    tag?: string;
    num?: number;
    serverVersion?: string;
    serverLocation?: string;
} & {
    _id: Types.ObjectId;
}, mongoose.Schema<any, mongoose.Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
    collection: string;
    timestamps: true;
}, {
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    env?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    projectSlug?: string;
    app?: Types.ObjectId;
    appSlug?: string;
    registry?: Types.ObjectId;
    message?: string;
    status?: "start" | "success" | "failed" | "pending" | "building" | "cancelled";
    image?: string;
    owner?: Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: Types.ObjectId;
    updatedById?: Types.ObjectId;
    deletedBy?: Types.ObjectId;
    deletedById?: Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    createdBy?: string;
    cliVersion?: string;
    logs?: string;
    branch?: string;
    startTime?: Date;
    endTime?: Date;
    duration?: number;
    deployStatus?: "success" | "in_progress" | "failed" | "pending" | "cancelled";
    tag?: string;
    num?: number;
    serverVersion?: string;
    serverLocation?: string;
}, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    env?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    projectSlug?: string;
    app?: Types.ObjectId;
    appSlug?: string;
    registry?: Types.ObjectId;
    message?: string;
    status?: "start" | "success" | "failed" | "pending" | "building" | "cancelled";
    image?: string;
    owner?: Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: Types.ObjectId;
    updatedById?: Types.ObjectId;
    deletedBy?: Types.ObjectId;
    deletedById?: Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    createdBy?: string;
    cliVersion?: string;
    logs?: string;
    branch?: string;
    startTime?: Date;
    endTime?: Date;
    duration?: number;
    deployStatus?: "success" | "in_progress" | "failed" | "pending" | "cancelled";
    tag?: string;
    num?: number;
    serverVersion?: string;
    serverLocation?: string;
}>> & mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    env?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    projectSlug?: string;
    app?: Types.ObjectId;
    appSlug?: string;
    registry?: Types.ObjectId;
    message?: string;
    status?: "start" | "success" | "failed" | "pending" | "building" | "cancelled";
    image?: string;
    owner?: Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: Types.ObjectId;
    updatedById?: Types.ObjectId;
    deletedBy?: Types.ObjectId;
    deletedById?: Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    createdBy?: string;
    cliVersion?: string;
    logs?: string;
    branch?: string;
    startTime?: Date;
    endTime?: Date;
    duration?: number;
    deployStatus?: "success" | "in_progress" | "failed" | "pending" | "cancelled";
    tag?: string;
    num?: number;
    serverVersion?: string;
    serverLocation?: string;
}> & {
    _id: Types.ObjectId;
}>>;
//# sourceMappingURL=Build.d.ts.map