import Tile from './tile';
import type { FeatureState } from '../style-spec/expression';
export declare type FeatureStates = {
    [featureId: string]: FeatureState;
};
export declare type LayerFeatureStates = {
    [layer: string]: FeatureStates;
};
/**
 * SourceFeatureState manages the state and pending changes
 * to features in a source, separated by source layer.
 * stateChanges and deletedStates batch all changes to the tile (updates and removes, respectively)
 * between coalesce() events. addFeatureState() and removeFeatureState() also update their counterpart's
 * list of changes, such that coalesce() can apply the proper state changes while agnostic to the order of operations.
 * In deletedStates, all null's denote complete removal of state at that scope
 * @private
*/
declare class SourceFeatureState {
    state: LayerFeatureStates;
    stateChanges: LayerFeatureStates;
    deletedStates: {};
    constructor();
    updateState(sourceLayer: string, featureId: number | string, newState: any): void;
    removeFeatureState(sourceLayer: string, featureId?: number | string, key?: string): void;
    getState(sourceLayer: string, featureId: number | string): any;
    initializeTileState(tile: Tile, painter: any): void;
    coalesceChanges(tiles: {
        [_ in any]: Tile;
    }, painter: any): void;
}
export default SourceFeatureState;
//# sourceMappingURL=source_state.d.ts.map