1212
1313import { MessageBoxClient } from './MessageBoxClient.js'
1414import { PeerMessage } from './types.js'
15- import { WalletInterface , P2PKH , PublicKey , createNonce , AtomicBEEF , AuthFetch , Base64String } from '@bsv/sdk'
15+ import { WalletInterface , P2PKH , PublicKey , createNonce , AtomicBEEF , AuthFetch , Base64String , OriginatorDomainNameStringUnder250Bytes } from '@bsv/sdk'
16+
1617import * as Logger from './Utils/logger.js'
1718
1819function safeParse < T > ( input : any ) : T {
@@ -35,7 +36,8 @@ const STANDARD_PAYMENT_OUTPUT_INDEX = 0
3536export interface PeerPayClientConfig {
3637 messageBoxHost ?: string
3738 walletClient : WalletInterface
38- enableLogging ?: boolean // Added optional logging flag
39+ enableLogging ?: boolean // Added optional logging flag,
40+ originator ?: OriginatorDomainNameStringUnder250Bytes
3941}
4042
4143/**
@@ -73,19 +75,20 @@ export interface IncomingPayment {
7375export class PeerPayClient extends MessageBoxClient {
7476 private readonly peerPayWalletClient : WalletInterface
7577 private _authFetchInstance ?: AuthFetch
76-
78+ private originator ?: OriginatorDomainNameStringUnder250Bytes
7779 constructor ( config : PeerPayClientConfig ) {
78- const { messageBoxHost = 'https://messagebox.babbage.systems' , walletClient, enableLogging = false } = config
80+ const { messageBoxHost = 'https://messagebox.babbage.systems' , walletClient, enableLogging = false , originator } = config
7981
8082 // 🔹 Pass enableLogging to MessageBoxClient
8183 super ( { host : messageBoxHost , walletClient, enableLogging } )
8284
8385 this . peerPayWalletClient = walletClient
86+ this . originator = originator
8487 }
8588
8689 private get authFetchInstance ( ) : AuthFetch {
8790 if ( this . _authFetchInstance === null || this . _authFetchInstance === undefined ) {
88- this . _authFetchInstance = new AuthFetch ( this . peerPayWalletClient )
91+ this . _authFetchInstance = new AuthFetch ( this . peerPayWalletClient , undefined , undefined , this . originator )
8992 }
9093 return this . _authFetchInstance
9194 }
@@ -119,7 +122,7 @@ export class PeerPayClient extends MessageBoxClient {
119122 protocolID : [ 2 , '3241645161d8' ] ,
120123 keyID : `${ derivationPrefix } ${ derivationSuffix } ` ,
121124 counterparty : payment . recipient
122- } )
125+ } , this . originator )
123126
124127 Logger . log ( `[PP CLIENT] Derived Public Key: ${ derivedKeyResult } ` )
125128
@@ -148,7 +151,7 @@ export class PeerPayClient extends MessageBoxClient {
148151 options : {
149152 randomizeOutputs : false
150153 }
151- } )
154+ } , this . originator )
152155
153156 if ( paymentAction . tx === undefined ) {
154157 throw new Error ( 'Transaction creation failed!' )
@@ -186,7 +189,7 @@ export class PeerPayClient extends MessageBoxClient {
186189
187190 const paymentToken = await this . createPaymentToken ( payment )
188191
189- // Ensure the recipient is included before sending
192+ // Ensure the recipient is included before sendings
190193 await this . sendMessage ( {
191194 recipient : payment . recipient ,
192195 messageBox : STANDARD_PAYMENT_MESSAGEBOX ,
@@ -216,7 +219,8 @@ export class PeerPayClient extends MessageBoxClient {
216219 await this . sendLiveMessage ( {
217220 recipient : payment . recipient ,
218221 messageBox : STANDARD_PAYMENT_MESSAGEBOX ,
219- body : JSON . stringify ( paymentToken )
222+ body : JSON . stringify ( paymentToken ) ,
223+ originator : this . originator
220224 } , overrideHost )
221225 } catch ( err ) {
222226 Logger . warn ( '[PP CLIENT] sendLiveMessage failed, falling back to HTTP:' , err )
@@ -225,7 +229,8 @@ export class PeerPayClient extends MessageBoxClient {
225229 await this . sendMessage ( {
226230 recipient : payment . recipient ,
227231 messageBox : STANDARD_PAYMENT_MESSAGEBOX ,
228- body : JSON . stringify ( paymentToken )
232+ body : JSON . stringify ( paymentToken ) ,
233+ originator : this . originator
229234 } , overrideHost )
230235 }
231236 }
@@ -244,14 +249,17 @@ export class PeerPayClient extends MessageBoxClient {
244249 */
245250 async listenForLivePayments ( {
246251 onPayment,
247- overrideHost
252+ overrideHost,
253+ originator
248254 } : {
249255 onPayment : ( payment : IncomingPayment ) => void
250256 overrideHost ?: string
257+ originator ?: string
251258 } ) : Promise < void > {
252259 await this . listenForLiveMessages ( {
253260 messageBox : STANDARD_PAYMENT_MESSAGEBOX ,
254- overrideHost,
261+ overrideHost,
262+ originator,
255263
256264 // Convert PeerMessage → IncomingPayment before calling onPayment
257265 onMessage : ( message : PeerMessage ) => {
@@ -294,12 +302,12 @@ export class PeerPayClient extends MessageBoxClient {
294302 protocol : 'wallet payment'
295303 } ] ,
296304 description : 'PeerPay Payment'
297- } )
305+ } , this . originator )
298306
299307 Logger . log ( `[PP CLIENT] Payment internalized successfully: ${ JSON . stringify ( paymentResult , null , 2 ) } ` )
300308 Logger . log ( `[PP CLIENT] Acknowledging payment with messageId: ${ payment . messageId } ` )
301309
302- await this . acknowledgeMessage ( { messageIds : [ payment . messageId ] } )
310+ await this . acknowledgeMessage ( { messageIds : [ payment . messageId ] , originator : this . originator } )
303311
304312 return { payment, paymentResult }
305313 } catch ( error ) {
@@ -363,7 +371,7 @@ export class PeerPayClient extends MessageBoxClient {
363371
364372 try {
365373 Logger . log ( `[PP CLIENT] Acknowledging message ${ payment . messageId } after refunding...` )
366- await this . acknowledgeMessage ( { messageIds : [ payment . messageId ] } )
374+ await this . acknowledgeMessage ( { messageIds : [ payment . messageId ] , originator : this . originator } )
367375 Logger . log ( '[PP CLIENT] Acknowledgment after refund successful.' )
368376 } catch ( error : any ) {
369377 Logger . error ( `[PP CLIENT] Error acknowledging message after refund: ${ ( error as { message : string } ) . message } ` )
0 commit comments