import mongoose from "mongoose";
import type { HiddenBodyKeys } from "../interfaces";
import type { CloudProviderType } from "../interfaces/SystemTypes";
import type { IBase } from "./Base";
import type { ICluster } from "./Cluster";
export interface ICloudProvider extends IBase {
    /**
     * Cloud provider name
     */
    name?: string;
    /**
     * Cloud provider short name, without spacing & special characters
     */
    shortName?: CloudProviderType;
    /**
     * Content of the API access token to use services on this cloud provider
     * - Apply for: Digital Ocean
     */
    apiAccessToken?: string;
    /**
     * Content of the Service Account credentials ti access services on this cloud provider
     * - Apply for: Google Cloud, AWS,...
     * - For example: Kubernetes Clusters, Single Sign-On,...
     */
    serviceAccount?: string;
    /**
     * List of available clusters on this provider
     */
    clusters?: string[] | ICluster[];
}
export type CloudProviderDto = Omit<ICloudProvider, keyof HiddenBodyKeys>;
export declare const cloudProviderSchema: 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;
    clusters: mongoose.Types.ObjectId[];
    workspace?: mongoose.Types.ObjectId;
    workspaceId?: mongoose.Types.ObjectId;
    name?: string;
    slug?: string;
    project?: mongoose.Types.ObjectId;
    projectId?: mongoose.Types.ObjectId;
    owner?: mongoose.Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: mongoose.Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: mongoose.Types.ObjectId;
    updatedById?: mongoose.Types.ObjectId;
    deletedBy?: mongoose.Types.ObjectId;
    deletedById?: mongoose.Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    serviceAccount?: string;
    apiAccessToken?: string;
    shortName?: "custom" | "gcloud" | "digitalocean";
}, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    clusters: mongoose.Types.ObjectId[];
    workspace?: mongoose.Types.ObjectId;
    workspaceId?: mongoose.Types.ObjectId;
    name?: string;
    slug?: string;
    project?: mongoose.Types.ObjectId;
    projectId?: mongoose.Types.ObjectId;
    owner?: mongoose.Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: mongoose.Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: mongoose.Types.ObjectId;
    updatedById?: mongoose.Types.ObjectId;
    deletedBy?: mongoose.Types.ObjectId;
    deletedById?: mongoose.Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    serviceAccount?: string;
    apiAccessToken?: string;
    shortName?: "custom" | "gcloud" | "digitalocean";
}>> & mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    clusters: mongoose.Types.ObjectId[];
    workspace?: mongoose.Types.ObjectId;
    workspaceId?: mongoose.Types.ObjectId;
    name?: string;
    slug?: string;
    project?: mongoose.Types.ObjectId;
    projectId?: mongoose.Types.ObjectId;
    owner?: mongoose.Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: mongoose.Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: mongoose.Types.ObjectId;
    updatedById?: mongoose.Types.ObjectId;
    deletedBy?: mongoose.Types.ObjectId;
    deletedById?: mongoose.Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    serviceAccount?: string;
    apiAccessToken?: string;
    shortName?: "custom" | "gcloud" | "digitalocean";
}> & {
    _id: mongoose.Types.ObjectId;
}>;
export declare const CloudProviderModel: mongoose.Model<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    clusters: mongoose.Types.ObjectId[];
    workspace?: mongoose.Types.ObjectId;
    workspaceId?: mongoose.Types.ObjectId;
    name?: string;
    slug?: string;
    project?: mongoose.Types.ObjectId;
    projectId?: mongoose.Types.ObjectId;
    owner?: mongoose.Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: mongoose.Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: mongoose.Types.ObjectId;
    updatedById?: mongoose.Types.ObjectId;
    deletedBy?: mongoose.Types.ObjectId;
    deletedById?: mongoose.Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    serviceAccount?: string;
    apiAccessToken?: string;
    shortName?: "custom" | "gcloud" | "digitalocean";
}, {}, {}, {}, mongoose.Document<unknown, {}, {
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    clusters: mongoose.Types.ObjectId[];
    workspace?: mongoose.Types.ObjectId;
    workspaceId?: mongoose.Types.ObjectId;
    name?: string;
    slug?: string;
    project?: mongoose.Types.ObjectId;
    projectId?: mongoose.Types.ObjectId;
    owner?: mongoose.Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: mongoose.Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: mongoose.Types.ObjectId;
    updatedById?: mongoose.Types.ObjectId;
    deletedBy?: mongoose.Types.ObjectId;
    deletedById?: mongoose.Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    serviceAccount?: string;
    apiAccessToken?: string;
    shortName?: "custom" | "gcloud" | "digitalocean";
}> & {
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    clusters: mongoose.Types.ObjectId[];
    workspace?: mongoose.Types.ObjectId;
    workspaceId?: mongoose.Types.ObjectId;
    name?: string;
    slug?: string;
    project?: mongoose.Types.ObjectId;
    projectId?: mongoose.Types.ObjectId;
    owner?: mongoose.Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: mongoose.Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: mongoose.Types.ObjectId;
    updatedById?: mongoose.Types.ObjectId;
    deletedBy?: mongoose.Types.ObjectId;
    deletedById?: mongoose.Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    serviceAccount?: string;
    apiAccessToken?: string;
    shortName?: "custom" | "gcloud" | "digitalocean";
} & {
    _id: mongoose.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;
    clusters: mongoose.Types.ObjectId[];
    workspace?: mongoose.Types.ObjectId;
    workspaceId?: mongoose.Types.ObjectId;
    name?: string;
    slug?: string;
    project?: mongoose.Types.ObjectId;
    projectId?: mongoose.Types.ObjectId;
    owner?: mongoose.Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: mongoose.Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: mongoose.Types.ObjectId;
    updatedById?: mongoose.Types.ObjectId;
    deletedBy?: mongoose.Types.ObjectId;
    deletedById?: mongoose.Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    serviceAccount?: string;
    apiAccessToken?: string;
    shortName?: "custom" | "gcloud" | "digitalocean";
}, mongoose.Document<unknown, {}, mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    clusters: mongoose.Types.ObjectId[];
    workspace?: mongoose.Types.ObjectId;
    workspaceId?: mongoose.Types.ObjectId;
    name?: string;
    slug?: string;
    project?: mongoose.Types.ObjectId;
    projectId?: mongoose.Types.ObjectId;
    owner?: mongoose.Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: mongoose.Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: mongoose.Types.ObjectId;
    updatedById?: mongoose.Types.ObjectId;
    deletedBy?: mongoose.Types.ObjectId;
    deletedById?: mongoose.Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    serviceAccount?: string;
    apiAccessToken?: string;
    shortName?: "custom" | "gcloud" | "digitalocean";
}>> & mongoose.FlatRecord<{
    createdAt: NativeDate;
    updatedAt: NativeDate;
} & {
    public: boolean;
    active: boolean;
    createdAt: Date;
    updatedAt: Date;
    clusters: mongoose.Types.ObjectId[];
    workspace?: mongoose.Types.ObjectId;
    workspaceId?: mongoose.Types.ObjectId;
    name?: string;
    slug?: string;
    project?: mongoose.Types.ObjectId;
    projectId?: mongoose.Types.ObjectId;
    owner?: mongoose.Types.ObjectId;
    metadata?: any;
    ownerSlug?: string;
    ownerId?: mongoose.Types.ObjectId;
    workspaceSlug?: string;
    updatedBy?: mongoose.Types.ObjectId;
    updatedById?: mongoose.Types.ObjectId;
    deletedBy?: mongoose.Types.ObjectId;
    deletedById?: mongoose.Types.ObjectId;
    deletedAt?: Date;
    migratedAt?: Date;
    serviceAccount?: string;
    apiAccessToken?: string;
    shortName?: "custom" | "gcloud" | "digitalocean";
}> & {
    _id: mongoose.Types.ObjectId;
}>>;
//# sourceMappingURL=CloudProvider.d.ts.map