/*!
 * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
 * Licensed under the MIT License.
 */
/**
 * Any mapping from a string to values of type `T`
 * @legacy @beta
 */
export interface MapLike<T> {
    [index: string]: T;
}
/**
 * A loosely-typed mapping from strings to any value.
 *
 * @remarks Property sets are expected to be JSON-stringify-able.
 *
 * @privateRemarks PropertySet is typed using `any` because when you include
 * custom methods such as toJSON(), JSON.stringify accepts most types other than
 * functions
 * @legacy @beta
 */
export type PropertySet = MapLike<any>;
/**
 * Compares two PropertySets for equality.
 *
 * @internal
 */
export declare function matchProperties(a: PropertySet | undefined, b: PropertySet | undefined): boolean;
/**
 * Adds properties from one PropertySet to another.
 *
 * @internal
 */
export declare function extend<T>(base: MapLike<T>, extension: MapLike<T> | undefined): MapLike<T>;
/**
 * Clones properties in a given PropertySet into a new PropertySet.
 *
 * @internal
 */
export declare function clone<T>(extension: MapLike<T> | undefined): MapLike<T> | undefined;
/**
 * Add properties in one PropertySet to another PropertySet. If the PropertySet we are adding
 * to does not exist, create one.
 *
 * @internal
 */
export declare function addProperties(oldProps: PropertySet | undefined, newProps: PropertySet): PropertySet;
/**
 * Replace values of undefined in one PropertySet with values for the same key from another PropertySet.
 *
 * @internal
 */
export declare function extendIfUndefined<T>(base: MapLike<T>, extension: MapLike<T> | undefined): MapLike<T>;
/**
 * Create a MapLike with good performance.
 *
 * @internal
 */
export declare function createMap<T>(): MapLike<T>;
//# sourceMappingURL=properties.d.ts.map