import { IKeyObjectValue } from "../../../type";
import { BuiltInVariables } from "../buildInVariables";
import { VExtend, VLineStyle, VXloc } from "../enum";
import { IDrawComponent } from "../type";
import { IPoint as Point, TccErrorListener } from "./index";
export interface ILineArgs {
    id?: string;
    x?: number;
    y?: number;
    x1?: number;
    y1?: number;
    x2?: number;
    y2?: number;
    point?: Point;
    first_point?: Point;
    second_point?: Point;
    xloc?: VXloc;
    extend?: VExtend;
    color?: string;
    style?: VLineStyle;
    width?: number;
    linefills?: string[];
    bar_index?: number;
    isVar?: boolean;
}
type LineArgs = Omit<ILineArgs, 'id'> & {
    id: ILine;
};
export default class BuildInLine {
    private _variables;
    private _errorListener;
    private _updateIds;
    private _defaultLine;
    constructor(variables: BuiltInVariables, errorListener: TccErrorListener);
    get updateIds(): string[];
    new(args: ILineArgs, posStr: string, paramNames: string[]): ILine;
    private _parameterHandle;
    private _preVerfiyArgs;
    private _paramVerfiyHandle;
    private _verfiyArgs;
    private _paramVerfiy;
    updateId(id: ILine): string;
    static __setFillKeys(id: ILine, key: string): void;
    static __updateFillKeys(id: ILine, oldKey: string, key: string): void;
    line(args: {
        x?: ILine;
    }): ILine | undefined;
    copy({ id }: LineArgs, posStr: string): ILine | undefined;
    delete({ id }: LineArgs, posStr: string): void;
    get_x1({ id }: LineArgs, posStr: string): any;
    get_x2({ id }: LineArgs, posStr: string): any;
    get_y1({ id }: LineArgs, posStr: string): any;
    get_y2({ id }: LineArgs, posStr: string): any;
    set_x1({ id, x }: LineArgs, posStr: string): void;
    set_x2({ id, x }: LineArgs, posStr: string): void;
    set_y1({ id, y }: LineArgs, posStr: string): void;
    set_y2({ id, y }: LineArgs, posStr: string): void;
    set_xy1({ id, x, y }: LineArgs, posStr: string): void;
    set_xy2({ id, x, y }: LineArgs, posStr: string): void;
    set_xloc({ id, xloc, x1, x2 }: LineArgs, posStr: string): void;
    get_price({ id, x }: LineArgs, posStr: string): any;
    set_color({ id, ...args }: LineArgs, posStr: string): void;
    set_style({ id, style }: LineArgs, posStr: string): void;
    set_width({ id, width }: LineArgs, posStr: string): void;
    set_extend({ id, extend }: LineArgs, posStr: string): void;
    set_first_point({ id, point }: LineArgs, posStr: string): void;
    set_second_point({ id, point }: LineArgs, posStr: string): void;
    private _getLine;
}
export interface ILine extends IDrawComponent {
    fillKeys: string[];
}
export declare function createLine(key: string, data: IKeyObjectValue): ILine;
export {};
