@ordanetwork/sdk 1.0.1 → 1.1.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/README.md +350 -34
- package/dist/browser/api/JWT.d.ts +41 -0
- package/dist/browser/api/JWT.d.ts.map +1 -0
- package/dist/browser/api/JWT.js +59 -0
- package/dist/browser/api/JWT.js.map +1 -0
- package/dist/browser/api/{OffRampAPI.d.ts → OffRamp.d.ts} +2 -2
- package/dist/browser/api/OffRamp.d.ts.map +1 -0
- package/dist/{esm/api/OffRampAPI.js → browser/api/OffRamp.js} +11 -2
- package/dist/browser/api/OffRamp.js.map +1 -0
- package/dist/{esm/api/OnRampAPI.d.ts → browser/api/OnRamp.d.ts} +2 -2
- package/dist/browser/api/OnRamp.d.ts.map +1 -0
- package/dist/{esm/api/OnRampAPI.js → browser/api/OnRamp.js} +9 -2
- package/dist/browser/api/OnRamp.js.map +1 -0
- package/dist/browser/api/{QuoteAPI.d.ts → Quote.d.ts} +2 -2
- package/dist/browser/api/Quote.d.ts.map +1 -0
- package/dist/browser/api/Quote.js +24 -0
- package/dist/browser/api/Quote.js.map +1 -0
- package/dist/{esm/api/RecipientAPI.d.ts → browser/api/Recipient.d.ts} +2 -2
- package/dist/browser/api/Recipient.d.ts.map +1 -0
- package/dist/browser/api/{RecipientAPI.js → Recipient.js} +2 -2
- package/dist/browser/api/Recipient.js.map +1 -0
- package/dist/{esm/api/TransactionAPI.d.ts → browser/api/Transaction.d.ts} +2 -2
- package/dist/browser/api/Transaction.d.ts.map +1 -0
- package/dist/browser/api/{TransactionAPI.js → Transaction.js} +2 -2
- package/dist/browser/api/Transaction.js.map +1 -0
- package/dist/browser/auth/jwt.d.ts +16 -0
- package/dist/browser/auth/jwt.d.ts.map +1 -0
- package/dist/browser/auth/jwt.js +24 -0
- package/dist/browser/auth/jwt.js.map +1 -0
- package/dist/browser/http/client.d.ts +3 -2
- package/dist/browser/http/client.d.ts.map +1 -1
- package/dist/browser/http/client.js +12 -4
- package/dist/browser/http/client.js.map +1 -1
- package/dist/browser/index.d.ts +26 -16
- package/dist/browser/index.d.ts.map +1 -1
- package/dist/browser/index.js +51 -25
- package/dist/browser/index.js.map +1 -1
- package/dist/browser/types/index.d.ts +7 -1
- package/dist/browser/types/index.d.ts.map +1 -1
- package/dist/browser/types/index.js +1 -0
- package/dist/browser/types/index.js.map +1 -1
- package/dist/browser/types/jwt.d.ts +37 -0
- package/dist/browser/types/jwt.d.ts.map +1 -0
- package/dist/browser/types/jwt.js +9 -0
- package/dist/browser/types/jwt.js.map +1 -0
- package/dist/browser/types/onramp.d.ts +6 -1
- package/dist/browser/types/onramp.d.ts.map +1 -1
- package/dist/cjs/api/JWT.d.ts +41 -0
- package/dist/cjs/api/JWT.d.ts.map +1 -0
- package/dist/cjs/api/JWT.js +63 -0
- package/dist/cjs/api/JWT.js.map +1 -0
- package/dist/{esm/api/OffRampAPI.d.ts → cjs/api/OffRamp.d.ts} +2 -2
- package/dist/cjs/api/OffRamp.d.ts.map +1 -0
- package/dist/cjs/api/{OffRampAPI.js → OffRamp.js} +13 -4
- package/dist/cjs/api/OffRamp.js.map +1 -0
- package/dist/{browser/api/OnRampAPI.d.ts → cjs/api/OnRamp.d.ts} +2 -2
- package/dist/cjs/api/OnRamp.d.ts.map +1 -0
- package/dist/cjs/api/{OnRampAPI.js → OnRamp.js} +11 -4
- package/dist/cjs/api/OnRamp.js.map +1 -0
- package/dist/{types/api/QuoteAPI.d.ts → cjs/api/Quote.d.ts} +2 -2
- package/dist/cjs/api/Quote.d.ts.map +1 -0
- package/dist/cjs/api/Quote.js +28 -0
- package/dist/cjs/api/Quote.js.map +1 -0
- package/dist/{types/api/RecipientAPI.d.ts → cjs/api/Recipient.d.ts} +2 -2
- package/dist/cjs/api/Recipient.d.ts.map +1 -0
- package/dist/cjs/api/{RecipientAPI.js → Recipient.js} +4 -4
- package/dist/cjs/api/Recipient.js.map +1 -0
- package/dist/{types/api/TransactionAPI.d.ts → cjs/api/Transaction.d.ts} +2 -2
- package/dist/cjs/api/Transaction.d.ts.map +1 -0
- package/dist/cjs/api/{TransactionAPI.js → Transaction.js} +4 -4
- package/dist/cjs/api/Transaction.js.map +1 -0
- package/dist/cjs/auth/jwt.d.ts +16 -0
- package/dist/cjs/auth/jwt.d.ts.map +1 -0
- package/dist/cjs/auth/jwt.js +28 -0
- package/dist/cjs/auth/jwt.js.map +1 -0
- package/dist/cjs/http/client.d.ts +3 -2
- package/dist/cjs/http/client.d.ts.map +1 -1
- package/dist/cjs/http/client.js +12 -4
- package/dist/cjs/http/client.js.map +1 -1
- package/dist/cjs/index.d.ts +26 -16
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +59 -31
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/index.d.ts +7 -1
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +15 -0
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/jwt.d.ts +37 -0
- package/dist/cjs/types/jwt.d.ts.map +1 -0
- package/dist/cjs/types/jwt.js +10 -0
- package/dist/cjs/types/jwt.js.map +1 -0
- package/dist/cjs/types/onramp.d.ts +6 -1
- package/dist/cjs/types/onramp.d.ts.map +1 -1
- package/dist/esm/api/JWT.d.ts +41 -0
- package/dist/esm/api/JWT.d.ts.map +1 -0
- package/dist/esm/api/JWT.js +59 -0
- package/dist/esm/api/JWT.js.map +1 -0
- package/dist/{cjs/api/OffRampAPI.d.ts → esm/api/OffRamp.d.ts} +2 -2
- package/dist/esm/api/OffRamp.d.ts.map +1 -0
- package/dist/{browser/api/OffRampAPI.js → esm/api/OffRamp.js} +11 -2
- package/dist/esm/api/OffRamp.js.map +1 -0
- package/dist/{cjs/api/OnRampAPI.d.ts → esm/api/OnRamp.d.ts} +2 -2
- package/dist/esm/api/OnRamp.d.ts.map +1 -0
- package/dist/{browser/api/OnRampAPI.js → esm/api/OnRamp.js} +9 -2
- package/dist/esm/api/OnRamp.js.map +1 -0
- package/dist/esm/api/{QuoteAPI.d.ts → Quote.d.ts} +2 -2
- package/dist/esm/api/Quote.d.ts.map +1 -0
- package/dist/esm/api/Quote.js +24 -0
- package/dist/esm/api/Quote.js.map +1 -0
- package/dist/{cjs/api/RecipientAPI.d.ts → esm/api/Recipient.d.ts} +2 -2
- package/dist/esm/api/Recipient.d.ts.map +1 -0
- package/dist/esm/api/{RecipientAPI.js → Recipient.js} +2 -2
- package/dist/esm/api/Recipient.js.map +1 -0
- package/dist/{browser/api/TransactionAPI.d.ts → esm/api/Transaction.d.ts} +2 -2
- package/dist/esm/api/Transaction.d.ts.map +1 -0
- package/dist/esm/api/{TransactionAPI.js → Transaction.js} +2 -2
- package/dist/esm/api/Transaction.js.map +1 -0
- package/dist/esm/auth/jwt.d.ts +16 -0
- package/dist/esm/auth/jwt.d.ts.map +1 -0
- package/dist/esm/auth/jwt.js +24 -0
- package/dist/esm/auth/jwt.js.map +1 -0
- package/dist/esm/http/client.d.ts +3 -2
- package/dist/esm/http/client.d.ts.map +1 -1
- package/dist/esm/http/client.js +12 -4
- package/dist/esm/http/client.js.map +1 -1
- package/dist/esm/index.d.ts +26 -16
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +51 -25
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/index.d.ts +7 -1
- package/dist/esm/types/index.d.ts.map +1 -1
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/jwt.d.ts +37 -0
- package/dist/esm/types/jwt.d.ts.map +1 -0
- package/dist/esm/types/jwt.js +9 -0
- package/dist/esm/types/jwt.js.map +1 -0
- package/dist/esm/types/onramp.d.ts +6 -1
- package/dist/esm/types/onramp.d.ts.map +1 -1
- package/dist/types/api/JWT.d.ts +41 -0
- package/dist/types/api/JWT.d.ts.map +1 -0
- package/dist/types/api/{OffRampAPI.d.ts → OffRamp.d.ts} +2 -2
- package/dist/types/api/OffRamp.d.ts.map +1 -0
- package/dist/types/api/{OnRampAPI.d.ts → OnRamp.d.ts} +2 -2
- package/dist/types/api/OnRamp.d.ts.map +1 -0
- package/dist/{cjs/api/QuoteAPI.d.ts → types/api/Quote.d.ts} +2 -2
- package/dist/types/api/Quote.d.ts.map +1 -0
- package/dist/{browser/api/RecipientAPI.d.ts → types/api/Recipient.d.ts} +2 -2
- package/dist/types/api/Recipient.d.ts.map +1 -0
- package/dist/{cjs/api/TransactionAPI.d.ts → types/api/Transaction.d.ts} +2 -2
- package/dist/types/api/Transaction.d.ts.map +1 -0
- package/dist/types/auth/jwt.d.ts +16 -0
- package/dist/types/auth/jwt.d.ts.map +1 -0
- package/dist/types/http/client.d.ts +3 -2
- package/dist/types/http/client.d.ts.map +1 -1
- package/dist/types/index.d.ts +26 -16
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +7 -1
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/jwt.d.ts +37 -0
- package/dist/types/types/jwt.d.ts.map +1 -0
- package/dist/types/types/onramp.d.ts +6 -1
- package/dist/types/types/onramp.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/browser/api/OffRampAPI.d.ts.map +0 -1
- package/dist/browser/api/OffRampAPI.js.map +0 -1
- package/dist/browser/api/OnRampAPI.d.ts.map +0 -1
- package/dist/browser/api/OnRampAPI.js.map +0 -1
- package/dist/browser/api/QuoteAPI.d.ts.map +0 -1
- package/dist/browser/api/QuoteAPI.js +0 -17
- package/dist/browser/api/QuoteAPI.js.map +0 -1
- package/dist/browser/api/RecipientAPI.d.ts.map +0 -1
- package/dist/browser/api/RecipientAPI.js.map +0 -1
- package/dist/browser/api/TransactionAPI.d.ts.map +0 -1
- package/dist/browser/api/TransactionAPI.js.map +0 -1
- package/dist/cjs/api/OffRampAPI.d.ts.map +0 -1
- package/dist/cjs/api/OffRampAPI.js.map +0 -1
- package/dist/cjs/api/OnRampAPI.d.ts.map +0 -1
- package/dist/cjs/api/OnRampAPI.js.map +0 -1
- package/dist/cjs/api/QuoteAPI.d.ts.map +0 -1
- package/dist/cjs/api/QuoteAPI.js +0 -21
- package/dist/cjs/api/QuoteAPI.js.map +0 -1
- package/dist/cjs/api/RecipientAPI.d.ts.map +0 -1
- package/dist/cjs/api/RecipientAPI.js.map +0 -1
- package/dist/cjs/api/TransactionAPI.d.ts.map +0 -1
- package/dist/cjs/api/TransactionAPI.js.map +0 -1
- package/dist/esm/api/OffRampAPI.d.ts.map +0 -1
- package/dist/esm/api/OffRampAPI.js.map +0 -1
- package/dist/esm/api/OnRampAPI.d.ts.map +0 -1
- package/dist/esm/api/OnRampAPI.js.map +0 -1
- package/dist/esm/api/QuoteAPI.d.ts.map +0 -1
- package/dist/esm/api/QuoteAPI.js +0 -17
- package/dist/esm/api/QuoteAPI.js.map +0 -1
- package/dist/esm/api/RecipientAPI.d.ts.map +0 -1
- package/dist/esm/api/RecipientAPI.js.map +0 -1
- package/dist/esm/api/TransactionAPI.d.ts.map +0 -1
- package/dist/esm/api/TransactionAPI.js.map +0 -1
- package/dist/types/api/OffRampAPI.d.ts.map +0 -1
- package/dist/types/api/OnRampAPI.d.ts.map +0 -1
- package/dist/types/api/QuoteAPI.d.ts.map +0 -1
- package/dist/types/api/RecipientAPI.d.ts.map +0 -1
- package/dist/types/api/TransactionAPI.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -11,28 +11,29 @@ TypeScript SDK for cross-chain cryptocurrency payments with smart wallet support
|
|
|
11
11
|
```bash
|
|
12
12
|
npm install @ordanetwork/sdk
|
|
13
13
|
# or
|
|
14
|
-
yarn add @
|
|
14
|
+
yarn add @ordanetwork/sdk
|
|
15
15
|
# or
|
|
16
|
-
pnpm add @
|
|
16
|
+
pnpm add @ordanetwork/sdk
|
|
17
17
|
```
|
|
18
18
|
|
|
19
19
|
### Requirements
|
|
20
20
|
|
|
21
|
+
- **Node.js**: Version 18.0.0 or higher
|
|
21
22
|
- **TypeScript**: Version 5.0.0 or higher (if using TypeScript)
|
|
22
|
-
- **viem**: Required peer dependency for blockchain interactions
|
|
23
23
|
|
|
24
24
|
## Features
|
|
25
25
|
|
|
26
|
-
-
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
- 🔑 **Smart Wallets**: Integrated Alchemy Account Kit support for UserOperations
|
|
26
|
+
- **Dual Authentication**: HMAC (server-side) and JWT (client-side) authentication
|
|
27
|
+
- **Multi-chain Support**: Cross-chain transfers, off-ramp, and on-ramp operations
|
|
28
|
+
- **Smart Wallets**: Integrated Alchemy Account Kit support for UserOperations
|
|
29
|
+
- **Module Formats**: ESM and CommonJS
|
|
30
|
+
- **TypeScript**: Full type definitions included
|
|
32
31
|
|
|
33
32
|
|
|
34
33
|
## Quick Start
|
|
35
34
|
|
|
35
|
+
### Server-Side (HMAC Authentication)
|
|
36
|
+
|
|
36
37
|
```typescript
|
|
37
38
|
import { OrdaSDK } from '@ordanetwork/sdk';
|
|
38
39
|
|
|
@@ -40,26 +41,48 @@ const orda = new OrdaSDK({
|
|
|
40
41
|
clientId: 'your-client-id',
|
|
41
42
|
clientSecret: 'your-client-secret'
|
|
42
43
|
});
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Client-Side (JWT Authentication)
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
import { OrdaSDK } from '@ordanetwork/sdk';
|
|
50
|
+
|
|
51
|
+
const orda = new OrdaSDK({
|
|
52
|
+
token: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...'
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Create a recipient with smart wallet (no toAddress)
|
|
56
|
+
const recipientWithSmartWallet = await orda.recipients.create({
|
|
57
|
+
name: 'Test Recipient',
|
|
58
|
+
cryptoSettlementDetails: {
|
|
59
|
+
toChain: '8453',
|
|
60
|
+
toToken: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'
|
|
61
|
+
// No toAddress - will generate smart wallet
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
console.log('Smart wallet:', recipientWithSmartWallet.smartWallet?.address);
|
|
43
65
|
|
|
44
|
-
// Create a recipient
|
|
45
|
-
const
|
|
66
|
+
// Create a recipient with specific address
|
|
67
|
+
const recipientWithAddress = await orda.recipients.create({
|
|
46
68
|
name: 'Test Recipient',
|
|
47
69
|
cryptoSettlementDetails: {
|
|
48
|
-
toChain: '8453'
|
|
49
|
-
toToken: '
|
|
70
|
+
toChain: '8453',
|
|
71
|
+
toToken: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
|
|
72
|
+
toAddress: '0xYourRecipientAddress'
|
|
50
73
|
}
|
|
51
74
|
});
|
|
52
75
|
|
|
53
76
|
// Request a quote
|
|
54
77
|
const quote = await orda.quote.request({
|
|
55
|
-
fromChain: '1', // Ethereum
|
|
56
|
-
fromToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
78
|
+
fromChain: '1', // Ethereum mainnet
|
|
79
|
+
fromToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
|
|
57
80
|
fromAddress: '0xYourAddress',
|
|
58
81
|
intent: {
|
|
59
82
|
method: 'usd',
|
|
60
83
|
value: '100'
|
|
61
84
|
},
|
|
62
|
-
recipientId:
|
|
85
|
+
recipientId: recipientWithSmartWallet.recipientId
|
|
63
86
|
});
|
|
64
87
|
```
|
|
65
88
|
|
|
@@ -77,11 +100,11 @@ const { OrdaSDK } = require('@ordanetwork/sdk');
|
|
|
77
100
|
import { OrdaSDK } from '@ordanetwork/sdk';
|
|
78
101
|
```
|
|
79
102
|
|
|
80
|
-
##
|
|
103
|
+
## Authentication Methods
|
|
81
104
|
|
|
82
|
-
|
|
105
|
+
### HMAC Authentication (Server-Side)
|
|
83
106
|
|
|
84
|
-
|
|
107
|
+
Use HMAC authentication for server-to-server communication. This method should only be used in secure backend environments.
|
|
85
108
|
|
|
86
109
|
```javascript
|
|
87
110
|
const { OrdaSDK } = require('@ordanetwork/sdk');
|
|
@@ -90,16 +113,47 @@ const orda = new OrdaSDK({
|
|
|
90
113
|
clientId: process.env.ORDA_CLIENT_ID,
|
|
91
114
|
clientSecret: process.env.ORDA_CLIENT_SECRET
|
|
92
115
|
});
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**CRITICAL**: Never expose `clientSecret` in frontend code.
|
|
119
|
+
|
|
120
|
+
### JWT Authentication (Client-Side)
|
|
121
|
+
|
|
122
|
+
Use JWT authentication for client-side applications. Generate tokens on your backend and pass them to your frontend.
|
|
123
|
+
|
|
124
|
+
**Backend (Node.js):**
|
|
125
|
+
```typescript
|
|
126
|
+
import { OrdaSDK } from '@ordanetwork/sdk';
|
|
127
|
+
|
|
128
|
+
const orda = new OrdaSDK({
|
|
129
|
+
clientId: process.env.ORDA_CLIENT_ID,
|
|
130
|
+
clientSecret: process.env.ORDA_CLIENT_SECRET
|
|
131
|
+
});
|
|
132
|
+
|
|
133
|
+
const { token, expiresAt } = await orda.jwt.generate({
|
|
134
|
+
clientId: process.env.ORDA_CLIENT_ID,
|
|
135
|
+
clientSecret: process.env.ORDA_CLIENT_SECRET,
|
|
136
|
+
expiresIn: 3600,
|
|
137
|
+
permissions: ['quotes:read', 'offramp:read', 'onramp:read', 'transactions:read']
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
res.json({ token, expiresAt });
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Frontend (React/Vue/etc):**
|
|
144
|
+
```typescript
|
|
145
|
+
import { OrdaSDK } from '@ordanetwork/sdk';
|
|
146
|
+
|
|
147
|
+
const response = await fetch('/api/auth/token');
|
|
148
|
+
const { token } = await response.json();
|
|
149
|
+
|
|
150
|
+
const orda = new OrdaSDK({ token });
|
|
93
151
|
|
|
94
|
-
// Use the SDK to make API calls
|
|
95
152
|
const quote = await orda.quote.request({
|
|
96
153
|
fromChain: '1',
|
|
97
154
|
fromToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
|
|
98
|
-
fromAddress:
|
|
99
|
-
intent: {
|
|
100
|
-
method: 'usd',
|
|
101
|
-
value: '100'
|
|
102
|
-
},
|
|
155
|
+
fromAddress: userWalletAddress,
|
|
156
|
+
intent: { method: 'usd', value: '100' },
|
|
103
157
|
recipientId: 'recipient-id'
|
|
104
158
|
});
|
|
105
159
|
```
|
|
@@ -108,14 +162,51 @@ const quote = await orda.quote.request({
|
|
|
108
162
|
|
|
109
163
|
### Initialize SDK
|
|
110
164
|
|
|
165
|
+
**HMAC Mode (Server-Side):**
|
|
111
166
|
```typescript
|
|
112
167
|
const orda = new OrdaSDK({
|
|
113
168
|
clientId: 'your-client-id',
|
|
114
169
|
clientSecret: 'your-client-secret',
|
|
115
|
-
|
|
170
|
+
requestTimeout: 30000,
|
|
171
|
+
debug: false
|
|
172
|
+
});
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**JWT Mode (Client-Side):**
|
|
176
|
+
```typescript
|
|
177
|
+
const orda = new OrdaSDK({
|
|
178
|
+
token: 'your-jwt-token',
|
|
179
|
+
requestTimeout: 30000,
|
|
180
|
+
debug: false
|
|
116
181
|
});
|
|
117
182
|
```
|
|
118
183
|
|
|
184
|
+
### JWT API
|
|
185
|
+
|
|
186
|
+
Generate JWT tokens for client-side authentication.
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
const { token, expiresAt } = await orda.jwt.generate({
|
|
190
|
+
clientId: string,
|
|
191
|
+
clientSecret: string,
|
|
192
|
+
expiresIn?: number,
|
|
193
|
+
permissions?: JWTPermission[]
|
|
194
|
+
});
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Available Permissions:**
|
|
198
|
+
- `quotes:read`
|
|
199
|
+
- `offramp:read`
|
|
200
|
+
- `onramp:read`
|
|
201
|
+
- `transactions:read`
|
|
202
|
+
- `recipients:read`
|
|
203
|
+
- `recipients:write`
|
|
204
|
+
|
|
205
|
+
**Default Permissions:**
|
|
206
|
+
`['quotes:read', 'offramp:read', 'onramp:read', 'transactions:read', 'recipients:read']`
|
|
207
|
+
|
|
208
|
+
**Note:** HMAC authentication bypasses permission checks and has full access to all operations.
|
|
209
|
+
|
|
119
210
|
### Recipients API
|
|
120
211
|
|
|
121
212
|
```typescript
|
|
@@ -144,7 +235,7 @@ await orda.recipients.deactivate({
|
|
|
144
235
|
### Quote API
|
|
145
236
|
|
|
146
237
|
```typescript
|
|
147
|
-
// Request quote
|
|
238
|
+
// Request quote with recipient
|
|
148
239
|
await orda.quote.request({
|
|
149
240
|
fromChain: string,
|
|
150
241
|
fromToken: string,
|
|
@@ -153,7 +244,24 @@ await orda.quote.request({
|
|
|
153
244
|
method: 'usd' | 'fromAmount' | 'toAmount',
|
|
154
245
|
value: string
|
|
155
246
|
},
|
|
156
|
-
recipientId
|
|
247
|
+
recipientId: string,
|
|
248
|
+
timeout?: number
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
// OR request quote with inline settlement (no recipient needed)
|
|
252
|
+
await orda.quote.request({
|
|
253
|
+
fromChain: string,
|
|
254
|
+
fromToken: string,
|
|
255
|
+
fromAddress: string,
|
|
256
|
+
intent: {
|
|
257
|
+
method: 'usd' | 'fromAmount' | 'toAmount',
|
|
258
|
+
value: string
|
|
259
|
+
},
|
|
260
|
+
settlementDetails: {
|
|
261
|
+
toChain: string,
|
|
262
|
+
toToken: string,
|
|
263
|
+
toAddress: string
|
|
264
|
+
},
|
|
157
265
|
timeout?: number
|
|
158
266
|
});
|
|
159
267
|
```
|
|
@@ -182,15 +290,36 @@ await orda.transactions.waitForCompletion(transactionId, {
|
|
|
182
290
|
### Off-Ramp API (Crypto to Fiat)
|
|
183
291
|
|
|
184
292
|
```typescript
|
|
185
|
-
// Request off-ramp quote
|
|
293
|
+
// Request off-ramp quote with recipient
|
|
294
|
+
await orda.offRamp.requestQuote({
|
|
295
|
+
fromChain: string,
|
|
296
|
+
fromToken: string,
|
|
297
|
+
fromAddress: string,
|
|
298
|
+
intent: Intent,
|
|
299
|
+
recipientId: string
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
// OR request off-ramp quote with inline KYC/settlement (no recipient needed)
|
|
186
303
|
await orda.offRamp.requestQuote({
|
|
187
304
|
fromChain: string,
|
|
188
305
|
fromToken: string,
|
|
189
306
|
fromAddress: string,
|
|
190
307
|
intent: Intent,
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
308
|
+
kycInformation: {
|
|
309
|
+
taxId: string,
|
|
310
|
+
taxIdCountry: string,
|
|
311
|
+
email: string,
|
|
312
|
+
name: string
|
|
313
|
+
},
|
|
314
|
+
fiatSettlementDetails: {
|
|
315
|
+
toCurrency: string,
|
|
316
|
+
pixKey?: string,
|
|
317
|
+
bankAccount?: string,
|
|
318
|
+
bankBranch?: string,
|
|
319
|
+
bankAccountType?: string,
|
|
320
|
+
iban?: string,
|
|
321
|
+
cbuCvu?: string
|
|
322
|
+
}
|
|
194
323
|
});
|
|
195
324
|
|
|
196
325
|
// Get off-ramp status
|
|
@@ -203,13 +332,24 @@ await orda.offRamp.waitForCompletion(transactionId, options);
|
|
|
203
332
|
### On-Ramp API (Fiat to Crypto)
|
|
204
333
|
|
|
205
334
|
```typescript
|
|
206
|
-
// Request on-ramp quote
|
|
335
|
+
// Request on-ramp quote with recipient
|
|
207
336
|
await orda.onRamp.requestQuote({
|
|
208
337
|
fromCurrency: string,
|
|
209
338
|
intent: Intent,
|
|
210
339
|
recipientId: string
|
|
211
340
|
});
|
|
212
341
|
|
|
342
|
+
// OR request on-ramp quote with inline settlement (no recipient needed)
|
|
343
|
+
await orda.onRamp.requestQuote({
|
|
344
|
+
fromCurrency: string,
|
|
345
|
+
intent: Intent,
|
|
346
|
+
settlementDetails: {
|
|
347
|
+
toChain: string,
|
|
348
|
+
toToken: string,
|
|
349
|
+
toAddress: string
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
|
|
213
353
|
// Get on-ramp status
|
|
214
354
|
await orda.onRamp.getStatus(transactionId);
|
|
215
355
|
|
|
@@ -227,7 +367,10 @@ import {
|
|
|
227
367
|
OrdaSDK,
|
|
228
368
|
QuoteRequestParams,
|
|
229
369
|
TransactionStatus,
|
|
230
|
-
OrdaError
|
|
370
|
+
OrdaError,
|
|
371
|
+
JWTPermission,
|
|
372
|
+
GenerateJWTRequest,
|
|
373
|
+
GenerateJWTResponse
|
|
231
374
|
} from '@ordanetwork/sdk';
|
|
232
375
|
```
|
|
233
376
|
|
|
@@ -245,6 +388,179 @@ try {
|
|
|
245
388
|
}
|
|
246
389
|
```
|
|
247
390
|
|
|
391
|
+
## Smart Wallet Support
|
|
392
|
+
|
|
393
|
+
The SDK includes integrated support for Alchemy Account Kit smart wallets:
|
|
394
|
+
|
|
395
|
+
```typescript
|
|
396
|
+
// Generate a new private key
|
|
397
|
+
const { privateKey, address } = await orda.smartWallets.generatePrivateKey();
|
|
398
|
+
|
|
399
|
+
// Validate private key
|
|
400
|
+
const isValid = orda.smartWallets.validatePrivateKey(privateKey);
|
|
401
|
+
|
|
402
|
+
// Get address from private key
|
|
403
|
+
const address = await orda.smartWallets.getAddressFromPrivateKey(privateKey);
|
|
404
|
+
|
|
405
|
+
// Create project wallet
|
|
406
|
+
const wallet = await orda.smartWallets.createProjectWallet(
|
|
407
|
+
projectId,
|
|
408
|
+
privateKey,
|
|
409
|
+
chainId
|
|
410
|
+
);
|
|
411
|
+
|
|
412
|
+
// Create recipient wallet
|
|
413
|
+
const recipientWallet = await orda.smartWallets.createRecipientWallet(
|
|
414
|
+
recipientId,
|
|
415
|
+
privateKey,
|
|
416
|
+
chainId
|
|
417
|
+
);
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
## Complete Example
|
|
421
|
+
|
|
422
|
+
```javascript
|
|
423
|
+
const { OrdaSDK } = require('@ordanetwork/sdk');
|
|
424
|
+
|
|
425
|
+
async function main() {
|
|
426
|
+
const orda = new OrdaSDK({
|
|
427
|
+
clientId: process.env.ORDA_CLIENT_ID,
|
|
428
|
+
clientSecret: process.env.ORDA_CLIENT_SECRET,
|
|
429
|
+
debug: true,
|
|
430
|
+
});
|
|
431
|
+
|
|
432
|
+
// Create recipient with smart wallet
|
|
433
|
+
const recipient = await orda.recipients.create({
|
|
434
|
+
name: 'Test Recipient',
|
|
435
|
+
cryptoSettlementDetails: {
|
|
436
|
+
toChain: '8453', // Base
|
|
437
|
+
toToken: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', // USDC
|
|
438
|
+
},
|
|
439
|
+
});
|
|
440
|
+
console.log('Smart wallet:', recipient.smartWallet?.address);
|
|
441
|
+
|
|
442
|
+
// Request cross-chain quote with recipient
|
|
443
|
+
const quote = await orda.quote.request({
|
|
444
|
+
fromChain: '1', // Ethereum
|
|
445
|
+
fromToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
|
|
446
|
+
fromAddress: '0xYourAddress',
|
|
447
|
+
intent: {
|
|
448
|
+
method: 'usd',
|
|
449
|
+
value: '100',
|
|
450
|
+
},
|
|
451
|
+
recipientId: recipient.recipientId,
|
|
452
|
+
});
|
|
453
|
+
|
|
454
|
+
// OR request cross-chain quote with inline settlement (no recipient needed)
|
|
455
|
+
const inlineQuote = await orda.quote.request({
|
|
456
|
+
fromChain: '1', // Ethereum
|
|
457
|
+
fromToken: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', // USDC
|
|
458
|
+
fromAddress: '0xYourAddress',
|
|
459
|
+
intent: {
|
|
460
|
+
method: 'fromAmount',
|
|
461
|
+
value: '100000000', // 100 USDC (6 decimals)
|
|
462
|
+
},
|
|
463
|
+
settlementDetails: {
|
|
464
|
+
toChain: '137', // Polygon
|
|
465
|
+
toToken: '0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174', // USDC on Polygon
|
|
466
|
+
toAddress: '0xRecipientAddress',
|
|
467
|
+
},
|
|
468
|
+
});
|
|
469
|
+
|
|
470
|
+
// Monitor transaction
|
|
471
|
+
await orda.transactions.waitForCompletion(quote.transactionId, {
|
|
472
|
+
intervalMs: 10000,
|
|
473
|
+
timeoutMs: 600000,
|
|
474
|
+
onStatusUpdate: (status) => console.log('Status:', status),
|
|
475
|
+
});
|
|
476
|
+
|
|
477
|
+
// Off-ramp example (Crypto to Fiat)
|
|
478
|
+
const offRampRecipient = await orda.recipients.create({
|
|
479
|
+
name: 'Fiat Recipient',
|
|
480
|
+
fiatSettlementDetails: {
|
|
481
|
+
toCurrency: 'BRL',
|
|
482
|
+
pixKey: 'user@example.com',
|
|
483
|
+
},
|
|
484
|
+
kycInformation: {
|
|
485
|
+
taxId: '12345678901',
|
|
486
|
+
taxIdCountry: 'BRA',
|
|
487
|
+
email: 'user@example.com',
|
|
488
|
+
name: 'User Name',
|
|
489
|
+
},
|
|
490
|
+
});
|
|
491
|
+
|
|
492
|
+
const offRampQuote = await orda.offRamp.requestQuote({
|
|
493
|
+
fromChain: '8453',
|
|
494
|
+
fromToken: '0xE9185Ee218cae427aF7B9764A011bb89FeA761B4', // BRZ
|
|
495
|
+
fromAddress: '0xYourAddress',
|
|
496
|
+
intent: {
|
|
497
|
+
method: 'fromAmount',
|
|
498
|
+
value: '10000000000000000000', // 10 BRZ
|
|
499
|
+
},
|
|
500
|
+
recipientId: offRampRecipient.recipientId,
|
|
501
|
+
});
|
|
502
|
+
|
|
503
|
+
// OR off-ramp with inline KYC/settlement (no recipient needed)
|
|
504
|
+
const inlineOffRampQuote = await orda.offRamp.requestQuote({
|
|
505
|
+
fromChain: '8453',
|
|
506
|
+
fromToken: '0xE9185Ee218cae427aF7B9764A011bb89FeA761B4', // BRZ
|
|
507
|
+
fromAddress: '0xYourAddress',
|
|
508
|
+
intent: {
|
|
509
|
+
method: 'fromAmount',
|
|
510
|
+
value: '10000000000000000000', // 10 BRZ
|
|
511
|
+
},
|
|
512
|
+
kycInformation: {
|
|
513
|
+
taxId: '12345678901',
|
|
514
|
+
taxIdCountry: 'BRA',
|
|
515
|
+
email: 'user@example.com',
|
|
516
|
+
name: 'User Name',
|
|
517
|
+
},
|
|
518
|
+
fiatSettlementDetails: {
|
|
519
|
+
toCurrency: 'BRL',
|
|
520
|
+
pixKey: 'user@example.com',
|
|
521
|
+
},
|
|
522
|
+
});
|
|
523
|
+
|
|
524
|
+
// On-ramp example (Fiat to Crypto)
|
|
525
|
+
const onRampQuote = await orda.onRamp.requestQuote({
|
|
526
|
+
fromCurrency: 'BRL',
|
|
527
|
+
intent: {
|
|
528
|
+
method: 'fromAmount',
|
|
529
|
+
value: '100.00',
|
|
530
|
+
},
|
|
531
|
+
recipientId: recipient.recipientId,
|
|
532
|
+
});
|
|
533
|
+
console.log('PIX payment key:', onRampQuote.depositInstructions.pixKey);
|
|
534
|
+
|
|
535
|
+
// OR on-ramp with inline settlement (no recipient needed)
|
|
536
|
+
const inlineOnRampQuote = await orda.onRamp.requestQuote({
|
|
537
|
+
fromCurrency: 'BRL',
|
|
538
|
+
intent: {
|
|
539
|
+
method: 'fromAmount',
|
|
540
|
+
value: '100.00',
|
|
541
|
+
},
|
|
542
|
+
settlementDetails: {
|
|
543
|
+
toChain: '8453', // Base
|
|
544
|
+
toToken: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913', // USDC
|
|
545
|
+
toAddress: '0xRecipientAddress',
|
|
546
|
+
},
|
|
547
|
+
});
|
|
548
|
+
console.log('PIX payment key:', inlineOnRampQuote.depositInstructions.pixKey);
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
main().catch(console.error);
|
|
552
|
+
```
|
|
553
|
+
|
|
554
|
+
## Dependencies
|
|
555
|
+
|
|
556
|
+
The SDK uses the following runtime dependencies:
|
|
557
|
+
|
|
558
|
+
- `@aa-sdk/core` - Alchemy Account Abstraction SDK core
|
|
559
|
+
- `@account-kit/core` - Account Kit core functionality
|
|
560
|
+
- `@account-kit/infra` - Account Kit infrastructure
|
|
561
|
+
- `@account-kit/smart-contracts` - Smart contract implementations
|
|
562
|
+
- `viem` - TypeScript interface for Ethereum
|
|
563
|
+
|
|
248
564
|
## License
|
|
249
565
|
|
|
250
566
|
MIT
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { UniversalHttpClient } from '../http/client';
|
|
2
|
+
import { GenerateJWTRequest, GenerateJWTResponse } from '../types/jwt';
|
|
3
|
+
/**
|
|
4
|
+
* API wrapper for JWT authentication operations
|
|
5
|
+
*
|
|
6
|
+
* Handles generation of JWT tokens for client-side authentication.
|
|
7
|
+
* Note: "token" in this context refers to JWT (authentication), not ERC-20 tokens (assets).
|
|
8
|
+
*/
|
|
9
|
+
export declare class JWT {
|
|
10
|
+
private httpClient;
|
|
11
|
+
constructor(httpClient: UniversalHttpClient);
|
|
12
|
+
/**
|
|
13
|
+
* Generates a JWT for authentication using project credentials
|
|
14
|
+
*
|
|
15
|
+
* This endpoint does NOT use HMAC authentication - it directly validates
|
|
16
|
+
* the clientId and clientSecret to generate a JWT.
|
|
17
|
+
*
|
|
18
|
+
* @param params JWT generation parameters
|
|
19
|
+
* @returns JWT string and expiration timestamp
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* ```typescript
|
|
23
|
+
* // Create an unauthenticated client
|
|
24
|
+
* const client = new UniversalHttpClient('https://api.orda.network/v1');
|
|
25
|
+
*
|
|
26
|
+
* // Generate a JWT
|
|
27
|
+
* const jwtApi = new JWT(client);
|
|
28
|
+
* const { token, expiresAt } = await jwtApi.generate({
|
|
29
|
+
* clientId: 'proj_xxx',
|
|
30
|
+
* clientSecret: 'secret_yyy',
|
|
31
|
+
* expiresIn: 3600,
|
|
32
|
+
* permissions: ['quotes:read', 'transactions:read']
|
|
33
|
+
* });
|
|
34
|
+
*
|
|
35
|
+
* // Use the JWT with SDK
|
|
36
|
+
* const sdk = new OrdaSDK({ token });
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
generate(params: GenerateJWTRequest): Promise<GenerateJWTResponse>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=JWT.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JWT.d.ts","sourceRoot":"","sources":["../../../src/api/JWT.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEvE;;;;;GAKG;AACH,qBAAa,GAAG;IACF,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,mBAAmB;IAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,QAAQ,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAuBzE"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API wrapper for JWT authentication operations
|
|
3
|
+
*
|
|
4
|
+
* Handles generation of JWT tokens for client-side authentication.
|
|
5
|
+
* Note: "token" in this context refers to JWT (authentication), not ERC-20 tokens (assets).
|
|
6
|
+
*/
|
|
7
|
+
export class JWT {
|
|
8
|
+
constructor(httpClient) {
|
|
9
|
+
this.httpClient = httpClient;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Generates a JWT for authentication using project credentials
|
|
13
|
+
*
|
|
14
|
+
* This endpoint does NOT use HMAC authentication - it directly validates
|
|
15
|
+
* the clientId and clientSecret to generate a JWT.
|
|
16
|
+
*
|
|
17
|
+
* @param params JWT generation parameters
|
|
18
|
+
* @returns JWT string and expiration timestamp
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* // Create an unauthenticated client
|
|
23
|
+
* const client = new UniversalHttpClient('https://api.orda.network/v1');
|
|
24
|
+
*
|
|
25
|
+
* // Generate a JWT
|
|
26
|
+
* const jwtApi = new JWT(client);
|
|
27
|
+
* const { token, expiresAt } = await jwtApi.generate({
|
|
28
|
+
* clientId: 'proj_xxx',
|
|
29
|
+
* clientSecret: 'secret_yyy',
|
|
30
|
+
* expiresIn: 3600,
|
|
31
|
+
* permissions: ['quotes:read', 'transactions:read']
|
|
32
|
+
* });
|
|
33
|
+
*
|
|
34
|
+
* // Use the JWT with SDK
|
|
35
|
+
* const sdk = new OrdaSDK({ token });
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
async generate(params) {
|
|
39
|
+
const { clientId, clientSecret, expiresIn, permissions } = params;
|
|
40
|
+
const body = {};
|
|
41
|
+
if (expiresIn) {
|
|
42
|
+
body.expiresIn = expiresIn;
|
|
43
|
+
}
|
|
44
|
+
if (permissions) {
|
|
45
|
+
body.permissions = permissions;
|
|
46
|
+
}
|
|
47
|
+
const response = await this.httpClient.request({
|
|
48
|
+
path: '/tokens',
|
|
49
|
+
method: 'POST',
|
|
50
|
+
headers: {
|
|
51
|
+
'x-client-id': clientId,
|
|
52
|
+
'x-client-secret': clientSecret
|
|
53
|
+
},
|
|
54
|
+
body: Object.keys(body).length > 0 ? body : undefined
|
|
55
|
+
});
|
|
56
|
+
return response;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=JWT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"JWT.js","sourceRoot":"","sources":["../../../src/api/JWT.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AACH,MAAM,OAAO,GAAG;IACd,YAAoB,UAA+B;QAA/B,eAAU,GAAV,UAAU,CAAqB;IAAG,CAAC;IAEvD;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,KAAK,CAAC,QAAQ,CAAC,MAA0B;QACvC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;QAElE,MAAM,IAAI,GAAwB,EAAE,CAAC;QACrC,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,WAAW,EAAE,CAAC;YAChB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QACjC,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAsB;YAClE,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,aAAa,EAAE,QAAQ;gBACvB,iBAAiB,EAAE,YAAY;aAChC;YACD,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SACtD,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -11,7 +11,7 @@ export interface OffRampPollingOptions {
|
|
|
11
11
|
/**
|
|
12
12
|
* API wrapper for off-ramp (crypto to fiat) operations
|
|
13
13
|
*/
|
|
14
|
-
export declare class
|
|
14
|
+
export declare class OffRamp {
|
|
15
15
|
private httpClient;
|
|
16
16
|
constructor(httpClient: UniversalHttpClient);
|
|
17
17
|
/**
|
|
@@ -42,4 +42,4 @@ export declare class OffRampAPI {
|
|
|
42
42
|
*/
|
|
43
43
|
private sleep;
|
|
44
44
|
}
|
|
45
|
-
//# sourceMappingURL=
|
|
45
|
+
//# sourceMappingURL=OffRamp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OffRamp.d.ts","sourceRoot":"","sources":["../../../src/api/OffRamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAE1B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;CACtD;AAED;;GAEG;AACH,qBAAa,OAAO;IACN,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,mBAAmB;IAEnD;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAiB7E;;;;OAIG;IACG,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAItE;;;;;OAKG;IACG,iBAAiB,CACrB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,qBAAqB,CAAC;IAqCjC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* API wrapper for off-ramp (crypto to fiat) operations
|
|
3
3
|
*/
|
|
4
|
-
export class
|
|
4
|
+
export class OffRamp {
|
|
5
5
|
constructor(httpClient) {
|
|
6
6
|
this.httpClient = httpClient;
|
|
7
7
|
}
|
|
@@ -11,6 +11,15 @@ export class OffRampAPI {
|
|
|
11
11
|
* @returns Off-ramp quote response
|
|
12
12
|
*/
|
|
13
13
|
async requestQuote(params) {
|
|
14
|
+
// mutual exclusivity: either recipientId OR settlementDetails, not both
|
|
15
|
+
const hasRecipientId = !!params.recipientId;
|
|
16
|
+
const hasInlineData = !!(params.kycInformation && params.fiatSettlementDetails);
|
|
17
|
+
if (hasRecipientId && hasInlineData) {
|
|
18
|
+
throw new Error('Cannot provide both recipientId and inline KYC/settlement details');
|
|
19
|
+
}
|
|
20
|
+
if (!hasRecipientId && !hasInlineData) {
|
|
21
|
+
throw new Error('Must provide either recipientId OR both kycInformation and fiatSettlementDetails');
|
|
22
|
+
}
|
|
14
23
|
return this.httpClient.post('/offramp/quote', params);
|
|
15
24
|
}
|
|
16
25
|
/**
|
|
@@ -70,4 +79,4 @@ export class OffRampAPI {
|
|
|
70
79
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
71
80
|
}
|
|
72
81
|
}
|
|
73
|
-
//# sourceMappingURL=
|
|
82
|
+
//# sourceMappingURL=OffRamp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OffRamp.js","sourceRoot":"","sources":["../../../src/api/OffRamp.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ export interface OnRampPollingOptions {
|
|
|
8
8
|
/**
|
|
9
9
|
* API wrapper for on-ramp (fiat to crypto) operations
|
|
10
10
|
*/
|
|
11
|
-
export declare class
|
|
11
|
+
export declare class OnRamp {
|
|
12
12
|
private httpClient;
|
|
13
13
|
constructor(httpClient: UniversalHttpClient);
|
|
14
14
|
/**
|
|
@@ -39,4 +39,4 @@ export declare class OnRampAPI {
|
|
|
39
39
|
*/
|
|
40
40
|
private sleep;
|
|
41
41
|
}
|
|
42
|
-
//# sourceMappingURL=
|
|
42
|
+
//# sourceMappingURL=OnRamp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OnRamp.d.ts","sourceRoot":"","sources":["../../../src/api/OnRamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAG/F,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C;AAED;;GAEG;AACH,qBAAa,MAAM;IACL,OAAO,CAAC,UAAU;gBAAV,UAAU,EAAE,mBAAmB;IAEnD;;;;OAIG;IACG,YAAY,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAY3E;;;;OAIG;IACG,SAAS,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAIrE;;;;;OAKG;IACG,iBAAiB,CACrB,aAAa,EAAE,MAAM,EACrB,OAAO,CAAC,EAAE,oBAAoB,GAC7B,OAAO,CAAC,oBAAoB,CAAC;IAmChC;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;IACH,OAAO,CAAC,KAAK;CAGd"}
|