import { PropEntrySpec, PropSpec } from '../types/model.js';
import { ModuleParamSpec } from '../types/module.js';
import { SchemaSpec } from '../types/schema.js';
import { NodeView } from './NodeView.js';
export type PropLine = {
    value: string;
    linkId?: string;
    linkKey?: string;
    expand: boolean;
};
export declare abstract class PropLineView {
    readonly node: NodeView;
    readonly propKey: string;
    protected propLine: PropLine;
    private _paramSpec;
    constructor(node: NodeView, propKey: string, propLine: PropLine);
    toJSON(): PropLine;
    abstract getSchema(): SchemaSpec;
    abstract get lineUid(): string;
    get graph(): import("./GraphView.js").GraphView;
    get value(): string;
    get linkId(): string | undefined;
    get linkKey(): string | undefined;
    getParamSpec(): ModuleParamSpec;
    getStaticValue(): string;
    isUsingDefaultValue(): boolean;
    /**
     * Returns the node identified by its linkId.
     */
    getLinkNode(): NodeView | null;
    isLinked(): boolean;
    canExpand(): boolean;
    isExpanded(): boolean;
    isDeferred(): boolean | undefined;
}
export declare class PropView extends PropLineView {
    protected propSpec: PropSpec;
    constructor(node: NodeView, propKey: string, propSpec: PropSpec);
    get lineUid(): string;
    getSchema(): SchemaSpec;
    getEntries(): PropEntryView[];
    /**
     * Managed entries appear for each property defined in parent prop's schema.
     *
     * They are special in a couple ways:
     *
     * - users can't delete them or change their key
     * - the order of managed entries is predefined
     * - they have stable ids so that they are consistently persisted
     */
    getManagedEntries(): PropEntryView[];
    getCustomEntries(): PropEntryView[];
    isSupportsEntries(): boolean;
    isUsesEntries(): boolean;
    hasEntries(): boolean;
    isAdvanced(): boolean;
    isListed(): boolean;
}
export declare class PropEntryView extends PropLineView {
    readonly parentProp: PropView;
    protected propEntrySpec: PropEntrySpec;
    constructor(parentProp: PropView, propEntrySpec: PropEntrySpec);
    get id(): string;
    get key(): string;
    get lineUid(): string;
    isManaged(): boolean | undefined;
    getSchema(): SchemaSpec;
}
