@carrot-protocol/boost-http-client 0.2.0-ux-and-ui-dev-557caf4 → 0.2.1-data-fixes-dev-2028bb6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { AnchorProvider, web3 } from "@coral-xyz/anchor";
2
- import { DepositLeverageRequest, GetBankResponse, GetUserResponse, AdjustLeverageRequest, WithdrawLeverageRequest, GetGroupResponse } from "./types";
2
+ import { GetBankResponse, GetUserResponse, GetGroupResponse } from "./types";
3
3
  export * from "./types";
4
4
  /**
5
5
  * HTTP Client for Carrot Boost API
@@ -43,17 +43,17 @@ export declare class Client {
43
43
  * @param request Deposit leverage request parameters
44
44
  * @returns Deposit leverage operation result
45
45
  */
46
- depositLeverage(params: DepositLeverageRequest): Promise<string>;
46
+ depositLeverage(selectedTokenMint: web3.PublicKey, uiAmount: number, leverage: number, slippageBps: number): Promise<string>;
47
47
  /**
48
48
  * Adjust the leverage of an existing position
49
49
  * @param request Adjust leverage request parameters
50
50
  * @returns Adjust leverage operation result
51
51
  */
52
- adjustLeverage(params: AdjustLeverageRequest): Promise<any>;
52
+ adjustLeverage(leverage: number, slippageBps: number): Promise<any>;
53
53
  /**
54
54
  * Withdraw from or close a leveraged position
55
55
  * @param request Withdraw leverage request parameters
56
56
  * @returns Withdraw leverage operation result
57
57
  */
58
- withdrawLeverage(params: WithdrawLeverageRequest): Promise<any>;
58
+ withdrawLeverage(selectedTokenMint: web3.PublicKey, uiAmount: number, slippageBps: number, withdrawAll: boolean): Promise<any>;
59
59
  }
package/dist/index.js CHANGED
@@ -10,28 +10,6 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
10
10
  if (k2 === undefined) k2 = k;
11
11
  o[k2] = m[k];
12
12
  }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
36
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
37
15
  };
@@ -40,7 +18,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
18
  };
41
19
  Object.defineProperty(exports, "__esModule", { value: true });
42
20
  exports.Client = void 0;
43
- const axios_1 = __importStar(require("axios"));
21
+ const axios_1 = __importDefault(require("axios"));
44
22
  const anchor_1 = require("@coral-xyz/anchor");
45
23
  const bs58_1 = __importDefault(require("bs58"));
46
24
  // Re-export types
