@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 +12 -0
- package/dist/client.d.mts +14 -3
- package/dist/client.d.ts +14 -3
- package/dist/client.js +12 -4
- package/dist/client.js.map +1 -1
- package/dist/client.mjs +14 -4
- package/dist/client.mjs.map +1 -1
- package/package.json +4 -1
package/CHANGELOG.md
CHANGED
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
52
|
+
auth;
|
|
53
|
+
authHeaders;
|
|
52
54
|
constructor(options, internalOptions) {
|
|
53
|
-
this.
|
|
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
|
|
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
|
-
|
|
72
|
+
...this.authHeaders
|
|
65
73
|
},
|
|
66
74
|
body: stringifiedBody
|
|
67
75
|
});
|
package/dist/client.js.map
CHANGED
|
@@ -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
|
-
|
|
28
|
+
auth;
|
|
29
|
+
authHeaders;
|
|
26
30
|
constructor(options, internalOptions) {
|
|
27
|
-
this.
|
|
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
|
|
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
|
-
|
|
48
|
+
...this.authHeaders
|
|
39
49
|
},
|
|
40
50
|
body: stringifiedBody
|
|
41
51
|
});
|
package/dist/client.mjs.map
CHANGED
|
@@ -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.
|
|
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
|
}
|