import type { IStateEngineOptions, StateTransitionResult } from './state-definition';
export declare class StateEngine<T extends Record<string, any> = Record<string, any>> {
    private readonly compiledDefinitions;
    private readonly stateSort?;
    private readonly mergeMode;
    private _activeStates;
    private _effectiveStates;
    private _suppressed;
    private _resolvedPatch;
    private resolverPatchCache;
    private resolverCacheKey;
    private resolverCacheValid;
    private graphic;
    private baseAttributes;
    constructor(options: IStateEngineOptions<T>);
    get activeStates(): ReadonlyArray<string>;
    get effectiveStates(): ReadonlyArray<string>;
    get resolvedPatch(): Partial<T>;
    get suppressed(): ReadonlyArray<string>;
    setResolveContext(graphic: any, baseAttributes: Partial<T>): void;
    applyStates(stateNames: string[]): StateTransitionResult;
    addState(stateName: string, keepCurrentStates?: boolean): StateTransitionResult;
    removeState(stateNames: string | string[]): StateTransitionResult;
    toggleState(stateName: string): StateTransitionResult;
    clearStates(): StateTransitionResult;
    invalidateResolverCache(): void;
    hasState(stateName?: string): boolean;
    private sortStates;
    private adjudicate;
    private recomputePatch;
    private mergeInto;
    private sameArray;
}
