import type { BaseStyleProps, DisplayObjectConfig, Group } from '@antv/g';
import type { ProceduralGeometry as GGeometry, Material as GMaterial } from '@antv/g-plugin-3d';
import { Mesh } from '@antv/g-plugin-3d';
import type { IMaterial, Plugin } from '@antv/g-plugin-device-renderer';
import type { BaseNodeStyleProps, Prefix } from '@antv/g6';
import { BaseNode } from '@antv/g6';
import { Material } from '../types';
/**
* 3D 节点样式
*
* 3D node style props
*/
export interface BaseNode3DStyleProps extends BaseNodeStyleProps, Prefix<'material', IMaterial> {
geometry?: GGeometry;
material?: GMaterial;
texture?: string | TexImageSource;
materialType?: Material['type'];
}
/**
* 3D 节点基类
*
* 3D node base class
*/
export declare abstract class BaseNode3D extends BaseNode {
static defaultStyleProps: Partial;
type: string;
protected get plugin(): Plugin;
protected get device(): import("@antv/g-device-api").Device;
constructor(options: DisplayObjectConfig);
render(attributes: Required, container: Group): void;
protected getKeyStyle(attributes: Required): MeshStyleProps;
protected drawKeyShape(attributes: Required, container?: Group): Mesh | undefined;
protected abstract getGeometry(attributes: Required): GGeometry;
protected getMaterial(attributes: Required): GMaterial;
}
export interface MeshStyleProps extends BaseStyleProps {
x?: number | string;
y?: number | string;
z?: number | string;
geometry: GGeometry;
material: GMaterial;
}