/**
 * This file was automatically generated by xBuild.
 * DO NOT EDIT MANUALLY.
 */

/**
 * A callback function for formatting code lines
 *
 * @param lineString - The content of the line to be formatted
 * @param padding - The amount of padding to be applied to the line
 * @param line - The line number of the line to be formatted
 * @returns Formatted line string
 *
 * @since 1.0.0
 */
type FormatCodeCallbackType = (lineString: string, padding: number, line: number) => string;
/**
 * Configuration options for formatting code
 *
 * @since 1.0.0
 */
interface FormatCodeInterface {
    /**
     * The amount of padding to be applied to each line
     * @since 1.0.0
     */
    padding?: number;
    /**
     * The starting line number for formatting
     * @since 1.0.0
     */
    startLine?: number;
    /**
     * An optional action object specifying a line where a callback function should be triggered.
     * @since 1.0.0
     */
    action?: {
        /**
         * The line number at which the callback function should be triggered.
         * @since 1.0.0
         */
        triggerLine: number;
        /**
         * The callback function to be executed when the trigger line is encountered.
         * @since 1.0.0
         */
        callback: FormatCodeCallbackType;
    };
}
/**
 * Configuration for ANSI color styling of error pointers
 * @since 1.0.0
 */
interface AnsiOptionInterface {
    /**
     * ANSI color code to apply to the error pointer
     * @since 1.0.0
     */
    color: ColorFunctionType;
}
/**
 * A compact error position type used when only location and code metadata are needed.
 *
 * @remarks
 * This type includes the source code content and the minimal location fields required
 * to render or highlight an error snippet.
 *
 * @see PositionWithCodeInterface
 * @since 1.0.0
 */
type ErrorCodeType = Pick<PositionWithCodeInterface, 'code' | 'line' | 'column' | 'startLine'>;
/**
 * Represents a function that applies coloring or formatting to strings.
 *
 * @param args - Strings to be formatted
 * @returns The formatted string
 *
 * @since 1.0.0
 */
type ColorFunctionType = (...args: Array<string>) => string;
/**
 * Defines a color scheme for syntax highlighting various code elements.
 *
 * @remarks
 * Each property is a {@link ColorFunctionType} that formats a specific type of syntax element,
 * such as enums, classes, keywords, or literals.
 *
 * @see ColorFunctionType
 * @since 1.0.0
 */
interface HighlightSchemeInterface {
    /**
     * Color function for enum names.
     * @since 1.0.0
     */
    enumColor: ColorFunctionType;
    /**
     * Color function for type names.
     * @since 1.0.0
     */
    typeColor: ColorFunctionType;
    /**
     * Color function for class names.
     * @since 1.0.0
     */
    classColor: ColorFunctionType;
    /**
     * Color function for string literals.
     * @since 1.0.0
     */
    stringColor: ColorFunctionType;
    /**
     * Color function for language keywords.
     * @since 1.0.0
     */
    keywordColor: ColorFunctionType;
    /**
     * Color function for comments.
     * @since 1.0.0
     */
    commentColor: ColorFunctionType;
    /**
     * Color function for function names.
     * @since 1.0.0
     */
    functionColor: ColorFunctionType;
    /**
     * Color function for variable names.
     * @since 1.0.0
     */
    variableColor: ColorFunctionType;
    /**
     * Color function for interface names.
     * @since 1.0.0
     */
    interfaceColor: ColorFunctionType;
    /**
     * Color function for function/method parameters.
     * @since 1.0.0
     */
    parameterColor: ColorFunctionType;
    /**
     * Color function for getter accessor names.
     * @since 1.0.0
     */
    getAccessorColor: ColorFunctionType;
    /**
     * Color function for numeric literals.
     * @since 1.0.0
     */
    numericLiteralColor: ColorFunctionType;
    /**
     * Color function for method signatures.
     * @since 1.0.0
     */
    methodSignatureColor: ColorFunctionType;
    /**
     * Color function for regular expressions.
     * @since 1.0.0
     */
    regularExpressionColor: ColorFunctionType;
    /**
     * Color function for property assignments.
     * @since 1.0.0
     */
    propertyAssignmentColor: ColorFunctionType;
    /**
     * Color function for property access expressions.
     * @since 1.0.0
     */
    propertyAccessExpressionColor: ColorFunctionType;
    /**
     * Color function for expressions with type arguments.
     * @since 1.0.0
     */
    expressionWithTypeArgumentsColor: ColorFunctionType;
}
/**
 * Represents a segment of source code to be highlighted with specific styling.
 *
 * @remarks
 * Segments are the fundamental units of the highlighting system.
 * Each segment represents a portion of text that should receive specific styling.
 * When the source code is processed for display,
 * these segments are used to insert the appropriate color/style codes at the correct positions.
 *
 * The highlighter maintains a collection of these segments and applies them
 * in position order to create the complete highlighted output.
 *
 * @example
 * ```ts
 * const keywordSegment: HighlightNodeSegmentInterface = {
 *   start: 0,
 *   end: 6,
 *   color: xterm.red
 * };
 * ```
 *
 * @see addSegment
 * @see HighlightSchemeInterface
 *
 * @since 1.0.0
 */
