@whisk/steakhouse 0.0.5 → 0.0.7

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 (151) hide show
  1. package/dist/index.d.ts +1 -6
  2. package/dist/metadata/generated/vaults.d.ts +7 -0
  3. package/dist/metadata/generated/vaults.js +468 -0
  4. package/dist/metadata/generated/vaults.js.map +1 -0
  5. package/dist/metadata/index.d.ts +3 -3
  6. package/dist/metadata/index.js +4 -8
  7. package/dist/metadata/index.js.map +1 -1
  8. package/dist/metadata/types.d.ts +9 -10
  9. package/dist/metadata/types.js +4 -0
  10. package/dist/metadata/types.js.map +1 -1
  11. package/dist/queries/getTvl.d.ts +33 -0
  12. package/dist/queries/getTvl.js +33 -0
  13. package/dist/queries/getTvl.js.map +1 -0
  14. package/dist/queries/index.d.ts +1 -6
  15. package/dist/queries/index.js +1 -8
  16. package/dist/queries/index.js.map +1 -1
  17. package/dist/react/hooks/index.d.ts +3 -10
  18. package/dist/react/hooks/index.js +2 -6
  19. package/dist/react/hooks/index.js.map +1 -1
  20. package/dist/react/hooks/useTvl.d.ts +9 -0
  21. package/dist/react/hooks/useTvl.js +15 -0
  22. package/dist/react/hooks/useTvl.js.map +1 -0
  23. package/dist/react/index.d.ts +3 -10
  24. package/package.json +16 -8
  25. package/src/metadata/README.md +93 -0
  26. package/src/metadata/generated/vaults.ts +470 -0
  27. package/src/metadata/index.ts +5 -3
  28. package/src/metadata/types.ts +8 -11
  29. package/src/metadata/vaults/arbitrum/high-yield-turbo-usdc.md +6 -0
  30. package/src/metadata/vaults/arbitrum/high-yield-usdc-v1.md +6 -0
  31. package/src/metadata/vaults/arbitrum/high-yield-usdc-v2.md +6 -0
  32. package/src/metadata/vaults/arbitrum/high-yield-usdt-v2.md +6 -0
  33. package/src/metadata/vaults/base/deblock-eurc.md +6 -0
  34. package/src/metadata/vaults/base/eth-v1.md +6 -0
  35. package/src/metadata/vaults/base/eura.md +6 -0
  36. package/src/metadata/vaults/base/eurc-v1.md +6 -0
  37. package/src/metadata/vaults/base/high-yield-instant-usdc.md +6 -0
  38. package/src/metadata/vaults/base/high-yield-turbo-eth.md +6 -0
  39. package/src/metadata/vaults/base/high-yield-usdc-v1-1.md +6 -0
  40. package/src/metadata/vaults/base/high-yield-usdc.md +6 -0
  41. package/src/metadata/vaults/base/prime-instant-usdc.md +6 -0
  42. package/src/metadata/vaults/base/safe-x-eth-2.md +6 -0
  43. package/src/metadata/vaults/base/safe-x-eth.md +6 -0
  44. package/src/metadata/vaults/base/safe-x-usdc.md +6 -0
  45. package/src/metadata/vaults/base/smokehouse-usdc.md +6 -0
  46. package/src/metadata/vaults/base/susds.md +6 -0
  47. package/src/metadata/vaults/base/usda.md +6 -0
  48. package/src/metadata/vaults/base/usdc-rwa.md +6 -0
  49. package/src/metadata/vaults/base/usdc-v1.md +6 -0
  50. package/src/metadata/vaults/katana/high-yield-ausd.md +6 -0
  51. package/src/metadata/vaults/katana/high-yield-usdc.md +6 -0
  52. package/src/metadata/vaults/katana/prime-ausd.md +6 -0
  53. package/src/metadata/vaults/katana/prime-usdc.md +6 -0
  54. package/src/metadata/vaults/mainnet/3f-x-steakhouse.md +6 -0
  55. package/src/metadata/vaults/mainnet/coinshift-usdc.md +6 -0
  56. package/src/metadata/vaults/mainnet/coinshift-usdl.md +6 -0
  57. package/src/metadata/vaults/mainnet/eth-v1.md +6 -0
  58. package/src/metadata/vaults/mainnet/ethena-usdt.md +6 -0
  59. package/src/metadata/vaults/mainnet/ethena-usdtb.md +6 -0
  60. package/src/metadata/vaults/mainnet/eurcv-v1.md +6 -0
  61. package/src/metadata/vaults/mainnet/high-yield-instant-ausd-v2.md +6 -0
  62. package/src/metadata/vaults/mainnet/high-yield-instant-usdc-v2.md +6 -0
  63. package/src/metadata/vaults/mainnet/high-yield-instant-usdt-v2.md +6 -0
  64. package/src/metadata/vaults/mainnet/high-yield-term-usdc.md +6 -0
  65. package/src/metadata/vaults/mainnet/high-yield-turbo-cbbtc-v2.md +6 -0
  66. package/src/metadata/vaults/mainnet/high-yield-turbo-eth-v2.md +6 -0
  67. package/src/metadata/vaults/mainnet/high-yield-turbo-usdt-v2.md +6 -0
  68. package/src/metadata/vaults/mainnet/infinifi-usdc.md +6 -0
  69. package/src/metadata/vaults/mainnet/level-usdc.md +6 -0
  70. package/src/metadata/vaults/mainnet/m-v1.md +6 -0
  71. package/src/metadata/vaults/mainnet/paxg-v1.md +6 -0
  72. package/src/metadata/vaults/mainnet/peaty-usdc.md +6 -0
  73. package/src/metadata/vaults/mainnet/prime-instant-eth-v2.md +6 -0
  74. package/src/metadata/vaults/mainnet/prime-instant-eurcv-v2.md +6 -0
  75. package/src/metadata/vaults/mainnet/prime-instant-pyusd-v2.md +6 -0
  76. package/src/metadata/vaults/mainnet/prime-instant-usdc-v2.md +6 -0
  77. package/src/metadata/vaults/mainnet/prime-instant-usdt-v2.md +6 -0
  78. package/src/metadata/vaults/mainnet/pyusd-high-yield-instant.md +6 -0
  79. package/src/metadata/vaults/mainnet/pyusd-v1.md +6 -0
  80. package/src/metadata/vaults/mainnet/rusd-v1.md +6 -0
  81. package/src/metadata/vaults/mainnet/safe-x-eth.md +6 -0
  82. package/src/metadata/vaults/mainnet/safe-x-smokehouse-usdc.md +6 -0
  83. package/src/metadata/vaults/mainnet/safe-x-smokehouse-usdt.md +6 -0
  84. package/src/metadata/vaults/mainnet/safe-x-smokehouse-wbtc.md +6 -0
  85. package/src/metadata/vaults/mainnet/safe-x-smokehouse-wsteth.md +6 -0
  86. package/src/metadata/vaults/mainnet/safe-x-usdc.md +6 -0
  87. package/src/metadata/vaults/mainnet/safe-x-usdt.md +6 -0
  88. package/src/metadata/vaults/mainnet/smokehouse-cbbtc.md +6 -0
  89. package/src/metadata/vaults/mainnet/smokehouse-dai.md +6 -0
  90. package/src/metadata/vaults/mainnet/smokehouse-eth.md +6 -0
  91. package/src/metadata/vaults/mainnet/smokehouse-usdc.md +6 -0
  92. package/src/metadata/vaults/mainnet/smokehouse-usdt.md +6 -0
  93. package/src/metadata/vaults/mainnet/smokehouse-wsteth.md +6 -0
  94. package/src/metadata/vaults/mainnet/usdc-rwa.md +6 -0
  95. package/src/metadata/vaults/mainnet/usdc-v1.md +6 -0
  96. package/src/metadata/vaults/mainnet/usdq.md +6 -0
  97. package/src/metadata/vaults/mainnet/usdr.md +6 -0
  98. package/src/metadata/vaults/mainnet/usdt-lite.md +6 -0
  99. package/src/metadata/vaults/mainnet/usdt-v1.md +6 -0
  100. package/src/metadata/vaults/mainnet/vault-bridge-usdc.md +6 -0
  101. package/src/metadata/vaults/mainnet/wbtc-v1.md +6 -0
  102. package/src/metadata/vaults/monad/ausd-v2.md +6 -0
  103. package/src/metadata/vaults/monad/usdc-v2.md +6 -0
  104. package/src/metadata/vaults/unichain/eth.md +6 -0
  105. package/src/metadata/vaults/unichain/wsteth.md +6 -0
  106. package/src/queries/getTvl.ts +37 -0
  107. package/src/queries/index.ts +1 -10
  108. package/src/react/hooks/index.ts +1 -3
  109. package/src/react/hooks/useTvl.ts +14 -0
  110. package/dist/metadata/chains.d.ts +0 -7
  111. package/dist/metadata/chains.js +0 -15
  112. package/dist/metadata/chains.js.map +0 -1
  113. package/dist/metadata/vaults.d.ts +0 -7
  114. package/dist/metadata/vaults.js +0 -26
  115. package/dist/metadata/vaults.js.map +0 -1
  116. package/dist/queries/fragments/vaultDetail.d.ts +0 -265
  117. package/dist/queries/fragments/vaultDetail.js +0 -148
  118. package/dist/queries/fragments/vaultDetail.js.map +0 -1
  119. package/dist/queries/getDetailedVault.d.ts +0 -591
  120. package/dist/queries/getDetailedVault.js +0 -92
  121. package/dist/queries/getDetailedVault.js.map +0 -1
  122. package/dist/queries/getVaults.d.ts +0 -288
  123. package/dist/queries/getVaults.js +0 -49
  124. package/dist/queries/getVaults.js.map +0 -1
  125. package/dist/queries/steakhouseMetadata.d.ts +0 -13
  126. package/dist/queries/steakhouseMetadata.js +0 -12
  127. package/dist/queries/steakhouseMetadata.js.map +0 -1
  128. package/dist/queries/types.d.ts +0 -5
  129. package/dist/queries/types.js +0 -1
  130. package/dist/queries/types.js.map +0 -1
  131. package/dist/react/hooks/useDetailedVault.d.ts +0 -12
  132. package/dist/react/hooks/useDetailedVault.js +0 -16
  133. package/dist/react/hooks/useDetailedVault.js.map +0 -1
  134. package/dist/react/hooks/useSteakhouseQuery.d.ts +0 -11
  135. package/dist/react/hooks/useSteakhouseQuery.js +0 -14
  136. package/dist/react/hooks/useSteakhouseQuery.js.map +0 -1
  137. package/dist/react/hooks/useVaults.d.ts +0 -12
  138. package/dist/react/hooks/useVaults.js +0 -16
  139. package/dist/react/hooks/useVaults.js.map +0 -1
  140. package/src/metadata/chains.ts +0 -13
  141. package/src/metadata/vaults.ts +0 -27
  142. package/src/queries/fragments/vaultDetail.ts +0 -151
  143. package/src/queries/getDetailedVault.test.ts +0 -212
  144. package/src/queries/getDetailedVault.ts +0 -132
  145. package/src/queries/getVaults.test.ts +0 -186
  146. package/src/queries/getVaults.ts +0 -77
  147. package/src/queries/steakhouseMetadata.ts +0 -19
  148. package/src/queries/types.ts +0 -6
  149. package/src/react/hooks/useDetailedVault.ts +0 -19
  150. package/src/react/hooks/useSteakhouseQuery.ts +0 -17
  151. package/src/react/hooks/useVaults.ts +0 -17
