@whisk/steakhouse 0.0.4 → 0.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (156) hide show
  1. package/dist/client.d.ts +1 -12
  2. package/dist/client.js +1 -10
  3. package/dist/client.js.map +1 -1
  4. package/dist/index.d.ts +6 -5
  5. package/dist/index.js +1 -4
  6. package/dist/index.js.map +1 -1
  7. package/dist/metadata/generated/vaults.d.ts +7 -0
  8. package/dist/metadata/generated/vaults.js +468 -0
  9. package/dist/metadata/generated/vaults.js.map +1 -0
  10. package/dist/metadata/index.d.ts +3 -3
  11. package/dist/metadata/index.js +4 -8
  12. package/dist/metadata/index.js.map +1 -1
  13. package/dist/metadata/types.d.ts +10 -9
  14. package/dist/metadata/types.js +4 -0
  15. package/dist/metadata/types.js.map +1 -1
  16. package/dist/queries/fragments/vaultDetail.d.ts +265 -0
  17. package/dist/queries/fragments/vaultDetail.js +148 -0
  18. package/dist/queries/fragments/vaultDetail.js.map +1 -0
  19. package/dist/queries/getDetailedVault.d.ts +591 -0
  20. package/dist/queries/getDetailedVault.js +92 -0
  21. package/dist/queries/getDetailedVault.js.map +1 -0
  22. package/dist/queries/getVaults.d.ts +274 -13
  23. package/dist/queries/getVaults.js +34 -10
  24. package/dist/queries/getVaults.js.map +1 -1
  25. package/dist/queries/index.d.ts +6 -5
  26. package/dist/queries/index.js +6 -8
  27. package/dist/queries/index.js.map +1 -1
  28. package/dist/queries/steakhouseMetadata.d.ts +14 -0
  29. package/dist/queries/steakhouseMetadata.js +12 -0
  30. package/dist/queries/steakhouseMetadata.js.map +1 -0
  31. package/dist/queries/types.d.ts +2 -4
  32. package/dist/react/hooks/index.d.ts +8 -5
  33. package/dist/react/hooks/index.js +2 -0
  34. package/dist/react/hooks/index.js.map +1 -1
  35. package/dist/react/hooks/useDetailedVault.d.ts +12 -0
  36. package/dist/react/hooks/useDetailedVault.js +16 -0
  37. package/dist/react/hooks/useDetailedVault.js.map +1 -0
  38. package/dist/react/hooks/useSteakhouseQuery.d.ts +2 -4
  39. package/dist/react/hooks/useSteakhouseQuery.js +1 -1
  40. package/dist/react/hooks/useSteakhouseQuery.js.map +1 -1
  41. package/dist/react/hooks/useVaults.d.ts +7 -14
  42. package/dist/react/hooks/useVaults.js +3 -1
  43. package/dist/react/hooks/useVaults.js.map +1 -1
  44. package/dist/react/index.d.ts +8 -5
  45. package/dist/react/index.js +1 -8
  46. package/dist/react/index.js.map +1 -1
  47. package/dist/react/provider.d.ts +3 -5
  48. package/package.json +16 -8
  49. package/src/client.ts +3 -19
  50. package/src/index.ts +1 -2
  51. package/src/metadata/README.md +93 -0
  52. package/src/metadata/generated/vaults.ts +470 -0
  53. package/src/metadata/index.ts +5 -3
  54. package/src/metadata/types.ts +9 -10
  55. package/src/metadata/vaults/arbitrum/high-yield-turbo-usdc.md +6 -0
  56. package/src/metadata/vaults/arbitrum/high-yield-usdc-v1.md +6 -0
  57. package/src/metadata/vaults/arbitrum/high-yield-usdc-v2.md +6 -0
  58. package/src/metadata/vaults/arbitrum/high-yield-usdt-v2.md +6 -0
  59. package/src/metadata/vaults/base/deblock-eurc.md +6 -0
  60. package/src/metadata/vaults/base/eth-v1.md +6 -0
  61. package/src/metadata/vaults/base/eura.md +6 -0
  62. package/src/metadata/vaults/base/eurc-v1.md +6 -0
  63. package/src/metadata/vaults/base/high-yield-instant-usdc.md +6 -0
  64. package/src/metadata/vaults/base/high-yield-turbo-eth.md +6 -0
  65. package/src/metadata/vaults/base/high-yield-usdc-v1-1.md +6 -0
  66. package/src/metadata/vaults/base/high-yield-usdc.md +6 -0
  67. package/src/metadata/vaults/base/prime-instant-usdc.md +6 -0
  68. package/src/metadata/vaults/base/safe-x-eth-2.md +6 -0
  69. package/src/metadata/vaults/base/safe-x-eth.md +6 -0
  70. package/src/metadata/vaults/base/safe-x-usdc.md +6 -0
  71. package/src/metadata/vaults/base/smokehouse-usdc.md +6 -0
  72. package/src/metadata/vaults/base/susds.md +6 -0
  73. package/src/metadata/vaults/base/usda.md +6 -0
  74. package/src/metadata/vaults/base/usdc-rwa.md +6 -0
  75. package/src/metadata/vaults/base/usdc-v1.md +6 -0
  76. package/src/metadata/vaults/katana/high-yield-ausd.md +6 -0
  77. package/src/metadata/vaults/katana/high-yield-usdc.md +6 -0
  78. package/src/metadata/vaults/katana/prime-ausd.md +6 -0
  79. package/src/metadata/vaults/katana/prime-usdc.md +6 -0
  80. package/src/metadata/vaults/mainnet/3f-x-steakhouse.md +6 -0
  81. package/src/metadata/vaults/mainnet/coinshift-usdc.md +6 -0
  82. package/src/metadata/vaults/mainnet/coinshift-usdl.md +6 -0
  83. package/src/metadata/vaults/mainnet/eth-v1.md +6 -0
  84. package/src/metadata/vaults/mainnet/ethena-usdt.md +6 -0
  85. package/src/metadata/vaults/mainnet/ethena-usdtb.md +6 -0
  86. package/src/metadata/vaults/mainnet/eurcv-v1.md +6 -0
  87. package/src/metadata/vaults/mainnet/high-yield-instant-ausd-v2.md +6 -0
  88. package/src/metadata/vaults/mainnet/high-yield-instant-usdc-v2.md +6 -0
  89. package/src/metadata/vaults/mainnet/high-yield-instant-usdt-v2.md +6 -0
  90. package/src/metadata/vaults/mainnet/high-yield-term-usdc.md +6 -0
  91. package/src/metadata/vaults/mainnet/high-yield-turbo-cbbtc-v2.md +6 -0
  92. package/src/metadata/vaults/mainnet/high-yield-turbo-eth-v2.md +6 -0
  93. package/src/metadata/vaults/mainnet/high-yield-turbo-usdt-v2.md +6 -0
  94. package/src/metadata/vaults/mainnet/infinifi-usdc.md +6 -0
  95. package/src/metadata/vaults/mainnet/level-usdc.md +6 -0
  96. package/src/metadata/vaults/mainnet/m-v1.md +6 -0
  97. package/src/metadata/vaults/mainnet/paxg-v1.md +6 -0
  98. package/src/metadata/vaults/mainnet/peaty-usdc.md +6 -0
  99. package/src/metadata/vaults/mainnet/prime-instant-eth-v2.md +6 -0
  100. package/src/metadata/vaults/mainnet/prime-instant-eurcv-v2.md +6 -0
  101. package/src/metadata/vaults/mainnet/prime-instant-pyusd-v2.md +6 -0
  102. package/src/metadata/vaults/mainnet/prime-instant-usdc-v2.md +6 -0
  103. package/src/metadata/vaults/mainnet/prime-instant-usdt-v2.md +6 -0
  104. package/src/metadata/vaults/mainnet/pyusd-high-yield-instant.md +6 -0
  105. package/src/metadata/vaults/mainnet/pyusd-v1.md +6 -0
  106. package/src/metadata/vaults/mainnet/rusd-v1.md +6 -0
  107. package/src/metadata/vaults/mainnet/safe-x-eth.md +6 -0
  108. package/src/metadata/vaults/mainnet/safe-x-smokehouse-usdc.md +6 -0
  109. package/src/metadata/vaults/mainnet/safe-x-smokehouse-usdt.md +6 -0
  110. package/src/metadata/vaults/mainnet/safe-x-smokehouse-wbtc.md +6 -0
  111. package/src/metadata/vaults/mainnet/safe-x-smokehouse-wsteth.md +6 -0
  112. package/src/metadata/vaults/mainnet/safe-x-usdc.md +6 -0
  113. package/src/metadata/vaults/mainnet/safe-x-usdt.md +6 -0
  114. package/src/metadata/vaults/mainnet/smokehouse-cbbtc.md +6 -0
  115. package/src/metadata/vaults/mainnet/smokehouse-dai.md +6 -0
  116. package/src/metadata/vaults/mainnet/smokehouse-eth.md +6 -0
  117. package/src/metadata/vaults/mainnet/smokehouse-usdc.md +6 -0
  118. package/src/metadata/vaults/mainnet/smokehouse-usdt.md +6 -0
  119. package/src/metadata/vaults/mainnet/smokehouse-wsteth.md +6 -0
  120. package/src/metadata/vaults/mainnet/usdc-rwa.md +6 -0
  121. package/src/metadata/vaults/mainnet/usdc-v1.md +6 -0
  122. package/src/metadata/vaults/mainnet/usdq.md +6 -0
  123. package/src/metadata/vaults/mainnet/usdr.md +6 -0
  124. package/src/metadata/vaults/mainnet/usdt-lite.md +6 -0
  125. package/src/metadata/vaults/mainnet/usdt-v1.md +6 -0
  126. package/src/metadata/vaults/mainnet/vault-bridge-usdc.md +6 -0
  127. package/src/metadata/vaults/mainnet/wbtc-v1.md +6 -0
  128. package/src/metadata/vaults/monad/ausd-v2.md +6 -0
  129. package/src/metadata/vaults/monad/usdc-v2.md +6 -0
  130. package/src/metadata/vaults/unichain/eth.md +6 -0
  131. package/src/metadata/vaults/unichain/wsteth.md +6 -0
  132. package/src/queries/fragments/vaultDetail.ts +151 -0
  133. package/src/queries/getDetailedVault.test.ts +202 -0
  134. package/src/queries/getDetailedVault.ts +131 -0
  135. package/src/queries/getVaults.test.ts +167 -0
  136. package/src/queries/getVaults.ts +62 -13
  137. package/src/queries/index.ts +9 -7
  138. package/src/queries/steakhouseMetadata.ts +19 -0
  139. package/src/react/hooks/index.ts +1 -0
  140. package/src/react/hooks/useDetailedVault.ts +19 -0
  141. package/src/react/hooks/useSteakhouseQuery.ts +3 -3
  142. package/src/react/hooks/useVaults.ts +7 -2
  143. package/src/react/index.ts +1 -6
  144. package/dist/metadata/chains.d.ts +0 -7
  145. package/dist/metadata/chains.js +0 -15
  146. package/dist/metadata/chains.js.map +0 -1
  147. package/dist/metadata/vaults.d.ts +0 -7
  148. package/dist/metadata/vaults.js +0 -24
  149. package/dist/metadata/vaults.js.map +0 -1
  150. package/dist/queries/fragments/vault.d.ts +0 -19
  151. package/dist/queries/fragments/vault.js +0 -16
  152. package/dist/queries/fragments/vault.js.map +0 -1
  153. package/src/client.test.ts +0 -27
  154. package/src/metadata/chains.ts +0 -13
  155. package/src/metadata/vaults.ts +0 -27
  156. package/src/queries/fragments/vault.ts +0 -15
