import * as Schema from 'effect/Schema';
export type Storage = {
    getItem: (key: string) => string | null;
    setItem: (key: string, value: string) => void;
    removeItem: (key: string) => void;
};
export type SignMessage = (message: string) => Promise<string> | string;
export type GetAddress = () => Promise<string> | string;
export type Signer = {
    getAddress: GetAddress;
    signMessage: SignMessage;
};
export type IdentityKeys = {
    encryptionPublicKey: string;
    encryptionPrivateKey: string;
    signaturePublicKey: string;
    signaturePrivateKey: string;
};
export declare const KeysSchema: Schema.Struct<{
    encryptionPublicKey: typeof Schema.String;
    encryptionPrivateKey: typeof Schema.String;
    signaturePublicKey: typeof Schema.String;
    signaturePrivateKey: typeof Schema.String;
}>;
export type KeysSchema = Schema.Schema.Type<typeof KeysSchema>;
export type Identity = IdentityKeys & {
    accountAddress: string;
};
export type PublicIdentity = {
    accountAddress: string;
    encryptionPublicKey: string;
    signaturePublicKey: string;
};
declare const InvalidIdentityError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").Equals<A, {}> extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
    readonly _tag: "InvalidIdentityError";
} & Readonly<A>;
export declare class InvalidIdentityError extends InvalidIdentityError_base {
}
export {};
//# sourceMappingURL=types.d.ts.map