import type { Types } from "mongoose";
import mongoose from "mongoose";
import type { HiddenBodyKeys } from "../interfaces";
import type { GitProviderType } from "../interfaces/SystemTypes";
import type { IBase } from "./Base";
import type { IGitProvider } from "./GitProvider";
export type FrameworkDto = Omit<IFramework, keyof HiddenBodyKeys>;
/**
 * An interface that extends IBase and describes the properties of a framework.
 *
 * @interface IFramework
 * @extends {IBase}
 */
export interface IFramework extends IBase {
    name?: string;
    host?: string;
    /**
     * Type of the Git Provider
     */
    gitProvider?: GitProviderType;
    /**
     * Git repository access privacy
     * @deprecated
     */
    isPrivate?: boolean;
    /**
     * ID of the Git Provider
     * @remarks This can be populated to {GitProvider} data
     */
    git?: Types.ObjectId | IGitProvider;
    /**
     * The repository URL of the framework.
     *
     * @type {string}
     * @memberof IFramework
     */
    repoURL?: string;
    /**
     * The SSH URL of the framework.
     *
     * @type {string}
     * @memberof IFramework
     */
    repoSSH?: string;
    /**
     * The main branch of the framework.
     *
     * @type {string}
     * @memberof IFramework
     */
    mainBranch?: string;
    /**
     * The number of downloads for the framework.
     *
     * @type {number}
     * @memberof IFramework
     */
    downloads?: number;
}
export declare const frameworkSchema: 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;
    host?: string;
    repoURL?: string;
    repoSSH?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    git?: Types.ObjectId;
    gitProvider?: "bitbucket" | "github";
    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;
    isPrivate?: boolean;
    mainBranch?: string;
    downloads?: number;
}, 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;
    host?: string;
    repoURL?: string;
    repoSSH?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    git?: Types.ObjectId;
    gitProvider?: "bitbucket" | "github";
    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;
    isPrivate?: boolean;
    mainBranch?: string;
    downloads?: number;
}>> & mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    host?: string;
    repoURL?: string;
    repoSSH?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    git?: Types.ObjectId;
    gitProvider?: "bitbucket" | "github";
    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;
    isPrivate?: boolean;
    mainBranch?: string;
    downloads?: number;
}> & {
    _id: Types.ObjectId;
}>;
export declare const FrameworkModel: mongoose.Model<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    host?: string;
    repoURL?: string;
    repoSSH?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    git?: Types.ObjectId;
    gitProvider?: "bitbucket" | "github";
    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;
    isPrivate?: boolean;
    mainBranch?: string;
    downloads?: number;
}, {}, {}, {}, 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;
    host?: string;
    repoURL?: string;
    repoSSH?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    git?: Types.ObjectId;
    gitProvider?: "bitbucket" | "github";
    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;
    isPrivate?: boolean;
    mainBranch?: string;
    downloads?: number;
}> & {
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    host?: string;
    repoURL?: string;
    repoSSH?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    git?: Types.ObjectId;
    gitProvider?: "bitbucket" | "github";
    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;
    isPrivate?: boolean;
    mainBranch?: string;
    downloads?: number;
} & {
    _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;
    host?: string;
    repoURL?: string;
    repoSSH?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    git?: Types.ObjectId;
    gitProvider?: "bitbucket" | "github";
    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;
    isPrivate?: boolean;
    mainBranch?: string;
    downloads?: number;
}, 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;
    host?: string;
    repoURL?: string;
    repoSSH?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    git?: Types.ObjectId;
    gitProvider?: "bitbucket" | "github";
    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;
    isPrivate?: boolean;
    mainBranch?: string;
    downloads?: number;
}>> & mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    workspace?: Types.ObjectId;
    workspaceId?: Types.ObjectId;
    name?: string;
    slug?: string;
    host?: string;
    repoURL?: string;
    repoSSH?: string;
    project?: Types.ObjectId;
    projectId?: Types.ObjectId;
    git?: Types.ObjectId;
    gitProvider?: "bitbucket" | "github";
    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;
    isPrivate?: boolean;
    mainBranch?: string;
    downloads?: number;
}> & {
    _id: Types.ObjectId;
}>>;
//# sourceMappingURL=Framework.d.ts.map