import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Registers a new domain name and creates a corresponding Registration resource.
 *
 * To get more information about Registration, see:
 *
 * * [API documentation](https://cloud.google.com/domains/docs/reference/rest/v1/projects.locations.registrations)
 * * How-to Guides
 *     * [Register a domain with Cloud Domains](https://cloud.google.com/domains/docs/buy-register-domain)
 *
 * > **Warning:** The Terraform implementation of this resource will not actually delete a Registration during
 * `terraform destroy`. Instead it will "abandon" the resource and remove it from state.
 * For information on deleting a registered domain, see https://cloud.google.com/domains/docs/delete-domain
 *
 * ## Example Usage
 *
 * ### Clouddomains Registration Full
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gcp from "@pulumi/gcp";
 *
 * const myRegistration = new gcp.clouddomains.Registration("my_registration", {
 *     domainName: "example-domain.com",
 *     location: "global",
 *     labels: {
 *         labelkey: "labelvalue",
 *     },
 *     yearlyPrice: {
 *         currencyCode: "USD",
 *         units: "12",
 *     },
 *     dnsSettings: {
 *         customDns: {
 *             nameServers: [
 *                 "ns-cloud-a1.googledomains.com.",
 *                 "ns-cloud-a2.googledomains.com.",
 *                 "ns-cloud-a3.googledomains.com.",
 *                 "ns-cloud-a4.googledomains.com.",
 *             ],
 *         },
 *     },
 *     contactSettings: {
 *         privacy: "REDACTED_CONTACT_DATA",
 *         registrantContact: {
 *             phoneNumber: "+12345000000",
 *             email: "user@example.com",
 *             postalAddress: {
 *                 regionCode: "US",
 *                 postalCode: "95050",
 *                 administrativeArea: "CA",
 *                 locality: "Example City",
 *                 addressLines: ["1234 Example street"],
 *                 recipients: ["example recipient"],
 *             },
 *         },
 *         adminContact: {
 *             phoneNumber: "+12345000000",
 *             email: "user@example.com",
 *             postalAddress: {
 *                 regionCode: "US",
 *                 postalCode: "95050",
 *                 administrativeArea: "CA",
 *                 locality: "Example City",
 *                 addressLines: ["1234 Example street"],
 *                 recipients: ["example recipient"],
 *             },
 *         },
 *         technicalContact: {
 *             phoneNumber: "+12345000000",
 *             email: "user@example.com",
 *             postalAddress: {
 *                 regionCode: "US",
 *                 postalCode: "95050",
 *                 administrativeArea: "CA",
 *                 locality: "Example City",
 *                 addressLines: ["1234 Example street"],
 *                 recipients: ["example recipient"],
 *             },
 *         },
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * Registration can be imported using any of these accepted formats:
 *
 * * `projects/{{project}}/locations/{{location}}/registrations/{{domain_name}}`
 * * `{{project}}/{{location}}/{{domain_name}}`
 * * `{{location}}/{{domain_name}}`
 *
 * When using the `pulumi import` command, Registration can be imported using one of the formats above. For example:
 *
 * ```sh
 * $ pulumi import gcp:clouddomains/registration:Registration default projects/{{project}}/locations/{{location}}/registrations/{{domain_name}}
 * $ pulumi import gcp:clouddomains/registration:Registration default {{project}}/{{location}}/{{domain_name}}
 * $ pulumi import gcp:clouddomains/registration:Registration default {{location}}/{{domain_name}}
 * ```
 */
export declare class Registration extends pulumi.CustomResource {
    /**
     * Get an existing Registration 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 id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: RegistrationState, opts?: pulumi.CustomResourceOptions): Registration;
    /**
     * Returns true if the given object is an instance of Registration.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is Registration;
    /**
     * The list of contact notices that the caller acknowledges. Possible value is PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT
     */
    readonly contactNotices: pulumi.Output<string[] | undefined>;
    /**
     * Required. Settings for contact information linked to the Registration.
     * Structure is documented below.
     */
    readonly contactSettings: pulumi.Output<outputs.clouddomains.RegistrationContactSettings>;
    /**
     * Output only. Time at which the automation was created.
     */
    readonly createTime: pulumi.Output<string>;
    /**
     * Settings controlling the DNS configuration of the Registration.
     * Structure is documented below.
     */
    readonly dnsSettings: pulumi.Output<outputs.clouddomains.RegistrationDnsSettings | undefined>;
    /**
     * Required. The domain name. Unicode domain names must be expressed in Punycode format.
     */
    readonly domainName: pulumi.Output<string>;
    /**
     * The list of domain notices that you acknowledge. Possible value is HSTS_PRELOADED
     */
    readonly domainNotices: pulumi.Output<string[] | undefined>;
    /**
     * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
     */
    readonly effectiveLabels: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * Output only. Time at which the automation was updated.
     */
    readonly expireTime: pulumi.Output<string>;
    /**
     * Output only. The set of issues with the Registration that require attention.
     */
    readonly issues: pulumi.Output<string[]>;
    /**
     * Set of labels associated with the Registration.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effectiveLabels` for all of the labels present on the resource.
     */
    readonly labels: pulumi.Output<{
        [key: string]: string;
    } | undefined>;
    /**
     * The location for the resource
     */
    readonly location: pulumi.Output<string>;
    /**
     * Settings for management of the Registration, including renewal, billing, and transfer
     * Structure is documented below.
     */
    readonly managementSettings: pulumi.Output<outputs.clouddomains.RegistrationManagementSettings>;
    /**
     * Output only. Name of the Registration resource, in the format projects/*&#47;locations/*&#47;registrations/<domain_name>.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    readonly project: pulumi.Output<string>;
    /**
     * The combination of labels configured directly on the resource
     *  and default labels configured on the provider.
     */
    readonly pulumiLabels: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * Output only. The reason the domain registration failed. Only set for domains in REGISTRATION_FAILED state.
     */
    readonly registerFailureReason: pulumi.Output<string>;
    /**
     * Output only. The current state of the Registration.
     */
    readonly state: pulumi.Output<string>;
    /**
     * Output only. Set of options for the contactSettings.privacy field that this Registration supports.
     */
    readonly supportedPrivacies: pulumi.Output<string[]>;
    /**
     * Required. Yearly price to register or renew the domain. The value that should be put here can be obtained from
     * registrations.retrieveRegisterParameters or registrations.searchDomains calls.
     * Structure is documented below.
     */
    readonly yearlyPrice: pulumi.Output<outputs.clouddomains.RegistrationYearlyPrice>;
    /**
     * Create a Registration 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: RegistrationArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Registration resources.
 */
export interface RegistrationState {
    /**
     * The list of contact notices that the caller acknowledges. Possible value is PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT
     */
    contactNotices?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Required. Settings for contact information linked to the Registration.
     * Structure is documented below.
     */
    contactSettings?: pulumi.Input<inputs.clouddomains.RegistrationContactSettings | undefined>;
    /**
     * Output only. Time at which the automation was created.
     */
    createTime?: pulumi.Input<string | undefined>;
    /**
     * Settings controlling the DNS configuration of the Registration.
     * Structure is documented below.
     */
    dnsSettings?: pulumi.Input<inputs.clouddomains.RegistrationDnsSettings | undefined>;
    /**
     * Required. The domain name. Unicode domain names must be expressed in Punycode format.
     */
    domainName?: pulumi.Input<string | undefined>;
    /**
     * The list of domain notices that you acknowledge. Possible value is HSTS_PRELOADED
     */
    domainNotices?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
     */
    effectiveLabels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * Output only. Time at which the automation was updated.
     */
    expireTime?: pulumi.Input<string | undefined>;
    /**
     * Output only. The set of issues with the Registration that require attention.
     */
    issues?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Set of labels associated with the Registration.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effectiveLabels` for all of the labels present on the resource.
     */
    labels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The location for the resource
     */
    location?: pulumi.Input<string | undefined>;
    /**
     * Settings for management of the Registration, including renewal, billing, and transfer
     * Structure is documented below.
     */
    managementSettings?: pulumi.Input<inputs.clouddomains.RegistrationManagementSettings | undefined>;
    /**
     * Output only. Name of the Registration resource, in the format projects/*&#47;locations/*&#47;registrations/<domain_name>.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string | undefined>;
    /**
     * The combination of labels configured directly on the resource
     *  and default labels configured on the provider.
     */
    pulumiLabels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * Output only. The reason the domain registration failed. Only set for domains in REGISTRATION_FAILED state.
     */
    registerFailureReason?: pulumi.Input<string | undefined>;
    /**
     * Output only. The current state of the Registration.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * Output only. Set of options for the contactSettings.privacy field that this Registration supports.
     */
    supportedPrivacies?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Required. Yearly price to register or renew the domain. The value that should be put here can be obtained from
     * registrations.retrieveRegisterParameters or registrations.searchDomains calls.
     * Structure is documented below.
     */
    yearlyPrice?: pulumi.Input<inputs.clouddomains.RegistrationYearlyPrice | undefined>;
}
/**
 * The set of arguments for constructing a Registration resource.
 */
export interface RegistrationArgs {
    /**
     * The list of contact notices that the caller acknowledges. Possible value is PUBLIC_CONTACT_DATA_ACKNOWLEDGEMENT
     */
    contactNotices?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Required. Settings for contact information linked to the Registration.
     * Structure is documented below.
     */
    contactSettings: pulumi.Input<inputs.clouddomains.RegistrationContactSettings>;
    /**
     * Settings controlling the DNS configuration of the Registration.
     * Structure is documented below.
     */
    dnsSettings?: pulumi.Input<inputs.clouddomains.RegistrationDnsSettings | undefined>;
    /**
     * Required. The domain name. Unicode domain names must be expressed in Punycode format.
     */
    domainName: pulumi.Input<string>;
    /**
     * The list of domain notices that you acknowledge. Possible value is HSTS_PRELOADED
     */
    domainNotices?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Set of labels associated with the Registration.
     * **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
     * Please refer to the field `effectiveLabels` for all of the labels present on the resource.
     */
    labels?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The location for the resource
     */
    location: pulumi.Input<string>;
    /**
     * Settings for management of the Registration, including renewal, billing, and transfer
     * Structure is documented below.
     */
    managementSettings?: pulumi.Input<inputs.clouddomains.RegistrationManagementSettings | undefined>;
    /**
     * The ID of the project in which the resource belongs.
     * If it is not provided, the provider project is used.
     */
    project?: pulumi.Input<string | undefined>;
    /**
     * Required. Yearly price to register or renew the domain. The value that should be put here can be obtained from
     * registrations.retrieveRegisterParameters or registrations.searchDomains calls.
     * Structure is documented below.
     */
    yearlyPrice: pulumi.Input<inputs.clouddomains.RegistrationYearlyPrice>;
}
//# sourceMappingURL=registration.d.ts.map