@compass-labs/api-sdk 2.1.16 → 2.1.17-rc.1

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.
Files changed (113) hide show
  1. package/README.md +3 -5
  2. package/codeSamples_typescript.yaml +1 -7
  3. package/dist/commonjs/funcs/earnEarnVaults.d.ts +6 -3
  4. package/dist/commonjs/funcs/earnEarnVaults.d.ts.map +1 -1
  5. package/dist/commonjs/funcs/earnEarnVaults.js +7 -3
  6. package/dist/commonjs/funcs/earnEarnVaults.js.map +1 -1
  7. package/dist/commonjs/lib/config.d.ts +2 -2
  8. package/dist/commonjs/lib/config.js +2 -2
  9. package/dist/commonjs/models/components/index.d.ts +1 -2
  10. package/dist/commonjs/models/components/index.d.ts.map +1 -1
  11. package/dist/commonjs/models/components/index.js +1 -2
  12. package/dist/commonjs/models/components/index.js.map +1 -1
  13. package/dist/commonjs/models/components/vaultinfo.d.ts +22 -110
  14. package/dist/commonjs/models/components/vaultinfo.d.ts.map +1 -1
  15. package/dist/commonjs/models/components/vaultinfo.js +19 -58
  16. package/dist/commonjs/models/components/vaultinfo.js.map +1 -1
  17. package/dist/commonjs/models/components/{vaultslistresponse.d.ts → vaultsresponse.d.ts} +5 -5
  18. package/dist/commonjs/models/components/vaultsresponse.d.ts.map +1 -0
  19. package/dist/commonjs/models/components/{vaultslistresponse.js → vaultsresponse.js} +6 -6
  20. package/dist/commonjs/models/components/vaultsresponse.js.map +1 -0
  21. package/dist/commonjs/models/operations/index.d.ts +0 -1
  22. package/dist/commonjs/models/operations/index.d.ts.map +1 -1
  23. package/dist/commonjs/models/operations/index.js +0 -1
  24. package/dist/commonjs/models/operations/index.js.map +1 -1
  25. package/dist/commonjs/models/operations/v2earnvaults.d.ts +5 -0
  26. package/dist/commonjs/models/operations/v2earnvaults.d.ts.map +1 -1
  27. package/dist/commonjs/models/operations/v2earnvaults.js +2 -0
  28. package/dist/commonjs/models/operations/v2earnvaults.js.map +1 -1
  29. package/dist/commonjs/sdk/earn.d.ts +5 -9
  30. package/dist/commonjs/sdk/earn.d.ts.map +1 -1
  31. package/dist/commonjs/sdk/earn.js +4 -11
  32. package/dist/commonjs/sdk/earn.js.map +1 -1
  33. package/dist/esm/funcs/earnEarnVaults.d.ts +6 -3
  34. package/dist/esm/funcs/earnEarnVaults.d.ts.map +1 -1
  35. package/dist/esm/funcs/earnEarnVaults.js +7 -3
  36. package/dist/esm/funcs/earnEarnVaults.js.map +1 -1
  37. package/dist/esm/lib/config.d.ts +2 -2
  38. package/dist/esm/lib/config.js +2 -2
  39. package/dist/esm/models/components/index.d.ts +1 -2
  40. package/dist/esm/models/components/index.d.ts.map +1 -1
  41. package/dist/esm/models/components/index.js +1 -2
  42. package/dist/esm/models/components/index.js.map +1 -1
  43. package/dist/esm/models/components/vaultinfo.d.ts +22 -110
  44. package/dist/esm/models/components/vaultinfo.d.ts.map +1 -1
  45. package/dist/esm/models/components/vaultinfo.js +19 -58
  46. package/dist/esm/models/components/vaultinfo.js.map +1 -1
  47. package/dist/esm/models/components/{vaultslistresponse.d.ts → vaultsresponse.d.ts} +5 -5
  48. package/dist/esm/models/components/vaultsresponse.d.ts.map +1 -0
  49. package/dist/esm/models/components/{vaultslistresponse.js → vaultsresponse.js} +4 -4
  50. package/dist/esm/models/components/vaultsresponse.js.map +1 -0
  51. package/dist/esm/models/operations/index.d.ts +0 -1
  52. package/dist/esm/models/operations/index.d.ts.map +1 -1
  53. package/dist/esm/models/operations/index.js +0 -1
  54. package/dist/esm/models/operations/index.js.map +1 -1
  55. package/dist/esm/models/operations/v2earnvaults.d.ts +5 -0
  56. package/dist/esm/models/operations/v2earnvaults.d.ts.map +1 -1
  57. package/dist/esm/models/operations/v2earnvaults.js +2 -0
  58. package/dist/esm/models/operations/v2earnvaults.js.map +1 -1
  59. package/dist/esm/sdk/earn.d.ts +5 -9
  60. package/dist/esm/sdk/earn.d.ts.map +1 -1
  61. package/dist/esm/sdk/earn.js +4 -11
  62. package/dist/esm/sdk/earn.js.map +1 -1
  63. package/docs/models/components/vaultinfo.md +19 -43
  64. package/docs/models/components/{vaultslistresponse.md → vaultsresponse.md} +15 -8
  65. package/docs/models/operations/v2earnvaultsrequest.md +4 -3
  66. package/docs/sdks/earn/README.md +8 -84
  67. package/examples/node_modules/@types/node/README.md +1 -1
  68. package/examples/node_modules/@types/node/package.json +2 -2
  69. package/examples/node_modules/@types/node/process.d.ts +5 -0
  70. package/examples/package-lock.json +3 -3
  71. package/package.json +1 -1
  72. package/src/funcs/earnEarnVaults.ts +10 -6
  73. package/src/lib/config.ts +2 -2
  74. package/src/models/components/index.ts +1 -2
  75. package/src/models/components/vaultinfo.ts +41 -168
  76. package/src/models/components/{vaultslistresponse.ts → vaultsresponse.ts} +8 -8
  77. package/src/models/operations/index.ts +0 -1
  78. package/src/models/operations/v2earnvaults.ts +7 -0
  79. package/src/sdk/earn.ts +5 -20
  80. package/dist/commonjs/funcs/earnEarnPositionsPositionId.d.ts +0 -19
  81. package/dist/commonjs/funcs/earnEarnPositionsPositionId.d.ts.map +0 -1
  82. package/dist/commonjs/funcs/earnEarnPositionsPositionId.js +0 -129
  83. package/dist/commonjs/funcs/earnEarnPositionsPositionId.js.map +0 -1
  84. package/dist/commonjs/models/components/earnpositionresponse.d.ts +0 -25
  85. package/dist/commonjs/models/components/earnpositionresponse.d.ts.map +0 -1
  86. package/dist/commonjs/models/components/earnpositionresponse.js +0 -64
  87. package/dist/commonjs/models/components/earnpositionresponse.js.map +0 -1
  88. package/dist/commonjs/models/components/vaultslistresponse.d.ts.map +0 -1
  89. package/dist/commonjs/models/components/vaultslistresponse.js.map +0 -1
  90. package/dist/commonjs/models/operations/v2earnpositionspositionid.d.ts +0 -25
  91. package/dist/commonjs/models/operations/v2earnpositionspositionid.d.ts.map +0 -1
  92. package/dist/commonjs/models/operations/v2earnpositionspositionid.js +0 -57
  93. package/dist/commonjs/models/operations/v2earnpositionspositionid.js.map +0 -1
  94. package/dist/esm/funcs/earnEarnPositionsPositionId.d.ts +0 -19
  95. package/dist/esm/funcs/earnEarnPositionsPositionId.d.ts.map +0 -1
  96. package/dist/esm/funcs/earnEarnPositionsPositionId.js +0 -93
  97. package/dist/esm/funcs/earnEarnPositionsPositionId.js.map +0 -1
  98. package/dist/esm/models/components/earnpositionresponse.d.ts +0 -25
  99. package/dist/esm/models/components/earnpositionresponse.d.ts.map +0 -1
  100. package/dist/esm/models/components/earnpositionresponse.js +0 -26
  101. package/dist/esm/models/components/earnpositionresponse.js.map +0 -1
  102. package/dist/esm/models/components/vaultslistresponse.d.ts.map +0 -1
  103. package/dist/esm/models/components/vaultslistresponse.js.map +0 -1
  104. package/dist/esm/models/operations/v2earnpositionspositionid.d.ts +0 -25
  105. package/dist/esm/models/operations/v2earnpositionspositionid.d.ts.map +0 -1
  106. package/dist/esm/models/operations/v2earnpositionspositionid.js +0 -20
  107. package/dist/esm/models/operations/v2earnpositionspositionid.js.map +0 -1
  108. package/docs/models/components/earnpositionresponse.md +0 -26
  109. package/docs/models/components/positionunion.md +0 -32
  110. package/docs/models/operations/v2earnpositionspositionidrequest.md +0 -21
  111. package/src/funcs/earnEarnPositionsPositionId.ts +0 -183
  112. package/src/models/components/earnpositionresponse.ts +0 -74
  113. package/src/models/operations/v2earnpositionspositionid.ts +0 -54
