11import { type Proof } from "@cashu/cashu-ts" ;
2- import type { NDKRelay , NDKRelaySet , NostrEvent } from "@nostr-dev-kit/ndk" ;
2+ import type { NDKEventId , NDKRelay , NDKRelaySet , NostrEvent } from "@nostr-dev-kit/ndk" ;
33import type NDK from "@nostr-dev-kit/ndk" ;
44import { NDKEvent , NDKKind , normalizeUrl } from "@nostr-dev-kit/ndk" ;
55import type { NDKCashuWallet } from "./wallet/index.js" ;
@@ -24,6 +24,12 @@ export function proofsTotalBalance(proofs: Proof[]): number {
2424export class NDKCashuToken extends NDKEvent {
2525 private _proofs : Proof [ ] = [ ] ;
2626 private _mint : string | undefined ;
27+
28+ /**
29+ * Tokens that this token superseeds
30+ */
31+ private _deletes : NDKEventId [ ] = [ ] ;
32+
2733 private original : NDKEvent | undefined ;
2834
2935 constructor ( ndk ?: NDK , event ?: NostrEvent | NDKEvent ) {
@@ -45,6 +51,7 @@ export class NDKCashuToken extends NDKEvent {
4551 const content = JSON . parse ( token . content ) ;
4652 token . proofs = content . proofs ;
4753 token . mint = content . mint ?? token . tagValue ( "mint" ) ;
54+ token . deletedTokens = content . del ?? [ ] ;
4855 if ( ! Array . isArray ( token . proofs ) ) return ;
4956 } catch ( e ) {
5057 return ;
@@ -88,10 +95,12 @@ export class NDKCashuToken extends NDKEvent {
8895 }
8996
9097 async toNostrEvent ( pubkey ?: string ) : Promise < NostrEvent > {
91- this . content = JSON . stringify ( {
98+ const payload = {
9299 proofs : this . proofs . map ( this . cleanProof ) ,
93100 mint : this . mint ,
94- } ) ;
101+ del : this . deletedTokens ?? [ ]
102+ } ;
103+ this . content = JSON . stringify ( payload ) ;
95104
96105 const user = await this . ndk ! . signer ! . user ( ) ;
97106 await this . encrypt ( user , undefined , "nip44" ) ;
@@ -118,6 +127,20 @@ export class NDKCashuToken extends NDKEvent {
118127 return this . _mint ;
119128 }
120129
130+ /**
131+ * Tokens that were deleted by the creation of this token.
132+ */
133+ get deletedTokens ( ) : NDKEventId [ ] {
134+ return this . _deletes ;
135+ }
136+
137+ /**
138+ * Marks tokens that were deleted by the creation of this token.
139+ */
140+ set deletedTokens ( tokenIds : NDKEventId [ ] ) {
141+ this . _deletes = tokenIds ;
142+ }
143+
121144 get amount ( ) : number {
122145 return proofsTotalBalance ( this . proofs ) ;
123146 }
0 commit comments