import ContinuumEvidencePosture from '../../continuum/ContinuumEvidencePosture.ts';
import OpticAperturePosture, { type OpticAperturePostureValue } from './OpticAperturePosture.ts';
import OpticBasisPosture, { type OpticBasisPostureValue } from './OpticBasisPosture.ts';
import OpticCoordinatePosture, { type OpticCoordinatePostureValue } from './OpticCoordinatePosture.ts';
import { type OpticKindValue, type OpticReadTargetInstance, type OpticTargetContext } from './OpticReadTarget.ts';
import OpticSupportRule, { type OpticSupportRuleValue } from './OpticSupportRule.ts';
export type OpticPostureFields = {
    readonly coordinatePosture: OpticCoordinatePosture | OpticCoordinatePostureValue;
    readonly aperturePosture: OpticAperturePosture | OpticAperturePostureValue;
    readonly basisPosture: OpticBasisPosture | OpticBasisPostureValue;
    readonly evidencePosture: ContinuumEvidencePosture;
};
export type OpticFields = OpticPostureFields & {
    readonly target: OpticReadTargetInstance;
    readonly supportRule: OpticSupportRule | OpticSupportRuleValue;
};
export type OpticContextValue = {
    readonly opticKind: OpticKindValue;
    readonly target: OpticTargetContext;
    readonly coordinatePosture: string;
    readonly aperturePosture: string;
    readonly basisPosture: string;
    readonly supportRule: string;
    readonly evidencePosture: string;
};
export default class Optic {
    readonly target: OpticReadTargetInstance;
    readonly coordinatePosture: OpticCoordinatePosture;
    readonly aperturePosture: OpticAperturePosture;
    readonly basisPosture: OpticBasisPosture;
    readonly supportRule: OpticSupportRule;
    readonly evidencePosture: ContinuumEvidencePosture;
    constructor(fields: OpticFields);
    static node(fields: OpticPostureFields & {
        readonly nodeId: string;
    }): Optic;
    static nodeProperty(fields: OpticPostureFields & {
        readonly nodeId: string;
        readonly propertyKey: string;
    }): Optic;
    static neighborhood(fields: OpticPostureFields & {
        readonly nodeId: string;
    }): Optic;
    static traversal(fields: OpticPostureFields & {
        readonly startNodeId: string;
        readonly supportRule: OpticSupportRule | OpticSupportRuleValue;
    }): Optic;
    nodeProperty(propertyKey: string): Optic;
    neighborhood(): Optic;
    traversal(supportRule: OpticSupportRule | OpticSupportRuleValue): Optic;
    withSupportRule(supportRule: OpticSupportRule | OpticSupportRuleValue): Optic;
    withTarget(target: OpticReadTargetInstance, supportRule: OpticSupportRule | OpticSupportRuleValue): Optic;
    nodeId(): string;
    propertyKey(): string;
    toContextValue(): OpticContextValue;
}