@@ -1,27 +1,288 @@
1
1
  import * as gql_tada from 'gql.tada';
2
- import { VariablesOf } from 'gql.tada';
3
- import { ResultOf } from '@whisk/graphql';
4
- import { SteakhouseClient } from '../client.js';
5
- import '@urql/core';
6
- import '@whisk/client';
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
7
 
8
- declare const vaultQuery: gql_tada.TadaDocumentNode<{
9
- morphoVaults: {
8
+ /** GraphQL query for fetching Steakhouse vaults */
9
+ declare const vaultsQuery: gql_tada.TadaDocumentNode<{
10
+ erc4626Vaults: {
10
11
  items: ({
12
+ __typename?: "MorphoVault";
11
13
  chain: {
12
14
  id: number;
15
+ name: string;
16
+ icon: string;
13
17
  };
14
18
  vaultAddress: `0x${string}`;
15
- totalSupplied: {
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: {
16
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;
17
260
  };
18
261
  } | null)[];
19
262
  };
20
263
  }, {
21
- limit: number;
264
+ limit?: number | null;
265
+ where?: {
266
+ keys?: {
267
+ protocol: "generic" | "morpho_v1" | "morpho_v2" | "box";
268
+ vaultAddress: `0x${string}`;
269
+ chainId: number;
270
+ }[] | null;
271
+ } | null;
22
272
  }, void>;
23
- type GetVaultsVariables = VariablesOf<typeof vaultQuery>;
24
- type GetVaultsResult = ResultOf<typeof vaultQuery>["morphoVaults"]["items"];
25
- declare function getVaults(client: SteakhouseClient, variables: GetVaultsVariables): Promise<GetVaultsResult>;
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>;
26
287
 
27
- export { type GetVaultsResult, type GetVaultsVariables, getVaults, vaultQuery };
288
+ export { type GetVaultsResult, type GetVaultsVariables, type VaultWithMetadata, getVaults, vaultsQuery };
@@ -1,23 +1,47 @@
1
1
  import { graphql } from "@whisk/graphql";
2
- import { vaultFragment } from "./fragments/vault.js";
3
- const vaultQuery = graphql(
2
+ import { STEAKHOUSE_VAULTS } from "../metadata/generated/vaults.js";
3
+ import { vaultDetailFragment } from "./fragments/vaultDetail.js";
4
+ import { buildSteakhouseMetadata } from "./steakhouseMetadata.js";
5
+ const vaultsQuery = graphql(
4
6
  `
5
- query GetVaults($limit: Int!) {
6
- morphoVaults(limit: $limit) {
7
+ query GetVaults($where: Erc4626VaultFilter, $limit: Int) {
8
+ erc4626Vaults(where: $where, limit: $limit) {
7
9
  items {
8
- ...VaultFragment
10
+ ...VaultDetailFragment
9
11
  }
10
12
  }
11
13
  }
12
14
  `,
13
- [vaultFragment]
15
+ [vaultDetailFragment]
14
16
  );
15
- async function getVaults(client, variables) {
16
- const result = await client.query(vaultQuery, variables);
17
- return result.morphoVaults.items;
17
+ async function getVaults(client, variables = {}) {
18
+ const { chainId } = variables;
19
+ const filteredVaults = chainId ? STEAKHOUSE_VAULTS.filter((v) => v.chainId === chainId) : STEAKHOUSE_VAULTS;
20
+ if (filteredVaults.length === 0) {
21
+ return [];
22
+ }
23
+ const keys = filteredVaults.map((v) => ({
24
+ chainId: v.chainId,
25
+ vaultAddress: v.address,
26
+ protocol: v.protocol
27
+ }));
28
+ const result = await client.query(vaultsQuery, {
29
+ where: { keys },
30
+ limit: keys.length
31
+ });
32
+ const metadataMap = new Map(
33
+ filteredVaults.map((v) => [v.address.toLowerCase(), v])
34
+ );
35
+ return result.erc4626Vaults.items.filter((vault) => vault !== null).map((vault) => {
36
+ const config = metadataMap.get(vault.vaultAddress.toLowerCase());
37
+ if (config) {
38
+ return { ...vault, steakhouseMetadata: buildSteakhouseMetadata(config) };
39
+ }
40
+ return vault;
41
+ });
18
42
  }
19
43
  export {
20
44
  getVaults,
21
- vaultQuery
45
+ vaultsQuery
22
46
  };
23
47
  //# sourceMappingURL=getVaults.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/getVaults.ts"],"sourcesContent":["import { graphql, type ResultOf } from \"@whisk/graphql\"\nimport type { VariablesOf } from \"gql.tada\"\nimport type { SteakhouseClient } from \"../client.js\"\nimport { vaultFragment } from \"./fragments/vault.js\"\n\nexport const vaultQuery = graphql(\n `\n query GetVaults($limit: Int!) {\n morphoVaults(limit: $limit) {\n items {\n ...VaultFragment\n }\n }\n }\n `,\n [vaultFragment],\n)\n\nexport type GetVaultsVariables = VariablesOf<typeof vaultQuery>\nexport type GetVaultsResult = ResultOf<typeof vaultQuery>[\"morphoVaults\"][\"items\"]\n\nexport async function getVaults(\n client: SteakhouseClient,\n variables: GetVaultsVariables,\n): Promise<GetVaultsResult> {\n const result = await client.query(vaultQuery, variables)\n return result.morphoVaults.items\n}\n"],"mappings":"AAAA,SAAS,eAA8B;AAGvC,SAAS,qBAAqB;AAEvB,MAAM,aAAa;AAAA,EACxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,CAAC,aAAa;AAChB;AAKA,eAAsB,UACpB,QACA,WAC0B;AAC1B,QAAM,SAAS,MAAM,OAAO,MAAM,YAAY,SAAS;AACvD,SAAO,OAAO,aAAa;AAC7B;","names":[]}
1
+ {"version":3,"sources":["../../src/queries/getVaults.ts"],"sourcesContent":["import { graphql } from \"@whisk/graphql\"\nimport type { SteakhouseClient } from \"../client.js\"\nimport { STEAKHOUSE_VAULTS } from \"../metadata/generated/vaults.js\"\nimport type { Address, VaultConfig } from \"../metadata/types.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 = chainId\n ? STEAKHOUSE_VAULTS.filter((v) => v.chainId === chainId)\n : STEAKHOUSE_VAULTS\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;AAExB,SAAS,yBAAyB;AAElC,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,UACnB,kBAAkB,OAAO,CAAC,MAAM,EAAE,YAAY,OAAO,IACrD;AAEJ,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,8 +1,9 @@
1
- export { Vault, vaultFragment } from './fragments/vault.js';
2
- export { GetVaultsResult, GetVaultsVariables, getVaults, vaultQuery } from './getVaults.js';
1
+ export { VaultDetail, vaultDetailFragment } from './fragments/vaultDetail.js';
2
+ export { DetailedVault, GetDetailedVaultResult, GetDetailedVaultVariables, getDetailedVault, vaultQuery, vaultWithHistoricalQuery } from './getDetailedVault.js';
3
+ export { GetVaultsResult, GetVaultsVariables, VaultWithMetadata, getVaults, vaultsQuery } from './getVaults.js';
4
+ export { SteakhouseMetadata, buildSteakhouseMetadata } from './steakhouseMetadata.js';
3
5
  export { SteakhouseQueryFn } from './types.js';
4
- import '../client.js';
6
+ import '@whisk/client';
5
7
  import 'gql.tada';
6
8
  import '@whisk/graphql';
7
- import '@urql/core';
8
- import '@whisk/client';
9
+ import '../metadata/types.js';
@@ -1,11 +1,9 @@
1
- import { vaultFragment } from "./fragments/vault.js";
2
- import {
3
- getVaults,
4
- vaultQuery
5
- } from "./getVaults.js";
1
+ import { vaultDetailFragment } from "./fragments/vaultDetail.js";
2
+ export * from "./getDetailedVault.js";
3
+ export * from "./getVaults.js";
4
+ import { buildSteakhouseMetadata } from "./steakhouseMetadata.js";
6
5
  export {
7
- getVaults,
8
- vaultFragment,
9
- vaultQuery
6
+ buildSteakhouseMetadata,
7
+ vaultDetailFragment
10
8
  };
11
9
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/queries/index.ts"],"sourcesContent":["export { type Vault, vaultFragment } from \"./fragments/vault.js\"\nexport {\n type GetVaultsResult,\n type GetVaultsVariables,\n getVaults,\n vaultQuery,\n} from \"./getVaults.js\"\nexport type { SteakhouseQueryFn } from \"./types.js\"\n"],"mappings":"AAAA,SAAqB,qBAAqB;AAC1C;AAAA,EAGE;AAAA,EACA;AAAA,OACK;","names":[]}
1
+ {"version":3,"sources":["../../src/queries/index.ts"],"sourcesContent":["// Fragments\nexport { type VaultDetail, vaultDetailFragment } from \"./fragments/vaultDetail.js\"\n// Queries\nexport * from \"./getDetailedVault.js\"\nexport * from \"./getVaults.js\"\n// Shared\nexport { buildSteakhouseMetadata, type SteakhouseMetadata } from \"./steakhouseMetadata.js\"\n\n// Types\nexport type { SteakhouseQueryFn } from \"./types.js\"\n"],"mappings":"AACA,SAA2B,2BAA2B;AAEtD,cAAc;AACd,cAAc;AAEd,SAAS,+BAAwD;","names":[]}
@@ -0,0 +1,14 @@
1
+ import { VaultConfig } from '../metadata/types.js';
2
+ import '@whisk/graphql';
3
+
4
+ /** Steakhouse-specific metadata augmented onto vault data */
5
+ type SteakhouseMetadata = {
6
+ name?: string;
7
+ description?: string;
8
+ type?: VaultConfig["type"];
9
+ protocol: VaultConfig["protocol"];
10
+ };
11
+ /** Build metadata object from vault config */
12
+ declare function buildSteakhouseMetadata(config: VaultConfig): SteakhouseMetadata;
13
+
14
+ export { type SteakhouseMetadata, buildSteakhouseMetadata };
@@ -0,0 +1,12 @@
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.type !== void 0 && { type: config.type }
7
+ };
8
+ }
9
+ export {
10
+ buildSteakhouseMetadata
11
+ };
12
+ //# sourceMappingURL=steakhouseMetadata.js.map
@@ -0,0 +1 @@
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 type?: VaultConfig[\"type\"]\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.type !== undefined && { type: config.type }),\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,SAAS,UAAa,EAAE,MAAM,OAAO,KAAK;AAAA,EACvD;AACF;","names":[]}
@@ -1,7 +1,5 @@
1
- import { SteakhouseClient } from '../client.js';
2
- import '@urql/core';
3
- import '@whisk/client';
1
+ import { WhiskClient } from '@whisk/client';
4
2
 
5
- type SteakhouseQueryFn<TData, TVariables> = (client: SteakhouseClient, variables: TVariables) => Promise<TData>;
3
+ type SteakhouseQueryFn<TData, TVariables> = (client: WhiskClient, variables: TVariables) => Promise<TData>;
6
4
 
7
5
  export type { SteakhouseQueryFn };
@@ -1,10 +1,13 @@
1
+ export { useDetailedVault } from './useDetailedVault.js';
1
2
  export { useSteakhouseQuery } from './useSteakhouseQuery.js';
2
3
  export { useVaults } from './useVaults.js';
3
4
  import '@tanstack/react-query';
4
- import '../../queries/types.js';
5
- import '../../client.js';
6
- import '@urql/core';
7
- import '@whisk/client';
8
- import '../../queries/getVaults.js';
5
+ import '../../queries/getDetailedVault.js';
9
6
  import 'gql.tada';
7
+ import '@whisk/client';
8
+ import '../../metadata/types.js';
10
9
  import '@whisk/graphql';
10
+ import '../../queries/fragments/vaultDetail.js';
11
+ import '../../queries/steakhouseMetadata.js';
12
+ import '../../queries/types.js';
13
+ import '../../queries/getVaults.js';
@@ -1,6 +1,8 @@
1
+ import { useDetailedVault } from "./useDetailedVault.js";
1
2
  import { useSteakhouseQuery } from "./useSteakhouseQuery.js";
2
3
  import { useVaults } from "./useVaults.js";
3
4
  export {
5
+ useDetailedVault,
4
6
  useSteakhouseQuery,
5
7
  useVaults
6
8
  };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/react/hooks/index.ts"],"sourcesContent":["export { useSteakhouseQuery } from \"./useSteakhouseQuery.js\"\nexport { useVaults } from \"./useVaults.js\"\n"],"mappings":"AAAA,SAAS,0BAA0B;AACnC,SAAS,iBAAiB;","names":[]}
1
+ {"version":3,"sources":["../../../src/react/hooks/index.ts"],"sourcesContent":["export { useDetailedVault } from \"./useDetailedVault.js\"\nexport { useSteakhouseQuery } from \"./useSteakhouseQuery.js\"\nexport { useVaults } from \"./useVaults.js\"\n"],"mappings":"AAAA,SAAS,wBAAwB;AACjC,SAAS,0BAA0B;AACnC,SAAS,iBAAiB;","names":[]}
@@ -0,0 +1,12 @@
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 '@whisk/graphql';
7
+ import '../../queries/fragments/vaultDetail.js';
8
+ import '../../queries/steakhouseMetadata.js';
9
+
10
+ declare function useDetailedVault(variables: GetDetailedVaultVariables): UseQueryResult<GetDetailedVaultResult, Error>;
11
+
12
+ export { useDetailedVault };
@@ -0,0 +1,16 @@
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
@@ -0,0 +1 @@
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,13 +1,11 @@
1
- import * as _tanstack_react_query from '@tanstack/react-query';
1
+ import { UseQueryResult } from '@tanstack/react-query';
2
2
  import { SteakhouseQueryFn } from '../../queries/types.js';
3
- import '../../client.js';
4
- import '@urql/core';
5
3
  import '@whisk/client';
6
4
 
7
5
  declare function useSteakhouseQuery<TData, TVariables>(options: {
8
6
  queryName: string;
9
7
  queryFn: SteakhouseQueryFn<TData, TVariables>;
10
8
  variables: TVariables;
11
- }): _tanstack_react_query.UseQueryResult<_tanstack_react_query.NoInfer<TData>, Error>;
9
+ }): UseQueryResult<TData, Error>;
12
10
 
