import { StateObject, StringAnyMap } from "@hpcc-js/util";
import { WsWorkunits } from "../services/wsWorkunits.ts";
import { Workunit } from "./workunit.ts";
export interface AttributeEx extends WsWorkunits.Property {
    FormattedEnd?: string;
}
export declare class Attribute extends StateObject<AttributeEx, AttributeEx> implements AttributeEx {
    readonly scope: BaseScope;
    get properties(): AttributeEx;
    get Name(): string;
    get RawValue(): string;
    get Formatted(): string;
    get FormattedEnd(): string | undefined;
    get Measure(): string;
    get Creator(): string;
    get CreatorType(): string;
    constructor(scope: BaseScope, attribute: WsWorkunits.Property);
}
export interface ScopeEx extends WsWorkunits.Scope {
}
export interface IScopeVisitor {
    start(scope: BaseScope): boolean;
    end(scope: BaseScope): boolean;
}
export declare class BaseScope extends StateObject<ScopeEx, ScopeEx> implements ScopeEx {
    protected _attributeMap: {
        [key: string]: Attribute;
    };
    protected _children: BaseScope[];
    get properties(): ScopeEx;
    get ScopeName(): string;
    get Id(): string;
    get ScopeType(): string;
    get Properties(): WsWorkunits.Properties;
    get Notes(): WsWorkunits.Notes;
    get SinkActivity(): string;
    get CAttributes(): Attribute[];
    constructor(scope: WsWorkunits.Scope);
    update(scope: WsWorkunits.Scope): void;
    parentScope(): string;
    children(): BaseScope[];
    children(_: BaseScope[]): BaseScope;
    walk(visitor: IScopeVisitor): boolean;
    formattedAttrs(): StringAnyMap;
    rawAttrs(): StringAnyMap;
    hasAttr(name: string): boolean;
    attr(name: string): Attribute;
    attrMeasure(name: string): string;
    calcTooltip(parentScope?: BaseScope): string;
}
export declare class Scope extends BaseScope {
    readonly wu: Workunit;
    constructor(wu: Workunit, scope: WsWorkunits.Scope);
}
