@clonegod/ttd-sol-common 1.0.37 → 1.0.38
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/appconfig/app_config.d.ts +22 -0
- package/dist/appconfig/app_config.js +90 -0
- package/dist/appconfig/env_args.d.ts +14 -0
- package/dist/appconfig/env_args.js +25 -0
- package/dist/appconfig/index.d.ts +2 -0
- package/dist/appconfig/index.js +18 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/trade/handle_order_message.d.ts +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { ArbCache, ArbEventSubscriber, TradeResponseType, TradeRuntimeType } from "@clonegod/ttd-common";
|
|
3
|
+
import { EventEmitter } from 'events';
|
|
4
|
+
import { Connection, Keypair } from "@solana/web3.js";
|
|
5
|
+
import { EnvArgs } from "./env_args";
|
|
6
|
+
import { AbastrcatTrade } from "../trade";
|
|
7
|
+
export declare class AppConfig extends EventEmitter {
|
|
8
|
+
env_args: EnvArgs;
|
|
9
|
+
app_full_name: string;
|
|
10
|
+
arb_cache: ArbCache;
|
|
11
|
+
arb_event_subscriber: ArbEventSubscriber;
|
|
12
|
+
query_token_market_price_url: string;
|
|
13
|
+
trade_runtime: TradeRuntimeType;
|
|
14
|
+
connection: Connection;
|
|
15
|
+
keypair: Keypair;
|
|
16
|
+
constructor();
|
|
17
|
+
init(): Promise<void>;
|
|
18
|
+
init_trade_runtime(): Promise<void>;
|
|
19
|
+
subscribe_config_change(): Promise<void>;
|
|
20
|
+
subscribe_order_event(trade_instance: AbastrcatTrade): Promise<void>;
|
|
21
|
+
cache_trade_result(trade_response: TradeResponseType): Promise<void>;
|
|
22
|
+
}
|
|
@@ -0,0 +1,90 @@
|
|
|
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.AppConfig = void 0;
|
|
16
|
+
const dist_1 = require("@clonegod/ttd-common/dist");
|
|
17
|
+
const events_1 = require("events");
|
|
18
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
19
|
+
const bs58_1 = __importDefault(require("bs58"));
|
|
20
|
+
const env_args_1 = require("./env_args");
|
|
21
|
+
const common_1 = require("../common");
|
|
22
|
+
const trade_1 = require("../trade");
|
|
23
|
+
class AppConfig extends events_1.EventEmitter {
|
|
24
|
+
constructor() {
|
|
25
|
+
super();
|
|
26
|
+
this.env_args = new env_args_1.EnvArgs();
|
|
27
|
+
let { chain_id, app_name } = this.env_args;
|
|
28
|
+
this.app_full_name = app_name;
|
|
29
|
+
}
|
|
30
|
+
init() {
|
|
31
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
32
|
+
this.arb_cache = (0, dist_1.getArbCache)(this.env_args);
|
|
33
|
+
yield this.arb_cache.init();
|
|
34
|
+
this.arb_cache.listen_trade_result(this);
|
|
35
|
+
this.connection = new web3_js_1.Connection(this.env_args.quicknode_endpoint, {
|
|
36
|
+
commitment: common_1.COMMITMENT_LEVEL.CONFIRMED,
|
|
37
|
+
});
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
init_trade_runtime() {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
try {
|
|
43
|
+
let { chain_id, input_group_id, input_dex_id, input_pair } = this.env_args.trade_cmd_args;
|
|
44
|
+
this.trade_runtime = yield this.arb_cache.create_trade_runtime(chain_id, input_group_id, input_dex_id, input_pair);
|
|
45
|
+
let secret_key = new Uint8Array(bs58_1.default.decode(this.trade_runtime.wallet.private_key));
|
|
46
|
+
this.keypair = web3_js_1.Keypair.fromSecretKey(secret_key);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
(0, dist_1.log_error)(`create_trade_runtime error!`, err);
|
|
50
|
+
yield (0, dist_1.sleep)(1000);
|
|
51
|
+
process.exit(0);
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
subscribe_config_change() {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
this.arb_event_subscriber = (0, dist_1.getArbEventSubscriber)(this.arb_cache);
|
|
58
|
+
yield this.arb_event_subscriber.pre_load_config_cache();
|
|
59
|
+
const refresh_trade_runtime = (is_sussess, event) => __awaiter(this, void 0, void 0, function* () {
|
|
60
|
+
(0, dist_1.log_info)(`subscribe_config_change_event, callback`, { is_sussess, event });
|
|
61
|
+
if (event.event_type === dist_1.REDIS_EVENT_TYPE_CONFIG_CHANGE.GROUP_CONFIG_CHANGE) {
|
|
62
|
+
this.trade_runtime = yield this.arb_cache.create_trade_runtime(this.trade_runtime.chain_id, this.trade_runtime.group.id, this.trade_runtime.dex_id, this.trade_runtime.pair_name);
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
yield this.arb_event_subscriber.subscribe_config_change_event(refresh_trade_runtime);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
subscribe_order_event(trade_instance) {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
let handler = (message) => (0, trade_1.handle_order_message)(this, trade_instance, message);
|
|
71
|
+
let group_id = this.trade_runtime.group.id;
|
|
72
|
+
let pair_name = this.trade_runtime.pair_name;
|
|
73
|
+
let dex_id = this.trade_runtime.dex_id;
|
|
74
|
+
yield this.arb_event_subscriber.subscribe_order_event(group_id, pair_name, dex_id, handler);
|
|
75
|
+
(0, dist_1.log_info)(`subscribe_order_event, success`, { dex_id, group_id, pair_name });
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
cache_trade_result(trade_response) {
|
|
79
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
80
|
+
try {
|
|
81
|
+
(0, dist_1.log_info)(`cache_trade_result`, trade_response);
|
|
82
|
+
yield this.arb_cache.cache_trade_result(trade_response);
|
|
83
|
+
}
|
|
84
|
+
catch (err) {
|
|
85
|
+
(0, dist_1.log_error)(`cache_trade_result error!`, err);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
exports.AppConfig = AppConfig;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { TradeCommandLineArgs } from "@clonegod/ttd-common";
|
|
2
|
+
import { CHAIN_ID } from "@clonegod/ttd-common/dist";
|
|
3
|
+
export declare class EnvArgs {
|
|
4
|
+
chain_id: CHAIN_ID;
|
|
5
|
+
dex_id_list: string[];
|
|
6
|
+
app_name: string;
|
|
7
|
+
redis_host: string;
|
|
8
|
+
redis_port: string;
|
|
9
|
+
quicknode_endpoint: string;
|
|
10
|
+
helius_api_key: string;
|
|
11
|
+
trade_cmd_args: TradeCommandLineArgs;
|
|
12
|
+
constructor();
|
|
13
|
+
init(): void;
|
|
14
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EnvArgs = void 0;
|
|
4
|
+
const dist_1 = require("@clonegod/ttd-common/dist");
|
|
5
|
+
class EnvArgs {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.init();
|
|
8
|
+
}
|
|
9
|
+
init() {
|
|
10
|
+
this.trade_cmd_args = (0, dist_1.parse_trade_cmdline_args)();
|
|
11
|
+
let { input_pair, input_dex_id, input_group_id } = this.trade_cmd_args;
|
|
12
|
+
this.app_name = `${input_pair}_${input_dex_id}_${input_group_id}`;
|
|
13
|
+
this.chain_id = process.env.CHAIN_ID.toUpperCase();
|
|
14
|
+
if ((0, dist_1.isEmpty)(this.chain_id)) {
|
|
15
|
+
throw new Error(`environment: CHAIN_ID is empty!!!`);
|
|
16
|
+
}
|
|
17
|
+
this.dex_id_list = [process.env.INPUT_DEX_ID];
|
|
18
|
+
this.redis_host = process.env.REDIS_HOST;
|
|
19
|
+
this.redis_port = process.env.REDIS_PORT;
|
|
20
|
+
this.quicknode_endpoint = process.env.QUICKNODE_ENDPOINT;
|
|
21
|
+
this.helius_api_key = process.env.HELIUS_API_KEY;
|
|
22
|
+
(0, dist_1.log_info)('Env args init finish', this);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.EnvArgs = EnvArgs;
|
|
@@ -0,0 +1,18 @@
|
|
|
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("./app_config"), exports);
|
|
18
|
+
__exportStar(require("./env_args"), exports);
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -15,7 +15,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./common"), exports);
|
|
18
|
-
__exportStar(require("./
|
|
18
|
+
__exportStar(require("./appconfig"), exports);
|
|
19
19
|
__exportStar(require("./helius_geyser_ws"), exports);
|
|
20
20
|
__exportStar(require("./send_tx"), exports);
|
|
21
21
|
__exportStar(require("./trade"), exports);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AppConfig } from "../
|
|
1
|
+
import { AppConfig } from "../appconfig";
|
|
2
2
|
import { AbastrcatTrade } from "./abstract_trade";
|
|
3
3
|
export declare const try_lock_order_msg: (appConfig: AppConfig, order_msg: any) => Promise<boolean>;
|
|
4
4
|
export declare const handle_order_message: (appConfig: AppConfig, trade: AbastrcatTrade, message: string) => Promise<void>;
|