import type { IContext2d, MaybePromise, IGraphic, IGroup, IDrawContext, IRenderService, IGraphicRender, IGraphicRenderDrawParams, IContributionProvider, IDrawItemInterceptorContribution, IDrawContribution, IGlobal } from '../../../interface';
import type { IBounds, IMatrix } from '@visactor/vutils';
import type { ILayerService } from '../../../interface/core';
export declare class DefaultDrawContribution implements IDrawContribution {
    protected readonly contributions: IGraphicRender[];
    protected readonly drawItemInterceptorContributions: IContributionProvider<IDrawItemInterceptorContribution>;
    currentRenderMap: Map<number, IGraphicRender>;
    defaultRenderMap: Map<number, IGraphicRender>;
    styleRenderMap: Map<string, Map<number, IGraphicRender>>;
    dirtyBounds: IBounds;
    backupDirtyBounds: IBounds;
    useDirtyBounds: boolean;
    currentRenderService: IRenderService;
    InterceptorContributions: IDrawItemInterceptorContribution[];
    global: IGlobal;
    layerService: ILayerService;
    scrollMatrix?: IMatrix;
    constructor(contributions: IGraphicRender[], drawItemInterceptorContributions: IContributionProvider<IDrawItemInterceptorContribution>);
    init(): void;
    prepareForDraw(renderService: IRenderService, drawContext: IDrawContext): void;
    draw(renderService: IRenderService, drawContext: IDrawContext): MaybePromise<void>;
    doRegister(): void;
    protected _findNextGraphic(group: IGroup): IGraphic | null;
    renderGroup(group: IGroup, drawContext: IDrawContext, parentMatrix: IMatrix, skipSort?: boolean): void;
    _renderInGroup: (skipSort: boolean, group: IGroup, drawContext: IDrawContext, nextM: IMatrix) => void;
    protected _increaseRender(group: IGroup, drawContext: IDrawContext): void;
    getRenderContribution(graphic: IGraphic): IGraphicRender | null;
    renderItem(graphic: IGraphic, drawContext: IDrawContext, params?: IGraphicRenderDrawParams): void;
    protected selectRenderByType(type?: string): IGraphicRender | null;
    protected selectRenderByNumberType(type: number, graphic: IGraphic): IGraphicRender | null;
    protected clearScreen(renderService: IRenderService, context: IContext2d, drawContext: IDrawContext): void;
    afterDraw(renderService: IRenderService, drawParams: IDrawContext): void;
}
