import { Project } from 'projen'; /** * Return a value if the check value is truthy, undefined otherwise. */ export declare function ifSet(check: any, then: any): any; /** * Return the list without undefined or null elements. */ export declare function noEmpties(list: any[]): any[]; type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial; } : T; /** * Deep merge a user provided options object with defaults. * User options take precedence. */ export declare function deepDefaults(options?: DeepPartial, defaults?: DeepPartial): T; /** * Immutable deep merging objects. */ export declare function deepMerge(...data: any[]): any; /** * Is this thing an object */ export declare function isObject(x: any): x is object; /** * Is this thing a plain object (i.e. `{a: 1}`) */ export declare function isPlainObject(x: any): x is object; /** * Middleware stack to set default options */ export declare function defaultOptions(...middleware: OptionsMiddleware[]): OptionsMiddleware; export type OptionsMiddleware = (options: T) => any; /** * Middleware stack to configure features */ export declare function configureFeatures(...middleware: FeatureMiddleware[]): FeatureMiddleware; export type FeatureMiddleware = (project: T, options: any) => T; export type Mutable = { -readonly [P in keyof T]: T[P]; }; export {};