import * as FSM from '@dra2020/fsm';
import * as Poly from './poly';
import * as Q from './quad';
declare class FsmDifference extends FSM.Fsm {
    accum: any;
    polys: any[];
    constructor(env: FSM.FsmEnvironment, accum?: any, polys?: any[]);
    initialize(accum: any, polys: any[]): void;
    cancel(): void;
    readonly result: any;
    tick(): void;
}
declare class FsmIncrementalUnion extends FSM.Fsm {
    options: Poly.TickOptions;
    key: any;
    map: any;
    result: any;
    lastCompleteMap: any;
    lastCompleteResult: any;
    toSub: any[];
    fsmUnion: Q.FsmQuadTree;
    fsmDifference: FsmDifference;
    constructor(env: FSM.FsmEnvironment, options: Poly.TickOptions, key: any, map?: any);
    matches(key: any): boolean;
    recompute(map: any): void;
    cancel(): void;
    tick(): void;
}
export interface UnionResult {
    key: any;
    poly: any;
}
export declare class FsmUnion extends FSM.Fsm {
    options: Poly.TickOptions;
    unions: FsmIncrementalUnion[];
    constructor(env: FSM.FsmEnvironment, options?: Poly.TickOptions);
    readonly result: UnionResult[];
    cancel(): void;
    recompute(key: any, map: any): void;
    tick(): void;
}
export {};
