import { IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ClusterResourceRestrictionItem } from "./ClusterResourceRestrictionItem.js";
import { IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ApplicationDestinationServiceAccount } from "./ApplicationDestinationServiceAccount.js";
import { IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ApplicationDestination } from "./ApplicationDestination.js";
import { IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1OrphanedResourcesMonitorSettings } from "./OrphanedResourcesMonitorSettings.js";
import { IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ProjectRole } from "./ProjectRole.js";
import { IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1SignatureKey } from "./SignatureKey.js";
import { IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1SyncWindows } from "./SyncWindows.js";
import { ModelData, Model } from "@kubernetes-models/base";
/**
 * AppProjectSpec is the specification of an AppProject
 */
export interface IAppProjectSpec {
    /**
     * ClusterResourceBlacklist contains list of blacklisted cluster level resources
     */
    "clusterResourceBlacklist"?: Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ClusterResourceRestrictionItem>;
    /**
     * ClusterResourceWhitelist contains list of whitelisted cluster level resources
     */
    "clusterResourceWhitelist"?: Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ClusterResourceRestrictionItem>;
    /**
     * Description contains optional project description
     */
    "description"?: string;
    /**
     * DestinationServiceAccounts holds information about the service accounts to be impersonated for the application sync operation for each destination.
     */
    "destinationServiceAccounts"?: Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ApplicationDestinationServiceAccount>;
    /**
     * Destinations contains list of destinations available for deployment
     */
    "destinations"?: Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ApplicationDestination>;
    /**
     * NamespaceResourceBlacklist contains list of blacklisted namespace level resources
     */
    "namespaceResourceBlacklist"?: Array<{
        "group": string;
        "kind": string;
    }>;
    /**
     * NamespaceResourceWhitelist contains list of whitelisted namespace level resources
     */
    "namespaceResourceWhitelist"?: Array<{
        "group": string;
        "kind": string;
    }>;
    /**
     * OrphanedResources specifies if controller should monitor orphaned resources of apps in this project
     */
    "orphanedResources"?: IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1OrphanedResourcesMonitorSettings;
    /**
     * PermitOnlyProjectScopedClusters determines whether destinations can only reference clusters which are project-scoped
     */
    "permitOnlyProjectScopedClusters"?: boolean;
    /**
     * Roles are user defined RBAC roles associated with this project
     */
    "roles"?: Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ProjectRole>;
    /**
     * SignatureKeys contains a list of PGP key IDs that commits in Git must be signed with in order to be allowed for sync
     */
    "signatureKeys"?: Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1SignatureKey>;
    /**
     * SourceNamespaces defines the namespaces application resources are allowed to be created in
     */
    "sourceNamespaces"?: Array<string>;
    /**
     * SourceRepos contains list of repository URLs which can be used for deployment
     */
    "sourceRepos"?: Array<string>;
    /**
     * SyncWindows controls when syncs can be run for apps in this project
     */
    "syncWindows"?: IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1SyncWindows;
}
/**
 * AppProjectSpec is the specification of an AppProject
 */
export declare class AppProjectSpec extends Model<IAppProjectSpec> implements IAppProjectSpec {
    "clusterResourceBlacklist"?: Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ClusterResourceRestrictionItem>;
    "clusterResourceWhitelist"?: Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ClusterResourceRestrictionItem>;
    "description"?: string;
    "destinationServiceAccounts"?: Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ApplicationDestinationServiceAccount>;
    "destinations"?: Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ApplicationDestination>;
    "namespaceResourceBlacklist"?: Array<{
        "group": string;
        "kind": string;
    }>;
    "namespaceResourceWhitelist"?: Array<{
        "group": string;
        "kind": string;
    }>;
    "orphanedResources"?: IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1OrphanedResourcesMonitorSettings;
    "permitOnlyProjectScopedClusters"?: boolean;
    "roles"?: Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1ProjectRole>;
    "signatureKeys"?: Array<IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1SignatureKey>;
    "sourceNamespaces"?: Array<string>;
    "sourceRepos"?: Array<string>;
    "syncWindows"?: IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1SyncWindows;
    constructor(data?: ModelData<IAppProjectSpec>);
}
export type { IAppProjectSpec as IComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1AppProjectSpec, AppProjectSpec as ComGithubArgoprojArgoCdV3PkgApisApplicationV1alpha1AppProjectSpec };
