import { State } from '../../renderers/shared/state/State';
import { Texture } from '../../renderers/shared/texture/Texture';
import type { PointData } from '../../../maths/PointData';
import type { Shader } from '../../renderers/shared/shader/Shader';
import type { View } from '../../renderers/shared/View';
import type { Bounds } from '../../scene/bounds/Bounds';
import type { DestroyOptions } from '../../scene/destroyTypes';
import type { MeshGeometry } from './MeshGeometry';
export interface TextureShader extends Shader {
    texture: Texture;
}
export interface MeshViewOptions<GEOMETRY extends MeshGeometry = MeshGeometry, SHADER extends TextureShader = TextureShader> {
    geometry: GEOMETRY;
    shader?: SHADER;
    texture?: Texture;
}
export declare class MeshView<GEOMETRY extends MeshGeometry = MeshGeometry, SHADER extends TextureShader = TextureShader> implements View {
    readonly uid: number;
    readonly renderPipeId = "mesh";
    readonly canBundle = true;
    readonly owner: import("../../renderers/shared/View").ViewObserver;
    state: State;
    /** @ignore */
    _texture: Texture;
    /** @ignore */
    _geometry: GEOMETRY;
    /** @ignore */
    _shader?: SHADER;
    constructor(options: MeshViewOptions<GEOMETRY, SHADER>);
    set shader(value: SHADER);
    get shader(): SHADER;
    set geometry(value: GEOMETRY);
    get geometry(): GEOMETRY;
    set texture(value: Texture);
    get texture(): Texture;
    get batched(): boolean;
    addBounds(bounds: Bounds): void;
    containsPoint(point: PointData): boolean;
    /** Called when the geometry is updated. */
    protected onUpdate(): void;
    /**
     * Destroys this sprite renderable and optionally its texture.
     * @param options - Options parameter. A boolean will act as if all options
     *  have been set to that value
     * @param {boolean} [options.texture=false] - Should it destroy the current texture of the renderable as well
     * @param {boolean} [options.textureSource=false] - Should it destroy the textureSource of the renderable as well
     */
    destroy(options?: DestroyOptions): void;
}
