@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,9 +1,4 @@
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';
5
- export { SteakhouseQueryFn } from './types.js';
1
+ export { GetTvlResult, getTvl, tvlQuery } from './getTvl.js';
6
2
  import '@whisk/client';
7
3
  import 'gql.tada';
8
4
  import '@whisk/graphql';
9
- import '../metadata/types.js';
@@ -1,9 +1,2 @@
1
- import { vaultDetailFragment } from "./fragments/vaultDetail.js";
2
- export * from "./getDetailedVault.js";
3
- export * from "./getVaults.js";
4
- import { buildSteakhouseMetadata } from "./steakhouseMetadata.js";
5
- export {
6
- buildSteakhouseMetadata,
7
- vaultDetailFragment
8
- };
1
+ export * from "./getTvl.js";
9
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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":[]}
1
+ {"version":3,"sources":["../../src/queries/index.ts"],"sourcesContent":["export * from \"./getTvl.js\"\n"],"mappings":"AAAA,cAAc;","names":[]}
@@ -1,13 +1,6 @@
1
- export { useDetailedVault } from './useDetailedVault.js';
2
- export { useSteakhouseQuery } from './useSteakhouseQuery.js';
3
- export { useVaults } from './useVaults.js';
1
+ export { useTvl } from './useTvl.js';
4
2
  import '@tanstack/react-query';
5
- import '../../queries/getDetailedVault.js';
6
- import 'gql.tada';
3
+ import '../../queries/getTvl.js';
7
4
  import '@whisk/client';
8
- import '../../metadata/types.js';
9
- import '../../queries/fragments/vaultDetail.js';
5
+ import 'gql.tada';
10
6
  import '@whisk/graphql';
11
- import '../../queries/steakhouseMetadata.js';
12
- import '../../queries/types.js';
13
- import '../../queries/getVaults.js';
@@ -1,9 +1,5 @@
1
- import { useDetailedVault } from "./useDetailedVault.js";
2
- import { useSteakhouseQuery } from "./useSteakhouseQuery.js";
3
- import { useVaults } from "./useVaults.js";
1
+ import { useTvl } from "./useTvl.js";
4
2
  export {
5
- useDetailedVault,
6
- useSteakhouseQuery,
7
- useVaults
3
+ useTvl
8
4
  };
9
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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":[]}
1
+ {"version":3,"sources":["../../../src/react/hooks/index.ts"],"sourcesContent":["export { useTvl } from \"./useTvl.js\"\n"],"mappings":"AAAA,SAAS,cAAc;","names":[]}
@@ -0,0 +1,9 @@
1
+ import { UseQueryResult } from '@tanstack/react-query';
2
+ import { GetTvlResult } from '../../queries/getTvl.js';
3
+ import '@whisk/client';
4
+ import 'gql.tada';
5
+ import '@whisk/graphql';
6
+
7
+ declare function useTvl(): UseQueryResult<GetTvlResult, Error>;
8
+
9
+ export { useTvl };
@@ -0,0 +1,15 @@
1
+ "use client";
2
+ import { useQuery } from "@tanstack/react-query";
3
+ import { getTvl } from "../../queries/getTvl.js";
4
+ import { useSteakhouse } from "../provider.js";
5
+ function useTvl() {
6
+ const { client } = useSteakhouse();
7
+ return useQuery({
8
+ queryKey: ["steakhouse", "tvl"],
9
+ queryFn: () => getTvl(client)
10
+ });
11
+ }
12
+ export {
13
+ useTvl
14
+ };
15
+ //# sourceMappingURL=useTvl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/react/hooks/useTvl.ts"],"sourcesContent":["\"use client\"\n\nimport type { UseQueryResult } from \"@tanstack/react-query\"\nimport { useQuery } from \"@tanstack/react-query\"\nimport { type GetTvlResult, getTvl } from \"../../queries/getTvl.js\"\nimport { useSteakhouse } from \"../provider.js\"\n\nexport function useTvl(): UseQueryResult<GetTvlResult, Error> {\n const { client } = useSteakhouse()\n return useQuery({\n queryKey: [\"steakhouse\", \"tvl\"],\n queryFn: () => getTvl(client),\n })\n}\n"],"mappings":";AAGA,SAAS,gBAAgB;AACzB,SAA4B,cAAc;AAC1C,SAAS,qBAAqB;AAEvB,SAAS,SAA8C;AAC5D,QAAM,EAAE,OAAO,IAAI,cAAc;AACjC,SAAO,SAAS;AAAA,IACd,UAAU,CAAC,cAAc,KAAK;AAAA,IAC9B,SAAS,MAAM,OAAO,MAAM;AAAA,EAC9B,CAAC;AACH;","names":[]}
@@ -1,15 +1,8 @@
1
- export { useDetailedVault } from './hooks/useDetailedVault.js';
2
- export { useSteakhouseQuery } from './hooks/useSteakhouseQuery.js';
3
- export { useVaults } from './hooks/useVaults.js';
1
+ export { useTvl } from './hooks/useTvl.js';
4
2
  export { SteakhouseContextValue, SteakhouseProvider, SteakhouseProviderProps, useSteakhouse } from './provider.js';
5
3
  import '@tanstack/react-query';
6
- import '../queries/getDetailedVault.js';
7
- import 'gql.tada';
4
+ import '../queries/getTvl.js';
8
5
  import '@whisk/client';
9
- import '../metadata/types.js';
10
- import '../queries/fragments/vaultDetail.js';
6
+ import 'gql.tada';
11
7
  import '@whisk/graphql';