@@ -1,288 +0,0 @@
1
- import * as gql_tada from 'gql.tada';
2
- import { WhiskClient } from '@whisk/client';
3
- import { VaultDetail } from './fragments/vaultDetail.js';
4
- import { SteakhouseMetadata } from './steakhouseMetadata.js';
5
- import '@whisk/graphql';
6
- import '../metadata/types.js';
7
-
8
- /** GraphQL query for fetching Steakhouse vaults */
9
- declare const vaultsQuery: gql_tada.TadaDocumentNode<{
10
- erc4626Vaults: {
11
- items: ({
12
- __typename?: "MorphoVault";
13
- chain: {
14
- id: number;
15
- name: string;
16
- icon: string;
17
- };
18
- vaultAddress: `0x${string}`;
19
- name: string;
20
- symbol: string;
21
- decimals: number;
22
- asset: {
23
- address: `0x${string}`;
24
- symbol: string;
25
- name: string;
26
- icon: string | null;
27
- priceUsd: number | null;
28
- decimals: number;
29
- };
30
- totalAssets: {
31
- raw: bigint;
32
- formatted: string;
33
- usd: number | null;
34
- };
35
- apy: {
36
- base: number;
37
- total: number;
38
- rewards: {
39
- asset: {
40
- symbol: string;
41
- icon: string | null;
42
- };
43
- apr: number;
44
- }[];
45
- fee: number;
46
- };
47
- totalLiquidity: {
48
- formatted: string;
49
- usd: number | null;
50
- };
51
- v1PerformanceFee: number;
52
- feeRecipientAddress: `0x${string}` | null;
53
- ownerAddress: `0x${string}`;
54
- curatorAddress: `0x${string}`;
55
- guardianAddress: `0x${string}`;
56
- metadata: {
57
- description: string | null;
58
- image: string | null;
59
- forumLink: string | null;
60
- curator: {
61
- name: string;
62
- image: string;
63
- url: string;
64
- } | null;
65
- curators: {
66
- name: string;
67
- image: string;
68
- url: string;
69
- }[];
70
- } | null;
71
- marketAllocations: {
72
- market: {
73
- marketId: `0x${string}`;
74
- name: string;
75
- loanAsset: {
76
- symbol: string;
77
- icon: string | null;
78
- };
79
- collateralAsset: {
80
- symbol: string;
81
- icon: string | null;
82
- } | null;
83
- isIdle: boolean;
84
- };
85
- enabled: boolean;
86
- supplyCap: {
87
- formatted: string;
88
- usd: number | null;
89
- };
90
- vaultSupplyShare: number;
91
- marketSupplyShare: number;
92
- position: {
93
- supplyAmount: {
94
- formatted: string;
95
- usd: number | null;
96
- };
97
- };
98
- }[];
99
- riskAssessment: {
100
- steakhouse: {
101
- score: number;
102
- rating: string;
103
- } | null;
104
- };
105
- } | {
106
- __typename?: "MorphoVaultV2";
107
- chain: {
108
- id: number;
109
- name: string;
110
- icon: string;
111
- };
112
- vaultAddress: `0x${string}`;
113
- name: string;
114
- symbol: string;
115
- decimals: number;
116
- asset: {
117
- address: `0x${string}`;
118
- symbol: string;
119
- name: string;
120
- icon: string | null;
121
- priceUsd: number | null;
122
- decimals: number;
123
- };
124
- totalAssets: {
125
- raw: bigint;
126
- formatted: string;
127
- usd: number | null;
128
- };
129
- apy: {
130
- base: number;
131
- total: number;
132
- rewards: {
133
- asset: {
134
- symbol: string;
135
- icon: string | null;
136
- };
137
- apr: number;
138
- }[];
139
- fee: number;
140
- };
141
- curatorAddress: `0x${string}`;
142
- ownerAddress: `0x${string}`;
143
- metadata: {
144
- description: string | null;
145
- image: string | null;
146
- forumLink: string | null;
147
- curator: {
148
- name: string;
149
- image: string;
150
- url: string;
151
- } | null;
152
- curators: {
153
- name: string;
154
- image: string;
155
- url: string;
156
- }[];
157
- } | null;
158
- liquidityAssets: {
159
- formatted: string;
160
- usd: number | null;
161
- };
162
- idleAssets: {
163
- formatted: string;
164
- usd: number | null;
165
- };
166
- v2PerformanceFee: {
167
- formatted: string;
168
- };
169
- managementFee: {
170
- formatted: string;
171
- };
172
- adapters: ({
173
- __typename?: "MarketV1Adapter";
174
- adapterAddress: `0x${string}`;
175
- name: string | null;
176
- } | {
177
- __typename?: "BoxVaultAdapter";
178
- } | {
179
- __typename?: "UnknownAdapter";
180
- } | {
181
- __typename?: "VaultV1Adapter";
182
- })[];
183
- riskAssessment: {
184
- steakhouse: {
185
- score: number;
186
- rating: string;
187
- } | null;
188
- };
189
- } | {
190
- __typename?: "BoxVault";
191
- chain: {
192
- id: number;
193
- name: string;
194
- icon: string;
195
- };
196
- vaultAddress: `0x${string}`;
197
- name: string;
198
- symbol: string;
199
- decimals: number;
200
- asset: {
201
- address: `0x${string}`;
202
- symbol: string;
203
- name: string;
204
- icon: string | null;
205
- priceUsd: number | null;
206
- decimals: number;
207
- };
208
- totalAssets: {
209
- raw: bigint;
210
- formatted: string;
211
- usd: number | null;
212
- };
213
- apy: {
214
- base: number;
215
- total: number;
216
- rewards: {
217
- asset: {
218
- symbol: string;
219
- icon: string | null;
220
- };
221
- apr: number;
222
- }[];
223
- fee: number;
224
- };
225
- } | {
226
- __typename?: "GenericErc4626Vault";
227
- chain: {
228
- id: number;
229
- name: string;
230
- icon: string;
231
- };
232
- vaultAddress: `0x${string}`;
233
- name: string;
234
- symbol: string;
235
- decimals: number;
236
- asset: {
237
- address: `0x${string}`;
238
- symbol: string;
239
- name: string;
240
- icon: string | null;
241
- priceUsd: number | null;
242
- decimals: number;
243
- };
244
- totalAssets: {
245
- raw: bigint;
246
- formatted: string;
247
- usd: number | null;
248
- };
249
- apy: {
250
- base: number;
251
- total: number;
252
- rewards: {
253
- asset: {
254
- symbol: string;
255
- icon: string | null;
256
- };
257
- apr: number;
258
- }[];
259
- fee: number;
260
- };
261
- } | null)[];
262
- };
263
- }, {
264
- limit?: number | null;
265
- where?: {
266
- keys?: {
267
- protocol: "morpho_v1" | "morpho_v2" | "generic" | "box";
268
- vaultAddress: `0x${string}`;
269
- chainId: number;
270
- }[] | null;
271
- } | null;
272
- }, void>;
273
- type GetVaultsVariables = {
274
- /** Filter by chain ID */
275
- chainId?: number;
276
- };
277
- /** Vault with Steakhouse metadata */
278
- type VaultWithMetadata = VaultDetail & {
279
- steakhouseMetadata?: SteakhouseMetadata;
280
- };
281
- type GetVaultsResult = VaultWithMetadata[];
282
- /**
283
- * Get all Steakhouse-curated vaults.
284
- * Results are filtered to the SDK whitelist and augmented with Steakhouse metadata.
285
- */
286
- declare function getVaults(client: WhiskClient, variables?: GetVaultsVariables): Promise<GetVaultsResult>;
287
-
288
- export { type GetVaultsResult, type GetVaultsVariables, type VaultWithMetadata, getVaults, vaultsQuery };
@@ -1,49 +0,0 @@
1
- import { graphql } from "@whisk/graphql";
2
- import { ALL_VAULTS } from "../metadata/vaults.js";
3
- import { vaultDetailFragment } from "./fragments/vaultDetail.js";
4
- import { buildSteakhouseMetadata } from "./steakhouseMetadata.js";
5
- const vaultsQuery = graphql(
6
- `
7
- query GetVaults($where: Erc4626VaultFilter, $limit: Int) {
8
- erc4626Vaults(where: $where, limit: $limit) {
9
- items {
10
- ...VaultDetailFragment
11
- }
12
- }
13
- }
14
- `,
15
- [vaultDetailFragment]
16
- );
17
- async function getVaults(client, variables = {}) {
18
- const { chainId } = variables;
19
- const filteredVaults = ALL_VAULTS.filter(
20
- (v) => !v.isHidden && (!chainId || v.chainId === chainId)
21
- );
22
- if (filteredVaults.length === 0) {
23
- return [];
24
- }
25
- const keys = filteredVaults.map((v) => ({
26
- chainId: v.chainId,
27
- vaultAddress: v.address,
28
- protocol: v.protocol
29
- }));
30
- const result = await client.query(vaultsQuery, {
31
- where: { keys },
32
- limit: keys.length
33
- });
34
- const metadataMap = new Map(
35
- filteredVaults.map((v) => [v.address.toLowerCase(), v])
36
- );
37
- return result.erc4626Vaults.items.filter((vault) => vault !== null).map((vault) => {
38
- const config = metadataMap.get(vault.vaultAddress.toLowerCase());
39
- if (config) {
40
- return { ...vault, steakhouseMetadata: buildSteakhouseMetadata(config) };
41
- }
42
- return vault;
43
- });
44
- }
45
- export {
46
- getVaults,
47
- vaultsQuery
48
- };
49
- //# sourceMappingURL=getVaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/queries/getVaults.ts"],"sourcesContent":["import { graphql } from \"@whisk/graphql\"\nimport type { SteakhouseClient } from \"../client.js\"\nimport type { Address, VaultConfig } from \"../metadata/types.js\"\nimport { ALL_VAULTS } from \"../metadata/vaults.js\"\nimport { type VaultDetail, vaultDetailFragment } from \"./fragments/vaultDetail.js\"\nimport { buildSteakhouseMetadata, type SteakhouseMetadata } from \"./steakhouseMetadata.js\"\n\n/** GraphQL query for fetching Steakhouse vaults */\nexport const vaultsQuery = graphql(\n `\n query GetVaults($where: Erc4626VaultFilter, $limit: Int) {\n erc4626Vaults(where: $where, limit: $limit) {\n items {\n ...VaultDetailFragment\n }\n }\n }\n `,\n [vaultDetailFragment],\n)\n\nexport type GetVaultsVariables = {\n /** Filter by chain ID */\n chainId?: number\n}\n\n/** Vault with Steakhouse metadata */\nexport type VaultWithMetadata = VaultDetail & {\n steakhouseMetadata?: SteakhouseMetadata\n}\n\nexport type GetVaultsResult = VaultWithMetadata[]\n\n/**\n * Get all Steakhouse-curated vaults.\n * Results are filtered to the SDK whitelist and augmented with Steakhouse metadata.\n */\nexport async function getVaults(\n client: SteakhouseClient,\n variables: GetVaultsVariables = {},\n): Promise<GetVaultsResult> {\n const { chainId } = variables\n\n const filteredVaults = ALL_VAULTS.filter(\n (v) => !v.isHidden && (!chainId || v.chainId === chainId),\n )\n\n if (filteredVaults.length === 0) {\n return []\n }\n\n // Build keys array for erc4626Vaults filter\n const keys = filteredVaults.map((v) => ({\n chainId: v.chainId,\n vaultAddress: v.address,\n protocol: v.protocol,\n }))\n\n const result = await client.query(vaultsQuery, {\n where: { keys },\n limit: keys.length,\n })\n\n const metadataMap = new Map<Address, VaultConfig>(\n filteredVaults.map((v) => [v.address.toLowerCase() as Address, v]),\n )\n\n return result.erc4626Vaults.items\n .filter((vault): vault is NonNullable<typeof vault> => vault !== null)\n .map((vault) => {\n const config = metadataMap.get(vault.vaultAddress.toLowerCase() as Address)\n if (config) {\n return { ...vault, steakhouseMetadata: buildSteakhouseMetadata(config) }\n }\n return vault\n })\n}\n"],"mappings":"AAAA,SAAS,eAAe;AAGxB,SAAS,kBAAkB;AAC3B,SAA2B,2BAA2B;AACtD,SAAS,+BAAwD;AAG1D,MAAM,cAAc;AAAA,EACzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,CAAC,mBAAmB;AACtB;AAkBA,eAAsB,UACpB,QACA,YAAgC,CAAC,GACP;AAC1B,QAAM,EAAE,QAAQ,IAAI;AAEpB,QAAM,iBAAiB,WAAW;AAAA,IAChC,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,WAAW,EAAE,YAAY;AAAA,EACnD;AAEA,MAAI,eAAe,WAAW,GAAG;AAC/B,WAAO,CAAC;AAAA,EACV;AAGA,QAAM,OAAO,eAAe,IAAI,CAAC,OAAO;AAAA,IACtC,SAAS,EAAE;AAAA,IACX,cAAc,EAAE;AAAA,IAChB,UAAU,EAAE;AAAA,EACd,EAAE;AAEF,QAAM,SAAS,MAAM,OAAO,MAAM,aAAa;AAAA,IAC7C,OAAO,EAAE,KAAK;AAAA,IACd,OAAO,KAAK;AAAA,EACd,CAAC;AAED,QAAM,cAAc,IAAI;AAAA,IACtB,eAAe,IAAI,CAAC,MAAM,CAAC,EAAE,QAAQ,YAAY,GAAc,CAAC,CAAC;AAAA,EACnE;AAEA,SAAO,OAAO,cAAc,MACzB,OAAO,CAAC,UAA8C,UAAU,IAAI,EACpE,IAAI,CAAC,UAAU;AACd,UAAM,SAAS,YAAY,IAAI,MAAM,aAAa,YAAY,CAAY;AAC1E,QAAI,QAAQ;AACV,aAAO,EAAE,GAAG,OAAO,oBAAoB,wBAAwB,MAAM,EAAE;AAAA,IACzE;AACA,WAAO;AAAA,EACT,CAAC;AACL;","names":[]}
@@ -1,13 +0,0 @@
1
- import { VaultConfig } from '../metadata/types.js';
2
-
3
- /** Steakhouse-specific metadata augmented onto vault data */
4
- type SteakhouseMetadata = {
5
- name?: string;
6
- description?: string;
7
- tag?: VaultConfig["tag"];
8
- protocol: VaultConfig["protocol"];
9
- };
10
- /** Build metadata object from vault config */
11
- declare function buildSteakhouseMetadata(config: VaultConfig): SteakhouseMetadata;
12
-
13
- export { type SteakhouseMetadata, buildSteakhouseMetadata };
@@ -1,12 +0,0 @@
1
- function buildSteakhouseMetadata(config) {
2
- return {
3
- protocol: config.protocol,
4
- ...config.name !== void 0 && { name: config.name },
5
- ...config.description !== void 0 && { description: config.description },
6
- ...config.tag !== void 0 && { tag: config.tag }
7
- };
8
- }
9
- export {
10
- buildSteakhouseMetadata
11
- };
12
- //# sourceMappingURL=steakhouseMetadata.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/queries/steakhouseMetadata.ts"],"sourcesContent":["import type { VaultConfig } from \"../metadata/types.js\"\n\n/** Steakhouse-specific metadata augmented onto vault data */\nexport type SteakhouseMetadata = {\n name?: string\n description?: string\n tag?: VaultConfig[\"tag\"]\n protocol: VaultConfig[\"protocol\"]\n}\n\n/** Build metadata object from vault config */\nexport function buildSteakhouseMetadata(config: VaultConfig): SteakhouseMetadata {\n return {\n protocol: config.protocol,\n ...(config.name !== undefined && { name: config.name }),\n ...(config.description !== undefined && { description: config.description }),\n ...(config.tag !== undefined && { tag: config.tag }),\n }\n}\n"],"mappings":"AAWO,SAAS,wBAAwB,QAAyC;AAC/E,SAAO;AAAA,IACL,UAAU,OAAO;AAAA,IACjB,GAAI,OAAO,SAAS,UAAa,EAAE,MAAM,OAAO,KAAK;AAAA,IACrD,GAAI,OAAO,gBAAgB,UAAa,EAAE,aAAa,OAAO,YAAY;AAAA,IAC1E,GAAI,OAAO,QAAQ,UAAa,EAAE,KAAK,OAAO,IAAI;AAAA,EACpD;AACF;","names":[]}
@@ -1,5 +0,0 @@
1
- import { WhiskClient } from '@whisk/client';
2
-
3
- type SteakhouseQueryFn<TData, TVariables> = (client: WhiskClient, variables: TVariables) => Promise<TData>;
4
-
5
- export type { SteakhouseQueryFn };
@@ -1 +0,0 @@
1
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,12 +0,0 @@
1
- import { UseQueryResult } from '@tanstack/react-query';
2
- import { GetDetailedVaultVariables, GetDetailedVaultResult } from '../../queries/getDetailedVault.js';
3
- import 'gql.tada';
4
- import '@whisk/client';
5
- import '../../metadata/types.js';
6
- import '../../queries/fragments/vaultDetail.js';
7
- import '@whisk/graphql';
8
- import '../../queries/steakhouseMetadata.js';
9
-
10
- declare function useDetailedVault(variables: GetDetailedVaultVariables): UseQueryResult<GetDetailedVaultResult, Error>;
11
-
12
- export { useDetailedVault };
@@ -1,16 +0,0 @@
1
- "use client";
2
- import {
3
- getDetailedVault
4
- } from "../../queries/getDetailedVault.js";
5
- import { useSteakhouseQuery } from "./useSteakhouseQuery.js";
6
- function useDetailedVault(variables) {
7
- return useSteakhouseQuery({
8
- queryName: "detailedVault",
9
- queryFn: getDetailedVault,
10
- variables
11
- });
12
- }
13
- export {
14
- useDetailedVault
15
- };
16
- //# sourceMappingURL=useDetailedVault.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/react/hooks/useDetailedVault.ts"],"sourcesContent":["\"use client\"\n\nimport type { UseQueryResult } from \"@tanstack/react-query\"\nimport {\n type GetDetailedVaultResult,\n type GetDetailedVaultVariables,\n getDetailedVault,\n} from \"../../queries/getDetailedVault.js\"\nimport { useSteakhouseQuery } from \"./useSteakhouseQuery.js\"\n\nexport function useDetailedVault(\n variables: GetDetailedVaultVariables,\n): UseQueryResult<GetDetailedVaultResult, Error> {\n return useSteakhouseQuery({\n queryName: \"detailedVault\",\n queryFn: getDetailedVault,\n variables,\n })\n}\n"],"mappings":";AAGA;AAAA,EAGE;AAAA,OACK;AACP,SAAS,0BAA0B;AAE5B,SAAS,iBACd,WAC+C;AAC/C,SAAO,mBAAmB;AAAA,IACxB,WAAW;AAAA,IACX,SAAS;AAAA,IACT;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -1,11 +0,0 @@
1
- import { UseQueryResult } from '@tanstack/react-query';
2
- import { SteakhouseQueryFn } from '../../queries/types.js';
3
- import '@whisk/client';
4
-
5
- declare function useSteakhouseQuery<TData, TVariables>(options: {
6
- queryName: string;
7
- queryFn: SteakhouseQueryFn<TData, TVariables>;
8
- variables: TVariables;
9
- }): UseQueryResult<TData, Error>;
10
-
11
- export { useSteakhouseQuery };
@@ -1,14 +0,0 @@
1
- "use client";
2
- import { useQuery } from "@tanstack/react-query";
3
- import { useSteakhouse } from "../provider.js";
4
- function useSteakhouseQuery(options) {
5
- const { client } = useSteakhouse();
6
- return useQuery({
7
- queryKey: ["steakhouse", options.queryName, options.variables],
8
- queryFn: () => options.queryFn(client, options.variables)
9
- });
10
- }
11
- export {
12
- useSteakhouseQuery
13
- };
14
- //# sourceMappingURL=useSteakhouseQuery.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/react/hooks/useSteakhouseQuery.ts"],"sourcesContent":["\"use client\"\n\nimport { type UseQueryResult, useQuery } from \"@tanstack/react-query\"\nimport type { SteakhouseQueryFn } from \"../../queries/types.js\"\nimport { useSteakhouse } from \"../provider.js\"\n\nexport function useSteakhouseQuery<TData, TVariables>(options: {\n queryName: string\n queryFn: SteakhouseQueryFn<TData, TVariables>\n variables: TVariables\n}): UseQueryResult<TData, Error> {\n const { client } = useSteakhouse()\n return useQuery({\n queryKey: [\"steakhouse\", options.queryName, options.variables],\n queryFn: () => options.queryFn(client, options.variables),\n })\n}\n"],"mappings":";AAEA,SAA8B,gBAAgB;AAE9C,SAAS,qBAAqB;AAEvB,SAAS,mBAAsC,SAIrB;AAC/B,QAAM,EAAE,OAAO,IAAI,cAAc;AACjC,SAAO,SAAS;AAAA,IACd,UAAU,CAAC,cAAc,QAAQ,WAAW,QAAQ,SAAS;AAAA,IAC7D,SAAS,MAAM,QAAQ,QAAQ,QAAQ,QAAQ,SAAS;AAAA,EAC1D,CAAC;AACH;","names":[]}
@@ -1,12 +0,0 @@
1
- import { UseQueryResult } from '@tanstack/react-query';
2
- import { GetVaultsVariables, GetVaultsResult } from '../../queries/getVaults.js';
3
- import 'gql.tada';
4
- import '@whisk/client';
5
- import '../../queries/fragments/vaultDetail.js';
6
- import '@whisk/graphql';
7
- import '../../queries/steakhouseMetadata.js';
8
- import '../../metadata/types.js';
9
-
10
- declare function useVaults(variables: GetVaultsVariables): UseQueryResult<GetVaultsResult, Error>;
11
-
12
- export { useVaults };
@@ -1,16 +0,0 @@
1
- "use client";
2
- import {
3
- getVaults
4
- } from "../../queries/getVaults.js";
5
- import { useSteakhouseQuery } from "./useSteakhouseQuery.js";
6
- function useVaults(variables) {
7
- return useSteakhouseQuery({
8
- queryName: "vaults",
9
- queryFn: getVaults,
10
- variables
11
- });
12
- }
13
- export {
14
- useVaults
15
- };
16
- //# sourceMappingURL=useVaults.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/react/hooks/useVaults.ts"],"sourcesContent":["\"use client\"\n\nimport type { UseQueryResult } from \"@tanstack/react-query\"\nimport {\n type GetVaultsResult,\n type GetVaultsVariables,\n getVaults,\n} from \"../../queries/getVaults.js\"\nimport { useSteakhouseQuery } from \"./useSteakhouseQuery.js\"\n\nexport function useVaults(variables: GetVaultsVariables): UseQueryResult<GetVaultsResult, Error> {\n return useSteakhouseQuery({\n queryName: \"vaults\",\n queryFn: getVaults,\n variables,\n })\n}\n"],"mappings":";AAGA;AAAA,EAGE;AAAA,OACK;AACP,SAAS,0BAA0B;AAE5B,SAAS,UAAU,WAAuE;AAC/F,SAAO,mBAAmB;AAAA,IACxB,WAAW;AAAA,IACX,SAAS;AAAA,IACT;AAAA,EACF,CAAC;AACH;","names":[]}
@@ -1,13 +0,0 @@
1
- import type { ChainConfig } from "./types.js"
2
-
3
- export const MAINNET: ChainConfig = {
4
- id: 1,
5
- name: "Ethereum Mainnet",
6
- }
7
-
8
- export const BASE: ChainConfig = {
9
- id: 8453,
10
- name: "Base",
11
- }
12
-
13
- export const SUPPORTED_CHAINS = [MAINNET, BASE] as const
@@ -1,27 +0,0 @@
1
- import type { VaultConfig } from "./types.js"
2
-
3
- // Mainnet vault configurations
4
- export const MAINNET_VAULTS: readonly VaultConfig[] = [
5
- {
6
- chainId: 1,
7
- address: "0xBEEF01735c132Ada46AA9aA4c54623cAA92A64CB",
8
- protocol: "morpho_v1",
9
- },
10
- {
11
- chainId: 1,
12
- address: "0xbeef0046fcab1dE47E41fB75BB3dC4Dfc94108E3",
13
- protocol: "morpho_v2",
14
- tag: "featured",
15
- },
16
- {
17
- chainId: 1,
18
- address: "0xbeeff2C5bF38f90e3482a8b19F12E5a6D2FCa757",
19
- protocol: "morpho_v2",
20
- },
21
- ] as const
22
-
23
- // Base vault configurations
24
- export const BASE_VAULTS: readonly VaultConfig[] = [] as const
25
-
26
- // All vaults across all chains
27
- export const ALL_VAULTS = [...MAINNET_VAULTS, ...BASE_VAULTS] as const
@@ -1,151 +0,0 @@
1
- import { type FragmentOf, graphql } from "@whisk/graphql"
2
-
3
- /**
4
- * Full fragment for vault detail view.
5
- * Uses inline fragments to handle both MorphoVault (v1) and MorphoVaultV2.
6
- */
7
- export const vaultDetailFragment = graphql(`
8
- fragment VaultDetailFragment on Erc4626Vault {
9
- chain {
10
- id
11
- name
12
- icon
13
- }
14
- vaultAddress
15
- name
16
- symbol
17
- decimals
18
- asset {
19
- address
20
- symbol
21
- name
22
- icon
23
- priceUsd
24
- decimals
25
- }
26
- totalAssets {
27
- raw
28
- formatted
29
- usd
30
- }
31
- apy(timeframe: seven_days) {
32
- base
33
- total
34
- rewards {
35
- asset {
36
- symbol
37
- icon
38
- }
39
- apr
40
- }
41
- fee
42
- }
43
- ... on MorphoVault {
44
- totalLiquidity {
45
- formatted
46
- usd
47
- }
48
- v1PerformanceFee: performanceFee
49
- feeRecipientAddress
50
- ownerAddress
51
- curatorAddress
52
- guardianAddress
53
- metadata {
54
- description
55
- image
56
- forumLink
57
- curator {
58
- name
59
- image
60
- url
61
- }
62
- curators {
63
- name
64
- image
65
- url
66
- }
67
- }
68
- marketAllocations {
69
- market {
70
- marketId
71
- name
72
- loanAsset {
73
- symbol
74
- icon
75
- }
76
- collateralAsset {
77
- symbol
78
- icon
79
- }
80
- isIdle
81
- }
82
- enabled
83
- supplyCap {
84
- formatted
85
- usd
86
- }
87
- vaultSupplyShare
88
- marketSupplyShare
89
- position {
90
- supplyAmount {
91
- formatted
92
- usd
93
- }
94
- }
95
- }
96
- riskAssessment {
97
- steakhouse {
98
- score
99
- rating
100
- }
101
- }
102
- }
103
- ... on MorphoVaultV2 {
104
- curatorAddress
105
- ownerAddress
106
- metadata {
107
- description
108
- image
109
- forumLink
110
- curator {
111
- name
112
- image
113
- url
114
- }
115
- curators {
116
- name
117
- image
118
- url
119
- }
120
- }
121
- liquidityAssets {
122
- formatted
123
- usd
124
- }
125
- idleAssets {
126
- formatted
127
- usd
128
- }
129
- v2PerformanceFee: performanceFee {
130
- formatted
131
- }
132
- managementFee {
133
- formatted
134
- }
135
- adapters {
136
- ... on MarketV1Adapter {
137
- adapterAddress
138
- name
139
- }
140
- }
141
- riskAssessment {
142
- steakhouse {
143
- score
144
- rating
145
- }
146
- }
147
- }
148
- }
149
- `)
150
-
151
- export type VaultDetail = FragmentOf<typeof vaultDetailFragment>