import { _SDKPackageInfo } from './StatsigClient';
import { StatsigUser } from './StatsigUser';
export type DeviceInfo = {
    getVersion(): string | null;
    getSystemVersion(): string | null;
    getSystemName(): string | null;
    getModel(): string | null;
    getDeviceId(): string | null;
};
export type ExpoConstants = {
    nativeAppVersion: string | null;
    nativeBuildVersion: string | null;
};
export type ExpoDevice = {
    osVersion: string | null;
    osName: string | null;
    modelName: string | null;
    modelId: string | null;
};
export type NativeModules = {
    I18nManager?: {
        localeIdentifier: string;
    } | null;
    SettingsManager?: {
        settings: {
            AppleLocale: string | null;
            AppleLanguages: string[];
        } | null;
    } | null;
};
export type Platform = {
    OS?: {
        toLocaleLowerCase: () => string;
    } | null;
};
export type UUID = {
    v4(): string | number[];
};
export default class Identity {
    private user;
    private statsigMetadata;
    private platform;
    private nativeModules;
    private reactNativeUUID?;
    private sdkType;
    private sdkVersion;
    constructor(user: StatsigUser | null, overrideStableID?: string | null, reactNativeUUID?: UUID);
    saveStableID(): void;
    initAsync(): Promise<Identity>;
    getSDKType(): string;
    getSDKVersion(): string;
    getStatsigMetadata(): Record<string, string>;
    getUser(): StatsigUser | null;
    updateUser(user: StatsigUser | null): void;
    setSDKPackageInfo(SDKPackageInfo: _SDKPackageInfo): void;
    setPlatform(platform: Platform): void;
    setNativeModules(nativeModules: NativeModules): void;
    private updateMetadataFromNativeModules;
    private getUUID;
    setRNDeviceInfo(deviceInfo: DeviceInfo): void;
    setExpoConstants(expoConstants: ExpoConstants): void;
    setExpoDevice(expoDevice: ExpoDevice): void;
}
