@vaultsfyi/sdk 1.0.3 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/client.js CHANGED
@@ -71,8 +71,8 @@ var VaultsSdk = class {
71
71
  }
72
72
  return response.json();
73
73
  }
74
- async getBenchmarks() {
75
- return await this.fetchData("/v1/benchmarks");
74
+ async getBenchmarks(params) {
75
+ return await this.fetchData(`/v2/benchmarks/${params.path.network}`, params);
76
76
  }
77
77
  async getVaultHistoricalData(params) {
78
78
  const { network, vaultAddress } = params.path;
@@ -95,6 +95,13 @@ var VaultsSdk = class {
95
95
  params
96
96
  );
97
97
  }
98
+ async getPosition(params) {
99
+ const { userAddress, network, vaultAddress } = params.path;
100
+ return await this.fetchData(
101
+ `/v2/portfolio/positions/${userAddress}/${network}/${vaultAddress}`,
102
+ params
103
+ );
104
+ }
98
105
  async getDepositOptions(params) {
99
106
  const { userAddress } = params.path;
100
107
  return await this.fetchData(
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/client.ts","../src/errors.ts","../src/utils/generateQueryParams.ts"],"sourcesContent":["import { HttpResponseError } from './errors'\nimport type { paths as pathsV1 } from './types/openapi'\nimport type { paths as pathsV2 } from './types/openapiV2'\nimport { generateQueryParams } from './utils/generateQueryParams'\n\ninterface ConstructorOptions {\n apiKey: string\n}\n\ninterface InternalOptions {\n apiBaseUrl: string\n}\n\ntype EndpointV1 = keyof pathsV1\ntype EndpointV2 = keyof pathsV2\n\ntype ExtractResponseV1<T> = T extends { responses: { 200: { content: { 'application/json': infer R } } } } ? R : never\ntype ExtractResponseV2<T> = T extends { responses: { 200: { content: { 'application/json': infer R } } } } ? R : never\n\ntype ResponseV1<T extends EndpointV1> = ExtractResponseV1<pathsV1[T]['get' | 'post']>\ntype ResponseV2<T extends EndpointV2> = ExtractResponseV2<pathsV2[T]['get' | 'post']>\n\ntype ExtractParamsV1<T> = T extends { parameters: infer P extends { path?: any; query?: any } }\n ? Pick<P, 'path' | 'query'>\n : never\ntype ExtractParamsV2<T> = T extends { parameters: infer P extends { path?: any; query?: any } }\n ? Pick<P, 'path' | 'query'>\n : never\n\ntype BodyV1<T extends EndpointV1> = pathsV1[T]['post'] extends {\n requestBody: { content: { 'application/json': infer R } }\n}\n ? { body: R }\n : pathsV1[T]['post'] extends {\n requestBody?: { content: { 'application/json': infer R } }\n }\n ? { body?: R }\n : undefined\n\ntype BodyV2<T extends EndpointV2> = pathsV2[T]['post'] extends {\n requestBody: { content: { 'application/json': infer R } }\n}\n ? { body: R }\n : pathsV2[T]['post'] extends {\n requestBody?: { content: { 'application/json': infer R } }\n }\n ? { body?: R }\n : undefined\n\ntype ParamsV1<T extends EndpointV1> = BodyV1<T> extends undefined\n ? ExtractParamsV1<pathsV1[T]['get' | 'post']>\n : ExtractParamsV1<pathsV1[T]['get' | 'post']> & BodyV1<T>\n\ntype ParamsV2<T extends EndpointV2> = BodyV2<T> extends undefined\n ? ExtractParamsV2<pathsV2[T]['get' | 'post']>\n : ExtractParamsV2<pathsV2[T]['get' | 'post']> & BodyV2<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 EndpointV1 | EndpointV2>(\n endpoint: string,\n params?: T extends EndpointV1 ? ParamsV1<T> : T extends EndpointV2 ? ParamsV2<T> : never,\n method: 'POST' | 'GET' = 'GET'\n ): Promise<T extends EndpointV1 ? ResponseV1<T> : T extends EndpointV2 ? ResponseV2<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 getBenchmarks() {\n return await this.fetchData<'/v1/benchmarks'>('/v1/benchmarks')\n }\n\n async getVaultHistoricalData(params: ParamsV2<'/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 getVaultTotalReturns(params: ParamsV2<'/v2/portfolio/returns/{userAddress}/{network}/{vaultAddress}'>) {\n const { network, vaultAddress, userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/returns/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/returns/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getPositions(params: ParamsV2<'/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 getDepositOptions(params: ParamsV2<'/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 getVaultHolderEvents(params: ParamsV2<'/v2/portfolio/events/{userAddress}/{network}/{vaultAddress}'>) {\n const { network, vaultAddress, userAddress } = 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 getAllVaults(params?: ParamsV2<'/v2/detailed-vaults'>) {\n return await this.fetchData<'/v2/detailed-vaults'>('/v2/detailed-vaults', params)\n }\n\n async getVault(params: ParamsV2<'/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: ParamsV2<'/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: ParamsV2<'/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: ParamsV2<'/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","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 { 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 getBenchmarks(params: Params<'/v2/benchmarks/{network}'>) {\n return await this.fetchData<'/v2/benchmarks/{network}'>(`/v2/benchmarks/${params.path.network}`, params)\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 getVaultTotalReturns(params: Params<'/v2/portfolio/returns/{userAddress}/{network}/{vaultAddress}'>) {\n const { network, vaultAddress, userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/returns/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/returns/${userAddress}/${network}/${vaultAddress}`,\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 getVaultHolderEvents(params: Params<'/v2/portfolio/events/{userAddress}/{network}/{vaultAddress}'>) {\n const { network, vaultAddress, userAddress } = 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 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","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
@@ -45,8 +45,8 @@ var VaultsSdk = class {
45
45
  }
46
46
  return response.json();
47
47
  }
48
- async getBenchmarks() {
49
- return await this.fetchData("/v1/benchmarks");
48
+ async getBenchmarks(params) {
49
+ return await this.fetchData(`/v2/benchmarks/${params.path.network}`, params);
50
50
  }
51
51
  async getVaultHistoricalData(params) {
52
52
  const { network, vaultAddress } = params.path;
@@ -69,6 +69,13 @@ var VaultsSdk = class {
69
69
  params
70
70
  );
71
71
  }
72
+ async getPosition(params) {
73
+ const { userAddress, network, vaultAddress } = params.path;
74
+ return await this.fetchData(
75
+ `/v2/portfolio/positions/${userAddress}/${network}/${vaultAddress}`,
76
+ params
77
+ );
78
+ }
72
79
  async getDepositOptions(params) {
73
80
  const { userAddress } = params.path;
74
81
  return await this.fetchData(
@@ -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 as pathsV1 } from './types/openapi'\nimport type { paths as pathsV2 } from './types/openapiV2'\nimport { generateQueryParams } from './utils/generateQueryParams'\n\ninterface ConstructorOptions {\n apiKey: string\n}\n\ninterface InternalOptions {\n apiBaseUrl: string\n}\n\ntype EndpointV1 = keyof pathsV1\ntype EndpointV2 = keyof pathsV2\n\ntype ExtractResponseV1<T> = T extends { responses: { 200: { content: { 'application/json': infer R } } } } ? R : never\ntype ExtractResponseV2<T> = T extends { responses: { 200: { content: { 'application/json': infer R } } } } ? R : never\n\ntype ResponseV1<T extends EndpointV1> = ExtractResponseV1<pathsV1[T]['get' | 'post']>\ntype ResponseV2<T extends EndpointV2> = ExtractResponseV2<pathsV2[T]['get' | 'post']>\n\ntype ExtractParamsV1<T> = T extends { parameters: infer P extends { path?: any; query?: any } }\n ? Pick<P, 'path' | 'query'>\n : never\ntype ExtractParamsV2<T> = T extends { parameters: infer P extends { path?: any; query?: any } }\n ? Pick<P, 'path' | 'query'>\n : never\n\ntype BodyV1<T extends EndpointV1> = pathsV1[T]['post'] extends {\n requestBody: { content: { 'application/json': infer R } }\n}\n ? { body: R }\n : pathsV1[T]['post'] extends {\n requestBody?: { content: { 'application/json': infer R } }\n }\n ? { body?: R }\n : undefined\n\ntype BodyV2<T extends EndpointV2> = pathsV2[T]['post'] extends {\n requestBody: { content: { 'application/json': infer R } }\n}\n ? { body: R }\n : pathsV2[T]['post'] extends {\n requestBody?: { content: { 'application/json': infer R } }\n }\n ? { body?: R }\n : undefined\n\ntype ParamsV1<T extends EndpointV1> = BodyV1<T> extends undefined\n ? ExtractParamsV1<pathsV1[T]['get' | 'post']>\n : ExtractParamsV1<pathsV1[T]['get' | 'post']> & BodyV1<T>\n\ntype ParamsV2<T extends EndpointV2> = BodyV2<T> extends undefined\n ? ExtractParamsV2<pathsV2[T]['get' | 'post']>\n : ExtractParamsV2<pathsV2[T]['get' | 'post']> & BodyV2<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 EndpointV1 | EndpointV2>(\n endpoint: string,\n params?: T extends EndpointV1 ? ParamsV1<T> : T extends EndpointV2 ? ParamsV2<T> : never,\n method: 'POST' | 'GET' = 'GET'\n ): Promise<T extends EndpointV1 ? ResponseV1<T> : T extends EndpointV2 ? ResponseV2<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 getBenchmarks() {\n return await this.fetchData<'/v1/benchmarks'>('/v1/benchmarks')\n }\n\n async getVaultHistoricalData(params: ParamsV2<'/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 getVaultTotalReturns(params: ParamsV2<'/v2/portfolio/returns/{userAddress}/{network}/{vaultAddress}'>) {\n const { network, vaultAddress, userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/returns/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/returns/${userAddress}/${network}/${vaultAddress}`,\n params\n )\n }\n\n async getPositions(params: ParamsV2<'/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 getDepositOptions(params: ParamsV2<'/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 getVaultHolderEvents(params: ParamsV2<'/v2/portfolio/events/{userAddress}/{network}/{vaultAddress}'>) {\n const { network, vaultAddress, userAddress } = 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 getAllVaults(params?: ParamsV2<'/v2/detailed-vaults'>) {\n return await this.fetchData<'/v2/detailed-vaults'>('/v2/detailed-vaults', params)\n }\n\n async getVault(params: ParamsV2<'/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: ParamsV2<'/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: ParamsV2<'/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: ParamsV2<'/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"],"mappings":"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","names":[]}
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 getBenchmarks(params: Params<'/v2/benchmarks/{network}'>) {\n return await this.fetchData<'/v2/benchmarks/{network}'>(`/v2/benchmarks/${params.path.network}`, params)\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 getVaultTotalReturns(params: Params<'/v2/portfolio/returns/{userAddress}/{network}/{vaultAddress}'>) {\n const { network, vaultAddress, userAddress } = params.path\n return await this.fetchData<'/v2/portfolio/returns/{userAddress}/{network}/{vaultAddress}'>(\n `/v2/portfolio/returns/${userAddress}/${network}/${vaultAddress}`,\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 getVaultHolderEvents(params: Params<'/v2/portfolio/events/{userAddress}/{network}/{vaultAddress}'>) {\n const { network, vaultAddress, userAddress } = 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 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"],"mappings":"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","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vaultsfyi/sdk",
3
- "version": "1.0.3",
3
+ "version": "2.0.0",
4
4
  "description": "An SDK for interacting with the Vaults.fyi API",
5
5
  "main": "./dist/client.js",
6
6
  "module": "./dist/client.mjs",
@@ -9,7 +9,7 @@
9
9
  },
10
10
  "files": ["dist", "README.md", "CHANGELOG.md"],
11
11
  "scripts": {
12
- "updateOpenApiSchema": "openapi-typescript http://localhost:3001/v1/documentation/json -o ./src/types/openapi.ts && openapi-typescript http://localhost:3001/v2/documentation/json -o ./src/types/openapiV2.ts && biome check ./src/types/openapi.ts ./src/types/openapiV2.ts --write",
12
+ "updateOpenApiSchema": "openapi-typescript http://localhost:3001/v2/documentation/json -o ./src/types/openapi.ts && biome check ./src/types/openapi.ts --write",
13
13
  "typecheck": "tsc --noEmit",
14
14
  "lint": "pnpm typecheck && biome check .",
15
15
  "lint:fix": "biome check . --write",
@@ -21,6 +21,6 @@
21
21
  "openapi-typescript": "^7.4.1",
22
22
  "tsup": "^8.4.0",
23
23
  "typescript": "catalog:",
24
- "vitest": "2.1.1"
24
+ "vitest": "catalog:"
25
25
  }
26
26
  }