import type { CustomAuthArgs } from "@toruslabs/customauth" ; import BN from "bn.js" ; import type { curve } from "elliptic" ; export type PubKeyType = "ecc" ; export type PolynomialID = string ; export type PolyIDAndShares = [ PolynomialID , string [ ] ] ; export type BNString = string | BN ; export interface EncryptedMessage { ciphertext : string ; ephemPublicKey : string ; iv : string ; mac : string ; } export interface ServiceProviderArgs { enableLogging ? : boolean ; postboxKey ? : string ; } export interface TorusServiceProviderArgs extends ServiceProviderArgs { directParams : CustomAuthArgs ; } export type StringifiedType = Record < string , any > ; export interface ISerializable { toJSON ( ) : StringifiedType ; } export interface IPoint extends ISerializable { x : BN ; y : BN ; encode ( enc , params ? ) : Buffer ; } export interface IServiceProvider extends ISerializable { enableLogging : boolean ; postboxKey : BN ; serviceProviderName : string ; encrypt ( msg ) : Promise < EncryptedMessage > ; decrypt ( msg ) : Promise < Buffer > ; retrievePubKey ( type ) : Buffer ; retrievePubKeyPoint ( ) : curve . base . BasePoint ; sign ( msg ) : string ; } export type TorusStorageLayerAPIParams = { pub_key_X : string ; pub_key_Y : string ; set_data : unknown ; signature : string ; namespace : string ; } ; export interface IStorageLayer extends ISerializable { storageLayerName : string ; getMetadata < T > ( params ) : Promise < T > ; setMetadata < T > ( params ) : Promise < { message : string ; } > ; setMetadataStream < T > ( params ) : Promise < { message : string ; } > ; acquireWriteLock ( params ) : Promise < { status : number ; id ? : string ; } > ; releaseWriteLock ( params ) : Promise < { status : number ; } > ; } export type TorusStorageLayerArgs = { enableLogging ? : boolean ; hostUrl ? : string ; serverTimeOffset ? : number ; } ; export type MockStorageLayerArgs = { dataMap : any ; lockMap : any ; } ; export type ShareDescriptionMap = { [ shareIndexStr ] : string [ ] ; } ; export type FromJSONConstructor = { fromJSON ( value ) : any ; } ; export type DeviceShareDescription = { module : string ; userAgent : string ; dateAdded : number ; customDeviceInfo ? : string ; } ;