import * as THREE from 'three';
import { Fetcher } from "../../utils/ajax";
import { LoadResultType } from './shared';
import { PBMPointCloud } from '../objects/pbmPointCloud';
import { PBMMesh } from '../objects/pbmMesh';
export declare function loadPly<Type extends 'geometry' | 'line' | 'pbmMesh' | 'pbmPointCloud', ResultType = {
    'geometry': THREE.BufferGeometry;
    'line': THREE.Line<THREE.BufferGeometry>;
    'pbmMesh': PBMMesh;
    'pbmPointCloud': PBMPointCloud;
}[Type]>(url: string, options?: {
    modelUpAxis?: 'Y' | 'Z';
    upAxis?: 'Y' | 'Z';
    light?: boolean;
    propertyNameMapping?: Record<string, string>;
    customPropertyMapping?: Record<string, {
        itemType: 'float32' | 'uint32' | 'int32' | 'uint16' | 'int16' | 'uint8' | 'int8';
        itemNames: string[];
        normalized?: boolean;
    }>;
    type?: Type;
    fetcher?: Fetcher;
    onDownloadProgress?: (percent: number, loaded?: number, total?: number) => void;
}): Promise<LoadResultType<ResultType>>;
