import { IJoinWalletHandler, IPassphraseResolver, TEnv, TEvent, TJoinWalletStatus, TKeyStatus, TKeyTakeoverStatus, TLogLevel, TMPCAlgorithm, TReleaseSecureStorageCallback, TTransactionSignatureStatus } from "./types"; export interface IFireblocksNCW { dispose(): Promise; clearAllStorage(): Promise; generateMPCKeys(algorithms: Set): Promise>; stopMpcDeviceSetup(): Promise; signTransaction(txId: string): Promise; stopInProgressSignTransaction(): Promise; getInProgressSigningTxId(): Promise; backupKeys(passphrase: string, passphraseId: string): Promise; recoverKeys(passphraseResolver: IPassphraseResolver): Promise; requestJoinExistingWallet(joinWalletResolver: IJoinWalletHandler): Promise>; approveJoinWalletRequest(requestId: string): Promise>; stopJoinWallet(): void; takeover(): Promise; exportFullKeys(chaincode: string, cloudKeyShares: Map): Promise; deriveAssetKey(extendedPrivateKey: string, coinType: number, account: number, change: number, index: number): string; getKeysStatus(): Promise>; getPhysicalDeviceId(): string; } export interface ILogger { log(level: TLogLevel, message: string, data?: any): void; } export interface IFullKey { keyId: string; algorithm: TMPCAlgorithm; privateKey: string; publicKey: string; } export interface IStorageProvider { get(key: string): Promise; set(key: string, data: string): Promise; clear(key: string): Promise; getAllKeys(): Promise; } export interface ISecureStorageProvider extends IStorageProvider { getAccess(): Promise; } export interface IReportingOptions { enabled: boolean; } export interface IFireblocksNCWOptions { env?: TEnv; deviceId: string; messagesHandler: IMessagesHandler; eventsHandler: IEventsHandler; secureStorageProvider: ISecureStorageProvider; storageProvider?: IStorageProvider; logger?: ILogger; logLevel?: TLogLevel; reporting?: IReportingOptions; } export interface IEventsHandler { handleEvent(event: TEvent): void; } export interface IMessagesHandler { handleOutgoingMessage(message: string): Promise; } export interface IKeyDescriptor { algorithm: TMPCAlgorithm; keyId: string | null; keyStatus: TKeyStatus | null; } export interface IKeyTakeover { algorithm: TMPCAlgorithm | null; keyId: string | null; keyTakeoverStatus: TKeyTakeoverStatus; } export interface IKeyDescriptorChangedEvent { type: "key_descriptor_changed"; keyDescriptor: IKeyDescriptor; } export interface IKeyTakeoverChangedEvent { type: "key_takeover_changed"; keyTakeover: IKeyTakeover; } export interface IJoinWalletDescriptor { status: TJoinWalletStatus; requestId: string | null; algorithm: TMPCAlgorithm | null; provisionKeyId: string | null; } export interface IJoinWalletEvent { type: "join_wallet_descriptor"; joinWalletDescriptor: IJoinWalletDescriptor; } export interface ITransactionSignature { txId: string; transactionSignatureStatus: TTransactionSignatureStatus; } export interface ITransactionSignatureChangedEvent { type: "transaction_signature_changed"; transactionSignature: ITransactionSignature; } export interface IKeyBackupEvent { type: "keys_backup"; keysBackup: IKeyBackupResult[]; } export interface IKeyRecoveryEvent { type: "keys_recovery"; keyDescriptor: IKeyDescriptor; } export interface IKeyBackupResult { keyId: string; keyBackupStatus: "SUCCESS" | "ERROR"; }