import type { SetOptional } from 'type-fest';
export declare function simEval(code: string): any;
export declare const isNodeJs: boolean;
export declare const isBrowser: boolean;
export type ClassSpy<T extends object = object> = Function & {
    prototype: T;
};
export type InstanceTypeSpy<TClass> = InstanceType<{
    new (): never;
} & TClass>;
export declare function getMarkKey(num: number, sp: string): string;
export declare function getNativeKeys(sp: string, mark?: string): {
    sp: string;
    mark: string | undefined;
    type: string;
    content: string;
    className: string;
    required: string[];
    required_length: number;
    all: string[];
    all_length: number;
};
export type NativeKeys = SetOptional<ReturnType<typeof getNativeKeys>, 'mark'>;
export declare function isNativeProperty(value: any, nativeKeys: NativeKeys): boolean;
export declare function calMarkId(value: Record<string, any>, nativeKeys: NativeKeys, usedMark: string[]): void;
export type CustomerSerializer<T extends ClassSpy, TContent = any> = {
    className: string;
    class: T;
    toContent(value: InstanceTypeSpy<T>, isPlainContent: () => void): TContent;
    fromContent(content: TContent): InstanceTypeSpy<T>;
    isType(value: any): value is InstanceTypeSpy<T>;
    /**
     * when `TContent` is of `object` type, does it need to be serialized
     * @default true
     */
    serializContent?: boolean;
};
export type SerializeConfig = {
    Date: boolean;
    Function: boolean;
    RegExp: boolean;
    Set: boolean;
    Map: boolean;
    Buffer: boolean;
};
export declare function getBuildinSerializers(): CustomerSerializer<ClassSpy, any>[];
export declare const customerSerializers: CustomerSerializer<ClassSpy, any>[];
export declare function resetCustomerSerializers(): CustomerSerializer<ClassSpy<object>, any>[];
export declare function createCustomerSerializer<T extends ClassSpy, TContent = any>(pars: SetOptional<CustomerSerializer<T, TContent>, 'className' | 'isType'>): CustomerSerializer<T, TContent>;
export declare function addCustomerSerializer<T extends ClassSpy, TContent = any>(pars: SetOptional<CustomerSerializer<T, TContent>, 'className' | 'isType'>): void;
