import type { b64string } from '@tanker/crypto'; import { tcrypto } from '@tanker/crypto'; declare type PermanentIdentityTarget = 'user'; declare type SecretProvisionalIdentityTarget = 'email' | 'phone_number'; declare type PublicProvisionalIdentityTarget = 'email' | 'hashed_email' | 'hashed_phone_number'; export declare type PublicPermanentIdentity = { trustchain_id: b64string; target: PermanentIdentityTarget; value: b64string; }; export declare type SecretPermanentIdentity = PublicPermanentIdentity & { ephemeral_public_signature_key: b64string; ephemeral_private_signature_key: b64string; delegation_signature: b64string; user_secret: b64string; }; declare type ProvisionalIdentityBase = { trustchain_id: b64string; value: string; public_signature_key: b64string; public_encryption_key: b64string; }; export declare type PublicProvisionalIdentity = ProvisionalIdentityBase & { target: PublicProvisionalIdentityTarget; }; export declare type SecretProvisionalIdentity = ProvisionalIdentityBase & { target: SecretProvisionalIdentityTarget; private_encryption_key: b64string; private_signature_key: b64string; }; export declare type PublicProvisionalUser = { trustchainId: Uint8Array; target: string; value: string; appSignaturePublicKey: Uint8Array; appEncryptionPublicKey: Uint8Array; tankerSignaturePublicKey: Uint8Array; tankerEncryptionPublicKey: Uint8Array; }; export declare type ProvisionalUserKeys = { appSignatureKeyPair: tcrypto.SodiumKeyPair; appEncryptionKeyPair: tcrypto.SodiumKeyPair; tankerSignatureKeyPair: tcrypto.SodiumKeyPair; tankerEncryptionKeyPair: tcrypto.SodiumKeyPair; }; export declare type SecretIdentity = SecretPermanentIdentity | SecretProvisionalIdentity; export declare type PublicIdentity = PublicPermanentIdentity | PublicProvisionalIdentity; export declare function toIdentityOrderedJson(identity: SecretIdentity | PublicIdentity): b64string; export declare function _serializeIdentity(identity: SecretIdentity | PublicIdentity): b64string; export declare function _deserializeIdentity(identity: b64string): SecretIdentity; export declare function _deserializePermanentIdentity(identity: b64string): SecretPermanentIdentity; export declare function _deserializeProvisionalIdentity(identity: b64string): SecretProvisionalIdentity; export declare function _deserializePublicIdentity(identity: b64string): PublicIdentity; export declare function _splitProvisionalAndPermanentPublicIdentities(identities: Array): { permanentIdentities: PublicPermanentIdentity[]; provisionalIdentities: PublicProvisionalIdentity[]; }; export declare function createIdentity(appId: b64string, appSecret: b64string, userId: string): Promise; export declare function createProvisionalIdentity(appId: b64string, target: SecretProvisionalIdentityTarget, value: string): Promise; export declare function getPublicIdentity(tankerIdentity: b64string): Promise; export declare function upgradeIdentity(tankerIdentity: b64string): Promise; export {};