import { Template } from "../metadata-types.js";
import { CodemetaDependencyLd, CodemetaPersonOrOrgLd } from "../utilities/codemeta-helpers.js";
import { TemplateDataCodemeta } from "./codemeta.js";
import { TemplateDataCodemetaJson } from "./codemeta-json.js";
import { TemplateDataFrontmatter } from "./frontmatter.js";
import { TemplateDataMetadata } from "./metadata.js";
import { TemplateDataProject } from "./project.js";
//#region src/lib/templates/index.d.ts
/**
 * Built-in templates, keyed by name.
 */
declare const templates: {
  codemeta: Template<{
    '@context': string;
    '@type': string;
    applicationCategory: string | undefined;
    applicationSubCategory: string | undefined;
    author: CodemetaPersonOrOrgLd[] | undefined;
    buildInstructions: string | undefined;
    codeRepository: string | undefined;
    continuousIntegration: string | undefined;
    contributor: CodemetaPersonOrOrgLd[] | undefined;
    copyrightHolder: CodemetaPersonOrOrgLd[] | undefined;
    copyrightYear: number | undefined;
    dateCreated: string | undefined;
    dateModified: string | undefined;
    datePublished: string | undefined;
    description: string | undefined;
    developmentStatus: string | undefined;
    downloadUrl: string | undefined;
    funder: CodemetaPersonOrOrgLd[] | undefined;
    funding: string | undefined;
    identifier: string | undefined;
    installUrl: string | undefined;
    isAccessibleForFree: boolean | undefined;
    issueTracker: string | undefined;
    keywords: string[] | undefined;
    license: string | undefined;
    maintainer: CodemetaPersonOrOrgLd[] | undefined;
    name: string | undefined;
    operatingSystem: string[] | undefined;
    programmingLanguage: string[] | undefined;
    readme: string | undefined;
    relatedLink: string | string[] | undefined;
    releaseNotes: string | undefined;
    runtimePlatform: string[] | undefined;
    softwareHelp: string | undefined;
    softwareRequirements: CodemetaDependencyLd[] | undefined;
    softwareSuggestions: CodemetaDependencyLd[] | undefined;
    targetProduct: Record<string, string> | undefined;
    url: string | undefined;
    version: string | undefined;
  }>;
  codemetaJson: Template<{
    applicationCategory?: string | undefined;
    applicationSubCategory?: string | undefined;
    author?: {
      affiliation?: string | undefined;
      email?: string | undefined;
      familyName?: string | undefined;
      givenName?: string | undefined;
      id?: string | undefined;
      name?: string | undefined;
      type?: "Organization" | "Person" | undefined;
      url?: string | undefined;
    }[] | undefined;
    buildInstructions?: string | undefined;
    codeRepository?: string | undefined;
    continuousIntegration?: string | undefined;
    contributor?: {
      affiliation?: string | undefined;
      email?: string | undefined;
      familyName?: string | undefined;
      givenName?: string | undefined;
      id?: string | undefined;
      name?: string | undefined;
      type?: "Organization" | "Person" | undefined;
      url?: string | undefined;
    }[] | undefined;
    copyrightHolder?: {
      affiliation?: string | undefined;
      email?: string | undefined;
      familyName?: string | undefined;
      givenName?: string | undefined;
      id?: string | undefined;
      name?: string | undefined;
      type?: "Organization" | "Person" | undefined;
      url?: string | undefined;
    }[] | undefined;
    copyrightYear?: number | undefined;
    dateCreated?: string | undefined;
    dateModified?: string | undefined;
    datePublished?: string | undefined;
    description?: string | undefined;
    developmentStatus?: string | undefined;
    downloadUrl?: string | undefined;
    funder?: {
      affiliation?: string | undefined;
      email?: string | undefined;
      familyName?: string | undefined;
      givenName?: string | undefined;
      id?: string | undefined;
      name?: string | undefined;
      type?: "Organization" | "Person" | undefined;
      url?: string | undefined;
    }[] | undefined;
    funding?: string | undefined;
    identifier?: string | undefined;
    installUrl?: string | undefined;
    isAccessibleForFree?: boolean | undefined;
    issueTracker?: string | undefined;
    keywords?: string[] | undefined;
    license?: string | string[] | undefined;
    maintainer?: {
      affiliation?: string | undefined;
      email?: string | undefined;
      familyName?: string | undefined;
      givenName?: string | undefined;
      id?: string | undefined;
      name?: string | undefined;
      type?: "Organization" | "Person" | undefined;
      url?: string | undefined;
    }[] | undefined;
    name?: string | undefined;
    operatingSystem?: string[] | undefined;
    programmingLanguage?: string[] | undefined;
    readme?: string | undefined;
    relatedLink?: string | string[] | undefined;
    releaseNotes?: string | undefined;
    runtimePlatform?: string[] | undefined;
    softwareHelp?: string | undefined;
    softwareRequirements?: {
      identifier?: string | undefined;
      name?: string | undefined;
      runtimePlatform?: string | undefined;
      version?: string | undefined;
    }[] | undefined;
    softwareSuggestions?: {
      identifier?: string | undefined;
      name?: string | undefined;
      runtimePlatform?: string | undefined;
      version?: string | undefined;
    }[] | undefined;
    softwareVersion?: string | undefined;
    url?: string | undefined;
    version?: string | undefined;
  }>;
  frontmatter: Template<{
    Name: string | null;
    ID: string | null;
    Description: string | null;
    Author: string[] | null;
    Contributor: string[] | null;
    Maintainer: string[] | null;
    Version: string | null;
    Account: string | null;
    Public: boolean;
    Fork: boolean;
    Published: boolean;
    Status: "author" | "maintainer" | "unknown" | "observer";
    Tags: string[] | null;
    Aliases: (string | null | undefined)[] | null;
    License: string[] | null;
    Language: string[] | null;
    'Secondary Language': string[] | null;
    'Repo Path': string | null;
    'VS Code Path': string | null;
    'Readme Path': string | null;
    'Homepage URL': string | null;
    'Repo URL': string | null;
    'Issues URL': string | null;
    'Readme URL': string | null;
    'Package URL': string | null;
    Created: string | null;
    'First Commit Date': string | null;
    'Latest Commit Date': string | null;
    'Latest Push Date': string | null;
    'Latest Release Date': string | null;
    'Latest Release Version': string | null;
    Stars: number | null;
    Watchers: number | null;
    Contributors: number | null;
    Forks: number | null;
    'Downloads Total': number | null;
    'Downloads Monthly': number | null;
    Releases: number | null;
    'Issues Open': number | null;
    'Issues Closed': number | null;
    'PRs Open': number | null;
    'PRs Merged': number | null;
    'PRs Closed': number | null;
    'Vulnerability Alerts': number | null;
    'Lines of Code': number | null;
    'Total Files': number | null;
    'Total Size MB': number | null;
    'Tracked Files': number | null;
    'Tracked Size MB': number | null;
    'GitHub Size MB': number | null;
    Dependencies: string[] | null;
    'Dev Dependencies': string[] | null;
    'Major Updates': number;
    'Minor Updates': number;
    'Patch Updates': number;
    'Total Updates': number;
    Libyears: number;
    Runtime: string[] | null;
    'Operating System': string[] | null;
    'Forked From': string | null;
    'Fork Ahead': number | null;
    'Fork Behind': number | null;
    'Template From': string | null;
    Organization: boolean;
    Monorepo: boolean;
    'Git Commits': number | null;
    'Git Dirty Files': number | null;
    'Git Remotes Ahead': number | null;
    'Git Remotes Behind': number | null;
    'Git LFS': boolean;
    'Git Tags': number | null;
    'Git Current Branch': string | null;
    'Git Branches': number | null;
    'Git Remotes': number | null;
    'Git Submodules': number;
  }>;
  metadata: Template<{
    description: string | undefined;
    homepage: string | undefined;
    topics: string[] | undefined;
  }>;
  project: Template<{
    description: string | undefined;
    firstCommitDate: string | undefined;
    gitHubLink: string | undefined;
    gitHubStarCount: number | undefined;
    gitIsClean: boolean | undefined;
    gitIsDirty: boolean | undefined;
    gitRemoteCount: number | undefined;
    homepage: string | undefined;
    isAuthoredByMe: boolean | undefined;
    isOnMyGitHub: boolean | undefined;
    isOnNpm: boolean;
    isPublic: boolean;
    isRemoteAhead: boolean | undefined;
    issueCount: number | undefined;
    lastCommitDate: string | undefined;
    license: string | undefined;
    majorUpdateCount: number;
    majorUpdateList: string[] | undefined;
    npmDownloadCount: number | undefined;
    readmePath: string | undefined;
    repositoryPath: string | undefined;
    semverUpdateCount: undefined;
    semverUpdateList: undefined;
    tags: string[] | undefined;
    title: string | undefined;
    type: "source" | "fork" | "unmaintained" | undefined;
    usesPnpm: boolean;
    usesSharedConfig: boolean;
    version: string | undefined;
  }>;
};
/**
 * Maps built-in template names to their return types.
 */
type TemplateMap = {
  codemeta: TemplateDataCodemeta;
  codemetaJson: TemplateDataCodemetaJson;
  frontmatter: TemplateDataFrontmatter;
  metadata: TemplateDataMetadata;
  project: TemplateDataProject;
};
/**
 * Names of built-in templates.
 */
type TemplateName = keyof TemplateMap;
//#endregion
export { TemplateMap, TemplateName, templates };