import type { LucideIcon } from "lucide-react";

export interface SelectedSkillPayloadItem {
  id: string | number;
  name: string;
}

export interface Translations {
  // Locale meta
  locale: {
    localName: string;
  };

  // Common
  common: {
    home: string;
    settings: string;
    delete: string;
    rename: string;
    share: string;
    openInNewWindow: string;
    close: string;
    fullScreen: string;
    closeFullScreen: string;
    more: string;
    search: string;
    download: string;
    downloadOriginal: string;
    downloadAsDocx: string;
    downloadAsPdf: string;
    thinking: string;
    artifacts: string;
    public: string;
    custom: string;
    notAvailableInDemoMode: string;
    loading: string;
    version: string;
    lastUpdated: string;
    code: string;
    preview: string;
    cancel: string;
    save: string;
    install: string;
    create: string;
    export: string;
    exportAsMarkdown: string;
    exportAsJSON: string;
    exportSuccess: string;
    removeAttachment: string;
    reference: string;
    resetThread: string;
  };

  // Welcome
  welcome: {
    greeting: string;
    description: string;
    createYourOwnSkill: string;
    createYourOwnSkillDescription: string;
  };

  // Clipboard
  clipboard: {
    copyToClipboard: string;
    copiedToClipboard: string;
    failedToCopyToClipboard: string;
    linkCopied: string;
  };

  // Input Box
  inputBox: {
    sendMessagePrice: string;
    placeholder: string;
    welcomePlaceholder: string;
    chatPlaceholder: string;
    createSkillPrompt: string;
    addAttachments: string;
    history: string;
    welcome:string;
    selectSkill: string;
    mode: string;
    flashMode: string;
    flashModeDescription: string;
    reasoningMode: string;
    reasoningModeDescription: string;
    proMode: string;
    proModeDescription: string;
    ultraMode: string;
    ultraModeDescription: string;
    reasoningEffort: string;
    reasoningEffortMinimal: string;
    reasoningEffortMinimalDescription: string;
    reasoningEffortLow: string;
    reasoningEffortLowDescription: string;
    reasoningEffortMedium: string;
    reasoningEffortMediumDescription: string;
    reasoningEffortHigh: string;
    reasoningEffortHighDescription: string;
    searchModels: string;
    surpriseMe: string;
    surpriseMePrompt: string;
    followupLoading: string;
    followupConfirmTitle: string;
    followupConfirmDescription: string;
    followupConfirmAppend: string;
    followupConfirmReplace: string;
    submit: string;
    submitting: string;
    stop: string;
    addReference: string;
    referenceSourceArtifact: string;
    referenceSourceUpload: string;
    maxReferencesReached: string;
    suggestions: {
      suggestion: string;
      prompt: string;
      icon: LucideIcon;
      children: SelectedSkillPayloadItem[];
    }[];
    suggestionsCreate: (
      | {
          suggestion: string;
          prompt: string;
          icon: LucideIcon;
        }
      | {
          type: "separator";
        }
    )[];
  };

  // Sidebar
  sidebar: {
    recentChats: string;
    newChat: string;
    chats: string;
    demoChats: string;
    agents: string;
  };

  // Agents
  agents: {
    title: string;
    description: string;
    newAgent: string;
    emptyTitle: string;
    emptyDescription: string;
    chat: string;
    delete: string;
    deleteConfirm: string;
    deleteSuccess: string;
    newChat: string;
    createPageTitle: string;
    createPageSubtitle: string;
    nameStepTitle: string;
    nameStepHint: string;
    nameStepPlaceholder: string;
    nameStepContinue: string;
    nameStepInvalidError: string;
    nameStepAlreadyExistsError: string;
    nameStepCheckError: string;
    nameStepBootstrapMessage: string;
    agentCreated: string;
    startChatting: string;
    backToGallery: string;
  };

  // Breadcrumb
  breadcrumb: {
    workspace: string;
    chats: string;
  };

  // Workspace
  workspace: {
    officialWebsite: string;
    githubTooltip: string;
    settingsAndMore: string;
    visitGithub: string;
    reportIssue: string;
    contactUs: string;
    about: string;
  };

  // Conversation
  conversation: {
    noMessages: string;
    startConversation: string;
  };

  // Chats
  chats: {
    searchChats: string;
    scrollToBottom: string;
  };

  threadMemoryPanel: {
    title: string;
    load: string;
    loading: string;
    save: string;
    saving: string;
    remove: string;
    removing: string;
    threadId: string;
    version: string;
    unavailableVersion: string;
    summaryPlaceholder: string;
    toastLoadSuccess: string;
    toastLoadFailed: string;
    toastConflict: string;
    toastSaveSuccess: string;
    toastSaveFailed: string;
    toastDeleteSuccess: string;
    toastDeleteFailed: string;
  };

