type ProfileData = Record<string, any>;
type ProfileTransformer = (text: string, ...args: any[]) => any;
type ProfileSerializer = (data: any, ...args: any[]) => string;
type ProfileOptions = {
    path: string;
    base?: string;
    data?: ProfileData;
    serializer?: ProfileSerializer;
    transformer?: ProfileTransformer;
};
/**
 * Easy to manage a profile
 *
 * @examples
 * ```
 * import { Profile } from '@ephemeras/profile'
 *
 * const file = new Profile({ path: '.white-block/cli/config.json' })
 *
 * // file.getUrl(): get file path
 * // file.getData(): get file data
 * // file.get(a.b): get data by propName
 * // file.set({}): set data by object
 * // file.set(a.0, data): set data by propName
 * // file.delete(a.0): delete data by propName
 * // file.clear(): clear file data
 * // file.remove(): remove file
 * ```
 */
declare class Profile {
    private url;
    private data;
    private transformer;
    private serializer;
    constructor(options: ProfileOptions);
    private sync;
    getData(): ProfileData;
    getUrl(): string;
    private getParent;
    get(prop: string): any;
    set(prop: string, value: any): ProfileData;
    set(data: ProfileData): ProfileData;
    delete(prop: string): ProfileData;
    clear(): ProfileData;
    remove(): void;
}

export { Profile, type ProfileData, type ProfileOptions, type ProfileSerializer, type ProfileTransformer };
