import type { GetType } from "purify-ts";
import { Codec, Either } from "purify-ts";
declare const codecs: {
    "sk-widget@1//skPubKeys": Codec<Record<string, string>>;
    "sk-widget@1//customValidators": Codec<Record<string, Record<string, {
        integrationId: string;
        validatorAddresses: string[];
    }[]>>>;
    "sk-widget@1//referralCode": Codec<string>;
    "sk-widget@1//shimDisconnect/tron": Codec<boolean>;
};
export type LocalStorageKV = {
    [Key in keyof typeof codecs]: GetType<(typeof codecs)[Key]>;
};
type LocalStorageValue<K extends keyof LocalStorageKV> = GetType<(typeof codecs)[K]>;
export declare const getStorageItem: <K extends "sk-widget@1//skPubKeys" | "sk-widget@1//customValidators" | "sk-widget@1//referralCode" | "sk-widget@1//shimDisconnect/tron">(key: K) => Either<Error, GetType<{
    "sk-widget@1//skPubKeys": Codec<Record<string, string>>;
    "sk-widget@1//customValidators": Codec<Record<string, Record<string, {
        integrationId: string;
        validatorAddresses: string[];
    }[]>>>;
    "sk-widget@1//referralCode": Codec<string>;
    "sk-widget@1//shimDisconnect/tron": Codec<boolean>;
}[K]> | null>;
export declare const setStorageItem: <K extends "sk-widget@1//skPubKeys" | "sk-widget@1//customValidators" | "sk-widget@1//referralCode" | "sk-widget@1//shimDisconnect/tron">(key: K, value: GetType<{
    "sk-widget@1//skPubKeys": Codec<Record<string, string>>;
    "sk-widget@1//customValidators": Codec<Record<string, Record<string, {
        integrationId: string;
        validatorAddresses: string[];
    }[]>>>;
    "sk-widget@1//referralCode": Codec<string>;
    "sk-widget@1//shimDisconnect/tron": Codec<boolean>;
}[K]>) => Either<Error, void | undefined>;
type Listener<K extends keyof LocalStorageKV = keyof LocalStorageKV> = (val: GetType<(typeof codecs)[K]>) => void;
export declare const addLocalStorageListener: <K extends "sk-widget@1//skPubKeys" | "sk-widget@1//customValidators" | "sk-widget@1//referralCode" | "sk-widget@1//shimDisconnect/tron">(key: K, listener: Listener<K>) => () => boolean;
export {};
