nostr-core 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/nip58.js CHANGED
@@ -134,71 +134,147 @@ export function parseProfileBadges(event) {
134
134
  return badges;
135
135
  }
136
136
  /**
137
- * Create a badge request event template (kind 8433) with optional proof.
138
- * This is a custom request flow the requester publishes a request referencing
139
- * a badge definition, along with a proof that qualifies them for the badge.
140
- * The badge issuer can then verify the proof and award the badge.
137
+ * Create a kind 30058 badge request event template (addressable).
138
+ * The `d` tag is the badge address, ensuring one active request per badge per user.
139
+ * Withdrawal is done via NIP-09 deletion (kind 5).
141
140
  */
142
141
  export function createBadgeRequestTemplate(request) {
143
- const tags = [['a', request.badgeAddress]];
144
- if (request.proof) {
145
- switch (request.proof.type) {
146
- case 'pow':
147
- tags.push(['proof', 'pow', String(request.proof.difficulty), request.proof.nonce]);
148
- break;
149
- case 'payment':
150
- tags.push(['proof', 'payment', request.proof.preimage, request.proof.invoice]);
151
- break;
152
- case 'membership':
153
- tags.push(['proof', 'membership', request.proof.groupId, request.proof.membershipEventId]);
154
- break;
142
+ const tags = [
143
+ ['d', request.badgeAddress],
144
+ ['a', request.badgeAddress, ...(request.relayUrl ? [request.relayUrl] : [])],
145
+ ['p', request.issuerPubkey],
146
+ ];
147
+ if (request.proofs) {
148
+ for (const proof of request.proofs) {
149
+ tags.push(['proof', proof]);
155
150
  }
156
151
  }
157
152
  return {
158
- kind: 8433,
153
+ kind: 30058,
159
154
  tags,
160
155
  content: request.content ?? '',
161
156
  created_at: Math.floor(Date.now() / 1000),
162
157
  };
163
158
  }
164
159
  /**
165
- * Parse a badge request event (kind 8433).
160
+ * Create and sign a badge request event.
161
+ */
162
+ export function createBadgeRequestEvent(request, secretKey) {
163
+ return finalizeEvent(createBadgeRequestTemplate(request), secretKey);
164
+ }
165
+ /**
166
+ * Parse a kind 30058 badge request event.
166
167
  */
167
168
  export function parseBadgeRequest(event) {
168
- const result = { badgeAddress: '' };
169
+ let badgeAddress = '';
170
+ let issuerPubkey = '';
171
+ let relayUrl;
172
+ const proofs = [];
169
173
  for (const tag of event.tags) {
170
- if (tag[0] === 'a')
171
- result.badgeAddress = tag[1];
174
+ switch (tag[0]) {
175
+ case 'd':
176
+ badgeAddress = tag[1] ?? '';
177
+ break;
178
+ case 'a':
179
+ if (!badgeAddress && tag[1])
180
+ badgeAddress = tag[1];
181
+ if (tag[2])
182
+ relayUrl = tag[2];
183
+ break;
184
+ case 'p':
185
+ issuerPubkey = tag[1] ?? '';
186
+ break;
187
+ case 'proof':
188
+ if (tag[1])
189
+ proofs.push(tag[1]);
190
+ break;
191
+ }
172
192
  }
173
- const proof = extractBadgeProof(event);
174
- if (proof)
175
- result.proof = proof;
176
- if (event.content)
177
- result.content = event.content;
178
- return result;
193
+ return {
194
+ badgeAddress,
195
+ issuerPubkey,
196
+ ...(proofs.length > 0 ? { proofs } : {}),
197
+ ...(event.content ? { content: event.content } : {}),
198
+ ...(relayUrl ? { relayUrl } : {}),
199
+ };
200
+ }
201
+ /**
202
+ * Create a kind 30059 badge denial event template (addressable).
203
+ * The `d` tag is the request event id, ensuring one denial per request.
204
+ * Revocation is done via NIP-09 deletion (kind 5).
205
+ */
206
+ export function createBadgeDenialTemplate(denial) {
207
+ return {
208
+ kind: 30059,
209
+ tags: [
210
+ ['d', denial.requestEventId],
211
+ ['a', denial.badgeAddress, ...(denial.relayUrl ? [denial.relayUrl] : [])],
212
+ ['e', denial.requestEventId, ...(denial.relayUrl ? [denial.relayUrl] : [])],
213
+ ['p', denial.requesterPubkey],
214
+ ],
215
+ content: denial.reason ?? '',
216
+ created_at: Math.floor(Date.now() / 1000),
217
+ };
218
+ }
219
+ /**
220
+ * Create and sign a badge denial event.
221
+ */
222
+ export function createBadgeDenialEvent(denial, secretKey) {
223
+ return finalizeEvent(createBadgeDenialTemplate(denial), secretKey);
179
224
  }
180
225
  /**
181
- * Extract a badge proof from event tags.
226
+ * Parse a kind 30059 badge denial event.
182
227
  */
183
- export function extractBadgeProof(event) {
184
- const proofTag = event.tags.find(t => t[0] === 'proof');
185
- if (!proofTag)
186
- return undefined;
187
- switch (proofTag[1]) {
188
- case 'pow':
189
- return { type: 'pow', difficulty: parseInt(proofTag[2], 10), nonce: proofTag[3] };
190
- case 'payment':
191
- return { type: 'payment', preimage: proofTag[2], invoice: proofTag[3] };
192
- case 'membership':
193
- return { type: 'membership', groupId: proofTag[2], membershipEventId: proofTag[3] };
194
- default:
195
- return undefined;
228
+ export function parseBadgeDenial(event) {
229
+ let requestEventId = '';
230
+ let badgeAddress = '';
231
+ let requesterPubkey = '';
232
+ let relayUrl;
233
+ for (const tag of event.tags) {
234
+ switch (tag[0]) {
235
+ case 'd':
236
+ requestEventId = tag[1] ?? '';
237
+ break;
238
+ case 'a':
239
+ badgeAddress = tag[1] ?? '';
240
+ if (tag[2])
241
+ relayUrl = tag[2];
242
+ break;
243
+ case 'p':
244
+ requesterPubkey = tag[1] ?? '';
245
+ break;
246
+ }
196
247
  }
248
+ return {
249
+ requestEventId,
250
+ badgeAddress,
251
+ requesterPubkey,
252
+ ...(event.content ? { reason: event.content } : {}),
253
+ ...(relayUrl ? { relayUrl } : {}),
254
+ };
197
255
  }
198
256
  /**
199
- * @deprecated Use `extractBadgeProof` instead.
257
+ * Resolve the state of a badge request.
258
+ * Priority: Fulfilled (kind 8 award exists) > Denied (kind 30059 exists) > Pending.
200
259
  */
201
- export const verifyBadgeProof = extractBadgeProof;
260
+ export function resolveBadgeRequestState(requestEvent, badgeAwards, badgeDenials) {
261
+ const badgeAddress = requestEvent.tags.find(t => t[0] === 'd')?.[1] ?? '';
262
+ const requesterPubkey = requestEvent.pubkey;
263
+ // 1. Check for fulfillment — kind 8 award from issuer to requester for this badge
264
+ const fulfilled = badgeAwards.some(award => award.kind === 8 &&
265
+ award.tags.some(t => t[0] === 'a' && t[1] === badgeAddress) &&
266
+ award.tags.some(t => t[0] === 'p' && t[1] === requesterPubkey));
267
+ if (fulfilled)
268
+ return 'fulfilled';
269
+ // 2. Check for denial — kind 30059 referencing this request
270
+ const denied = badgeDenials.some(denial => denial.kind === 30059 &&
271
+ denial.tags.some(t => t[0] === 'e' && t[1] === requestEvent.id));
272
+ if (denied)
273
+ return 'denied';
274
+ // 3. Otherwise pending
275
+ return 'pending';
276
+ }
277
+ // ── Badge Utilities ────────────────────────────────────────────────────
202
278
  /**
203
279
  * Validate that a badge award event references the correct badge definition.
204
280
  */
@@ -211,54 +287,9 @@ export function validateBadgeAward(award, definition) {
211
287
  const defIdentifier = definition.tags.find(t => t[0] === 'd')?.[1];
212
288
  if (!defIdentifier)
213
289
  return false;
214
- // Address format: kind:pubkey:identifier
215
290
  const expectedAddress = `30009:${definition.pubkey}:${defIdentifier}`;
216
291
  return awardAddress === expectedAddress;
217
292
  }
218
- /**
219
- * Create a badge acceptance event template (kind 8434).
220
- * Published by the badge issuer to accept a badge request and implicitly award.
221
- */
222
- export function createBadgeAcceptanceTemplate(acceptance) {
223
- return {
224
- kind: 8434,
225
- tags: [
226
- ['e', acceptance.requestEventId],
227
- ['a', acceptance.badgeAddress],
228
- ['p', acceptance.recipientPubkey],
229
- ],
230
- content: '',
231
- created_at: Math.floor(Date.now() / 1000),
232
- };
233
- }
234
- /**
235
- * Create and sign a badge acceptance event.
236
- */
237
- export function createBadgeAcceptanceEvent(acceptance, secretKey) {
238
- return finalizeEvent(createBadgeAcceptanceTemplate(acceptance), secretKey);
239
- }
240
- /**
241
- * Create a badge rejection event template (kind 8435).
242
- * Published by the badge issuer to reject a badge request.
243
- */
244
- export function createBadgeRejectionTemplate(rejection) {
245
- return {
246
- kind: 8435,
247
- tags: [
248
- ['e', rejection.requestEventId],
249
- ['a', rejection.badgeAddress],
250
- ],
251
- content: rejection.reason ?? '',
252
- created_at: Math.floor(Date.now() / 1000),
253
- };
254
- }
255
- /**
256
- * Create and sign a badge rejection event.
257
- */
258
- export function createBadgeRejectionEvent(rejection, secretKey) {
259
- return finalizeEvent(createBadgeRejectionTemplate(rejection), secretKey);
260
- }
261
- // ── Badge Utility: Build address from definition ───────────────────────
262
293
  /**
263
294
  * Build a badge address string (`30009:pubkey:identifier`) from a badge definition event.
264
295
  */
package/dist/nip58.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"nip58.js","sourceRoot":"","sources":["../src/nip58.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nip58.js","sourceRoot":"","sources":["../src/nip58.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,132 @@
1
+ import { type NostrEvent, type EventTemplate } from './event.js';
2
+ export declare const WALLET_KIND = 17375;
3
+ export declare const TOKEN_KIND = 7375;
4
+ export declare const HISTORY_KIND = 7376;
5
+ export declare const QUOTE_KIND = 7374;
6
+ /** A single Cashu proof (token unit). */
7
+ export type CashuProof = {
8
+ id: string;
9
+ amount: number;
10
+ secret: string;
11
+ C: string;
12
+ };
13
+ /** Decrypted content of a kind 7375 token event. */
14
+ export type CashuToken = {
15
+ mint: string;
16
+ proofs: CashuProof[];
17
+ unit?: string;
18
+ del?: string[];
19
+ };
20
+ /** Decrypted content of a kind 17375 wallet event. */
21
+ export type CashuWallet = {
22
+ privkey: string;
23
+ mints: string[];
24
+ };
25
+ /** An event reference inside a history entry. */
26
+ export type CashuHistoryRef = {
27
+ id: string;
28
+ relay?: string;
29
+ marker: 'created' | 'destroyed' | 'redeemed';
30
+ };
31
+ /** Decrypted content of a kind 7376 history event. */
32
+ export type CashuHistory = {
33
+ direction: 'in' | 'out';
34
+ amount: string;
35
+ unit: string;
36
+ events: CashuHistoryRef[];
37
+ };
38
+ /** Parameters for a kind 7374 quote event. */
39
+ export type CashuQuote = {
40
+ quoteId: string;
41
+ mint: string;
42
+ expiration: number;
43
+ };
44
+ /**
45
+ * Create a kind 17375 wallet event template (unsigned).
46
+ *
47
+ * The wallet event is a replaceable event storing the wallet's private key
48
+ * and mint list, NIP-44 encrypted to self.
49
+ */
50
+ export declare function createWalletEventTemplate(wallet: CashuWallet, secretKey: Uint8Array): EventTemplate;
51
+ /**
52
+ * Create and sign a kind 17375 wallet event.
53
+ */
54
+ export declare function createWalletEvent(wallet: CashuWallet, secretKey: Uint8Array): NostrEvent;
55
+ /**
56
+ * Decrypt and parse a kind 17375 wallet event.
57
+ */
58
+ export declare function parseWalletEvent(event: NostrEvent, secretKey: Uint8Array): CashuWallet;
59
+ /**
60
+ * Create a kind 7375 token event template (unsigned).
61
+ *
62
+ * Each token event stores unspent Cashu proofs for a single mint,
63
+ * NIP-44 encrypted to self.
64
+ */
65
+ export declare function createTokenEventTemplate(token: CashuToken, secretKey: Uint8Array): EventTemplate;
66
+ /**
67
+ * Create and sign a kind 7375 token event.
68
+ */
69
+ export declare function createTokenEvent(token: CashuToken, secretKey: Uint8Array): NostrEvent;
70
+ /**
71
+ * Decrypt and parse a kind 7375 token event.
72
+ */
73
+ export declare function parseTokenEvent(event: NostrEvent, secretKey: Uint8Array): CashuToken;
74
+ /**
75
+ * Create a kind 7376 spending history event template (unsigned).
76
+ *
77
+ * Records a wallet transaction. Event references with "redeemed" marker
78
+ * are placed in unencrypted tags; all others are NIP-44 encrypted.
79
+ */
80
+ export declare function createHistoryEventTemplate(history: CashuHistory, secretKey: Uint8Array): EventTemplate;
81
+ /**
82
+ * Create and sign a kind 7376 spending history event.
83
+ */
84
+ export declare function createHistoryEvent(history: CashuHistory, secretKey: Uint8Array): NostrEvent;
85
+ /**
86
+ * Decrypt and parse a kind 7376 spending history event.
87
+ */
88
+ export declare function parseHistoryEvent(event: NostrEvent, secretKey: Uint8Array): CashuHistory;
89
+ /**
90
+ * Create a kind 7374 quote event template (unsigned).
91
+ *
92
+ * Tracks a pending mint quote while a Lightning payment is in-flight.
93
+ * Uses NIP-40 expiration tag.
94
+ */
95
+ export declare function createQuoteEventTemplate(quote: CashuQuote, secretKey: Uint8Array): EventTemplate;
96
+ /**
97
+ * Create and sign a kind 7374 quote event.
98
+ */
99
+ export declare function createQuoteEvent(quote: CashuQuote, secretKey: Uint8Array): NostrEvent;
100
+ /**
101
+ * Decrypt and parse a kind 7374 quote event.
102
+ */
103
+ export declare function parseQuoteEvent(event: NostrEvent, secretKey: Uint8Array): CashuQuote;
104
+ /**
105
+ * Create a kind 5 deletion event template for spent token events.
106
+ *
107
+ * Per NIP-60, the deletion MUST include `["k", "7375"]` for filtering.
108
+ */
109
+ export declare function createTokenDeleteTemplate(tokenEventIds: string[]): EventTemplate;
110
+ /**
111
+ * Create and sign a kind 5 deletion event for spent token events.
112
+ */
113
+ export declare function createTokenDeleteEvent(tokenEventIds: string[], secretKey: Uint8Array): NostrEvent;
114
+ /**
115
+ * Build filters to fetch a user's wallet and all unspent token events.
116
+ */
117
+ export declare function getWalletFilters(pubkey: string): {
118
+ kinds: number[];
119
+ authors: string[];
120
+ }[];
121
+ /**
122
+ * Build a filter to fetch a user's spending history.
123
+ */
124
+ export declare function getHistoryFilter(pubkey: string): {
125
+ kinds: number[];
126
+ authors: string[];
127
+ };
128
+ /**
129
+ * Sum the total amount of a set of Cashu proofs.
130
+ */
131
+ export declare function getProofsBalance(proofs: CashuProof[]): number;
132
+ //# sourceMappingURL=nip60.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nip60.d.ts","sourceRoot":"","sources":["../src/nip60.ts"],"names":[],"mappings":"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"}