Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
6cb74ab
Add defaultNetworks parameter to chain configs
fengtality Dec 27, 2025
462901c
Merge branch 'development' into add-default-networks
rapcmia Jan 5, 2026
13c8f4f
feat: add strategyType support to unified CLMM open endpoint
fengtality Jan 14, 2026
c83952b
feat: add optional bins parameter to unified pool-info endpoint
fengtality Jan 14, 2026
4a64bf1
fix: ensure Meteora pool-info always returns bins in response
fengtality Jan 14, 2026
4f3f802
feat: add TRANSACTION_TIMEOUT error code for tx confirmation failures
fengtality Jan 14, 2026
6c9607f
fix: return signature for unconfirmed transactions instead of throwing
fengtality Jan 14, 2026
1d41611
Revert "fix: return signature for unconfirmed transactions instead of…
fengtality Jan 14, 2026
d72abb7
fix: separate tx fee and rent from token amounts in Meteora CLMM
fengtality Jan 15, 2026
b885211
feat: distinguish 'Position closed' vs 'Position not found' errors
fengtality Jan 15, 2026
623fb73
Merge branch 'development' into add-default-networks
fengtality Jan 16, 2026
22367fd
Update GATEWAY_VERSION to dev-2.13.0
rapcmia Jan 27, 2026
8667a38
Bump version from dev-2.12.0 to dev-2.13.0
rapcmia Jan 27, 2026
ec37a77
Merge branch 'development' into add-default-networks
rapcmia Jan 27, 2026
21c9a9c
Merge branch 'development' of github.com:hummingbot/gateway into feat…
fengtality Feb 3, 2026
4e22387
feat: merge chain config into network config for GET /config
fengtality Feb 4, 2026
7ac32c4
Merge branch 'add-default-networks' of github.com:hummingbot/gateway …
fengtality Feb 4, 2026
8854879
feat: enable defaultNetworks and remove unused namespace copying
fengtality Feb 4, 2026
4c48ab8
refactor: dynamically detect chain-level fields for config routing
fengtality Feb 4, 2026
7471f48
fix: convert native ETH to WETH in quoteSwap for price queries
fengtality Feb 4, 2026
42c55f8
chore: update @uniswap/smart-order-router to 4.31.10
fengtality Feb 4, 2026
2bc7ece
fix: return price=1 for same-token and native/wrapped token quotes
fengtality Feb 4, 2026
4633a59
fix: exclude V4 protocol from AlphaRouter to fix Base network
fengtality Feb 4, 2026
46a3bd9
(chore) reduce eth token lists
fengtality Feb 4, 2026
deb3899
fix: handle same-token quotes in Jupiter router (Solana)
fengtality Feb 4, 2026
d56a57d
Revert "fix: handle same-token quotes in Jupiter router (Solana)"
fengtality Feb 5, 2026
9535b65
fix: add missing getNamespace mock to config test
fengtality Feb 5, 2026
14173bc
chore: increase base sol priority fee
fengtality Feb 5, 2026
5a55764
fix: process Ethereum token balances sequentially to prevent timeouts
fengtality Feb 6, 2026
5ca2052
docs: add Privy server wallet integration design doc
fengtality Feb 7, 2026
f6e0620
feat(solana): improve priority fee estimation with configurable min/m…
fengtality Feb 9, 2026
0ed3845
fix(solana): use config timeout for WebSocket transaction confirmation
fengtality Feb 11, 2026
de6d529
chore: remove Privy design doc (not part of this PR)
fengtality Feb 11, 2026
723dfeb
feat(solana): add caching to priority fee estimation
fengtality Feb 11, 2026
a86c92b
fix(orca): use Token-2022 positions for full rent recovery on close
mlguys Feb 11, 2026
ad4c244
Merge branch 'feat/orca-connector-feb-2026' of github.com:hummingbot/…
fengtality Feb 11, 2026
68a7814
fix: use on-chain data for real-time Orca pool price
fengtality Feb 12, 2026
6b45f1a
fix: update poolInfo tests for on-chain data fetching
fengtality Feb 12, 2026
5822494
fix: add retry logic for fetching transaction data after confirmation
fengtality Feb 13, 2026
f5df19c
Merge pull request #600 from hummingbot/feat/orca-connector-feb-2026
rapcmia Feb 16, 2026
3d5510b
Merge branch 'development' into fix/orca-realtime-pool-price
rapcmia Feb 16, 2026
2784e56
Merge branch 'development' into feat/connector-specific-params
rapcmia Feb 16, 2026
6c55d04
Merge branch 'development' into add-default-networks
rapcmia Feb 16, 2026
7bb5bd0
Merge pull request #583 from hummingbot/add-default-networks
rapcmia Feb 16, 2026
b207155
Merge branch 'development' into feat/connector-specific-params
rapcmia Feb 16, 2026
c74ba1d
Merge branch 'development' into fix/orca-realtime-pool-price
rapcmia Feb 17, 2026
a406998
fix: support Token2022 tokens in Orca pool-info
fengtality Feb 19, 2026
188b14b
Merge pull request #603 from hummingbot/fix/orca-realtime-pool-price
fengtality Feb 20, 2026
5032a1a
Merge branch 'feat/connector-specific-params' of github.com:hummingbo…
fengtality Feb 20, 2026
02d45a8
fixed conflicts
fengtality Feb 20, 2026
e9b15fb
fix: extract positionRent from transaction account balances for Meteo…
fengtality Feb 24, 2026
666f243
Merge pull request #591 from hummingbot/feat/connector-specific-params
fengtality Feb 25, 2026
909b58c
Merge branch 'staging' into development
fengtality Feb 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "gateway",
"version": "2.12.0",
"version": "2.13.0",
"description": "Hummingbot Gateway is an API server that helps you interact with DEXs and blockchains.",
"main": "index.js",
"license": "Apache-2.0",
Expand Down Expand Up @@ -82,7 +82,7 @@
"@uniswap/router-sdk": "^2.0.4",
"@uniswap/sdk": "3.0.3",
"@uniswap/sdk-core": "^5.9.0",
"@uniswap/smart-order-router": "^4.22.38",
"@uniswap/smart-order-router": "^4.31.10",
"@uniswap/universal-router-sdk": "^4.19.6",
"@uniswap/v2-sdk": "^4.15.2",
"@uniswap/v3-core": "^1.0.1",
Expand Down
94 changes: 47 additions & 47 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 7 additions & 2 deletions src/app.ts
Original file line number Diff line number Diff line change
Expand Up @@ -308,11 +308,16 @@ const configureGatewayServer = () => {

// Handle Fastify's native errors (includes rate limit errors with statusCode 429)
if (error.statusCode && error.statusCode >= 400) {
return reply.status(error.statusCode).send({
const response: Record<string, unknown> = {
statusCode: error.statusCode,
error: error.name,
message: error.message,
});
};
// Include error code if present (for specific error types like TRANSACTION_TIMEOUT)
if ('code' in error && error.code) {
response.code = error.code;
}
return reply.status(error.statusCode).send(response);
}

// Log and handle unexpected errors
Expand Down
2 changes: 2 additions & 0 deletions src/chains/ethereum/ethereum.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ export interface EthereumNetworkConfig {

export interface EthereumChainConfig {
defaultNetwork: string;
defaultNetworks?: string[];
defaultWallet: string;
rpcProvider: string;
etherscanAPIKey?: string;
Expand Down Expand Up @@ -44,6 +45,7 @@ export function getEthereumNetworkConfig(network: string): EthereumNetworkConfig
export function getEthereumChainConfig(): EthereumChainConfig {
return {
defaultNetwork: ConfigManagerV2.getInstance().get('ethereum.defaultNetwork'),
defaultNetworks: ConfigManagerV2.getInstance().get('ethereum.defaultNetworks'),
defaultWallet: ConfigManagerV2.getInstance().get('ethereum.defaultWallet'),
rpcProvider: ConfigManagerV2.getInstance().get('ethereum.rpcProvider') || 'url',
etherscanAPIKey: ConfigManagerV2.getInstance().get('apiKeys.etherscan'),
Expand Down
37 changes: 18 additions & 19 deletions src/chains/ethereum/ethereum.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1080,6 +1080,7 @@ export class Ethereum {

/**
* Get balances for all tokens in the token list
* Processes tokens sequentially to prevent RPC timeouts
*/
private async getAllTokenBalances(
address: string,
Expand All @@ -1090,26 +1091,24 @@ export class Ethereum {
const tokenList = await this.getTokenList();
logger.info(`Checking balances for all ${tokenList.length} tokens in the token list`);

await Promise.all(
tokenList.map(async (token) => {
try {
const contract = this.getContract(token.address, this.provider);
const balance = isHardware
? await this.getERC20BalanceByAddress(contract, address, token.decimals, 2000, token.symbol)
: await this.getERC20Balance(contract, wallet!, token.decimals, 2000, token.symbol);

const balanceNum = parseFloat(tokenValueToString(balance));

// Only add tokens with non-zero balances
if (balanceNum > 0) {
balances[token.symbol] = balanceNum;
logger.debug(`Found non-zero balance for ${token.symbol}: ${balanceNum}`);
}
} catch (err) {
logger.warn(`Error getting balance for ${token.symbol}: ${err.message}`);
for (const token of tokenList) {
try {
const contract = this.getContract(token.address, this.provider);
const balance = isHardware
? await this.getERC20BalanceByAddress(contract, address, token.decimals, 5000, token.symbol)
: await this.getERC20Balance(contract, wallet!, token.decimals, 5000, token.symbol);

const balanceNum = parseFloat(tokenValueToString(balance));

// Only add tokens with non-zero balances
if (balanceNum > 0) {
balances[token.symbol] = balanceNum;
logger.debug(`Found non-zero balance for ${token.symbol}: ${balanceNum}`);
}
}),
);
} catch (err) {
logger.warn(`Error getting balance for ${token.symbol}: ${err.message}`);
}
}
}

/**
Expand Down
Loading