@vaultsfyi/sdk 1.0.2 → 1.0.3
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/README.md +23 -20
- package/dist/client.d.mts +2962 -7443
- package/dist/client.d.ts +2962 -7443
- package/dist/client.js +8 -73
- package/dist/client.js.map +1 -1
- package/dist/client.mjs +8 -73
- package/dist/client.mjs.map +1 -1
- package/package.json +3 -2
package/dist/client.js
CHANGED
|
@@ -71,89 +71,24 @@ var VaultsSdk = class {
|
|
|
71
71
|
}
|
|
72
72
|
return response.json();
|
|
73
73
|
}
|
|
74
|
-
async bestDepositOption(params) {
|
|
75
|
-
const { userAddress } = params.path;
|
|
76
|
-
return await this.fetchData(
|
|
77
|
-
`/v1/portfolio/best-deposit-options/${userAddress}`,
|
|
78
|
-
params,
|
|
79
|
-
"POST"
|
|
80
|
-
);
|
|
81
|
-
}
|
|
82
|
-
async getVault(params) {
|
|
83
|
-
const { network, vaultAddress } = params.path;
|
|
84
|
-
return await this.fetchData(
|
|
85
|
-
`/v1/vaults/${network}/${vaultAddress}/`,
|
|
86
|
-
params
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
async getDetailedVaults(params) {
|
|
90
|
-
return await this.fetchData("/v1/detailed/vaults", params);
|
|
91
|
-
}
|
|
92
|
-
async getVaultHolderEvents(params) {
|
|
93
|
-
const { network, vaultAddress, holder } = params.path;
|
|
94
|
-
return await this.fetchData(
|
|
95
|
-
`/v1/vaults/${network}/${vaultAddress}/holder-events/${holder}`,
|
|
96
|
-
params
|
|
97
|
-
);
|
|
98
|
-
}
|
|
99
|
-
async getVaultTotalReturns(params) {
|
|
100
|
-
const { network, vaultAddress, holder } = params.path;
|
|
101
|
-
return await this.fetchData(
|
|
102
|
-
`/v1/vaults/${network}/${vaultAddress}/holder-total-returns/${holder}`,
|
|
103
|
-
params
|
|
104
|
-
);
|
|
105
|
-
}
|
|
106
|
-
async getAllVaults(params) {
|
|
107
|
-
return await this.fetchData("/v1/detailed/vaults", params);
|
|
108
|
-
}
|
|
109
|
-
async getVaultApy(params) {
|
|
110
|
-
const { network, vaultAddress } = params.path;
|
|
111
|
-
return await this.fetchData(
|
|
112
|
-
`/v1/vaults/${network}/${vaultAddress}/apy`,
|
|
113
|
-
params
|
|
114
|
-
);
|
|
115
|
-
}
|
|
116
|
-
async getHistoricalData(params) {
|
|
117
|
-
const { network, vaultAddress } = params.path;
|
|
118
|
-
return await this.fetchData(
|
|
119
|
-
`/v1/vaults/${network}/${vaultAddress}/historical-data`,
|
|
120
|
-
params
|
|
121
|
-
);
|
|
122
|
-
}
|
|
123
|
-
async getActionsDetails(params) {
|
|
124
|
-
return await this.fetchData(
|
|
125
|
-
"/v1/transactions/vaults/actions/details",
|
|
126
|
-
params
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
async getWalletBalances(params) {
|
|
130
|
-
return await this.fetchData("/v1/transactions/wallet-balances", params);
|
|
131
|
-
}
|
|
132
|
-
async getAllPositions(params) {
|
|
133
|
-
const { userAddress } = params.path;
|
|
134
|
-
return await this.fetchData(`/v1/transactions/positions/${userAddress}`);
|
|
135
|
-
}
|
|
136
|
-
async getActions(endpoint, params) {
|
|
137
|
-
return await this.fetchData(endpoint, params);
|
|
138
|
-
}
|
|
139
74
|
async getBenchmarks() {
|
|
140
75
|
return await this.fetchData("/v1/benchmarks");
|
|
141
76
|
}
|
|
142
|
-
async
|
|
77
|
+
async getVaultHistoricalData(params) {
|
|
143
78
|
const { network, vaultAddress } = params.path;
|
|
144
79
|
return await this.fetchData(
|
|
145
80
|
`/v2/historical/${network}/${vaultAddress}`,
|
|
146
81
|
params
|
|
147
82
|
);
|
|
148
83
|
}
|
|
149
|
-
async
|
|
84
|
+
async getVaultTotalReturns(params) {
|
|
150
85
|
const { network, vaultAddress, userAddress } = params.path;
|
|
151
86
|
return await this.fetchData(
|
|
152
87
|
`/v2/portfolio/returns/${userAddress}/${network}/${vaultAddress}`,
|
|
153
88
|
params
|
|
154
89
|
);
|
|
155
90
|
}
|
|
156
|
-
async
|
|
91
|
+
async getPositions(params) {
|
|
157
92
|
const { userAddress } = params.path;
|
|
158
93
|
return await this.fetchData(
|
|
159
94
|
`/v2/portfolio/positions/${userAddress}`,
|
|
@@ -167,17 +102,17 @@ var VaultsSdk = class {
|
|
|
167
102
|
params
|
|
168
103
|
);
|
|
169
104
|
}
|
|
170
|
-
async
|
|
105
|
+
async getVaultHolderEvents(params) {
|
|
171
106
|
const { network, vaultAddress, userAddress } = params.path;
|
|
172
107
|
return await this.fetchData(
|
|
173
108
|
`/v2/portfolio/events/${userAddress}/${network}/${vaultAddress}`,
|
|
174
109
|
params
|
|
175
110
|
);
|
|
176
111
|
}
|
|
177
|
-
async
|
|
112
|
+
async getAllVaults(params) {
|
|
178
113
|
return await this.fetchData("/v2/detailed-vaults", params);
|
|
179
114
|
}
|
|
180
|
-
async
|
|
115
|
+
async getVault(params) {
|
|
181
116
|
const { network, vaultAddress } = params.path;
|
|
182
117
|
return await this.fetchData(
|
|
183
118
|
`/v2/detailed-vaults/${network}/${vaultAddress}`,
|
|
@@ -191,14 +126,14 @@ var VaultsSdk = class {
|
|
|
191
126
|
params
|
|
192
127
|
);
|
|
193
128
|
}
|
|
194
|
-
async
|
|
129
|
+
async getTransactionsContext(params) {
|
|
195
130
|
const { userAddress, network, vaultAddress } = params.path;
|
|
196
131
|
return await this.fetchData(
|
|
197
132
|
`/v2/transactions/context/${userAddress}/${network}/${vaultAddress}`,
|
|
198
133
|
params
|
|
199
134
|
);
|
|
200
135
|
}
|
|
201
|
-
async
|
|
136
|
+
async getActions(params) {
|
|
202
137
|
const { action, userAddress, network, vaultAddress } = params.path;
|
|
203
138
|
return await this.fetchData(
|
|
204
139
|
`/v2/transactions/${action}/${userAddress}/${network}/${vaultAddress}`,
|
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 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 Endpoint = keyof paths\ntype EndpointV2 = keyof pathsV2\n\ntype ExtractResponse<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 Response<T extends Endpoint> = ExtractResponse<paths[T]['get' | 'post']>\ntype ResponseV2<T extends EndpointV2> = ExtractResponseV2<pathsV2[T]['get' | 'post']>\n\ntype ExtractParams<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 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 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 Params<T extends Endpoint> = Body<T> extends undefined\n ? ExtractParams<paths[T]['get' | 'post']>\n : ExtractParams<paths[T]['get' | 'post']> & Body<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\ntype ActionEndpoint =\n | '/v1/transactions/vaults/deposit'\n | '/v1/transactions/vaults/redeem'\n | '/v1/transactions/vaults/request-redeem'\n | '/v1/transactions/vaults/claim-redeem'\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 | EndpointV2>(\n endpoint: string,\n params?: T extends Endpoint ? Params<T> : T extends EndpointV2 ? ParamsV2<T> : never,\n method: 'POST' | 'GET' = 'GET'\n ): Promise<T extends Endpoint ? Response<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 bestDepositOption(params: Params<'/v1/portfolio/best-deposit-options/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v1/portfolio/best-deposit-options/{userAddress}'>(\n `/v1/portfolio/best-deposit-options/${userAddress}`,\n params,\n 'POST'\n )\n }\n\n async getVault(params: Params<'/v1/vaults/{network}/{vaultAddress}/'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v1/vaults/{network}/{vaultAddress}/'>(\n `/v1/vaults/${network}/${vaultAddress}/`,\n params\n )\n }\n\n async getDetailedVaults(params: Params<'/v1/detailed/vaults'>) {\n return await this.fetchData<'/v1/detailed/vaults'>('/v1/detailed/vaults', params)\n }\n\n async getVaultHolderEvents(params: Params<'/v1/vaults/{network}/{vaultAddress}/holder-events/{holder}'>) {\n const { network, vaultAddress, holder } = params.path\n return await this.fetchData<'/v1/vaults/{network}/{vaultAddress}/holder-events/{holder}'>(\n `/v1/vaults/${network}/${vaultAddress}/holder-events/${holder}`,\n params\n )\n }\n\n async getVaultTotalReturns(params: Params<'/v1/vaults/{network}/{vaultAddress}/holder-total-returns/{holder}'>) {\n const { network, vaultAddress, holder } = params.path\n return await this.fetchData<'/v1/vaults/{network}/{vaultAddress}/holder-total-returns/{holder}'>(\n `/v1/vaults/${network}/${vaultAddress}/holder-total-returns/${holder}`,\n params\n )\n }\n\n async getAllVaults(params?: Params<'/v1/detailed/vaults'>) {\n return await this.fetchData<'/v1/detailed/vaults'>('/v1/detailed/vaults', params)\n }\n\n async getVaultApy(params: Params<'/v1/vaults/{network}/{vaultAddress}/apy'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v1/vaults/{network}/{vaultAddress}/apy'>(\n `/v1/vaults/${network}/${vaultAddress}/apy`,\n params\n )\n }\n\n async getHistoricalData(params: Params<'/v1/vaults/{network}/{vaultAddress}/historical-data'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v1/vaults/{network}/{vaultAddress}/historical-data'>(\n `/v1/vaults/${network}/${vaultAddress}/historical-data`,\n params\n )\n }\n\n async getActionsDetails(params: Params<'/v1/transactions/vaults/actions/details'>) {\n return await this.fetchData<'/v1/transactions/vaults/actions/details'>(\n '/v1/transactions/vaults/actions/details',\n params\n )\n }\n\n async getWalletBalances(params: Params<'/v1/portfolio/wallet-balances'>) {\n return await this.fetchData<'/v1/portfolio/wallet-balances'>('/v1/transactions/wallet-balances', params)\n }\n\n async getAllPositions(params: Params<'/v1/portfolio/positions/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v1/portfolio/positions/{userAddress}'>(`/v1/transactions/positions/${userAddress}`)\n }\n\n async getActions(endpoint: (ActionEndpoint | string) & {}, params: Params<ActionEndpoint>) {\n return await this.fetchData<ActionEndpoint>(endpoint, params)\n }\n\n async getBenchmarks() {\n return await this.fetchData<'/v1/benchmarks'>('/v1/benchmarks')\n }\n\n async getVaultHistoricalDataV2(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 getVaultTotalReturnsV2(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 getPositionsV2(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 getVaultHolderEventsV2(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 getAllVaultsV2(params?: ParamsV2<'/v2/detailed-vaults'>) {\n return await this.fetchData<'/v2/detailed-vaults'>('/v2/detailed-vaults', params)\n }\n\n async getVaultV2(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 getActionsDetailsV2(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 getActionsV2(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 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":[]}
|
package/dist/client.mjs
CHANGED
|
@@ -45,89 +45,24 @@ var VaultsSdk = class {
|
|
|
45
45
|
}
|
|
46
46
|
return response.json();
|
|
47
47
|
}
|
|
48
|
-
async bestDepositOption(params) {
|
|
49
|
-
const { userAddress } = params.path;
|
|
50
|
-
return await this.fetchData(
|
|
51
|
-
`/v1/portfolio/best-deposit-options/${userAddress}`,
|
|
52
|
-
params,
|
|
53
|
-
"POST"
|
|
54
|
-
);
|
|
55
|
-
}
|
|
56
|
-
async getVault(params) {
|
|
57
|
-
const { network, vaultAddress } = params.path;
|
|
58
|
-
return await this.fetchData(
|
|
59
|
-
`/v1/vaults/${network}/${vaultAddress}/`,
|
|
60
|
-
params
|
|
61
|
-
);
|
|
62
|
-
}
|
|
63
|
-
async getDetailedVaults(params) {
|
|
64
|
-
return await this.fetchData("/v1/detailed/vaults", params);
|
|
65
|
-
}
|
|
66
|
-
async getVaultHolderEvents(params) {
|
|
67
|
-
const { network, vaultAddress, holder } = params.path;
|
|
68
|
-
return await this.fetchData(
|
|
69
|
-
`/v1/vaults/${network}/${vaultAddress}/holder-events/${holder}`,
|
|
70
|
-
params
|
|
71
|
-
);
|
|
72
|
-
}
|
|
73
|
-
async getVaultTotalReturns(params) {
|
|
74
|
-
const { network, vaultAddress, holder } = params.path;
|
|
75
|
-
return await this.fetchData(
|
|
76
|
-
`/v1/vaults/${network}/${vaultAddress}/holder-total-returns/${holder}`,
|
|
77
|
-
params
|
|
78
|
-
);
|
|
79
|
-
}
|
|
80
|
-
async getAllVaults(params) {
|
|
81
|
-
return await this.fetchData("/v1/detailed/vaults", params);
|
|
82
|
-
}
|
|
83
|
-
async getVaultApy(params) {
|
|
84
|
-
const { network, vaultAddress } = params.path;
|
|
85
|
-
return await this.fetchData(
|
|
86
|
-
`/v1/vaults/${network}/${vaultAddress}/apy`,
|
|
87
|
-
params
|
|
88
|
-
);
|
|
89
|
-
}
|
|
90
|
-
async getHistoricalData(params) {
|
|
91
|
-
const { network, vaultAddress } = params.path;
|
|
92
|
-
return await this.fetchData(
|
|
93
|
-
`/v1/vaults/${network}/${vaultAddress}/historical-data`,
|
|
94
|
-
params
|
|
95
|
-
);
|
|
96
|
-
}
|
|
97
|
-
async getActionsDetails(params) {
|
|
98
|
-
return await this.fetchData(
|
|
99
|
-
"/v1/transactions/vaults/actions/details",
|
|
100
|
-
params
|
|
101
|
-
);
|
|
102
|
-
}
|
|
103
|
-
async getWalletBalances(params) {
|
|
104
|
-
return await this.fetchData("/v1/transactions/wallet-balances", params);
|
|
105
|
-
}
|
|
106
|
-
async getAllPositions(params) {
|
|
107
|
-
const { userAddress } = params.path;
|
|
108
|
-
return await this.fetchData(`/v1/transactions/positions/${userAddress}`);
|
|
109
|
-
}
|
|
110
|
-
async getActions(endpoint, params) {
|
|
111
|
-
return await this.fetchData(endpoint, params);
|
|
112
|
-
}
|
|
113
48
|
async getBenchmarks() {
|
|
114
49
|
return await this.fetchData("/v1/benchmarks");
|
|
115
50
|
}
|
|
116
|
-
async
|
|
51
|
+
async getVaultHistoricalData(params) {
|
|
117
52
|
const { network, vaultAddress } = params.path;
|
|
118
53
|
return await this.fetchData(
|
|
119
54
|
`/v2/historical/${network}/${vaultAddress}`,
|
|
120
55
|
params
|
|
121
56
|
);
|
|
122
57
|
}
|
|
123
|
-
async
|
|
58
|
+
async getVaultTotalReturns(params) {
|
|
124
59
|
const { network, vaultAddress, userAddress } = params.path;
|
|
125
60
|
return await this.fetchData(
|
|
126
61
|
`/v2/portfolio/returns/${userAddress}/${network}/${vaultAddress}`,
|
|
127
62
|
params
|
|
128
63
|
);
|
|
129
64
|
}
|
|
130
|
-
async
|
|
65
|
+
async getPositions(params) {
|
|
131
66
|
const { userAddress } = params.path;
|
|
132
67
|
return await this.fetchData(
|
|
133
68
|
`/v2/portfolio/positions/${userAddress}`,
|
|
@@ -141,17 +76,17 @@ var VaultsSdk = class {
|
|
|
141
76
|
params
|
|
142
77
|
);
|
|
143
78
|
}
|
|
144
|
-
async
|
|
79
|
+
async getVaultHolderEvents(params) {
|
|
145
80
|
const { network, vaultAddress, userAddress } = params.path;
|
|
146
81
|
return await this.fetchData(
|
|
147
82
|
`/v2/portfolio/events/${userAddress}/${network}/${vaultAddress}`,
|
|
148
83
|
params
|
|
149
84
|
);
|
|
150
85
|
}
|
|
151
|
-
async
|
|
86
|
+
async getAllVaults(params) {
|
|
152
87
|
return await this.fetchData("/v2/detailed-vaults", params);
|
|
153
88
|
}
|
|
154
|
-
async
|
|
89
|
+
async getVault(params) {
|
|
155
90
|
const { network, vaultAddress } = params.path;
|
|
156
91
|
return await this.fetchData(
|
|
157
92
|
`/v2/detailed-vaults/${network}/${vaultAddress}`,
|
|
@@ -165,14 +100,14 @@ var VaultsSdk = class {
|
|
|
165
100
|
params
|
|
166
101
|
);
|
|
167
102
|
}
|
|
168
|
-
async
|
|
103
|
+
async getTransactionsContext(params) {
|
|
169
104
|
const { userAddress, network, vaultAddress } = params.path;
|
|
170
105
|
return await this.fetchData(
|
|
171
106
|
`/v2/transactions/context/${userAddress}/${network}/${vaultAddress}`,
|
|
172
107
|
params
|
|
173
108
|
);
|
|
174
109
|
}
|
|
175
|
-
async
|
|
110
|
+
async getActions(params) {
|
|
176
111
|
const { action, userAddress, network, vaultAddress } = params.path;
|
|
177
112
|
return await this.fetchData(
|
|
178
113
|
`/v2/transactions/${action}/${userAddress}/${network}/${vaultAddress}`,
|
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 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 Endpoint = keyof paths\ntype EndpointV2 = keyof pathsV2\n\ntype ExtractResponse<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 Response<T extends Endpoint> = ExtractResponse<paths[T]['get' | 'post']>\ntype ResponseV2<T extends EndpointV2> = ExtractResponseV2<pathsV2[T]['get' | 'post']>\n\ntype ExtractParams<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 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 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 Params<T extends Endpoint> = Body<T> extends undefined\n ? ExtractParams<paths[T]['get' | 'post']>\n : ExtractParams<paths[T]['get' | 'post']> & Body<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\ntype ActionEndpoint =\n | '/v1/transactions/vaults/deposit'\n | '/v1/transactions/vaults/redeem'\n | '/v1/transactions/vaults/request-redeem'\n | '/v1/transactions/vaults/claim-redeem'\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 | EndpointV2>(\n endpoint: string,\n params?: T extends Endpoint ? Params<T> : T extends EndpointV2 ? ParamsV2<T> : never,\n method: 'POST' | 'GET' = 'GET'\n ): Promise<T extends Endpoint ? Response<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 bestDepositOption(params: Params<'/v1/portfolio/best-deposit-options/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v1/portfolio/best-deposit-options/{userAddress}'>(\n `/v1/portfolio/best-deposit-options/${userAddress}`,\n params,\n 'POST'\n )\n }\n\n async getVault(params: Params<'/v1/vaults/{network}/{vaultAddress}/'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v1/vaults/{network}/{vaultAddress}/'>(\n `/v1/vaults/${network}/${vaultAddress}/`,\n params\n )\n }\n\n async getDetailedVaults(params: Params<'/v1/detailed/vaults'>) {\n return await this.fetchData<'/v1/detailed/vaults'>('/v1/detailed/vaults', params)\n }\n\n async getVaultHolderEvents(params: Params<'/v1/vaults/{network}/{vaultAddress}/holder-events/{holder}'>) {\n const { network, vaultAddress, holder } = params.path\n return await this.fetchData<'/v1/vaults/{network}/{vaultAddress}/holder-events/{holder}'>(\n `/v1/vaults/${network}/${vaultAddress}/holder-events/${holder}`,\n params\n )\n }\n\n async getVaultTotalReturns(params: Params<'/v1/vaults/{network}/{vaultAddress}/holder-total-returns/{holder}'>) {\n const { network, vaultAddress, holder } = params.path\n return await this.fetchData<'/v1/vaults/{network}/{vaultAddress}/holder-total-returns/{holder}'>(\n `/v1/vaults/${network}/${vaultAddress}/holder-total-returns/${holder}`,\n params\n )\n }\n\n async getAllVaults(params?: Params<'/v1/detailed/vaults'>) {\n return await this.fetchData<'/v1/detailed/vaults'>('/v1/detailed/vaults', params)\n }\n\n async getVaultApy(params: Params<'/v1/vaults/{network}/{vaultAddress}/apy'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v1/vaults/{network}/{vaultAddress}/apy'>(\n `/v1/vaults/${network}/${vaultAddress}/apy`,\n params\n )\n }\n\n async getHistoricalData(params: Params<'/v1/vaults/{network}/{vaultAddress}/historical-data'>) {\n const { network, vaultAddress } = params.path\n return await this.fetchData<'/v1/vaults/{network}/{vaultAddress}/historical-data'>(\n `/v1/vaults/${network}/${vaultAddress}/historical-data`,\n params\n )\n }\n\n async getActionsDetails(params: Params<'/v1/transactions/vaults/actions/details'>) {\n return await this.fetchData<'/v1/transactions/vaults/actions/details'>(\n '/v1/transactions/vaults/actions/details',\n params\n )\n }\n\n async getWalletBalances(params: Params<'/v1/portfolio/wallet-balances'>) {\n return await this.fetchData<'/v1/portfolio/wallet-balances'>('/v1/transactions/wallet-balances', params)\n }\n\n async getAllPositions(params: Params<'/v1/portfolio/positions/{userAddress}'>) {\n const { userAddress } = params.path\n return await this.fetchData<'/v1/portfolio/positions/{userAddress}'>(`/v1/transactions/positions/${userAddress}`)\n }\n\n async getActions(endpoint: (ActionEndpoint | string) & {}, params: Params<ActionEndpoint>) {\n return await this.fetchData<ActionEndpoint>(endpoint, params)\n }\n\n async getBenchmarks() {\n return await this.fetchData<'/v1/benchmarks'>('/v1/benchmarks')\n }\n\n async getVaultHistoricalDataV2(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 getVaultTotalReturnsV2(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 getPositionsV2(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 getVaultHolderEventsV2(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 getAllVaultsV2(params?: ParamsV2<'/v2/detailed-vaults'>) {\n return await this.fetchData<'/v2/detailed-vaults'>('/v2/detailed-vaults', params)\n }\n\n async getVaultV2(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 getActionsDetailsV2(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 getActionsV2(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 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":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vaultsfyi/sdk",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "An SDK for interacting with the Vaults.fyi API",
|
|
5
5
|
"main": "./dist/client.js",
|
|
6
6
|
"module": "./dist/client.mjs",
|
|
@@ -13,7 +13,8 @@
|
|
|
13
13
|
"typecheck": "tsc --noEmit",
|
|
14
14
|
"lint": "pnpm typecheck && biome check .",
|
|
15
15
|
"lint:fix": "biome check . --write",
|
|
16
|
-
"build": "tsup ./src/client.ts --format esm,cjs --dts --sourcemap"
|
|
16
|
+
"build": "tsup ./src/client.ts --format esm,cjs --dts --sourcemap",
|
|
17
|
+
"publishPackage": "pnpm build && npm publish --access public"
|
|
17
18
|
},
|
|
18
19
|
"devDependencies": {
|
|
19
20
|
"@biomejs/biome": "catalog:",
|