interface HighlightNodeSegmentInterface {
    /**
     * The starting character position of the segment in the source text.
     * @since 1.0.0
     */
    start: number;
    /**
     * The ending character position of the segment in the source text.
     * @since 1.0.0
     */
    end: number;
    /**
     * The color or style code to apply to this segment.
     * @since 1.0.0
     */
    color: ColorFunctionType;
}
/**
 * Represents a source map structure used for mapping code within a file to its original source
 * @since 1.0.0
 */
interface SourceMapInterface {
    /**
     * The generated file's name that the source map is associated with
     * @since 1.0.0
     */
    file?: string | null;
    /**
     * An array of variable/function names present in the original source
     * @since 1.0.0
     */
    names?: Array<string>;
    /**
     * The version of the source map specification (standard is 3)
     * @since 1.0.0
     */
    version: number;
    /**
     * An array of URLs or paths to the original source files
     * @since 1.0.0
     */
    sources: Array<string>;
    /**
     * VLQ encoded string that maps generated code back to original source code
     * @since 1.0.0
     */
    mappings: string;
    /**
     * Root URL for resolving the sources
     * @since 1.0.0
     */
    sourceRoot?: string | null;
    /**
     * Array containing the content of the original source files
     * @since 1.0.0
     */
    sourcesContent?: Array<string>;
}
/**
 * Represents a position in source code with mapping information
 * @since 1.0.0
 */
interface PositionInterface {
    /**
     * Name of the identifier at this position
     * @since 1.0.0
     */
    name: string | null;
    /**
     * Line number in the original source
     * @since 1.0.0
     */
    line: number;
    /**
     * Column number in the original source
     * @since 1.0.0
     */
    column: number;
    /**
     * Path or URL to the original source file
     * @since 1.0.0
     */
    source: string;
    /**
     * Root URL for resolving the source
     * @since 1.0.0
     */
    sourceRoot: string | null;
    /**
     * Index of the source in the sources array
     * @since 1.0.0
     */
    sourceIndex: number;
    /**
     * Line number in the generated code
     * @since 1.0.0
     */
    generatedLine: number;
    /**
     * Column number in the generated code
     * @since 1.0.0
     */
    generatedColumn: number;
}
/**
 * Position in source code including the original source content
 *
 * @see PositionInterface
 * @since 1.0.0
 */
interface PositionWithContentInterface extends PositionInterface {
    /**
     * Content of the original source file
     * @since 1.0.0
     */
    sourcesContent: string;
}
/**
 * Position in source code including code fragment information
 *
 * @see PositionInterface
 * @since 1.0.0
 */
interface PositionWithCodeInterface extends PositionInterface {
    /**
     * Code fragment from the original source
     * @since 1.0.0
     */
    code: string;
    /**
     * Ending line number of the code fragment
     * @since 1.0.0
     */
    endLine: number;
    /**
     * Starting line number of the code fragment
     * @since 1.0.0
     */
    startLine: number;
}
/**
 * Options for retrieving source code context
 * @since 1.0.0
 */
interface SourceOptionsInterface {
    /**
     * Number of lines to include after the target line
     * @since 1.0.0
     */
    linesAfter?: number;
    /**
     * Number of lines to include before the target line
     * @since 1.0.0
     */
    linesBefore?: number;
}
/**
 * Formats a code snippet with optional line padding and custom actions
 *
 * @param code - The source code | stack to be formatted
 * @param options - Configuration options for formatting the code
 * @returns A formatted string of the code snippet with applied padding and custom actions
 *
 * @remarks
 * This function takes a code string and an options object to format the code snippet.
 * It applies padding to line numbers and can trigger custom actions for specific lines.
 * Options include padding (default 10), startLine (default 0), and custom actions for specific lines.
 *
 * @example
 * ```ts
 * const formattedCode = formatCode(code, {
 *     padding: 8,
 *     startLine: 5,
 *     action: {
 *         triggerLine: 7,
 *         callback: (lineString, padding, lineNumber) => {
 *             return `Custom formatting for line ${lineNumber}: ${lineString}`;
 *         }
 *     }
 * });
 * ```
 *
 * @since 1.0.0
 */
declare function formatCode(code: string, options?: FormatCodeInterface): string;
/**
 * Formats a code snippet around an error location with special highlighting
 *
 * @param sourcePosition - An object containing information about the source code and error location
 * @param ansiOption - Optional configuration for ANSI color codes
 * @returns A formatted string representing the relevant code snippet with error highlighting
 *
 * @throws Error - If the provided sourcePosition object has invalid line or column numbers
 *
 * @remarks
 * This function takes a sourcePosition object with code content and error location information,
 * then uses formatCode to format and highlight the relevant code snippet around the error.
 * The sourcePosition object should contain code (string), line (number), column (number),
 * and optional startLine (number, defaults to 1).
 *
 * @example
 * ```ts
 * const formattedErrorCode = formatErrorCode({
 *     code: "const x = 1;\nconst y = x.undefined;\n",
 *     line: 2,
 *     column: 15,
 *     startLine: 1
 * });
 * ```
 *
 * @see formatCode - The underlying function used for basic code formatting
 *
 * @since 1.0.0
 */
declare function formatErrorCode(sourcePosition: PositionWithCodeInterface | ErrorCodeType, ansiOption?: AnsiOptionInterface): string;

export {
	AnsiOptionInterface,
	ErrorCodeType,
	FormatCodeCallbackType,
	FormatCodeInterface,
	formatCode,
	formatErrorCode
};