import '../../../../assert/js/assert.js';
import '../../../../globals.js';
/**
 * Like ManualConstraint, but permits layout when not all the nodes are connected (null will be passed through).
 *
 * @author Jonathan Olson <jonathan.olson@colorado.edu>
 */
import IntentionalAny from '../../../../phet-core/js/types/IntentionalAny.js';
import { LayoutConstraint, LayoutProxy, Node } from '../../imports.js';
type LayoutProxyMap<T> = {
    [Property in keyof T]: LayoutProxy | null;
};
type LayoutCallback<T extends IntentionalAny[]> = (...args: LayoutProxyMap<T>) => void;
export default class RelaxedManualConstraint<T extends Node[]> extends LayoutConstraint {
    private readonly nodes;
    private readonly cells;
    private readonly layoutCallback;
    constructor(ancestorNode: Node, nodes: T, layoutCallback: LayoutCallback<T>);
    /**
     * (scenery-internal)
     */
    layout(): void;
    /**
     * Releases references
     */
    dispose(): void;
    static create<T extends Node[]>(ancestorNode: Node, nodes: T, layoutCallback: LayoutCallback<T>): RelaxedManualConstraint<T>;
}
export {};
//# sourceMappingURL=RelaxedManualConstraint.d.ts.map