"use strict";
// *** WARNING: this file was generated by pulumi-language-nodejs. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***
Object.defineProperty(exports, "__esModule", { value: true });
exports.TransitGatewayRegistration = void 0;
const pulumi = require("@pulumi/pulumi");
const utilities = require("../utilities");
/**
 * The AWS::NetworkManager::TransitGatewayRegistration type registers a transit gateway in your global network. The transit gateway can be in any AWS Region, but it must be owned by the same AWS account that owns the global network. You cannot register a transit gateway in more than one global network.
 */
class TransitGatewayRegistration extends pulumi.CustomResource {
    /**
     * Get an existing TransitGatewayRegistration 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 opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name, id, opts) {
        return new TransitGatewayRegistration(name, undefined, { ...opts, id: id });
    }
    /**
     * Returns true if the given object is an instance of TransitGatewayRegistration.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj) {
        if (obj === undefined || obj === null) {
            return false;
        }
        return obj['__pulumiType'] === TransitGatewayRegistration.__pulumiType;
    }
    /**
     * Create a TransitGatewayRegistration 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, args, opts) {
        let resourceInputs = {};
        opts = opts || {};
        if (!opts.id) {
            if (args?.globalNetworkId === undefined && !opts.urn) {
                throw new Error("Missing required property 'globalNetworkId'");
            }
            if (args?.transitGatewayArn === undefined && !opts.urn) {
                throw new Error("Missing required property 'transitGatewayArn'");
            }
            resourceInputs["globalNetworkId"] = args?.globalNetworkId;
            resourceInputs["transitGatewayArn"] = args?.transitGatewayArn;
        }
        else {
            resourceInputs["globalNetworkId"] = undefined /*out*/;
            resourceInputs["transitGatewayArn"] = undefined /*out*/;
        }
        opts = pulumi.mergeOptions(utilities.resourceOptsDefaults(), opts);
        const replaceOnChanges = { replaceOnChanges: ["globalNetworkId", "transitGatewayArn"] };
        opts = pulumi.mergeOptions(opts, replaceOnChanges);
        super(TransitGatewayRegistration.__pulumiType, name, resourceInputs, opts);
    }
}
exports.TransitGatewayRegistration = TransitGatewayRegistration;
/** @internal */
TransitGatewayRegistration.__pulumiType = 'aws-native:networkmanager:TransitGatewayRegistration';
//# sourceMappingURL=transitGatewayRegistration.js.map