13
11
  export { useSteakhouseQuery };
@@ -4,7 +4,7 @@ import { useSteakhouse } from "../provider.js";
4
4
  function useSteakhouseQuery(options) {
5
5
  const { client } = useSteakhouse();
6
6
  return useQuery({
7
- queryKey: [options.queryName, options.variables],
7
+ queryKey: ["steakhouse", options.queryName, options.variables],
8
8
  queryFn: () => options.queryFn(client, options.variables)
9
9
  });
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/react/hooks/useSteakhouseQuery.ts"],"sourcesContent":["\"use client\"\n\nimport { 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}) {\n const { client } = useSteakhouse()\n return useQuery({\n queryKey: [options.queryName, options.variables],\n queryFn: () => options.queryFn(client, options.variables),\n })\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AAEzB,SAAS,qBAAqB;AAEvB,SAAS,mBAAsC,SAInD;AACD,QAAM,EAAE,OAAO,IAAI,cAAc;AACjC,SAAO,SAAS;AAAA,IACd,UAAU,CAAC,QAAQ,WAAW,QAAQ,SAAS;AAAA,IAC/C,SAAS,MAAM,QAAQ,QAAQ,QAAQ,QAAQ,SAAS;AAAA,EAC1D,CAAC;AACH;","names":[]}
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,19 +1,12 @@
1
- import * as _tanstack_react_query from '@tanstack/react-query';
2
- import { GetVaultsVariables } from '../../queries/getVaults.js';
1
+ import { UseQueryResult } from '@tanstack/react-query';
2
+ import { GetVaultsVariables, GetVaultsResult } from '../../queries/getVaults.js';
3
3
  import 'gql.tada';
