<filename>sdk/dotnet/DataSync.cs// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;

namespace Pulumi.Flux
{
    public static class DataSync
    {
        public static Task<DataSyncResult> InvokeAsync(DataSyncArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<DataSyncResult>("flux:index/dataSync:DataSync", args ?? new DataSyncArgs(), options.WithDefaults());

        public static Output<DataSyncResult> Invoke(DataSyncInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<DataSyncResult>("flux:index/dataSync:DataSync", args ?? new DataSyncInvokeArgs(), options.WithDefaults());
    }


    public sealed class DataSyncArgs : global::Pulumi.InvokeArgs
    {
        [Input("branch")]
        public string? Branch { get; set; }

        [Input("commit")]
        public string? Commit { get; set; }

        [Input("gitImplementation")]
        public string? GitImplementation { get; set; }

        [Input("interval")]
        public int? Interval { get; set; }

        [Input("name")]
        public string? Name { get; set; }

        [Input("namespace")]
        public string? Namespace { get; set; }

        [Input("patchNames")]
        private List<string>? _patchNames;
        public List<string> PatchNames
        {
            get => _patchNames ?? (_patchNames = new List<string>());
            set => _patchNames = value;
        }

        [Input("secret")]
        public string? Secret { get; set; }

        [Input("semver")]
        public string? Semver { get; set; }

        [Input("tag")]
        public string? Tag { get; set; }

        [Input("targetPath", required: true)]
        public string TargetPath { get; set; } = null!;

        [Input("url", required: true)]
        public string Url { get; set; } = null!;

        public DataSyncArgs()
        {
        }
        public static new DataSyncArgs Empty => new DataSyncArgs();
    }

    public sealed class DataSyncInvokeArgs : global::Pulumi.InvokeArgs
    {
        [Input("branch")]
        public Input<string>? Branch { get; set; }

        [Input("commit")]
        public Input<string>? Commit { get; set; }

        [Input("gitImplementation")]
        public Input<string>? GitImplementation { get; set; }

        [Input("interval")]
        public Input<int>? Interval { get; set; }

        [Input("name")]
        public Input<string>? Name { get; set; }

        [Input("namespace")]
        public Input<string>? Namespace { get; set; }

        [Input("patchNames")]
        private InputList<string>? _patchNames;
        public InputList<string> PatchNames
        {
            get => _patchNames ?? (_patchNames = new InputList<string>());
            set => _patchNames = value;
        }

        [Input("secret")]
        public Input<string>? Secret { get; set; }

        [Input("semver")]
        public Input<string>? Semver { get; set; }

        [Input("tag")]
        public Input<string>? Tag { get; set; }

        [Input("targetPath", required: true)]
        public Input<string> TargetPath { get; set; } = null!;

        [Input("url", required: true)]
        public Input<string> Url { get; set; } = null!;

        public DataSyncInvokeArgs()
        {
        }
        public static new DataSyncInvokeArgs Empty => new DataSyncInvokeArgs();
    }


    [OutputType]
    public sealed class DataSyncResult
    {
        public readonly string? Branch;
        public readonly string? Commit;
        public readonly string Content;
        public readonly string? GitImplementation;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        public readonly int? Interval;
        public readonly string KustomizeContent;
        public readonly string KustomizePath;
        public readonly string? Name;
        public readonly string? Namespace;
        public readonly ImmutableDictionary<string, string> PatchFilePaths;
        public readonly ImmutableArray<string> PatchNames;
        public readonly string Path;
        public readonly string? Secret;
        public readonly string? Semver;
        public readonly string? Tag;
        public readonly string TargetPath;
        public readonly string Url;

        [OutputConstructor]
        private DataSyncResult(
            string? branch,

            string? commit,

            string content,

            string? gitImplementation,

            string id,

            int? interval,

            string kustomizeContent,

            string kustomizePath,

            string? name,

            string? @namespace,

            ImmutableDictionary<string, string> patchFilePaths,

            ImmutableArray<string> patchNames,

            string path,

            string? secret,

            string? semver,

            string? tag,

            string targetPath,

            string url)
        {
            Branch = branch;
            Commit = commit;
            Content = content;
            GitImplementation = gitImplementation;
            Id = id;
            Interval = interval;
            KustomizeContent = kustomizeContent;
            KustomizePath = kustomizePath;
            Name = name;
            Namespace = @namespace;
            PatchFilePaths = patchFilePaths;
            PatchNames = patchNames;
            Path = path;
            Secret = secret;
            Semver = semver;
            Tag = tag;
            TargetPath = targetPath;
            Url = url;
        }
    }
}
