@riocrypto/common-server 1.0.2808 → 1.0.2810
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/build/clients/cluster-client.d.ts +3 -1
- package/build/clients/cluster-client.js +13 -2
- package/build/clients/fireblocks-client.d.ts +2 -1
- package/build/clients/fireblocks-client.js +14 -0
- package/build/helpers/find-user-tier-forward-curve-rate.d.ts +7 -1
- package/build/helpers/find-user-tier-forward-curve-rate.js +9 -2
- package/build/helpers/get-resolved-forward-curve-tiers.d.ts +4 -2
- package/build/helpers/get-resolved-forward-curve-tiers.js +11 -5
- package/build/helpers/resolve-forward-curve-rate.d.ts +8 -2
- package/build/helpers/resolve-forward-curve-rate.js +12 -3
- package/build/models/fireblocks-transfer.d.ts +4 -0
- package/build/models/fireblocks-transfer.js +6 -0
- package/build/models/rio-settings.d.ts +27 -1
- package/build/models/rio-settings.js +9 -0
- package/build/models/twap-session.d.ts +10 -0
- package/build/models/twap-session.js +10 -0
- package/build/models/twap-settlement.d.ts +2 -0
- package/build/models/twap-settlement.js +3 -0
- package/build/models/user.js +24 -0
- package/package.json +2 -2
|
@@ -230,11 +230,13 @@ declare class ClusterClient {
|
|
|
230
230
|
twoWaySettlementDateOffset?: number;
|
|
231
231
|
}): Promise<TWAPSession>;
|
|
232
232
|
stopTWAPSession(id: string): Promise<void>;
|
|
233
|
-
getUserTWAPSettings({ userId, country, fiat, side, }: {
|
|
233
|
+
getUserTWAPSettings({ userId, country, fiat, side, twoWaySettlementType, twoWaySettlementDateOffset, }: {
|
|
234
234
|
userId: string;
|
|
235
235
|
country: Country;
|
|
236
236
|
fiat: Fiat;
|
|
237
237
|
side: Side;
|
|
238
|
+
twoWaySettlementType?: TwoWaySettlementType;
|
|
239
|
+
twoWaySettlementDateOffset?: number;
|
|
238
240
|
}): Promise<{
|
|
239
241
|
spread: number;
|
|
240
242
|
minClipSize: number;
|
|
@@ -802,9 +802,20 @@ class ClusterClient {
|
|
|
802
802
|
yield this.axios.post(`${this.baseUrl}/api/twap/sessions/${id}/stop`, {}, { headers: { "x-cluster-api-key": this.clusterApiKey } });
|
|
803
803
|
});
|
|
804
804
|
}
|
|
805
|
-
getUserTWAPSettings({ userId, country, fiat, side, }) {
|
|
805
|
+
getUserTWAPSettings({ userId, country, fiat, side, twoWaySettlementType, twoWaySettlementDateOffset, }) {
|
|
806
806
|
return __awaiter(this, void 0, void 0, function* () {
|
|
807
|
-
const
|
|
807
|
+
const params = new URLSearchParams({
|
|
808
|
+
country,
|
|
809
|
+
fiat,
|
|
810
|
+
side,
|
|
811
|
+
});
|
|
812
|
+
if (twoWaySettlementType !== undefined) {
|
|
813
|
+
params.set("twoWaySettlementType", twoWaySettlementType);
|
|
814
|
+
}
|
|
815
|
+
if (twoWaySettlementDateOffset !== undefined) {
|
|
816
|
+
params.set("twoWaySettlementDateOffset", String(twoWaySettlementDateOffset));
|
|
817
|
+
}
|
|
818
|
+
const response = yield this.axios.get(`${this.baseUrl}/api/users/${userId}/TWAP/settings?${params.toString()}`, { headers: { "x-cluster-api-key": this.clusterApiKey } });
|
|
808
819
|
return response.data;
|
|
809
820
|
});
|
|
810
821
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ExchangeResponse, FireblocksSDK, VaultAccountResponse } from "fireblocks-sdk";
|
|
1
|
+
import { ExchangeResponse, FireblocksSDK, TransactionResponse, VaultAccountResponse } from "fireblocks-sdk";
|
|
2
2
|
import { Crypto } from "@riocrypto/common";
|
|
3
3
|
export declare class FireblocksApiError extends Error {
|
|
4
4
|
readonly endpoint: string;
|
|
@@ -37,6 +37,7 @@ declare class FireblocksClient {
|
|
|
37
37
|
notes?: string;
|
|
38
38
|
memo?: string;
|
|
39
39
|
}): Promise<string>;
|
|
40
|
+
getTransactionByExternalTxId(externalTxId: string): Promise<TransactionResponse | null>;
|
|
40
41
|
getVaultCryptoBalance(vaultId: string, crypto: Crypto): Promise<number>;
|
|
41
42
|
getVaultAccount(vaultId: string): Promise<VaultAccountResponse>;
|
|
42
43
|
getExchangeAccount(exchangeId: string): Promise<ExchangeResponse>;
|
|
@@ -173,6 +173,20 @@ class FireblocksClient {
|
|
|
173
173
|
return response.id;
|
|
174
174
|
});
|
|
175
175
|
}
|
|
176
|
+
getTransactionByExternalTxId(externalTxId) {
|
|
177
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
178
|
+
try {
|
|
179
|
+
return yield this.fireblocks.getTransactionByExternalTxId(externalTxId);
|
|
180
|
+
}
|
|
181
|
+
catch (error) {
|
|
182
|
+
const statusCode = error === null || error === void 0 ? void 0 : error.statusCode;
|
|
183
|
+
if (statusCode === 404) {
|
|
184
|
+
return null;
|
|
185
|
+
}
|
|
186
|
+
throw error;
|
|
187
|
+
}
|
|
188
|
+
});
|
|
189
|
+
}
|
|
176
190
|
getVaultCryptoBalance(vaultId, crypto) {
|
|
177
191
|
return __awaiter(this, void 0, void 0, function* () {
|
|
178
192
|
try {
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Country, Side, User } from "@riocrypto/common";
|
|
2
|
+
export type ForwardCurveKind = "regular" | "twap";
|
|
2
3
|
/**
|
|
3
4
|
* Walks the user's tier ranges from the current tier (matched by amount)
|
|
4
5
|
* down to lower tiers, returning the first defined interpolated rate.
|
|
@@ -7,11 +8,16 @@ import { Country, Side, User } from "@riocrypto/common";
|
|
|
7
8
|
* forward curve omits a day can still inherit from a lower tier with a more
|
|
8
9
|
* complete curve. Returns undefined if no tier matches the amount or no
|
|
9
10
|
* tier contains the requested day.
|
|
11
|
+
*
|
|
12
|
+
* `kind` selects which curve on the tier is consulted: the regular order
|
|
13
|
+
* forward curve (`twoWaySettlementDateOffsetFee`) or the TWAP forward curve
|
|
14
|
+
* (`TWAPTwoWaySettlementDateOffsetFee`).
|
|
10
15
|
*/
|
|
11
|
-
export declare const findUserTierForwardCurveRate: ({ user, country, side, amount, day, }: {
|
|
16
|
+
export declare const findUserTierForwardCurveRate: ({ user, country, side, amount, day, kind, }: {
|
|
12
17
|
user: User | undefined | null;
|
|
13
18
|
country: Country;
|
|
14
19
|
side: Side;
|
|
15
20
|
amount: number;
|
|
16
21
|
day: number;
|
|
22
|
+
kind?: ForwardCurveKind | undefined;
|
|
17
23
|
}) => number | undefined;
|
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.findUserTierForwardCurveRate = void 0;
|
|
4
4
|
const interpolate_forward_curve_rate_1 = require("./interpolate-forward-curve-rate");
|
|
5
|
+
const getRangeCurve = (range, kind) => kind === "twap"
|
|
6
|
+
? range.TWAPTwoWaySettlementDateOffsetFee
|
|
7
|
+
: range.twoWaySettlementDateOffsetFee;
|
|
5
8
|
/**
|
|
6
9
|
* Walks the user's tier ranges from the current tier (matched by amount)
|
|
7
10
|
* down to lower tiers, returning the first defined interpolated rate.
|
|
@@ -10,8 +13,12 @@ const interpolate_forward_curve_rate_1 = require("./interpolate-forward-curve-ra
|
|
|
10
13
|
* forward curve omits a day can still inherit from a lower tier with a more
|
|
11
14
|
* complete curve. Returns undefined if no tier matches the amount or no
|
|
12
15
|
* tier contains the requested day.
|
|
16
|
+
*
|
|
17
|
+
* `kind` selects which curve on the tier is consulted: the regular order
|
|
18
|
+
* forward curve (`twoWaySettlementDateOffsetFee`) or the TWAP forward curve
|
|
19
|
+
* (`TWAPTwoWaySettlementDateOffsetFee`).
|
|
13
20
|
*/
|
|
14
|
-
const findUserTierForwardCurveRate = ({ user, country, side, amount, day, }) => {
|
|
21
|
+
const findUserTierForwardCurveRate = ({ user, country, side, amount, day, kind = "regular", }) => {
|
|
15
22
|
var _a, _b;
|
|
16
23
|
const ranges = (_b = (_a = user === null || user === void 0 ? void 0 : user.platformFeeRanges) === null || _a === void 0 ? void 0 : _a[country]) === null || _b === void 0 ? void 0 : _b[side];
|
|
17
24
|
if (!ranges || ranges.length === 0)
|
|
@@ -33,7 +40,7 @@ const findUserTierForwardCurveRate = ({ user, country, side, amount, day, }) =>
|
|
|
33
40
|
if (currentRangeIndex === -1)
|
|
34
41
|
return undefined;
|
|
35
42
|
for (let i = currentRangeIndex; i >= 0; i--) {
|
|
36
|
-
const rate = (0, interpolate_forward_curve_rate_1.interpolateForwardCurveRate)(sorted[i]
|
|
43
|
+
const rate = (0, interpolate_forward_curve_rate_1.interpolateForwardCurveRate)(getRangeCurve(sorted[i], kind), day);
|
|
37
44
|
if (rate !== undefined)
|
|
38
45
|
return rate;
|
|
39
46
|
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Country, RioSettings, Side, User } from "@riocrypto/common";
|
|
2
|
+
import { ForwardCurveKind } from "./find-user-tier-forward-curve-rate";
|
|
2
3
|
export type ResolvedForwardCurveTier = {
|
|
3
4
|
min: number;
|
|
4
5
|
max: number;
|
|
@@ -26,10 +27,11 @@ export type ResolvedForwardCurveTier = {
|
|
|
26
27
|
* can then linearly interpolate between anchors to render a single
|
|
27
28
|
* continuous line.
|
|
28
29
|
*/
|
|
29
|
-
export declare const getResolvedForwardCurveTiers: ({ user, broker, country, side, rioSettings, }: {
|
|
30
|
+
export declare const getResolvedForwardCurveTiers: ({ user, broker, country, side, rioSettings, kind, }: {
|
|
30
31
|
user: User;
|
|
31
32
|
broker?: User | null | undefined;
|
|
32
33
|
country: Country;
|
|
33
34
|
side: Side;
|
|
34
|
-
rioSettings: Pick<RioSettings, "defaultTwoWaySettlementDateOffsetFee">;
|
|
35
|
+
rioSettings: Pick<RioSettings, "defaultTwoWaySettlementDateOffsetFee" | "defaultTWAPTwoWaySettlementDateOffsetFee">;
|
|
36
|
+
kind?: ForwardCurveKind | undefined;
|
|
35
37
|
}) => ResolvedForwardCurveTier[];
|
|
@@ -12,11 +12,13 @@ const resolve_forward_curve_rate_1 = require("./resolve-forward-curve-rate");
|
|
|
12
12
|
* can then linearly interpolate between anchors to render a single
|
|
13
13
|
* continuous line.
|
|
14
14
|
*/
|
|
15
|
-
const getResolvedForwardCurveTiers = ({ user, broker, country, side, rioSettings, }) => {
|
|
16
|
-
var _a, _b, _c, _d, _e, _f;
|
|
15
|
+
const getResolvedForwardCurveTiers = ({ user, broker, country, side, rioSettings, kind = "regular", }) => {
|
|
16
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
17
17
|
const userRanges = (_b = (_a = user.platformFeeRanges) === null || _a === void 0 ? void 0 : _a[country]) === null || _b === void 0 ? void 0 : _b[side];
|
|
18
18
|
const brokerRanges = (_d = (_c = broker === null || broker === void 0 ? void 0 : broker.platformFeeRanges) === null || _c === void 0 ? void 0 : _c[country]) === null || _d === void 0 ? void 0 : _d[side];
|
|
19
|
-
const platformCurve =
|
|
19
|
+
const platformCurve = kind === "twap"
|
|
20
|
+
? (_f = (_e = rioSettings.defaultTWAPTwoWaySettlementDateOffsetFee) === null || _e === void 0 ? void 0 : _e[country]) === null || _f === void 0 ? void 0 : _f[side]
|
|
21
|
+
: (_h = (_g = rioSettings.defaultTwoWaySettlementDateOffsetFee) === null || _g === void 0 ? void 0 : _g[country]) === null || _h === void 0 ? void 0 : _h[side];
|
|
20
22
|
let tiers = [];
|
|
21
23
|
if (userRanges && userRanges.length > 0) {
|
|
22
24
|
tiers = [...userRanges]
|
|
@@ -38,15 +40,18 @@ const getResolvedForwardCurveTiers = ({ user, broker, country, side, rioSettings
|
|
|
38
40
|
.map((k) => Number(k))
|
|
39
41
|
.filter((d) => Number.isFinite(d));
|
|
40
42
|
};
|
|
43
|
+
const pickRangeCurve = (range) => kind === "twap"
|
|
44
|
+
? range.TWAPTwoWaySettlementDateOffsetFee
|
|
45
|
+
: range.twoWaySettlementDateOffsetFee;
|
|
41
46
|
const anchorDays = new Set();
|
|
42
47
|
if (userRanges) {
|
|
43
48
|
for (const r of userRanges) {
|
|
44
|
-
collectDays(r
|
|
49
|
+
collectDays(pickRangeCurve(r)).forEach((d) => anchorDays.add(d));
|
|
45
50
|
}
|
|
46
51
|
}
|
|
47
52
|
if (brokerRanges) {
|
|
48
53
|
for (const r of brokerRanges) {
|
|
49
|
-
collectDays(r
|
|
54
|
+
collectDays(pickRangeCurve(r)).forEach((d) => anchorDays.add(d));
|
|
50
55
|
}
|
|
51
56
|
}
|
|
52
57
|
collectDays(platformCurve).forEach((d) => anchorDays.add(d));
|
|
@@ -68,6 +73,7 @@ const getResolvedForwardCurveTiers = ({ user, broker, country, side, rioSettings
|
|
|
68
73
|
amount: sampleAmount,
|
|
69
74
|
day,
|
|
70
75
|
rioSettings,
|
|
76
|
+
kind,
|
|
71
77
|
});
|
|
72
78
|
if (rate !== undefined)
|
|
73
79
|
curve[String(day)] = rate;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Country, RioSettings, Side, User } from "@riocrypto/common";
|
|
2
|
+
import { ForwardCurveKind } from "./find-user-tier-forward-curve-rate";
|
|
2
3
|
/**
|
|
3
4
|
* Resolves the effective two-way-settlement-date-offset rate at a given day,
|
|
4
5
|
* walking the full fallback chain:
|
|
@@ -6,14 +7,19 @@ import { Country, RioSettings, Side, User } from "@riocrypto/common";
|
|
|
6
7
|
* 2. broker parent's tier curves (same logic applied to broker)
|
|
7
8
|
* 3. platform default forward curve from RioSettings
|
|
8
9
|
*
|
|
10
|
+
* `kind` selects which forward curve to consult on each layer:
|
|
11
|
+
* - "regular" → `twoWaySettlementDateOffsetFee` / `defaultTwoWaySettlementDateOffsetFee`
|
|
12
|
+
* - "twap" → `TWAPTwoWaySettlementDateOffsetFee` / `defaultTWAPTwoWaySettlementDateOffsetFee`
|
|
13
|
+
*
|
|
9
14
|
* Returns undefined only if every layer is missing or out of range.
|
|
10
15
|
*/
|
|
11
|
-
export declare const resolveForwardCurveRate: ({ user, broker, country, side, amount, day, rioSettings, }: {
|
|
16
|
+
export declare const resolveForwardCurveRate: ({ user, broker, country, side, amount, day, rioSettings, kind, }: {
|
|
12
17
|
user: User | undefined | null;
|
|
13
18
|
broker?: User | null | undefined;
|
|
14
19
|
country: Country;
|
|
15
20
|
side: Side;
|
|
16
21
|
amount: number;
|
|
17
22
|
day: number;
|
|
18
|
-
rioSettings: Pick<RioSettings, "defaultTwoWaySettlementDateOffsetFee">;
|
|
23
|
+
rioSettings: Pick<RioSettings, "defaultTwoWaySettlementDateOffsetFee" | "defaultTWAPTwoWaySettlementDateOffsetFee">;
|
|
24
|
+
kind?: ForwardCurveKind | undefined;
|
|
19
25
|
}) => number | undefined;
|
|
@@ -10,16 +10,21 @@ const interpolate_forward_curve_rate_1 = require("./interpolate-forward-curve-ra
|
|
|
10
10
|
* 2. broker parent's tier curves (same logic applied to broker)
|
|
11
11
|
* 3. platform default forward curve from RioSettings
|
|
12
12
|
*
|
|
13
|
+
* `kind` selects which forward curve to consult on each layer:
|
|
14
|
+
* - "regular" → `twoWaySettlementDateOffsetFee` / `defaultTwoWaySettlementDateOffsetFee`
|
|
15
|
+
* - "twap" → `TWAPTwoWaySettlementDateOffsetFee` / `defaultTWAPTwoWaySettlementDateOffsetFee`
|
|
16
|
+
*
|
|
13
17
|
* Returns undefined only if every layer is missing or out of range.
|
|
14
18
|
*/
|
|
15
|
-
const resolveForwardCurveRate = ({ user, broker, country, side, amount, day, rioSettings, }) => {
|
|
16
|
-
var _a, _b;
|
|
19
|
+
const resolveForwardCurveRate = ({ user, broker, country, side, amount, day, rioSettings, kind = "regular", }) => {
|
|
20
|
+
var _a, _b, _c, _d;
|
|
17
21
|
const userRate = (0, find_user_tier_forward_curve_rate_1.findUserTierForwardCurveRate)({
|
|
18
22
|
user,
|
|
19
23
|
country,
|
|
20
24
|
side,
|
|
21
25
|
amount,
|
|
22
26
|
day,
|
|
27
|
+
kind,
|
|
23
28
|
});
|
|
24
29
|
if (userRate !== undefined)
|
|
25
30
|
return userRate;
|
|
@@ -30,10 +35,14 @@ const resolveForwardCurveRate = ({ user, broker, country, side, amount, day, rio
|
|
|
30
35
|
side,
|
|
31
36
|
amount,
|
|
32
37
|
day,
|
|
38
|
+
kind,
|
|
33
39
|
});
|
|
34
40
|
if (brokerRate !== undefined)
|
|
35
41
|
return brokerRate;
|
|
36
42
|
}
|
|
37
|
-
|
|
43
|
+
const defaultCurve = kind === "twap"
|
|
44
|
+
? (_b = (_a = rioSettings.defaultTWAPTwoWaySettlementDateOffsetFee) === null || _a === void 0 ? void 0 : _a[country]) === null || _b === void 0 ? void 0 : _b[side]
|
|
45
|
+
: (_d = (_c = rioSettings.defaultTwoWaySettlementDateOffsetFee) === null || _c === void 0 ? void 0 : _c[country]) === null || _d === void 0 ? void 0 : _d[side];
|
|
46
|
+
return (0, interpolate_forward_curve_rate_1.interpolateForwardCurveRate)(defaultCurve, day);
|
|
38
47
|
};
|
|
39
48
|
exports.resolveForwardCurveRate = resolveForwardCurveRate;
|
|
@@ -13,11 +13,13 @@ interface FireblocksTransferAttrs {
|
|
|
13
13
|
partsCompleted?: number;
|
|
14
14
|
fireblocksTransfers: {
|
|
15
15
|
uuid: string;
|
|
16
|
+
rioId?: string;
|
|
16
17
|
fireblocksTransferId?: string;
|
|
17
18
|
amount: number;
|
|
18
19
|
partNumber?: number;
|
|
19
20
|
status: FireblocksTransferStatus;
|
|
20
21
|
retryCount: number;
|
|
22
|
+
dispatchAttemptedAt?: Date;
|
|
21
23
|
}[];
|
|
22
24
|
netAmountTransfered?: number;
|
|
23
25
|
}
|
|
@@ -34,11 +36,13 @@ interface FireblocksTransferDoc extends mongoose.Document {
|
|
|
34
36
|
partsCompleted?: number;
|
|
35
37
|
fireblocksTransfers: {
|
|
36
38
|
uuid: string;
|
|
39
|
+
rioId?: string;
|
|
37
40
|
fireblocksTransferId?: string;
|
|
38
41
|
amount: number;
|
|
39
42
|
partNumber?: number;
|
|
40
43
|
status: FireblocksTransferStatus;
|
|
41
44
|
retryCount: number;
|
|
45
|
+
dispatchAttemptedAt?: Date;
|
|
42
46
|
}[];
|
|
43
47
|
netAmountTransfered?: number;
|
|
44
48
|
}
|
|
@@ -40,6 +40,9 @@ const buildFireblocksTransfer = (mongoose) => {
|
|
|
40
40
|
uuid: {
|
|
41
41
|
type: String,
|
|
42
42
|
},
|
|
43
|
+
rioId: {
|
|
44
|
+
type: String,
|
|
45
|
+
},
|
|
43
46
|
fireblocksTransferId: {
|
|
44
47
|
type: String,
|
|
45
48
|
},
|
|
@@ -55,6 +58,9 @@ const buildFireblocksTransfer = (mongoose) => {
|
|
|
55
58
|
retryCount: {
|
|
56
59
|
type: Number,
|
|
57
60
|
},
|
|
61
|
+
dispatchAttemptedAt: {
|
|
62
|
+
type: Date,
|
|
63
|
+
},
|
|
58
64
|
},
|
|
59
65
|
],
|
|
60
66
|
multipartLiquidityOrderId: {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Country, DeferredPaymentType, Fiat, FXProvider, FXTradingPolicies, Processor, Side } from "@riocrypto/common";
|
|
1
|
+
import { Country, Crypto, DeferredPaymentType, Fiat, FXProvider, FXTradingPolicies, Processor, Side } from "@riocrypto/common";
|
|
2
2
|
import { TVFXDataProvider } from "@riocrypto/common";
|
|
3
3
|
import mongoose, { HydratedDocument } from "mongoose";
|
|
4
4
|
interface RioSettingsAttrs {
|
|
@@ -34,6 +34,12 @@ interface RioSettingsAttrs {
|
|
|
34
34
|
sellOrderGeneralExchangeRateMarkup: {
|
|
35
35
|
[key in Fiat]: number;
|
|
36
36
|
};
|
|
37
|
+
buyOrderAssetPriceMarkup?: {
|
|
38
|
+
[key in Crypto]?: number;
|
|
39
|
+
};
|
|
40
|
+
sellOrderAssetPriceMarkup?: {
|
|
41
|
+
[key in Crypto]?: number;
|
|
42
|
+
};
|
|
37
43
|
defaultServiceFee: {
|
|
38
44
|
[key in Country]?: {
|
|
39
45
|
[key in Side]?: number;
|
|
@@ -63,6 +69,13 @@ interface RioSettingsAttrs {
|
|
|
63
69
|
};
|
|
64
70
|
};
|
|
65
71
|
};
|
|
72
|
+
defaultTWAPTwoWaySettlementDateOffsetFee?: {
|
|
73
|
+
[key in Country]?: {
|
|
74
|
+
[key in Side]?: {
|
|
75
|
+
[key: number]: number;
|
|
76
|
+
};
|
|
77
|
+
};
|
|
78
|
+
};
|
|
66
79
|
holidays: {
|
|
67
80
|
[key in Country]: {
|
|
68
81
|
dates: string[];
|
|
@@ -119,6 +132,12 @@ interface RioSettingsDoc extends mongoose.Document {
|
|
|
119
132
|
sellOrderAfterHoursExchangeRateMarkup: {
|
|
120
133
|
[key in Fiat]: number;
|
|
121
134
|
};
|
|
135
|
+
buyOrderAssetPriceMarkup?: {
|
|
136
|
+
[key in Crypto]?: number;
|
|
137
|
+
};
|
|
138
|
+
sellOrderAssetPriceMarkup?: {
|
|
139
|
+
[key in Crypto]?: number;
|
|
140
|
+
};
|
|
122
141
|
additionalBuyOrderLiquidityUSD?: number;
|
|
123
142
|
additionalSellOrderLiquidityUSD?: number;
|
|
124
143
|
previousDayUSDMXNConversionRate?: number;
|
|
@@ -148,6 +167,13 @@ interface RioSettingsDoc extends mongoose.Document {
|
|
|
148
167
|
};
|
|
149
168
|
};
|
|
150
169
|
};
|
|
170
|
+
defaultTWAPTwoWaySettlementDateOffsetFee?: {
|
|
171
|
+
[key in Country]?: {
|
|
172
|
+
[key in Side]?: {
|
|
173
|
+
[key: number]: number;
|
|
174
|
+
};
|
|
175
|
+
};
|
|
176
|
+
};
|
|
151
177
|
holidays: {
|
|
152
178
|
[key in Country]: {
|
|
153
179
|
dates: string[];
|
|
@@ -33,6 +33,12 @@ const buildRioSettings = (mongoose) => {
|
|
|
33
33
|
sellOrderGeneralExchangeRateMarkup: {
|
|
34
34
|
type: Object,
|
|
35
35
|
},
|
|
36
|
+
buyOrderAssetPriceMarkup: {
|
|
37
|
+
type: Object,
|
|
38
|
+
},
|
|
39
|
+
sellOrderAssetPriceMarkup: {
|
|
40
|
+
type: Object,
|
|
41
|
+
},
|
|
36
42
|
additionalBuyOrderLiquidityUSD: {
|
|
37
43
|
type: Number,
|
|
38
44
|
},
|
|
@@ -60,6 +66,9 @@ const buildRioSettings = (mongoose) => {
|
|
|
60
66
|
defaultTwoWaySettlementDateOffsetFee: {
|
|
61
67
|
type: Object,
|
|
62
68
|
},
|
|
69
|
+
defaultTWAPTwoWaySettlementDateOffsetFee: {
|
|
70
|
+
type: Object,
|
|
71
|
+
},
|
|
63
72
|
holidays: {
|
|
64
73
|
type: Object,
|
|
65
74
|
},
|
|
@@ -14,6 +14,11 @@ interface TWAPSessionAttrs {
|
|
|
14
14
|
maxOriginAmount?: number;
|
|
15
15
|
tradeCurrency: Fiat | Crypto;
|
|
16
16
|
spread: number;
|
|
17
|
+
spreadHistory: {
|
|
18
|
+
spread: number;
|
|
19
|
+
appliedAt: Date;
|
|
20
|
+
firstOrderId?: string;
|
|
21
|
+
}[];
|
|
17
22
|
clipSize: number;
|
|
18
23
|
interval: number;
|
|
19
24
|
isRunning: boolean;
|
|
@@ -56,6 +61,11 @@ interface TWAPSessionDoc extends Document {
|
|
|
56
61
|
activeTWAPSettlementId?: string;
|
|
57
62
|
TWAPSettlementIdsPendingSettlement: string[];
|
|
58
63
|
spread: number;
|
|
64
|
+
spreadHistory: {
|
|
65
|
+
spread: number;
|
|
66
|
+
appliedAt: Date;
|
|
67
|
+
firstOrderId?: string;
|
|
68
|
+
}[];
|
|
59
69
|
clipSize: number;
|
|
60
70
|
interval: number;
|
|
61
71
|
isRunning: boolean;
|
|
@@ -64,6 +64,16 @@ const buildTWAPSession = (mongoose) => {
|
|
|
64
64
|
type: Number,
|
|
65
65
|
required: true,
|
|
66
66
|
},
|
|
67
|
+
spreadHistory: {
|
|
68
|
+
type: [
|
|
69
|
+
{
|
|
70
|
+
spread: { type: Number, required: true },
|
|
71
|
+
appliedAt: { type: Date, required: true },
|
|
72
|
+
firstOrderId: { type: String },
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
default: [],
|
|
76
|
+
},
|
|
67
77
|
clipSize: {
|
|
68
78
|
type: Number,
|
|
69
79
|
required: true,
|
|
@@ -17,6 +17,7 @@ interface TWAPSettlementAttrs {
|
|
|
17
17
|
bulkBankPayoutId?: string;
|
|
18
18
|
bulkCryptoPayoutId?: string;
|
|
19
19
|
orderIds: string[];
|
|
20
|
+
twoWaySettlementDate?: Date;
|
|
20
21
|
}
|
|
21
22
|
interface TWAPSettlementModel extends Model<TWAPSettlementDoc> {
|
|
22
23
|
build(attrs: TWAPSettlementAttrs): HydratedDocument<TWAPSettlementDoc>;
|
|
@@ -39,6 +40,7 @@ interface TWAPSettlementDoc extends Document {
|
|
|
39
40
|
bulkBankPayoutId?: string;
|
|
40
41
|
bulkCryptoPayoutId?: string;
|
|
41
42
|
orderIds: string[];
|
|
43
|
+
twoWaySettlementDate?: Date;
|
|
42
44
|
}
|
|
43
45
|
declare const buildTWAPSettlement: (mongoose: Mongoose) => TWAPSettlementModel;
|
|
44
46
|
export { buildTWAPSettlement, TWAPSettlementDoc, TWAPSettlementAttrs };
|
package/build/models/user.js
CHANGED
|
@@ -80,6 +80,9 @@ const buildUser = (mongoose) => {
|
|
|
80
80
|
TWAPFee: {
|
|
81
81
|
type: Number,
|
|
82
82
|
},
|
|
83
|
+
TWAPTwoWaySettlementDateOffsetFee: {
|
|
84
|
+
type: Object,
|
|
85
|
+
},
|
|
83
86
|
},
|
|
84
87
|
],
|
|
85
88
|
sell: [
|
|
@@ -105,6 +108,9 @@ const buildUser = (mongoose) => {
|
|
|
105
108
|
TWAPFee: {
|
|
106
109
|
type: Number,
|
|
107
110
|
},
|
|
111
|
+
TWAPTwoWaySettlementDateOffsetFee: {
|
|
112
|
+
type: Object,
|
|
113
|
+
},
|
|
108
114
|
},
|
|
109
115
|
],
|
|
110
116
|
},
|
|
@@ -132,6 +138,9 @@ const buildUser = (mongoose) => {
|
|
|
132
138
|
TWAPFee: {
|
|
133
139
|
type: Number,
|
|
134
140
|
},
|
|
141
|
+
TWAPTwoWaySettlementDateOffsetFee: {
|
|
142
|
+
type: Object,
|
|
143
|
+
},
|
|
135
144
|
},
|
|
136
145
|
],
|
|
137
146
|
sell: [
|
|
@@ -157,6 +166,9 @@ const buildUser = (mongoose) => {
|
|
|
157
166
|
TWAPFee: {
|
|
158
167
|
type: Number,
|
|
159
168
|
},
|
|
169
|
+
TWAPTwoWaySettlementDateOffsetFee: {
|
|
170
|
+
type: Object,
|
|
171
|
+
},
|
|
160
172
|
},
|
|
161
173
|
],
|
|
162
174
|
},
|
|
@@ -184,6 +196,9 @@ const buildUser = (mongoose) => {
|
|
|
184
196
|
TWAPFee: {
|
|
185
197
|
type: Number,
|
|
186
198
|
},
|
|
199
|
+
TWAPTwoWaySettlementDateOffsetFee: {
|
|
200
|
+
type: Object,
|
|
201
|
+
},
|
|
187
202
|
},
|
|
188
203
|
],
|
|
189
204
|
sell: [
|
|
@@ -209,6 +224,9 @@ const buildUser = (mongoose) => {
|
|
|
209
224
|
TWAPFee: {
|
|
210
225
|
type: Number,
|
|
211
226
|
},
|
|
227
|
+
TWAPTwoWaySettlementDateOffsetFee: {
|
|
228
|
+
type: Object,
|
|
229
|
+
},
|
|
212
230
|
},
|
|
213
231
|
],
|
|
214
232
|
},
|
|
@@ -236,6 +254,9 @@ const buildUser = (mongoose) => {
|
|
|
236
254
|
TWAPFee: {
|
|
237
255
|
type: Number,
|
|
238
256
|
},
|
|
257
|
+
TWAPTwoWaySettlementDateOffsetFee: {
|
|
258
|
+
type: Object,
|
|
259
|
+
},
|
|
239
260
|
},
|
|
240
261
|
],
|
|
241
262
|
sell: [
|
|
@@ -261,6 +282,9 @@ const buildUser = (mongoose) => {
|
|
|
261
282
|
TWAPFee: {
|
|
262
283
|
type: Number,
|
|
263
284
|
},
|
|
285
|
+
TWAPTwoWaySettlementDateOffsetFee: {
|
|
286
|
+
type: Object,
|
|
287
|
+
},
|
|
264
288
|
},
|
|
265
289
|
],
|
|
266
290
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@riocrypto/common-server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2810",
|
|
4
4
|
"description": "",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"types": "./build/index.d.ts",
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
"@google-cloud/secret-manager": "^5.6.0",
|
|
29
29
|
"@google-cloud/storage": "^7.19.0",
|
|
30
30
|
"@hyperdx/node-opentelemetry": "^0.10.3",
|
|
31
|
-
"@riocrypto/common": "1.0.
|
|
31
|
+
"@riocrypto/common": "1.0.2616",
|
|
32
32
|
"@slack/web-api": "^7.15.0",
|
|
33
33
|
"@types/express": "^4.17.25",
|
|
34
34
|
"axios": "1.16.0",
|