/**
 * Package keyagreement provides interface for key agreement.
 */ export interface KeyAgreement { /** Offer message length in bytes */ readonly offerMessageLength : number ; /** Accept message length in bytes */ readonly acceptMessageLength : number ; /** Shared key length in bytes **/ readonly sharedKeyLength : number ; /** Saved state length in bytes **/ readonly savedStateLength : number ; /**
     * Offer returns a new offer message, which should be send to the accepting
     * party.
     */ offer ( ) : Uint8Array ; /**
     * Accept offer message and return new accept message, which should be sent
     * back to the offering party.
     *
     * Also derives shared key, so the accepting party can call getSharedKey()
     * right after calling accept.
     */ accept ( offerMsg ) : Uint8Array ; /**
     * Offering party finishes key agreement by receiving accept message and
     * passing it to finish(). After calling finish(), offering party can call
     * sharedKey() to get shared key.
     */ finish ( acceptMsg ) : this ; /**
     * Returns the agreed shared key.
     * - Offering party should call this after finish().
     * - Accepting party should call this after accept().
     */ getSharedKey ( ) : Uint8Array ; /**
     * Serializes secret offering party state into byte array.
     *
     * This function should be called after offer() if the offering party
     * cannot keep KeyAgreement instance in memory. When it receives accept
     * message, it can create a new instance and call restoreState() on it with
     * the serialized state to recover to continue the agreement.
     */ saveState ( ) : Uint8Array ; /**
     * Restores offering party's state.
     */ restoreState ( serializedState ) : this ; /**
     * Cleans the temporary instance data.
     */ clean ( ) : void ; }