package com.peachpasswords.sync /** * Transport-neutral session consumed by the sync coordinator. * * Live transports use Noise NK. The dialer pins the responder's static key; * responder sessions leave [remoteStaticPublicKey] empty until initiator * proof-of-possession is available. */ data class ChirpSyncSession( val remoteStaticPublicKey: ByteArray, val send: (ByteArray) -> Unit, val receive: suspend () -> ByteArray, val close: suspend () -> Unit, )