import * as postcss from 'postcss'; import { Node } from './node'; /** * A type that matches any constructor for {@link T}. From * https://www.typescriptlang.org/docs/handbook/mixins.html. */ export type Constructor = new (...args: any[]) => T; /** * An explicit field description passed to `cloneNode` that describes in detail * how to clone it. */ interface ExplicitClonableField { /** The field's name. */ name: Name; /** * Whether the field can be set to an explicit undefined value which means * something different than an absent field. */ explicitUndefined?: boolean; } /** The type of field names that can be passed into `cloneNode`. */ type ClonableField = Name | ExplicitClonableField; /** * Creates a copy of {@link node} by passing all the properties in {@link * constructorFields} as an object to its constructor. * * If {@link overrides} is passed, it overrides any existing constructor field * values. It's also used to assign {@link assignedFields} after the cloned * object has been constructed. */ export declare function cloneNode>(node: T, overrides: Record | undefined, constructorFields: ClonableField[], assignedFields?: ClonableField[]): T; /** * Converts {@link node} into a JSON-safe object, with the given {@link fields} * included. * * This always includes the `type`, `sassType`, `raws`, and `source` fields if * set. It converts multiple references to the same source input object into * indexes into a top-level list. */ export declare function toJSON(node: T, fields: (keyof T & string)[], inputs?: Map): object; /** * Returns the longest string (of code units) that's an initial substring of * every string in * {@link strings}. */ export declare function longestCommonInitialSubstring(strings: string[]): string; /** * Returns whether {@link set1} and {@link set2} contain the same elements, * regardless of order. */ export declare function setsEqual(set1: Set, set2: Set): boolean; export {};