import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * Creates and manages Scaleway Transactional Email Domains.
 * For more information refer to the [API documentation](https://www.scaleway.com/en/developers/api/transactional-email).
 *
 * ## Example Usage
 *
 * ### Basic
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const main = new scaleway.tem.Domain("main", {
 *     acceptTos: true,
 *     name: "example.com",
 * });
 * ```
 *
 * ### Add the required records to your DNS zone
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const config = new pulumi.Config();
 * const domainName = config.require("domainName");
 * const main = new scaleway.tem.Domain("main", {
 *     name: domainName,
 *     acceptTos: true,
 * });
 * const spf = new scaleway.domain.Record("spf", {
 *     dnsZone: domainName,
 *     type: "TXT",
 *     data: main.spfValue,
 * });
 * const dkim = new scaleway.domain.Record("dkim", {
 *     dnsZone: domainName,
 *     name: main.dkimName,
 *     type: "TXT",
 *     data: main.dkimConfig,
 * });
 * const mx = new scaleway.domain.Record("mx", {
 *     dnsZone: domainName,
 *     type: "MX",
 *     data: main.mxConfig,
 * });
 * const dmarc = new scaleway.domain.Record("dmarc", {
 *     dnsZone: domainName,
 *     name: main.dmarcName,
 *     type: "TXT",
 *     data: main.dmarcConfig,
 * });
 * ```
 *
 * ### Automatically Configure DNS Settings for Your Domain
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const config = new pulumi.Config();
 * const domainName = config.require("domainName");
 * const main = new scaleway.tem.Domain("main", {
 *     name: domainName,
 *     acceptTos: true,
 *     autoconfig: true,
 * });
 * ```
 *
 * ### Configuring GitLab Project Variables
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as gitlab from "@pulumi/gitlab";
 * import * as scaleway from "@pulumiverse/scaleway";
 *
 * const config = new pulumi.Config();
 * const domainName = config.require("domainName");
 * const myDomain = scaleway.tem.getDomain({
 *     name: domainName,
 * });
 * const smtpAuthUser = new gitlab.ProjectVariable("smtp_auth_user", {
 *     key: "SMTP_AUTH_USER",
 *     value: myDomain.then(myDomain => myDomain.smtpsAuthUser),
 * });
 * const smtpPort = new gitlab.ProjectVariable("smtp_port", {
 *     key: "SMTP_PORT",
 *     value: output(myDomain.then(myDomain => myDomain.smtpsPort)).apply(x =>String(x)),
 * });
 * const smtpHost = new gitlab.ProjectVariable("smtp_host", {
 *     key: "SMTP_HOST",
 *     value: output(myDomain.then(myDomain => myDomain.smtpsHost)).apply(x =>String(x)),
 * });
 * ```
 *
 * ## Import
 *
 * Domains can be imported using the `{region}/{id}`, e.g.
 *
 * ```sh
 * $ pulumi import scaleway:tem/domain:Domain main fr-par/11111111-1111-1111-1111-111111111111
 * ```
 */
export declare class Domain extends pulumi.CustomResource {
    /**
     * Get an existing Domain 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?: DomainState, opts?: pulumi.CustomResourceOptions): Domain;
    /**
     * Returns true if the given object is an instance of Domain.  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 Domain;
    /**
     * Acceptation of the [Term of Service](https://tem.s3.fr-par.scw.cloud/antispam_policy.pdf).
     * > **Important:** This attribute must be set to `true`.
     */
    readonly acceptTos: pulumi.Output<boolean>;
    /**
     * Automatically configures DNS settings for the domain, simplifying the setup process by applying predefined configurations.
     */
    readonly autoconfig: pulumi.Output<boolean | undefined>;
    /**
     * The date and time of the Transaction Email Domain's creation (RFC 3339 format).
     */
    readonly createdAt: pulumi.Output<string>;
    /**
     * The DKIM public key, as should be recorded in the DNS zone.
     */
    readonly dkimConfig: pulumi.Output<string>;
    /**
     * DKIM name for the domain, as should be recorded in the DNS zone.
     */
    readonly dkimName: pulumi.Output<string>;
    /**
     * DMARC record for the domain, as should be recorded in the DNS zone.
     */
    readonly dmarcConfig: pulumi.Output<string>;
    /**
     * DMARC name for the domain, as should be recorded in the DNS zone.
     */
    readonly dmarcName: pulumi.Output<string>;
    /**
     * (Deprecated) The error message if the last check failed.
     *
     * @deprecated last_error is deprecated
     */
    readonly lastError: pulumi.Output<string>;
    /**
     * The date and time the domain was last found to be valid (RFC 3339 format).
     */
    readonly lastValidAt: pulumi.Output<string>;
    /**
     * The Scaleway's blackhole MX server to use if you do not have one.
     */
    readonly mxBlackhole: pulumi.Output<string>;
    /**
     * MX record configuration for the domain blackhole.
     */
    readonly mxConfig: pulumi.Output<string>;
    /**
     * The domain name, must not be used in another Transactional Email Domain.
     * > **Important:** Updates to `name` will recreate the domain.
     */
    readonly name: pulumi.Output<string>;
    /**
     * The date and time of the next scheduled check (RFC 3339 format).
     */
    readonly nextCheckAt: pulumi.Output<string>;
    /**
     * `projectId`) The ID of the project the domain is associated with.
     */
    readonly projectId: pulumi.Output<string>;
    /**
     * `region`). The region in which the domain should be created.
     * > **Important:** Currently, only fr-par is supported. Specifying any other region will cause an error.
     */
    readonly region: pulumi.Output<string | undefined>;
    /**
     * The domain's reputation.
     */
    readonly reputations: pulumi.Output<outputs.tem.DomainReputation[]>;
    /**
     * The date and time of the revocation of the domain (RFC 3339 format).
     */
    readonly revokedAt: pulumi.Output<string>;
    /**
     * The SMTP host to use to send emails.
     */
    readonly smtpHost: pulumi.Output<string>;
    /**
     * The SMTP port to use to send emails over TLS.
     */
    readonly smtpPort: pulumi.Output<number>;
    /**
     * The SMTP port to use to send emails over TLS.
     */
    readonly smtpPortAlternative: pulumi.Output<number>;
    /**
     * The SMTP port to use to send emails.
     */
    readonly smtpPortUnsecure: pulumi.Output<number>;
    /**
     * SMTPS auth user refers to the identifier for a user authorized to send emails via SMTPS, ensuring secure email transmission.
     */
    readonly smtpsAuthUser: pulumi.Output<string>;
    /**
     * The SMTPS port to use to send emails over TLS Wrapper.
     */
    readonly smtpsPort: pulumi.Output<number>;
    /**
     * The SMTPS port to use to send emails over TLS Wrapper.
     */
    readonly smtpsPortAlternative: pulumi.Output<number>;
    /**
     * The snippet of the SPF record that should be registered in the DNS zone.
     */
    readonly spfConfig: pulumi.Output<string>;
    /**
     * Complete SPF record value for the domain, as should be recorded in the DNS zone.
     */
    readonly spfValue: pulumi.Output<string>;
    /**
     * The status of the domain's reputation.
     */
    readonly status: pulumi.Output<string>;
    /**
     * Create a Domain 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: DomainArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Domain resources.
 */
export interface DomainState {
    /**
     * Acceptation of the [Term of Service](https://tem.s3.fr-par.scw.cloud/antispam_policy.pdf).
     * > **Important:** This attribute must be set to `true`.
     */
    acceptTos?: pulumi.Input<boolean | undefined>;
    /**
     * Automatically configures DNS settings for the domain, simplifying the setup process by applying predefined configurations.
     */
    autoconfig?: pulumi.Input<boolean | undefined>;
    /**
     * The date and time of the Transaction Email Domain's creation (RFC 3339 format).
     */
    createdAt?: pulumi.Input<string | undefined>;
    /**
     * The DKIM public key, as should be recorded in the DNS zone.
     */
    dkimConfig?: pulumi.Input<string | undefined>;
    /**
     * DKIM name for the domain, as should be recorded in the DNS zone.
     */
    dkimName?: pulumi.Input<string | undefined>;
    /**
     * DMARC record for the domain, as should be recorded in the DNS zone.
     */
    dmarcConfig?: pulumi.Input<string | undefined>;
    /**
     * DMARC name for the domain, as should be recorded in the DNS zone.
     */
    dmarcName?: pulumi.Input<string | undefined>;
    /**
     * (Deprecated) The error message if the last check failed.
     *
     * @deprecated last_error is deprecated
     */
    lastError?: pulumi.Input<string | undefined>;
    /**
     * The date and time the domain was last found to be valid (RFC 3339 format).
     */
    lastValidAt?: pulumi.Input<string | undefined>;
    /**
     * The Scaleway's blackhole MX server to use if you do not have one.
     */
    mxBlackhole?: pulumi.Input<string | undefined>;
    /**
     * MX record configuration for the domain blackhole.
     */
    mxConfig?: pulumi.Input<string | undefined>;
    /**
     * The domain name, must not be used in another Transactional Email Domain.
     * > **Important:** Updates to `name` will recreate the domain.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * The date and time of the next scheduled check (RFC 3339 format).
     */
    nextCheckAt?: pulumi.Input<string | undefined>;
    /**
     * `projectId`) The ID of the project the domain is associated with.
     */
    projectId?: pulumi.Input<string | undefined>;
    /**
     * `region`). The region in which the domain should be created.
     * > **Important:** Currently, only fr-par is supported. Specifying any other region will cause an error.
     */
    region?: pulumi.Input<string | undefined>;
    /**
     * The domain's reputation.
     */
    reputations?: pulumi.Input<pulumi.Input<inputs.tem.DomainReputation>[] | undefined>;
    /**
     * The date and time of the revocation of the domain (RFC 3339 format).
     */
    revokedAt?: pulumi.Input<string | undefined>;
    /**
     * The SMTP host to use to send emails.
     */
    smtpHost?: pulumi.Input<string | undefined>;
    /**
     * The SMTP port to use to send emails over TLS.
     */
    smtpPort?: pulumi.Input<number | undefined>;
    /**
     * The SMTP port to use to send emails over TLS.
     */
    smtpPortAlternative?: pulumi.Input<number | undefined>;
    /**
     * The SMTP port to use to send emails.
     */
    smtpPortUnsecure?: pulumi.Input<number | undefined>;
    /**
     * SMTPS auth user refers to the identifier for a user authorized to send emails via SMTPS, ensuring secure email transmission.
     */
    smtpsAuthUser?: pulumi.Input<string | undefined>;
    /**
     * The SMTPS port to use to send emails over TLS Wrapper.
     */
    smtpsPort?: pulumi.Input<number | undefined>;
    /**
     * The SMTPS port to use to send emails over TLS Wrapper.
     */
    smtpsPortAlternative?: pulumi.Input<number | undefined>;
    /**
     * The snippet of the SPF record that should be registered in the DNS zone.
     */
    spfConfig?: pulumi.Input<string | undefined>;
    /**
     * Complete SPF record value for the domain, as should be recorded in the DNS zone.
     */
    spfValue?: pulumi.Input<string | undefined>;
    /**
     * The status of the domain's reputation.
     */
    status?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a Domain resource.
 */
export interface DomainArgs {
    /**
     * Acceptation of the [Term of Service](https://tem.s3.fr-par.scw.cloud/antispam_policy.pdf).
     * > **Important:** This attribute must be set to `true`.
     */
    acceptTos: pulumi.Input<boolean>;
    /**
     * Automatically configures DNS settings for the domain, simplifying the setup process by applying predefined configurations.
     */
    autoconfig?: pulumi.Input<boolean | undefined>;
    /**
     * The domain name, must not be used in another Transactional Email Domain.
     * > **Important:** Updates to `name` will recreate the domain.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * `projectId`) The ID of the project the domain is associated with.
     */
    projectId?: pulumi.Input<string | undefined>;
    /**
     * `region`). The region in which the domain should be created.
     * > **Important:** Currently, only fr-par is supported. Specifying any other region will cause an error.
     */
    region?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=domain.d.ts.map