import type { Node } from '../node/node';
import type { PropKey, PropValue, PropsMap } from './prop';
import { TRANSFORM_STAGE } from '../../types';
import { Prop, UNSET } from './prop';
/**
 * prop key convert to extra key
 */
export declare const getConvertedExtraKey: (key: string) => string;
/**
 * extra key convert to prop key
 */
export declare const getOriginalExtraKey: (key: string) => string;
export declare const isExtraKey: (key: string) => boolean;
export declare class Props {
    readonly id: string;
    readonly path: never[];
    readonly owner: Node;
    getNode(): Node<import("../..").NodeSchema>;
    get props(): this;
    getProps(): this;
    accessor type: string;
    accessor items: Prop[];
    private get maps();
    get size(): number;
    constructor(owner: Node, props?: PropsMap, extras?: PropsMap);
    import(props?: PropsMap | null, extras?: PropsMap): void;
    export(stage?: TRANSFORM_STAGE): {
        props?: undefined;
        extras?: undefined;
    } | {
        props: PropsMap;
        extras: PropsMap;
    };
    merge(value: PropsMap, extras?: PropsMap): void;
    private purged;
    purge(): void;
    /**
     * get a prop, if not found, create a prop when createIfNone is true
     */
    get(path: PropKey, createIfNone?: boolean): Prop | null;
    query(path: PropKey, createIfNone?: boolean): Prop | null;
    getProp(path: PropKey, createIfNone?: boolean): Prop | null;
    getPropValue(path: PropKey): unknown;
    setPropValue(path: PropKey, value: any): void;
    delete(prop: Prop): void;
    deleteKey(key: PropKey): void;
    add(key: PropKey, value?: PropValue | UNSET): Prop;
    has(key: PropKey): boolean;
    forEach(fn: (item: Prop, key: PropKey) => void): void;
    map<E>(fn: (item: Prop, key: PropKey) => E): E[] | null;
    filter(fn: (item: Prop, key: PropKey) => boolean): Prop[];
    [Symbol.iterator](): {
        next(): {
            value: Prop;
        };
    };
}
