@0xmonaco/types 0.4.1 → 0.5.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/README.md +2 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/applications/index.d.ts +3 -3
- package/dist/applications/index.d.ts.map +1 -1
- package/dist/applications/responses.d.ts.map +1 -1
- package/dist/auth/index.d.ts +3 -3
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/responses.d.ts.map +1 -1
- package/dist/contracts/balances.d.ts.map +1 -1
- package/dist/contracts/index.d.ts +1 -1
- package/dist/contracts/index.d.ts.map +1 -1
- package/dist/fees/index.d.ts +4 -4
- package/dist/fees/index.d.ts.map +1 -1
- package/dist/fees/index.js +1 -1
- package/dist/fees/index.js.map +1 -1
- package/dist/fees/responses.d.ts.map +1 -1
- package/dist/fees/responses.js +0 -3
- package/dist/fees/responses.js.map +1 -1
- package/dist/index.d.ts +12 -11
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -11
- package/dist/index.js.map +1 -1
- package/dist/market/index.d.ts +5 -1
- package/dist/market/index.d.ts.map +1 -1
- package/dist/profile/index.d.ts +8 -9
- package/dist/profile/index.d.ts.map +1 -1
- package/dist/sdk/index.d.ts +53 -31
- package/dist/sdk/index.d.ts.map +1 -1
- package/dist/sdk/network.d.ts.map +1 -1
- package/dist/trading/index.d.ts +5 -5
- package/dist/trading/index.d.ts.map +1 -1
- package/dist/trading/orders.d.ts.map +1 -1
- package/dist/trading/responses.d.ts +1 -1
- package/dist/trading/responses.d.ts.map +1 -1
- package/dist/validation/common.d.ts +181 -0
- package/dist/validation/common.d.ts.map +1 -0
- package/dist/validation/common.js +196 -0
- package/dist/validation/common.js.map +1 -0
- package/dist/validation/index.d.ts +20 -0
- package/dist/validation/index.d.ts.map +1 -0
- package/dist/validation/index.js +22 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/market.d.ts +169 -0
- package/dist/validation/market.d.ts.map +1 -0
- package/dist/validation/market.js +185 -0
- package/dist/validation/market.js.map +1 -0
- package/dist/validation/trading.d.ts +148 -0
- package/dist/validation/trading.d.ts.map +1 -0
- package/dist/validation/trading.js +139 -0
- package/dist/validation/trading.js.map +1 -0
- package/dist/validation/vault.d.ts +62 -0
- package/dist/validation/vault.d.ts.map +1 -0
- package/dist/validation/vault.js +75 -0
- package/dist/validation/vault.js.map +1 -0
- package/dist/vault/index.d.ts +7 -7
- package/dist/vault/index.d.ts.map +1 -1
- package/dist/vault/responses.d.ts.map +1 -1
- package/dist/websocket/base.d.ts +5 -73
- package/dist/websocket/base.d.ts.map +1 -1
- package/dist/websocket/base.js +4 -11
- package/dist/websocket/base.js.map +1 -1
- package/dist/websocket/clients/orderbook-client.d.ts +1 -26
- package/dist/websocket/clients/orderbook-client.d.ts.map +1 -1
- package/dist/websocket/clients/orderbook-client.js +1 -1
- package/dist/websocket/events/index.d.ts +4 -3
- package/dist/websocket/events/index.d.ts.map +1 -1
- package/dist/websocket/events/index.js +4 -3
- package/dist/websocket/events/index.js.map +1 -1
- package/dist/websocket/events/ohlcv-events.d.ts +2 -2
- package/dist/websocket/events/ohlcv-events.d.ts.map +1 -1
- package/dist/websocket/events/orderbook-events.d.ts +4 -4
- package/dist/websocket/events/orderbook-events.d.ts.map +1 -1
- package/dist/websocket/events/orders-events.d.ts +2 -2
- package/dist/websocket/events/orders-events.d.ts.map +1 -1
- package/dist/websocket/events/trade-events.d.ts +35 -0
- package/dist/websocket/events/trade-events.d.ts.map +1 -0
- package/dist/websocket/events/trade-events.js +7 -0
- package/dist/websocket/events/trade-events.js.map +1 -0
- package/dist/websocket/index.d.ts +3 -13
- package/dist/websocket/index.d.ts.map +1 -1
- package/dist/websocket/index.js +3 -14
- package/dist/websocket/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/websocket/clients/ohlcv-client.d.ts +0 -28
- package/dist/websocket/clients/ohlcv-client.d.ts.map +0 -1
- package/dist/websocket/clients/ohlcv-client.js +0 -5
- package/dist/websocket/clients/ohlcv-client.js.map +0 -1
- package/dist/websocket/clients/orders-client.d.ts +0 -25
- package/dist/websocket/clients/orders-client.d.ts.map +0 -1
- package/dist/websocket/clients/orders-client.js +0 -5
- package/dist/websocket/clients/orders-client.js.map +0 -1
|
@@ -0,0 +1,185 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Market API Validation Schemas
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { UUIDSchema } from "./trading";
|
|
6
|
+
/**
|
|
7
|
+
* Candlestick interval validation
|
|
8
|
+
*/
|
|
9
|
+
export const IntervalSchema = z.enum(["1m", "5m", "15m", "30m", "1h", "4h", "1d", "1w", "1M"], {
|
|
10
|
+
message: 'Interval must be one of: "1m", "5m", "15m", "30m", "1h", "4h", "1d", "1w", "1M"',
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* Maximum allowed future offset for timestamps (1 year in milliseconds)
|
|
14
|
+
*
|
|
15
|
+
* Allows queries for future dates (e.g., for scheduling or filtering) but
|
|
16
|
+
* prevents unreasonably far future dates that are likely input errors.
|
|
17
|
+
*/
|
|
18
|
+
const MAX_TIMESTAMP_FUTURE_OFFSET_MS = 365 * 24 * 60 * 60 * 1000; // 1 year
|
|
19
|
+
/**
|
|
20
|
+
* Minimum allowed timestamp (Jan 1, 2000 in milliseconds)
|
|
21
|
+
*
|
|
22
|
+
* This catches the common error of passing timestamps in seconds instead of milliseconds.
|
|
23
|
+
* Any timestamp before year 2000 is likely an error (either seconds or invalid date).
|
|
24
|
+
*/
|
|
25
|
+
const MIN_TIMESTAMP_MS = 946684800000; // Jan 1, 2000 00:00:00 UTC
|
|
26
|
+
/**
|
|
27
|
+
* Timestamp validation (milliseconds since epoch)
|
|
28
|
+
*
|
|
29
|
+
* Validates that the timestamp is:
|
|
30
|
+
* - A positive integer
|
|
31
|
+
* - At least Jan 1, 2000 (catches seconds vs milliseconds errors)
|
|
32
|
+
* - Within JavaScript's safe integer range
|
|
33
|
+
* - Not unreasonably far in the future (max 1 year ahead)
|
|
34
|
+
*
|
|
35
|
+
* **Why these bounds matter:**
|
|
36
|
+
* - Prevents typos (e.g., using seconds instead of milliseconds: 1609459200 vs 1609459200000)
|
|
37
|
+
* - Catches date calculation errors (e.g., Date.now() * 1000 instead of Date.now())
|
|
38
|
+
* - Ensures timestamps won't cause precision issues in JavaScript
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* ```typescript
|
|
42
|
+
* // Valid timestamps (milliseconds)
|
|
43
|
+
* validate(TimestampSchema, 1609459200000); // Jan 1, 2021 ✅
|
|
44
|
+
* validate(TimestampSchema, Date.now()); // Current time ✅
|
|
45
|
+
* validate(TimestampSchema, Date.now() + 86400000); // Tomorrow ✅
|
|
46
|
+
*
|
|
47
|
+
* // Invalid timestamps
|
|
48
|
+
* validate(TimestampSchema, 1609459200); // Seconds instead of ms (Jan 19, 1970) ❌
|
|
49
|
+
* validate(TimestampSchema, Date.now() * 1000); // Way too large ❌
|
|
50
|
+
* validate(TimestampSchema, 9999999999999999); // Far future (year 2286) ❌
|
|
51
|
+
* validate(TimestampSchema, 100000); // Too old (Jan 1, 1970) ❌
|
|
52
|
+
* ```
|
|
53
|
+
*/
|
|
54
|
+
export const TimestampSchema = z
|
|
55
|
+
.number()
|
|
56
|
+
.int()
|
|
57
|
+
.positive({
|
|
58
|
+
message: "Timestamp must be a positive integer (milliseconds since epoch)",
|
|
59
|
+
})
|
|
60
|
+
.min(MIN_TIMESTAMP_MS, {
|
|
61
|
+
message: "Timestamp must be at least Jan 1, 2000 (946684800000 ms). Did you pass seconds instead of milliseconds?",
|
|
62
|
+
})
|
|
63
|
+
.max(Number.MAX_SAFE_INTEGER, {
|
|
64
|
+
message: "Timestamp must not exceed JavaScript's maximum safe integer",
|
|
65
|
+
})
|
|
66
|
+
.refine((value) => value <= Date.now() + MAX_TIMESTAMP_FUTURE_OFFSET_MS, {
|
|
67
|
+
message: "Timestamp must not be unreasonably far in the future (max 1 year ahead)",
|
|
68
|
+
});
|
|
69
|
+
/**
|
|
70
|
+
* Get Candlesticks validation schema (by trading pair ID)
|
|
71
|
+
*
|
|
72
|
+
* Validates parameters for fetching candlestick (OHLCV) data using a trading pair UUID.
|
|
73
|
+
* Ensures that the time range is valid by checking that startTime < endTime.
|
|
74
|
+
*
|
|
75
|
+
* @example
|
|
76
|
+
* ```typescript
|
|
77
|
+
* // Valid request
|
|
78
|
+
* validate(GetCandlesticksSchema, {
|
|
79
|
+
* tradingPairId: "123e4567-e89b-12d3-a456-426614174000",
|
|
80
|
+
* interval: "1h",
|
|
81
|
+
* startTime: 1609459200000, // Jan 1, 2021
|
|
82
|
+
* endTime: 1640995200000 // Jan 1, 2022
|
|
83
|
+
* });
|
|
84
|
+
*
|
|
85
|
+
* // Invalid: backwards time range
|
|
86
|
+
* validate(GetCandlesticksSchema, {
|
|
87
|
+
* tradingPairId: "123e4567-e89b-12d3-a456-426614174000",
|
|
88
|
+
* interval: "1h",
|
|
89
|
+
* startTime: 1640995200000, // Jan 1, 2022
|
|
90
|
+
* endTime: 1609459200000 // Jan 1, 2021
|
|
91
|
+
* });
|
|
92
|
+
* // ValidationError: startTime must be less than endTime
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
export const GetCandlesticksSchema = z
|
|
96
|
+
.object({
|
|
97
|
+
tradingPairId: UUIDSchema,
|
|
98
|
+
interval: IntervalSchema,
|
|
99
|
+
startTime: TimestampSchema,
|
|
100
|
+
endTime: TimestampSchema,
|
|
101
|
+
})
|
|
102
|
+
.refine((data) => data.startTime < data.endTime, {
|
|
103
|
+
message: "startTime must be less than endTime",
|
|
104
|
+
path: ["endTime"],
|
|
105
|
+
});
|
|
106
|
+
/**
|
|
107
|
+
* Trading pair symbol validation
|
|
108
|
+
*
|
|
109
|
+
* Validates trading pair symbols like "BTC/USDT", "ETH/USD", etc.
|
|
110
|
+
* Symbol format: BASE/QUOTE where:
|
|
111
|
+
* - BASE and QUOTE are 1-10 alphanumeric characters
|
|
112
|
+
* - Separated by a forward slash
|
|
113
|
+
*
|
|
114
|
+
* @example
|
|
115
|
+
* ```typescript
|
|
116
|
+
* // Valid symbols
|
|
117
|
+
* validate(TradingPairSymbolSchema, "BTC/USDT"); ✅
|
|
118
|
+
* validate(TradingPairSymbolSchema, "ETH/USD"); ✅
|
|
119
|
+
* validate(TradingPairSymbolSchema, "MTK/USDCo"); ✅
|
|
120
|
+
*
|
|
121
|
+
* // Invalid symbols
|
|
122
|
+
* validate(TradingPairSymbolSchema, "BTC"); ❌ Missing quote token
|
|
123
|
+
* validate(TradingPairSymbolSchema, "BTC-USDT"); ❌ Wrong separator
|
|
124
|
+
* validate(TradingPairSymbolSchema, "/USDT"); ❌ Missing base token
|
|
125
|
+
* ```
|
|
126
|
+
*/
|
|
127
|
+
export const TradingPairSymbolSchema = z
|
|
128
|
+
.string()
|
|
129
|
+
.min(1, "Trading pair symbol cannot be empty")
|
|
130
|
+
.regex(/^[A-Za-z0-9]{1,10}\/[A-Za-z0-9]{1,10}$/, {
|
|
131
|
+
message: 'Trading pair symbol must be in format "BASE/QUOTE" (e.g., "BTC/USDT", "ETH/USD")',
|
|
132
|
+
});
|
|
133
|
+
/**
|
|
134
|
+
* Get Candlesticks By Symbol validation schema
|
|
135
|
+
*
|
|
136
|
+
* Validates parameters for fetching candlestick (OHLCV) data using a trading pair symbol.
|
|
137
|
+
* This is the schema used by the actual API endpoint which accepts symbols like "BTC/USDT".
|
|
138
|
+
* Ensures that the time range is valid by checking that startTime < endTime.
|
|
139
|
+
*
|
|
140
|
+
* @example
|
|
141
|
+
* ```typescript
|
|
142
|
+
* // Valid request
|
|
143
|
+
* validate(GetCandlesticksBySymbolSchema, {
|
|
144
|
+
* symbol: "BTC/USDT",
|
|
145
|
+
* interval: "1h",
|
|
146
|
+
* startTime: 1609459200000, // Jan 1, 2021
|
|
147
|
+
* endTime: 1640995200000 // Jan 1, 2022
|
|
148
|
+
* });
|
|
149
|
+
*
|
|
150
|
+
* // Invalid: backwards time range
|
|
151
|
+
* validate(GetCandlesticksBySymbolSchema, {
|
|
152
|
+
* symbol: "ETH/USD",
|
|
153
|
+
* interval: "1h",
|
|
154
|
+
* startTime: 1640995200000, // Jan 1, 2022
|
|
155
|
+
* endTime: 1609459200000 // Jan 1, 2021
|
|
156
|
+
* });
|
|
157
|
+
* // ValidationError: startTime must be less than endTime
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
export const GetCandlesticksBySymbolSchema = z
|
|
161
|
+
.object({
|
|
162
|
+
symbol: TradingPairSymbolSchema,
|
|
163
|
+
interval: IntervalSchema,
|
|
164
|
+
startTime: TimestampSchema,
|
|
165
|
+
endTime: TimestampSchema,
|
|
166
|
+
})
|
|
167
|
+
.refine((data) => data.startTime < data.endTime, {
|
|
168
|
+
message: "startTime must be less than endTime",
|
|
169
|
+
path: ["endTime"],
|
|
170
|
+
});
|
|
171
|
+
/**
|
|
172
|
+
* Get Trading Pair validation schema
|
|
173
|
+
*/
|
|
174
|
+
export const GetTradingPairSchema = z.object({
|
|
175
|
+
tradingPairId: UUIDSchema,
|
|
176
|
+
});
|
|
177
|
+
/**
|
|
178
|
+
* Search Trading Pairs validation schema
|
|
179
|
+
*/
|
|
180
|
+
export const SearchTradingPairsSchema = z.object({
|
|
181
|
+
query: z.string().min(1, "Search query cannot be empty").optional(),
|
|
182
|
+
limit: z.number().int().min(1).max(100).optional(),
|
|
183
|
+
offset: z.number().int().min(0).optional(),
|
|
184
|
+
});
|
|
185
|
+
//# sourceMappingURL=market.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"market.js","sourceRoot":"","sources":["../../src/validation/market.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trading API Validation Schemas
|
|
3
|
+
*
|
|
4
|
+
* Zod schemas for validating trading API inputs before making requests.
|
|
5
|
+
* Provides clear, actionable error messages for invalid parameters.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
/**
|
|
9
|
+
* Order side validation
|
|
10
|
+
*/
|
|
11
|
+
export declare const OrderSideSchema: z.ZodEnum<{
|
|
12
|
+
BUY: "BUY";
|
|
13
|
+
SELL: "SELL";
|
|
14
|
+
}>;
|
|
15
|
+
/**
|
|
16
|
+
* Trading mode validation
|
|
17
|
+
*/
|
|
18
|
+
export declare const TradingModeSchema: z.ZodEnum<{
|
|
19
|
+
SPOT: "SPOT";
|
|
20
|
+
MARGIN: "MARGIN";
|
|
21
|
+
}>;
|
|
22
|
+
/**
|
|
23
|
+
* Time in force validation
|
|
24
|
+
*/
|
|
25
|
+
export declare const TimeInForceSchema: z.ZodEnum<{
|
|
26
|
+
GTC: "GTC";
|
|
27
|
+
IOC: "IOC";
|
|
28
|
+
FOK: "FOK";
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* Positive decimal string validation (for quantities and prices)
|
|
32
|
+
*/
|
|
33
|
+
export declare const PositiveDecimalStringSchema: z.ZodString;
|
|
34
|
+
/**
|
|
35
|
+
* Non-negative decimal string validation (allows 0)
|
|
36
|
+
*/
|
|
37
|
+
export declare const NonNegativeDecimalStringSchema: z.ZodString;
|
|
38
|
+
/**
|
|
39
|
+
* UUID validation
|
|
40
|
+
*/
|
|
41
|
+
export declare const UUIDSchema: z.ZodString;
|
|
42
|
+
/**
|
|
43
|
+
* ISO 8601 date string validation
|
|
44
|
+
*/
|
|
45
|
+
export declare const ISO8601DateSchema: z.ZodString;
|
|
46
|
+
/**
|
|
47
|
+
* Slippage tolerance validation (0 to 1, where 0.01 = 1%)
|
|
48
|
+
*/
|
|
49
|
+
export declare const SlippageToleranceSchema: z.ZodOptional<z.ZodNumber>;
|
|
50
|
+
/**
|
|
51
|
+
* Place Limit Order validation schema
|
|
52
|
+
*/
|
|
53
|
+
export declare const PlaceLimitOrderSchema: z.ZodObject<{
|
|
54
|
+
tradingPairId: z.ZodString;
|
|
55
|
+
side: z.ZodEnum<{
|
|
56
|
+
BUY: "BUY";
|
|
57
|
+
SELL: "SELL";
|
|
58
|
+
}>;
|
|
59
|
+
quantity: z.ZodString;
|
|
60
|
+
price: z.ZodString;
|
|
61
|
+
options: z.ZodOptional<z.ZodObject<{
|
|
62
|
+
tradingMode: z.ZodOptional<z.ZodEnum<{
|
|
63
|
+
SPOT: "SPOT";
|
|
64
|
+
MARGIN: "MARGIN";
|
|
65
|
+
}>>;
|
|
66
|
+
useMasterBalance: z.ZodOptional<z.ZodBoolean>;
|
|
67
|
+
expirationDate: z.ZodOptional<z.ZodString>;
|
|
68
|
+
timeInForce: z.ZodOptional<z.ZodEnum<{
|
|
69
|
+
GTC: "GTC";
|
|
70
|
+
IOC: "IOC";
|
|
71
|
+
FOK: "FOK";
|
|
72
|
+
}>>;
|
|
73
|
+
}, z.core.$strip>>;
|
|
74
|
+
}, z.core.$strip>;
|
|
75
|
+
/**
|
|
76
|
+
* Place Market Order validation schema
|
|
77
|
+
*/
|
|
78
|
+
export declare const PlaceMarketOrderSchema: z.ZodObject<{
|
|
79
|
+
tradingPairId: z.ZodString;
|
|
80
|
+
side: z.ZodEnum<{
|
|
81
|
+
BUY: "BUY";
|
|
82
|
+
SELL: "SELL";
|
|
83
|
+
}>;
|
|
84
|
+
quantity: z.ZodString;
|
|
85
|
+
options: z.ZodOptional<z.ZodObject<{
|
|
86
|
+
tradingMode: z.ZodOptional<z.ZodEnum<{
|
|
87
|
+
SPOT: "SPOT";
|
|
88
|
+
MARGIN: "MARGIN";
|
|
89
|
+
}>>;
|
|
90
|
+
slippageTolerance: z.ZodOptional<z.ZodNumber>;
|
|
91
|
+
timeInForce: z.ZodOptional<z.ZodEnum<{
|
|
92
|
+
GTC: "GTC";
|
|
93
|
+
IOC: "IOC";
|
|
94
|
+
FOK: "FOK";
|
|
95
|
+
}>>;
|
|
96
|
+
}, z.core.$strip>>;
|
|
97
|
+
}, z.core.$strip>;
|
|
98
|
+
/**
|
|
99
|
+
* Cancel Order validation schema
|
|
100
|
+
*/
|
|
101
|
+
export declare const CancelOrderSchema: z.ZodObject<{
|
|
102
|
+
orderId: z.ZodString;
|
|
103
|
+
}, z.core.$strip>;
|
|
104
|
+
/**
|
|
105
|
+
* Replace Order validation schema
|
|
106
|
+
*
|
|
107
|
+
* Validates parameters for replacing an existing order.
|
|
108
|
+
* Matches the replaceOrder method signature which accepts:
|
|
109
|
+
* - orderId: string (UUID)
|
|
110
|
+
* - newOrder: { price?: string, quantity?: string, useMasterBalance?: boolean }
|
|
111
|
+
*/
|
|
112
|
+
export declare const ReplaceOrderSchema: z.ZodObject<{
|
|
113
|
+
orderId: z.ZodString;
|
|
114
|
+
newOrder: z.ZodObject<{
|
|
115
|
+
price: z.ZodOptional<z.ZodString>;
|
|
116
|
+
quantity: z.ZodOptional<z.ZodString>;
|
|
117
|
+
useMasterBalance: z.ZodOptional<z.ZodBoolean>;
|
|
118
|
+
}, z.core.$strip>;
|
|
119
|
+
}, z.core.$strip>;
|
|
120
|
+
/**
|
|
121
|
+
* Get Paginated Orders validation schema
|
|
122
|
+
*
|
|
123
|
+
* Validates parameters for fetching paginated orders.
|
|
124
|
+
* Status field accepts all valid OrderStatus values for comprehensive filtering.
|
|
125
|
+
*/
|
|
126
|
+
export declare const GetOrdersSchema: z.ZodObject<{
|
|
127
|
+
tradingPairId: z.ZodOptional<z.ZodString>;
|
|
128
|
+
options: z.ZodOptional<z.ZodObject<{
|
|
129
|
+
status: z.ZodOptional<z.ZodEnum<{
|
|
130
|
+
PENDING: "PENDING";
|
|
131
|
+
SUBMITTED: "SUBMITTED";
|
|
132
|
+
ACKNOWLEDGED: "ACKNOWLEDGED";
|
|
133
|
+
PARTIALLY_FILLED: "PARTIALLY_FILLED";
|
|
134
|
+
FILLED: "FILLED";
|
|
135
|
+
SETTLED: "SETTLED";
|
|
136
|
+
CANCELLED: "CANCELLED";
|
|
137
|
+
REJECTED: "REJECTED";
|
|
138
|
+
EXPIRED: "EXPIRED";
|
|
139
|
+
}>>;
|
|
140
|
+
side: z.ZodOptional<z.ZodEnum<{
|
|
141
|
+
BUY: "BUY";
|
|
142
|
+
SELL: "SELL";
|
|
143
|
+
}>>;
|
|
144
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
145
|
+
offset: z.ZodOptional<z.ZodNumber>;
|
|
146
|
+
}, z.core.$strip>>;
|
|
147
|
+
}, z.core.$strip>;
|
|
148
|
+
//# sourceMappingURL=trading.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trading.d.ts","sourceRoot":"","sources":["../../src/validation/trading.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,eAAe;;;EAE1B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;EAE5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;EAE5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,2BAA2B,aAOpC,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,8BAA8B,aAOvC,CAAC;AAEL;;GAEG;AACH,eAAO,MAAM,UAAU,aAErB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB,aAE5B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,uBAAuB,4BAIvB,CAAC;AAEd;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;iBAahC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;iBAWjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,iBAAiB;;iBAE5B,CAAC;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB;;;;;;;iBAO7B,CAAC;AAEH;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;iBAU1B,CAAC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Trading API Validation Schemas
|
|
3
|
+
*
|
|
4
|
+
* Zod schemas for validating trading API inputs before making requests.
|
|
5
|
+
* Provides clear, actionable error messages for invalid parameters.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
/**
|
|
9
|
+
* Order side validation
|
|
10
|
+
*/
|
|
11
|
+
export const OrderSideSchema = z.enum(["BUY", "SELL"], {
|
|
12
|
+
message: 'Order side must be "BUY" or "SELL"',
|
|
13
|
+
});
|
|
14
|
+
/**
|
|
15
|
+
* Trading mode validation
|
|
16
|
+
*/
|
|
17
|
+
export const TradingModeSchema = z.enum(["SPOT", "MARGIN"], {
|
|
18
|
+
message: 'Trading mode must be "SPOT" or "MARGIN"',
|
|
19
|
+
});
|
|
20
|
+
/**
|
|
21
|
+
* Time in force validation
|
|
22
|
+
*/
|
|
23
|
+
export const TimeInForceSchema = z.enum(["GTC", "IOC", "FOK"], {
|
|
24
|
+
message: 'Time in force must be "GTC", "IOC", or "FOK"',
|
|
25
|
+
});
|
|
26
|
+
/**
|
|
27
|
+
* Positive decimal string validation (for quantities and prices)
|
|
28
|
+
*/
|
|
29
|
+
export const PositiveDecimalStringSchema = z
|
|
30
|
+
.string()
|
|
31
|
+
.trim()
|
|
32
|
+
.min(1, "Value cannot be empty")
|
|
33
|
+
.regex(/^\d+(\.\d+)?$/, "Value must be a positive decimal number (e.g., '1.5', '100')")
|
|
34
|
+
.refine((val) => Number.parseFloat(val) > 0, {
|
|
35
|
+
message: "Value must be greater than 0",
|
|
36
|
+
});
|
|
37
|
+
/**
|
|
38
|
+
* Non-negative decimal string validation (allows 0)
|
|
39
|
+
*/
|
|
40
|
+
export const NonNegativeDecimalStringSchema = z
|
|
41
|
+
.string()
|
|
42
|
+
.trim()
|
|
43
|
+
.min(1, "Value cannot be empty")
|
|
44
|
+
.regex(/^\d+(\.\d+)?$/, "Value must be a non-negative decimal number")
|
|
45
|
+
.refine((val) => Number.parseFloat(val) >= 0, {
|
|
46
|
+
message: "Value must be greater than or equal to 0",
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* UUID validation
|
|
50
|
+
*/
|
|
51
|
+
export const UUIDSchema = z.string().uuid({
|
|
52
|
+
message: "Must be a valid UUID (e.g., '123e4567-e89b-12d3-a456-426614174000')",
|
|
53
|
+
});
|
|
54
|
+
/**
|
|
55
|
+
* ISO 8601 date string validation
|
|
56
|
+
*/
|
|
57
|
+
export const ISO8601DateSchema = z.string().datetime({
|
|
58
|
+
message: "Must be a valid ISO 8601 date string (e.g., '2024-12-31T23:59:59Z')",
|
|
59
|
+
});
|
|
60
|
+
/**
|
|
61
|
+
* Slippage tolerance validation (0 to 1, where 0.01 = 1%)
|
|
62
|
+
*/
|
|
63
|
+
export const SlippageToleranceSchema = z
|
|
64
|
+
.number()
|
|
65
|
+
.min(0, "Slippage tolerance must be at least 0 (no slippage)")
|
|
66
|
+
.max(1, "Slippage tolerance cannot exceed 1 (100%)")
|
|
67
|
+
.optional();
|
|
68
|
+
/**
|
|
69
|
+
* Place Limit Order validation schema
|
|
70
|
+
*/
|
|
71
|
+
export const PlaceLimitOrderSchema = z.object({
|
|
72
|
+
tradingPairId: UUIDSchema,
|
|
73
|
+
side: OrderSideSchema,
|
|
74
|
+
quantity: PositiveDecimalStringSchema,
|
|
75
|
+
price: PositiveDecimalStringSchema,
|
|
76
|
+
options: z
|
|
77
|
+
.object({
|
|
78
|
+
tradingMode: TradingModeSchema.optional(),
|
|
79
|
+
useMasterBalance: z.boolean().optional(),
|
|
80
|
+
expirationDate: ISO8601DateSchema.optional(),
|
|
81
|
+
timeInForce: TimeInForceSchema.optional(),
|
|
82
|
+
})
|
|
83
|
+
.optional(),
|
|
84
|
+
});
|
|
85
|
+
/**
|
|
86
|
+
* Place Market Order validation schema
|
|
87
|
+
*/
|
|
88
|
+
export const PlaceMarketOrderSchema = z.object({
|
|
89
|
+
tradingPairId: UUIDSchema,
|
|
90
|
+
side: OrderSideSchema,
|
|
91
|
+
quantity: PositiveDecimalStringSchema,
|
|
92
|
+
options: z
|
|
93
|
+
.object({
|
|
94
|
+
tradingMode: TradingModeSchema.optional(),
|
|
95
|
+
slippageTolerance: SlippageToleranceSchema,
|
|
96
|
+
timeInForce: TimeInForceSchema.optional(),
|
|
97
|
+
})
|
|
98
|
+
.optional(),
|
|
99
|
+
});
|
|
100
|
+
/**
|
|
101
|
+
* Cancel Order validation schema
|
|
102
|
+
*/
|
|
103
|
+
export const CancelOrderSchema = z.object({
|
|
104
|
+
orderId: UUIDSchema,
|
|
105
|
+
});
|
|
106
|
+
/**
|
|
107
|
+
* Replace Order validation schema
|
|
108
|
+
*
|
|
109
|
+
* Validates parameters for replacing an existing order.
|
|
110
|
+
* Matches the replaceOrder method signature which accepts:
|
|
111
|
+
* - orderId: string (UUID)
|
|
112
|
+
* - newOrder: { price?: string, quantity?: string, useMasterBalance?: boolean }
|
|
113
|
+
*/
|
|
114
|
+
export const ReplaceOrderSchema = z.object({
|
|
115
|
+
orderId: UUIDSchema,
|
|
116
|
+
newOrder: z.object({
|
|
117
|
+
price: PositiveDecimalStringSchema.optional(),
|
|
118
|
+
quantity: PositiveDecimalStringSchema.optional(),
|
|
119
|
+
useMasterBalance: z.boolean().optional(),
|
|
120
|
+
}),
|
|
121
|
+
});
|
|
122
|
+
/**
|
|
123
|
+
* Get Paginated Orders validation schema
|
|
124
|
+
*
|
|
125
|
+
* Validates parameters for fetching paginated orders.
|
|
126
|
+
* Status field accepts all valid OrderStatus values for comprehensive filtering.
|
|
127
|
+
*/
|
|
128
|
+
export const GetOrdersSchema = z.object({
|
|
129
|
+
tradingPairId: UUIDSchema.optional(),
|
|
130
|
+
options: z
|
|
131
|
+
.object({
|
|
132
|
+
status: z.enum(["PENDING", "SUBMITTED", "ACKNOWLEDGED", "PARTIALLY_FILLED", "FILLED", "SETTLED", "CANCELLED", "REJECTED", "EXPIRED"]).optional(),
|
|
133
|
+
side: OrderSideSchema.optional(),
|
|
134
|
+
limit: z.number().int().min(1).max(100).optional(),
|
|
135
|
+
offset: z.number().int().min(0).optional(),
|
|
136
|
+
})
|
|
137
|
+
.optional(),
|
|
138
|
+
});
|
|
139
|
+
//# sourceMappingURL=trading.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trading.js","sourceRoot":"","sources":["../../src/validation/trading.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vault API Validation Schemas
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
/**
|
|
6
|
+
* Ethereum address validation
|
|
7
|
+
*/
|
|
8
|
+
export declare const AddressSchema: z.ZodString;
|
|
9
|
+
/**
|
|
10
|
+
* Positive BigInt validation
|
|
11
|
+
*
|
|
12
|
+
* Accepts either:
|
|
13
|
+
* - A positive integer string (e.g., "1000000000000000000" for 1 token with 18 decimals)
|
|
14
|
+
* - A positive bigint value (e.g., 1000000000000000000n)
|
|
15
|
+
*
|
|
16
|
+
* This flexibility allows validation of:
|
|
17
|
+
* - User input (strings from forms)
|
|
18
|
+
* - Parsed amounts (bigint from parseUnits())
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* // String input (from user)
|
|
23
|
+
* validate(PositiveBigIntStringSchema, "1000000");
|
|
24
|
+
*
|
|
25
|
+
* // BigInt input (from parseUnits)
|
|
26
|
+
* import { parseUnits } from 'viem';
|
|
27
|
+
* const amount = parseUnits("1.0", 18); // 1000000000000000000n
|
|
28
|
+
* validate(PositiveBigIntStringSchema, amount);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare const PositiveBigIntStringSchema: z.ZodUnion<readonly [z.ZodString, z.ZodBigInt]>;
|
|
32
|
+
/**
|
|
33
|
+
* Approve Token validation schema
|
|
34
|
+
*/
|
|
35
|
+
export declare const ApproveTokenSchema: z.ZodObject<{
|
|
36
|
+
tokenAddress: z.ZodString;
|
|
37
|
+
amount: z.ZodUnion<readonly [z.ZodString, z.ZodBigInt]>;
|
|
38
|
+
autoWait: z.ZodOptional<z.ZodBoolean>;
|
|
39
|
+
}, z.core.$strip>;
|
|
40
|
+
/**
|
|
41
|
+
* Deposit validation schema
|
|
42
|
+
*/
|
|
43
|
+
export declare const DepositSchema: z.ZodObject<{
|
|
44
|
+
assetId: z.ZodString;
|
|
45
|
+
amount: z.ZodUnion<readonly [z.ZodString, z.ZodBigInt]>;
|
|
46
|
+
autoWait: z.ZodOptional<z.ZodBoolean>;
|
|
47
|
+
}, z.core.$strip>;
|
|
48
|
+
/**
|
|
49
|
+
* Withdraw validation schema
|
|
50
|
+
*/
|
|
51
|
+
export declare const WithdrawSchema: z.ZodObject<{
|
|
52
|
+
assetId: z.ZodString;
|
|
53
|
+
amount: z.ZodUnion<readonly [z.ZodString, z.ZodBigInt]>;
|
|
54
|
+
autoWait: z.ZodOptional<z.ZodBoolean>;
|
|
55
|
+
}, z.core.$strip>;
|
|
56
|
+
/**
|
|
57
|
+
* Get Balance validation schema
|
|
58
|
+
*/
|
|
59
|
+
export declare const GetBalanceSchema: z.ZodObject<{
|
|
60
|
+
tokenAddress: z.ZodString;
|
|
61
|
+
}, z.core.$strip>;
|
|
62
|
+
//# sourceMappingURL=vault.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../../src/validation/vault.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,eAAO,MAAM,aAAa,aAExB,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,0BAA0B,iDAUrC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,kBAAkB;;;;iBAI7B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,aAAa;;;;iBAIxB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,cAAc;;;;iBAIzB,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,gBAAgB;;iBAE3B,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Vault API Validation Schemas
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import { UUIDSchema } from "./trading";
|
|
6
|
+
/**
|
|
7
|
+
* Ethereum address validation
|
|
8
|
+
*/
|
|
9
|
+
export const AddressSchema = z.string().regex(/^0x[a-fA-F0-9]{40}$/, {
|
|
10
|
+
message: "Must be a valid Ethereum address (e.g., '0x1234...5678')",
|
|
11
|
+
});
|
|
12
|
+
/**
|
|
13
|
+
* Positive BigInt validation
|
|
14
|
+
*
|
|
15
|
+
* Accepts either:
|
|
16
|
+
* - A positive integer string (e.g., "1000000000000000000" for 1 token with 18 decimals)
|
|
17
|
+
* - A positive bigint value (e.g., 1000000000000000000n)
|
|
18
|
+
*
|
|
19
|
+
* This flexibility allows validation of:
|
|
20
|
+
* - User input (strings from forms)
|
|
21
|
+
* - Parsed amounts (bigint from parseUnits())
|
|
22
|
+
*
|
|
23
|
+
* @example
|
|
24
|
+
* ```typescript
|
|
25
|
+
* // String input (from user)
|
|
26
|
+
* validate(PositiveBigIntStringSchema, "1000000");
|
|
27
|
+
*
|
|
28
|
+
* // BigInt input (from parseUnits)
|
|
29
|
+
* import { parseUnits } from 'viem';
|
|
30
|
+
* const amount = parseUnits("1.0", 18); // 1000000000000000000n
|
|
31
|
+
* validate(PositiveBigIntStringSchema, amount);
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export const PositiveBigIntStringSchema = z.union([
|
|
35
|
+
z
|
|
36
|
+
.string()
|
|
37
|
+
.regex(/^\d+$/, "Must be a positive integer string")
|
|
38
|
+
.refine((val) => BigInt(val) > 0n, {
|
|
39
|
+
message: "Amount must be greater than 0",
|
|
40
|
+
}),
|
|
41
|
+
z.bigint().refine((val) => val > 0n, {
|
|
42
|
+
message: "Amount must be greater than 0",
|
|
43
|
+
}),
|
|
44
|
+
]);
|
|
45
|
+
/**
|
|
46
|
+
* Approve Token validation schema
|
|
47
|
+
*/
|
|
48
|
+
export const ApproveTokenSchema = z.object({
|
|
49
|
+
tokenAddress: AddressSchema,
|
|
50
|
+
amount: PositiveBigIntStringSchema,
|
|
51
|
+
autoWait: z.boolean().optional(),
|
|
52
|
+
});
|
|
53
|
+
/**
|
|
54
|
+
* Deposit validation schema
|
|
55
|
+
*/
|
|
56
|
+
export const DepositSchema = z.object({
|
|
57
|
+
assetId: UUIDSchema,
|
|
58
|
+
amount: PositiveBigIntStringSchema,
|
|
59
|
+
autoWait: z.boolean().optional(),
|
|
60
|
+
});
|
|
61
|
+
/**
|
|
62
|
+
* Withdraw validation schema
|
|
63
|
+
*/
|
|
64
|
+
export const WithdrawSchema = z.object({
|
|
65
|
+
assetId: UUIDSchema,
|
|
66
|
+
amount: PositiveBigIntStringSchema,
|
|
67
|
+
autoWait: z.boolean().optional(),
|
|
68
|
+
});
|
|
69
|
+
/**
|
|
70
|
+
* Get Balance validation schema
|
|
71
|
+
*/
|
|
72
|
+
export const GetBalanceSchema = z.object({
|
|
73
|
+
tokenAddress: AddressSchema,
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=vault.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/validation/vault.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAEvC;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE;IACnE,OAAO,EAAE,0DAA0D;CACpE,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC;IAChD,CAAC;SACE,MAAM,EAAE;SACR,KAAK,CAAC,OAAO,EAAE,mCAAmC,CAAC;SACnD,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE;QACjC,OAAO,EAAE,+BAA+B;KACzC,CAAC;IACJ,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,EAAE,EAAE;QACnC,OAAO,EAAE,+BAA+B;KACzC,CAAC;CACH,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,YAAY,EAAE,aAAa;IAC3B,MAAM,EAAE,0BAA0B;IAClC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,0BAA0B;IAClC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,OAAO,EAAE,UAAU;IACnB,MAAM,EAAE,0BAA0B;IAClC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACjC,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,YAAY,EAAE,aAAa;CAC5B,CAAC,CAAC"}
|
package/dist/vault/index.d.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Types for vault operations including deposits, withdrawals, and balance management.
|
|
5
5
|
*/
|
|
6
|
-
import type { BaseAPI } from "../api/index
|
|
7
|
-
import type { Balance, TransactionResult } from "./responses
|
|
6
|
+
import type { BaseAPI } from "../api/index";
|
|
7
|
+
import type { Balance, TransactionResult } from "./responses";
|
|
8
8
|
/**
|
|
9
9
|
* Vault API interface.
|
|
10
10
|
* Provides methods for managing token deposits and withdrawals.
|
|
@@ -21,20 +21,20 @@ export interface VaultAPI extends BaseAPI {
|
|
|
21
21
|
approve(token: string, amount: bigint, autoWait?: boolean): Promise<TransactionResult>;
|
|
22
22
|
/**
|
|
23
23
|
* Deposits tokens into the vault.
|
|
24
|
-
* @param
|
|
24
|
+
* @param assetId - Asset identifier (UUID) to deposit
|
|
25
25
|
* @param amount - Amount to deposit
|
|
26
26
|
* @param autoWait - Whether to automatically wait for transaction confirmation (defaults to true)
|
|
27
27
|
* @returns Promise resolving to the transaction result
|
|
28
28
|
*/
|
|
29
|
-
deposit(
|
|
29
|
+
deposit(assetId: string, amount: bigint, autoWait?: boolean): Promise<TransactionResult>;
|
|
30
30
|
/**
|
|
31
31
|
* Withdraws tokens from the vault.
|
|
32
|
-
* @param
|
|
32
|
+
* @param assetId - Asset identifier (UUID) to withdraw
|
|
33
33
|
* @param amount - Amount to withdraw
|
|
34
34
|
* @param autoWait - Whether to automatically wait for transaction confirmation (defaults to true)
|
|
35
35
|
* @returns Promise resolving to the transaction result
|
|
36
36
|
*/
|
|
37
|
-
withdraw(
|
|
37
|
+
withdraw(assetId: string, amount: bigint, autoWait?: boolean): Promise<TransactionResult>;
|
|
38
38
|
/**
|
|
39
39
|
* Gets the balance of a token in the vault.
|
|
40
40
|
* @param token - Address of the token to check
|
|
@@ -60,5 +60,5 @@ export interface VaultAPI extends BaseAPI {
|
|
|
60
60
|
*/
|
|
61
61
|
getVaultAddress(): Promise<string>;
|
|
62
62
|
}
|
|
63
|
-
export type { Balance, TransactionResult } from "./responses
|
|
63
|
+
export type { Balance, TransactionResult } from "./responses";
|
|
64
64
|
//# sourceMappingURL=index.d.ts.map
|