import Texture from "../textures/Texture";
import DisplayObject from "../display/DisplayObject";
import Rectangle from "openfl/geom/Rectangle";
declare namespace starling.filters {
	/**
	 *  An interface describing the methods available on the <code>helper</code> object passed
	 *  *  to the <code>process</code> call of fragment filters. It provides information about the
	 *  *  target object and methods to acquire and release pass textures.
	 *  *
	 *  *  @see FragmentFilter#process()
	 *  
	 */
	export interface IFilterHelper {
		/**
		 *  Gets a pass texture from the pool, or creates a new one (cleared and ready to be used
		 *      *  as render target). Its size is dictated by the bounds of the target display object
		 *      *  plus padding.
		 *      *
		 *      *  <p>Beware: each call of this method counts as one render pass. For performance reasons,
		 *      *  the filter may be configured to render the last pass directly to the back buffer. In
		 *      *  that case, this method will return <code>null</code> for the last pass! That's the
		 *      *  sign for the <code>process</code> method to draw to the back buffer. If you receive
		 *      *  <code>null</code> too soon, the filter class probably didn't correctly override
		 *      *  <code>numPasses</code>.</p>
		 *      
		 */
		getTexture(resolution?: number): Texture;
		/**
		 *  Puts a texture back into the pool to be reused later (or to be disposed
		 *      *  with the pool). 
		 */
		putTexture(texture: Texture): void;
		/**
		 *  The bounds of the target object (plus padding) in stage coordinates. 
		 */
		get targetBounds(): Rectangle;
		/**
		 *  The display object the filter is currently attached to. 
		 */
		get target(): DisplayObject;
	}
}
type IFilterHelper = starling.filters.IFilterHelper;
export default IFilterHelper;