import { StateObject, StringAnyMap } from "@hpcc-js/util";
import { WsWorkunits } from "../services/wsWorkunits";
import { Workunit } from "./workunit";
export interface AttributeEx extends WsWorkunits.Property {
    FormattedEnd?: string;
}
export declare class Attribute extends StateObject<AttributeEx, AttributeEx> implements AttributeEx {
    readonly scope: BaseScope;
    readonly properties: AttributeEx;
    readonly Name: string;
    readonly RawValue: string;
    readonly Formatted: string;
    readonly FormattedEnd: string | undefined;
    readonly Measure: string;
    readonly Creator: string;
    readonly 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[];
    readonly properties: ScopeEx;
    readonly ScopeName: string;
    readonly Id: string;
    readonly ScopeType: string;
    readonly Properties: WsWorkunits.Properties;
    readonly Notes: WsWorkunits.Notes;
    readonly SinkActivity: string;
    readonly 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);
}
//# sourceMappingURL=scope.d.ts.map