12
- import '../queries/steakhouseMetadata.js';
13
- import '../queries/types.js';
14
- import '../queries/getVaults.js';
15
8
  import 'react';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whisk/steakhouse",
3
- "version": "0.0.5",
3
+ "version": "0.0.7",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/office-supply-ventures/whisk-sdk.git",
@@ -36,14 +36,14 @@
36
36
  "dependencies": {
37
37
  "@urql/core": "6.0.1",
38
38
  "gql.tada": "1.9.0",
39
- "@whisk/client": "0.0.10",
40
- "@whisk/graphql": "0.0.10"
39
+ "@whisk/client": "0.0.11",
40
+ "@whisk/graphql": "0.0.11"
41
41
  },
42
42
  "peerDependencies": {
43
+ "@tanstack/react-query": ">=5",
43
44
  "graphql": ">=16",
44
45
  "react": ">=18",
45
- "react-dom": ">=18",
46
- "@tanstack/react-query": ">=5"
46
+ "react-dom": ">=18"
47
47
  },
48
48
  "peerDependenciesMeta": {
49
49
  "react": {
@@ -57,14 +57,22 @@
57
57
  }
58
58
  },
59
59
  "devDependencies": {
60
+ "@tanstack/react-query": "5.90.10",
60
61
  "@types/react": "^19.2.0",
61
62
  "@types/react-dom": "^19.2.0",
63
+ "chokidar-cli": "^3.0.0",
64
+ "concurrently": "^9.2.1",
65
+ "gray-matter": "^4.0.3",
62
66
  "react": "19.2.0",
63
67
  "react-dom": "19.2.0",
64
- "@tanstack/react-query": "5.90.10"
68
+ "tsx": "^4.20.6",
69
+ "viem": "^2.0.0",
70
+ "zod": "^3.24.0"
65
71
  },
66
72
  "scripts": {
67
- "build": "tsup",
68
- "dev": "tsup --watch"
73
+ "generate:vaults": "tsx scripts/generate-vaults.ts",
74
+ "generate:vaults:watch": "chokidar \"src/metadata/vaults/**/*.md\" --initial -c \"pnpm generate:vaults\"",
75
+ "build": "pnpm generate:vaults && tsup",
76
+ "dev": "concurrently -n vaults,tsup -c blue,green \"pnpm generate:vaults:watch\" \"tsup --watch\""
69
77
  }
70
78
  }
@@ -0,0 +1,93 @@
1
+ # Vault Metadata
2
+
3
+ Steakhouse vault metadata is defined in markdown files with YAML frontmatter, which are compiled into TypeScript at build time.
4
+
5
+ ## Adding a New Vault
6
+
7
+ 1. Create a `.md` file in `vaults/{chain}/`:
8
+
9
+ ```
10
+ vaults/mainnet/my-vault.md
11
+ vaults/base/my-vault.md
12
+ ```
13
+
14
+ 2. Add YAML frontmatter:
15
+
16
+ ```yaml
17
+ ---
18
+ chainId: 1
19
+ vaultAddress: 0x...
20
+ protocol: morpho_v2
21
+ type: Prime
22
+ ---
23
+ ```
24
+
25
+ Optionally override the on-chain name or add a description:
26
+
27
+ ```yaml
28
+ ---
29
+ chainId: 1
30
+ vaultAddress: 0x...
31
+ protocol: morpho_v2
32
+ type: Prime
33
+ name: Custom Display Name
34
+ ---
35
+
36
+ Custom description in markdown. Supports **formatting**, links, etc.
37
+ ```
38
+
39
+ 3. Regenerate and commit:
40
+
41
+ ```bash
42
+ pnpm generate:vaults
43
+ git add src/metadata/generated/vaults.ts
44
+ ```
45
+
46
+ 4. Verify the vault appears in `generated/vaults.ts` and commit the changes
47
+
48
+ ## Frontmatter Fields
49
+
50
+ | Field | Required | Description |
51
+ | -------------- | -------- | ------------------------------------------------- |
52
+ | `chainId` | Yes | Chain ID (1 for mainnet, 8453 for Base, etc.) |
53
+ | `vaultAddress` | Yes | Ethereum address, no quotes needed (checksummed automatically) |
54
+ | `protocol` | Yes | `morpho_v1`, `morpho_v2`, `generic`, or `box` |
55
+ | `type` | No | `Prime`, `High Yield`, `Turbo`, or `Term` |
56
+ | `name` | No | Override display name (defaults to on-chain name) |
57
+
58
+ The markdown body after the frontmatter becomes the `description` field (optional, defaults to morpho metadata).
59
+
60
+ ## Validation
61
+
62
+ The build script validates:
63
+
64
+ - Required fields are present
65
+ - Valid Ethereum address format (checksummed automatically via viem)
66
+ - Valid protocol enum value (from `@whisk/graphql`)
67
+ - Valid type enum value (if provided)
68
+ - No duplicate chainId + vaultAddress combinations
69
+
70
+ If validation fails, the build will error with details about which file and field failed.
71
+
72
+ ## File Naming
73
+
74
+ Use descriptive slugs that identify the vault:
75
+
76
+ ```
77
+ vaults/
78
+ mainnet/
79
+ steakhouse-usdc.md
80
+ steakhouse-eth.md
81
+ base/
82
+ steakhouse-usdc.md
83
+ ```
84
+
85
+ The filename doesn't affect the generated code - it's just for organization.
86
+
87
+ ## Generated Output
88
+
89
+ The generator creates `src/metadata/generated/vaults.ts` with:
90
+
91
+ - `STEAKHOUSE_VAULTS` - array of all vault configurations
92
+
93
+ This file is committed to git for security auditability. CI verifies the committed file matches regenerated output.