@@ -193,8 +171,15 @@ class Client {
193
171
  * @param request Deposit leverage request parameters
194
172
  * @returns Deposit leverage operation result
195
173
  */
196
- async depositLeverage(params) {
197
- const body = await handleApiCall(() => this.http.post("leverage/deposit", JSON.stringify(params)));
174
+ async depositLeverage(selectedTokenMint, uiAmount, leverage, slippageBps) {
175
+ const req = {
176
+ owner: this.address(),
177
+ selectedTokenMint,
178
+ depositAmountUi: uiAmount,
179
+ leverage,
180
+ slippageBps,
181
+ };
182
+ const body = await handleApiCall(() => this.http.post("leverage/deposit", JSON.stringify(req)));
198
183
  const depositLeverageResponse = JSON.parse(body);
199
184
  const txSig = await this.send(depositLeverageResponse.unsignedBase64Tx);
200
185
  return txSig;
@@ -204,8 +189,13 @@ class Client {
204
189
  * @param request Adjust leverage request parameters
205
190
  * @returns Adjust leverage operation result
206
191
  */
207
- async adjustLeverage(params) {
208
- const body = await handleApiCall(() => this.http.post("leverage/adjust", JSON.stringify(params)));
192
+ async adjustLeverage(leverage, slippageBps) {
193
+ const req = {
194
+ owner: this.address(),
195
+ leverage,
196
+ slippageBps,
197
+ };
198
+ const body = await handleApiCall(() => this.http.post("leverage/adjust", JSON.stringify(req)));
209
199
  const adjustLeverageResponse = JSON.parse(body);
210
200
  const txSig = await this.send(adjustLeverageResponse.unsignedBase64Tx);
211
201
  return txSig;
@@ -215,8 +205,15 @@ class Client {
215
205
  * @param request Withdraw leverage request parameters
216
206
  * @returns Withdraw leverage operation result
217
207
  */
218
- async withdrawLeverage(params) {
219
- const body = await handleApiCall(() => this.http.post("leverage/withdraw", JSON.stringify(params)));
208
+ async withdrawLeverage(selectedTokenMint, uiAmount, slippageBps, withdrawAll) {
209
+ const req = {
210
+ owner: this.address(),
211
+ selectedTokenMint,
212
+ withdrawAmountUi: uiAmount,
213
+ slippageBps,
214
+ withdrawAll,
215
+ };
216
+ const body = await handleApiCall(() => this.http.post("leverage/withdraw", JSON.stringify(req)));
220
217
  const withdrawLeverageResponse = JSON.parse(body);
221
218
  const txSig = await this.send(withdrawLeverageResponse.unsignedBase64Tx);
222
219
  return txSig;
@@ -232,23 +229,21 @@ function handleStatusCode(statusCode) {
232
229
  }
233
230
  }
234
231
  // Helper function to handle API calls
235
- async function handleApiCall(apiCall) {
232
+ async function handleApiCall(call) {
236
233
  try {
237
- const response = await apiCall();
238
- handleStatusCode(response.status);
239
- return JSON.stringify(response.data);
234
+ const { data } = await call();
235
+ return JSON.stringify(data);
240
236
  }
241
- catch (error) {
242
- if (error instanceof axios_1.AxiosError) {
243
- const simplifiedError = {
244
- status: error.response?.status,
245
- message: error.message,
246
- url: error.config?.url,
247
- };
248
- console.error(simplifiedError);
249
- throw new Error(JSON.stringify(simplifiedError));
237
+ catch (e) {
238
+ if (axios_1.default.isAxiosError(e)) {
239
+ const res = e.response;
240
+ if (res && typeof res.data === "object") {
241
+ const payload = res.data;
242
+ throw new Error(`${payload.error}${payload.details ? ` ${payload.details}` : ""}`);
243
+ }
244
+ throw new Error(`${e.message}`);
250
245
  }
251
- throw error;
246
+ throw e;
252
247
  }
253
248
  }
254
249
  function getDummyProvider() {
package/dist/types.d.ts CHANGED
@@ -2,19 +2,13 @@ import { BN, web3 } from "@coral-xyz/anchor";
2
2
  export interface SendRequest {
3
3
  txns: string[];
4
4
  }
5
- export interface CreateObligationRequest {
6
- owner: web3.PublicKey;
7
- }
8
- export interface CreateObligationResponse {
9
- unsignedBase64Tx: string;
10
- }
11
5
  /**
12
6
  * Request to deposit collateral and create a leveraged position
13
7
  */
14
8
  export interface DepositLeverageRequest {
15
9
  owner: web3.PublicKey;
16
10
  selectedTokenMint: web3.PublicKey;
17
- depositAmount: BN;
11
+ depositAmountUi: number;
18
12
  leverage: number;
19
13
  slippageBps: number;
20
14
  }
@@ -44,7 +38,7 @@ export interface AdjustLeverageResponse {
44
38
  export interface WithdrawLeverageRequest {
45
39
  owner: web3.PublicKey;
46
40
  selectedTokenMint: web3.PublicKey;
47
- withdrawAmount: BN;
41
+ withdrawAmountUi: number;
48
42
  slippageBps: number;
49
43
  withdrawAll: boolean;
50
44
  }
package/makefile CHANGED
@@ -14,3 +14,5 @@ fmt:
14
14
  fmt_check:
15
15
  npm run fmt:check
16
16
 
17
+ version_check:
18
+ npm run version-check
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carrot-protocol/boost-http-client",
3
- "version": "0.2.0-ux-and-ui-dev-557caf4",
3
+ "version": "0.2.1-data-fixes-dev-2028bb6",
4
4
  "description": "HTTP client for Carrot Boost API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -9,7 +9,8 @@
9
9
  "build": "npm run clean && npm i && tsc && npm pack",
10
10
  "build:dirty": "npm i && tsc && npm pack",
11
11
  "fmt:check": "prettier --check src/",
12
- "fmt": "prettier --write src/"
12
+ "fmt": "prettier --write src/",
13
+ "version-check": "current_version=$(node -p -e \"require('./package.json').version\") && if npm view @carrot-protocol/boost-http-client@$current_version > /dev/null 2>&1; then echo \"Version $current_version already exists. Please bump it in package.json\"; exit 1; fi"
13
14
  },
14
15
  "dependencies": {
15
16
  "@coral-xyz/anchor": "^0.29.0",
package/src/index.ts CHANGED
@@ -215,9 +215,21 @@ export class Client {
215
215
  * @param request Deposit leverage request parameters
216
216
  * @returns Deposit leverage operation result
217
217
  */
218
- async depositLeverage(params: DepositLeverageRequest): Promise<string> {
218
+ async depositLeverage(
219
+ selectedTokenMint: web3.PublicKey,
220
+ uiAmount: number,
221
+ leverage: number,
222
+ slippageBps: number,
223
+ ): Promise<string> {
224
+ const req: DepositLeverageRequest = {
225
+ owner: this.address(),
226
+ selectedTokenMint,
227
+ depositAmountUi: uiAmount,
228
+ leverage,
229
+ slippageBps,
230
+ };
219
231
  const body = await handleApiCall(() =>
220
- this.http.post("leverage/deposit", JSON.stringify(params)),
232
+ this.http.post("leverage/deposit", JSON.stringify(req)),
221
233
  );
222
234
 
223
235
  const depositLeverageResponse: DepositLeverageResponse = JSON.parse(body);
@@ -232,9 +244,14 @@ export class Client {
232
244
  * @param request Adjust leverage request parameters
233
245
  * @returns Adjust leverage operation result
234
246
  */
235
- async adjustLeverage(params: AdjustLeverageRequest): Promise<any> {
247
+ async adjustLeverage(leverage: number, slippageBps: number): Promise<any> {
248
+ const req: AdjustLeverageRequest = {
249
+ owner: this.address(),
250
+ leverage,
251
+ slippageBps,
252
+ };
236
253
  const body = await handleApiCall(() =>
237
- this.http.post("leverage/adjust", JSON.stringify(params)),
254
+ this.http.post("leverage/adjust", JSON.stringify(req)),
238
255
  );
239
256
 
240
257
  const adjustLeverageResponse: AdjustLeverageResponse = JSON.parse(body);
@@ -249,9 +266,21 @@ export class Client {
249
266
  * @param request Withdraw leverage request parameters
250
267
  * @returns Withdraw leverage operation result
251
268
  */
252
- async withdrawLeverage(params: WithdrawLeverageRequest): Promise<any> {
269
+ async withdrawLeverage(
270
+ selectedTokenMint: web3.PublicKey,
271
+ uiAmount: number,
272
+ slippageBps: number,
273
+ withdrawAll: boolean,
274
+ ): Promise<any> {
275
+ const req: WithdrawLeverageRequest = {
276
+ owner: this.address(),
277
+ selectedTokenMint,
278
+ withdrawAmountUi: uiAmount,
279
+ slippageBps,
280
+ withdrawAll,
281
+ };
253
282
  const body = await handleApiCall(() =>
254
- this.http.post("leverage/withdraw", JSON.stringify(params)),
283
+ this.http.post("leverage/withdraw", JSON.stringify(req)),
255
284
  );
256
285
 
257
286
  const withdrawLeverageResponse: WithdrawLeverageResponse = JSON.parse(body);
@@ -262,6 +291,13 @@ export class Client {
262
291
  }
263
292
  }
264
293
 
294
+ type ApiErrorPayload = {
295
+ error: string;
296
+ details?: unknown;
297
+ path: string;
298
+ timestamp: string;
299
+ };
300
+
265
301
  function handleStatusCode(statusCode: number): void {
266
302
  switch (statusCode) {
267
303
  case 200:
@@ -273,23 +309,23 @@ function handleStatusCode(statusCode: number): void {
273
309
 
274
310
  // Helper function to handle API calls
275
311
  async function handleApiCall<T>(
276
- apiCall: () => Promise<AxiosResponse<T>>,
277
- ): Promise<any> {
312
+ call: () => Promise<AxiosResponse<T>>,
313
+ ): Promise<string> {
278
314
  try {
279
- const response = await apiCall();
280
- handleStatusCode(response.status);
281
- return JSON.stringify(response.data);
282
- } catch (error) {
283
- if (error instanceof AxiosError) {
284
- const simplifiedError = {
285
- status: error.response?.status,
286
- message: error.message,
287
- url: error.config?.url,
288
- };
289
- console.error(simplifiedError);
290
- throw new Error(JSON.stringify(simplifiedError));
315
+ const { data } = await call();
316
+ return JSON.stringify(data);
317
+ } catch (e) {
318
+ if (axios.isAxiosError(e)) {
319
+ const res = e.response;
320
+ if (res && typeof res.data === "object") {
321
+ const payload = res.data as ApiErrorPayload;
322
+ throw new Error(
323
+ `${payload.error}${payload.details ? ` ${payload.details}` : ""}`,
324
+ );
325
+ }
326
+ throw new Error(`${e.message}`);
291
327
  }
292
- throw error;
328
+ throw e;
293
329
  }
294
330
  }
295
331
 
package/src/types.ts CHANGED
@@ -6,21 +6,13 @@ export interface SendRequest {
6
6
  txns: string[];
7
7
  }
8
8
 
9
- export interface CreateObligationRequest {
10
- owner: web3.PublicKey;
11
- }
12
-
13
- export interface CreateObligationResponse {
14
- unsignedBase64Tx: string;
15
- }
16
-
17
9
  /**
18
10
  * Request to deposit collateral and create a leveraged position
19
11
  */
20
12
  export interface DepositLeverageRequest {
21
13
  owner: web3.PublicKey;
22
14
  selectedTokenMint: web3.PublicKey;
23
- depositAmount: BN;
15
+ depositAmountUi: number;
24
16
  leverage: number;
25
17
  slippageBps: number;
26
18
  }
@@ -54,7 +46,7 @@ export interface AdjustLeverageResponse {
54
46
  export interface WithdrawLeverageRequest {
55
47
  owner: web3.PublicKey;
56
48
  selectedTokenMint: web3.PublicKey;
57
- withdrawAmount: BN;
49
+ withdrawAmountUi: number;
58
50
  slippageBps: number;
59
51
  withdrawAll: boolean;
60
52
  }