import { Color, Vector2 } from "./index";
/**
 *  LittleJS Drawing System
 *  <br> - Hybrid with both Canvas2D and WebGL available
 *  <br> - Super fast tile sheet rendering with WebGL
 *  <br> - Can apply rotation, mirror, color and additive color
 *  <br> - Many useful utility functions
 *  @namespace Draw
 */
/** Main tilesheet to use for batch rendering system
 *  @type {Image}
 *  @memberof Draw */
export declare const tileImage: HTMLImageElement;
/** The primary 2D canvas visible to the user
 *  @type {HTMLCanvasElement}
 *  @memberof Draw */
export declare let mainCanvas: HTMLCanvasElement;
export declare function setMainCanvas(canvas: HTMLCanvasElement): HTMLCanvasElement;
/** 2d context for mainCanvas
 *  @type {CanvasRenderingContext2D}
 *  @memberof Draw */
export declare let mainContext: CanvasRenderingContext2D;
export declare function setMainContext(context: CanvasRenderingContext2D | null): CanvasRenderingContext2D;
/** A canvas that appears on top of everything the same size as mainCanvas
 *  @type {HTMLCanvasElement}
 *  @memberof Draw */
export declare let overlayCanvas: HTMLCanvasElement;
export declare function setOverlayCanvas(canvas: HTMLCanvasElement): HTMLCanvasElement;
/** 2d context for overlayCanvas
 *  @type {CanvasRenderingContext2D}
 *  @memberof Draw */
export declare let overlayContext: CanvasRenderingContext2D;
export declare function setOverlayContext(context: CanvasRenderingContext2D | null): CanvasRenderingContext2D;
/** The size of the main canvas (and other secondary canvases: overlayCanvas and glCanvas)
 *  @type {Vector2}
 *  @memberof Draw */
export declare let mainCanvasSize: Vector2;
export declare function setMainCanvasSize(size: Vector2): Vector2;
/** Convert from screen to world space coordinates
 *  @param {Vector2} screenPos
 *  @return {Vector2}
 *  @memberof Draw */
export declare const screenToWorld: (screenPos: any) => any;
/** Convert from world to screen space coordinates
 *  @param {Vector2} worldPos
 *  @return {Vector2}
 *  @memberof Draw */
export declare const worldToScreen: (worldPos: any) => any;
/** Draw textured tile centered on pos
 *  @param {Vector2} pos - Center of the tile
 *  @param {Vector2} [size=new Vector2(1,1)] - Size of the tile
 *  @param {Number}  [tileIndex=-1] - Tile index to use, negative is untextured
 *  @param {Vector2} [tileSize=defaultTileSize] - Tile size in source pixels
 *  @param {Color}   [color=new Color(1,1,1)]
 *  @param {Number}  [angle=0]
 *  @param {Boolean} [mirror=0]
 *  @param {Color}   [additiveColor=new Color(0,0,0,0)]
 *  @memberof Draw */
export declare function drawTile(pos: any, size: Vector2 | undefined, tileIndex: number | undefined, tileSize: Vector2 | undefined, color: Color | undefined, angle: number | undefined, mirror: any, additiveColor?: Color): void;
/** Draw colored untextured rect centered on pos
 *  @param {Vector2} pos
 *  @param {Vector2} [size=new Vector2(1,1)]
 *  @param {Color}   [color=new Color(1,1,1)]
 *  @param {Number}  [angle=0]
 *  @memberof Draw */
export declare function drawRect(pos: any, size: any, color: any, angle: any): void;
/** Draw textured tile centered on pos in screen space
 *  @param {Vector2} pos - Center of the tile
 *  @param {Vector2} [size=new Vector2(1,1)] - Size of the tile
 *  @param {Number}  [tileIndex=-1] - Tile index to use, negative is untextured
 *  @param {Vector2} [tileSize=defaultTileSize] - Tile size in source pixels
 *  @param {Color}   [color=new Color]
 *  @param {Number}  [angle=0]
 *  @param {Boolean} [mirror=0]
 *  @param {Color}   [additiveColor=new Color(0,0,0,0)]
 *  @memberof Draw */
export declare function drawTileScreenSpace(pos: any, size: Vector2 | undefined, tileIndex: any, tileSize: any, color: any, angle: any, mirror: any, additiveColor: any): void;
/** Draw colored untextured rectangle in screen space
 *  @param {Vector2} pos
 *  @param {Vector2} [size=new Vector2(1,1)]
 *  @param {Color}   [color=new Color(1,1,1)]
 *  @param {Number}  [angle=0]
 *  @memberof Draw */
export declare function drawRectScreenSpace(pos: any, size: any, color: any, angle: any): void;
/** Draw colored line between two points
 *  @param {Vector2} posA
 *  @param {Vector2} posB
 *  @param {Number}  [thickness=.1]
 *  @param {Color}   [color=new Color(1,1,1)]
 *  @memberof Draw */
export declare function drawLine(posA: any, posB: any, thickness: number | undefined, color: any): void;
/** Draw directly to a 2d canvas context in world space (bipass webgl)
 *  @param {Vector2}  pos
 *  @param {Vector2}  size
 *  @param {Number}   angle
 *  @param {Boolean}  mirror
 *  @param {Function} drawFunction
 *  @param {CanvasRenderingContext2D} [context=mainContext]
 *  @memberof Draw */
export declare function drawCanvas2D(pos: any, size: any, angle: any, mirror: any, drawFunction: any, context?: CanvasRenderingContext2D): void;
/** Draw text on overlay canvas in world space
 *  @param {String}  text
 *  @param {Vector2} pos
 *  @param {Number}  [size=1]
 *  @param {Color}   [color=new Color(1,1,1)]
 *  @param {Number}  [lineWidth=0]
 *  @param {Color}   [lineColor=new Color(0,0,0)]
 *  @param {String}  [textAlign='center']
 *  @memberof Draw */
export declare function drawText(text: any, pos: any, size?: number, color?: Color, lineWidth?: number, lineColor?: Color, textAlign?: string, font?: string): void;
/** Enable additive or regular blend mode
 *  @param {Boolean} [additive=0]
 *  @memberof Draw */
export declare function setBlendMode(additive: any): void;
/** Returns true if fullscreen mode is active
 *  @return {Boolean}
 *  @memberof Draw */
export declare const isFullscreen: () => Element | null;
/** Toggle fullsceen mode
 *  @memberof Draw */
export declare function toggleFullscreen(): void;
