import * as ts from 'typescript';
import { IHumanError } from '../errors';
export interface IAnnotationConfig {
    surroundingLines: number;
    relativePath: string;
}
export declare enum ErrorCode {
    InvalidArgumentCount = 0,
    InvalidArgumentType = 1,
    InvalidPropertyAssignment = 2,
    InvalidEnumAccess = 3,
    InvalidComplexExpression = 4,
    RedeclaredControl = 5,
    RequiredSceneID = 6,
    MissingResourceDecorator = 7,
    InvalidDecoratorTarget = 8,
    CouldNotInferKind = 9,
    DangerousEval = 10,
}
/**
 * DeclarationError is an Error type thrown when some invalid code is
 * encountered. It creates a pretty annotated error.
 */
export declare class DeclarationError extends Error implements IHumanError {
    readonly code: ErrorCode;
    readonly node: ts.Node;
    readonly originalMessage: string;
    private static readonly annotationConfig;
    readonly dontColor: boolean;
    constructor(code: ErrorCode, node: ts.Node, originalMessage: string, config?: IAnnotationConfig);
    /**
     * Converts the error to a JSON representation.
     */
    toJSON(): {
        code: ErrorCode;
        codeName: string;
        file: string;
        charStart: number;
        chatEnd: number;
        message: string;
    };
    /**
     * @override
     */
    getHumanMessage(): string;
    /**
     * Creates a new DeclarationError using a relative path for the source file.
     */
    makeRelative(relativePath: string): DeclarationError;
}
