import { Image as SKRSImage, SKRSContext2D } from '@napi-rs/canvas'; import { Blueprint, ConfigCmd, FixedAngle, Item, Shape } from 'dsabp-js'; type Image$1 = SKRSImage & HTMLImageElement; export type Hull = "HULL_CORNER" | "HULL_H" | "HULL_V"; export type RendererResolverParams = { main: BpRenderer; toRel?: InstanceType["toRel"]; item: Item; shape?: Shape; config?: Partial; other?: any; }; export interface Renderer { discriminator: string; render: () => Promise | RenderResult[]; } export interface RenderResult { layer?: "main" | "top"; image: Image$1; /** Adjust the texture position */ texturePosOff?: { x: number; y: number; }; /** Adjust the texture size */ textureSizeOff?: { x: number; y: number; }; /** Adjust the original item bounds */ baseBoundOff?: { x: number; y: number; }; sx?: number; sy?: number; sw?: number; sh?: number; } export declare const MAX_SIZE = 80; export declare class BpRenderer { canvasOut: Canvas; canvasPaint: Canvas; canvasMain: Canvas; canvasTop: Canvas; ctxOut: SKRSContext2D; ctxPaint: SKRSContext2D; ctxMain: SKRSContext2D; ctxTop: SKRSContext2D; /** Width in ship squares */ width: number; /** Height in ship squares */ height: number; renderCache: Record; imageCache: Record; knownObjectTypes: Set; knownObjects: Item[][]; squareSize: number; zIndexMap: Map; /** Function to get an item by coords if you don't wish to keep updating the {@link knownObjects}. */ customObjectByCoordsFn: (x: number, y: number) => Item; /** * @param outCanvas Defaults to createCanvas(0, 0) if omitted. Use null if no output is desired. */ constructor(outCanvas?: Canvas); /** * @param width Width in ship squares * @param height Height in ship squares * @param exteriorMargin Margin around the canvas (ship) in ship squares (3.75 by default) */ setSize(width: number, height: number, exteriorMargin?: number): void; /** Pixels to squareSize relative units */ toRel(x: number, y: number): { x: number; y: number; }; /** * @returns Rendering time in MS * @param exteriorMargin Margin around the canvas (ship) in ship squares (3.75 by default) */ render(bp: Blueprint, exteriorMargin?: number): Promise; draw(): void; getKnownObject(x: number, y: number): Item; clearCache(): void; useCacheOf(bpRenderer: BpRenderer): void; } export declare const connectedTileTypes: Set; export declare function clearCanvas(c: Canvas, ctx: SKRSContext2D, width: number, height: number): void; export declare function putInCanvas(c: Canvas, ctx: SKRSContext2D, img: Image$1 | Canvas): void; export declare function drawRotatedImage(ctx: SKRSContext2D, image: Canvas | Image$1, angle: number, x: number, y: number, originX: number, originY: number, dw?: number, dh?: number, sx?: number, sy?: number, sw?: number, sh?: number): void; export declare function drawRotatedImages(ctx: SKRSContext2D, image: Canvas | Image$1, opts: [ angle: number, x: number, y: number ][], originX: number, originY: number, dw?: number, dh?: number): void; export declare function toImage(canvas: Canvas): Promise; export declare function getImage(src: string, crossOrigin?: "anonymous", isAbs?: boolean): Promise; export declare function getRenderer({ main, item, shape, config, other }: RendererResolverParams): Renderer; export declare function getHullRenderer(main: BpRenderer, hull: Hull): Renderer; export declare const tintCanvas: Canvas; export declare const tintCtx: SKRSContext2D; export declare function getTinted(img: Image$1 | Promise, color: string, alpha?: number): Promise; export declare const rotateCanvas: Canvas; export declare const rotateCtx: SKRSContext2D; export declare function getRotated(img: Image$1 | Promise, angle: number, resize?: boolean): Promise; export declare function getShipBackgroundData(renderer: BpRenderer, bp?: Blueprint, width?: number, height?: number): Promise<{ tiles: { type: "paint" | "wallC" | "wallH" | "wallV"; image: Image$1; }[][]; checks: { noWall: boolean; noWallSides: Set<"top" | "right" | "bottom" | "left">; isMaxSize: boolean; }; }>; export declare function getPaintImage(): Promise; export declare function getDrawItemData(main: BpRenderer, item: Item, x: number, y: number, shape?: Shape, config?: Partial, hullDirection?: FixedAngle, other?: Record): Promise<{ layer: string; image: Image$1; angle?: number; sx?: number; sy?: number; sw?: number; sh?: number; pos: { x: number; y: number; }; drawPosOff: { x: number; y: number; }; off: { x: number; y: number; }; size: { w: number; h: number; }; baseSize?: { w: number; h: number; }; }[]>; export declare function findBuildInfoIndex(item: Item, hullDirection: FixedAngle): number; export declare let imagesPath: string; export declare function setImagesPath(path: string): void; export declare let customImagePathHandler: (path: string) => string; export declare function setCustomImagePathHandler(fn: typeof customImagePathHandler): void; export as namespace dsabpImg; export {};