import { BasePersistedConfig, PersistedConfigWithShaders } from '../../../../utils/BasePersistedConfig';
import { BaseBuilderMatNodeType } from '../../../../mat/_BaseBuilder';
import { MaterialWithCustomMaterials } from '../../../../../../core/geometry/Material';
import { PolyDictionary } from '../../../../../../types/GlobalTypes';
import { OnBeforeCompileDataJSON } from './OnBeforeCompile';
type RemoveShaders<Type> = {
    [Property in keyof Type as Exclude<Property, 'fragmentShader' | 'vertexShader'>]: Type[Property];
};
export interface OnBeforeCompileDataJSONWithoutShaders extends RemoveShaders<OnBeforeCompileDataJSON> {
}
export interface PersistedConfigBaseMaterialData {
    material: object;
    onBeforeCompileDataJSONWithoutShaders: OnBeforeCompileDataJSONWithoutShaders;
    customMaterials?: PolyDictionary<PersistedConfigBaseMaterialData>;
}
export interface PersistedConfigBaseMaterialDataWithShaders extends PersistedConfigBaseMaterialData, PersistedConfigWithShaders {
}
export declare class MaterialPersistedConfig extends BasePersistedConfig {
    protected node: BaseBuilderMatNodeType;
    private _material;
    constructor(node: BaseBuilderMatNodeType);
    toData(): Promise<PersistedConfigBaseMaterialDataWithShaders | undefined>;
    load(data: PersistedConfigBaseMaterialDataWithShaders): void;
    material(): MaterialWithCustomMaterials | undefined;
}
export {};
