import { Graphics, Application } from 'pixi.js';
import { BaseClip } from './base-clip';
import { ShapeType } from '@openvideo/core';
import { IClipMeta } from './iclip';
export interface ShapeClipOptions {
    shapeType: ShapeType;
    width?: number;
    height?: number;
    fill?: string;
    fillOpacity?: number;
    stroke?: {
        color: string;
        width: number;
    };
    borderRadius?: number;
    renderer?: Application["renderer"];
}
/**
 * ShapeClip renders rectangle shapes using Pixi.js Graphics
 */
export declare class ShapeClip extends BaseClip {
    readonly type = "Shape";
    shapeType: ShapeType;
    graphics: Graphics;
    private _meta;
    private renderTexture;
    private externalRenderer;
    constructor(options: ShapeClipOptions);
    private getRenderer;
    /**
     * Set an external renderer (e.g., from Studio)
     */
    setRenderer(renderer: Application["renderer"]): void;
    /**
     * Get or create the render texture for this shape
     */
    private getRenderTexture;
    get meta(): IClipMeta;
    private drawShape;
    private drawRectangle;
    private hexToNumber;
    tick(_time: number): Promise<{
        video: ImageBitmap;
        state: "success";
    }>;
    clone(): Promise<this>;
    split(_time: number): Promise<[this, this]>;
    toJSON(main?: boolean): any;
    set style(style: any);
    get style(): any;
    set width(width: number);
    get width(): number;
    set height(height: number);
    get height(): number;
    /**
     * Create ShapeClip from JSON object
     */
    static fromObject(json: any): Promise<ShapeClip>;
}
