/**
 * Sigma.js Settings
 * =================================
 *
 * The list of settings and some handy functions.
 * @module
 */
import { Attributes } from "graphology-types";
import { EdgeDisplayData, NodeDisplayData } from "./types";
import { EdgeProgramType } from "./rendering/webgl/programs/common/edge";
import { NodeProgramType } from "./rendering/webgl/programs/common/node";
import { EdgeLabelDrawingFunction } from "./utils/edge-labels";
import { NodeLabelDrawingFunction } from "./utils/node-labels";
import { NodeHoverDrawingFunction } from "./utils/node-hover";
/**
 * Sigma.js settings
 * =================================
 */
export interface Settings {
    hideEdgesOnMove: boolean;
    hideLabelsOnMove: boolean;
    renderLabels: boolean;
    renderEdgeLabels: boolean;
    enableEdgeEvents: boolean;
    defaultNodeColor: string;
    defaultNodeType: string;
    defaultEdgeColor: string;
    defaultEdgeType: string;
    labelFont: string;
    labelSize: number;
    labelWeight: string;
    labelColor: {
        attribute: string;
        color?: string;
    } | {
        color: string;
        attribute?: undefined;
    };
    edgeLabelFont: string;
    edgeLabelSize: number;
    edgeLabelWeight: string;
    edgeLabelColor: {
        attribute: string;
        color?: string;
    } | {
        color: string;
        attribute?: undefined;
    };
    stagePadding: number;
    zoomToSizeRatioFunction: (ratio: number) => number;
    itemSizesReference: "screen" | "positions";
    defaultDrawEdgeLabel: EdgeLabelDrawingFunction;
    defaultDrawNodeLabel: NodeLabelDrawingFunction;
    defaultDrawNodeHover: NodeHoverDrawingFunction;
    labelDensity: number;
    labelGridCellSize: number;
    labelRenderedSizeThreshold: number;
    nodeReducer: null | ((node: string, data: Attributes) => Partial<NodeDisplayData>);
    edgeReducer: null | ((edge: string, data: Attributes) => Partial<EdgeDisplayData>);
    zIndex: boolean;
    minCameraRatio: null | number;
    maxCameraRatio: null | number;
    allowInvalidContainer: boolean;
    nodeProgramClasses: {
        [type: string]: NodeProgramType;
    };
    nodeHoverProgramClasses: {
        [type: string]: NodeProgramType;
    };
    edgeProgramClasses: {
        [type: string]: EdgeProgramType;
    };
}
export declare const DEFAULT_SETTINGS: Settings;
export declare const DEFAULT_NODE_PROGRAM_CLASSES: Record<string, NodeProgramType>;
export declare const DEFAULT_EDGE_PROGRAM_CLASSES: Record<string, EdgeProgramType>;
export declare function validateSettings(settings: Settings): void;
export declare function resolveSettings(settings: Partial<Settings>): Settings;
