/**
 * Manages the defines for the Material
 */
export declare class MaterialDefines {
    VERTEXOUTPUT_INVARIANT: boolean;
    /** @internal */
    protected _keys: string[];
    private _isDirty;
    /** @internal */
    _renderId: number;
    /** @internal */
    _areLightsDirty: boolean;
    /** @internal */
    _areLightsDisposed: boolean;
    /** @internal */
    _areAttributesDirty: boolean;
    /** @internal */
    _areTexturesDirty: boolean;
    /** @internal */
    _areFresnelDirty: boolean;
    /** @internal */
    _areMiscDirty: boolean;
    /** @internal */
    _arePrePassDirty: boolean;
    /** @internal */
    _areImageProcessingDirty: boolean;
    /** @internal */
    _normals: boolean;
    /** @internal */
    _uvs: boolean;
    /** @internal */
    _needNormals: boolean;
    /** @internal */
    _needUVs: boolean;
    protected _externalProperties?: {
        [name: string]: {
            type: string;
            default: any;
        };
    };
    [id: string]: any;
    /**
     * Creates a new instance
     * @param externalProperties list of external properties to inject into the object
     */
    constructor(externalProperties?: {
        [name: string]: {
            type: string;
            default: any;
        };
    });
    /**
     * Specifies if the material needs to be re-calculated
     */
    get isDirty(): boolean;
    /**
     * Marks the material to indicate that it has been re-calculated
     */
    markAsProcessed(): void;
    /**
     * Marks the material to indicate that it needs to be re-calculated
     */
    markAsUnprocessed(): void;
    /**
     * Marks the material to indicate all of its defines need to be re-calculated
     */
    markAllAsDirty(): void;
    /**
     * Marks the material to indicate that image processing needs to be re-calculated
     */
    markAsImageProcessingDirty(): void;
    /**
     * Marks the material to indicate the lights need to be re-calculated
     * @param disposed Defines whether the light is dirty due to dispose or not
     */
    markAsLightDirty(disposed?: boolean): void;
    /**
     * Marks the attribute state as changed
     */
    markAsAttributesDirty(): void;
    /**
     * Marks the texture state as changed
     */
    markAsTexturesDirty(): void;
    /**
     * Marks the fresnel state as changed
     */
    markAsFresnelDirty(): void;
    /**
     * Marks the misc state as changed
     */
    markAsMiscDirty(): void;
    /**
     * Marks the prepass state as changed
     */
    markAsPrePassDirty(): void;
    /**
     * Rebuilds the material defines
     */
    rebuild(): void;
    /**
     * Specifies if two material defines are equal
     * @param other - A material define instance to compare to
     * @returns - Boolean indicating if the material defines are equal (true) or not (false)
     */
    isEqual(other: MaterialDefines): boolean;
    /**
     * Clones this instance's defines to another instance
     * @param other - material defines to clone values to
     */
    cloneTo(other: MaterialDefines): void;
    /**
     * Resets the material define values
     */
    reset(): void;
    private _setDefaultValue;
    /**
     * Converts the material define values to a string
     * @returns - String of material define information
     */
    toString(): string;
}
