@vaultsfyi/sdk 2.1.4 → 2.1.6

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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @vaultsfyi/sdk
2
2
 
3
+ ## 2.1.5
4
+
5
+ ### Patch Changes
6
+
7
+ - add warnings schema
8
+
9
+ ## 2.1.4
10
+
11
+ ### Patch Changes
12
+
13
+ - add avalanche schema
14
+
3
15
  ## 2.1.3
4
16
 
5
17
  ### Patch Changes
package/dist/client.d.mts CHANGED
@@ -1,3 +1,5 @@
1
+ import { Signer } from 'x402-fetch';
2
+
1
3
  /**
2
4
  * This file was auto-generated by openapi-typescript.
3
5
  * Do not make direct changes to the file.
@@ -1906,6 +1908,8 @@ interface paths {
1906
1908
  /** @description Indicates if the vault supports rewards transaction flows */
1907
1909
  rewardsSupported: boolean;
1908
1910
  };
1911
+ /** @description List of warnings related to the vault */
1912
+ warnings: string[];
1909
1913
  }[];
1910
1914
  errors: {
1911
1915
  unsupportedNetworks: string[];
@@ -2357,6 +2361,8 @@ interface paths {
2357
2361
  /** @description Indicates if the vault supports rewards transaction flows */
2358
2362
  rewardsSupported: boolean;
2359
2363
  };
2364
+ /** @description List of warnings related to the vault */
2365
+ warnings: string[];
2360
2366
  };
2361
2367
  };
2362
2368
  };
@@ -7473,9 +7479,11 @@ interface paths {
7473
7479
  };
7474
7480
  }
7475
7481
 
7476
- interface ConstructorOptions {
7482
+ type ConstructorOptions = {
7477
7483
  apiKey: string;
7478
- }
7484
+ } | {
7485
+ client: Signer;
7486
+ };
7479
7487
  interface InternalOptions {
7480
7488
  apiBaseUrl: string;
7481
7489
  }
@@ -7506,7 +7514,8 @@ type Body<T extends Endpoint> = paths[T]['post'] extends {
7506
7514
  type Params<T extends Endpoint> = Body<T> extends undefined ? ExtractParams<paths[T]['get' | 'post']> : ExtractParams<paths[T]['get' | 'post']> & Body<T>;
7507
7515
  declare class VaultsSdk {
7508
7516
  private apiBaseUrl;
7509
- private apiKey;
7517
+ private auth;
7518
+ private authHeaders;
7510
7519
  constructor(options: ConstructorOptions);
7511
7520
  constructor(options: ConstructorOptions, internalOptions: InternalOptions);
7512
7521
  private fetchData;
@@ -8059,6 +8068,7 @@ declare class VaultsSdk {
8059
8068
  redeemStepsType: "instant" | "complex";
8060
8069
  rewardsSupported: boolean;
8061
8070
  };
8071
+ warnings: string[];
8062
8072
  }[];
8063
8073
  errors: {
8064
8074
  unsupportedNetworks: string[];
@@ -8210,6 +8220,7 @@ declare class VaultsSdk {
8210
8220
  redeemStepsType: "instant" | "complex";
8211
8221
  rewardsSupported: boolean;
8212
8222
  };
8223
+ warnings: string[];
8213
8224
  }>;
8214
8225
  getIdleAssets(params: Params<'/v2/portfolio/idle-assets/{userAddress}'>): Promise<{
8215
8226
  data: {
package/dist/client.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { Signer } from 'x402-fetch';
2
+
1
3
  /**
2
4
  * This file was auto-generated by openapi-typescript.
3
5
  * Do not make direct changes to the file.
@@ -1906,6 +1908,8 @@ interface paths {
1906
1908
  /** @description Indicates if the vault supports rewards transaction flows */
1907
1909
  rewardsSupported: boolean;
1908
1910
  };
1911
+ /** @description List of warnings related to the vault */
1912
+ warnings: string[];
1909
1913
  }[];
1910
1914
  errors: {
1911
1915
  unsupportedNetworks: string[];
@@ -2357,6 +2361,8 @@ interface paths {
2357
2361
  /** @description Indicates if the vault supports rewards transaction flows */
2358
2362
  rewardsSupported: boolean;
2359
2363
  };
2364
+ /** @description List of warnings related to the vault */
2365
+ warnings: string[];
2360
2366
  };
2361
2367
  };
2362
2368
  };
@@ -7473,9 +7479,11 @@ interface paths {
7473
7479
  };
7474
7480
  }
7475
7481
 
7476
- interface ConstructorOptions {
7482
+ type ConstructorOptions = {
7477
7483
  apiKey: string;
7478
- }
7484
+ } | {
7485
+ client: Signer;
7486
+ };
7479
7487
  interface InternalOptions {
7480
7488
  apiBaseUrl: string;
7481
7489
  }
