@rotateprotocol/sdk 1.0.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.
Files changed (74) hide show
  1. package/README.md +453 -0
  2. package/dist/catalog.d.ts +112 -0
  3. package/dist/catalog.d.ts.map +1 -0
  4. package/dist/catalog.js +210 -0
  5. package/dist/catalog.js.map +1 -0
  6. package/dist/components/CheckoutForm.d.ts +86 -0
  7. package/dist/components/CheckoutForm.d.ts.map +1 -0
  8. package/dist/components/CheckoutForm.js +332 -0
  9. package/dist/components/CheckoutForm.js.map +1 -0
  10. package/dist/components/HostedCheckout.d.ts +57 -0
  11. package/dist/components/HostedCheckout.d.ts.map +1 -0
  12. package/dist/components/HostedCheckout.js +414 -0
  13. package/dist/components/HostedCheckout.js.map +1 -0
  14. package/dist/components/PaymentButton.d.ts +80 -0
  15. package/dist/components/PaymentButton.d.ts.map +1 -0
  16. package/dist/components/PaymentButton.js +210 -0
  17. package/dist/components/PaymentButton.js.map +1 -0
  18. package/dist/components/RotateProvider.d.ts +115 -0
  19. package/dist/components/RotateProvider.d.ts.map +1 -0
  20. package/dist/components/RotateProvider.js +264 -0
  21. package/dist/components/RotateProvider.js.map +1 -0
  22. package/dist/components/index.d.ts +17 -0
  23. package/dist/components/index.d.ts.map +1 -0
  24. package/dist/components/index.js +27 -0
  25. package/dist/components/index.js.map +1 -0
  26. package/dist/embed.d.ts +85 -0
  27. package/dist/embed.d.ts.map +1 -0
  28. package/dist/embed.js +313 -0
  29. package/dist/embed.js.map +1 -0
  30. package/dist/hooks.d.ts +156 -0
  31. package/dist/hooks.d.ts.map +1 -0
  32. package/dist/hooks.js +280 -0
  33. package/dist/hooks.js.map +1 -0
  34. package/dist/idl/rotate_connect.json +2572 -0
  35. package/dist/index.d.ts +505 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +1197 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/marketplace.d.ts +257 -0
  40. package/dist/marketplace.d.ts.map +1 -0
  41. package/dist/marketplace.js +433 -0
  42. package/dist/marketplace.js.map +1 -0
  43. package/dist/platform.d.ts +234 -0
  44. package/dist/platform.d.ts.map +1 -0
  45. package/dist/platform.js +268 -0
  46. package/dist/platform.js.map +1 -0
  47. package/dist/react.d.ts +140 -0
  48. package/dist/react.d.ts.map +1 -0
  49. package/dist/react.js +429 -0
  50. package/dist/react.js.map +1 -0
  51. package/dist/store.d.ts +213 -0
  52. package/dist/store.d.ts.map +1 -0
  53. package/dist/store.js +404 -0
  54. package/dist/store.js.map +1 -0
  55. package/dist/webhooks.d.ts +149 -0
  56. package/dist/webhooks.d.ts.map +1 -0
  57. package/dist/webhooks.js +371 -0
  58. package/dist/webhooks.js.map +1 -0
  59. package/package.json +114 -0
  60. package/src/catalog.ts +299 -0
  61. package/src/components/CheckoutForm.tsx +608 -0
  62. package/src/components/HostedCheckout.tsx +675 -0
  63. package/src/components/PaymentButton.tsx +348 -0
  64. package/src/components/RotateProvider.tsx +370 -0
  65. package/src/components/index.ts +26 -0
  66. package/src/embed.ts +408 -0
  67. package/src/hooks.ts +518 -0
  68. package/src/idl/rotate_connect.json +2572 -0
  69. package/src/index.ts +1538 -0
  70. package/src/marketplace.ts +642 -0
  71. package/src/platform.ts +403 -0
  72. package/src/react.ts +459 -0
  73. package/src/store.ts +577 -0
  74. package/src/webhooks.ts +506 -0
