from typing import Literal

JSON_FIELDS = Literal[
    "archivedAt",
    "assignableUsers",
    "codeOfConduct",
    "contactLinks",
    "createdAt",
    "defaultBranchRef",
    "deleteBranchOnMerge",
    "description",
    "diskUsage",
    "forkCount",
    "fundingLinks",
    "hasDiscussionsEnabled",
    "hasIssuesEnabled",
    "hasProjectsEnabled",
    "hasWikiEnabled",
    "homepageUrl",
    "id",
    "isArchived",
    "isBlankIssuesEnabled",
    "isEmpty",
    "isFork",
    "isInOrganization",
    "isMirror",
    "isPrivate",
    "isSecurityPolicyEnabled",
    "isTemplate",
    "isUserConfigurationRepository",
    "issueTemplates",
    "issues",
    "labels",
    "languages",
    "latestRelease",
    "licenseInfo",
    "mentionableUsers",
    "mergeCommitAllowed",
    "milestones",
    "mirrorUrl",
    "name",
    "nameWithOwner",
    "openGraphImageUrl",
    "owner",
    "parent",
    "primaryLanguage",
    "projects",
    "projectsV2",
    "pullRequestTemplates",
    "pullRequests",
    "pushedAt",
    "rebaseMergeAllowed",
    "repositoryTopics",
    "securityPolicyUrl",
    "squashMergeAllowed",
    "sshUrl",
    "stargazerCount",
    "templateRepository",
    "updatedAt",
    "url",
    "usesCustomOpenGraphImage",
    "viewerCanAdminister",
    "viewerDefaultCommitEmail",
    "viewerDefaultMergeMethod",
    "viewerHasStarred",
    "viewerPermission",
    "viewerPossibleCommitEmails",
    "viewerSubscription",
    "visibility",
    "watchers",
]

