//#region ../../node_modules/.pnpm/@volar+language-core@2.4.27/node_modules/@volar/language-core/lib/types.d.ts
/**
 * CodeInformation is a configuration object attached to each CodeMapping (between source code and generated code,
 * e.g. between the template code in a .vue file and the type-checkable TS code generated from it) that
 * determines what code/language features are expected to be available for the mapping.
 *
 * Due to the dynamic nature of code generation and the fact that, for example, things like Code Actions
 * and auto-complete shouldn't be triggerable on certain "in-between" regions of generated code, we need
 * a way to shut off certain features in certain regions, while leaving them enabled in others.
 */
interface CodeInformation {
  /** virtual code is expected to support verification, where verification includes:
   *
   * - diagnostics (syntactic, semantic, and others, such as those generated by the TypeScript language service on generated TS code)
   * - code actions (refactorings, quick fixes,etc.)
   */
  verification?: boolean | {
    /**
     * when present, `shouldReport` callback is invoked to determine whether a diagnostic
     * raised in the generated code should be propagated back to the original source code.
     * Note that when this callback is present, diagnostic processing (e.g. typechecking) will
     * still be performed, but the results will not be reported back to the original source code. */
    shouldReport?(source: string | undefined, code: string | number | undefined): boolean;
  };
  /** virtual code is expected to support assisted completion */
  completion?: boolean | {
    isAdditional?: boolean;
    onlyImport?: boolean;
  };
  /** virtual code is expected correctly reflect semantic of the source code. Specifically this controls the following langauge features:
   *
   * - hover
   * - inlay hints
   * - code lens
   * - semantic tokens
   * - others
   *
   * Note that semantic diagnostics (e.g. TS type-checking) are covered by the `verification` property above.
   */
  semantic?: boolean | {
    shouldHighlight?(): boolean;
  };
  /** virtual code is expected correctly reflect reference relationships of the source code */
  navigation?: boolean | {
    shouldHighlight?(): boolean;
    shouldRename?(): boolean;
    resolveRenameNewName?(newName: string): string;
    resolveRenameEditText?(newText: string): string;
  };
  /** virtual code is expected correctly reflect the structural information of the source code */
  structure?: boolean;
  /** virtual code is expected correctly reflect the format information of the source code */
  format?: boolean;
}
//#endregion
export { CodeInformation as t };