import { Kind, Resource_Top } from "@k8ts/instruments";
import { CDK } from "@k8ts/sample-interfaces";
export interface ClusterRole_Rule<Groups extends Kind.Group[] = Kind.Group[], Resources extends Kind.Kind<Groups[number]["name"], string, string>[] = Kind.Kind[]> {
    resources: Resources;
    verbs: Verbs[];
}
export type ClusterRole_RuleProducer<Rules extends ClusterRole_Rule> = (scope: ClusterRole_Scope) => Iterable<Rules>;
declare class ClusterRole_Scope {
    Rule<const R extends Kind[]>(...resources: R): {
        verbs(...verbs: Verbs[]): {
            resources: R;
            verbs: Verbs[];
        };
    };
}
export interface ClusterRole_Props<Rules extends ClusterRole_Rule = ClusterRole_Rule> {
    rules: ClusterRole_RuleProducer<Rules>;
}
export declare class ClusterRole<Name extends string = string> extends Resource_Top<Name, ClusterRole_Props> {
    get kind(): Kind.Kind<"rbac.authorization.k8s.io", "v1", "ClusterRole">;
    constructor(name: Name, props: ClusterRole_Props);
    private _fromObject;
    protected body(): CDK.KubeClusterRoleProps;
}
export type Verbs = "get" | "list" | "watch" | "create" | "update" | "patch" | "delete" | "deletecollection";
export type ApiGroup = "namespaces" | "pods" | "services" | "endpoints" | "persistentvolumeclaims" | "events" | "configmaps" | "secrets" | "httproutes" | "gateways" | "jobs" | "cronjobs" | "deployments" | "replicasets" | "statefulsets" | "daemonsets" | "podtemplates" | "clusterroles" | "roles" | "rolebindings" | "clusterrolebindings" | "serviceaccounts" | "nodes" | "persistentvolumes" | "storageclasses" | "volumeattachments" | "persistentvolumeclaims";
export {};
//# sourceMappingURL=cluster-role.d.ts.map