import { SatisfiabilityError } from './errors.js';
import { AbstractMove, EntityMove, FieldMove, Move } from './moves.js';
import { Node } from './node.js';
type EdgeResolvabilityResult = {
    success: true;
    error: undefined;
} | {
    success: false;
    error: SatisfiabilityError;
};
export declare function isEntityEdge(edge: Edge): edge is Edge<EntityMove>;
export declare function assertEntityEdge(edge: Edge): asserts edge is Edge<EntityMove>;
export declare function isAbstractEdge(edge: Edge): edge is Edge<AbstractMove>;
export declare function assertAbstractEdge(edge: Edge): asserts edge is Edge<AbstractMove>;
export declare function isFieldEdge(edge: Edge): edge is Edge<FieldMove>;
export declare function assertFieldEdge(edge: Edge): asserts edge is Edge<FieldMove>;
export declare class Edge<T = Move> {
    head: Node;
    move: T;
    tail: Node;
    private resolvable;
    private _toString;
    constructor(head: Node, move: T, tail: Node);
    isCrossGraphEdge(): boolean;
    toString(): string;
    getResolvability(graphNames: string[]): EdgeResolvabilityResult | undefined;
    setResolvable(success: true, graphNames: string[]): EdgeResolvabilityResult;
    setResolvable(success: false, graphNames: string[], error: SatisfiabilityError): EdgeResolvabilityResult;
}
export {};
//# sourceMappingURL=edge.d.ts.map