@clonegod/ttd-sol-common 1.2.0 → 2.0.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/dist/index.d.ts +0 -7
- package/dist/index.js +0 -23
- package/package.json +31 -32
- package/src/index.ts +0 -0
- package/tsconfig.json +22 -0
- package/dist/appconfig/app_config.d.ts +0 -23
- package/dist/appconfig/app_config.js +0 -134
- package/dist/appconfig/env_args.d.ts +0 -27
- package/dist/appconfig/env_args.js +0 -39
- package/dist/appconfig/index.d.ts +0 -2
- package/dist/appconfig/index.js +0 -18
- package/dist/common/constants.d.ts +0 -12
- package/dist/common/constants.js +0 -18
- package/dist/common/context.d.ts +0 -23
- package/dist/common/context.js +0 -51
- package/dist/common/index.d.ts +0 -2
- package/dist/common/index.js +0 -18
- package/dist/helius_geyser_ws/index.d.ts +0 -3
- package/dist/helius_geyser_ws/index.js +0 -19
- package/dist/helius_geyser_ws/subscribe_pool_change_by_geyser.d.ts +0 -3
- package/dist/helius_geyser_ws/subscribe_pool_change_by_geyser.js +0 -102
- package/dist/helius_geyser_ws/subscribe_txid.d.ts +0 -2
- package/dist/helius_geyser_ws/subscribe_txid.js +0 -109
- package/dist/helius_geyser_ws/subscribe_wallet_transaction.d.ts +0 -2
- package/dist/helius_geyser_ws/subscribe_wallet_transaction.js +0 -102
- package/dist/helius_sdk_v1.4.0/Helius.d.ts +0 -31
- package/dist/helius_sdk_v1.4.0/Helius.js +0 -450
- package/dist/helius_sdk_v1.4.0/RpcClient.d.ts +0 -70
- package/dist/helius_sdk_v1.4.0/RpcClient.js +0 -978
- package/dist/helius_sdk_v1.4.0/constants.d.ts +0 -1
- package/dist/helius_sdk_v1.4.0/constants.js +0 -4
- package/dist/helius_sdk_v1.4.0/index.d.ts +0 -5
- package/dist/helius_sdk_v1.4.0/index.js +0 -21
- package/dist/helius_sdk_v1.4.0/types/das-types.d.ts +0 -408
- package/dist/helius_sdk_v1.4.0/types/das-types.js +0 -2
- package/dist/helius_sdk_v1.4.0/types/enums.d.ts +0 -542
- package/dist/helius_sdk_v1.4.0/types/enums.js +0 -606
- package/dist/helius_sdk_v1.4.0/types/index.d.ts +0 -3
- package/dist/helius_sdk_v1.4.0/types/index.js +0 -19
- package/dist/helius_sdk_v1.4.0/types/types.d.ts +0 -305
- package/dist/helius_sdk_v1.4.0/types/types.js +0 -2
- package/dist/helius_sdk_v1.4.0/utils/get-helius-endpoints.d.ts +0 -2
- package/dist/helius_sdk_v1.4.0/utils/get-helius-endpoints.js +0 -19
- package/dist/helius_sdk_v1.4.0/utils/index.d.ts +0 -1
- package/dist/helius_sdk_v1.4.0/utils/index.js +0 -17
- package/dist/helius_sdk_v1.4.0/utils/mintApi.d.ts +0 -2
- package/dist/helius_sdk_v1.4.0/utils/mintApi.js +0 -14
- package/dist/jito/index.d.ts +0 -14
- package/dist/jito/index.js +0 -142
- package/dist/jito/jitodontfront.d.ts +0 -5
- package/dist/jito/jitodontfront.js +0 -41
- package/dist/quote/index.d.ts +0 -3
- package/dist/quote/index.js +0 -19
- package/dist/quote/log_quote_price.d.ts +0 -2
- package/dist/quote/log_quote_price.js +0 -29
- package/dist/quote/publish_quote_price.d.ts +0 -3
- package/dist/quote/publish_quote_price.js +0 -19
- package/dist/quote/to_price_message.d.ts +0 -5
- package/dist/quote/to_price_message.js +0 -103
- package/dist/send_tx/get_jito_tip_floor.d.ts +0 -1
- package/dist/send_tx/get_jito_tip_floor.js +0 -86
- package/dist/send_tx/get_signature.d.ts +0 -2
- package/dist/send_tx/get_signature.js +0 -17
- package/dist/send_tx/helius_client.d.ts +0 -16
- package/dist/send_tx/helius_client.js +0 -119
- package/dist/send_tx/index.d.ts +0 -4
- package/dist/send_tx/index.js +0 -20
- package/dist/send_tx/notify_new_txid.d.ts +0 -1
- package/dist/send_tx/notify_new_txid.js +0 -20
- package/dist/send_tx/sol_gas_cache.d.ts +0 -3
- package/dist/send_tx/sol_gas_cache.js +0 -15
- package/dist/send_tx/strategy_util.d.ts +0 -7
- package/dist/send_tx/strategy_util.js +0 -147
- package/dist/token/get_token_info.d.ts +0 -4
- package/dist/token/get_token_info.js +0 -136
- package/dist/token/get_token_price.d.ts +0 -6
- package/dist/token/get_token_price.js +0 -186
- package/dist/token/index.d.ts +0 -4
- package/dist/token/index.js +0 -20
- package/dist/token/types.d.ts +0 -17
- package/dist/token/types.js +0 -2
- package/dist/token/util.d.ts +0 -3
- package/dist/token/util.js +0 -33
- package/dist/trade/abstract_trade.d.ts +0 -5
- package/dist/trade/abstract_trade.js +0 -6
- package/dist/trade/handle_order_message.d.ts +0 -4
- package/dist/trade/handle_order_message.js +0 -118
- package/dist/trade/index.d.ts +0 -4
- package/dist/trade/index.js +0 -20
- package/dist/trade/tx_result_check.d.ts +0 -29
- package/dist/trade/tx_result_check.js +0 -232
- package/dist/trade/tx_result_parse.d.ts +0 -13
- package/dist/trade/tx_result_parse.js +0 -150
- package/grpc/transaction/LThcUp2D5p4JgRMnWEUVVSdNEHiq5YfN5HXPGRYeWBfypMT3aTa1CaC9XdPT69CyMdoJ32XAkjXAa2TmBYBeZAy.json +0 -1
- package/types/index.d.ts +0 -71
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
-
});
|
|
43
|
-
};
|
|
44
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
45
|
-
exports.get_token_basic_info_from_raydium = exports.get_token_basic_info_from_jupiter = exports.get_token_basic_info = void 0;
|
|
46
|
-
const dist_1 = require("@clonegod/ttd-core/dist");
|
|
47
|
-
const axios_1 = __importStar(require("axios"));
|
|
48
|
-
const util_1 = require("./util");
|
|
49
|
-
const get_token_basic_info = (symbol, mint_address) => __awaiter(void 0, void 0, void 0, function* () {
|
|
50
|
-
yield (0, dist_1.sleep)(1000);
|
|
51
|
-
let token_info;
|
|
52
|
-
(0, dist_1.log_debug)(`get_token_basic_info, symbol=${symbol}, mint_address=${mint_address}`);
|
|
53
|
-
try {
|
|
54
|
-
token_info = yield (0, exports.get_token_basic_info_from_raydium)(symbol, mint_address);
|
|
55
|
-
}
|
|
56
|
-
catch (err) {
|
|
57
|
-
}
|
|
58
|
-
if (!token_info || (0, dist_1.isEmpty)(token_info.symbol) || (0, dist_1.isEmpty)(token_info.decimals)) {
|
|
59
|
-
try {
|
|
60
|
-
token_info = yield (0, exports.get_token_basic_info_from_jupiter)(symbol, mint_address);
|
|
61
|
-
}
|
|
62
|
-
catch (err) {
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
(0, dist_1.log_debug)(`get_token_basic_info, symbol=${symbol}, mint_address=${mint_address}, success`, token_info);
|
|
66
|
-
return token_info;
|
|
67
|
-
});
|
|
68
|
-
exports.get_token_basic_info = get_token_basic_info;
|
|
69
|
-
const get_token_basic_info_from_jupiter = (symbol, mint_address) => __awaiter(void 0, void 0, void 0, function* () {
|
|
70
|
-
const url = `https://lite-api.jup.ag/tokens/v2/search?query=${mint_address}`;
|
|
71
|
-
try {
|
|
72
|
-
const response = yield axios_1.default.get(url, {
|
|
73
|
-
timeout: 6000,
|
|
74
|
-
httpsAgent: new (require('https').Agent)({ rejectUnauthorized: false })
|
|
75
|
-
});
|
|
76
|
-
const data = response.data[0];
|
|
77
|
-
let token_info = {
|
|
78
|
-
chainId: 101,
|
|
79
|
-
address: mint_address,
|
|
80
|
-
programId: '',
|
|
81
|
-
logoURI: '',
|
|
82
|
-
symbol: symbol,
|
|
83
|
-
name: data.name,
|
|
84
|
-
decimals: data.decimals,
|
|
85
|
-
is_token_2022: (0, util_1.is_token_2022)(''),
|
|
86
|
-
};
|
|
87
|
-
(0, dist_1.log_debug)(`get_token_basic_info_from_jupiter`, { url, symbol, name: token_info.name, decimals: token_info.decimals });
|
|
88
|
-
return token_info;
|
|
89
|
-
}
|
|
90
|
-
catch (err) {
|
|
91
|
-
if ((0, axios_1.isAxiosError)(err)) {
|
|
92
|
-
(0, dist_1.log_warn)(`get_token_basic_info_from_jupiter failed!`, { url, status: err.response.status, message: err.response.data.message });
|
|
93
|
-
}
|
|
94
|
-
else {
|
|
95
|
-
(0, dist_1.log_warn)('get_token_basic_info_from_jupiter error!', err.message);
|
|
96
|
-
}
|
|
97
|
-
throw err;
|
|
98
|
-
}
|
|
99
|
-
});
|
|
100
|
-
exports.get_token_basic_info_from_jupiter = get_token_basic_info_from_jupiter;
|
|
101
|
-
const get_token_basic_info_from_raydium = (symbol, mint_address) => __awaiter(void 0, void 0, void 0, function* () {
|
|
102
|
-
const url = `https://api-v3.raydium.io/mint/ids?mints=${mint_address}`;
|
|
103
|
-
try {
|
|
104
|
-
const response = yield axios_1.default.get(url, {
|
|
105
|
-
timeout: 6000,
|
|
106
|
-
});
|
|
107
|
-
const { id, success, data } = response.data;
|
|
108
|
-
if (!success || !(0, dist_1.isArray)(data) || !data[0]) {
|
|
109
|
-
throw new Error(`url=${url}, res=${JSON.stringify(response.data)}`);
|
|
110
|
-
}
|
|
111
|
-
let _token = data[0];
|
|
112
|
-
let token_info = {
|
|
113
|
-
chainId: 101,
|
|
114
|
-
address: mint_address,
|
|
115
|
-
programId: _token.programId,
|
|
116
|
-
logoURI: '',
|
|
117
|
-
symbol: symbol,
|
|
118
|
-
name: _token.name,
|
|
119
|
-
decimals: _token.decimals,
|
|
120
|
-
is_token_2022: (0, util_1.is_token_2022)(_token.programId),
|
|
121
|
-
authority: ''
|
|
122
|
-
};
|
|
123
|
-
(0, dist_1.log_debug)(`get_token_basic_info_from_raydium`, { url, symbol, name: token_info.name, decimals: token_info.decimals });
|
|
124
|
-
return token_info;
|
|
125
|
-
}
|
|
126
|
-
catch (err) {
|
|
127
|
-
if ((0, axios_1.isAxiosError)(err)) {
|
|
128
|
-
(0, dist_1.log_warn)(`get_token_basic_info_from_raydium failed!`, { url, status: err.response.status, message: err.response.data.message });
|
|
129
|
-
}
|
|
130
|
-
else {
|
|
131
|
-
(0, dist_1.log_warn)('get_token_basic_info_from_raydium error!', err.message);
|
|
132
|
-
}
|
|
133
|
-
throw err;
|
|
134
|
-
}
|
|
135
|
-
});
|
|
136
|
-
exports.get_token_basic_info_from_raydium = get_token_basic_info_from_raydium;
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
import { FormattedTokenPrice } from "./types";
|
|
2
|
-
export declare const get_token_price_info: (mints: string[]) => Promise<Map<string, FormattedTokenPrice>>;
|
|
3
|
-
export declare const get_token_price_info_from_raydium: (mints: string[]) => Promise<Map<string, FormattedTokenPrice>>;
|
|
4
|
-
export declare const get_token_price_info_from_jupiter_v3: (mints: string[]) => Promise<Map<string, FormattedTokenPrice>>;
|
|
5
|
-
export declare const get_token_price_info_from_jupiter_v1: (mints: string[]) => Promise<Map<string, FormattedTokenPrice>>;
|
|
6
|
-
export declare const get_token_price_info_from_coingecko: (mints: string[]) => Promise<Map<string, FormattedTokenPrice>>;
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
-
};
|
|
14
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.get_token_price_info_from_coingecko = exports.get_token_price_info_from_jupiter_v1 = exports.get_token_price_info_from_jupiter_v3 = exports.get_token_price_info_from_raydium = exports.get_token_price_info = void 0;
|
|
16
|
-
const dist_1 = require("@clonegod/ttd-core/dist");
|
|
17
|
-
const axios_1 = __importDefault(require("axios"));
|
|
18
|
-
const get_token_price_info = (mints) => __awaiter(void 0, void 0, void 0, function* () {
|
|
19
|
-
let price_map = yield (0, exports.get_token_price_info_from_raydium)(mints);
|
|
20
|
-
let not_found_arr = mints.filter(address => !price_map.has(address));
|
|
21
|
-
if (not_found_arr.length > 0) {
|
|
22
|
-
let _price_map = yield (0, exports.get_token_price_info_from_jupiter_v3)(not_found_arr);
|
|
23
|
-
for (let [key, value] of _price_map) {
|
|
24
|
-
if (value) {
|
|
25
|
-
price_map.set(key, value);
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
(0, dist_1.log_warn)(`jupiter not found price for mint: ${key}`);
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
not_found_arr = mints.filter(address => !price_map.has(address));
|
|
33
|
-
if (not_found_arr.length > 0) {
|
|
34
|
-
let _price_map = yield (0, exports.get_token_price_info_from_jupiter_v1)(not_found_arr);
|
|
35
|
-
for (let [key, value] of _price_map) {
|
|
36
|
-
if (value) {
|
|
37
|
-
price_map.set(key, value);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
(0, dist_1.log_warn)(`jupiter not found price for mint: ${key}`);
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return price_map;
|
|
45
|
-
});
|
|
46
|
-
exports.get_token_price_info = get_token_price_info;
|
|
47
|
-
const get_token_price_info_from_raydium = (mints) => __awaiter(void 0, void 0, void 0, function* () {
|
|
48
|
-
let price_map = new Map();
|
|
49
|
-
let ids_list = (0, dist_1.chunkArray)(mints, 10);
|
|
50
|
-
for (let ids of ids_list) {
|
|
51
|
-
try {
|
|
52
|
-
let url = `https://api-v3.raydium.io/mint/price?mints=${ids.join(',')}`;
|
|
53
|
-
const { id, success, data } = (yield axios_1.default.get(url)).data;
|
|
54
|
-
(0, dist_1.log_debug)('get_token_price_info_from_raydium, res=', data);
|
|
55
|
-
for (let address of ids) {
|
|
56
|
-
let price = data[address];
|
|
57
|
-
if (price) {
|
|
58
|
-
price_map.set(address, {
|
|
59
|
-
symbol: '',
|
|
60
|
-
address,
|
|
61
|
-
price,
|
|
62
|
-
update_time: (0, dist_1.getCurDateTime)()
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
else {
|
|
66
|
-
(0, dist_1.log_warn)(`get_token_price_info_from_raydium failed! address=${address}, price=${price}`);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
catch (err) {
|
|
71
|
-
(0, dist_1.log_error)(`get_token_price_info_from_raydium error!`, err);
|
|
72
|
-
}
|
|
73
|
-
yield (0, dist_1.sleep)(1000);
|
|
74
|
-
}
|
|
75
|
-
return price_map;
|
|
76
|
-
});
|
|
77
|
-
exports.get_token_price_info_from_raydium = get_token_price_info_from_raydium;
|
|
78
|
-
const get_token_price_info_from_jupiter_v3 = (mints) => __awaiter(void 0, void 0, void 0, function* () {
|
|
79
|
-
let price_map = new Map();
|
|
80
|
-
let ids_list = (0, dist_1.chunkArray)(mints, 10);
|
|
81
|
-
for (let ids of ids_list) {
|
|
82
|
-
try {
|
|
83
|
-
let url = `https://lite-api.jup.ag/price/v3?ids=${ids.join(',')}`;
|
|
84
|
-
const res = (yield axios_1.default.get(url, { headers: { 'Content-Type': 'application/json' } })).data;
|
|
85
|
-
(0, dist_1.log_debug)(`get_token_price_info_from_jupiter_v3, res=`, res);
|
|
86
|
-
let failed_mints = [];
|
|
87
|
-
for (let address of ids) {
|
|
88
|
-
let price_obj = res[address];
|
|
89
|
-
if (!price_obj || !price_obj['usdPrice']) {
|
|
90
|
-
failed_mints.push(address);
|
|
91
|
-
continue;
|
|
92
|
-
}
|
|
93
|
-
let price = price_obj['usdPrice'];
|
|
94
|
-
price_map.set(address, {
|
|
95
|
-
symbol: '',
|
|
96
|
-
address,
|
|
97
|
-
price,
|
|
98
|
-
update_time: (0, dist_1.getCurDateTime)()
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
let failed_count = failed_mints.length;
|
|
102
|
-
if (failed_mints.length > 0) {
|
|
103
|
-
(0, dist_1.log_warn)(`get_token_price_info_from_jupiter_v3 failed! failed_count=${failed_count}, failed_mints: `, failed_mints);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
catch (err) {
|
|
107
|
-
(0, dist_1.log_error)(`get_token_price_info_from_jupiter_v3 error!`, err);
|
|
108
|
-
}
|
|
109
|
-
yield (0, dist_1.sleep)(1000);
|
|
110
|
-
}
|
|
111
|
-
return price_map;
|
|
112
|
-
});
|
|
113
|
-
exports.get_token_price_info_from_jupiter_v3 = get_token_price_info_from_jupiter_v3;
|
|
114
|
-
const get_token_price_info_from_jupiter_v1 = (mints) => __awaiter(void 0, void 0, void 0, function* () {
|
|
115
|
-
let price_map = new Map();
|
|
116
|
-
let ids_list = (0, dist_1.chunkArray)(mints, 10);
|
|
117
|
-
for (let ids of ids_list) {
|
|
118
|
-
try {
|
|
119
|
-
let url = `https://fe-api.jup.ag/api/v1/prices?list_address=${ids.join(',')}`;
|
|
120
|
-
const res = (yield axios_1.default.get(url)).data;
|
|
121
|
-
(0, dist_1.log_debug)(`get_token_price_info_from_jupiter_v1, res=`, res);
|
|
122
|
-
let failed_mints = [];
|
|
123
|
-
for (let address of ids) {
|
|
124
|
-
let price_obj = res.prices;
|
|
125
|
-
if (!price_obj || !price_obj[address]) {
|
|
126
|
-
failed_mints.push(address);
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
let price = price_obj[address];
|
|
130
|
-
price_map.set(address, {
|
|
131
|
-
symbol: '',
|
|
132
|
-
address,
|
|
133
|
-
price,
|
|
134
|
-
update_time: (0, dist_1.getCurDateTime)()
|
|
135
|
-
});
|
|
136
|
-
}
|
|
137
|
-
let failed_count = failed_mints.length;
|
|
138
|
-
if (failed_mints.length > 0) {
|
|
139
|
-
(0, dist_1.log_warn)(`get_token_price_info_from_jupiter_v1 failed! failed_count=${failed_count}, failed_mints: `, failed_mints);
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
catch (err) {
|
|
143
|
-
(0, dist_1.log_error)(`get_token_price_info_from_jupiter_v1 error!`, err);
|
|
144
|
-
}
|
|
145
|
-
yield (0, dist_1.sleep)(1000);
|
|
146
|
-
}
|
|
147
|
-
return price_map;
|
|
148
|
-
});
|
|
149
|
-
exports.get_token_price_info_from_jupiter_v1 = get_token_price_info_from_jupiter_v1;
|
|
150
|
-
const get_token_price_info_from_coingecko = (mints) => __awaiter(void 0, void 0, void 0, function* () {
|
|
151
|
-
let network_id = 'solana';
|
|
152
|
-
let price_map = new Map();
|
|
153
|
-
let ids_list = (0, dist_1.chunkArray)(mints, 10);
|
|
154
|
-
for (let ids of ids_list) {
|
|
155
|
-
try {
|
|
156
|
-
let url = `https://pro-api.coingecko.com/api/v3/onchain/simple/networks/${network_id}/token_price/${ids.join(',')}`;
|
|
157
|
-
const options = {
|
|
158
|
-
method: 'GET',
|
|
159
|
-
headers: { accept: 'application/json', 'x-cg-pro-api-key': process.env.COINGECKO_API_KEY }
|
|
160
|
-
};
|
|
161
|
-
const { id, success, data } = (yield axios_1.default.get(url, options)).data;
|
|
162
|
-
(0, dist_1.log_debug)('get_token_price_info_from_coingecko, res=', data);
|
|
163
|
-
let token_prices = data['attributes']['token_prices'];
|
|
164
|
-
for (let address of ids) {
|
|
165
|
-
let price = token_prices[address];
|
|
166
|
-
if (price) {
|
|
167
|
-
price_map.set(address, {
|
|
168
|
-
symbol: '',
|
|
169
|
-
address,
|
|
170
|
-
price,
|
|
171
|
-
update_time: (0, dist_1.getCurDateTime)()
|
|
172
|
-
});
|
|
173
|
-
}
|
|
174
|
-
else {
|
|
175
|
-
(0, dist_1.log_warn)(`get_token_price_info_from_coingecko failed! address=${address}, price=${price}`);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
catch (err) {
|
|
180
|
-
(0, dist_1.log_error)(`get_token_price_info_from_coingecko error!`, new Error(err.message));
|
|
181
|
-
}
|
|
182
|
-
yield (0, dist_1.sleep)(1000);
|
|
183
|
-
}
|
|
184
|
-
return price_map;
|
|
185
|
-
});
|
|
186
|
-
exports.get_token_price_info_from_coingecko = get_token_price_info_from_coingecko;
|
package/dist/token/index.d.ts
DELETED
package/dist/token/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./types"), exports);
|
|
18
|
-
__exportStar(require("./get_token_info"), exports);
|
|
19
|
-
__exportStar(require("./get_token_price"), exports);
|
|
20
|
-
__exportStar(require("./util"), exports);
|
package/dist/token/types.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
export interface FormattedTokenInfo {
|
|
2
|
-
chainId: number;
|
|
3
|
-
address: string;
|
|
4
|
-
programId: string;
|
|
5
|
-
logoURI: string;
|
|
6
|
-
symbol: string;
|
|
7
|
-
name: string;
|
|
8
|
-
decimals: number;
|
|
9
|
-
is_token_2022: boolean;
|
|
10
|
-
price?: string;
|
|
11
|
-
}
|
|
12
|
-
export interface FormattedTokenPrice {
|
|
13
|
-
symbol: string;
|
|
14
|
-
address: string;
|
|
15
|
-
price: string;
|
|
16
|
-
update_time: string;
|
|
17
|
-
}
|
package/dist/token/types.js
DELETED
package/dist/token/util.d.ts
DELETED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import { StandardTokenInfoType, TokenPriceWithAmountType } from "@clonegod/ttd-core";
|
|
2
|
-
export declare const is_token_2022: (programId: string) => programId is "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb";
|
|
3
|
-
export declare const calculate_token_amount: (token_info: StandardTokenInfoType, value_of_usd?: number) => Promise<TokenPriceWithAmountType>;
|
package/dist/token/util.js
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.calculate_token_amount = exports.is_token_2022 = void 0;
|
|
13
|
-
const dist_1 = require("@clonegod/ttd-core/dist");
|
|
14
|
-
const get_token_price_1 = require("./get_token_price");
|
|
15
|
-
const is_token_2022 = (programId) => {
|
|
16
|
-
return programId === 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb';
|
|
17
|
-
};
|
|
18
|
-
exports.is_token_2022 = is_token_2022;
|
|
19
|
-
const calculate_token_amount = (token_info_1, ...args_1) => __awaiter(void 0, [token_info_1, ...args_1], void 0, function* (token_info, value_of_usd = 100) {
|
|
20
|
-
var _a;
|
|
21
|
-
let out;
|
|
22
|
-
let { market_price } = token_info;
|
|
23
|
-
if (!market_price) {
|
|
24
|
-
let address = token_info.address;
|
|
25
|
-
let price_map = yield (0, get_token_price_1.get_token_price_info)([address]);
|
|
26
|
-
market_price = (_a = price_map.get(address)) === null || _a === void 0 ? void 0 : _a.price;
|
|
27
|
-
}
|
|
28
|
-
if (market_price) {
|
|
29
|
-
out = (0, dist_1.calc_amount_in_token)(value_of_usd, market_price, token_info);
|
|
30
|
-
}
|
|
31
|
-
return out;
|
|
32
|
-
});
|
|
33
|
-
exports.calculate_token_amount = calculate_token_amount;
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { AppConfig } from "../appconfig";
|
|
2
|
-
import { AbastrcatTrade } from "./abstract_trade";
|
|
3
|
-
export declare const try_lock_order_msg: (appConfig: AppConfig, order_msg: any) => Promise<boolean>;
|
|
4
|
-
export declare const handle_order_message: (appConfig: AppConfig, trade: AbastrcatTrade, message: string) => Promise<void>;
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.handle_order_message = exports.try_lock_order_msg = void 0;
|
|
13
|
-
const dist_1 = require("@clonegod/ttd-core/dist");
|
|
14
|
-
const common_1 = require("../common");
|
|
15
|
-
const tx_result_check_1 = require("./tx_result_check");
|
|
16
|
-
const check_parse_order_msg = (appConfig, order_msg) => __awaiter(void 0, void 0, void 0, function* () {
|
|
17
|
-
let { unique_orderbook_id, price_id, group_id, unique_order_msg_id } = order_msg;
|
|
18
|
-
const runtime_group_id = appConfig.trade_runtime.group.id;
|
|
19
|
-
if (group_id !== runtime_group_id) {
|
|
20
|
-
throw new Error(`group_id not match!!! ${(0, dist_1.to_json_str)({ group_id, runtime_group_id })}`);
|
|
21
|
-
}
|
|
22
|
-
if ((0, dist_1.isEmpty)(unique_order_msg_id)) {
|
|
23
|
-
throw new Error(`unique_order_msg_id is empty or null! unique_order_msg_id=${unique_order_msg_id}`);
|
|
24
|
-
}
|
|
25
|
-
let price_msg = yield appConfig.arb_cache.get_price_message(price_id);
|
|
26
|
-
if ((0, dist_1.isEmpty)(price_msg)) {
|
|
27
|
-
throw new Error(`price_msg not found in the cache! price_id=${price_id}`);
|
|
28
|
-
}
|
|
29
|
-
let id_parts = (0, dist_1.parse_unique_orderbook_id)(unique_orderbook_id);
|
|
30
|
-
if (id_parts.dex_id != price_msg.dex_id ||
|
|
31
|
-
id_parts.pool_id != price_msg.pool_id) {
|
|
32
|
-
(0, dist_1.log_warn)(`check data: order_msg VS price_msg, not match!!!`, {
|
|
33
|
-
order_msg,
|
|
34
|
-
uinique_orderbook: id_parts,
|
|
35
|
-
price_msg,
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
return {
|
|
39
|
-
price_msg,
|
|
40
|
-
id_parts
|
|
41
|
-
};
|
|
42
|
-
});
|
|
43
|
-
const try_lock_order_msg = (appConfig, order_msg) => __awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
-
let { chain_id, group_id, price_id, order_trace_id } = order_msg;
|
|
45
|
-
let lock_order_key = (0, dist_1.format_order_lock_key)(chain_id, group_id, price_id, order_trace_id);
|
|
46
|
-
(0, dist_1.log_info)(`try_lock_order_msg, key=${lock_order_key}`);
|
|
47
|
-
let is_lock_success = yield appConfig.arb_cache.redis_cmd.set_nx(lock_order_key, '');
|
|
48
|
-
if (is_lock_success) {
|
|
49
|
-
(0, dist_1.log_info)(`try_lock_order_msg, key=${lock_order_key}, success`);
|
|
50
|
-
appConfig.arb_cache.redis_cmd.expire(lock_order_key, 60)
|
|
51
|
-
.then(res => (0, dist_1.log_trace)(`expire lock: key=${lock_order_key}, success`))
|
|
52
|
-
.catch(err => (0, dist_1.log_error)(`expire lock: key=${lock_order_key}, error!`, err));
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
(0, dist_1.log_info)(`try_lock_order_msg, key=${lock_order_key}, acquire lock failed!`);
|
|
56
|
-
}
|
|
57
|
-
return is_lock_success;
|
|
58
|
-
});
|
|
59
|
-
exports.try_lock_order_msg = try_lock_order_msg;
|
|
60
|
-
const handle_order_message = (appConfig, trade, message) => __awaiter(void 0, void 0, void 0, function* () {
|
|
61
|
-
(0, dist_1.new_line)(3);
|
|
62
|
-
console.log(`=================================================================================`);
|
|
63
|
-
console.log(`| NEW ORDER MESSAGE |`);
|
|
64
|
-
console.log(`=================================================================================`);
|
|
65
|
-
(0, dist_1.log_info)(`handle_order_message, on message: `, message);
|
|
66
|
-
let order_event_message = JSON.parse(message);
|
|
67
|
-
if (dist_1.LOG.debug) {
|
|
68
|
-
(0, dist_1.log_debug)(`order_event_msg`, order_event_message);
|
|
69
|
-
}
|
|
70
|
-
let { event_time, event_type, group_id, data: order_msg } = order_event_message;
|
|
71
|
-
let { price_msg, id_parts } = yield check_parse_order_msg(appConfig, order_msg);
|
|
72
|
-
let { order_trace_id } = order_msg;
|
|
73
|
-
let { chain_id, dex_id, pool_id, fee_rate } = id_parts;
|
|
74
|
-
if (process.env.ENABLE_MULTIPLE_PROCESS === 'true') {
|
|
75
|
-
let lock_order = yield (0, exports.try_lock_order_msg)(appConfig, order_msg);
|
|
76
|
-
if (!lock_order) {
|
|
77
|
-
(0, dist_1.log_warn)(`try lock order failed!`, {
|
|
78
|
-
chain_id, group_id, order_trace_id
|
|
79
|
-
});
|
|
80
|
-
return;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
let context;
|
|
84
|
-
let txid = '';
|
|
85
|
-
let order_submit_result;
|
|
86
|
-
try {
|
|
87
|
-
context = new common_1.TradeContext(price_msg, order_msg);
|
|
88
|
-
let { env_args } = appConfig;
|
|
89
|
-
yield context.init(appConfig);
|
|
90
|
-
txid = yield trade.execute(context);
|
|
91
|
-
order_msg.order_submit_time = Date.now();
|
|
92
|
-
order_submit_result = {
|
|
93
|
-
success: true,
|
|
94
|
-
msg: 'SUCCESS',
|
|
95
|
-
txid
|
|
96
|
-
};
|
|
97
|
-
global.event_emitter = appConfig;
|
|
98
|
-
new tx_result_check_1.TransactionResultChecker(env_args, appConfig, context, txid).init_tx_status().check();
|
|
99
|
-
appConfig.subscribe_wallet_raw_txn_event();
|
|
100
|
-
}
|
|
101
|
-
catch (err) {
|
|
102
|
-
(0, dist_1.log_error)(`handle_order_message error!`, err);
|
|
103
|
-
order_submit_result = {
|
|
104
|
-
success: false,
|
|
105
|
-
msg: (err === null || err === void 0 ? void 0 : err.message) || 'FAILED',
|
|
106
|
-
txid
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
finally {
|
|
110
|
-
appConfig.arb_cache.cache_order_message(Object.assign(Object.assign({}, order_msg), { order_submit_result })).then(res => {
|
|
111
|
-
(0, dist_1.log_info)(`cache order submit result, success`, { order_msg, order_submit_result, res });
|
|
112
|
-
}).catch(err => {
|
|
113
|
-
(0, dist_1.log_warn)('cache order submit result, error!', { order_msg, order_submit_result, err });
|
|
114
|
-
console.log(err);
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
});
|
|
118
|
-
exports.handle_order_message = handle_order_message;
|
package/dist/trade/index.d.ts
DELETED
package/dist/trade/index.js
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./abstract_trade"), exports);
|
|
18
|
-
__exportStar(require("./tx_result_check"), exports);
|
|
19
|
-
__exportStar(require("./tx_result_parse"), exports);
|
|
20
|
-
__exportStar(require("./handle_order_message"), exports);
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import { OrderMessageType, PriceMessageType, StandardPoolInfoType, TradeResultType } from "@clonegod/ttd-core";
|
|
2
|
-
import { Connection, PublicKey } from "@solana/web3.js";
|
|
3
|
-
import { EventEmitter } from 'events';
|
|
4
|
-
import { StandardSwapDetailType } from "../../types";
|
|
5
|
-
import { TradeContext } from "../common/context";
|
|
6
|
-
import { TransactionResultParser } from "./tx_result_parse";
|
|
7
|
-
export declare class TransactionResultChecker {
|
|
8
|
-
env_args: any;
|
|
9
|
-
event_emitter: EventEmitter;
|
|
10
|
-
connection: Connection;
|
|
11
|
-
wallet: PublicKey;
|
|
12
|
-
context: TradeContext;
|
|
13
|
-
group_id: string;
|
|
14
|
-
txid: string;
|
|
15
|
-
trace_id: string;
|
|
16
|
-
price_msg: PriceMessageType;
|
|
17
|
-
order_msg: OrderMessageType;
|
|
18
|
-
pool_info: StandardPoolInfoType;
|
|
19
|
-
intervalId: any;
|
|
20
|
-
check_count: number;
|
|
21
|
-
transactionParser: TransactionResultParser;
|
|
22
|
-
trade_result_already_processed: boolean;
|
|
23
|
-
constructor(env_args: any, event_emitter: EventEmitter, context: TradeContext, txid: string);
|
|
24
|
-
init_tx_status(): this;
|
|
25
|
-
check(): Promise<void>;
|
|
26
|
-
on_subscibe_transaction(): void;
|
|
27
|
-
check_tx_result_interval(): Promise<void>;
|
|
28
|
-
map_swap_result_to_tx_result(swap_result: StandardSwapDetailType): TradeResultType;
|
|
29
|
-
}
|