4
- import '@whisk/graphql';
5
- import '../../client.js';
6
- import '@urql/core';
7
4
  import '@whisk/client';
5
+ import '../../queries/fragments/vaultDetail.js';
6
+ import '@whisk/graphql';
7
+ import '../../queries/steakhouseMetadata.js';
8
+ import '../../metadata/types.js';
8
9
 
9
- declare function useVaults(variables: GetVaultsVariables): _tanstack_react_query.UseQueryResult<({
10
- chain: {
11
- id: number;
12
- };
13
- vaultAddress: `0x${string}`;
14
- totalSupplied: {
15
- raw: bigint;
16
- };
17
- } | null)[], Error>;
10
+ declare function useVaults(variables: GetVaultsVariables): UseQueryResult<GetVaultsResult, Error>;
18
11
 
19
12
  export { useVaults };
@@ -1,5 +1,7 @@
1
1
  "use client";
2
- import { getVaults } from "../../queries/getVaults.js";
2
+ import {
3
+ getVaults
4
+ } from "../../queries/getVaults.js";
3
5
  import { useSteakhouseQuery } from "./useSteakhouseQuery.js";
4
6
  function useVaults(variables) {
5
7
  return useSteakhouseQuery({
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/react/hooks/useVaults.ts"],"sourcesContent":["\"use client\"\n\nimport { type GetVaultsVariables, getVaults } from \"../../queries/getVaults.js\"\nimport { useSteakhouseQuery } from \"./useSteakhouseQuery.js\"\n\nexport function useVaults(variables: GetVaultsVariables) {\n return useSteakhouseQuery({\n queryName: \"vaults\",\n queryFn: getVaults,\n variables,\n })\n}\n"],"mappings":";AAEA,SAAkC,iBAAiB;AACnD,SAAS,0BAA0B;AAE5B,SAAS,UAAU,WAA+B;AACvD,SAAO,mBAAmB;AAAA,IACxB,WAAW;AAAA,IACX,SAAS;AAAA,IACT;AAAA,EACF,CAAC;AACH;","names":[]}
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,12 +1,15 @@
1
+ export { useDetailedVault } from './hooks/useDetailedVault.js';
1
2
  export { useSteakhouseQuery } from './hooks/useSteakhouseQuery.js';
2
3
  export { useVaults } from './hooks/useVaults.js';
3
4
  export { SteakhouseContextValue, SteakhouseProvider, SteakhouseProviderProps, useSteakhouse } from './provider.js';
4
5
  import '@tanstack/react-query';
5
- import '../queries/types.js';
6
- import '../client.js';
7
- import '@urql/core';
8
- import '@whisk/client';
9
- import '../queries/getVaults.js';
6
+ import '../queries/getDetailedVault.js';
10
7
  import 'gql.tada';
8
+ import '@whisk/client';
9
+ import '../metadata/types.js';
11
10
  import '@whisk/graphql';
11
+ import '../queries/fragments/vaultDetail.js';
12
+ import '../queries/steakhouseMetadata.js';
13
+ import '../queries/types.js';
14
+ import '../queries/getVaults.js';
12
15
  import 'react';
@@ -1,10 +1,3 @@
1
1
  export * from "./hooks/index.js";
2
- import {
3
- SteakhouseProvider,
4
- useSteakhouse
5
- } from "./provider.js";
6
- export {
7
- SteakhouseProvider,
8
- useSteakhouse
9
- };
2
+ export * from "./provider.js";
10
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/react/index.ts"],"sourcesContent":["export * from \"./hooks/index.js\"\nexport {\n type SteakhouseContextValue,\n SteakhouseProvider,\n type SteakhouseProviderProps,\n useSteakhouse,\n} from \"./provider.js\"\n"],"mappings":"AAAA,cAAc;AACd;AAAA,EAEE;AAAA,EAEA;AAAA,OACK;","names":[]}
1
+ {"version":3,"sources":["../../src/react/index.ts"],"sourcesContent":["export * from \"./hooks/index.js\"\nexport * from \"./provider.js\"\n"],"mappings":"AAAA,cAAc;AACd,cAAc;","names":[]}