import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * CustomResource represents an instance of a CustomResourceDefinition (CRD). For example, the
 * CoreOS Prometheus operator exposes a CRD `monitoring.coreos.com/ServiceMonitor`; to
 * instantiate this as a Pulumi resource, one could call `new CustomResource`, passing the
 * `ServiceMonitor` resource definition as an argument.
 */
export declare class CustomResource extends pulumi.CustomResource {
    /**
     * Get an existing CustomResource resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param opts Uniquely specifies a CustomResource to select.
     */
    static get(name: string, opts: CustomResourceGetOptions): CustomResource;
    /**
     * APIVersion defines the versioned schema of this representation of an object. Servers should
     * convert recognized schemas to the latest internal value, and may reject unrecognized
     * values. More info:
     * https://git.k8s.io/community/contributors/devel/api-conventions.md#resources
     */
    readonly apiVersion: pulumi.Output<string>;
    /**
     * Kind is a string value representing the REST resource this object represents. Servers may
     * infer this from the endpoint the client submits requests to. Cannot be updated. In
     * CamelCase. More info:
     * https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
     */
    readonly kind: pulumi.Output<string>;
    /**
     * Standard object metadata; More info:
     * https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
     */
    readonly metadata: pulumi.Output<outputs.meta.v1.ObjectMeta>;
    getInputs(): CustomResourceArgs;
    private readonly __inputs;
    /**
     * Create a CustomResource resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: CustomResourceArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * The set of arguments for constructing a CustomResource resource.
 *
 * NOTE: This type is fairly loose, since other than `apiVersion` and `kind`, there are no
 * fields required across all CRDs.
 */
export interface CustomResourceArgs {
    /**
     * APIVersion defines the versioned schema of this representation of an object. Servers should
     * convert recognized schemas to the latest internal value, and may reject unrecognized
     * values. More info:
     * https://git.k8s.io/community/contributors/devel/api-conventions.md#resources
     */
    apiVersion: string;
    /**
     * Kind is a string value representing the REST resource this object represents. Servers may
     * infer this from the endpoint the client submits requests to. Cannot be updated. In
     * CamelCase. More info:
     * https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds
     */
    kind: string;
    /**
     * Standard object metadata; More info:
     * https://git.k8s.io/community/contributors/devel/api-conventions.md#metadata.
     */
    metadata?: pulumi.Input<inputs.meta.v1.ObjectMeta>;
    [othersFields: string]: pulumi.Input<any>;
}
/**
 * CustomResourceGetOptions uniquely identifies a Kubernetes CustomResource, primarily for use
 * in supplied to `apiextensions.CustomResource#get`.
 */
export interface CustomResourceGetOptions extends pulumi.CustomResourceOptions {
    /**
     * apiVersion is the API version of the apiExtensions.CustomResource we wish to select,
     * as specified by the CustomResourceDefinition that defines it on the API server.
     */
    apiVersion: string;
    /**
     * kind is the kind of the apiextensions.CustomResource we wish to select, as specified by
     * the CustomResourceDefinition that defines it on the API server.
     */
    kind: string;
    /**
     * An ID for the Kubernetes resource to retrieve. Takes the form [namespace]/[name] or
     * [name].
     */
    id: pulumi.Input<pulumi.ID>;
}
