/**
* This module provides functions for operating on Records based on their
* keys.
*/
/** imports */
import { Record } from './';
/**
* MapFunc used by mapKeys
*/
export type MapFunc = (key: string, value: A, rec: Record) => string;
/**
* map maps over the property names of a Record producing a new Record
* with its keys produced by the MapFunc provided.
*/
export declare const map: (rec: Record, f: MapFunc) => Record;
/**
* intersect set operation.
*
* Produces a new Record containing only the properties of the keys
* that intersect the two records. The value of the properties are sourced
* from the left Record.
*/
export declare const intersect: (left: Record, right: Record) => Record;
/**
* difference set operation.
*
* Produces a new Record containing the propertiesof the left Record less
* any keys appearing in the right one.
*/
export declare const difference: (left: Record, right: Record) => Record;
/**
* project a Record according to the field specification given.
*
* This does not treat the keys of the spec object as paths.
* For that, use the project function from the path submodule.
*/
export declare const project: (spec: Record, rec: Record) => Record;