@@ -0,0 +1,371 @@
1
+ "use strict";
2
+ /**
3
+ * Rotate Protocol Webhooks
4
+ *
5
+ * Listen to on-chain payment events and receive notifications.
6
+ * This does NOT change the P2P nature - webhooks are notifications only.
7
+ *
8
+ * @packageDocumentation
9
+ */
10
+ var __importDefault = (this && this.__importDefault) || function (mod) {
11
+ return (mod && mod.__esModule) ? mod : { "default": mod };
12
+ };
13
+ Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.WebhookSender = exports.EventListener = void 0;
15
+ exports.verifyWebhookSignature = verifyWebhookSignature;
16
+ exports.createWebhookSignature = createWebhookSignature;
17
+ const web3_js_1 = require("@solana/web3.js");
18
+ const anchor_1 = require("@coral-xyz/anchor");
19
+ const index_1 = require("./index");
20
+ const rotate_connect_json_1 = __importDefault(require("./idl/rotate_connect.json"));
21
+ // ==================== SIGNATURE VERIFICATION ====================
22
+ /**
23
+ * Verify webhook signature (for webhook receivers)
24
+ */
25
+ async function verifyWebhookSignature(payload, signature, secret) {
26
+ const encoder = new TextEncoder();
27
+ const key = await crypto.subtle.importKey('raw', encoder.encode(secret), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
28
+ const expectedSig = await crypto.subtle.sign('HMAC', key, encoder.encode(payload));
29
+ const expectedHex = Array.from(new Uint8Array(expectedSig))
30
+ .map(b => b.toString(16).padStart(2, '0'))
31
+ .join('');
32
+ return signature === expectedHex;
33
+ }
34
+ /**
35
+ * Create webhook signature (for webhook senders)
36
+ */
37
+ async function createWebhookSignature(payload, secret) {
38
+ const encoder = new TextEncoder();
39
+ const key = await crypto.subtle.importKey('raw', encoder.encode(secret), { name: 'HMAC', hash: 'SHA-256' }, false, ['sign']);
40
+ const signature = await crypto.subtle.sign('HMAC', key, encoder.encode(payload));
41
+ return Array.from(new Uint8Array(signature))
42
+ .map(b => b.toString(16).padStart(2, '0'))
43
+ .join('');
44
+ }
45
+ /**
46
+ * On-chain event listener
47
+ * Polls the blockchain for new transactions and emits events
48
+ */
49
+ class EventListener {
50
+ constructor(options) {
51
+ this.handlers = new Map();
52
+ this.lastSignature = null;
53
+ this.isRunning = false;
54
+ this.pollInterval = null;
55
+ this.options = options;
56
+ this.programId = index_1.PROGRAM_ID;
57
+ this.coder = new anchor_1.BorshCoder(rotate_connect_json_1.default);
58
+ const endpoint = options.rpcEndpoint ||
59
+ (options.network === 'mainnet-beta'
60
+ ? 'https://api.mainnet-beta.solana.com'
61
+ : 'https://api.devnet.solana.com');
62
+ this.connection = new web3_js_1.Connection(endpoint, 'confirmed');
63
+ }
64
+ /**
65
+ * Subscribe to an event type
66
+ */
67
+ on(eventType, handler) {
68
+ const handlers = this.handlers.get(eventType) || [];
69
+ handlers.push(handler);
70
+ this.handlers.set(eventType, handlers);
71
+ }
72
+ /**
73
+ * Unsubscribe from an event type
74
+ */
75
+ off(eventType, handler) {
76
+ const handlers = this.handlers.get(eventType) || [];
77
+ const index = handlers.indexOf(handler);
78
+ if (index > -1) {
79
+ handlers.splice(index, 1);
80
+ this.handlers.set(eventType, handlers);
81
+ }
82
+ }
83
+ /**
84
+ * Subscribe to all events
85
+ */
86
+ onAny(handler) {
87
+ const allTypes = [
88
+ 'protocol.initialized',
89
+ 'protocol.updated',
90
+ 'platform.created',
91
+ 'platform.updated',
92
+ 'merchant.created',
93
+ 'merchant.updated',
94
+ 'payment.completed',
95
+ 'payment.pending',
96
+ 'link.created',
97
+ 'link.created.usd',
98
+ 'link.paid',
99
+ 'link.paid.usd',
100
+ 'link.cancelled',
101
+ 'link.closed',
102
+ 'link.expired',
103
+ ];
104
+ allTypes.forEach(type => this.on(type, handler));
105
+ }
106
+ /**
107
+ * Start listening for events
108
+ */
109
+ start() {
110
+ if (this.isRunning)
111
+ return;
112
+ this.isRunning = true;
113
+ this.poll();
114
+ this.pollInterval = setInterval(() => this.poll(), this.options.pollIntervalMs || 5000);
115
+ }
116
+ /**
117
+ * Stop listening for events
118
+ */
119
+ stop() {
120
+ this.isRunning = false;
121
+ if (this.pollInterval) {
122
+ clearInterval(this.pollInterval);
123
+ this.pollInterval = null;
124
+ }
125
+ }
126
+ /**
127
+ * Poll for new transactions
128
+ */
129
+ async poll() {
130
+ try {
131
+ const signatures = await this.connection.getSignaturesForAddress(this.programId, {
132
+ limit: 20,
133
+ until: this.lastSignature || undefined,
134
+ });
135
+ if (signatures.length === 0)
136
+ return;
137
+ // Update last signature
138
+ this.lastSignature = signatures[0].signature;
139
+ // Process transactions in order (oldest first)
140
+ for (const sig of signatures.reverse()) {
141
+ await this.processTransaction(sig.signature);
142
+ }
143
+ }
144
+ catch (error) {
145
+ console.error('Error polling for events:', error);
146
+ }
147
+ }
148
+ /**
149
+ * Process a transaction and emit decoded events
150
+ */
151
+ async processTransaction(signature) {
152
+ try {
153
+ const tx = await this.connection.getParsedTransaction(signature, {
154
+ maxSupportedTransactionVersion: 0,
155
+ });
156
+ if (!tx?.meta?.logMessages)
157
+ return;
158
+ const events = [];
159
+ const timestamp = tx.blockTime ? tx.blockTime * 1000 : Date.now();
160
+ // Decode Anchor events from "Program data:" log entries
161
+ for (const log of tx.meta.logMessages) {
162
+ if (!log.startsWith('Program data: '))
163
+ continue;
164
+ try {
165
+ const base64Data = log.slice('Program data: '.length);
166
+ const decoded = this.coder.events.decode(base64Data);
167
+ if (!decoded)
168
+ continue;
169
+ const webhookType = this.anchorEventToWebhookType(decoded.name);
170
+ if (!webhookType)
171
+ continue;
172
+ events.push({
173
+ id: `evt_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`,
174
+ type: webhookType,
175
+ timestamp,
176
+ transactionSignature: signature,
177
+ data: this.mapEventData(decoded.name, decoded.data),
178
+ });
179
+ }
180
+ catch {
181
+ // Skip events that can't be decoded
182
+ }
183
+ }
184
+ for (const event of events) {
185
+ // Apply filters
186
+ if (this.options.merchantId && event.data.merchantId !== this.options.merchantId) {
187
+ continue;
188
+ }
189
+ if (this.options.platformId && event.data.platformId !== this.options.platformId) {
190
+ continue;
191
+ }
192
+ // Emit to handlers
193
+ await this.emit(event);
194
+ }
195
+ }
196
+ catch (error) {
197
+ console.error('Error processing transaction:', error);
198
+ }
199
+ }
200
+ /** Map Anchor event name to webhook event type */
201
+ anchorEventToWebhookType(name) {
202
+ const map = {
203
+ 'ProtocolInitialized': 'protocol.initialized',
204
+ 'ProtocolUpdated': 'protocol.updated',
205
+ 'PlatformCreated': 'platform.created',
206
+ 'PlatformUpdated': 'platform.updated',
207
+ 'MerchantCreated': 'merchant.created',
208
+ 'MerchantUpdated': 'merchant.updated',
209
+ 'PaymentProcessed': 'payment.completed',
210
+ 'LinkCreated': 'link.created',
211
+ 'LinkCreatedUsd': 'link.created.usd',
212
+ 'LinkPaid': 'link.paid',
213
+ 'LinkPaidUsd': 'link.paid.usd',
214
+ 'LinkCancelled': 'link.cancelled',
215
+ 'LinkClosed': 'link.closed',
216
+ };
217
+ return map[name] || null;
218
+ }
219
+ /** Map decoded Anchor event data to WebhookEventData */
220
+ mapEventData(eventName, data) {
221
+ const result = {};
222
+ // ID field: link ID for Link* events, platform/merchant ID for others
223
+ if (data.id !== undefined) {
224
+ if (eventName.startsWith('Link')) {
225
+ result.linkId = Number(data.id);
226
+ }
227
+ else if (eventName.startsWith('Platform')) {
228
+ result.platformId = Number(data.id);
229
+ }
230
+ else if (eventName.startsWith('Merchant')) {
231
+ result.merchantId = Number(data.id);
232
+ }
233
+ }
234
+ // Common entity IDs (Anchor camelCases snake_case fields)
235
+ if (data.merchantId !== undefined)
236
+ result.merchantId = Number(data.merchantId);
237
+ if (data.platformId !== undefined)
238
+ result.platformId = Number(data.platformId);
239
+ // Wallet addresses
240
+ if (data.payer)
241
+ result.payerWallet = data.payer.toString();
242
+ if (data.wallet)
243
+ result.merchantWallet = data.wallet.toString();
244
+ if (data.admin)
245
+ result.platformWallet = data.admin.toString();
246
+ if (data.treasury)
247
+ result.treasuryWallet = data.treasury.toString();
248
+ // Amounts
249
+ if (data.amount !== undefined)
250
+ result.amountLamports = Number(data.amount);
251
+ if (data.amountUsd !== undefined)
252
+ result.amountUsd = Number(data.amountUsd) / 1000000;
253
+ if (data.usdAmount !== undefined)
254
+ result.amountUsd = Number(data.usdAmount) / 1000000;
255
+ if (data.merchantAmount !== undefined)
256
+ result.amountTokens = Number(data.merchantAmount);
257
+ // Fees
258
+ if (data.protocolFee !== undefined)
259
+ result.protocolFee = Number(data.protocolFee);
260
+ if (data.platformFee !== undefined)
261
+ result.platformFee = Number(data.platformFee);
262
+ if (data.feeBps !== undefined)
263
+ result.feeBps = Number(data.feeBps);
264
+ // Tips
265
+ if (data.tip !== undefined)
266
+ result.tipAmount = Number(data.tip);
267
+ if (data.tipUsd !== undefined)
268
+ result.tipAmount = Number(data.tipUsd) / 1000000;
269
+ // Order reference
270
+ if (data.orderRef !== undefined)
271
+ result.orderRef = data.orderRef.toString();
272
+ // Token type (Anchor deserializes enums as { variant: {} })
273
+ if (data.tokenType !== undefined) {
274
+ const variant = typeof data.tokenType === 'object' ? Object.keys(data.tokenType)[0] : String(data.tokenType);
275
+ result.tokenType = variant;
276
+ if (variant === 'sol' || variant === 'Sol')
277
+ result.currency = 'SOL';
278
+ else if (variant === 'usdc' || variant === 'Usdc')
279
+ result.currency = 'USDC';
280
+ else if (variant === 'usdt' || variant === 'Usdt')
281
+ result.currency = 'USDT';
282
+ else if (variant === 'usd' || variant === 'Usd')
283
+ result.currency = 'USD';
284
+ }
285
+ // Status (same enum pattern)
286
+ if (data.status !== undefined) {
287
+ result.status = typeof data.status === 'object' ? Object.keys(data.status)[0] : String(data.status);
288
+ }
289
+ // Active flag
290
+ if (data.active !== undefined)
291
+ result.active = Boolean(data.active);
292
+ return result;
293
+ }
294
+ /**
295
+ * Emit event to handlers
296
+ */
297
+ async emit(event) {
298
+ const handlers = this.handlers.get(event.type) || [];
299
+ for (const handler of handlers) {
300
+ try {
301
+ await handler(event);
302
+ }
303
+ catch (error) {
304
+ console.error('Error in event handler:', error);
305
+ }
306
+ }
307
+ }
308
+ }
309
+ exports.EventListener = EventListener;
310
+ /**
311
+ * Send webhooks to registered endpoints
312
+ */
313
+ class WebhookSender {
314
+ constructor(options = {}) {
315
+ this.options = {
316
+ retryCount: options.retryCount ?? 3,
317
+ retryDelayMs: options.retryDelayMs ?? 1000,
318
+ timeoutMs: options.timeoutMs ?? 10000,
319
+ };
320
+ }
321
+ /**
322
+ * Send webhook to endpoint
323
+ */
324
+ async send(config, event) {
325
+ const payload = JSON.stringify(event);
326
+ const signature = await createWebhookSignature(payload, config.secret);
327
+ for (let attempt = 0; attempt <= this.options.retryCount; attempt++) {
328
+ try {
329
+ const controller = new AbortController();
330
+ const timeout = setTimeout(() => controller.abort(), this.options.timeoutMs);
331
+ const response = await fetch(config.url, {
332
+ method: 'POST',
333
+ headers: {
334
+ 'Content-Type': 'application/json',
335
+ 'X-Rotate-Signature': signature,
336
+ 'X-Rotate-Event': event.type,
337
+ 'X-Rotate-Timestamp': event.timestamp.toString(),
338
+ 'X-Rotate-Delivery-Attempt': attempt.toString(),
339
+ },
340
+ body: payload,
341
+ signal: controller.signal,
342
+ });
343
+ clearTimeout(timeout);
344
+ if (response.ok) {
345
+ return true;
346
+ }
347
+ // Retry on 5xx errors
348
+ if (response.status >= 500 && attempt < this.options.retryCount) {
349
+ await this.delay(this.options.retryDelayMs * Math.pow(2, attempt));
350
+ continue;
351
+ }
352
+ return false;
353
+ }
354
+ catch (error) {
355
+ if (attempt < this.options.retryCount) {
356
+ await this.delay(this.options.retryDelayMs * Math.pow(2, attempt));
357
+ continue;
358
+ }
359
+ return false;
360
+ }
361
+ }
362
+ return false;
363
+ }
364
+ delay(ms) {
365
+ return new Promise(resolve => setTimeout(resolve, ms));
366
+ }
367
+ }
368
+ exports.WebhookSender = WebhookSender;
369
+ // ==================== EXPORTS ====================
370
+ exports.default = EventListener;
371
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../src/webhooks.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,114 @@
1
+ {
2
+ "name": "@rotateprotocol/sdk",
3
+ "version": "1.0.0",
4
+ "description": "Rotate Protocol SDK - The easiest way to accept payments on Solana. Non-custodial, instant settlement.",
5
+ "main": "dist/index.js",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": "./dist/index.mjs",
11
+ "require": "./dist/index.js",
12
+ "types": "./dist/index.d.ts"
13
+ },
14
+ "./react": {
15
+ "import": "./dist/react.mjs",
16
+ "require": "./dist/react.js",
17
+ "types": "./dist/react.d.ts"
18
+ },
19
+ "./components": {
20
+ "import": "./dist/components/index.mjs",
21
+ "require": "./dist/components/index.js",
22
+ "types": "./dist/components/index.d.ts"
23
+ },
24
+ "./webhooks": {
25
+ "import": "./dist/webhooks.mjs",
26
+ "require": "./dist/webhooks.js",
27
+ "types": "./dist/webhooks.d.ts"
28
+ },
29
+ "./embed": {
30
+ "import": "./dist/embed.mjs",
31
+ "require": "./dist/embed.js",
32
+ "types": "./dist/embed.d.ts"
33
+ },
34
+ "./store": {
35
+ "import": "./dist/store.mjs",
36
+ "require": "./dist/store.js",
37
+ "types": "./dist/store.d.ts"
38
+ },
39
+ "./marketplace": {
40
+ "import": "./dist/marketplace.mjs",
41
+ "require": "./dist/marketplace.js",
42
+ "types": "./dist/marketplace.d.ts"
43
+ },
44
+ "./hooks": {
45
+ "import": "./dist/hooks.mjs",
46
+ "require": "./dist/hooks.js",
47
+ "types": "./dist/hooks.d.ts"
48
+ }
49
+ },
50
+ "files": [
51
+ "dist",
52
+ "src"
53
+ ],
54
+ "scripts": {
55
+ "build": "tsc",
56
+ "dev": "tsc --watch",
57
+ "lint": "eslint src --ext .ts,.tsx",
58
+ "test": "npx ts-node test/sdk.test.ts",
59
+ "prepublishOnly": "npm run build"
60
+ },
61
+ "keywords": [
62
+ "solana",
63
+ "payments",
64
+ "p2p",
65
+ "non-custodial",
66
+ "defi",
67
+ "usdc",
68
+ "usdt",
69
+ "checkout",
70
+ "crypto-payments",
71
+ "marketplace",
72
+ "ecommerce",
73
+ "storefront",
74
+ "shopping-cart",
75
+ "multi-vendor",
76
+ "solana-payments"
77
+ ],
78
+ "author": "Rotate Protocol",
79
+ "license": "MIT",
80
+ "repository": {
81
+ "type": "git",
82
+ "url": "git+https://github.com/Draf11/rotate-protocol.git"
83
+ },
84
+ "bugs": {
85
+ "url": "https://github.com/Draf11/rotate-protocol/issues"
86
+ },
87
+ "homepage": "https://rotate.app",
88
+ "dependencies": {
89
+ "@coral-xyz/anchor": ">=0.32.0",
90
+ "@solana/spl-token": "^0.4.0",
91
+ "@solana/web3.js": ">=1.90.0"
92
+ },
93
+ "devDependencies": {
94
+ "@solana/wallet-adapter-react": "^0.15.39",
95
+ "@types/node": "^20.10.0",
96
+ "@types/react": "^19.2.10",
97
+ "ts-node": "^10.9.2",
98
+ "typescript": "^5.3.0"
99
+ },
100
+ "peerDependencies": {
101
+ "@coral-xyz/anchor": ">=0.32.0",
102
+ "@solana/web3.js": ">=1.90.0",
103
+ "react": ">=17.0.0",
104
+ "@solana/wallet-adapter-react": ">=0.15.0"
105
+ },
106
+ "peerDependenciesMeta": {
107
+ "react": {
108
+ "optional": true
109
+ },
110
+ "@solana/wallet-adapter-react": {
111
+ "optional": true
112
+ }
113
+ }
114
+ }