opentool 0.13.0 → 0.15.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.
@@ -98,4 +98,4 @@ type WalletReadonlyContext = WalletBaseContext;
98
98
  type WalletFullContext = WalletBaseContext & WalletSignerContext;
99
99
  type WalletContext = WalletReadonlyContext | WalletFullContext;
100
100
 
101
- export type { ChainMetadata as C, Hex as H, NonceSource as N, RpcProviderOptions as R, TokenMetadata as T, WalletFullContext as W, ChainReference as a, ChainTokenMap as b, HexAddress as c, RpcUrlResolver as d, TurnkeyOptions as e, TurnkeySignWith as f, WalletBaseContext as g, WalletContext as h, WalletOptions as i, WalletOptionsBase as j, WalletPrivateKeyOptions as k, WalletProviderType as l, WalletReadonlyContext as m, WalletReadonlyOptions as n, WalletRegistry as o, WalletSendTransactionParams as p, WalletSignerContext as q, WalletTransferParams as r, WalletTurnkeyOptions as s };
101
+ export type { ChainMetadata as C, Hex as H, NonceSource as N, RpcProviderOptions as R, TokenMetadata as T, WalletBaseContext as W, ChainReference as a, ChainTokenMap as b, HexAddress as c, RpcUrlResolver as d, TurnkeyOptions as e, TurnkeySignWith as f, WalletContext as g, WalletFullContext as h, WalletOptions as i, WalletOptionsBase as j, WalletPrivateKeyOptions as k, WalletProviderType as l, WalletReadonlyContext as m, WalletReadonlyOptions as n, WalletRegistry as o, WalletSendTransactionParams as p, WalletSignerContext as q, WalletTransferParams as r, WalletTurnkeyOptions as s };
@@ -1,7 +1,7 @@
1
1
  import { createAccount } from '@turnkey/viem';
2
2
  import { WalletClient, Transport, Chain, PublicClient } from 'viem';
3
3
  import { Account } from 'viem/accounts';
4
- import { a as ChainReference, c as HexAddress, l as WalletProviderType, C as ChainMetadata, f as TurnkeySignWith, W as WalletFullContext } from '../types-DKohXZes.js';
4
+ import { a as ChainReference, c as HexAddress, l as WalletProviderType, C as ChainMetadata, f as TurnkeySignWith, h as WalletFullContext } from '../types-BaTmu0gS.js';
5
5
 
6
6
  type NonceSource = () => number;
7
7
  declare function createMonotonicNonceSource(start?: number): NonceSource;
@@ -128,6 +128,7 @@ function createMonotonicNonceSource(start = Date.now()) {
128
128
  }
129
129
 
130
130
  // src/wallet/browser.ts
