export type OpticKindValue = 'node' | 'node-property' | 'neighborhood' | 'traversal';
export type NodeOpticTargetContext = {
    readonly nodeId: string;
};
export type NodePropertyOpticTargetContext = {
    readonly nodeId: string;
    readonly propertyKey: string;
};
export type OpticTargetContext = NodeOpticTargetContext | NodePropertyOpticTargetContext;
export default class OpticReadTarget {
    readonly opticKind: OpticKindValue;
    private readonly nodeId;
    private readonly propertyKey;
    private constructor();
    static node(nodeId: string): OpticReadTarget;
    static nodeProperty(nodeId: string, propertyKey: string): OpticReadTarget;
    static neighborhood(nodeId: string): OpticReadTarget;
    static traversal(nodeId: string): OpticReadTarget;
    toContextValue(): OpticTargetContext;
}
export type OpticReadTargetInstance = OpticReadTarget;