@@ -7506,7 +7514,8 @@ type Body<T extends Endpoint> = paths[T]['post'] extends {
7506
7514
  type Params<T extends Endpoint> = Body<T> extends undefined ? ExtractParams<paths[T]['get' | 'post']> : ExtractParams<paths[T]['get' | 'post']> & Body<T>;
7507
7515
  declare class VaultsSdk {
7508
7516
  private apiBaseUrl;
7509
- private apiKey;
7517
+ private auth;
7518
+ private authHeaders;
7510
7519
  constructor(options: ConstructorOptions);
7511
7520
  constructor(options: ConstructorOptions, internalOptions: InternalOptions);
7512
7521
  private fetchData;
@@ -8059,6 +8068,7 @@ declare class VaultsSdk {
8059
8068
  redeemStepsType: "instant" | "complex";
8060
8069
  rewardsSupported: boolean;
8061
8070
  };
8071
+ warnings: string[];
8062
8072
  }[];
8063
8073
  errors: {
8064
8074
  unsupportedNetworks: string[];
@@ -8210,6 +8220,7 @@ declare class VaultsSdk {
8210
8220
  redeemStepsType: "instant" | "complex";
8211
8221
  rewardsSupported: boolean;
8212
8222
  };
8223
+ warnings: string[];
8213
8224
  }>;
8214
8225
  getIdleAssets(params: Params<'/v2/portfolio/idle-assets/{userAddress}'>): Promise<{
8215
8226
  data: {
package/dist/client.js CHANGED
@@ -23,6 +23,7 @@ __export(client_exports, {
23
23
  VaultsSdk: () => VaultsSdk
24
24
  });
25
25
  module.exports = __toCommonJS(client_exports);
26
+ var import_x402_fetch = require("x402-fetch");
26
27
 
27
28
  // src/errors.ts
28
29
  var HttpResponseError = class extends Error {
@@ -48,20 +49,27 @@ function generateQueryParams(queryParams) {
48
49
  // src/client.ts
49
50
  var VaultsSdk = class {
50
51
  apiBaseUrl;
51
- apiKey;
52
+ auth;
53
+ authHeaders;
52
54
  constructor(options, internalOptions) {
53
- this.apiKey = options.apiKey;
55
+ this.auth = options;
56
+ if ("apiKey" in this.auth) {
57
+ this.authHeaders = { "x-api-key": this.auth.apiKey };
58
+ } else {
59
+ this.authHeaders = { "x-402-auth": "true" };
60
+ }
54
61
  this.apiBaseUrl = internalOptions?.apiBaseUrl ?? "https://api.vaults.fyi";
55
62
  }
56
63
  async fetchData(endpoint, params, method = "GET") {
57
64
  const queryParams = generateQueryParams(params?.query);
58
65
  const body = params && "body" in params ? params.body : void 0;
59
66
  const stringifiedBody = body ? JSON.stringify(body) : void 0;
60
- const response = await fetch(`${this.apiBaseUrl}${endpoint}${queryParams}`, {
67
+ const wrappedFetch = "apiKey" in this.auth ? fetch : (0, import_x402_fetch.wrapFetchWithPayment)(fetch, this.auth.client);
68
+ const response = await wrappedFetch(`${this.apiBaseUrl}${endpoint}${queryParams}`, {
61
69
  method,
62
70
  headers: {
63
71
  "Content-Type": "application/json",
64
- "x-api-key": this.apiKey
72
+ ...this.authHeaders
65
73
  },
66
74
  body: stringifiedBody
67
75
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client.ts","../src/errors.ts","../src/utils/generateQueryParams.ts"],"sourcesContent":["import { HttpResponseError } from './errors'\nimport type { paths } from './types/openapi'\nimport { generateQueryParams } from './utils/generateQueryParams'\n\ninterface ConstructorOptions {\n apiKey: string\n}\n\ninterface InternalOptions {\n apiBaseUrl: string\n}\n\ntype Endpoint = keyof paths\ntype ExtractResponse<T> = T extends { responses: { 200: { content: { 'application/json': infer R } } } } ? R : never\ntype Response<T extends Endpoint> = ExtractResponse<paths[T]['get' | 'post']>\ntype ExtractParams<T> = T extends { parameters: infer P extends { path?: any; query?: any } }\n ? Pick<P, 'path' | 'query'>\n : never\n\ntype Body<T extends Endpoint> = paths[T]['post'] extends {\n requestBody: { content: { 'application/json': infer R } }\n}\n ? { body: R }\n : paths[T]['post'] extends {\n requestBody?: { content: { 'application/json': infer R } }\n }\n ? { body?: R }\n : undefined\n\ntype Params<T extends Endpoint> = Body<T> extends undefined\n ? ExtractParams<paths[T]['get' | 'post']>\n : ExtractParams<paths[T]['get' | 'post']> & Body<T>\n\nexport class VaultsSdk {\n private apiBaseUrl: string\n private apiKey: string\n\n constructor(options: ConstructorOptions)\n constructor(options: ConstructorOptions, internalOptions: InternalOptions)\n constructor(options: ConstructorOptions, internalOptions?: InternalOptions) {\n this.apiKey = options.apiKey\n this.apiBaseUrl = internalOptions?.apiBaseUrl ?? 'https://api.vaults.fyi'\n }\n\n private async fetchData<T extends Endpoint>(\n endpoint: string,\n params?: T extends Endpoint ? Params<T> : never,\n method: 'POST' | 'GET' = 'GET'\n ): Promise<T extends Endpoint ? Response<T> : never> {\n const queryParams = generateQueryParams(params?.query)\n\n const body = params && 'body' in params ? params.body : undefined\n const stringifiedBody = body ? JSON.stringify(body) : undefined\n\n const response = await fetch(`${this.apiBaseUrl}${endpoint}${queryParams}`, {\n method,\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': this.apiKey,\n },\n body: stringifiedBody,\n })\n\n if (!response.ok) {\n const error = await response.json()\n throw new HttpResponseError(error.message)\n }\n\n return response.json()\n }\n\n async getAssets(params: Params<'/v2/assets'>) {\n return await this.fetchData<'/v2/assets'>('/v2/assets', params)\n }\n\n async getBenchmarks(params: Params<'/v2/benchmarks/{network}'>) {\n return await this.fetchData<'/v2/benchmarks/{network}'>(`/v2/benchmarks/${params.path.network}`, params)\n }\n\n async getHistoricalBenchmarks(params: Params<'/v2/historical-benchmarks/{network}'>) {\n return await this.fetchData<'/v2/historical-benchmarks/{network}'>(\n `/v2/historical-benchmarks/${params.path.network}`,\n params\n )\n }\n\n async getVaultHistoricalData(params: Params<'/v2/historical/{network}/{vaultAddress}'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}'>(\n `/v2/historical/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getVaultHistoricalApy(params: Params<'/v2/historical/{network}/{vaultAddress}/apy'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}/apy'>(\n `/v2/historical/${network}/${vaultAddress}/apy`,\n params\n )\n }\n\n async getVaultHistoricalTvl(params: Params<'/v2/historical/{network}/{vaultAddress}/tvl'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}/tvl'>(\n `/v2/historical/${network}/${vaultAddress}/tvl`,\n params\n )\n }\n\n async getVaultHistoricalSharePrice(params: Params<'/v2/historical/{network}/{vaultAddress}/sharePrice'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}/sharePrice'>(\n `/v2/historical/${network}/${vaultAddress}/sharePrice`,\n params\n )\n }\n\n async getPositions(params: Params<'/v2/portfolio/positions/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/positions/{userAddress}'>(\n `/v2/portfolio/positions/${userAddress}`,\n params\n )\n }\n\n async getPosition(params: Params<'/v2/portfolio/positions/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/portfolio/positions/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/positions/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getDepositOptions(params: Params<'/v2/portfolio/best-deposit-options/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/best-deposit-options/{userAddress}'>(\n `/v2/portfolio/best-deposit-options/${userAddress}`,\n params\n )\n }\n\n async getAllVaults(params?: Params<'/v2/detailed-vaults'>) {\n return await this.fetchData<'/v2/detailed-vaults'>('/v2/detailed-vaults', params)\n }\n\n async getVault(params: Params<'/v2/detailed-vaults/{network}/{vaultAddress}'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/detailed-vaults/{network}/{vaultAddress}'>(\n `/v2/detailed-vaults/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getIdleAssets(params: Params<'/v2/portfolio/idle-assets/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/idle-assets/{userAddress}'>(\n `/v2/portfolio/idle-assets/${userAddress}`,\n params\n )\n }\n\n async getTransactionsContext(params: Params<'/v2/transactions/context/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/transactions/context/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/transactions/context/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getActions(params: Params<'/v2/transactions/{action}/{userAddress}/{network}/{vaultAddress}'>) {\n const { action, userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/transactions/{action}/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/transactions/${action}/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getRewardsTransactionsContext(params: Params<'/v2/transactions/rewards/context/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/transactions/rewards/context/{userAddress}'>(\n `/v2/transactions/rewards/context/${userAddress}`,\n params\n )\n }\n\n async getRewardsClaimActions(params: Params<'/v2/transactions/rewards/claim/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/transactions/rewards/claim/{userAddress}'>(\n `/v2/transactions/rewards/claim/${userAddress}`,\n params\n )\n }\n\n async getUserVaultEvents(params: Params<'/v2/portfolio/events/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/portfolio/events/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/events/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getUserVaultTotalReturns(params: Params<'/v2/portfolio/total-returns/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/portfolio/total-returns/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/total-returns/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n}\n","export class HttpResponseError extends Error {}\n","export function generateQueryParams(\n queryParams: Record<string, string | number | boolean | null | undefined | bigint | string[]> | undefined\n): string {\n if (!queryParams || Object.keys(queryParams).length === 0) return ''\n\n const params = new URLSearchParams()\n for (const [key, value] of Object.entries(queryParams)) {\n if (value == null) continue\n\n if (Array.isArray(value)) {\n for (const item of value) {\n params.append(key, item)\n }\n } else {\n params.set(key, value.toString())\n }\n }\n\n return `?${params}`\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/client.ts","../src/errors.ts","../src/utils/generateQueryParams.ts"],"sourcesContent":["import { type Signer, wrapFetchWithPayment } from 'x402-fetch'\nimport { HttpResponseError } from './errors'\nimport type { paths } from './types/openapi'\nimport { generateQueryParams } from './utils/generateQueryParams'\n\ntype ConstructorOptions =\n | {\n apiKey: string\n }\n | {\n client: Signer\n }\n\ninterface InternalOptions {\n apiBaseUrl: string\n}\n\ntype Endpoint = keyof paths\ntype ExtractResponse<T> = T extends { responses: { 200: { content: { 'application/json': infer R } } } } ? R : never\ntype Response<T extends Endpoint> = ExtractResponse<paths[T]['get' | 'post']>\ntype ExtractParams<T> = T extends { parameters: infer P extends { path?: any; query?: any } }\n ? Pick<P, 'path' | 'query'>\n : never\n\ntype Body<T extends Endpoint> = paths[T]['post'] extends {\n requestBody: { content: { 'application/json': infer R } }\n}\n ? { body: R }\n : paths[T]['post'] extends {\n requestBody?: { content: { 'application/json': infer R } }\n }\n ? { body?: R }\n : undefined\n\ntype Params<T extends Endpoint> = Body<T> extends undefined\n ? ExtractParams<paths[T]['get' | 'post']>\n : ExtractParams<paths[T]['get' | 'post']> & Body<T>\n\nexport class VaultsSdk {\n private apiBaseUrl: string\n private auth: ConstructorOptions\n private authHeaders: { 'x-api-key': string } | { 'x-402-auth': 'true' }\n\n constructor(options: ConstructorOptions)\n constructor(options: ConstructorOptions, internalOptions: InternalOptions)\n constructor(options: ConstructorOptions, internalOptions?: InternalOptions) {\n this.auth = options\n if ('apiKey' in this.auth) {\n this.authHeaders = { 'x-api-key': this.auth.apiKey }\n } else {\n this.authHeaders = { 'x-402-auth': 'true' }\n }\n this.apiBaseUrl = internalOptions?.apiBaseUrl ?? 'https://api.vaults.fyi'\n }\n\n private async fetchData<T extends Endpoint>(\n endpoint: string,\n params?: T extends Endpoint ? Params<T> : never,\n method: 'POST' | 'GET' = 'GET'\n ): Promise<T extends Endpoint ? Response<T> : never> {\n const queryParams = generateQueryParams(params?.query)\n\n const body = params && 'body' in params ? params.body : undefined\n const stringifiedBody = body ? JSON.stringify(body) : undefined\n\n const wrappedFetch = 'apiKey' in this.auth ? fetch : wrapFetchWithPayment(fetch, this.auth.client)\n const response = await wrappedFetch(`${this.apiBaseUrl}${endpoint}${queryParams}`, {\n method,\n headers: {\n 'Content-Type': 'application/json',\n ...this.authHeaders,\n },\n body: stringifiedBody,\n })\n\n if (!response.ok) {\n const error = await response.json()\n throw new HttpResponseError(error.message)\n }\n\n return response.json()\n }\n\n async getAssets(params: Params<'/v2/assets'>) {\n return await this.fetchData<'/v2/assets'>('/v2/assets', params)\n }\n\n async getBenchmarks(params: Params<'/v2/benchmarks/{network}'>) {\n return await this.fetchData<'/v2/benchmarks/{network}'>(`/v2/benchmarks/${params.path.network}`, params)\n }\n\n async getHistoricalBenchmarks(params: Params<'/v2/historical-benchmarks/{network}'>) {\n return await this.fetchData<'/v2/historical-benchmarks/{network}'>(\n `/v2/historical-benchmarks/${params.path.network}`,\n params\n )\n }\n\n async getVaultHistoricalData(params: Params<'/v2/historical/{network}/{vaultAddress}'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}'>(\n `/v2/historical/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getVaultHistoricalApy(params: Params<'/v2/historical/{network}/{vaultAddress}/apy'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}/apy'>(\n `/v2/historical/${network}/${vaultAddress}/apy`,\n params\n )\n }\n\n async getVaultHistoricalTvl(params: Params<'/v2/historical/{network}/{vaultAddress}/tvl'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}/tvl'>(\n `/v2/historical/${network}/${vaultAddress}/tvl`,\n params\n )\n }\n\n async getVaultHistoricalSharePrice(params: Params<'/v2/historical/{network}/{vaultAddress}/sharePrice'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}/sharePrice'>(\n `/v2/historical/${network}/${vaultAddress}/sharePrice`,\n params\n )\n }\n\n async getPositions(params: Params<'/v2/portfolio/positions/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/positions/{userAddress}'>(\n `/v2/portfolio/positions/${userAddress}`,\n params\n )\n }\n\n async getPosition(params: Params<'/v2/portfolio/positions/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/portfolio/positions/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/positions/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getDepositOptions(params: Params<'/v2/portfolio/best-deposit-options/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/best-deposit-options/{userAddress}'>(\n `/v2/portfolio/best-deposit-options/${userAddress}`,\n params\n )\n }\n\n async getAllVaults(params?: Params<'/v2/detailed-vaults'>) {\n return await this.fetchData<'/v2/detailed-vaults'>('/v2/detailed-vaults', params)\n }\n\n async getVault(params: Params<'/v2/detailed-vaults/{network}/{vaultAddress}'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/detailed-vaults/{network}/{vaultAddress}'>(\n `/v2/detailed-vaults/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getIdleAssets(params: Params<'/v2/portfolio/idle-assets/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/idle-assets/{userAddress}'>(\n `/v2/portfolio/idle-assets/${userAddress}`,\n params\n )\n }\n\n async getTransactionsContext(params: Params<'/v2/transactions/context/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/transactions/context/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/transactions/context/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getActions(params: Params<'/v2/transactions/{action}/{userAddress}/{network}/{vaultAddress}'>) {\n const { action, userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/transactions/{action}/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/transactions/${action}/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getRewardsTransactionsContext(params: Params<'/v2/transactions/rewards/context/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/transactions/rewards/context/{userAddress}'>(\n `/v2/transactions/rewards/context/${userAddress}`,\n params\n )\n }\n\n async getRewardsClaimActions(params: Params<'/v2/transactions/rewards/claim/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/transactions/rewards/claim/{userAddress}'>(\n `/v2/transactions/rewards/claim/${userAddress}`,\n params\n )\n }\n\n async getUserVaultEvents(params: Params<'/v2/portfolio/events/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/portfolio/events/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/events/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getUserVaultTotalReturns(params: Params<'/v2/portfolio/total-returns/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/portfolio/total-returns/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/total-returns/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n}\n","export class HttpResponseError extends Error {}\n","export function generateQueryParams(\n queryParams: Record<string, string | number | boolean | null | undefined | bigint | string[]> | undefined\n): string {\n if (!queryParams || Object.keys(queryParams).length === 0) return ''\n\n const params = new URLSearchParams()\n for (const [key, value] of Object.entries(queryParams)) {\n if (value == null) continue\n\n if (Array.isArray(value)) {\n for (const item of value) {\n params.append(key, item)\n }\n } else {\n params.set(key, value.toString())\n }\n }\n\n return `?${params}`\n}\n"],"mappings":"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","names":[]}
package/dist/client.mjs CHANGED
@@ -1,3 +1,6 @@
1
+ // src/client.ts
2
+ import { wrapFetchWithPayment } from "x402-fetch";
3
+
1
4
  // src/errors.ts
2
5
  var HttpResponseError = class extends Error {
3
6
  };
@@ -22,20 +25,27 @@ function generateQueryParams(queryParams) {
22
25
  // src/client.ts
23
26
  var VaultsSdk = class {
24
27
  apiBaseUrl;
25
- apiKey;
28
+ auth;
29
+ authHeaders;
26
30
  constructor(options, internalOptions) {
27
- this.apiKey = options.apiKey;
31
+ this.auth = options;
32
+ if ("apiKey" in this.auth) {
33
+ this.authHeaders = { "x-api-key": this.auth.apiKey };
34
+ } else {
35
+ this.authHeaders = { "x-402-auth": "true" };
36
+ }
28
37
  this.apiBaseUrl = internalOptions?.apiBaseUrl ?? "https://api.vaults.fyi";
29
38
  }
30
39
  async fetchData(endpoint, params, method = "GET") {
31
40
  const queryParams = generateQueryParams(params?.query);
32
41
  const body = params && "body" in params ? params.body : void 0;
33
42
  const stringifiedBody = body ? JSON.stringify(body) : void 0;
34
- const response = await fetch(`${this.apiBaseUrl}${endpoint}${queryParams}`, {
43
+ const wrappedFetch = "apiKey" in this.auth ? fetch : wrapFetchWithPayment(fetch, this.auth.client);
44
+ const response = await wrappedFetch(`${this.apiBaseUrl}${endpoint}${queryParams}`, {
35
45
  method,
36
46
  headers: {
37
47
  "Content-Type": "application/json",
38
- "x-api-key": this.apiKey
48
+ ...this.authHeaders
39
49
  },
40
50
  body: stringifiedBody
41
51
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/errors.ts","../src/utils/generateQueryParams.ts","../src/client.ts"],"sourcesContent":["export class HttpResponseError extends Error {}\n","export function generateQueryParams(\n queryParams: Record<string, string | number | boolean | null | undefined | bigint | string[]> | undefined\n): string {\n if (!queryParams || Object.keys(queryParams).length === 0) return ''\n\n const params = new URLSearchParams()\n for (const [key, value] of Object.entries(queryParams)) {\n if (value == null) continue\n\n if (Array.isArray(value)) {\n for (const item of value) {\n params.append(key, item)\n }\n } else {\n params.set(key, value.toString())\n }\n }\n\n return `?${params}`\n}\n","import { HttpResponseError } from './errors'\nimport type { paths } from './types/openapi'\nimport { generateQueryParams } from './utils/generateQueryParams'\n\ninterface ConstructorOptions {\n apiKey: string\n}\n\ninterface InternalOptions {\n apiBaseUrl: string\n}\n\ntype Endpoint = keyof paths\ntype ExtractResponse<T> = T extends { responses: { 200: { content: { 'application/json': infer R } } } } ? R : never\ntype Response<T extends Endpoint> = ExtractResponse<paths[T]['get' | 'post']>\ntype ExtractParams<T> = T extends { parameters: infer P extends { path?: any; query?: any } }\n ? Pick<P, 'path' | 'query'>\n : never\n\ntype Body<T extends Endpoint> = paths[T]['post'] extends {\n requestBody: { content: { 'application/json': infer R } }\n}\n ? { body: R }\n : paths[T]['post'] extends {\n requestBody?: { content: { 'application/json': infer R } }\n }\n ? { body?: R }\n : undefined\n\ntype Params<T extends Endpoint> = Body<T> extends undefined\n ? ExtractParams<paths[T]['get' | 'post']>\n : ExtractParams<paths[T]['get' | 'post']> & Body<T>\n\nexport class VaultsSdk {\n private apiBaseUrl: string\n private apiKey: string\n\n constructor(options: ConstructorOptions)\n constructor(options: ConstructorOptions, internalOptions: InternalOptions)\n constructor(options: ConstructorOptions, internalOptions?: InternalOptions) {\n this.apiKey = options.apiKey\n this.apiBaseUrl = internalOptions?.apiBaseUrl ?? 'https://api.vaults.fyi'\n }\n\n private async fetchData<T extends Endpoint>(\n endpoint: string,\n params?: T extends Endpoint ? Params<T> : never,\n method: 'POST' | 'GET' = 'GET'\n ): Promise<T extends Endpoint ? Response<T> : never> {\n const queryParams = generateQueryParams(params?.query)\n\n const body = params && 'body' in params ? params.body : undefined\n const stringifiedBody = body ? JSON.stringify(body) : undefined\n\n const response = await fetch(`${this.apiBaseUrl}${endpoint}${queryParams}`, {\n method,\n headers: {\n 'Content-Type': 'application/json',\n 'x-api-key': this.apiKey,\n },\n body: stringifiedBody,\n })\n\n if (!response.ok) {\n const error = await response.json()\n throw new HttpResponseError(error.message)\n }\n\n return response.json()\n }\n\n async getAssets(params: Params<'/v2/assets'>) {\n return await this.fetchData<'/v2/assets'>('/v2/assets', params)\n }\n\n async getBenchmarks(params: Params<'/v2/benchmarks/{network}'>) {\n return await this.fetchData<'/v2/benchmarks/{network}'>(`/v2/benchmarks/${params.path.network}`, params)\n }\n\n async getHistoricalBenchmarks(params: Params<'/v2/historical-benchmarks/{network}'>) {\n return await this.fetchData<'/v2/historical-benchmarks/{network}'>(\n `/v2/historical-benchmarks/${params.path.network}`,\n params\n )\n }\n\n async getVaultHistoricalData(params: Params<'/v2/historical/{network}/{vaultAddress}'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}'>(\n `/v2/historical/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getVaultHistoricalApy(params: Params<'/v2/historical/{network}/{vaultAddress}/apy'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}/apy'>(\n `/v2/historical/${network}/${vaultAddress}/apy`,\n params\n )\n }\n\n async getVaultHistoricalTvl(params: Params<'/v2/historical/{network}/{vaultAddress}/tvl'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}/tvl'>(\n `/v2/historical/${network}/${vaultAddress}/tvl`,\n params\n )\n }\n\n async getVaultHistoricalSharePrice(params: Params<'/v2/historical/{network}/{vaultAddress}/sharePrice'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}/sharePrice'>(\n `/v2/historical/${network}/${vaultAddress}/sharePrice`,\n params\n )\n }\n\n async getPositions(params: Params<'/v2/portfolio/positions/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/positions/{userAddress}'>(\n `/v2/portfolio/positions/${userAddress}`,\n params\n )\n }\n\n async getPosition(params: Params<'/v2/portfolio/positions/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/portfolio/positions/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/positions/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getDepositOptions(params: Params<'/v2/portfolio/best-deposit-options/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/best-deposit-options/{userAddress}'>(\n `/v2/portfolio/best-deposit-options/${userAddress}`,\n params\n )\n }\n\n async getAllVaults(params?: Params<'/v2/detailed-vaults'>) {\n return await this.fetchData<'/v2/detailed-vaults'>('/v2/detailed-vaults', params)\n }\n\n async getVault(params: Params<'/v2/detailed-vaults/{network}/{vaultAddress}'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/detailed-vaults/{network}/{vaultAddress}'>(\n `/v2/detailed-vaults/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getIdleAssets(params: Params<'/v2/portfolio/idle-assets/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/idle-assets/{userAddress}'>(\n `/v2/portfolio/idle-assets/${userAddress}`,\n params\n )\n }\n\n async getTransactionsContext(params: Params<'/v2/transactions/context/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/transactions/context/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/transactions/context/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getActions(params: Params<'/v2/transactions/{action}/{userAddress}/{network}/{vaultAddress}'>) {\n const { action, userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/transactions/{action}/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/transactions/${action}/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getRewardsTransactionsContext(params: Params<'/v2/transactions/rewards/context/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/transactions/rewards/context/{userAddress}'>(\n `/v2/transactions/rewards/context/${userAddress}`,\n params\n )\n }\n\n async getRewardsClaimActions(params: Params<'/v2/transactions/rewards/claim/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/transactions/rewards/claim/{userAddress}'>(\n `/v2/transactions/rewards/claim/${userAddress}`,\n params\n )\n }\n\n async getUserVaultEvents(params: Params<'/v2/portfolio/events/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/portfolio/events/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/events/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getUserVaultTotalReturns(params: Params<'/v2/portfolio/total-returns/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/portfolio/total-returns/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/total-returns/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../src/client.ts","../src/errors.ts","../src/utils/generateQueryParams.ts"],"sourcesContent":["import { type Signer, wrapFetchWithPayment } from 'x402-fetch'\nimport { HttpResponseError } from './errors'\nimport type { paths } from './types/openapi'\nimport { generateQueryParams } from './utils/generateQueryParams'\n\ntype ConstructorOptions =\n | {\n apiKey: string\n }\n | {\n client: Signer\n }\n\ninterface InternalOptions {\n apiBaseUrl: string\n}\n\ntype Endpoint = keyof paths\ntype ExtractResponse<T> = T extends { responses: { 200: { content: { 'application/json': infer R } } } } ? R : never\ntype Response<T extends Endpoint> = ExtractResponse<paths[T]['get' | 'post']>\ntype ExtractParams<T> = T extends { parameters: infer P extends { path?: any; query?: any } }\n ? Pick<P, 'path' | 'query'>\n : never\n\ntype Body<T extends Endpoint> = paths[T]['post'] extends {\n requestBody: { content: { 'application/json': infer R } }\n}\n ? { body: R }\n : paths[T]['post'] extends {\n requestBody?: { content: { 'application/json': infer R } }\n }\n ? { body?: R }\n : undefined\n\ntype Params<T extends Endpoint> = Body<T> extends undefined\n ? ExtractParams<paths[T]['get' | 'post']>\n : ExtractParams<paths[T]['get' | 'post']> & Body<T>\n\nexport class VaultsSdk {\n private apiBaseUrl: string\n private auth: ConstructorOptions\n private authHeaders: { 'x-api-key': string } | { 'x-402-auth': 'true' }\n\n constructor(options: ConstructorOptions)\n constructor(options: ConstructorOptions, internalOptions: InternalOptions)\n constructor(options: ConstructorOptions, internalOptions?: InternalOptions) {\n this.auth = options\n if ('apiKey' in this.auth) {\n this.authHeaders = { 'x-api-key': this.auth.apiKey }\n } else {\n this.authHeaders = { 'x-402-auth': 'true' }\n }\n this.apiBaseUrl = internalOptions?.apiBaseUrl ?? 'https://api.vaults.fyi'\n }\n\n private async fetchData<T extends Endpoint>(\n endpoint: string,\n params?: T extends Endpoint ? Params<T> : never,\n method: 'POST' | 'GET' = 'GET'\n ): Promise<T extends Endpoint ? Response<T> : never> {\n const queryParams = generateQueryParams(params?.query)\n\n const body = params && 'body' in params ? params.body : undefined\n const stringifiedBody = body ? JSON.stringify(body) : undefined\n\n const wrappedFetch = 'apiKey' in this.auth ? fetch : wrapFetchWithPayment(fetch, this.auth.client)\n const response = await wrappedFetch(`${this.apiBaseUrl}${endpoint}${queryParams}`, {\n method,\n headers: {\n 'Content-Type': 'application/json',\n ...this.authHeaders,\n },\n body: stringifiedBody,\n })\n\n if (!response.ok) {\n const error = await response.json()\n throw new HttpResponseError(error.message)\n }\n\n return response.json()\n }\n\n async getAssets(params: Params<'/v2/assets'>) {\n return await this.fetchData<'/v2/assets'>('/v2/assets', params)\n }\n\n async getBenchmarks(params: Params<'/v2/benchmarks/{network}'>) {\n return await this.fetchData<'/v2/benchmarks/{network}'>(`/v2/benchmarks/${params.path.network}`, params)\n }\n\n async getHistoricalBenchmarks(params: Params<'/v2/historical-benchmarks/{network}'>) {\n return await this.fetchData<'/v2/historical-benchmarks/{network}'>(\n `/v2/historical-benchmarks/${params.path.network}`,\n params\n )\n }\n\n async getVaultHistoricalData(params: Params<'/v2/historical/{network}/{vaultAddress}'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}'>(\n `/v2/historical/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getVaultHistoricalApy(params: Params<'/v2/historical/{network}/{vaultAddress}/apy'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}/apy'>(\n `/v2/historical/${network}/${vaultAddress}/apy`,\n params\n )\n }\n\n async getVaultHistoricalTvl(params: Params<'/v2/historical/{network}/{vaultAddress}/tvl'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}/tvl'>(\n `/v2/historical/${network}/${vaultAddress}/tvl`,\n params\n )\n }\n\n async getVaultHistoricalSharePrice(params: Params<'/v2/historical/{network}/{vaultAddress}/sharePrice'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/historical/{network}/{vaultAddress}/sharePrice'>(\n `/v2/historical/${network}/${vaultAddress}/sharePrice`,\n params\n )\n }\n\n async getPositions(params: Params<'/v2/portfolio/positions/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/positions/{userAddress}'>(\n `/v2/portfolio/positions/${userAddress}`,\n params\n )\n }\n\n async getPosition(params: Params<'/v2/portfolio/positions/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/portfolio/positions/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/positions/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getDepositOptions(params: Params<'/v2/portfolio/best-deposit-options/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/best-deposit-options/{userAddress}'>(\n `/v2/portfolio/best-deposit-options/${userAddress}`,\n params\n )\n }\n\n async getAllVaults(params?: Params<'/v2/detailed-vaults'>) {\n return await this.fetchData<'/v2/detailed-vaults'>('/v2/detailed-vaults', params)\n }\n\n async getVault(params: Params<'/v2/detailed-vaults/{network}/{vaultAddress}'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v2/detailed-vaults/{network}/{vaultAddress}'>(\n `/v2/detailed-vaults/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getIdleAssets(params: Params<'/v2/portfolio/idle-assets/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/idle-assets/{userAddress}'>(\n `/v2/portfolio/idle-assets/${userAddress}`,\n params\n )\n }\n\n async getTransactionsContext(params: Params<'/v2/transactions/context/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/transactions/context/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/transactions/context/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getActions(params: Params<'/v2/transactions/{action}/{userAddress}/{network}/{vaultAddress}'>) {\n const { action, userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/transactions/{action}/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/transactions/${action}/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getRewardsTransactionsContext(params: Params<'/v2/transactions/rewards/context/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/transactions/rewards/context/{userAddress}'>(\n `/v2/transactions/rewards/context/${userAddress}`,\n params\n )\n }\n\n async getRewardsClaimActions(params: Params<'/v2/transactions/rewards/claim/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v2/transactions/rewards/claim/{userAddress}'>(\n `/v2/transactions/rewards/claim/${userAddress}`,\n params\n )\n }\n\n async getUserVaultEvents(params: Params<'/v2/portfolio/events/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/portfolio/events/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/events/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getUserVaultTotalReturns(params: Params<'/v2/portfolio/total-returns/{userAddress}/{network}/{vaultAddress}'>) {\n const { userAddress, network, vaultAddress } = params.path\n return await this.fetchData<'/v2/portfolio/total-returns/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/total-returns/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n}\n","export class HttpResponseError extends Error {}\n","export function generateQueryParams(\n queryParams: Record<string, string | number | boolean | null | undefined | bigint | string[]> | undefined\n): string {\n if (!queryParams || Object.keys(queryParams).length === 0) return ''\n\n const params = new URLSearchParams()\n for (const [key, value] of Object.entries(queryParams)) {\n if (value == null) continue\n\n if (Array.isArray(value)) {\n for (const item of value) {\n params.append(key, item)\n }\n } else {\n params.set(key, value.toString())\n }\n }\n\n return `?${params}`\n}\n"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaultsfyi/sdk",
3
- "version": "2.1.4",
3
+ "version": "2.1.6",
4
4
  "description": "An SDK for interacting with the Vaults.fyi API",
5
5
  "main": "./dist/client.js",
6
6
  "module": "./dist/client.mjs",
@@ -23,5 +23,8 @@
23
23
  "tsup": "^8.4.0",
24
24
  "typescript": "5.5.4",
25
25
  "vitest": "3.2.3"
26
+ },
27
+ "dependencies": {
28
+ "x402-fetch": "0.7.0"
26
29
  }
27
30
  }