import { Container } from '../../scene/Container';
import { MeshGeometry } from './MeshGeometry';
import { MeshView } from './MeshView';
import type { Topology } from '../../renderers/shared/geometry/const';
import type { State } from '../../renderers/shared/state/State';
import type { Texture } from '../../renderers/shared/texture/Texture';
import type { ContainerOptions } from '../../scene/Container';
import type { MeshViewOptions, TextureShader } from './MeshView';
export type MeshOptions<GEOMETRY extends MeshGeometry = MeshGeometry, SHADER extends TextureShader = TextureShader> = ContainerOptions<MeshView<GEOMETRY, SHADER>> & MeshViewOptions<GEOMETRY, SHADER>;
export declare class Mesh<GEOMETRY extends MeshGeometry = MeshGeometry, SHADER extends TextureShader = TextureShader> extends Container<MeshView<GEOMETRY, SHADER>> {
    constructor(options: MeshOptions<GEOMETRY, SHADER>);
    /** @deprecated since 8.0.0 */
    constructor(geometry: GEOMETRY, shader: SHADER, state?: State, drawMode?: Topology);
    get texture(): Texture;
    set texture(value: Texture);
    get geometry(): GEOMETRY;
    set geometry(value: GEOMETRY);
    get material(): SHADER;
    get shader(): SHADER;
}
