@unicitylabs/nostr-js-sdk 0.2.0 → 0.2.1
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/README.md +29 -7
- package/dist/browser/index.js +35 -5
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/index.min.js +1 -1
- package/dist/browser/index.min.js.map +1 -1
- package/dist/browser/index.umd.js +35 -5
- package/dist/browser/index.umd.js.map +1 -1
- package/dist/browser/index.umd.min.js +5 -5
- package/dist/browser/index.umd.min.js.map +1 -1
- package/dist/cjs/token/TokenTransferProtocol.js +35 -5
- package/dist/cjs/token/TokenTransferProtocol.js.map +1 -1
- package/dist/esm/token/TokenTransferProtocol.js +34 -5
- package/dist/esm/token/TokenTransferProtocol.js.map +1 -1
- package/dist/types/token/TokenTransferProtocol.d.ts +22 -3
- package/dist/types/token/TokenTransferProtocol.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -41,6 +41,7 @@ exports.createTokenTransferEvent = createTokenTransferEvent;
|
|
|
41
41
|
exports.parseTokenTransfer = parseTokenTransfer;
|
|
42
42
|
exports.getAmount = getAmount;
|
|
43
43
|
exports.getSymbol = getSymbol;
|
|
44
|
+
exports.getReplyToEventId = getReplyToEventId;
|
|
44
45
|
exports.isTokenTransfer = isTokenTransfer;
|
|
45
46
|
exports.getRecipient = getRecipient;
|
|
46
47
|
exports.getSender = getSender;
|
|
@@ -58,16 +59,32 @@ const MESSAGE_PREFIX = 'token_transfer:';
|
|
|
58
59
|
* - ["type", "token_transfer"] - Event type
|
|
59
60
|
* - ["amount", "<amount>"] - Optional amount
|
|
60
61
|
* - ["symbol", "<symbol>"] - Optional token symbol
|
|
62
|
+
* - ["e", "<event_id>", "", "reply"] - Optional reply-to event (for payment request correlation)
|
|
61
63
|
* - Content: NIP-04 encrypted "token_transfer:{tokenJson}"
|
|
62
64
|
*
|
|
63
65
|
* @param keyManager Key manager with signing keys
|
|
64
66
|
* @param recipientPubkeyHex Recipient's public key (hex)
|
|
65
67
|
* @param tokenJson Token JSON string
|
|
66
|
-
* @param
|
|
67
|
-
* @param symbol Optional token symbol for metadata
|
|
68
|
+
* @param amountOrOptions Optional amount for metadata, or options object
|
|
69
|
+
* @param symbol Optional token symbol for metadata (ignored if options object used)
|
|
68
70
|
* @returns Signed event
|
|
69
71
|
*/
|
|
70
|
-
async function createTokenTransferEvent(keyManager, recipientPubkeyHex, tokenJson,
|
|
72
|
+
async function createTokenTransferEvent(keyManager, recipientPubkeyHex, tokenJson, amountOrOptions, symbol) {
|
|
73
|
+
// Parse options (support both old and new signatures)
|
|
74
|
+
let amount;
|
|
75
|
+
let tokenSymbol;
|
|
76
|
+
let replyToEventId;
|
|
77
|
+
if (amountOrOptions !== undefined && typeof amountOrOptions === 'object') {
|
|
78
|
+
// New options object signature
|
|
79
|
+
amount = amountOrOptions.amount;
|
|
80
|
+
tokenSymbol = amountOrOptions.symbol;
|
|
81
|
+
replyToEventId = amountOrOptions.replyToEventId;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
// Old positional arguments signature
|
|
85
|
+
amount = amountOrOptions;
|
|
86
|
+
tokenSymbol = symbol;
|
|
87
|
+
}
|
|
71
88
|
// Encrypt the token data
|
|
72
89
|
const message = MESSAGE_PREFIX + tokenJson;
|
|
73
90
|
const encryptedContent = await keyManager.encryptHex(message, recipientPubkeyHex);
|
|
@@ -79,8 +96,12 @@ async function createTokenTransferEvent(keyManager, recipientPubkeyHex, tokenJso
|
|
|
79
96
|
if (amount !== undefined) {
|
|
80
97
|
tags.push(['amount', String(amount)]);
|
|
81
98
|
}
|
|
82
|
-
if (
|
|
83
|
-
tags.push(['symbol',
|
|
99
|
+
if (tokenSymbol !== undefined) {
|
|
100
|
+
tags.push(['symbol', tokenSymbol]);
|
|
101
|
+
}
|
|
102
|
+
// Add optional reply-to event reference (for payment request correlation)
|
|
103
|
+
if (replyToEventId !== undefined && replyToEventId.length > 0) {
|
|
104
|
+
tags.push(['e', replyToEventId, '', 'reply']);
|
|
84
105
|
}
|
|
85
106
|
const event = Event_js_1.Event.create(keyManager, {
|
|
86
107
|
kind: EventKinds.TOKEN_TRANSFER,
|
|
@@ -168,6 +189,15 @@ function getAmount(event) {
|
|
|
168
189
|
function getSymbol(event) {
|
|
169
190
|
return event.getTagValue('symbol');
|
|
170
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Get the reply-to event ID from a token transfer event.
|
|
194
|
+
* Used to correlate token transfers with payment requests.
|
|
195
|
+
* @param event Token transfer event
|
|
196
|
+
* @returns Referenced event ID, or undefined if not present
|
|
197
|
+
*/
|
|
198
|
+
function getReplyToEventId(event) {
|
|
199
|
+
return event.getTagValue('e');
|
|
200
|
+
}
|
|
171
201
|
/**
|
|
172
202
|
* Check if an event is a token transfer.
|
|
173
203
|
* @param event Event to check
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenTransferProtocol.js","sourceRoot":"","sources":["../../../src/token/TokenTransferProtocol.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"TokenTransferProtocol.js","sourceRoot":"","sources":["../../../src/token/TokenTransferProtocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,16 +16,32 @@ const MESSAGE_PREFIX = 'token_transfer:';
|
|
|
16
16
|
* - ["type", "token_transfer"] - Event type
|
|
17
17
|
* - ["amount", "<amount>"] - Optional amount
|
|
18
18
|
* - ["symbol", "<symbol>"] - Optional token symbol
|
|
19
|
+
* - ["e", "<event_id>", "", "reply"] - Optional reply-to event (for payment request correlation)
|
|
19
20
|
* - Content: NIP-04 encrypted "token_transfer:{tokenJson}"
|
|
20
21
|
*
|
|
21
22
|
* @param keyManager Key manager with signing keys
|
|
22
23
|
* @param recipientPubkeyHex Recipient's public key (hex)
|
|
23
24
|
* @param tokenJson Token JSON string
|
|
24
|
-
* @param
|
|
25
|
-
* @param symbol Optional token symbol for metadata
|
|
25
|
+
* @param amountOrOptions Optional amount for metadata, or options object
|
|
26
|
+
* @param symbol Optional token symbol for metadata (ignored if options object used)
|
|
26
27
|
* @returns Signed event
|
|
27
28
|
*/
|
|
28
|
-
export async function createTokenTransferEvent(keyManager, recipientPubkeyHex, tokenJson,
|
|
29
|
+
export async function createTokenTransferEvent(keyManager, recipientPubkeyHex, tokenJson, amountOrOptions, symbol) {
|
|
30
|
+
// Parse options (support both old and new signatures)
|
|
31
|
+
let amount;
|
|
32
|
+
let tokenSymbol;
|
|
33
|
+
let replyToEventId;
|
|
34
|
+
if (amountOrOptions !== undefined && typeof amountOrOptions === 'object') {
|
|
35
|
+
// New options object signature
|
|
36
|
+
amount = amountOrOptions.amount;
|
|
37
|
+
tokenSymbol = amountOrOptions.symbol;
|
|
38
|
+
replyToEventId = amountOrOptions.replyToEventId;
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
// Old positional arguments signature
|
|
42
|
+
amount = amountOrOptions;
|
|
43
|
+
tokenSymbol = symbol;
|
|
44
|
+
}
|
|
29
45
|
// Encrypt the token data
|
|
30
46
|
const message = MESSAGE_PREFIX + tokenJson;
|
|
31
47
|
const encryptedContent = await keyManager.encryptHex(message, recipientPubkeyHex);
|
|
@@ -37,8 +53,12 @@ export async function createTokenTransferEvent(keyManager, recipientPubkeyHex, t
|
|
|
37
53
|
if (amount !== undefined) {
|
|
38
54
|
tags.push(['amount', String(amount)]);
|
|
39
55
|
}
|
|
40
|
-
if (
|
|
41
|
-
tags.push(['symbol',
|
|
56
|
+
if (tokenSymbol !== undefined) {
|
|
57
|
+
tags.push(['symbol', tokenSymbol]);
|
|
58
|
+
}
|
|
59
|
+
// Add optional reply-to event reference (for payment request correlation)
|
|
60
|
+
if (replyToEventId !== undefined && replyToEventId.length > 0) {
|
|
61
|
+
tags.push(['e', replyToEventId, '', 'reply']);
|
|
42
62
|
}
|
|
43
63
|
const event = Event.create(keyManager, {
|
|
44
64
|
kind: EventKinds.TOKEN_TRANSFER,
|
|
@@ -126,6 +146,15 @@ export function getAmount(event) {
|
|
|
126
146
|
export function getSymbol(event) {
|
|
127
147
|
return event.getTagValue('symbol');
|
|
128
148
|
}
|
|
149
|
+
/**
|
|
150
|
+
* Get the reply-to event ID from a token transfer event.
|
|
151
|
+
* Used to correlate token transfers with payment requests.
|
|
152
|
+
* @param event Token transfer event
|
|
153
|
+
* @returns Referenced event ID, or undefined if not present
|
|
154
|
+
*/
|
|
155
|
+
export function getReplyToEventId(event) {
|
|
156
|
+
return event.getTagValue('e');
|
|
157
|
+
}
|
|
129
158
|
/**
|
|
130
159
|
* Check if an event is a token transfer.
|
|
131
160
|
* @param event Event to check
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenTransferProtocol.js","sourceRoot":"","sources":["../../../src/token/TokenTransferProtocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAC7C,OAAO,KAAK,UAAU,MAAM,2BAA2B,CAAC;AAExD,yCAAyC;AACzC,MAAM,cAAc,GAAG,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"TokenTransferProtocol.js","sourceRoot":"","sources":["../../../src/token/TokenTransferProtocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,17 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { NostrKeyManager } from '../NostrKeyManager.js';
|
|
6
6
|
import { Event } from '../protocol/Event.js';
|
|
7
|
+
/**
|
|
8
|
+
* Options for creating a token transfer event.
|
|
9
|
+
*/
|
|
10
|
+
export interface TokenTransferOptions {
|
|
11
|
+
/** Optional amount for metadata */
|
|
12
|
+
amount?: number | bigint;
|
|
13
|
+
/** Optional token symbol for metadata */
|
|
14
|
+
symbol?: string;
|
|
15
|
+
/** Optional event ID this transfer is responding to (e.g., payment request) */
|
|
16
|
+
replyToEventId?: string;
|
|
17
|
+
}
|
|
7
18
|
/**
|
|
8
19
|
* Create a token transfer event.
|
|
9
20
|
*
|
|
@@ -14,16 +25,17 @@ import { Event } from '../protocol/Event.js';
|
|
|
14
25
|
* - ["type", "token_transfer"] - Event type
|
|
15
26
|
* - ["amount", "<amount>"] - Optional amount
|
|
16
27
|
* - ["symbol", "<symbol>"] - Optional token symbol
|
|
28
|
+
* - ["e", "<event_id>", "", "reply"] - Optional reply-to event (for payment request correlation)
|
|
17
29
|
* - Content: NIP-04 encrypted "token_transfer:{tokenJson}"
|
|
18
30
|
*
|
|
19
31
|
* @param keyManager Key manager with signing keys
|
|
20
32
|
* @param recipientPubkeyHex Recipient's public key (hex)
|
|
21
33
|
* @param tokenJson Token JSON string
|
|
22
|
-
* @param
|
|
23
|
-
* @param symbol Optional token symbol for metadata
|
|
34
|
+
* @param amountOrOptions Optional amount for metadata, or options object
|
|
35
|
+
* @param symbol Optional token symbol for metadata (ignored if options object used)
|
|
24
36
|
* @returns Signed event
|
|
25
37
|
*/
|
|
26
|
-
export declare function createTokenTransferEvent(keyManager: NostrKeyManager, recipientPubkeyHex: string, tokenJson: string,
|
|
38
|
+
export declare function createTokenTransferEvent(keyManager: NostrKeyManager, recipientPubkeyHex: string, tokenJson: string, amountOrOptions?: number | bigint | TokenTransferOptions, symbol?: string): Promise<Event>;
|
|
27
39
|
/**
|
|
28
40
|
* Parse a token transfer event.
|
|
29
41
|
* Decrypts and decompresses the token data.
|
|
@@ -46,6 +58,13 @@ export declare function getAmount(event: Event): bigint | undefined;
|
|
|
46
58
|
* @returns Symbol, or undefined if not specified
|
|
47
59
|
*/
|
|
48
60
|
export declare function getSymbol(event: Event): string | undefined;
|
|
61
|
+
/**
|
|
62
|
+
* Get the reply-to event ID from a token transfer event.
|
|
63
|
+
* Used to correlate token transfers with payment requests.
|
|
64
|
+
* @param event Token transfer event
|
|
65
|
+
* @returns Referenced event ID, or undefined if not present
|
|
66
|
+
*/
|
|
67
|
+
export declare function getReplyToEventId(event: Event): string | undefined;
|
|
49
68
|
/**
|
|
50
69
|
* Check if an event is a token transfer.
|
|
51
70
|
* @param event Event to check
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenTransferProtocol.d.ts","sourceRoot":"","sources":["../../../src/token/TokenTransferProtocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAM7C
|
|
1
|
+
{"version":3,"file":"TokenTransferProtocol.d.ts","sourceRoot":"","sources":["../../../src/token/TokenTransferProtocol.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAM7C;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,wBAAwB,CAC5C,UAAU,EAAE,eAAe,EAC3B,kBAAkB,EAAE,MAAM,EAC1B,SAAS,EAAE,MAAM,EACjB,eAAe,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,oBAAoB,EACxD,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,KAAK,CAAC,CA+ChB;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,eAAe,GAC1B,OAAO,CAAC,MAAM,CAAC,CA8CjB;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAU1D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAE1D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAElE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAKrD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,GAAG,SAAS,CAE7D;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAE9C"}
|