export interface TrustedOptions {
    namespace?: string;
}
export interface TrustedAccessorOptions<T> {
    key: string;
    defaultValue?: T;
    yupSchema?: any;
    validate?: (value: T) => boolean;
    skipRegistration?: boolean;
    unmarshal?: (localValue: string) => T;
    marshal?: (value: T) => string;
}
export declare type TrustedTypeAccessorOptions<T> = Omit<TrustedAccessorOptions<T>, 'marshal' | 'unmarshal'>;
export interface TrustedAccessor<T> {
    get: () => T;
    set: (value: T) => void;
    remove: () => void;
    unregister: () => void;
    getKey: () => string;
    getDefaultValue: () => T;
}
export declare class Trusted {
    private namespace;
    private registeredKeys;
    constructor(options?: TrustedOptions);
    registerKey(key: string): void;
    unregisterKey(key: string): void;
    accessor<T>(options: TrustedAccessorOptions<T> & {
        defaultValue: T;
    }): TrustedAccessor<T>;
    accessor<T>(options: TrustedAccessorOptions<T>): TrustedAccessor<T | undefined>;
    string<T extends string = string>(accessorOptions: TrustedTypeAccessorOptions<T> & {
        defaultValue: T;
    }): TrustedAccessor<T>;
    string<T extends string = string>(accessorOptions: TrustedTypeAccessorOptions<T>): TrustedAccessor<T | undefined>;
    boolean<T extends boolean = boolean>(accessorOptions: TrustedTypeAccessorOptions<T> & {
        defaultValue: T;
    }): TrustedAccessor<T>;
    boolean<T extends boolean = boolean>(accessorOptions: TrustedTypeAccessorOptions<T>): TrustedAccessor<T | undefined>;
    object<T extends Record<any, any>>(accessorOptions: TrustedTypeAccessorOptions<T> & {
        defaultValue: T;
    }): TrustedAccessor<T>;
    object<T extends Record<any, any>>(accessorOptions: TrustedTypeAccessorOptions<T>): TrustedAccessor<T | undefined>;
    number<T extends number = number>(accessorOptions: TrustedTypeAccessorOptions<T> & {
        defaultValue: T;
    }): TrustedAccessor<T>;
    number<T extends number = number>(accessorOptions: TrustedTypeAccessorOptions<T>): TrustedAccessor<T | undefined>;
    array<T, A extends T[] = T[]>(accessorOptions: TrustedTypeAccessorOptions<A> & {
        defaultValue: A;
    }): TrustedAccessor<A>;
    array<T, A extends T[] = T[]>(accessorOptions: TrustedTypeAccessorOptions<A>): TrustedAccessor<A | undefined>;
    map<K extends string | number | symbol, T, M extends Map<K, T> = Map<K, T>>(accessorOptions: TrustedTypeAccessorOptions<M> & {
        defaultValue: M;
    }): TrustedAccessor<M>;
    map<K extends string | number | symbol, T, M extends Map<K, T> = Map<K, T>>(accessorOptions: TrustedTypeAccessorOptions<M>): TrustedAccessor<M | undefined>;
    set<T, S extends Set<T> = Set<T>>(accessorOptions: TrustedAccessorOptions<S>): TrustedAccessor<S | undefined>;
    date<T extends Date>(accessorOptions: TrustedAccessorOptions<T> & {
        defaultValue: T;
    }): TrustedAccessor<T>;
    date<T extends Date>(accessorOptions: TrustedAccessorOptions<T>): TrustedAccessor<T | undefined>;
}