131
+ var browserFetch = (...args) => fetch(...args);
131
132
  function resolveChainSlug(reference) {
132
133
  if (reference === void 0) {
133
134
  return Object.entries(chains).find(([, meta]) => meta.id === DEFAULT_CHAIN.id)?.[0] || DEFAULT_CHAIN.slug;
@@ -214,7 +215,7 @@ function createBrowserWalletContext(options) {
214
215
  const rpcUrl = getRpcUrl(slug, overrides);
215
216
  const publicClient = options.publicClient ?? createPublicClient({
216
217
  chain: chain.chain,
217
- transport: http(rpcUrl)
218
+ transport: http(rpcUrl, { fetchFn: browserFetch })
218
219
  });
219
220
  const walletClient = options.walletClient;
220
221
  const helperNonceSource = options.nonceSource ?? createMonotonicNonceSource();
@@ -244,7 +245,7 @@ async function createTurnkeyBrowserProvider(config) {
244
245
  signWith: config.signWith,
245
246
  ...config.ethereumAddress ? { ethereumAddress: config.ethereumAddress } : {}
246
247
  });
247
- const transport = http(config.rpcUrl);
248
+ const transport = http(config.rpcUrl, { fetchFn: browserFetch });
248
249
  const publicClient = createPublicClient({
249
250
  chain: config.chain.chain,
250
251
  transport
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/wallet/constants.ts","../../src/wallet/nonces.ts","../../src/wallet/browser.ts"],"names":["tokens"],"mappings":"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","file":"browser.js","sourcesContent":["import { zeroAddress } from \"viem\";\nimport { arbitrum, arbitrumSepolia, base, baseSepolia, mainnet } from \"viem/chains\";\n\nimport type {\n ChainMetadata,\n ChainTokenMap,\n HexAddress,\n RpcUrlResolver,\n WalletRegistry,\n} from \"./types\";\n\nconst BASE_ALCHEMY_HOST = \"https://base-mainnet.g.alchemy.com/v2/\";\nconst ETHEREUM_ALCHEMY_HOST = \"https://eth-mainnet.g.alchemy.com/v2/\";\nconst BASE_SEPOLIA_ALCHEMY_HOST = \"https://base-sepolia.g.alchemy.com/v2/\";\nconst ARBITRUM_ALCHEMY_HOST = \"https://arb-mainnet.g.alchemy.com/v2/\";\nconst ARBITRUM_SEPOLIA_ALCHEMY_HOST = \"https://arb-sepolia.g.alchemy.com/v2/\";\n\nfunction buildRpcResolver(host: string, fallbackUrls: readonly string[]): RpcUrlResolver {\n return (options) => {\n if (options?.url) {\n return options.url;\n }\n\n if (options?.apiKey) {\n return `${host}${options.apiKey}`;\n }\n\n if (fallbackUrls.length > 0) {\n return fallbackUrls[0];\n }\n\n throw new Error(\n \"No RPC URL available: supply a full url via options or an apiKey for the default host\",\n );\n };\n}\n\nconst chains: Record<string, ChainMetadata> = {\n base: {\n id: base.id,\n slug: \"base\",\n name: \"Base\",\n chain: base,\n rpcUrl: buildRpcResolver(BASE_ALCHEMY_HOST, base.rpcUrls.default.http),\n publicRpcUrls: base.rpcUrls.default.http,\n },\n ethereum: {\n id: mainnet.id,\n slug: \"ethereum\",\n name: \"Ethereum\",\n chain: mainnet,\n rpcUrl: buildRpcResolver(ETHEREUM_ALCHEMY_HOST, mainnet.rpcUrls.default.http),\n publicRpcUrls: mainnet.rpcUrls.default.http,\n },\n baseSepolia: {\n id: baseSepolia.id,\n slug: \"base-sepolia\",\n name: \"Base Sepolia\",\n chain: baseSepolia,\n rpcUrl: buildRpcResolver(BASE_SEPOLIA_ALCHEMY_HOST, baseSepolia.rpcUrls.default.http),\n },\n arbitrum: {\n id: arbitrum.id,\n slug: \"arbitrum\",\n name: \"Arbitrum One\",\n chain: arbitrum,\n rpcUrl: buildRpcResolver(ARBITRUM_ALCHEMY_HOST, arbitrum.rpcUrls.default.http),\n publicRpcUrls: arbitrum.rpcUrls.default.http,\n },\n arbitrumSepolia: {\n id: arbitrumSepolia.id,\n slug: \"arbitrum-sepolia\",\n name: \"Arbitrum Sepolia\",\n chain: arbitrumSepolia,\n rpcUrl: buildRpcResolver(ARBITRUM_SEPOLIA_ALCHEMY_HOST, arbitrumSepolia.rpcUrls.default.http),\n publicRpcUrls: arbitrumSepolia.rpcUrls.default.http,\n },\n};\n\nfunction createNativeToken(chainId: number, symbol: string, name: string): ChainTokenMap {\n return {\n [symbol]: {\n symbol,\n name,\n decimals: 18,\n address: zeroAddress,\n chainId,\n isNative: true,\n },\n };\n}\n\nfunction token(\n chainId: number,\n symbol: string,\n name: string,\n address: HexAddress,\n decimals: number,\n) {\n return {\n symbol,\n name,\n decimals,\n address,\n chainId,\n };\n}\n\nconst tokens: Record<string, ChainTokenMap> = {\n base: {\n ...createNativeToken(base.id, \"ETH\", \"Ether\"),\n USDC: token(base.id, \"USDC\", \"USD Coin\", \"0x833589fCD6eDb6E08f4c7C31c9A8Ba32D74b86B2\", 6),\n },\n ethereum: {\n ...createNativeToken(mainnet.id, \"ETH\", \"Ether\"),\n USDC: token(mainnet.id, \"USDC\", \"USD Coin\", \"0xA0b86991c6218b36c1d19d4a2e9Eb0cE3606eB48\", 6),\n },\n arbitrum: {\n ...createNativeToken(arbitrum.id, \"ETH\", \"Ether\"),\n USDC: token(arbitrum.id, \"USDC\", \"USD Coin\", \"0xaf88d065e77c8cc2239327c5edb3a432268e5831\", 6),\n },\n arbitrumSepolia: {\n ...createNativeToken(arbitrumSepolia.id, \"ETH\", \"Ether\"),\n USDC: token(\n arbitrumSepolia.id,\n \"USDC\",\n \"USD Coin\",\n \"0x1baAbB04529D43a73232B713C0FE471f7c7334d5\",\n 6,\n ),\n },\n};\n\nexport const DEFAULT_CHAIN = chains.base;\nexport const DEFAULT_TOKENS = tokens.base;\n\nexport const registry: WalletRegistry = {\n chains,\n tokens,\n};\n\nexport { chains, tokens };\n","export type NonceSource = () => number;\n\nexport function createMonotonicNonceSource(start: number = Date.now()): NonceSource {\n let last = start;\n return () => {\n const now = Date.now();\n if (now > last) {\n last = now;\n } else {\n last += 1;\n }\n return last;\n };\n}\n","import { createAccount } from \"@turnkey/viem\";\nimport {\n createPublicClient,\n createWalletClient,\n http,\n type Chain,\n type PublicClient,\n type Transport,\n type WalletClient,\n} from \"viem\";\nimport type { Account } from \"viem/accounts\";\n\nimport {\n chains as chainRegistry,\n tokens as tokenRegistry,\n DEFAULT_CHAIN,\n DEFAULT_TOKENS,\n} from \"./constants\";\nimport { createMonotonicNonceSource, type NonceSource } from \"./nonces\";\nimport type {\n ChainMetadata,\n ChainReference,\n HexAddress,\n RpcProviderOptions,\n TurnkeySignWith,\n WalletFullContext,\n WalletProviderType,\n WalletSendTransactionParams,\n WalletTransferParams,\n} from \"./types\";\n\ntype ChainSlug = keyof typeof chainRegistry;\ntype TurnkeyBrowserClientLike = Parameters<typeof createAccount>[0][\"client\"];\n\nfunction resolveChainSlug(reference?: ChainReference): ChainSlug {\n if (reference === undefined) {\n return (Object.entries(chainRegistry).find(([, meta]) => meta.id === DEFAULT_CHAIN.id)?.[0] ||\n DEFAULT_CHAIN.slug) as ChainSlug;\n }\n\n if (typeof reference === \"number\") {\n const match = Object.entries(chainRegistry).find(([, meta]) => meta.id === reference);\n if (match) {\n return match[0] as ChainSlug;\n }\n } else if (typeof reference === \"string\") {\n const sanitize = (value: string) => value.toLowerCase().replace(/[^a-z0-9]/g, \"\");\n\n if (reference in chainRegistry) {\n return reference as ChainSlug;\n }\n\n const normalized = sanitize(reference);\n\n const keyMatch = Object.entries(chainRegistry).find(([key]) => sanitize(key) === normalized);\n if (keyMatch) {\n return keyMatch[0] as ChainSlug;\n }\n\n const slugMatch = Object.entries(chainRegistry).find(([, meta]) => {\n return meta.slug && sanitize(meta.slug) === normalized;\n });\n if (slugMatch) {\n return slugMatch[0] as ChainSlug;\n }\n\n const asNumber = Number.parseInt(normalized, 10);\n if (!Number.isNaN(asNumber)) {\n const match = Object.entries(chainRegistry).find(([, meta]) => meta.id === asNumber);\n if (match) {\n return match[0] as ChainSlug;\n }\n }\n }\n\n throw new Error(`Unknown chain reference: ${reference}`);\n}\n\nfunction getRpcUrl(chain: ChainSlug | number, options?: RpcProviderOptions): string {\n const slug = resolveChainSlug(chain);\n const entry = chainRegistry[slug];\n return entry.rpcUrl(options);\n}\n\nfunction createWalletHelpers(params: {\n account: Account;\n publicClient: PublicClient<Transport, Chain>;\n walletClient: WalletClient<Transport, Chain, Account>;\n}) {\n async function sendTransaction(options: WalletSendTransactionParams) {\n const tx: {\n account: Account;\n to?: HexAddress;\n value?: bigint;\n data?: `0x${string}`;\n } = {\n account: params.account,\n };\n\n if (options.to) {\n tx.to = options.to;\n }\n if (options.value !== undefined) {\n tx.value = options.value;\n }\n if (options.data !== undefined) {\n tx.data = options.data;\n }\n\n return params.walletClient.sendTransaction(tx);\n }\n\n async function getNativeBalance() {\n return params.publicClient.getBalance({ address: params.account.address });\n }\n\n async function transfer(options: WalletTransferParams) {\n return sendTransaction({\n to: options.to,\n value: options.amount,\n ...(options.data !== undefined ? { data: options.data } : {}),\n });\n }\n\n return {\n sendTransaction,\n getNativeBalance,\n transfer,\n };\n}\n\nexport interface BrowserWalletContextOptions {\n chain?: ChainReference;\n apiKey?: string;\n rpcUrl?: string;\n address: HexAddress;\n account: Account;\n walletClient: WalletClient<Transport, Chain, Account>;\n publicClient?: PublicClient<Transport, Chain> | undefined;\n nonceSource?: NonceSource | undefined;\n providerType?: WalletProviderType | undefined;\n}\n\nexport function createBrowserWalletContext(\n options: BrowserWalletContextOptions,\n): WalletFullContext {\n const slug = resolveChainSlug(options.chain);\n const chain = chainRegistry[slug];\n const tokens = tokenRegistry[slug] ?? DEFAULT_TOKENS;\n const overrides: RpcProviderOptions = {};\n\n if (options.rpcUrl) {\n overrides.url = options.rpcUrl;\n }\n if (options.apiKey) {\n overrides.apiKey = options.apiKey;\n }\n\n const rpcUrl = getRpcUrl(slug, overrides);\n const publicClient =\n options.publicClient ??\n createPublicClient<Transport, Chain>({\n chain: chain.chain,\n transport: http(rpcUrl),\n });\n const walletClient = options.walletClient;\n const helperNonceSource = options.nonceSource ?? createMonotonicNonceSource();\n const helpers = createWalletHelpers({\n account: options.account,\n publicClient,\n walletClient,\n });\n\n return {\n chain,\n tokens,\n rpcUrl,\n providerType: options.providerType ?? \"turnkey\",\n publicClient,\n address: options.address,\n account: options.account,\n walletClient,\n nonceSource: helperNonceSource,\n getRpcUrl: (override?: RpcProviderOptions) => getRpcUrl(slug, override),\n ...helpers,\n };\n}\n\nexport interface TurnkeyBrowserProviderConfig {\n chain: ChainMetadata;\n rpcUrl: string;\n organizationId: string;\n signWith: TurnkeySignWith;\n client: TurnkeyBrowserClientLike;\n ethereumAddress?: HexAddress | undefined;\n nonceSource?: NonceSource | undefined;\n}\n\nexport async function createTurnkeyBrowserProvider(\n config: TurnkeyBrowserProviderConfig,\n): Promise<WalletFullContext> {\n const account = (await createAccount({\n client: config.client,\n organizationId: config.organizationId,\n signWith: config.signWith,\n ...(config.ethereumAddress ? { ethereumAddress: config.ethereumAddress } : {}),\n })) as Account;\n\n const transport = http(config.rpcUrl);\n const publicClient = createPublicClient<Transport, Chain>({\n chain: config.chain.chain,\n transport,\n });\n\n const walletClient = createWalletClient<Transport, Chain, Account>({\n account,\n chain: config.chain.chain,\n transport,\n });\n\n return createBrowserWalletContext({\n chain: config.chain.slug,\n rpcUrl: config.rpcUrl,\n address: account.address as HexAddress,\n account,\n walletClient,\n publicClient,\n ...(config.nonceSource ? { nonceSource: config.nonceSource } : {}),\n providerType: \"turnkey\",\n });\n}\n\nexport { createMonotonicNonceSource };\nexport type { NonceSource };\n"]}
1
+ {"version":3,"sources":["../../src/wallet/constants.ts","../../src/wallet/nonces.ts","../../src/wallet/browser.ts"],"names":["tokens"],"mappings":"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","file":"browser.js","sourcesContent":["import { zeroAddress } from \"viem\";\nimport { arbitrum, arbitrumSepolia, base, baseSepolia, mainnet } from \"viem/chains\";\n\nimport type {\n ChainMetadata,\n ChainTokenMap,\n HexAddress,\n RpcUrlResolver,\n WalletRegistry,\n} from \"./types\";\n\nconst BASE_ALCHEMY_HOST = \"https://base-mainnet.g.alchemy.com/v2/\";\nconst ETHEREUM_ALCHEMY_HOST = \"https://eth-mainnet.g.alchemy.com/v2/\";\nconst BASE_SEPOLIA_ALCHEMY_HOST = \"https://base-sepolia.g.alchemy.com/v2/\";\nconst ARBITRUM_ALCHEMY_HOST = \"https://arb-mainnet.g.alchemy.com/v2/\";\nconst ARBITRUM_SEPOLIA_ALCHEMY_HOST = \"https://arb-sepolia.g.alchemy.com/v2/\";\n\nfunction buildRpcResolver(host: string, fallbackUrls: readonly string[]): RpcUrlResolver {\n return (options) => {\n if (options?.url) {\n return options.url;\n }\n\n if (options?.apiKey) {\n return `${host}${options.apiKey}`;\n }\n\n if (fallbackUrls.length > 0) {\n return fallbackUrls[0];\n }\n\n throw new Error(\n \"No RPC URL available: supply a full url via options or an apiKey for the default host\",\n );\n };\n}\n\nconst chains: Record<string, ChainMetadata> = {\n base: {\n id: base.id,\n slug: \"base\",\n name: \"Base\",\n chain: base,\n rpcUrl: buildRpcResolver(BASE_ALCHEMY_HOST, base.rpcUrls.default.http),\n publicRpcUrls: base.rpcUrls.default.http,\n },\n ethereum: {\n id: mainnet.id,\n slug: \"ethereum\",\n name: \"Ethereum\",\n chain: mainnet,\n rpcUrl: buildRpcResolver(ETHEREUM_ALCHEMY_HOST, mainnet.rpcUrls.default.http),\n publicRpcUrls: mainnet.rpcUrls.default.http,\n },\n baseSepolia: {\n id: baseSepolia.id,\n slug: \"base-sepolia\",\n name: \"Base Sepolia\",\n chain: baseSepolia,\n rpcUrl: buildRpcResolver(BASE_SEPOLIA_ALCHEMY_HOST, baseSepolia.rpcUrls.default.http),\n },\n arbitrum: {\n id: arbitrum.id,\n slug: \"arbitrum\",\n name: \"Arbitrum One\",\n chain: arbitrum,\n rpcUrl: buildRpcResolver(ARBITRUM_ALCHEMY_HOST, arbitrum.rpcUrls.default.http),\n publicRpcUrls: arbitrum.rpcUrls.default.http,\n },\n arbitrumSepolia: {\n id: arbitrumSepolia.id,\n slug: \"arbitrum-sepolia\",\n name: \"Arbitrum Sepolia\",\n chain: arbitrumSepolia,\n rpcUrl: buildRpcResolver(ARBITRUM_SEPOLIA_ALCHEMY_HOST, arbitrumSepolia.rpcUrls.default.http),\n publicRpcUrls: arbitrumSepolia.rpcUrls.default.http,\n },\n};\n\nfunction createNativeToken(chainId: number, symbol: string, name: string): ChainTokenMap {\n return {\n [symbol]: {\n symbol,\n name,\n decimals: 18,\n address: zeroAddress,\n chainId,\n isNative: true,\n },\n };\n}\n\nfunction token(\n chainId: number,\n symbol: string,\n name: string,\n address: HexAddress,\n decimals: number,\n) {\n return {\n symbol,\n name,\n decimals,\n address,\n chainId,\n };\n}\n\nconst tokens: Record<string, ChainTokenMap> = {\n base: {\n ...createNativeToken(base.id, \"ETH\", \"Ether\"),\n USDC: token(base.id, \"USDC\", \"USD Coin\", \"0x833589fCD6eDb6E08f4c7C31c9A8Ba32D74b86B2\", 6),\n },\n ethereum: {\n ...createNativeToken(mainnet.id, \"ETH\", \"Ether\"),\n USDC: token(mainnet.id, \"USDC\", \"USD Coin\", \"0xA0b86991c6218b36c1d19d4a2e9Eb0cE3606eB48\", 6),\n },\n arbitrum: {\n ...createNativeToken(arbitrum.id, \"ETH\", \"Ether\"),\n USDC: token(arbitrum.id, \"USDC\", \"USD Coin\", \"0xaf88d065e77c8cc2239327c5edb3a432268e5831\", 6),\n },\n arbitrumSepolia: {\n ...createNativeToken(arbitrumSepolia.id, \"ETH\", \"Ether\"),\n USDC: token(\n arbitrumSepolia.id,\n \"USDC\",\n \"USD Coin\",\n \"0x1baAbB04529D43a73232B713C0FE471f7c7334d5\",\n 6,\n ),\n },\n};\n\nexport const DEFAULT_CHAIN = chains.base;\nexport const DEFAULT_TOKENS = tokens.base;\n\nexport const registry: WalletRegistry = {\n chains,\n tokens,\n};\n\nexport { chains, tokens };\n","export type NonceSource = () => number;\n\nexport function createMonotonicNonceSource(start: number = Date.now()): NonceSource {\n let last = start;\n return () => {\n const now = Date.now();\n if (now > last) {\n last = now;\n } else {\n last += 1;\n }\n return last;\n };\n}\n","import { createAccount } from \"@turnkey/viem\";\nimport {\n createPublicClient,\n createWalletClient,\n http,\n type Chain,\n type PublicClient,\n type Transport,\n type WalletClient,\n} from \"viem\";\nimport type { Account } from \"viem/accounts\";\n\nimport {\n chains as chainRegistry,\n tokens as tokenRegistry,\n DEFAULT_CHAIN,\n DEFAULT_TOKENS,\n} from \"./constants\";\nimport { createMonotonicNonceSource, type NonceSource } from \"./nonces\";\nimport type {\n ChainMetadata,\n ChainReference,\n HexAddress,\n RpcProviderOptions,\n TurnkeySignWith,\n WalletFullContext,\n WalletProviderType,\n WalletSendTransactionParams,\n WalletTransferParams,\n} from \"./types\";\n\ntype ChainSlug = keyof typeof chainRegistry;\ntype TurnkeyBrowserClientLike = Parameters<typeof createAccount>[0][\"client\"];\n\nconst browserFetch: typeof fetch = (...args) => fetch(...args);\n\nfunction resolveChainSlug(reference?: ChainReference): ChainSlug {\n if (reference === undefined) {\n return (Object.entries(chainRegistry).find(([, meta]) => meta.id === DEFAULT_CHAIN.id)?.[0] ||\n DEFAULT_CHAIN.slug) as ChainSlug;\n }\n\n if (typeof reference === \"number\") {\n const match = Object.entries(chainRegistry).find(([, meta]) => meta.id === reference);\n if (match) {\n return match[0] as ChainSlug;\n }\n } else if (typeof reference === \"string\") {\n const sanitize = (value: string) => value.toLowerCase().replace(/[^a-z0-9]/g, \"\");\n\n if (reference in chainRegistry) {\n return reference as ChainSlug;\n }\n\n const normalized = sanitize(reference);\n\n const keyMatch = Object.entries(chainRegistry).find(([key]) => sanitize(key) === normalized);\n if (keyMatch) {\n return keyMatch[0] as ChainSlug;\n }\n\n const slugMatch = Object.entries(chainRegistry).find(([, meta]) => {\n return meta.slug && sanitize(meta.slug) === normalized;\n });\n if (slugMatch) {\n return slugMatch[0] as ChainSlug;\n }\n\n const asNumber = Number.parseInt(normalized, 10);\n if (!Number.isNaN(asNumber)) {\n const match = Object.entries(chainRegistry).find(([, meta]) => meta.id === asNumber);\n if (match) {\n return match[0] as ChainSlug;\n }\n }\n }\n\n throw new Error(`Unknown chain reference: ${reference}`);\n}\n\nfunction getRpcUrl(chain: ChainSlug | number, options?: RpcProviderOptions): string {\n const slug = resolveChainSlug(chain);\n const entry = chainRegistry[slug];\n return entry.rpcUrl(options);\n}\n\nfunction createWalletHelpers(params: {\n account: Account;\n publicClient: PublicClient<Transport, Chain>;\n walletClient: WalletClient<Transport, Chain, Account>;\n}) {\n async function sendTransaction(options: WalletSendTransactionParams) {\n const tx: {\n account: Account;\n to?: HexAddress;\n value?: bigint;\n data?: `0x${string}`;\n } = {\n account: params.account,\n };\n\n if (options.to) {\n tx.to = options.to;\n }\n if (options.value !== undefined) {\n tx.value = options.value;\n }\n if (options.data !== undefined) {\n tx.data = options.data;\n }\n\n return params.walletClient.sendTransaction(tx);\n }\n\n async function getNativeBalance() {\n return params.publicClient.getBalance({ address: params.account.address });\n }\n\n async function transfer(options: WalletTransferParams) {\n return sendTransaction({\n to: options.to,\n value: options.amount,\n ...(options.data !== undefined ? { data: options.data } : {}),\n });\n }\n\n return {\n sendTransaction,\n getNativeBalance,\n transfer,\n };\n}\n\nexport interface BrowserWalletContextOptions {\n chain?: ChainReference;\n apiKey?: string;\n rpcUrl?: string;\n address: HexAddress;\n account: Account;\n walletClient: WalletClient<Transport, Chain, Account>;\n publicClient?: PublicClient<Transport, Chain> | undefined;\n nonceSource?: NonceSource | undefined;\n providerType?: WalletProviderType | undefined;\n}\n\nexport function createBrowserWalletContext(\n options: BrowserWalletContextOptions,\n): WalletFullContext {\n const slug = resolveChainSlug(options.chain);\n const chain = chainRegistry[slug];\n const tokens = tokenRegistry[slug] ?? DEFAULT_TOKENS;\n const overrides: RpcProviderOptions = {};\n\n if (options.rpcUrl) {\n overrides.url = options.rpcUrl;\n }\n if (options.apiKey) {\n overrides.apiKey = options.apiKey;\n }\n\n const rpcUrl = getRpcUrl(slug, overrides);\n const publicClient =\n options.publicClient ??\n createPublicClient<Transport, Chain>({\n chain: chain.chain,\n transport: http(rpcUrl, { fetchFn: browserFetch }),\n });\n const walletClient = options.walletClient;\n const helperNonceSource = options.nonceSource ?? createMonotonicNonceSource();\n const helpers = createWalletHelpers({\n account: options.account,\n publicClient,\n walletClient,\n });\n\n return {\n chain,\n tokens,\n rpcUrl,\n providerType: options.providerType ?? \"turnkey\",\n publicClient,\n address: options.address,\n account: options.account,\n walletClient,\n nonceSource: helperNonceSource,\n getRpcUrl: (override?: RpcProviderOptions) => getRpcUrl(slug, override),\n ...helpers,\n };\n}\n\nexport interface TurnkeyBrowserProviderConfig {\n chain: ChainMetadata;\n rpcUrl: string;\n organizationId: string;\n signWith: TurnkeySignWith;\n client: TurnkeyBrowserClientLike;\n ethereumAddress?: HexAddress | undefined;\n nonceSource?: NonceSource | undefined;\n}\n\nexport async function createTurnkeyBrowserProvider(\n config: TurnkeyBrowserProviderConfig,\n): Promise<WalletFullContext> {\n const account = (await createAccount({\n client: config.client,\n organizationId: config.organizationId,\n signWith: config.signWith,\n ...(config.ethereumAddress ? { ethereumAddress: config.ethereumAddress } : {}),\n })) as Account;\n\n const transport = http(config.rpcUrl, { fetchFn: browserFetch });\n const publicClient = createPublicClient<Transport, Chain>({\n chain: config.chain.chain,\n transport,\n });\n\n const walletClient = createWalletClient<Transport, Chain, Account>({\n account,\n chain: config.chain.chain,\n transport,\n });\n\n return createBrowserWalletContext({\n chain: config.chain.slug,\n rpcUrl: config.rpcUrl,\n address: account.address as HexAddress,\n account,\n walletClient,\n publicClient,\n ...(config.nonceSource ? { nonceSource: config.nonceSource } : {}),\n providerType: \"turnkey\",\n });\n}\n\nexport { createMonotonicNonceSource };\nexport type { NonceSource };\n"]}
@@ -1,5 +1,5 @@
1
- import { C as ChainMetadata, b as ChainTokenMap, o as WalletRegistry, R as RpcProviderOptions, k as WalletPrivateKeyOptions, W as WalletFullContext, s as WalletTurnkeyOptions, n as WalletReadonlyOptions, m as WalletReadonlyContext } from '../types-DKohXZes.js';
2
- export { a as ChainReference, H as Hex, c as HexAddress, N as NonceSource, d as RpcUrlResolver, T as TokenMetadata, e as TurnkeyOptions, f as TurnkeySignWith, g as WalletBaseContext, h as WalletContext, i as WalletOptions, j as WalletOptionsBase, l as WalletProviderType, p as WalletSendTransactionParams, q as WalletSignerContext, r as WalletTransferParams } from '../types-DKohXZes.js';
1
+ import { C as ChainMetadata, b as ChainTokenMap, o as WalletRegistry, R as RpcProviderOptions, k as WalletPrivateKeyOptions, h as WalletFullContext, s as WalletTurnkeyOptions, n as WalletReadonlyOptions, m as WalletReadonlyContext } from '../types-BaTmu0gS.js';
2
+ export { a as ChainReference, H as Hex, c as HexAddress, N as NonceSource, d as RpcUrlResolver, T as TokenMetadata, e as TurnkeyOptions, f as TurnkeySignWith, W as WalletBaseContext, g as WalletContext, i as WalletOptions, j as WalletOptionsBase, l as WalletProviderType, p as WalletSendTransactionParams, q as WalletSignerContext, r as WalletTransferParams } from '../types-BaTmu0gS.js';
3
3
  import 'viem';
4
4
  import 'viem/accounts';
5
5
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opentool",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "description": "OpenTool framework for building serverless MCP tools",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -10,7 +10,7 @@
10
10
  "validate": "opentool validate"
11
11
  },
12
12
  "dependencies": {
13
- "opentool": "^0.13.0",
13
+ "opentool": "^0.15.0",
14
14
  "zod": "^4.3.6"
15
15
  },
16
16
  "devDependencies": {
@@ -1,360 +0,0 @@
1
- import { W as WalletFullContext } from './types-DKohXZes.js';
2
-
3
- type HyperliquidEnvironment = "mainnet" | "testnet";
4
- type MarketIdentity = {
5
- market_type: "perp" | "spot" | "dex";
6
- venue: "hyperliquid";
7
- environment: HyperliquidEnvironment;
8
- base: string;
9
- quote?: string | null;
10
- dex?: string | null;
11
- chain_id?: number | null;
12
- pool_address?: string | null;
13
- token0_address?: string | null;
14
- token1_address?: string | null;
15
- fee_tier?: number | null;
16
- raw_symbol?: string | null;
17
- canonical_symbol: string;
18
- };
19
- type HyperliquidMarketIdentityInput = {
20
- environment: HyperliquidEnvironment;
21
- symbol: string;
22
- rawSymbol?: string | null;
23
- isSpot?: boolean;
24
- base?: string | null;
25
- quote?: string | null;
26
- };
27
- declare function buildHyperliquidMarketIdentity(input: HyperliquidMarketIdentityInput): MarketIdentity | null;
28
- type HyperliquidTimeInForce = "Gtc" | "Ioc" | "Alo" | "FrontendMarket" | "LiquidationMarket";
29
- type HyperliquidGrouping = "na" | "normalTpsl" | "positionTpsl";
30
- type HyperliquidTriggerType = "tp" | "sl";
31
- type HyperliquidAbstraction = "unifiedAccount" | "portfolioMargin" | "disabled";
32
- type HyperliquidAccountMode = "standard" | "unified" | "portfolio";
33
- declare function resolveHyperliquidAbstractionFromMode(mode: HyperliquidAccountMode): HyperliquidAbstraction;
34
- declare const DEFAULT_HYPERLIQUID_MARKET_SLIPPAGE_BPS = 30;
35
- declare function computeHyperliquidMarketIocLimitPrice(params: {
36
- markPrice: number;
37
- side: "buy" | "sell";
38
- slippageBps?: number;
39
- decimals?: number;
40
- }): string;
41
- interface HyperliquidTriggerOptions {
42
- triggerPx: string | number | bigint;
43
- isMarket?: boolean;
44
- tpsl: HyperliquidTriggerType;
45
- }
46
- interface HyperliquidBuilderFee {
47
- address: `0x${string}`;
48
- /**
49
- * Fee in tenths of basis points (10 = 1bp = 0.01%). Max defaults to 0.1% (100).
50
- */
51
- fee: number;
52
- }
53
- interface HyperliquidOrderIntent {
54
- symbol: string;
55
- side: "buy" | "sell";
56
- price: string | number | bigint;
57
- size: string | number | bigint;
58
- tif?: HyperliquidTimeInForce;
59
- reduceOnly?: boolean;
60
- clientId?: `0x${string}`;
61
- trigger?: HyperliquidTriggerOptions;
62
- }
63
- type ExchangeOrderAction = {
64
- type: "order";
65
- orders: Array<{
66
- a: number;
67
- b: boolean;
68
- p: string;
69
- s: string;
70
- r: boolean;
71
- t: {
72
- limit: {
73
- tif: HyperliquidTimeInForce;
74
- };
75
- } | {
76
- trigger: {
77
- isMarket: boolean;
78
- triggerPx: string;
79
- tpsl: HyperliquidTriggerType;
80
- };
81
- };
82
- c?: `0x${string}`;
83
- }>;
84
- grouping: HyperliquidGrouping;
85
- builder?: {
86
- b: `0x${string}`;
87
- f: number;
88
- };
89
- };
90
- type ExchangeSignature = {
91
- r: `0x${string}`;
92
- s: `0x${string}`;
93
- v: 27 | 28;
94
- };
95
- type HyperliquidExchangeResponse<T = unknown> = {
96
- status: string;
97
- response?: {
98
- type: string;
99
- data?: T;
100
- };
101
- error?: string;
102
- };
103
- type NonceSource = () => number;
104
- declare class HyperliquidApiError extends Error {
105
- readonly response: unknown;
106
- constructor(message: string, response: unknown);
107
- }
108
- declare class HyperliquidGuardError extends Error {
109
- constructor(message: string);
110
- }
111
- declare class HyperliquidTermsError extends HyperliquidGuardError {
112
- constructor(message?: string);
113
- }
114
- declare class HyperliquidBuilderApprovalError extends HyperliquidGuardError {
115
- constructor(message?: string);
116
- }
117
- declare function createMonotonicNonceFactory(start?: number): NonceSource;
118
- declare function toApiDecimal(value: string | number | bigint): string;
119
- declare function splitSignature(signature: `0x${string}`): ExchangeSignature;
120
- declare function createL1ActionHash(args: {
121
- action: ExchangeOrderAction | Record<string, unknown>;
122
- nonce: number;
123
- vaultAddress?: `0x${string}` | undefined;
124
- expiresAfter?: number | undefined;
125
- }): `0x${string}`;
126
-
127
- declare class HyperliquidInfoClient {
128
- private readonly environment;
129
- constructor(environment?: HyperliquidEnvironment);
130
- meta(): Promise<any>;
131
- metaAndAssetCtxs(): Promise<any>;
132
- spotMeta(): Promise<any>;
133
- spotMetaAndAssetCtxs(): Promise<any>;
134
- assetCtxs(): Promise<any>;
135
- spotAssetCtxs(): Promise<any>;
136
- openOrders(user: `0x${string}`): Promise<any>;
137
- frontendOpenOrders(user: `0x${string}`): Promise<any>;
138
- orderStatus(user: `0x${string}`, oid: number | string): Promise<any>;
139
- historicalOrders(user: `0x${string}`): Promise<any>;
140
- userFills(user: `0x${string}`): Promise<any>;
141
- userFillsByTime(user: `0x${string}`, startTime: number, endTime: number): Promise<any>;
142
- userRateLimit(user: `0x${string}`): Promise<any>;
143
- preTransferCheck(user: `0x${string}`, source: `0x${string}`): Promise<any>;
144
- spotClearinghouseState(user: `0x${string}`): Promise<any>;
145
- }
146
- declare function fetchHyperliquidMeta(environment?: HyperliquidEnvironment): Promise<any>;
147
- declare function fetchHyperliquidMetaAndAssetCtxs(environment?: HyperliquidEnvironment): Promise<any>;
148
- declare function fetchHyperliquidSpotMeta(environment?: HyperliquidEnvironment): Promise<any>;
149
- declare function fetchHyperliquidSpotMetaAndAssetCtxs(environment?: HyperliquidEnvironment): Promise<any>;
150
- declare function fetchHyperliquidAssetCtxs(environment?: HyperliquidEnvironment): Promise<any>;
151
- declare function fetchHyperliquidSpotAssetCtxs(environment?: HyperliquidEnvironment): Promise<any>;
152
- declare function fetchHyperliquidOpenOrders(params: {
153
- environment?: HyperliquidEnvironment;
154
- user: `0x${string}`;
155
- }): Promise<any>;
156
- declare function fetchHyperliquidFrontendOpenOrders(params: {
157
- environment?: HyperliquidEnvironment;
158
- user: `0x${string}`;
159
- }): Promise<any>;
160
- declare function fetchHyperliquidOrderStatus(params: {
161
- environment?: HyperliquidEnvironment;
162
- user: `0x${string}`;
163
- oid: number | string;
164
- }): Promise<any>;
165
- declare function fetchHyperliquidHistoricalOrders(params: {
166
- environment?: HyperliquidEnvironment;
167
- user: `0x${string}`;
168
- }): Promise<any>;
169
- declare function fetchHyperliquidUserFills(params: {
170
- environment?: HyperliquidEnvironment;
171
- user: `0x${string}`;
172
- }): Promise<any>;
173
- declare function fetchHyperliquidUserFillsByTime(params: {
174
- environment?: HyperliquidEnvironment;
175
- user: `0x${string}`;
176
- startTime: number;
177
- endTime: number;
178
- }): Promise<any>;
179
- declare function fetchHyperliquidUserRateLimit(params: {
180
- environment?: HyperliquidEnvironment;
181
- user: `0x${string}`;
182
- }): Promise<any>;
183
- declare function fetchHyperliquidPreTransferCheck(params: {
184
- environment?: HyperliquidEnvironment;
185
- user: `0x${string}`;
186
- source: `0x${string}`;
187
- }): Promise<any>;
188
- declare function fetchHyperliquidSpotClearinghouseState(params: {
189
- environment?: HyperliquidEnvironment;
190
- user: `0x${string}`;
191
- }): Promise<any>;
192
-
193
- type CommonActionOptions = {
194
- environment?: HyperliquidEnvironment;
195
- vaultAddress?: `0x${string}` | undefined;
196
- expiresAfter?: number | undefined;
197
- nonce?: number | undefined;
198
- nonceSource?: NonceSource | undefined;
199
- /**
200
- * Optional per-wallet nonce provider (preferred if available).
201
- */
202
- walletNonceProvider?: NonceSource | undefined;
203
- };
204
- type CancelInput = {
205
- symbol: string;
206
- oid: number | string;
207
- };
208
- type CancelByCloidInput = {
209
- symbol: string;
210
- cloid: `0x${string}`;
211
- };
212
- type ModifyOrderInput = {
213
- oid: number | `0x${string}`;
214
- order: HyperliquidOrderIntent;
215
- };
216
- type TwapOrderInput = {
217
- symbol: string;
218
- side: "buy" | "sell";
219
- size: string | number | bigint;
220
- reduceOnly?: boolean;
221
- minutes: number;
222
- randomize?: boolean;
223
- };
224
- type TwapCancelInput = {
225
- symbol: string;
226
- twapId: number;
227
- };
228
- type UpdateLeverageInput = {
229
- symbol: string;
230
- leverageMode: "cross" | "isolated";
231
- leverage: number;
232
- };
233
- type UpdateIsolatedMarginInput = {
234
- symbol: string;
235
- isBuy: boolean;
236
- ntli: number;
237
- };
238
- declare class HyperliquidExchangeClient {
239
- private readonly nonceSource;
240
- private readonly environment;
241
- private readonly vaultAddress;
242
- private readonly expiresAfter;
243
- private readonly wallet;
244
- constructor(args: {
245
- wallet: WalletFullContext;
246
- environment?: HyperliquidEnvironment;
247
- vaultAddress?: `0x${string}`;
248
- expiresAfter?: number;
249
- nonceSource?: NonceSource;
250
- walletNonceProvider?: NonceSource;
251
- });
252
- cancel(cancels: CancelInput[]): Promise<HyperliquidExchangeResponse<unknown>>;
253
- cancelByCloid(cancels: CancelByCloidInput[]): Promise<HyperliquidExchangeResponse<unknown>>;
254
- cancelAll(): Promise<HyperliquidExchangeResponse<unknown>>;
255
- scheduleCancel(time: number | null): Promise<HyperliquidExchangeResponse<unknown>>;
256
- modify(modification: ModifyOrderInput): Promise<HyperliquidExchangeResponse<unknown>>;
257
- batchModify(modifications: ModifyOrderInput[]): Promise<HyperliquidExchangeResponse<unknown>>;
258
- twapOrder(twap: TwapOrderInput): Promise<HyperliquidExchangeResponse<unknown>>;
259
- twapCancel(cancel: TwapCancelInput): Promise<HyperliquidExchangeResponse<unknown>>;
260
- updateLeverage(input: UpdateLeverageInput): Promise<HyperliquidExchangeResponse<unknown>>;
261
- updateIsolatedMargin(input: UpdateIsolatedMarginInput): Promise<HyperliquidExchangeResponse<unknown>>;
262
- reserveRequestWeight(weight: number): Promise<HyperliquidExchangeResponse<unknown>>;
263
- spotSend(params: {
264
- destination: `0x${string}`;
265
- token: string;
266
- amount: string | number | bigint;
267
- }): Promise<HyperliquidExchangeResponse<unknown>>;
268
- setDexAbstraction(params: {
269
- enabled: boolean;
270
- user?: `0x${string}`;
271
- }): Promise<HyperliquidExchangeResponse<unknown>>;
272
- setAccountAbstractionMode(params: {
273
- mode: HyperliquidAccountMode;
274
- user?: `0x${string}`;
275
- }): Promise<HyperliquidExchangeResponse<unknown>>;
276
- setPortfolioMargin(params: {
277
- enabled: boolean;
278
- user?: `0x${string}`;
279
- }): Promise<HyperliquidExchangeResponse<unknown>>;
280
- }
281
- declare function setHyperliquidPortfolioMargin(options: {
282
- wallet: WalletFullContext;
283
- enabled: boolean;
284
- user?: `0x${string}`;
285
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
286
- declare function setHyperliquidDexAbstraction(options: {
287
- wallet: WalletFullContext;
288
- enabled: boolean;
289
- user?: `0x${string}`;
290
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
291
- declare function setHyperliquidAccountAbstractionMode(options: {
292
- wallet: WalletFullContext;
293
- mode: HyperliquidAccountMode;
294
- user?: `0x${string}`;
295
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
296
- declare function cancelHyperliquidOrders(options: {
297
- wallet: WalletFullContext;
298
- cancels: CancelInput[];
299
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
300
- declare function cancelHyperliquidOrdersByCloid(options: {
301
- wallet: WalletFullContext;
302
- cancels: CancelByCloidInput[];
303
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
304
- declare function cancelAllHyperliquidOrders(options: {
305
- wallet: WalletFullContext;
306
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
307
- declare function scheduleHyperliquidCancel(options: {
308
- wallet: WalletFullContext;
309
- time?: number | null;
310
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
311
- declare function modifyHyperliquidOrder(options: {
312
- wallet: WalletFullContext;
313
- modification: ModifyOrderInput;
314
- grouping?: HyperliquidGrouping;
315
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
316
- declare function batchModifyHyperliquidOrders(options: {
317
- wallet: WalletFullContext;
318
- modifications: ModifyOrderInput[];
319
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
320
- declare function placeHyperliquidTwapOrder(options: {
321
- wallet: WalletFullContext;
322
- twap: TwapOrderInput;
323
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
324
- declare function cancelHyperliquidTwapOrder(options: {
325
- wallet: WalletFullContext;
326
- cancel: TwapCancelInput;
327
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
328
- declare function updateHyperliquidLeverage(options: {
329
- wallet: WalletFullContext;
330
- input: UpdateLeverageInput;
331
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
332
- declare function updateHyperliquidIsolatedMargin(options: {
333
- wallet: WalletFullContext;
334
- input: UpdateIsolatedMarginInput;
335
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
336
- declare function reserveHyperliquidRequestWeight(options: {
337
- wallet: WalletFullContext;
338
- weight: number;
339
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
340
- declare function createHyperliquidSubAccount(options: {
341
- wallet: WalletFullContext;
342
- name: string;
343
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
344
- declare function transferHyperliquidSubAccount(options: {
345
- wallet: WalletFullContext;
346
- subAccountUser: `0x${string}`;
347
- isDeposit: boolean;
348
- usd: string | number | bigint;
349
- } & CommonActionOptions): Promise<HyperliquidExchangeResponse<unknown>>;
350
- declare function sendHyperliquidSpot(options: {
351
- wallet: WalletFullContext;
352
- destination: `0x${string}`;
353
- token: string;
354
- amount: string | number | bigint;
355
- environment?: HyperliquidEnvironment;
356
- nonce?: number;
357
- nonceSource?: NonceSource | undefined;
358
- }): Promise<HyperliquidExchangeResponse<unknown>>;
359
-
360
- export { setHyperliquidPortfolioMargin as $, fetchHyperliquidFrontendOpenOrders as A, fetchHyperliquidHistoricalOrders as B, fetchHyperliquidMeta as C, DEFAULT_HYPERLIQUID_MARKET_SLIPPAGE_BPS as D, type ExchangeOrderAction as E, fetchHyperliquidMetaAndAssetCtxs as F, fetchHyperliquidOpenOrders as G, type HyperliquidEnvironment as H, fetchHyperliquidOrderStatus as I, fetchHyperliquidPreTransferCheck as J, fetchHyperliquidSpotAssetCtxs as K, fetchHyperliquidSpotClearinghouseState as L, type MarketIdentity as M, type NonceSource as N, fetchHyperliquidSpotMeta as O, fetchHyperliquidSpotMetaAndAssetCtxs as P, fetchHyperliquidUserFills as Q, fetchHyperliquidUserFillsByTime as R, fetchHyperliquidUserRateLimit as S, modifyHyperliquidOrder as T, placeHyperliquidTwapOrder as U, reserveHyperliquidRequestWeight as V, resolveHyperliquidAbstractionFromMode as W, scheduleHyperliquidCancel as X, sendHyperliquidSpot as Y, setHyperliquidAccountAbstractionMode as Z, setHyperliquidDexAbstraction as _, type HyperliquidOrderIntent as a, transferHyperliquidSubAccount as a0, updateHyperliquidIsolatedMargin as a1, updateHyperliquidLeverage as a2, toApiDecimal as a3, createL1ActionHash as a4, splitSignature as a5, type HyperliquidGrouping as b, type HyperliquidAbstraction as c, type HyperliquidAccountMode as d, HyperliquidApiError as e, HyperliquidBuilderApprovalError as f, type HyperliquidBuilderFee as g, HyperliquidExchangeClient as h, type HyperliquidExchangeResponse as i, HyperliquidGuardError as j, HyperliquidInfoClient as k, type HyperliquidMarketIdentityInput as l, HyperliquidTermsError as m, type HyperliquidTimeInForce as n, type HyperliquidTriggerOptions as o, type HyperliquidTriggerType as p, batchModifyHyperliquidOrders as q, buildHyperliquidMarketIdentity as r, cancelAllHyperliquidOrders as s, cancelHyperliquidOrders as t, cancelHyperliquidOrdersByCloid as u, cancelHyperliquidTwapOrder as v, computeHyperliquidMarketIocLimitPrice as w, createHyperliquidSubAccount as x, createMonotonicNonceFactory as y, fetchHyperliquidAssetCtxs as z };