
import { PREPARE_PROVIDER_FOR_USE } from './provider'

class AsymmetricKeyPair {
  privateKey: string = ''
  publicKey: string = ''
}

declare type VerifyKeyFormat = (key: string, extract?: any) => Promise<boolean[]>

declare type GenerateKeyPair = (extract?: any) => Promise<AsymmetricKeyPair[]>

declare type SignMessage = (message: any, privateKey: string, extract?: any) => Promise<any[]>

declare type VerifyMessage = (message: any, signature: any, publicKey: string, extract?: any) => Promise<boolean[]>

interface AsymmetricCryptographyMultiplexer {
  PREPARE_PROVIDER_FOR_USE: PREPARE_PROVIDER_FOR_USE
  verifyKeyFormat: VerifyKeyFormat
  generateKeyPair: GenerateKeyPair
  signMessage: SignMessage
  verifyMessage: VerifyMessage
}

export {
  AsymmetricCryptographyMultiplexer,
  AsymmetricKeyPair,
  VerifyKeyFormat,
  GenerateKeyPair,
  SignMessage,
  VerifyMessage
}

