1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const config_1 = require("./config");
|
4 | const accounts_1 = require("./accounts");
|
5 | const utils_1 = require("../lib/utils");
|
6 | const DEFAULT_BACKEND = 'one-to-one';
|
7 | class RateBackend {
|
8 | constructor(deps) {
|
9 | const config = deps(config_1.default);
|
10 | this.accounts = deps(accounts_1.default);
|
11 | const Backend = utils_1.loadModuleOfType('backend', config.backend || DEFAULT_BACKEND);
|
12 | this.backend = new Backend(Object.assign({
|
13 | spread: config.spread
|
14 | }, config.backendConfig), {
|
15 | getInfo: (account) => this.accounts.getInfo(account),
|
16 | accounts: this.accounts
|
17 | });
|
18 | }
|
19 | connect() {
|
20 | return this.backend.connect();
|
21 | }
|
22 | getRate(sourceAccount, destinationAccount) {
|
23 | return this.backend.getRate(sourceAccount, destinationAccount);
|
24 | }
|
25 | submitPayment(params) {
|
26 | return this.backend.submitPayment(params);
|
27 | }
|
28 | submitPacket(params) {
|
29 | if (this.backend.submitPacket) {
|
30 | return this.backend.submitPacket(params);
|
31 | }
|
32 | return Promise.resolve();
|
33 | }
|
34 | async getStatus() {
|
35 | const rates = {};
|
36 | const accountIds = this.accounts.getAccountIds();
|
37 | for (const srcAccount of accountIds) {
|
38 | const accountRates = rates[srcAccount] = {};
|
39 | for (const dstAccount of accountIds) {
|
40 | if (srcAccount === dstAccount)
|
41 | continue;
|
42 | accountRates[dstAccount] = await this.backend.getRate(srcAccount, dstAccount);
|
43 | }
|
44 | }
|
45 | return rates;
|
46 | }
|
47 | }
|
48 | exports.default = RateBackend;
|
49 |
|
\ | No newline at end of file |