@grimoirelabs/venues 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -31,6 +31,29 @@ await execute({
31
31
 
32
32
  Adapters may require configuration via factory functions for production use.
33
33
 
34
+ ## QueryProvider
35
+
36
+ The package exports an Alchemy-backed `QueryProvider` for on-chain balance reads and token price lookups.
37
+
38
+ ```ts
39
+ import { createAlchemyQueryProvider } from "@grimoirelabs/venues";
40
+
41
+ const queryProvider = createAlchemyQueryProvider({
42
+ provider,
43
+ chainId: 1,
44
+ vault: "0x...",
45
+ rpcUrl: "https://eth-mainnet.g.alchemy.com/v2/YOUR_KEY",
46
+ });
47
+
48
+ // queryProvider.queryBalance("ETH") → on-chain balance
49
+ // queryProvider.queryPrice("ETH", "USDC") → price via Alchemy API
50
+ ```
51
+
52
+ - `queryBalance` reads on-chain ERC20 balances (or native ETH) via the RPC provider.
53
+ - `queryPrice` fetches token prices from the Alchemy Token Prices API. The API key is auto-extracted from the RPC URL, or can be set explicitly via `alchemyApiKey`.
54
+
55
+ Also exported: `extractAlchemyKey(rpcUrl)` and the `AlchemyQueryProviderConfig` type.
56
+
34
57
  ## CLI tools
35
58
 
36
59
  Each venue exposes a small read-only CLI for fetching public data:
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { VenueAdapter } from "@grimoirelabs/core";
2
+ export { type AlchemyQueryProviderConfig, createAlchemyQueryProvider, extractAlchemyKey, } from "./query-provider.js";
2
3
  import { aaveV3Adapter, createAaveV3Adapter } from "./aave-v3.js";
3
4
  import { acrossAdapter, createAcrossAdapter } from "./across.js";
4
5
  import { createHyperliquidAdapter, hyperliquidAdapter } from "./hyperliquid.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,eAAe,IAAI,uBAAuB,EAC1C,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,QAAQ,EAAE,YAAY,EASlC,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD,OAAO,EACL,KAAK,0BAA0B,EAC/B,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,eAAe,IAAI,uBAAuB,EAC1C,gBAAgB,EACjB,MAAM,iBAAiB,CAAC;AAEzB,eAAO,MAAM,QAAQ,EAAE,YAAY,EASlC,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,CAAC"}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ export { createAlchemyQueryProvider, extractAlchemyKey, } from "./query-provider.js";
1
2
  import { aaveV3Adapter, createAaveV3Adapter } from "./aave-v3.js";
2
3
  import { acrossAdapter, createAcrossAdapter } from "./across.js";
3
4
  import { createHyperliquidAdapter, hyperliquidAdapter } from "./hyperliquid.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,eAAe,IAAI,uBAAuB,EAC1C,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,aAAa;IACb,aAAa;IACb,iBAAiB;CAClB,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,0BAA0B,EAC1B,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EACL,uBAAuB,EACvB,qBAAqB,EACrB,2BAA2B,EAC3B,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACpG,OAAO,EACL,sBAAsB,EACtB,eAAe,IAAI,uBAAuB,EAC1C,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,CAAC,MAAM,QAAQ,GAAmB;IACtC,aAAa;IACb,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,kBAAkB;IAClB,aAAa;IACb,aAAa;IACb,iBAAiB;CAClB,CAAC;AAEF,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,uBAAuB,EACvB,2BAA2B,EAC3B,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,mBAAmB,EACnB,iBAAiB,EACjB,uBAAuB,GACxB,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Alchemy-backed QueryProvider
3
+ *
4
+ * Provides:
5
+ * - queryBalance: on-chain ERC20.balanceOf() via the RPC provider
6
+ * - queryPrice: Alchemy Token Prices API (requires Alchemy API key)
7
+ *
8
+ * The Alchemy API key is extracted automatically from the RPC URL
9
+ * (pattern: https://{network}.g.alchemy.com/v2/{key}), so no extra
10
+ * CLI flags are needed.
11
+ */
12
+ import type { Address, Provider, QueryProvider } from "@grimoirelabs/core";
13
+ export interface AlchemyQueryProviderConfig {
14
+ provider: Provider;
15
+ chainId: number;
16
+ vault: Address;
17
+ /** Explicit Alchemy API key — or extracted from rpcUrl */
18
+ alchemyApiKey?: string;
19
+ /** Used to extract API key if alchemyApiKey is not set */
20
+ rpcUrl?: string;
21
+ }
22
+ /**
23
+ * Extract the Alchemy API key from an Alchemy RPC URL.
24
+ * Matches `https://{network}.g.alchemy.com/v2/{key}`.
25
+ */
26
+ export declare function extractAlchemyKey(rpcUrl?: string): string | undefined;
27
+ /**
28
+ * Create an Alchemy-backed QueryProvider.
29
+ *
30
+ * - `queryBalance` always works (on-chain via RPC provider)
31
+ * - `queryPrice` requires an Alchemy API key (extracted from rpcUrl or explicit)
32
+ */
33
+ export declare function createAlchemyQueryProvider(config: AlchemyQueryProviderConfig): QueryProvider;
34
+ //# sourceMappingURL=query-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-provider.d.ts","sourceRoot":"","sources":["../src/query-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAa3E,MAAM,WAAW,0BAA0B;IACzC,QAAQ,EAAE,QAAQ,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIrE;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,0BAA0B,GAAG,aAAa,CAgE5F"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Alchemy-backed QueryProvider
3
+ *
4
+ * Provides:
5
+ * - queryBalance: on-chain ERC20.balanceOf() via the RPC provider
6
+ * - queryPrice: Alchemy Token Prices API (requires Alchemy API key)
7
+ *
8
+ * The Alchemy API key is extracted automatically from the RPC URL
9
+ * (pattern: https://{network}.g.alchemy.com/v2/{key}), so no extra
10
+ * CLI flags are needed.
11
+ */
12
+ import { resolveTokenAddress } from "./token-registry.js";
13
+ const ERC20_BALANCE_ABI = [
14
+ {
15
+ inputs: [{ name: "account", type: "address" }],
16
+ name: "balanceOf",
17
+ outputs: [{ name: "", type: "uint256" }],
18
+ stateMutability: "view",
19
+ type: "function",
20
+ },
21
+ ];
22
+ /**
23
+ * Extract the Alchemy API key from an Alchemy RPC URL.
24
+ * Matches `https://{network}.g.alchemy.com/v2/{key}`.
25
+ */
26
+ export function extractAlchemyKey(rpcUrl) {
27
+ if (!rpcUrl)
28
+ return undefined;
29
+ const match = rpcUrl.match(/g\.alchemy\.com\/v2\/([a-zA-Z0-9_-]+)/);
30
+ return match?.[1];
31
+ }
32
+ /**
33
+ * Create an Alchemy-backed QueryProvider.
34
+ *
35
+ * - `queryBalance` always works (on-chain via RPC provider)
36
+ * - `queryPrice` requires an Alchemy API key (extracted from rpcUrl or explicit)
37
+ */
38
+ export function createAlchemyQueryProvider(config) {
39
+ const { provider, chainId, vault } = config;
40
+ const apiKey = config.alchemyApiKey ?? extractAlchemyKey(config.rpcUrl);
41
+ return {
42
+ meta: {
43
+ name: "alchemy",
44
+ supportedQueries: ["balance", ...(apiKey ? ["price"] : [])],
45
+ },
46
+ async queryBalance(asset, address) {
47
+ const target = (address ?? vault);
48
+ if (asset.toUpperCase() === "ETH") {
49
+ return provider.getBalance(target);
50
+ }
51
+ const tokenAddress = resolveTokenAddress(asset, chainId);
52
+ return provider.readContract({
53
+ address: tokenAddress,
54
+ abi: ERC20_BALANCE_ABI,
55
+ functionName: "balanceOf",
56
+ args: [target],
57
+ });
58
+ },
59
+ async queryPrice(base, quote, _source) {
60
+ if (!apiKey) {
61
+ throw new Error("Price queries require an Alchemy API key (use an Alchemy RPC URL)");
62
+ }
63
+ const symbols = base === quote ? [base] : [base, quote];
64
+ const params = symbols.map((s) => `symbols=${encodeURIComponent(s)}`).join("&");
65
+ const url = `https://api.g.alchemy.com/prices/v1/tokens/by-symbol?${params}`;
66
+ const res = await fetch(url, {
67
+ headers: { Authorization: `Bearer ${apiKey}` },
68
+ });
69
+ if (!res.ok) {
70
+ throw new Error(`Alchemy price API error: ${res.status} ${res.statusText}`);
71
+ }
72
+ const json = (await res.json());
73
+ const prices = new Map();
74
+ for (const entry of json.data) {
75
+ const usdPrice = entry.prices?.find((p) => p.currency.toUpperCase() === "USD");
76
+ if (usdPrice)
77
+ prices.set(entry.symbol.toUpperCase(), Number.parseFloat(usdPrice.value));
78
+ }
79
+ const basePrice = prices.get(base.toUpperCase());
80
+ if (!basePrice)
81
+ throw new Error(`No price data for ${base}`);
82
+ // USD-denominated stablecoins
83
+ const quoteUpper = quote.toUpperCase();
84
+ if (quoteUpper === "USD" || quoteUpper === "USDC" || quoteUpper === "USDT") {
85
+ return basePrice;
86
+ }
87
+ const quotePrice = prices.get(quoteUpper);
88
+ if (!quotePrice)
89
+ throw new Error(`No price data for ${quote}`);
90
+ return basePrice / quotePrice;
91
+ },
92
+ };
93
+ }
94
+ //# sourceMappingURL=query-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-provider.js","sourceRoot":"","sources":["../src/query-provider.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@grimoirelabs/venues",
3
- "version": "0.8.0",
3
+ "version": "0.9.0",
4
4
  "description": "Official Grimoire venue adapters",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -28,7 +28,7 @@
28
28
  "@aave/client": "^0.7.0",
29
29
  "@across-protocol/app-sdk": "^0.4.4",
30
30
  "@ethersproject/wallet": "5.7.0",
31
- "@grimoirelabs/core": "0.13.0",
31
+ "@grimoirelabs/core": "0.14.0",
32
32
  "@morpho-org/blue-sdk": "^2.0.0",
33
33
  "@morpho-org/blue-sdk-viem": "^2.0.0",
34
34
  "@nktkas/hyperliquid": "^0.30.3",