///
import { EventEmitter } from 'events';
import ViewState from '../ViewState';
import Viewer from '../viewer/Viewer';
import { Vector2D } from '../../common/geometry';
export declare type ViewStateResizeTransformer = (viewState: ViewState, beforeSize: Vector2D, afterSize: Vector2D) => ViewState;
/**
* ImageSource is an abstract class which represents a
* 2D or 3D image from any source and draws it onto a given canvas.
*/
export default abstract class ImageSource extends EventEmitter {
/**
* Draws an image according to the current view state.
* @return A promise which resolves with ImageData (of canvas).
*/
abstract draw(viewer: Viewer, viewState: ViewState): Promise;
/**
* Returns a Promise instance which resolves when
* preparation task is finished and draw() can be called.
*/
ready(): Promise;
/**
* Creates the default view state object which will be used
* when the image is firstly loaded to a viewer.
*/
abstract initialState(viewer: Viewer): ViewState;
getResizeTransformer(): ViewStateResizeTransformer;
}