@coin-voyage/shared 0.0.22 → 0.0.24

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.
@@ -1,6 +1,7 @@
1
- import { CurrencyWithBalance, PayOrder } from "../common/index";
2
- import { DepositPayOrderParams, PaymentDetails, PaymentDetailsParams, PayOrderQuoteParams, RefundOrderParams, SalePayOrderParams } from "../types/api";
3
- import { APIEnvironment } from "./config";
1
+ import { type CurrencyWithBalance, type PayOrder } from "../common/index";
2
+ import type { DepositPayOrderParams, PaymentDetails, PaymentDetailsParams, PayOrderQuoteParams, RefundOrderParams, SalePayOrderParams } from "../types/api";
3
+ import { type APIEnvironment } from "./config";
4
+ import { type APIResponse } from "./fetcher";
4
5
  export declare class ApiClient {
5
6
  private readonly apiKey;
6
7
  private readonly environment?;
@@ -20,31 +21,33 @@ export declare class ApiClient {
20
21
  * This function requires an API key for authentication.
21
22
  *
22
23
  * @param {string} payOrderId - The unique identifier of the PayOrder.
23
- * @returns {Promise<PayOrder | undefined>} - The PayOrder object if the request is successful.
24
+ * @returns {Promise<APIResponse<PayOrder>>} - The PayOrder object wrapped in an API response if the request is successful.
24
25
  *
25
26
  * @example
26
- * const payOrder = await getPayOrder('123456');
27
+ * const { data: payOrder, error } = await getPayOrder('123456');
27
28
  */
28
- getPayOrder(payOrderId: string): Promise<PayOrder | undefined>;
29
+ getPayOrder(payOrderId: string): Promise<APIResponse<PayOrder>>;
29
30
  /**
30
31
  * Creates a `DEPOSIT` PayOrder.
31
32
  *
32
33
  * Creates a PayOrder of type `DEPOSIT` with the provided parameters.
33
34
  *
34
35
  * @param {DepositPayOrderParams} params - Parameters required to create a deposit PayOrder.
35
- * @param {boolean} [throwOnFailure] - Whether to throw an error if the request fails.
36
- * @returns {Promise<PayOrder | undefined>} - The PayOrder object if the request is successful.
36
+ * @returns {Promise<APIResponse<PayOrder>>} - The PayOrder object wrapped in an API response if the request is successful.
37
37
  *
38
38
  * @example
39
- * const apiKey = 'yourApiKey';
40
39
  * const depositOrderParams = {
41
- * amount: 1000,
42
- * currency: 'USD',
40
+ * receiving_address: '0x1234...abcd',
41
+ * destination_currency: { chain_id: 1, address: null },
42
+ * destination_amount: '100',
43
43
  * metadata: { description: 'Deposit for account' }
44
44
  * };
45
- * const depositPayOrder = await createDepositPayOrder(depositOrderParams);
45
+ * const { data, error } = await createDepositPayOrder(depositOrderParams);
46
+ * if (data) {
47
+ * console.log('Deposit PayOrder created:', data);
48
+ * }
46
49
  */
47
- createDepositPayOrder(params: DepositPayOrderParams, throwOnFailure?: boolean): Promise<PayOrder | undefined>;
50
+ createDepositPayOrder(params: DepositPayOrderParams): Promise<APIResponse<PayOrder>>;
48
51
  /**
49
52
  * Creates a `SALE` PayOrder.
50
53
  *
@@ -54,28 +57,31 @@ export declare class ApiClient {
54
57
  *
55
58
  * @param {SalePayOrderParams} params - Params required to create a sale PayOrder.
56
59
  * @param {string} signature - signature generated by the `generateAuthorizationSignature` function.
57
- * @returns {PayOrder | undefined} - A PayOrder object if the request was successful.
60
+ * @returns {Promise<APIResponse<PayOrder>>} - A PayOrder object wrapped in an API response if the request was successful.
58
61
  *
59
62
  * @example
60
- * const apiKey = 'yourApiKey';
61
63
  * const apiSecret = 'yourApiSecret';
62
- * const authSignature = apiClient.generateAuthorizationSignature(apiKey, apiSecret);
63
- * const payOrder = await createSalePayOrder({
64
- * destination_value_usd: 200,
65
- * metadata: {
66
- * items: [
67
- * {
68
- * name: "t-shirt",
69
- * description: "a nice t-shirt",
70
- * image: "https://example.com/tshirt.jpg",
71
- * quantity: 1,
72
- * unit_price: 200,
73
- * currency: "USD"
74
- * }
75
- * ]
76
- * }}, authSignature)
64
+ * const authSignature = apiClient.generateAuthorizationSignature(apiSecret);
65
+ * const response = await createSalePayOrder({
66
+ * destination_value_usd: 200,
67
+ * metadata: {
68
+ * items: [
69
+ * {
70
+ * name: "t-shirt",
71
+ * description: "a nice t-shirt",
72
+ * image: "https://example.com/tshirt.jpg",
73
+ * quantity: 1,
74
+ * unit_price: 200,
75
+ * currency: "USD"
76
+ * }
77
+ * ]
78
+ * }
79
+ * }, authSignature);
80
+ * if (response.data) {
81
+ * console.log('Sale PayOrder created:', response.data);
82
+ * }
77
83
  */
78
- createSalePayOrder(params: SalePayOrderParams, signature: string): Promise<PayOrder | undefined>;
84
+ createSalePayOrder(params: SalePayOrderParams, signature: string): Promise<APIResponse<PayOrder>>;
79
85
  /**
80
86
  * Creates a `REFUND` PayOrder.
81
87
  *
@@ -86,31 +92,35 @@ export declare class ApiClient {
86
92
  * @param {string} payOrderId - The unique identifier of the PayOrder to be refunded.
87
93
  * @param {RefundOrderParams} params - Params required to create a refund PayOrder.
88
94
  * @param {string} signature - signature generated by the `generateAuthorizationSignature` function.
89
- * @returns {PayOrder | undefined} - A PayOrder object if the request was successful.
95
+ * @returns {Promise<APIResponse<PayOrder>>} - A PayOrder object wrapped in an API response if the request was successful.
90
96
  *
91
97
  * @example
92
- * const apiKey = 'yourApiKey';
93
98
  * const apiSecret = 'yourApiSecret';
94
- * const authSignature = apiClient.generateAuthorizationSignature(apiKey, apiSecret);
95
- * const payOrder = await createRefundPayOrder(refundOrderId, {
96
- * amount: {
97
- * fiat: {
98
- * value: 100,
99
- * unit: "USD"
100
- * }
101
- * },
102
- * metadata: {
103
- * items: [
104
- * {
105
- * name: "refund",
106
- * description: "Refund for t-shirt purchase",
107
- * unit_price: 100,
108
- * currency: "USD"
99
+ * const authSignature = apiClient.generateAuthorizationSignature(apiSecret);
100
+ * const response = await createRefundPayOrder(refundOrderId, {
101
+ * refund_currency: { chain_id: 1, address: null },
102
+ * amount: {
103
+ * fiat: {
104
+ * value: 100,
105
+ * unit: "USD"
109
106
  * }
110
- * ]
111
- * }}, authSignature)
107
+ * },
108
+ * metadata: {
109
+ * items: [
110
+ * {
111
+ * name: "refund",
112
+ * description: "Refund for t-shirt purchase",
113
+ * unit_price: 100,
114
+ * currency: "USD"
115
+ * }
116
+ * ]
117
+ * }
118
+ * }, authSignature);
119
+ * if (response.data) {
120
+ * console.log('Refund PayOrder created:', response.data);
121
+ * }
112
122
  */
113
- createRefundPayOrder(payOrderId: string, params: RefundOrderParams, signature: string): Promise<PayOrder | undefined>;
123
+ createRefundPayOrder(payOrderId: string, params: RefundOrderParams, signature: string): Promise<APIResponse<PayOrder>>;
114
124
  /**
115
125
  * Generates a PayOrder Quote.
116
126
  *
@@ -118,27 +128,28 @@ export declare class ApiClient {
118
128
  * This function requires an API key for authentication.
119
129
  *
120
130
  * @param {string} orderId - The unique identifier of the PayOrder for which the quote is requested.
121
- * @param {PayOrderQuoteParams} quoteParams - Contains `wallet_address`, `chain_type`, chain_id`.
122
- * @returns {CurrencyWithBalance[] | undefined} - An array of PayTokens if the request was successful.
131
+ * @param {PayOrderQuoteParams} quoteParams - Contains `wallet_address`, `chain_type`, `chain_id`.
132
+ * @returns {Promise<APIResponse<CurrencyWithBalance[]>>} - An array of PayTokens wrapped in an API response if the request was successful.
123
133
  *
124
134
  * @example
125
135
  * const orderId = 'existingOrderId';
126
- * const apiKey = 'yourApiKey';
127
136
  * const quoteParams = {
128
137
  * wallet_address: '0x1234...abcd',
129
138
  * chain_type: ChainType.EVM,
130
139
  * chain_id: 1 // Ethereum Mainnet
131
140
  * };
132
141
  *
133
- * const payOrderQuote = await payOrderQuote(orderId, quoteParams, apiKey);
134
-
142
+ * const response = await payOrderQuote(orderId, quoteParams);
143
+ * if (response.data) {
144
+ * console.log('Available tokens:', response.data);
145
+ * }
135
146
  */
136
- payOrderQuote(orderId: string, quoteParams: PayOrderQuoteParams): Promise<CurrencyWithBalance[] | undefined>;
147
+ payOrderQuote(orderId: string, quoteParams: PayOrderQuoteParams): Promise<APIResponse<CurrencyWithBalance[]>>;
137
148
  /**
138
149
  * Retrieves payment details for a specific PayOrder.
139
150
  *
140
151
  * This function fetches payment details associated with a specific PayOrder ID.
141
- * It allows specifying the token and blockchain network (via `outTokenAddress` and `outChainId`)
152
+ * It allows specifying the token and blockchain network (via `token_address` and `chain_id`)
142
153
  * to retrieve source currency information, as well as a refund address for the transaction.
143
154
  *
144
155
  * The request is authenticated using the provided API key in the headers.
@@ -149,42 +160,21 @@ export declare class ApiClient {
149
160
  * @param {ChainId} params.chain_id - The blockchain network ID where the token resides.
150
161
  * @param {string} params.refund_address - The address where funds will be refunded in case of a failed transaction.
151
162
  *
152
- * @returns {Promise<PaymentDetails | undefined>} - The payment details object if the request is successful.
163
+ * @returns {Promise<APIResponse<PaymentDetails>>} - The payment details object wrapped in an API response if the request is successful.
153
164
  *
154
165
  * @example
155
- * const paymentDetails = await payOrderPaymentDetails({
156
- * payOrderId: '12345',
157
- * outTokenAddress: '0x1234567890abcdef1234567890abcdef12345678',
158
- * outChainId: 1,
159
- * refundAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
166
+ * const response = await payOrderPaymentDetails({
167
+ * payorder_id: '12345',
168
+ * token_address: '0x1234567890abcdef1234567890abcdef12345678',
169
+ * chain_id: 1,
170
+ * refund_address: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
160
171
  * });
161
172
  *
162
- * console.log(paymentDetails);
173
+ * if (response.data) {
174
+ * console.log('Payment details:', response.data);
175
+ * }
163
176
  */
164
- payOrderPaymentDetails(params: PaymentDetailsParams): Promise<PaymentDetails | undefined>;
165
- /**
166
- * Processes a PayOrder transaction.
167
- *
168
- * This function triggers the processing of a PayOrder by providing the transaction hash
169
- * that represents the payment on the blockchain. The request is authenticated using an API key.
170
- *
171
- * @deprecated This function is deprecated and will be removed in future versions. The backend will automatically scan for incoming transactions.
172
- *
173
- * @param {Object} params - Parameters required to process the PayOrder.
174
- * @param {string} params.payOrderId - The unique identifier of the PayOrder to be processed.
175
- * @param {string} params.sourceTransactionHash - The transaction hash representing the payment on the blockchain.
176
- *
177
- * @returns {Promise<void>}
178
- *
179
- * @example
180
- * const processedPayment = await processPayOrder({
181
- * payOrderId: '12345',
182
- * sourceTransactionHash: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
183
- * });
184
- *
185
- * console.log(processedPayment);
186
- */
187
- processPayOrder(payOrderId: string, sourceTransactionHash: string): Promise<void>;
177
+ payOrderPaymentDetails(params: PaymentDetailsParams): Promise<APIResponse<PaymentDetails>>;
188
178
  /**
189
179
  * Generates an authorization signature for API requests.
190
180
  *
@@ -202,9 +192,8 @@ export declare class ApiClient {
202
192
  * `APIKey=<apiKey>,signature=<signature>,timestamp=<timestamp>`.
203
193
  *
204
194
  * @example
205
- * const apiKey = 'yourApiKey';
206
195
  * const apiSecret = 'yourApiSecret';
207
- * const authSignature = generateAuthorizationSignature(apiKey, apiSecret);
196
+ * const authSignature = apiClient.generateAuthorizationSignature(apiSecret);
208
197
  * console.log(authSignature);
209
198
  * // Example output:
210
199
  * // APIKey=yourApiKey,signature=2ee76043a90a...,timestamp=1737106896
@@ -1,7 +1,5 @@
1
1
  import { createHash } from "crypto";
2
- import { z } from "zod";
3
2
  import { PayOrderMode, zDepositPayOrder, zPayOrderMetadata } from "../common/index";
4
- import { API_URL } from "./config";
5
3
  import { fetchApi } from "./fetcher";
6
4
  export class ApiClient {
7
5
  constructor({ apiKey, sessionId, environment = "production", version }) {
@@ -11,10 +9,9 @@ export class ApiClient {
11
9
  this.version = version;
12
10
  }
13
11
  async request(args) {
14
- const baseUrl = API_URL[this.environment ?? "production"];
15
12
  return fetchApi({
16
13
  ...args,
17
- path: `${baseUrl}/${args.path}`,
14
+ environment: this.environment,
18
15
  options: {
19
16
  ...args.options,
20
17
  headers: {
@@ -24,7 +21,6 @@ export class ApiClient {
24
21
  ...this.version ? { "X-Client-Version": this.version } : {},
25
22
  },
26
23
  },
27
- throwOnFailure: args.throwOnFailure,
28
24
  });
29
25
  }
30
26
  /**
@@ -34,10 +30,10 @@ export class ApiClient {
34
30
  * This function requires an API key for authentication.
35
31
  *
36
32
  * @param {string} payOrderId - The unique identifier of the PayOrder.
37
- * @returns {Promise<PayOrder | undefined>} - The PayOrder object if the request is successful.
33
+ * @returns {Promise<APIResponse<PayOrder>>} - The PayOrder object wrapped in an API response if the request is successful.
38
34
  *
39
35
  * @example
40
- * const payOrder = await getPayOrder('123456');
36
+ * const { data: payOrder, error } = await getPayOrder('123456');
41
37
  */
42
38
  async getPayOrder(payOrderId) {
43
39
  return this.request({ path: `pay-orders/${payOrderId}` });
@@ -48,29 +44,38 @@ export class ApiClient {
48
44
  * Creates a PayOrder of type `DEPOSIT` with the provided parameters.
49
45
  *
50
46
  * @param {DepositPayOrderParams} params - Parameters required to create a deposit PayOrder.
51
- * @param {boolean} [throwOnFailure] - Whether to throw an error if the request fails.
52
- * @returns {Promise<PayOrder | undefined>} - The PayOrder object if the request is successful.
47
+ * @returns {Promise<APIResponse<PayOrder>>} - The PayOrder object wrapped in an API response if the request is successful.
53
48
  *
54
49
  * @example
55
- * const apiKey = 'yourApiKey';
56
50
  * const depositOrderParams = {
57
- * amount: 1000,
58
- * currency: 'USD',
51
+ * receiving_address: '0x1234...abcd',
52
+ * destination_currency: { chain_id: 1, address: null },
53
+ * destination_amount: '100',
59
54
  * metadata: { description: 'Deposit for account' }
60
55
  * };
61
- * const depositPayOrder = await createDepositPayOrder(depositOrderParams);
56
+ * const { data, error } = await createDepositPayOrder(depositOrderParams);
57
+ * if (data) {
58
+ * console.log('Deposit PayOrder created:', data);
59
+ * }
62
60
  */
63
- async createDepositPayOrder(params, throwOnFailure) {
61
+ async createDepositPayOrder(params) {
64
62
  const result = zDepositPayOrder.safeParse(params);
65
- if (!result.success)
66
- return;
63
+ if (!result.success) {
64
+ return {
65
+ error: {
66
+ path: "pay-orders",
67
+ statusCode: 400,
68
+ status: "Bad Request",
69
+ message: result.error.errors.map(e => e.message).join(", "),
70
+ }
71
+ };
72
+ }
67
73
  return this.request({
68
74
  path: `pay-orders`,
69
75
  options: {
70
76
  method: "POST",
71
77
  body: JSON.stringify({ mode: PayOrderMode.DEPOSIT, ...params }),
72
78
  },
73
- throwOnFailure: throwOnFailure,
74
79
  });
75
80
  }
76
81
  /**
@@ -82,45 +87,52 @@ export class ApiClient {
82
87
  *
83
88
  * @param {SalePayOrderParams} params - Params required to create a sale PayOrder.
84
89
  * @param {string} signature - signature generated by the `generateAuthorizationSignature` function.
85
- * @returns {PayOrder | undefined} - A PayOrder object if the request was successful.
90
+ * @returns {Promise<APIResponse<PayOrder>>} - A PayOrder object wrapped in an API response if the request was successful.
86
91
  *
87
92
  * @example
88
- * const apiKey = 'yourApiKey';
89
93
  * const apiSecret = 'yourApiSecret';
90
- * const authSignature = apiClient.generateAuthorizationSignature(apiKey, apiSecret);
91
- * const payOrder = await createSalePayOrder({
92
- * destination_value_usd: 200,
93
- * metadata: {
94
- * items: [
95
- * {
96
- * name: "t-shirt",
97
- * description: "a nice t-shirt",
98
- * image: "https://example.com/tshirt.jpg",
99
- * quantity: 1,
100
- * unit_price: 200,
101
- * currency: "USD"
102
- * }
103
- * ]
104
- * }}, authSignature)
94
+ * const authSignature = apiClient.generateAuthorizationSignature(apiSecret);
95
+ * const response = await createSalePayOrder({
96
+ * destination_value_usd: 200,
97
+ * metadata: {
98
+ * items: [
99
+ * {
100
+ * name: "t-shirt",
101
+ * description: "a nice t-shirt",
102
+ * image: "https://example.com/tshirt.jpg",
103
+ * quantity: 1,
104
+ * unit_price: 200,
105
+ * currency: "USD"
106
+ * }
107
+ * ]
108
+ * }
109
+ * }, authSignature);
110
+ * if (response.data) {
111
+ * console.log('Sale PayOrder created:', response.data);
112
+ * }
105
113
  */
106
114
  async createSalePayOrder(params, signature) {
107
- try {
108
- if (params.metadata)
109
- zPayOrderMetadata.parse(params.metadata);
110
- return this.request({
111
- path: "pay-orders", options: {
112
- method: "POST",
113
- body: JSON.stringify({ mode: PayOrderMode.SALE, ...params }),
114
- headers: { Authorization: signature },
115
- },
116
- }); // Ensure the API key is set in the headers
117
- }
118
- catch (err) {
119
- if (err instanceof z.ZodError) {
120
- throw new Error(err.errors.map(e => e.message).join(", "));
115
+ if (params.metadata) {
116
+ const result = zPayOrderMetadata.safeParse(params.metadata);
117
+ if (!result.success) {
118
+ return {
119
+ error: {
120
+ path: "pay-orders",
121
+ statusCode: 400,
122
+ status: "Bad Request",
123
+ message: result.error.errors.map(e => e.message).join(", "),
124
+ }
125
+ };
121
126
  }
122
- throw err;
123
127
  }
128
+ return this.request({
129
+ path: "pay-orders",
130
+ options: {
131
+ method: "POST",
132
+ body: JSON.stringify({ mode: PayOrderMode.SALE, ...params }),
133
+ headers: { Authorization: signature },
134
+ },
135
+ });
124
136
  }
125
137
  /**
126
138
  * Creates a `REFUND` PayOrder.
@@ -132,49 +144,56 @@ export class ApiClient {
132
144
  * @param {string} payOrderId - The unique identifier of the PayOrder to be refunded.
133
145
  * @param {RefundOrderParams} params - Params required to create a refund PayOrder.
134
146
  * @param {string} signature - signature generated by the `generateAuthorizationSignature` function.
135
- * @returns {PayOrder | undefined} - A PayOrder object if the request was successful.
147
+ * @returns {Promise<APIResponse<PayOrder>>} - A PayOrder object wrapped in an API response if the request was successful.
136
148
  *
137
149
  * @example
138
- * const apiKey = 'yourApiKey';
139
150
  * const apiSecret = 'yourApiSecret';
140
- * const authSignature = apiClient.generateAuthorizationSignature(apiKey, apiSecret);
141
- * const payOrder = await createRefundPayOrder(refundOrderId, {
142
- * amount: {
143
- * fiat: {
144
- * value: 100,
145
- * unit: "USD"
146
- * }
147
- * },
148
- * metadata: {
149
- * items: [
150
- * {
151
- * name: "refund",
152
- * description: "Refund for t-shirt purchase",
153
- * unit_price: 100,
154
- * currency: "USD"
151
+ * const authSignature = apiClient.generateAuthorizationSignature(apiSecret);
152
+ * const response = await createRefundPayOrder(refundOrderId, {
153
+ * refund_currency: { chain_id: 1, address: null },
154
+ * amount: {
155
+ * fiat: {
156
+ * value: 100,
157
+ * unit: "USD"
155
158
  * }
156
- * ]
157
- * }}, authSignature)
159
+ * },
160
+ * metadata: {
161
+ * items: [
162
+ * {
163
+ * name: "refund",
164
+ * description: "Refund for t-shirt purchase",
165
+ * unit_price: 100,
166
+ * currency: "USD"
167
+ * }
168
+ * ]
169
+ * }
170
+ * }, authSignature);
171
+ * if (response.data) {
172
+ * console.log('Refund PayOrder created:', response.data);
173
+ * }
158
174
  */
159
175
  async createRefundPayOrder(payOrderId, params, signature) {
160
- try {
161
- if (params.metadata)
162
- zPayOrderMetadata.parse(params.metadata);
163
- return this.request({
164
- path: `pay-orders/${payOrderId}/refund`,
165
- options: {
166
- method: "POST",
167
- body: JSON.stringify(params),
168
- headers: { Authorization: signature },
169
- },
170
- });
171
- }
172
- catch (err) {
173
- if (err instanceof z.ZodError) {
174
- throw new Error(err.errors.map(e => e.message).join(", "));
176
+ if (params.metadata) {
177
+ const result = zPayOrderMetadata.safeParse(params.metadata);
178
+ if (!result.success) {
179
+ return {
180
+ error: {
181
+ path: `pay-orders/${payOrderId}/refund`,
182
+ statusCode: 400,
183
+ status: "Bad Request",
184
+ message: result.error.errors.map(e => e.message).join(", "),
185
+ }
186
+ };
175
187
  }
176
- throw err;
177
188
  }
189
+ return this.request({
190
+ path: `pay-orders/${payOrderId}/refund`,
191
+ options: {
192
+ method: "POST",
193
+ body: JSON.stringify(params),
194
+ headers: { Authorization: signature },
195
+ },
196
+ });
178
197
  }
179
198
  /**
180
199
  * Generates a PayOrder Quote.
@@ -183,20 +202,21 @@ export class ApiClient {
183
202
  * This function requires an API key for authentication.
184
203
  *
185
204
  * @param {string} orderId - The unique identifier of the PayOrder for which the quote is requested.
186
- * @param {PayOrderQuoteParams} quoteParams - Contains `wallet_address`, `chain_type`, chain_id`.
187
- * @returns {CurrencyWithBalance[] | undefined} - An array of PayTokens if the request was successful.
205
+ * @param {PayOrderQuoteParams} quoteParams - Contains `wallet_address`, `chain_type`, `chain_id`.
206
+ * @returns {Promise<APIResponse<CurrencyWithBalance[]>>} - An array of PayTokens wrapped in an API response if the request was successful.
188
207
  *
189
208
  * @example
190
209
  * const orderId = 'existingOrderId';
191
- * const apiKey = 'yourApiKey';
192
210
  * const quoteParams = {
193
211
  * wallet_address: '0x1234...abcd',
194
212
  * chain_type: ChainType.EVM,
195
213
  * chain_id: 1 // Ethereum Mainnet
196
214
  * };
197
215
  *
198
- * const payOrderQuote = await payOrderQuote(orderId, quoteParams, apiKey);
199
-
216
+ * const response = await payOrderQuote(orderId, quoteParams);
217
+ * if (response.data) {
218
+ * console.log('Available tokens:', response.data);
219
+ * }
200
220
  */
201
221
  async payOrderQuote(orderId, quoteParams) {
202
222
  return this.request({
@@ -211,7 +231,7 @@ export class ApiClient {
211
231
  * Retrieves payment details for a specific PayOrder.
212
232
  *
213
233
  * This function fetches payment details associated with a specific PayOrder ID.
214
- * It allows specifying the token and blockchain network (via `outTokenAddress` and `outChainId`)
234
+ * It allows specifying the token and blockchain network (via `token_address` and `chain_id`)
215
235
  * to retrieve source currency information, as well as a refund address for the transaction.
216
236
  *
217
237
  * The request is authenticated using the provided API key in the headers.
@@ -222,17 +242,19 @@ export class ApiClient {
222
242
  * @param {ChainId} params.chain_id - The blockchain network ID where the token resides.
223
243
  * @param {string} params.refund_address - The address where funds will be refunded in case of a failed transaction.
224
244
  *
225
- * @returns {Promise<PaymentDetails | undefined>} - The payment details object if the request is successful.
245
+ * @returns {Promise<APIResponse<PaymentDetails>>} - The payment details object wrapped in an API response if the request is successful.
226
246
  *
227
247
  * @example
228
- * const paymentDetails = await payOrderPaymentDetails({
229
- * payOrderId: '12345',
230
- * outTokenAddress: '0x1234567890abcdef1234567890abcdef12345678',
231
- * outChainId: 1,
232
- * refundAddress: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
248
+ * const response = await payOrderPaymentDetails({
249
+ * payorder_id: '12345',
250
+ * token_address: '0x1234567890abcdef1234567890abcdef12345678',
251
+ * chain_id: 1,
252
+ * refund_address: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
233
253
  * });
234
254
  *
235
- * console.log(paymentDetails);
255
+ * if (response.data) {
256
+ * console.log('Payment details:', response.data);
257
+ * }
236
258
  */
237
259
  async payOrderPaymentDetails(params) {
238
260
  const { payorder_id, token_address, chain_id, refund_address } = params;
@@ -250,34 +272,6 @@ export class ApiClient {
250
272
  },
251
273
  });
252
274
  }
253
- /**
254
- * Processes a PayOrder transaction.
255
- *
256
- * This function triggers the processing of a PayOrder by providing the transaction hash
257
- * that represents the payment on the blockchain. The request is authenticated using an API key.
258
- *
259
- * @deprecated This function is deprecated and will be removed in future versions. The backend will automatically scan for incoming transactions.
260
- *
261
- * @param {Object} params - Parameters required to process the PayOrder.
262
- * @param {string} params.payOrderId - The unique identifier of the PayOrder to be processed.
263
- * @param {string} params.sourceTransactionHash - The transaction hash representing the payment on the blockchain.
264
- *
265
- * @returns {Promise<void>}
266
- *
267
- * @example
268
- * const processedPayment = await processPayOrder({
269
- * payOrderId: '12345',
270
- * sourceTransactionHash: '0xabcdefabcdefabcdefabcdefabcdefabcdefabcd',
271
- * });
272
- *
273
- * console.log(processedPayment);
274
- */
275
- async processPayOrder(payOrderId, sourceTransactionHash) {
276
- return this.request({
277
- path: `pay-orders/${payOrderId}/process?tx_hash=${sourceTransactionHash}`,
278
- options: { method: "GET" },
279
- });
280
- }
281
275
  /**
282
276
  * Generates an authorization signature for API requests.
283
277
  *
@@ -295,9 +289,8 @@ export class ApiClient {
295
289
  * `APIKey=<apiKey>,signature=<signature>,timestamp=<timestamp>`.
296
290
  *
297
291
  * @example
298
- * const apiKey = 'yourApiKey';
299
292
  * const apiSecret = 'yourApiSecret';
300
- * const authSignature = generateAuthorizationSignature(apiKey, apiSecret);
293
+ * const authSignature = apiClient.generateAuthorizationSignature(apiSecret);
301
294
  * console.log(authSignature);
302
295
  * // Example output:
303
296
  * // APIKey=yourApiKey,signature=2ee76043a90a...,timestamp=1737106896
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/api/client.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,18 @@
1
+ import { APIEnvironment } from "./config";
1
2
  type FetchApiOptions = {
2
3
  path: string;
4
+ environment?: APIEnvironment;
3
5
  options?: RequestInit;
4
- throwOnFailure?: boolean;
5
6
  };
6
- export declare function fetchApi<T>(opts: FetchApiOptions): Promise<T | undefined>;
7
+ export type APIError = {
8
+ path: string;
9
+ statusCode: number;
10
+ status: string;
11
+ message: string;
12
+ };
13
+ export type APIResponse<T> = {
14
+ data?: T;
15
+ error?: APIError;
16
+ };
17
+ export declare function fetchApi<T>(opts: FetchApiOptions): Promise<APIResponse<T>>;
7
18
  export {};
@@ -1,6 +1,8 @@
1
+ import { API_URL } from "./config";
1
2
  export async function fetchApi(opts) {
2
3
  try {
3
- const response = await fetch(opts.path, {
4
+ const baseUrl = API_URL[opts.environment ?? "production"];
5
+ const response = await fetch(`${baseUrl}/${opts.path}`, {
4
6
  ...opts.options,
5
7
  headers: {
6
8
  ...opts.options?.headers,
@@ -9,22 +11,28 @@ export async function fetchApi(opts) {
9
11
  },
10
12
  });
11
13
  if (!response.ok) {
12
- const text = await response.text();
13
- console.error(JSON.stringify({
14
- path: opts.path,
15
- status: response.status,
16
- statusText: response.statusText,
17
- details: text
18
- }));
19
- return;
14
+ const message = await response.text();
15
+ return {
16
+ error: {
17
+ path: opts.path,
18
+ statusCode: response.status,
19
+ status: response.statusText,
20
+ message
21
+ }
22
+ };
20
23
  }
21
- return await response.json();
24
+ const data = await response.json();
25
+ return { data };
22
26
  }
23
27
  catch (error) {
24
- console.error(`path: ${opts.path}, message: ${error.message}`);
25
- if (opts.throwOnFailure) {
26
- throw error;
27
- }
28
+ return {
29
+ error: {
30
+ path: opts.path,
31
+ statusCode: 500,
32
+ status: "Internal Server Error",
33
+ message: error.message || "An unknown error occurred"
34
+ }
35
+ };
28
36
  }
29
37
  }
30
38
  //# sourceMappingURL=fetcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/api/fetcher.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,IAAqB;IACnD,IAAI,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE;YACpC,GAAG,IAAI,CAAC,OAAO;YACf,OAAO,EAAE;gBACL,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO;gBACxB,cAAc,EAAE,kBAAkB;gBAClC,iBAAiB,EAAE,mBAAmB;aACzC;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACnC,OAAO,CAAC,KAAK,CACT,IAAI,CAAC,SAAS,CAAC;gBACX,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,OAAO,EAAE,IAAI;aAChB,CAAC,CACL,CAAC;YACF,OAAO;QACX,CAAC;QACD,OAAO,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,MAAM,KAAK,CAAC;QAChB,CAAC;IACL,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"fetcher.js","sourceRoot":"","sources":["../../src/api/fetcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAkB,MAAM,UAAU,CAAC;AAqBnD,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,IAAqB;IACnD,IAAI,CAAC;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,IAAI,YAAY,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE;YACpD,GAAG,IAAI,CAAC,OAAO;YACf,OAAO,EAAE;gBACL,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO;gBACxB,cAAc,EAAE,kBAAkB;gBAClC,iBAAiB,EAAE,mBAAmB;aACzC;SACJ,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtC,OAAO;gBACH,KAAK,EAAE;oBACH,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,UAAU,EAAE,QAAQ,CAAC,MAAM;oBAC3B,MAAM,EAAE,QAAQ,CAAC,UAAU;oBAC3B,OAAO;iBACV;aACJ,CAAC;QACN,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,OAAO,EAAE,IAAI,EAAE,CAAC;IACpB,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QAClB,OAAO;YACH,KAAK,EAAE;gBACH,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,UAAU,EAAE,GAAG;gBACf,MAAM,EAAE,uBAAuB;gBAC/B,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,2BAA2B;aACxD;SACJ,CAAC;IACN,CAAC;AACL,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@coin-voyage/shared",
3
3
  "description": "Shared utilities for Coin Voyage",
4
- "version": "0.0.22",
4
+ "version": "0.0.24",
5
5
  "private": false,
6
6
  "sideEffects": false,
7
7
  "exports": {