  // Workspace Chat Page
  chatPage: {
    defaultSlogan: string;
    missingThreadIdForCreate: string;
    createSessionFailed: string;
    conversationFinished: string;
    missingThreadIdForSend: string;
    viewArtifactsTooltip: string;
    noArtifactSelectedTitle: string;
    noArtifactSelectedDescription: string;
    exitDialogTitle: string;
    exitDialogDescription: string;
    exitDialogConfirm: string;
    selectedSkillLoadFailed: string;
    unknownErrorRetry: string;
  };

  messageListItem: {
    materializing: string;
    importAsSkillDir: string;
    materializeSuccess: (files: number, directories: number) => string;
    parseFailed: string;
    materializeFailed: (message: string) => string;
  };

  artifactPreview: {
    pdfPreviewFailed: string;
    unsupportedType: string;
    docxPreviewFailed: string;
    excelPreviewFailed: string;
    switchSheetFailed: string;
    excelGridPreviewFailed: string;
    pptxDownloadHint: string;
    openInNewTab: string;
    clickToDownload: string;
    pageCountLabel: (fileName: string, pageCount: number) => string;
    zoomIn: string;
    zoomOut: string;
    showArtifactsTooltip: string;
  };

  workspaceHeader: {
    sidebarTitle: string;
  };

  models: {
    updating: string;
    apiUnavailable: string;
  };

  threads: {
    streamError: string;
    billingInsufficientBalance: string;
    invalidThreadId: string;
    staleReferencesRemoved: string;
    uploadFailed: string;
    uploadPrepareFailed: (count: number) => string;
    threadNotReadyForUpload: string;
  };

  skills: {
    loadFailed: string;
    missingThreadId: string;
    invalidSkillId: string;
    loading: (title: string) => string;
    loadFailedWithTitle: (title: string) => string;
    loadSuccessWithTitle: (title: string) => string;
    loadErrorWithTitle: (title: string) => string;
    unknownError: string;
    networkRequestFailed: string;
    createdFiles: (count: number) => string;
    invalidSkillIdArray: string;
  };

  // Page titles (document title)
  pages: {
    appName: string;
    chats: string;
    newChat: string;
    untitled: string;
  };

  // Tool calls
  toolCalls: {
    moreSteps: (count: number) => string;
    lessSteps: string;
    executeCommand: string;
    presentFiles: string;
    needYourHelp: string;
    useTool: (toolName: string) => string;
    searchForRelatedInfo: string;
    searchForRelatedImages: string;
    searchFor: (query: string) => string;
    searchForRelatedImagesFor: (query: string) => string;
    searchOnWebFor: (query: string) => string;
    viewWebPage: string;
    listFolder: string;
    readFile: string;
    writeFile: string;
    clickToViewContent: string;
    writeTodos: string;
    expandContent: string;
    collapseContent: string;
    skillInstallTooltip: string;
  };

  // Uploads
  uploads: {
    uploading: string;
    uploadingFiles: string;
  };

  // Subtasks
  subtasks: {
    subtask: string;
    executing: (count: number) => string;
    in_progress: string;
    completed: string;
    failed: string;
  };

  // Token Usage
  tokenUsage: {
    title: string;
    input: string;
    output: string;
    total: string;
  };

  // Shortcuts
  shortcuts: {
    searchActions: string;
    noResults: string;
    actions: string;
    keyboardShortcuts: string;
    keyboardShortcutsDescription: string;
    openCommandPalette: string;
    toggleSidebar: string;
  };

  // Settings
  settings: {
    title: string;
    description: string;
    sections: {
      appearance: string;
      memory: string;
      tools: string;
      skills: string;
      notification: string;
      about: string;
    };
    memory: {
      title: string;
      description: string;
      empty: string;
      rawJson: string;
      markdown: {
        overview: string;
        userContext: string;
        work: string;
        personal: string;
        topOfMind: string;
        historyBackground: string;
        recentMonths: string;
        earlierContext: string;
        longTermBackground: string;
        updatedAt: string;
        facts: string;
        empty: string;
        table: {
          category: string;
          confidence: string;
          confidenceLevel: {
            veryHigh: string;
            high: string;
            normal: string;
            unknown: string;
          };
          content: string;
          source: string;
          createdAt: string;
          view: string;
        };
      };
    };
    appearance: {
      themeTitle: string;
      themeDescription: string;
      system: string;
      light: string;
      dark: string;
      systemDescription: string;
      lightDescription: string;
      darkDescription: string;
      languageTitle: string;
      languageDescription: string;
    };
    tools: {
      title: string;
      description: string;
    };
    skills: {
      title: string;
      description: string;
      createSkill: string;
      emptyTitle: string;
      emptyDescription: string;
      emptyButton: string;
    };
    notification: {
      title: string;
      description: string;
      requestPermission: string;
      deniedHint: string;
      testButton: string;
      testTitle: string;
      testBody: string;
      notSupported: string;
      disableNotification: string;
    };
    acknowledge: {
      emptyTitle: string;
      emptyDescription: string;
    };
  };
}