# Taken from https://github.com/github/gitignore
GITIGNORE_TEMPLATE = Literal[
    "AL",
    "Actionscript",
    "Ada",
    "AdventureGameStudio",
    "Agda",
    "Alteryx",
    "AltiumDesigner",
    "Android",
    "Angular",
    "Anjuta",
    "Ansible",
    "AppEngine",
    "AppceleratorTitanium",
    "ArchLinuxPackages",
    "Archives",
    "AtmelStudio",
    "AutoIt",
    "AutomationStudio",
    "Autotools",
    "B4X",
    "Backup",
    "Ballerina",
    "Bazaar",
    "Bazel",
    "Beef",
    "Bitrix",
    "BricxCC",
    "C",
    "C++",
    "CDK",
    "CFWheels",
    "CMake",
    "CUDA",
    "CVS",
    "CakePHP",
    "Calabash",
    "ChefCookbook",
    "Cloud9",
    "CodeIgniter",
    "CodeKit",
    "CodeSniffer",
    "ColdBox",
    "CommonLisp",
    "Composer",
    "Concrete5",
    "Coq",
    "Cordova",
    "CraftCMS",
    "Cursor",
    "D",
    "DM",
    "Dart",
    "DartEditor",
    "Delphi",
    "Diff",
    "Dotnet",
    "Dotter",
    "Dreamweaver",
    "Dropbox",
    "Drupal",
    "Drupal7",
    "EPiServer",
    "Eagle",
    "Eclipse",
    "EiffelStudio",
    "Elisp",
    "Elixir",
    "Elm",
    "Emacs",
    "Ensime",
    "Erlang",
    "Espresso",
    "Exercism",
    "Expo",
    "ExpressionEngine",
    "ExtJs",
    "Fancy",
    "Finale",
    "Firebase",
    "FlaxEngine",
    "FlexBuilder",
    "Flutter",
    "ForceDotCom",
    "FuelPHP",
    "GNOMEShellExtension",
    "GPG",
    "GWT",
    "Gcov",
    "GitBook",
    "GitHubPages",
    "Gleam",
    "Go",
    "Go.AllowList",
    "Godot",
    "Gradle",
    "Grails",
    "Gretl",
    "HIP",
    "Haskell",
    "Haxe",
    "Hexo",
    "Hugo",
    "IAR",
    "IAR_EWARM",
    "IGORPro",
    "Idris",
    "Images",
    "InforCMS",
    "JBoss",
    "JBoss4",
    "JBoss6",
    "JDeveloper",
    "JENKINS_HOME",
    "JEnv",
    "Java",
    "Jekyll",
    "JetBrains",
    "Jigsaw",
    "Joomla",
    "Julia",
    "JupyterNotebooks",
    "KDevelop4",
    "Katalon",
    "Kate",
    "Kentico",
    "KiCad",
    "Kohana",
    "Kotlin",
    "LabVIEW",
    "LangChain",
    "Laravel",
    "Lazarus",
    "Lefthook",
    "Leiningen",
    "LemonStand",
    "LensStudio",
    "LibreOffice",
    "Lilypond",
    "Linux",
    "Lithium",
    "Logtalk",
    "Lua",
    "Luau",
    "LyX",
    "MATLAB",
    "Magento",
    "Magento1",
    "Magento2",
    "Maven",
    "Mercurial",
    "Mercury",
    "MetaProgrammingSystem",
    "MetaTrader5",
    "Metals",
    "Meteor",
    "MicrosoftOffice",
    "ModelSim",
    "Modelica",
    "Momentics",
    "MonoDevelop",
    "Move",
    "NWjs",
    "Nanoc",
    "NasaSpecsIntact",
    "Nestjs",
    "NetBeans",
    "Nextjs",
    "Nikola",
    "Nim",
    "Ninja",
    "Nix",
    "Node",
    "NotepadPP",
    "NotesAndCoreConfiguration",
    "NotesAndExtendedConfiguration",
    "NotesOnly",
    "OCaml",
    "Objective-C",
    "Opa",
    "OpenCart",
    "OpenSSL",
    "OpenTofu",
    "OracleForms",
    "Otto",
    "PSoCCreator",
    "Packer",
    "Patch",
    "Perl",
    "Phalcon",
    "Phoenix",
    "Pimcore",
    "PlatformIO",
    "PlayFramework",
    "Plone",
    "Prestashop",
    "Processing",
    "PuTTY",
    "Puppet",
    "PureScript",
    "Python",
    "Qooxdoo",
    "Qt",
    "R",
    "ROS",
    "ROS2",
    "Racket",
    "Rails",
    "Raku",
    "ReScript",
    "Red",
    "Redcar",
    "Redis",
    "RhodesRhomobile",
    "Ruby",
    "Rust",
    "SAM",
    "SBT",
    "SCons",
    "SPFx",
    "SSDT-sqlproj",
    "STM32CubeIDE",
    "SVN",
    "Salesforce",
    "Sass",
    "Scala",
    "Scheme",
    "Scrivener",
    "Sdcc",
    "SeamGen",
    "SketchUp",
    "SlickEdit",
    "Smalltalk",
    "Snap",
    "Solidity-Remix",
    "Splunk",
    "Stata",
    "Stella",
    "Strapi",
    "SublimeText",
    "SugarCRM",
    "Swift",
    "Symfony",
    "SymphonyCMS",
    "Syncthing",
    "SynopsysVCS",
    "Tags",
    "TeX",
    "Terraform",
    "Terragrunt",
    "TestComplete",
    "TextMate",
    "Textpattern",
    "ThinkPHP",
    "Toit",
    "TortoiseGit",
    "TurboGears2",
    "TwinCAT3",
    "Typo3",
    "UTAU",
    "UiPath",
    "Umbraco",
    "Unity",
    "UnrealEngine",
    "V",
    "VBA",
    "VVVV",
    "Vagrant",
    "Vim",
    "VirtualEnv",
    "Virtuoso",
    "VisualStudio",
    "VisualStudioCode",
    "Vue",
    "Waf",
    "WebMethods",
    "Windows",
    "WordPress",
    "Xcode",
    "Xilinx",
    "XilinxISE",
    "Xojo",
    "Yeoman",
    "Yii",
    "ZendFramework",
    "Zephir",
    "Zig",
    "core",
    "ecu.test",
    "esp-idf",
    "libogc",
    "macOS",
    "mise",
    "uVision",
]

LICENSE = Literal[
    "agpl-3.0",
    "apache-2.0",
    "bsd-2-clause",
    "bsd-3-clause",
    "bsl-1.0",
    "cc0-1.0",
    "epl-2.0",
    "gpl-2.0",
    "gpl-3.0",
    "lgpl-2.1",
    "mit",
    "mpl-2.0",
    "unlicense",
]
