@clonegod/ttd-core 3.1.10 → 3.1.12

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.
@@ -1,11 +1,12 @@
1
1
  import { EventEmitter } from 'events';
2
- import { CommonServiceType, LoadingCache, OrderMessageType, PriceMessageType, RedisCommand, StandardDexPoolConfigType, StandardPairType, StandardPoolInfoType, StandardTokenInfoType, TradePairDexPoolsType, TradePairType, TradeResponseType, TradeRuntimeType, TradeServiceConfigType } from "../../types";
2
+ import { CommonServiceType, LoadingCache, OrderMessageType, PriceMessageType, StandardDexPoolConfigType, StandardPairType, StandardPoolInfoType, StandardTokenInfoType, TradePairDexPoolsType, TradePairType, TradeResponseType, TradeRuntimeType, TradeServiceConfigType } from "../../types";
3
+ import { RedisClient } from "../redis";
3
4
  import { CHAIN_ID } from "../index";
4
5
  import { ArbEventPublisher } from './arb_event_pub';
5
6
  export declare class ArbCache {
6
7
  chain_id: CHAIN_ID;
7
8
  loading_cache: LoadingCache;
8
- redis_cmd: RedisCommand;
9
+ redis_cmd: RedisClient;
9
10
  redis_event_publisher: ArbEventPublisher;
10
11
  token_list: StandardTokenInfoType[];
11
12
  token_symbol_map: Map<string, StandardTokenInfoType>;
@@ -20,7 +20,7 @@ class ArbCache {
20
20
  constructor(env_args) {
21
21
  this.chain_id = env_args.chain_id;
22
22
  this.loading_cache = (0, index_1.getLoadingCache)();
23
- this.redis_cmd = (0, index_1.getRedisCommamd)();
23
+ this.redis_cmd = (0, index_1.getRedisClient)();
24
24
  this.token_list = [];
25
25
  this.token_symbol_map = new Map();
26
26
  this.token_address_map = new Map();
@@ -1,10 +1,11 @@
1
- import { RedisCommand, RedisConfigChangeEventMessageType, RedisOrderEventMessageType, RedisQuoteEventMessageType, TradeResponseType } from "../../types";
1
+ import { RedisConfigChangeEventMessageType, RedisOrderEventMessageType, RedisQuoteEventMessageType, TradeResponseType } from "../../types";
2
+ import { RedisClient } from "../redis";
2
3
  import { CHAIN_ID, DEX_ID } from "../index";
3
4
  import { ArbCache } from "./arb_cache";
4
5
  export declare class ArbEventPublisher {
5
6
  arb_cache: ArbCache;
6
7
  chain_id: CHAIN_ID;
7
- redis_cmd: RedisCommand;
8
+ redis_cmd: RedisClient;
8
9
  constructor(arb_cache: ArbCache);
9
10
  publish_config_change_event(message: RedisConfigChangeEventMessageType): Promise<void>;
10
11
  publish_quote_price_event(chain_id: string, message: RedisQuoteEventMessageType): Promise<void>;
@@ -1,9 +1,11 @@
1
- import { ArbCache, RedisCommand, RedisConfigChangeEventMessageType } from "../../types";
1
+ import { RedisConfigChangeEventMessageType } from "../../types";
2
+ import { RedisClient } from "../redis";
3
+ import { ArbCache } from "./arb_cache";
2
4
  import { CHAIN_ID, DEX_ID } from "../index";
3
5
  export declare class ArbEventSubscriber {
4
6
  arb_cache: ArbCache;
5
7
  chain_id: CHAIN_ID;
6
- redis_cmd: RedisCommand;
8
+ redis_cmd: RedisClient;
7
9
  constructor(arb_cache: ArbCache);
8
10
  pre_load_config_cache(): Promise<void>;
9
11
  subscribe_config_change_event(callback?: Function): Promise<void>;
@@ -0,0 +1,9 @@
1
+ export interface EvmGasOptions {
2
+ gasLimit: number;
3
+ defaultGasPriceGwei: number;
4
+ maxGasPriceGwei: number;
5
+ maxFeePerGasGwei: number;
6
+ maxPriorityFeePerGasGwei: number;
7
+ defaultTipAmountGwei: number;
8
+ maxTipAmountGwei: number;
9
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/dist/index.d.ts CHANGED
@@ -136,7 +136,6 @@ export declare const parse_unique_orderbook_id: (unique_orderbook_id: string) =>
136
136
  export declare const format_unique_order_msg_id: (group_id: string, price_id: string, order_trace_id: string) => string;
137
137
  export declare const format_order_lock_key: (chain_id: string, group_id: string, price_id: string, order_trace_id: string) => string;
138
138
  export declare const getRedisClient: (lockPrefix?: string) => redis.RedisClient;
139
- export declare const getRedisCommamd: () => redis.RedisClient;
140
139
  export declare const getLoadingCache: () => cache.LoadingCache;
141
140
  export declare const getArbCache: (env_args: any) => cache.ArbCache;
142
141
  export declare const getArbEventPublisher: (arb_cache: any) => cache.ArbEventPublisher;
package/dist/index.js CHANGED
@@ -48,8 +48,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
48
48
  return (mod && mod.__esModule) ? mod : { "default": mod };
49
49
  };
50
50
  Object.defineProperty(exports, "__esModule", { value: true });
51
- exports.DATE_TIME_FORMAT_DEFAULT = exports.to_json_str = exports.DecimalUtil = exports.generateRandomNumber = exports.LOG = exports._active_log_level = exports.LOG_LEVEL = exports.REDIS_EVENT_TYPE_TRADE_INSTANCE_CHANGE = exports.REDIS_EVENT_TYPE_ORDER = exports.REDIS_EVENT_TYPE_QUOTE = exports.REDIS_EVENT_TYPE_CONFIG_CHANGE = exports.REDIS_EVENT_CHANNEL = exports.get_new_block_channel_name = exports.get_tx_result_channel_name = exports.get_wallet_raw_tx_channel_name = exports.get_order_channel_name = exports.get_quote_channel_name = exports.get_config_channel_name = exports.get_cache_key = exports.getArbEventSubscriber = exports.getArbEventPublisher = exports.getArbCache = exports.getLoadingCache = exports.getRedisCommamd = exports.getRedisClient = exports.format_order_lock_key = exports.format_unique_order_msg_id = exports.parse_unique_orderbook_id = exports.format_unique_orderbook_id = exports.format_symbol_name = exports.LOCAL_EVENT_NAME = exports.CACHE_KEY_TYPE = exports.OnChainDataSubscribeType = exports.TradeErrorCodeType = exports.SystemErrorCodeType = exports.TRADE_TYPE = exports.GROUP_ID = exports.DEX_ID = exports.CHAIN_ID = exports.STREAMING_TRANSACTION_CONFIRMED = exports.TRANSACTION_STATE_FAILED = exports.TRANSACTION_STATE_SUCCESS = exports.TRANSACTION_STATE_PROCESSING = exports.QUOTE_AMOUNT_USD_MAX = exports.QUOTE_AMOUNT_USD_MIN = exports.REGEX_HEX_PREFIX = exports.PROCESSING = exports.NOT_FOUND = exports.SUCCESS = exports.FAILED = void 0;
52
- exports.execute_bash = exports.inspect_arb_local_cache = exports.save_trade_execution_logs = exports.parse_trade_cmdline_args = exports.get_input_out_token_fix = exports.get_input_out_token = exports.calc_amount_in_token = exports.estimate_amount_in_token = exports.failed = exports.success = exports.home_dir = exports.postJSON = exports.deep_merge_object = exports.isArray = exports.isTrue = exports.deep_clone = exports.uuid = exports.DATE_TIME_FORMAT_NO_WHITESPACE = void 0;
51
+ exports.DATE_TIME_FORMAT_NO_WHITESPACE = exports.DATE_TIME_FORMAT_DEFAULT = exports.to_json_str = exports.DecimalUtil = exports.generateRandomNumber = exports.LOG = exports._active_log_level = exports.LOG_LEVEL = exports.REDIS_EVENT_TYPE_TRADE_INSTANCE_CHANGE = exports.REDIS_EVENT_TYPE_ORDER = exports.REDIS_EVENT_TYPE_QUOTE = exports.REDIS_EVENT_TYPE_CONFIG_CHANGE = exports.REDIS_EVENT_CHANNEL = exports.get_new_block_channel_name = exports.get_tx_result_channel_name = exports.get_wallet_raw_tx_channel_name = exports.get_order_channel_name = exports.get_quote_channel_name = exports.get_config_channel_name = exports.get_cache_key = exports.getArbEventSubscriber = exports.getArbEventPublisher = exports.getArbCache = exports.getLoadingCache = exports.getRedisClient = exports.format_order_lock_key = exports.format_unique_order_msg_id = exports.parse_unique_orderbook_id = exports.format_unique_orderbook_id = exports.format_symbol_name = exports.LOCAL_EVENT_NAME = exports.CACHE_KEY_TYPE = exports.OnChainDataSubscribeType = exports.TradeErrorCodeType = exports.SystemErrorCodeType = exports.TRADE_TYPE = exports.GROUP_ID = exports.DEX_ID = exports.CHAIN_ID = exports.STREAMING_TRANSACTION_CONFIRMED = exports.TRANSACTION_STATE_FAILED = exports.TRANSACTION_STATE_SUCCESS = exports.TRANSACTION_STATE_PROCESSING = exports.QUOTE_AMOUNT_USD_MAX = exports.QUOTE_AMOUNT_USD_MIN = exports.REGEX_HEX_PREFIX = exports.PROCESSING = exports.NOT_FOUND = exports.SUCCESS = exports.FAILED = void 0;
52
+ exports.execute_bash = exports.inspect_arb_local_cache = exports.save_trade_execution_logs = exports.parse_trade_cmdline_args = exports.get_input_out_token_fix = exports.get_input_out_token = exports.calc_amount_in_token = exports.estimate_amount_in_token = exports.failed = exports.success = exports.home_dir = exports.postJSON = exports.deep_merge_object = exports.isArray = exports.isTrue = exports.deep_clone = exports.uuid = void 0;
53
53
  exports._caller = _caller;
54
54
  exports.log_trace = log_trace;
55
55
  exports.log_debug = log_debug;
@@ -260,10 +260,6 @@ const getRedisClient = (lockPrefix = '') => {
260
260
  return new redis.RedisClient(lockPrefix);
261
261
  };
262
262
  exports.getRedisClient = getRedisClient;
263
- const getRedisCommamd = () => {
264
- return new redis.RedisClient();
265
- };
266
- exports.getRedisCommamd = getRedisCommamd;
267
263
  const getLoadingCache = () => {
268
264
  return new cache.LoadingCache();
269
265
  };
@@ -31,7 +31,7 @@ function get_pair_name(native_token, pool_name) {
31
31
  function check_pool_token_address(pool) {
32
32
  let { pool_name, pool_address, tokenA, tokenB } = pool;
33
33
  for (let token of [tokenA, tokenB]) {
34
- let is_fake_token = token_1.fixed_symbol_address.some(e => e.symbol === token.symbol && e.address.toLowerCase() !== token.address.toLowerCase());
34
+ let is_fake_token = (0, token_1.get_fixed_symbol_address)().some(e => e.symbol === token.symbol && e.address.toLowerCase() !== token.address.toLowerCase());
35
35
  if (is_fake_token) {
36
36
  throw new Error(`Invalid token address of ${token.symbol}: ${token.address}, ${pool_name}, ${pool_address}`);
37
37
  }
@@ -325,4 +325,3 @@ export declare class RedisClient {
325
325
  subscribe(channel: string, listener: any): Promise<void>;
326
326
  publish(channel: string, message: string): Promise<void>;
327
327
  }
328
- export declare const RedisCommand: typeof RedisClient;
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.RedisCommand = exports.RedisClient = void 0;
12
+ exports.RedisClient = void 0;
13
13
  const index_1 = require("../index");
14
14
  const redis_connection_1 = require("./redis_connection");
15
15
  const MAX_SUBSCRIBE_RECONNECT = 10;
@@ -282,4 +282,3 @@ class RedisClient {
282
282
  }
283
283
  }
284
284
  exports.RedisClient = RedisClient;
285
- exports.RedisCommand = RedisClient;
@@ -1,2 +1,2 @@
1
1
  import { TokenFixedSymbolAddress } from './types';
2
- export declare const fixed_symbol_address: TokenFixedSymbolAddress[];
2
+ export declare const get_fixed_symbol_address: () => TokenFixedSymbolAddress[];
@@ -3,25 +3,31 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.fixed_symbol_address = void 0;
6
+ exports.get_fixed_symbol_address = void 0;
7
7
  require('dotenv').config();
8
8
  const os_1 = __importDefault(require("os"));
9
9
  const path_1 = __importDefault(require("path"));
10
10
  const index_1 = require("../index");
11
+ let _first_load_logged = false;
11
12
  const get_fixed_symbol_address = () => {
12
- let chain_id = process.env.CHAIN_ID;
13
+ const chain_id = process.env.CHAIN_ID;
13
14
  if (!chain_id) {
14
15
  return [];
15
16
  }
16
- let filepath = process.env.BSC_FIXED_SYMBOL_ADDRESS_FILE || path_1.default.join(os_1.default.homedir(), 'data', 'onchain_data', chain_id.toLowerCase(), 'fixed_symbol_address.json');
17
- console.log(`get_fixed_symbol_address: ${filepath}`);
18
- let fixed_symbol_address_list = [];
17
+ const filepath = process.env.BSC_FIXED_SYMBOL_ADDRESS_FILE ||
18
+ path_1.default.join(os_1.default.homedir(), 'data', 'onchain_data', chain_id.toLowerCase(), 'fixed_symbol_address.json');
19
+ const print_log = process.env.PRINT_FIXED_SYMBOL_ADDRESS === 'true';
20
+ let list = [];
19
21
  try {
20
- fixed_symbol_address_list = (0, index_1.readFile)(filepath, true, true);
22
+ list = (0, index_1.readFile)(filepath, true, true);
23
+ if (print_log && !_first_load_logged) {
24
+ (0, index_1.log_info)(`[fixed_symbol_address] loaded ${list.length} entries from ${filepath}`);
25
+ _first_load_logged = true;
26
+ }
21
27
  }
22
28
  catch (error) {
23
- console.error('get_fixed_symbol_address erro!', error);
29
+ (0, index_1.log_error)(`[fixed_symbol_address] load failed from ${filepath}`, error);
24
30
  }
25
- return fixed_symbol_address_list;
31
+ return list;
26
32
  };
27
- exports.fixed_symbol_address = get_fixed_symbol_address();
33
+ exports.get_fixed_symbol_address = get_fixed_symbol_address;
@@ -21,6 +21,6 @@ const is_valid_symbol = (symbol) => {
21
21
  };
22
22
  exports.is_valid_symbol = is_valid_symbol;
23
23
  function get_token_symbol_alias(token_address) {
24
- let token = __1.fixed_symbol_address.find(e => e.address === token_address);
24
+ let token = (0, __1.get_fixed_symbol_address)().find(e => e.address === token_address);
25
25
  return (token === null || token === void 0 ? void 0 : token.alias) || '';
26
26
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clonegod/ttd-core",
3
- "version": "3.1.10",
3
+ "version": "3.1.12",
4
4
  "description": "Common types and utilities for trading systems - use `npm run push` to publish",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
package/types/index.d.ts CHANGED
@@ -177,13 +177,14 @@ export interface TradeStrategyType {
177
177
  max_block_offset: number // Solana特定:限制交易在多少个区块内有效(约等于秒数,1 block ≈ 0.4秒)。使用最新blockhash,设置lastValidBlockHeight = currentBlockHeight + max_block_offset
178
178
 
179
179
  // evm chain
180
+ evm_tx_type: 0 | 2 // 交易类型:0=Legacy, 2=EIP-1559
180
181
  evm_gas_limit: number // 300000
181
- evm_gas_price_gwei: number // 1.1 Gwei
182
- evm_tip_amount_gwei: number // 48000 Gwei
182
+ evm_gas_price_gwei: number // Legacy: gasPrice(Gwei
183
+ evm_tip_amount_gwei: number // Builder tip(Gwei),独立原生代币转账
183
184
 
184
- // evm EIP-1559 交易类型
185
- evm_max_gas_price_gwei: number // 0.01 Gwei 允许的gas price上限
186
- evm_max_priority_fee_per_gas_gwei: number // 0.002 Gwei 允许的priority fee上限,需小于 max_gas_price_gwei
185
+ // evm EIP-1559 (Type 2)
186
+ evm_max_fee_per_gas_gwei: number // Type2: maxFeePerGas(Gwei
187
+ evm_max_priority_fee_per_gas_gwei: number // Type2: maxPriorityFeePerGas(Gwei),允许为 0
187
188
 
188
189
  // sui
189
190
  gas_price: number // default