@@ -27,10 +27,13 @@ import { APICall, APIPromise } from "../types/async.js";
27
27
  import { Result } from "../types/fp.js";
28
28
 
29
29
  /**
30
- * List vaults
30
+ * List Vaults
31
31
  *
32
32
  * @remarks
33
- * This endpoint fetches a curated list of DeFi vaults.
33
+ * Fetch ERC-4626 vaults from the database with TVL and APY stats.
34
+ *
35
+ * Returns a paginated list of ERC-4626 vaults indexed from various chains, joined with
36
+ * their current statistics (TVL in USD, 7d/30d/90d APY).
34
37
  */
35
38
  export function earnEarnVaults(
36
39
  client: CompassApiSDKCore,
@@ -38,7 +41,7 @@ export function earnEarnVaults(
38
41
  options?: RequestOptions,
39
42
  ): APIPromise<
40
43
  Result<
41
- components.VaultsListResponse,
44
+ components.VaultsResponse,
42
45
  | errors.HTTPValidationError
43
46
  | CompassAPISDKError
44
47
  | ResponseValidationError
@@ -64,7 +67,7 @@ async function $do(
64
67
  ): Promise<
65
68
  [
66
69
  Result<
67
- components.VaultsListResponse,
70
+ components.VaultsResponse,
68
71
  | errors.HTTPValidationError
69
72
  | CompassAPISDKError
70
73
  | ResponseValidationError
@@ -92,6 +95,7 @@ async function $do(
92
95
  const path = pathToFunc("/v2/earn/vaults")();
93
96
 
94
97
  const query = encodeFormQuery({
98
+ "asset_symbol": payload.asset_symbol,
95
99
  "chain": payload.chain,
96
100
  "direction": payload.direction,
97
101
  "limit": payload.limit,
@@ -154,7 +158,7 @@ async function $do(
154
158
  };
155
159
 
156
160
  const [result] = await M.match<
157
- components.VaultsListResponse,
161
+ components.VaultsResponse,
158
162
  | errors.HTTPValidationError
159
163
  | CompassAPISDKError
160
164
  | ResponseValidationError
@@ -165,7 +169,7 @@ async function $do(
165
169
  | UnexpectedClientError
166
170
  | SDKValidationError
167
171
  >(
168
- M.json(200, components.VaultsListResponse$inboundSchema),
172
+ M.json(200, components.VaultsResponse$inboundSchema),
169
173
  M.jsonErr(422, errors.HTTPValidationError$inboundSchema),
170
174
  M.fail("4XX"),
171
175
  M.fail("5XX"),
package/src/lib/config.ts CHANGED
@@ -62,7 +62,7 @@ export const SDK_METADATA = {
62
62
  language: "typescript",
63
63
  openapiDocVersion: "0.0.1",
64
64
  sdkVersion: "2.0.0",
65
- genVersion: "2.776.1",
65
+ genVersion: "2.781.2",
66
66
  userAgent:
67
- "speakeasy-sdk/typescript 2.0.0 2.776.1 0.0.1 @compass-labs/api-sdk",
67
+ "speakeasy-sdk/typescript 2.0.0 2.781.2 0.0.1 @compass-labs/api-sdk",
68
68
  } as const;
@@ -84,7 +84,6 @@ export * from "./details.js";
84
84
  export * from "./earnmanageparams.js";
85
85
  export * from "./earnmanagerequest.js";
86
86
  export * from "./earnmanageresponse.js";
87
- export * from "./earnpositionresponse.js";
88
87
  export * from "./earnpositionsresponse.js";
89
88
  export * from "./earnswapparams.js";
90
89
  export * from "./earnswaprequest.js";
@@ -234,7 +233,7 @@ export * from "./vaultdepositparams.js";
234
233
  export * from "./vaultdepositrequest.js";
235
234
  export * from "./vaultgetvaultresponse.js";
236
235
  export * from "./vaultinfo.js";
237
- export * from "./vaultslistresponse.js";
236
+ export * from "./vaultsresponse.js";
238
237
  export * from "./vaultvenue.js";
239
238
  export * from "./vaultwithdrawparams.js";
240
239
  export * from "./vaultwithdrawrequest.js";
@@ -9,145 +9,57 @@ import { Result as SafeParseResult } from "../../types/fp.js";
9
9
  import { SDKValidationError } from "../errors/sdkvalidationerror.js";
10
10
 
11
11
  /**
12
- * Information about a single DeFi vault.
12
+ * Information about a single ERC-4626 vault from the database.
13
13
  */
14
14
  export type VaultInfo = {
15
- /**
16
- * Unique vault identifier.
17
- */
18
- id?: string | null | undefined;
19
- /**
20
- * The name of the vault.
21
- */
22
- name: string;
23
15
  /**
24
16
  * The vault contract address.
25
17
  */
26
- address: string;
27
- /**
28
- * The DeFi protocol name.
29
- */
30
- protocol: string;
18
+ vaultAddress: string;
31
19
  /**
32
20
  * Blockchain name (e.g., 'ethereum', 'base').
33
21
  */
34
- chain?: string | null | undefined;
35
- /**
36
- * Blockchain chain ID.
37
- */
38
- chainId?: number | null | undefined;
22
+ chain: string;
39
23
  /**
40
- * The denomination token symbol (underlying asset).
24
+ * The name of the vault.
41
25
  */
42
- denomination: string;
26
+ name?: string | null | undefined;
43
27
  /**
44
28
  * The vault share token symbol.
45
29
  */
46
- shareToken: string;
47
- /**
48
- * Whether the vault is denominated in a stablecoin.
49
- */
50
- stablecoinish: boolean;
51
- /**
52
- * Total lifetime return as a decimal (e.g., 0.093 = 9.3%).
53
- */
54
- lifetimeReturn?: string | null | undefined;
55
- /**
56
- * Total lifetime return after fees as a decimal.
57
- */
58
- lifetimeReturnNet?: string | null | undefined;
59
- /**
60
- * Compound Annual Growth Rate as a decimal.
61
- */
62
- cagr?: string | null | undefined;
63
- /**
64
- * Compound Annual Growth Rate after fees as a decimal.
65
- */
66
- cagrNet?: string | null | undefined;
67
- /**
68
- * 3-month returns as a decimal.
69
- */
70
- threeMonthsReturns?: string | null | undefined;
71
- /**
72
- * 3-month returns after fees as a decimal.
73
- */
74
- threeMonthsReturnsNet?: string | null | undefined;
75
- /**
76
- * 3-month CAGR as a decimal.
77
- */
78
- threeMonthsCagr?: string | null | undefined;
79
- /**
80
- * 3-month CAGR after fees as a decimal.
81
- */
82
- threeMonthsCagrNet?: string | null | undefined;
83
- /**
84
- * 3-month Sharpe ratio.
85
- */
86
- threeMonthsSharpe?: string | null | undefined;
87
- /**
88
- * 3-month Sharpe ratio after fees.
89
- */
90
- threeMonthsSharpeNet?: string | null | undefined;
91
- /**
92
- * 3-month volatility.
93
- */
94
- threeMonthsVolatility?: string | null | undefined;
95
- /**
96
- * 1-month returns as a decimal.
97
- */
98
- oneMonthReturns?: string | null | undefined;
99
- /**
100
- * 1-month returns after fees as a decimal.
101
- */
102
- oneMonthReturnsNet?: string | null | undefined;
103
- /**
104
- * 1-month CAGR as a decimal.
105
- */
106
- oneMonthCagr?: string | null | undefined;
107
- /**
108
- * 1-month CAGR after fees as a decimal.
109
- */
110
- oneMonthCagrNet?: string | null | undefined;
111
- /**
112
- * Current Net Asset Value in denomination token.
113
- */
114
- currentNav?: string | null | undefined;
115
- /**
116
- * Peak Net Asset Value in denomination token.
117
- */
118
- peakNav?: string | null | undefined;
30
+ symbol?: string | null | undefined;
119
31
  /**
120
- * Human-readable fee structure label.
32
+ * The vault owner address.
121
33
  */
122
- feeLabel?: string | null | undefined;
34
+ owner: string;
123
35
  /**
124
- * Management fee as a decimal.
36
+ * The underlying asset contract address.
125
37
  */
126
- managementFee?: string | null | undefined;
38
+ asset: string;
127
39
  /**
128
- * Performance fee as a decimal.
40
+ * The name of the underlying asset.
129
41
  */
130
- performanceFee?: string | null | undefined;
42
+ assetName?: string | null | undefined;
131
43
  /**
132
- * Deposit fee as a decimal.
44
+ * The symbol of the underlying asset (e.g., 'USDC').
133
45
  */
134
- depositFee?: string | null | undefined;
46
+ assetSymbol?: string | null | undefined;
135
47
  /**
136
- * Withdrawal fee as a decimal.
48
+ * Total Value Locked in USD.
137
49
  */
138
- withdrawFee?: string | null | undefined;
50
+ tvlUsd?: string | null | undefined;
139
51
  /**
140
- * Age of the vault in years.
52
+ * 7-day APY as a percentage (e.g., 5.25 = 5.25%).
141
53
  */
142
- years?: string | null | undefined;
54
+ apy7d?: string | null | undefined;
143
55
  /**
144
- * Number of events/transactions in the vault.
56
+ * 30-day APY as a percentage.
145
57
  */
146
- eventCount?: number | null | undefined;
58
+ apy30d?: string | null | undefined;
147
59
  /**
148
- * List of vault features and capabilities.
60
+ * 90-day APY as a percentage.
149
61
  */
150
- features?: Array<string> | null | undefined;
62
+ apy90d?: string | null | undefined;
151
63
  };
152
64
 
153
65
  /** @internal */
@@ -156,66 +68,27 @@ export const VaultInfo$inboundSchema: z.ZodType<
156
68
  z.ZodTypeDef,
157
69
  unknown
158
70
  > = z.object({
159
- id: z.nullable(z.string()).optional(),
160
- name: z.string(),
161
- address: z.string(),
162
- protocol: z.string(),
163
- chain: z.nullable(z.string()).optional(),
164
- chain_id: z.nullable(z.number().int()).optional(),
165
- denomination: z.string(),
166
- share_token: z.string(),
167
- stablecoinish: z.boolean(),
168
- lifetime_return: z.nullable(z.string()).optional(),
169
- lifetime_return_net: z.nullable(z.string()).optional(),
170
- cagr: z.nullable(z.string()).optional(),
171
- cagr_net: z.nullable(z.string()).optional(),
172
- three_months_returns: z.nullable(z.string()).optional(),
173
- three_months_returns_net: z.nullable(z.string()).optional(),
174
- three_months_cagr: z.nullable(z.string()).optional(),
175
- three_months_cagr_net: z.nullable(z.string()).optional(),
176
- three_months_sharpe: z.nullable(z.string()).optional(),
177
- three_months_sharpe_net: z.nullable(z.string()).optional(),
178
- three_months_volatility: z.nullable(z.string()).optional(),
179
- one_month_returns: z.nullable(z.string()).optional(),
180
- one_month_returns_net: z.nullable(z.string()).optional(),
181
- one_month_cagr: z.nullable(z.string()).optional(),
182
- one_month_cagr_net: z.nullable(z.string()).optional(),
183
- current_nav: z.nullable(z.string()).optional(),
184
- peak_nav: z.nullable(z.string()).optional(),
185
- fee_label: z.nullable(z.string()).optional(),
186
- management_fee: z.nullable(z.string()).optional(),
187
- performance_fee: z.nullable(z.string()).optional(),
188
- deposit_fee: z.nullable(z.string()).optional(),
189
- withdraw_fee: z.nullable(z.string()).optional(),
190
- years: z.nullable(z.string()).optional(),
191
- event_count: z.nullable(z.number().int()).optional(),
192
- features: z.nullable(z.array(z.string())).optional(),
71
+ vault_address: z.string(),
72
+ chain: z.string(),
73
+ name: z.nullable(z.string()).optional(),
74
+ symbol: z.nullable(z.string()).optional(),
75
+ owner: z.string(),
76
+ asset: z.string(),
77
+ asset_name: z.nullable(z.string()).optional(),
78
+ asset_symbol: z.nullable(z.string()).optional(),
79
+ tvl_usd: z.nullable(z.string()).optional(),
80
+ apy_7d: z.nullable(z.string()).optional(),
81
+ apy_30d: z.nullable(z.string()).optional(),
82
+ apy_90d: z.nullable(z.string()).optional(),
193
83
  }).transform((v) => {
194
84
  return remap$(v, {
195
- "chain_id": "chainId",
196
- "share_token": "shareToken",
197
- "lifetime_return": "lifetimeReturn",
198
- "lifetime_return_net": "lifetimeReturnNet",
199
- "cagr_net": "cagrNet",
200
- "three_months_returns": "threeMonthsReturns",
201
- "three_months_returns_net": "threeMonthsReturnsNet",
202
- "three_months_cagr": "threeMonthsCagr",
203
- "three_months_cagr_net": "threeMonthsCagrNet",
204
- "three_months_sharpe": "threeMonthsSharpe",
205
- "three_months_sharpe_net": "threeMonthsSharpeNet",
206
- "three_months_volatility": "threeMonthsVolatility",
207
- "one_month_returns": "oneMonthReturns",
208
- "one_month_returns_net": "oneMonthReturnsNet",
209
- "one_month_cagr": "oneMonthCagr",
210
- "one_month_cagr_net": "oneMonthCagrNet",
211
- "current_nav": "currentNav",
212
- "peak_nav": "peakNav",
213
- "fee_label": "feeLabel",
214
- "management_fee": "managementFee",
215
- "performance_fee": "performanceFee",
216
- "deposit_fee": "depositFee",
217
- "withdraw_fee": "withdrawFee",
218
- "event_count": "eventCount",
85
+ "vault_address": "vaultAddress",
86
+ "asset_name": "assetName",
87
+ "asset_symbol": "assetSymbol",
88
+ "tvl_usd": "tvlUsd",
89
+ "apy_7d": "apy7d",
90
+ "apy_30d": "apy30d",
91
+ "apy_90d": "apy90d",
219
92
  });
220
93
  });
221
94
 
@@ -9,9 +9,9 @@ import { SDKValidationError } from "../errors/sdkvalidationerror.js";
9
9
  import { VaultInfo, VaultInfo$inboundSchema } from "./vaultinfo.js";
10
10
 
11
11
  /**
12
- * Response model for a paginated list of DeFi vaults.
12
+ * Response model for a paginated list of ERC-4626 vaults.
13
13
  */
14
- export type VaultsListResponse = {
14
+ export type VaultsResponse = {
15
15
  total: number;
16
16
  offset: number;
17
17
  limit: number;
@@ -22,8 +22,8 @@ export type VaultsListResponse = {
22
22
  };
23
23
 
24
24
  /** @internal */
25
- export const VaultsListResponse$inboundSchema: z.ZodType<
26
- VaultsListResponse,
25
+ export const VaultsResponse$inboundSchema: z.ZodType<
26
+ VaultsResponse,
27
27
  z.ZodTypeDef,
28
28
  unknown
29
29
  > = z.object({
@@ -33,12 +33,12 @@ export const VaultsListResponse$inboundSchema: z.ZodType<
33
33
  vaults: z.array(VaultInfo$inboundSchema),
34
34
  });
35
35
 
36
- export function vaultsListResponseFromJSON(
36
+ export function vaultsResponseFromJSON(
37
37
  jsonString: string,
38
- ): SafeParseResult<VaultsListResponse, SDKValidationError> {
38
+ ): SafeParseResult<VaultsResponse, SDKValidationError> {
39
39
  return safeParse(
40
40
  jsonString,
41
- (x) => VaultsListResponse$inboundSchema.parse(JSON.parse(x)),
42
- `Failed to parse 'VaultsListResponse' from JSON`,
41
+ (x) => VaultsResponse$inboundSchema.parse(JSON.parse(x)),
42
+ `Failed to parse 'VaultsResponse' from JSON`,
43
43
  );
44
44
  }
@@ -43,5 +43,4 @@ export * from "./v1wildcatmarket.js";
43
43
  export * from "./v2cctpmint.js";
44
44
  export * from "./v2earnaavetokenrates.js";
45
45
  export * from "./v2earnpositions.js";
46
- export * from "./v2earnpositionspositionid.js";
47
46
  export * from "./v2earnvaults.js";
@@ -43,6 +43,10 @@ export type V2EarnVaultsRequest = {
43
43
  */
44
44
  limit?: number | undefined;
45
45
  chain: V2EarnVaultsChain;
46
+ /**
47
+ * Filter vaults by underlying asset symbol (e.g., 'USDC', 'WETH').
48
+ */
49
+ assetSymbol?: string | null | undefined;
46
50
  };
47
51
 
48
52
  /** @internal */
@@ -61,6 +65,7 @@ export type V2EarnVaultsRequest$Outbound = {
61
65
  offset?: number | undefined;
62
66
  limit?: number | undefined;
63
67
  chain: string;
68
+ asset_symbol?: string | null | undefined;
64
69
  };
65
70
 
66
71
  /** @internal */
@@ -74,9 +79,11 @@ export const V2EarnVaultsRequest$outboundSchema: z.ZodType<
74
79
  offset: z.number().int().optional(),
75
80
  limit: z.number().int().optional(),
76
81
  chain: V2EarnVaultsChain$outboundSchema,
82
+ assetSymbol: z.nullable(z.string()).optional(),
77
83
  }).transform((v) => {
78
84
  return remap$(v, {
79
85
  orderBy: "order_by",
86
+ assetSymbol: "asset_symbol",
80
87
  });
81
88
  });
82
89
 
package/src/sdk/earn.ts CHANGED
@@ -7,7 +7,6 @@ import { earnEarnBundle } from "../funcs/earnEarnBundle.js";
7
7
  import { earnEarnCreateAccount } from "../funcs/earnEarnCreateAccount.js";
8
8
  import { earnEarnManage } from "../funcs/earnEarnManage.js";
9
9
  import { earnEarnPositions } from "../funcs/earnEarnPositions.js";
10
- import { earnEarnPositionsPositionId } from "../funcs/earnEarnPositionsPositionId.js";
11
10
  import { earnEarnSwap } from "../funcs/earnEarnSwap.js";
12
11
  import { earnEarnTransfer } from "../funcs/earnEarnTransfer.js";
13
12
  import { earnEarnVaults } from "../funcs/earnEarnVaults.js";
@@ -35,32 +34,18 @@ export class Earn extends ClientSDK {
35
34
  }
36
35
 
37
36
  /**
38
- * Get earn position
37
+ * List Vaults
39
38
  *
40
39
  * @remarks
41
- * This endpoint fetches a single Compass Earn position by its encoded ID.
42
- */
43
- async earnPositionsPositionId(
44
- request: operations.V2EarnPositionsPositionIdRequest,
45
- options?: RequestOptions,
46
- ): Promise<components.EarnPositionResponse> {
47
- return unwrapAsync(earnEarnPositionsPositionId(
48
- this,
49
- request,
50
- options,
51
- ));
52
- }
53
-
54
- /**
55
- * List vaults
40
+ * Fetch ERC-4626 vaults from the database with TVL and APY stats.
56
41
  *
57
- * @remarks
58
- * This endpoint fetches a curated list of DeFi vaults.
42
+ * Returns a paginated list of ERC-4626 vaults indexed from various chains, joined with
43
+ * their current statistics (TVL in USD, 7d/30d/90d APY).
59
44
  */
60
45
  async earnVaults(
61
46
  request: operations.V2EarnVaultsRequest,
62
47
  options?: RequestOptions,
63
- ): Promise<components.VaultsListResponse> {
48
+ ): Promise<components.VaultsResponse> {
64
49
  return unwrapAsync(earnEarnVaults(
65
50
  this,
66
51
  request,
@@ -1,19 +0,0 @@
1
- import { CompassApiSDKCore } from "../core.js";
2
- import { RequestOptions } from "../lib/sdks.js";
3
- import * as components from "../models/components/index.js";
4
- import { CompassAPISDKError } from "../models/errors/compassapisdkerror.js";
5
- import { ConnectionError, InvalidRequestError, RequestAbortedError, RequestTimeoutError, UnexpectedClientError } from "../models/errors/httpclienterrors.js";
6
- import * as errors from "../models/errors/index.js";
7
- import { ResponseValidationError } from "../models/errors/responsevalidationerror.js";
8
- import { SDKValidationError } from "../models/errors/sdkvalidationerror.js";
9
- import * as operations from "../models/operations/index.js";
10
- import { APIPromise } from "../types/async.js";
11
- import { Result } from "../types/fp.js";
12
- /**
13
- * Get earn position
14
- *
15
- * @remarks
16
- * This endpoint fetches a single Compass Earn position by its encoded ID.
17
- */
18
- export declare function earnEarnPositionsPositionId(client: CompassApiSDKCore, request: operations.V2EarnPositionsPositionIdRequest, options?: RequestOptions): APIPromise<Result<components.EarnPositionResponse, errors.HTTPValidationError | CompassAPISDKError | ResponseValidationError | ConnectionError | RequestAbortedError | RequestTimeoutError | InvalidRequestError | UnexpectedClientError | SDKValidationError>>;
19
- //# sourceMappingURL=earnEarnPositionsPositionId.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"earnEarnPositionsPositionId.d.ts","sourceRoot":"","sources":["../../../src/funcs/earnEarnPositionsPositionId.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAK/C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,UAAU,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,KAAK,MAAM,MAAM,2BAA2B,CAAC;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AACtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAC5E,OAAO,KAAK,UAAU,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAW,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC;;;;;GAKG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,UAAU,CAAC,gCAAgC,EACpD,OAAO,CAAC,EAAE,cAAc,GACvB,UAAU,CACX,MAAM,CACJ,UAAU,CAAC,oBAAoB,EAC7B,MAAM,CAAC,mBAAmB,GAC1B,kBAAkB,GAClB,uBAAuB,GACvB,eAAe,GACf,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,kBAAkB,CACrB,CACF,CAMA"}
@@ -1,129 +0,0 @@
1
- "use strict";
2
- /*
3
- * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
4
- */
5
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
6
- if (k2 === undefined) k2 = k;
7
- var desc = Object.getOwnPropertyDescriptor(m, k);
8
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9
- desc = { enumerable: true, get: function() { return m[k]; } };
10
- }
11
- Object.defineProperty(o, k2, desc);
12
- }) : (function(o, m, k, k2) {
13
- if (k2 === undefined) k2 = k;
14
- o[k2] = m[k];
15
- }));
16
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
17
- Object.defineProperty(o, "default", { enumerable: true, value: v });
18
- }) : function(o, v) {
19
- o["default"] = v;
20
- });
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = [];
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
- return ar;
27
- };
28
- return ownKeys(o);
29
- };
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod;
32
- var result = {};
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
- __setModuleDefault(result, mod);
35
- return result;
36
- };
37
- })();
38
- Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.earnEarnPositionsPositionId = earnEarnPositionsPositionId;
40
- const encodings_js_1 = require("../lib/encodings.js");
41
- const M = __importStar(require("../lib/matchers.js"));
42
- const primitives_js_1 = require("../lib/primitives.js");
43
- const schemas_js_1 = require("../lib/schemas.js");
44
- const security_js_1 = require("../lib/security.js");
45
- const url_js_1 = require("../lib/url.js");
46
- const components = __importStar(require("../models/components/index.js"));
47
- const errors = __importStar(require("../models/errors/index.js"));
48
- const operations = __importStar(require("../models/operations/index.js"));
49
- const async_js_1 = require("../types/async.js");
50
- /**
51
- * Get earn position
52
- *
53
- * @remarks
54
- * This endpoint fetches a single Compass Earn position by its encoded ID.
55
- */
56
- function earnEarnPositionsPositionId(client, request, options) {
57
- return new async_js_1.APIPromise($do(client, request, options));
58
- }
59
- async function $do(client, request, options) {
60
- const parsed = (0, schemas_js_1.safeParse)(request, (value) => operations.V2EarnPositionsPositionIdRequest$outboundSchema.parse(value), "Input validation failed");
61
- if (!parsed.ok) {
62
- return [parsed, { status: "invalid" }];
63
- }
64
- const payload = parsed.value;
65
- const body = null;
66
- const pathParams = {
67
- position_id: (0, encodings_js_1.encodeSimple)("position_id", payload.position_id, {
68
- explode: false,
69
- charEncoding: "percent",
70
- }),
71
- };
72
- const path = (0, url_js_1.pathToFunc)("/v2/earn/positions/{position_id}")(pathParams);
73
- const query = (0, encodings_js_1.encodeFormQuery)({
74
- "days": payload.days,
75
- "user_address": payload.user_address,
76
- });
77
- const headers = new Headers((0, primitives_js_1.compactMap)({
78
- Accept: "application/json",
79
- }));
80
- const secConfig = await (0, security_js_1.extractSecurity)(client._options.apiKeyAuth);
81
- const securityInput = secConfig == null ? {} : { apiKeyAuth: secConfig };
82
- const requestSecurity = (0, security_js_1.resolveGlobalSecurity)(securityInput);
83
- const context = {
84
- options: client._options,
85
- baseURL: options?.serverURL ?? client._baseURL ?? "",
86
- operationID: "v2_earn_positions_{position_id}",
87
- oAuth2Scopes: null,
88
- resolvedSecurity: requestSecurity,
89
- securitySource: client._options.apiKeyAuth,
90
- retryConfig: options?.retries
91
- || client._options.retryConfig
92
- || { strategy: "none" },
93
- retryCodes: options?.retryCodes || ["429", "500", "502", "503", "504"],
94
- };
95
- const requestRes = client._createRequest(context, {
96
- security: requestSecurity,
97
- method: "GET",
98
- baseURL: options?.serverURL,
99
- path: path,
100
- headers: headers,
101
- query: query,
102
- body: body,
103
- userAgent: client._options.userAgent,
104
- timeoutMs: options?.timeoutMs || client._options.timeoutMs || -1,
105
- }, options);
106
- if (!requestRes.ok) {
107
- return [requestRes, { status: "invalid" }];
108
- }
109
- const req = requestRes.value;
110
- const doResult = await client._do(req, {
111
- context,
112
- errorCodes: ["422", "4XX", "5XX"],
113
- retryConfig: context.retryConfig,
114
- retryCodes: context.retryCodes,
115
- });
116
- if (!doResult.ok) {
117
- return [doResult, { status: "request-error", request: req }];
118
- }
119
- const response = doResult.value;
120
- const responseFields = {
121
- HttpMeta: { Response: response, Request: req },
122
- };
123
- const [result] = await M.match(M.json(200, components.EarnPositionResponse$inboundSchema), M.jsonErr(422, errors.HTTPValidationError$inboundSchema), M.fail("4XX"), M.fail("5XX"))(response, req, { extraFields: responseFields });
124
- if (!result.ok) {
125
- return [result, { status: "complete", request: req, response }];
126
- }
127
- return [result, { status: "complete", request: req, response }];
128
- }
129
- //# sourceMappingURL=earnEarnPositionsPositionId.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"earnEarnPositionsPositionId.js","sourceRoot":"","sources":["../../../src/funcs/earnEarnPositionsPositionId.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- import * as z from "zod/v3";
2
- import { Result as SafeParseResult } from "../../types/fp.js";
3
- import { SDKValidationError } from "../errors/sdkvalidationerror.js";
4
- import { AavePosition } from "./aaveposition.js";
5
- import { CompassApiBackendV2ModelsEarnReadResponsePositionsVaultPosition } from "./compassapibackendv2modelsearnreadresponsepositionsvaultposition.js";
6
- /**
7
- * The user's earn position.
8
- */
9
- export type PositionUnion = AavePosition | CompassApiBackendV2ModelsEarnReadResponsePositionsVaultPosition;
10
- /**
11
- * Response model for a single earn position.
12
- */
13
- export type EarnPositionResponse = {
14
- /**
15
- * The user's earn position.
16
- */
17
- position: AavePosition | CompassApiBackendV2ModelsEarnReadResponsePositionsVaultPosition;
18
- };
19
- /** @internal */
20
- export declare const PositionUnion$inboundSchema: z.ZodType<PositionUnion, z.ZodTypeDef, unknown>;
21
- export declare function positionUnionFromJSON(jsonString: string): SafeParseResult<PositionUnion, SDKValidationError>;
22
- /** @internal */
23
- export declare const EarnPositionResponse$inboundSchema: z.ZodType<EarnPositionResponse, z.ZodTypeDef, unknown>;
24
- export declare function earnPositionResponseFromJSON(jsonString: string): SafeParseResult<EarnPositionResponse, SDKValidationError>;
25
- //# sourceMappingURL=earnpositionresponse.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"earnpositionresponse.d.ts","sourceRoot":"","sources":["../../../../src/models/components/earnpositionresponse.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,MAAM,IAAI,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,YAAY,EAA8B,MAAM,mBAAmB,CAAC;AAC7E,OAAO,EACL,+DAA+D,EAEhE,MAAM,sEAAsE,CAAC;AAE9E;;GAEG;AACH,MAAM,MAAM,aAAa,GACrB,YAAY,GACZ,+DAA+D,CAAC;AAEpE;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,QAAQ,EACJ,YAAY,GACZ,+DAA+D,CAAC;CACrE,CAAC;AAEF,gBAAgB;AAChB,eAAO,MAAM,2BAA2B,EAAE,CAAC,CAAC,OAAO,CACjD,aAAa,EACb,CAAC,CAAC,UAAU,EACZ,OAAO,CAIP,CAAC;AAEH,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,GACjB,eAAe,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAMpD;AAED,gBAAgB;AAChB,eAAO,MAAM,kCAAkC,EAAE,CAAC,CAAC,OAAO,CACxD,oBAAoB,EACpB,CAAC,CAAC,UAAU,EACZ,OAAO,CAMP,CAAC;AAEH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,GACjB,eAAe,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAM3D"}