const i=require("blind-pairing-core"),{InvitationSchema:t}=require("@holepunchto/keet-core-schemas"),{AddInvitationOperationV1:e,AddInvitationOperationV2:a,RemoveInvitationOperation:n}=t.Operations;module.exports=class{static Operations=new Set([e.TYPE,a.TYPE,n.TYPE]);constructor(i){this.view=i,this.members=null,this.invitations=null}initialize(){this.members=this.view.members,this.invitations=this.view.collections.invitations}async _applyAddInvitationOperation(i,{id:t}){const[e,a]=await Promise.all([this.members.getMemberForDeviceKey(t.key),this.members.isDeviceMuted(t.key)]);if(a||!e)return;const n=i.value,s=(o=e.capabilities,n.capabilities&o);var o;await this.invitations.update(n.id,{...n,capabilities:s},{upsert:!0})}async _applyRemoveInvitationOperation(i,t){}async getInvitation(i){const t=await this.invitations.get(i);return t?.value}updateInvitation(i,t){return this.invitations.update(i,t,{upsert:!0})}autobaseApply(i,t){switch(i.type){case e.TYPE:case a.TYPE:return this._applyAddInvitationOperation(i,t);case n.TYPE:return this._applyRemoveInvitationOperation(i,t)}}static verifyReceipt(t,e,{checkExpiration:a=!0}={}){return!(!t||!e)&&!(a&&t.expiration&&t.expiration<Date.now())&&!(!t.reusable&&t.uses>=1)&&i.verifyReceipt(e,t.publicKey)}};