import Texture from "../textures/Texture";
import Painter from "../rendering/Painter";
import IFilterHelper from "./IFilterHelper";
import FragmentFilter from "./FragmentFilter";
declare namespace starling.filters {
	/**
	 *  The DropShadowFilter class lets you add a drop shadow to display objects.
	 *  *  To create the shadow, the class internally uses the BlurFilter.
	 *  
	 */
	export class DropShadowFilter extends FragmentFilter {
		/**
		 *  Creates a new DropShadowFilter instance with the specified parameters.
		 *      *
		 *      * @param distance   the offset distance of the shadow, in points.
		 *      * @param angle      the angle with which the shadow is offset, in radians.
		 *      * @param color      the color of the shadow.
		 *      * @param alpha      the alpha value of the shadow. Values between 0 and 1 modify the
		 *      *                   opacity; values > 1 will make it stronger, i.e. produce a harder edge.
		 *      * @param blur       the amount of blur with which the shadow is created. Note that high
		 *      *                   values will cause the number of render passes to grow.
		 *      * @param quality 	 the quality of the shadow blur, '1' being the best (range 0.1 - 1.0)
		 * 	 * @param inner      if enabled, the shadow will be drawn inside the object.
		 * 	 * @param knockout   if enabled, only the shadow will be drawn.
		 *      
		 */
		constructor(distance?: number, angle?: number, color?: number, alpha?: number, blur?: number, quality?: number, inner?: boolean, knockout?: boolean);
		/**
		 *  @inheritDoc 
		 */
		override dispose(): void;
		/**
		 *  @private 
		 */
		override process(painter: Painter, helper: IFilterHelper, input0?: Texture, input1?: Texture, input2?: Texture, input3?: Texture): Texture;
		/**
		 *  The color of the shadow. @default 0x0 
		 */
		get color(): number;
		set color(value: number)
		/**
		 *  The alpha value of the shadow. Values between 0 and 1 modify the opacity;
		 *      *  values > 1 will make it stronger, i.e. produce a harder edge. @default 0.5 
		 */
		get alpha(): number;
		set alpha(value: number)
		/**
		 *  The offset distance for the shadow, in points. @default 4.0 
		 */
		get distance(): number;
		set distance(value: number)
		/**
		 *  The angle with which the shadow is offset, in radians. @default Math.PI / 4 
		 */
		get angle(): number;
		set angle(value: number)
		/**
		 *  The amount of blur with which the shadow is created.
		 *      *  The number of required passes will be <code>Math.ceil(value) × 2</code>.
		 *      *  @default 1.0 
		 */
		get blur(): number;
		set blur(value: number)
		/**
		 *  The quality used for blurring the shadow (range: 0.1 - 1).
		 *      *  Forwarded to the internally used <em>BlurFilter</em>. 
		 */
		get quality(): number;
		set quality(value: number)
		/**
		 *  Indicates whether or not the shadow is an inner shadow. The default is
		 * 	 *  <code>false</code>, an outer shadow (a shadow around the outer edges of the object). 
		 */
		get inner(): boolean;
		set inner(value: boolean)
		get_inner(): boolean;
		set_inner(value: boolean): boolean;
		/**
		 *  If enabled, applies a knockout effect, which effectively makes the object's fill
		 * 	 *  transparent. @default false 
		 */
		get knockout(): boolean;
		set knockout(value: boolean)
		get_knockout(): boolean;
		set_knockout(value: boolean): boolean;
	}
}
export default starling.filters.DropShadowFilter;