@morpho-org/midnight-sdk 1.8.0 → 2.1.0-next.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/MIGRATION-v1-to-v2.md +6 -0
- package/README.md +17 -15
- package/lib/cjs/abis.d.ts +1870 -1461
- package/lib/cjs/abis.js +2151 -1626
- package/lib/cjs/api/MidnightApi.d.ts +10 -8
- package/lib/cjs/api/MidnightApi.js +13 -11
- package/lib/cjs/api/helpers.d.ts +2 -18
- package/lib/cjs/api/helpers.js +4 -5
- package/lib/cjs/api/types.d.ts +6 -5
- package/lib/cjs/api/version.generated.d.ts +1 -1
- package/lib/cjs/api/version.generated.js +2 -2
- package/lib/cjs/bundlesV2.d.ts +15 -0
- package/lib/cjs/bundlesV2.js +2 -0
- package/lib/cjs/errors.d.ts +13 -27
- package/lib/cjs/errors.js +8 -39
- package/lib/cjs/fetch/Ratifier.js +1 -0
- package/lib/cjs/index.d.ts +1 -0
- package/lib/cjs/position/PositionUtils.js +11 -35
- package/lib/esm/abis.d.ts +1870 -1461
- package/lib/esm/abis.js +2150 -1625
- package/lib/esm/api/MidnightApi.d.ts +10 -8
- package/lib/esm/api/MidnightApi.js +13 -11
- package/lib/esm/api/helpers.d.ts +2 -18
- package/lib/esm/api/helpers.js +8 -5
- package/lib/esm/api/types.d.ts +6 -5
- package/lib/esm/api/version.generated.d.ts +1 -1
- package/lib/esm/api/version.generated.js +2 -2
- package/lib/esm/bundlesV2.d.ts +15 -0
- package/lib/esm/bundlesV2.js +1 -0
- package/lib/esm/errors.d.ts +13 -27
- package/lib/esm/errors.js +8 -36
- package/lib/esm/fetch/Ratifier.js +1 -0
- package/lib/esm/index.d.ts +1 -0
- package/lib/esm/position/PositionUtils.js +12 -36
- package/package.json +8 -7
|
@@ -142,7 +142,7 @@ export declare class MidnightApi {
|
|
|
142
142
|
* @param params.request - Optional fetch options forwarded to this request.
|
|
143
143
|
* @returns ABI-ready take objects mapped from the API response.
|
|
144
144
|
* @throws {MidnightApiError} when the API returns a non-2xx response.
|
|
145
|
-
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address,
|
|
145
|
+
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, or when its units exceed its offer `maxUnits`.
|
|
146
146
|
* @example
|
|
147
147
|
* ```ts
|
|
148
148
|
* import { MidnightApi } from "@morpho-org/midnight-sdk/api";
|
|
@@ -170,11 +170,12 @@ export declare class MidnightApi {
|
|
|
170
170
|
* @param params.baseUrl - Optional Midnight API base URL override.
|
|
171
171
|
* @param params.fetch - Optional fetch implementation override.
|
|
172
172
|
* @param params.request - Optional fetch options forwarded to this request.
|
|
173
|
-
* @returns Quote and
|
|
173
|
+
* @returns Quote and ABI-ready take caps. `averageWorstPrice` equals the caller's guard when provided,
|
|
174
|
+
* otherwise the API's guard.
|
|
174
175
|
* @throws {InvalidMidnightApiQuoteTargetError} when the runtime input does not set exactly one of `units` or `assets`.
|
|
175
176
|
* @throws {NegativeValueError} when `settlementFee` is negative.
|
|
176
177
|
* @throws {MidnightApiError} when the API returns a non-2xx response.
|
|
177
|
-
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, or when the returned offers imply a rounded aggregate settlement price outside the effective average-worst-price guard.
|
|
178
|
+
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, when its units exceed its offer `maxUnits`, or when the returned offers imply a rounded aggregate settlement price outside the effective average-worst-price guard.
|
|
178
179
|
* @throws {SettlementFeeExceedsPriceError} when a bid's settlement fee exceeds its offer price.
|
|
179
180
|
* @example
|
|
180
181
|
* ```ts
|
|
@@ -205,7 +206,7 @@ export declare class MidnightApi {
|
|
|
205
206
|
* @param params.request - Optional fetch options forwarded to this request.
|
|
206
207
|
* @returns Paginated ABI-ready take objects mapped from the API response.
|
|
207
208
|
* @throws {MidnightApiError} when the API returns a non-2xx response.
|
|
208
|
-
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address,
|
|
209
|
+
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, or when its units exceed its offer `maxUnits`.
|
|
209
210
|
* @example
|
|
210
211
|
* ```ts
|
|
211
212
|
* import { MidnightApi } from "@morpho-org/midnight-sdk/api";
|
|
@@ -390,7 +391,7 @@ export declare class MidnightApi {
|
|
|
390
391
|
* @param params.side - Book side to query.
|
|
391
392
|
* @returns ABI-ready take objects mapped from the API response.
|
|
392
393
|
* @throws {MidnightApiError} when the API returns a non-2xx response.
|
|
393
|
-
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address,
|
|
394
|
+
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, or when its units exceed its offer `maxUnits`.
|
|
394
395
|
* @example
|
|
395
396
|
* ```ts
|
|
396
397
|
* import { MidnightApi } from "@morpho-org/midnight-sdk/api";
|
|
@@ -416,11 +417,12 @@ export declare class MidnightApi {
|
|
|
416
417
|
* @param params.averageWorstPrice - Optional WAD-scaled average worst price guard. Mutually exclusive with `params.slippage`.
|
|
417
418
|
* @param params.slippage - Optional slippage percentage used to derive the guard. Mutually exclusive with `params.averageWorstPrice`.
|
|
418
419
|
* @param params.settlementFee - Optional current WAD-scaled settlement fee used for local guard validation. Defaults to zero.
|
|
419
|
-
* @returns Quote and
|
|
420
|
+
* @returns Quote and ABI-ready take caps. `averageWorstPrice` equals the caller's guard when provided,
|
|
421
|
+
* otherwise the API's guard.
|
|
420
422
|
* @throws {InvalidMidnightApiQuoteTargetError} when the runtime input does not set exactly one of `units` or `assets`.
|
|
421
423
|
* @throws {NegativeValueError} when `settlementFee` is negative.
|
|
422
424
|
* @throws {MidnightApiError} when the API returns a non-2xx response.
|
|
423
|
-
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, or when the returned offers imply a rounded aggregate settlement price outside the effective average-worst-price guard.
|
|
425
|
+
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, when its units exceed its offer `maxUnits`, or when the returned offers imply a rounded aggregate settlement price outside the effective average-worst-price guard.
|
|
424
426
|
* @throws {SettlementFeeExceedsPriceError} when a bid's settlement fee exceeds its offer price.
|
|
425
427
|
* @example
|
|
426
428
|
* ```ts
|
|
@@ -448,7 +450,7 @@ export declare class MidnightApi {
|
|
|
448
450
|
* @param params.cursor - Optional opaque pagination cursor from a previous response.
|
|
449
451
|
* @returns Paginated ABI-ready take objects mapped from the API response.
|
|
450
452
|
* @throws {MidnightApiError} when the API returns a non-2xx response.
|
|
451
|
-
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address,
|
|
453
|
+
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, or when its units exceed its offer `maxUnits`.
|
|
452
454
|
* @example
|
|
453
455
|
* ```ts
|
|
454
456
|
* import { MidnightApi } from "@morpho-org/midnight-sdk/api";
|
|
@@ -203,7 +203,7 @@ export class MidnightApi {
|
|
|
203
203
|
* @param params.request - Optional fetch options forwarded to this request.
|
|
204
204
|
* @returns ABI-ready take objects mapped from the API response.
|
|
205
205
|
* @throws {MidnightApiError} when the API returns a non-2xx response.
|
|
206
|
-
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address,
|
|
206
|
+
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, or when its units exceed its offer `maxUnits`.
|
|
207
207
|
* @example
|
|
208
208
|
* ```ts
|
|
209
209
|
* import { MidnightApi } from "@morpho-org/midnight-sdk/api";
|
|
@@ -248,11 +248,12 @@ export class MidnightApi {
|
|
|
248
248
|
* @param params.baseUrl - Optional Midnight API base URL override.
|
|
249
249
|
* @param params.fetch - Optional fetch implementation override.
|
|
250
250
|
* @param params.request - Optional fetch options forwarded to this request.
|
|
251
|
-
* @returns Quote and
|
|
251
|
+
* @returns Quote and ABI-ready take caps. `averageWorstPrice` equals the caller's guard when provided,
|
|
252
|
+
* otherwise the API's guard.
|
|
252
253
|
* @throws {InvalidMidnightApiQuoteTargetError} when the runtime input does not set exactly one of `units` or `assets`.
|
|
253
254
|
* @throws {NegativeValueError} when `settlementFee` is negative.
|
|
254
255
|
* @throws {MidnightApiError} when the API returns a non-2xx response.
|
|
255
|
-
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, or when the returned offers imply a rounded aggregate settlement price outside the effective average-worst-price guard.
|
|
256
|
+
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, when its units exceed its offer `maxUnits`, or when the returned offers imply a rounded aggregate settlement price outside the effective average-worst-price guard.
|
|
256
257
|
* @throws {SettlementFeeExceedsPriceError} when a bid's settlement fee exceeds its offer price.
|
|
257
258
|
* @example
|
|
258
259
|
* ```ts
|
|
@@ -297,8 +298,8 @@ export class MidnightApi {
|
|
|
297
298
|
: "slippage" in input && input.slippage != null
|
|
298
299
|
? response.data.average_worst_price
|
|
299
300
|
: undefined;
|
|
300
|
-
|
|
301
|
-
|
|
301
|
+
const guard = averageWorstPrice == null ? undefined : BigInt(averageWorstPrice);
|
|
302
|
+
if (guard != null) {
|
|
302
303
|
let filledUnits = 0n;
|
|
303
304
|
let filledAssets = 0n;
|
|
304
305
|
if ("units" in input && input.units != null) {
|
|
@@ -355,7 +356,7 @@ export class MidnightApi {
|
|
|
355
356
|
return {
|
|
356
357
|
data: {
|
|
357
358
|
averageBestPrice: response.data.average_best_price,
|
|
358
|
-
averageWorstPrice: response.data.average_worst_price,
|
|
359
|
+
averageWorstPrice: guard?.toString() ?? response.data.average_worst_price,
|
|
359
360
|
availableAssets: response.data.available_assets,
|
|
360
361
|
availableUnits: response.data.available_units,
|
|
361
362
|
takeableOffers,
|
|
@@ -377,7 +378,7 @@ export class MidnightApi {
|
|
|
377
378
|
* @param params.request - Optional fetch options forwarded to this request.
|
|
378
379
|
* @returns Paginated ABI-ready take objects mapped from the API response.
|
|
379
380
|
* @throws {MidnightApiError} when the API returns a non-2xx response.
|
|
380
|
-
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address,
|
|
381
|
+
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, or when its units exceed its offer `maxUnits`.
|
|
381
382
|
* @example
|
|
382
383
|
* ```ts
|
|
383
384
|
* import { MidnightApi } from "@morpho-org/midnight-sdk/api";
|
|
@@ -625,7 +626,7 @@ export class MidnightApi {
|
|
|
625
626
|
* @param params.side - Book side to query.
|
|
626
627
|
* @returns ABI-ready take objects mapped from the API response.
|
|
627
628
|
* @throws {MidnightApiError} when the API returns a non-2xx response.
|
|
628
|
-
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address,
|
|
629
|
+
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, or when its units exceed its offer `maxUnits`.
|
|
629
630
|
* @example
|
|
630
631
|
* ```ts
|
|
631
632
|
* import { MidnightApi } from "@morpho-org/midnight-sdk/api";
|
|
@@ -656,11 +657,12 @@ export class MidnightApi {
|
|
|
656
657
|
* @param params.averageWorstPrice - Optional WAD-scaled average worst price guard. Mutually exclusive with `params.slippage`.
|
|
657
658
|
* @param params.slippage - Optional slippage percentage used to derive the guard. Mutually exclusive with `params.averageWorstPrice`.
|
|
658
659
|
* @param params.settlementFee - Optional current WAD-scaled settlement fee used for local guard validation. Defaults to zero.
|
|
659
|
-
* @returns Quote and
|
|
660
|
+
* @returns Quote and ABI-ready take caps. `averageWorstPrice` equals the caller's guard when provided,
|
|
661
|
+
* otherwise the API's guard.
|
|
660
662
|
* @throws {InvalidMidnightApiQuoteTargetError} when the runtime input does not set exactly one of `units` or `assets`.
|
|
661
663
|
* @throws {NegativeValueError} when `settlementFee` is negative.
|
|
662
664
|
* @throws {MidnightApiError} when the API returns a non-2xx response.
|
|
663
|
-
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, or when the returned offers imply a rounded aggregate settlement price outside the effective average-worst-price guard.
|
|
665
|
+
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, when its units exceed its offer `maxUnits`, or when the returned offers imply a rounded aggregate settlement price outside the effective average-worst-price guard.
|
|
664
666
|
* @throws {SettlementFeeExceedsPriceError} when a bid's settlement fee exceeds its offer price.
|
|
665
667
|
* @example
|
|
666
668
|
* ```ts
|
|
@@ -693,7 +695,7 @@ export class MidnightApi {
|
|
|
693
695
|
* @param params.cursor - Optional opaque pagination cursor from a previous response.
|
|
694
696
|
* @returns Paginated ABI-ready take objects mapped from the API response.
|
|
695
697
|
* @throws {MidnightApiError} when the API returns a non-2xx response.
|
|
696
|
-
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address,
|
|
698
|
+
* @throws {InvalidMidnightApiResponseError} when the API success response is not JSON, when a returned offer cannot be mapped (malformed numeric or hex fields), when its `market_id` does not match, or cannot be derived from, its embedded market, when it falls outside the requested filters, when its `receiverIfMakerIsSeller` is not a well-formed address, when its caps or buy-side receiver are not executable, or when its units exceed its offer `maxUnits`.
|
|
697
699
|
* @example
|
|
698
700
|
* ```ts
|
|
699
701
|
* import { MidnightApi } from "@morpho-org/midnight-sdk/api";
|
package/lib/esm/api/helpers.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { type Address, type Hash } from "viem";
|
|
2
|
-
import { type ApiBookMarketResponse, type
|
|
2
|
+
import { type ApiBookMarketResponse, type ApiPriceLevelResponse, type ApiRequestParams, type ApiTakeableOfferResponse, type MempoolPayloadValidationResult, type MidnightApiBookMarket, type MidnightApiBookSide, type MidnightApiPriceLevel, type MidnightApiTake } from "./types.js";
|
|
3
3
|
/** @internal Sends one Midnight API request and maps non-2xx responses to SDK errors. */
|
|
4
4
|
export declare function requestMidnightApi<Response = unknown>(params: ApiRequestParams): Promise<Response>;
|
|
5
5
|
/** @internal Builds a book endpoint path with encoded path segments. */
|
|
@@ -8,16 +8,6 @@ export declare function buildBookPath(params: {
|
|
|
8
8
|
readonly side?: MidnightApiBookSide;
|
|
9
9
|
readonly suffix?: "quote" | "takeable-offers";
|
|
10
10
|
}): string;
|
|
11
|
-
/**
|
|
12
|
-
* @internal Maps a book market API payload to the SDK response shape, rejecting any
|
|
13
|
-
* response whose advertised `market_id` cannot be derived from — or does not match —
|
|
14
|
-
* its own market params. Recomputing the id with `MarketUtils.toId` (mirroring the
|
|
15
|
-
* takeable-offers path) stops a hostile API from pairing a trusted id with foreign
|
|
16
|
-
* metadata; every book flows through here, so both bound paths reject the same substitution.
|
|
17
|
-
* Collaterals are returned in the protocol's canonical order so their array index matches
|
|
18
|
-
* the onchain `collateralIndex`.
|
|
19
|
-
*/
|
|
20
|
-
export declare function mapBookMarket(book: ApiBookMarketResponse): MidnightApiBookMarket;
|
|
21
11
|
/** @internal Maps a book market, binding its verified id to the requested market. */
|
|
22
12
|
export declare function mapBoundBookMarket(book: ApiBookMarketResponse, requestedMarketId: Hash): MidnightApiBookMarket;
|
|
23
13
|
/** @internal Requested `fetchBooks` filters that every returned book must satisfy. */
|
|
@@ -30,14 +20,8 @@ export interface BookFilterContext {
|
|
|
30
20
|
}
|
|
31
21
|
/** @internal Maps listed book markets, binding each verified id to requested filters when present. */
|
|
32
22
|
export declare function mapBoundBooks(books: readonly ApiBookMarketResponse[], context?: BookFilterContext): MidnightApiBookMarket[];
|
|
33
|
-
/** @internal Maps a collateral API payload to the SDK response shape. */
|
|
34
|
-
export declare function mapCollateral(collateral: ApiCollateralResponse): MidnightApiCollateral;
|
|
35
|
-
/** @internal Maps a price-level API payload to the SDK response shape. */
|
|
36
|
-
export declare function mapPriceLevel(level: ApiPriceLevelResponse): MidnightApiPriceLevel;
|
|
37
23
|
/** @internal Maps API price levels and sorts them best first: asks by ascending tick, bids by descending tick. */
|
|
38
24
|
export declare function mapPriceLevels(levels: readonly ApiPriceLevelResponse[], side: MidnightApiBookSide): MidnightApiPriceLevel[];
|
|
39
|
-
/** @internal Maps a takeable-offer API payload to the SDK response shape. */
|
|
40
|
-
export declare function mapTakeableOffer(takeableOffer: ApiTakeableOfferResponse): MidnightApiTake;
|
|
41
25
|
/** @internal API response context required for a takeable offer to be executable for the caller's request. */
|
|
42
26
|
export interface TakeableOfferContext {
|
|
43
27
|
readonly marketId?: Hash;
|
|
@@ -46,7 +30,7 @@ export interface TakeableOfferContext {
|
|
|
46
30
|
readonly marketIds?: readonly Hash[];
|
|
47
31
|
readonly groups?: readonly Hash[];
|
|
48
32
|
}
|
|
49
|
-
/** @internal Maps, validates, and best-price-sorts API takeable offers. */
|
|
33
|
+
/** @internal Maps, validates offer caps and units, and best-price-sorts API takeable offers. */
|
|
50
34
|
export declare function mapBoundTakeableOffers(takeableOffers: readonly ApiTakeableOfferResponse[], context: TakeableOfferContext): MidnightApiTake[];
|
|
51
35
|
/** @internal Parses the mempool validation response envelope. */
|
|
52
36
|
export declare function parseValidationResponse(response: unknown): MempoolPayloadValidationResult;
|
package/lib/esm/api/helpers.js
CHANGED
|
@@ -90,7 +90,7 @@ export function buildBookPath(params) {
|
|
|
90
90
|
* Collaterals are returned in the protocol's canonical order so their array index matches
|
|
91
91
|
* the onchain `collateralIndex`.
|
|
92
92
|
*/
|
|
93
|
-
|
|
93
|
+
function mapBookMarket(book) {
|
|
94
94
|
let derivedMarketId;
|
|
95
95
|
let matchesAdvertisedId;
|
|
96
96
|
try {
|
|
@@ -177,7 +177,7 @@ export function mapBoundBooks(books, context = {}) {
|
|
|
177
177
|
});
|
|
178
178
|
}
|
|
179
179
|
/** @internal Maps a collateral API payload to the SDK response shape. */
|
|
180
|
-
|
|
180
|
+
function mapCollateral(collateral) {
|
|
181
181
|
return {
|
|
182
182
|
token: collateral.token,
|
|
183
183
|
lltv: collateral.lltv,
|
|
@@ -186,7 +186,7 @@ export function mapCollateral(collateral) {
|
|
|
186
186
|
};
|
|
187
187
|
}
|
|
188
188
|
/** @internal Maps a price-level API payload to the SDK response shape. */
|
|
189
|
-
|
|
189
|
+
function mapPriceLevel(level) {
|
|
190
190
|
return {
|
|
191
191
|
tick: level.tick,
|
|
192
192
|
price: level.price,
|
|
@@ -202,7 +202,7 @@ export function mapPriceLevels(levels, side) {
|
|
|
202
202
|
.sort((a, b) => (side === "asks" ? a.tick - b.tick : b.tick - a.tick));
|
|
203
203
|
}
|
|
204
204
|
/** @internal Maps a takeable-offer API payload to the SDK response shape. */
|
|
205
|
-
|
|
205
|
+
function mapTakeableOffer(takeableOffer) {
|
|
206
206
|
const offer = takeableOffer.offer;
|
|
207
207
|
return {
|
|
208
208
|
marketId: takeableOffer.market_id,
|
|
@@ -241,7 +241,7 @@ export function mapTakeableOffer(takeableOffer) {
|
|
|
241
241
|
ratifierData: takeableOffer.ratifier_data,
|
|
242
242
|
};
|
|
243
243
|
}
|
|
244
|
-
/** @internal Maps, validates, and best-price-sorts API takeable offers. */
|
|
244
|
+
/** @internal Maps, validates offer caps and units, and best-price-sorts API takeable offers. */
|
|
245
245
|
export function mapBoundTakeableOffers(takeableOffers, context) {
|
|
246
246
|
const mapped = takeableOffers.map((takeableOffer) => {
|
|
247
247
|
let take;
|
|
@@ -276,6 +276,9 @@ export function mapBoundTakeableOffers(takeableOffers, context) {
|
|
|
276
276
|
throw cause;
|
|
277
277
|
throw new InvalidMidnightApiResponseError(`Midnight API takeable offer for market_id "${take.marketId}" is not executable: ${cause.message}`, { cause });
|
|
278
278
|
}
|
|
279
|
+
if (maxUnits > 0n && take.units > maxUnits) {
|
|
280
|
+
throw new InvalidMidnightApiResponseError(`Midnight API takeable offer for market_id "${take.marketId}" reports units "${take.units}" above offer maxUnits "${maxUnits}".`);
|
|
281
|
+
}
|
|
279
282
|
if (context.marketId != null &&
|
|
280
283
|
!isHexEqual(take.marketId, context.marketId)) {
|
|
281
284
|
throw new InvalidMidnightApiResponseError(`Midnight API takeable offer market_id "${take.marketId}" does not match requested market "${context.marketId}".`);
|
package/lib/esm/api/types.d.ts
CHANGED
|
@@ -409,7 +409,7 @@ export interface MidnightApiBookPriceLevelsResult {
|
|
|
409
409
|
export interface MidnightApiQuote {
|
|
410
410
|
/** Weighted average price for the requested size before any guard. */
|
|
411
411
|
readonly averageBestPrice: string;
|
|
412
|
-
/**
|
|
412
|
+
/** Equals the caller's `averageWorstPrice` when provided, otherwise the API's guard. */
|
|
413
413
|
readonly averageWorstPrice: string;
|
|
414
414
|
/** Maximum assets available from the returned take caps. */
|
|
415
415
|
readonly availableAssets: string;
|
|
@@ -440,9 +440,9 @@ export interface MidnightApiTakeableOffersResult {
|
|
|
440
440
|
readonly data: readonly MidnightApiTake[];
|
|
441
441
|
}
|
|
442
442
|
/** @internal HTTP method owned by Midnight API helpers. */
|
|
443
|
-
|
|
443
|
+
type ApiMethod = "GET" | "POST";
|
|
444
444
|
/** @internal Query values serializable by Midnight API helpers. */
|
|
445
|
-
|
|
445
|
+
type QueryValue = string | number | bigint | boolean | Date | readonly string[] | readonly number[] | undefined;
|
|
446
446
|
/** @internal Request descriptor consumed by the Midnight API HTTP helper. */
|
|
447
447
|
export type ApiRequestParams = MidnightApiConfig & {
|
|
448
448
|
readonly method: ApiMethod;
|
|
@@ -493,7 +493,7 @@ export type ApiPriceLevelsResponse = {
|
|
|
493
493
|
readonly data: readonly ApiPriceLevelResponse[];
|
|
494
494
|
};
|
|
495
495
|
/** @internal Offer market response shape returned by the API. */
|
|
496
|
-
|
|
496
|
+
type ApiOfferMarketResponse = {
|
|
497
497
|
readonly chain_id: number;
|
|
498
498
|
readonly midnight: Address;
|
|
499
499
|
readonly loan_token: Address;
|
|
@@ -504,7 +504,7 @@ export type ApiOfferMarketResponse = {
|
|
|
504
504
|
readonly liquidator_gate: Address;
|
|
505
505
|
};
|
|
506
506
|
/** @internal Inline offer response shape returned by the API. */
|
|
507
|
-
|
|
507
|
+
type ApiOfferResponse = {
|
|
508
508
|
readonly market: ApiOfferMarketResponse;
|
|
509
509
|
readonly buy: boolean;
|
|
510
510
|
readonly maker: Address;
|
|
@@ -547,3 +547,4 @@ export type ApiTakeableOffersResponse = {
|
|
|
547
547
|
readonly cursor: string | null;
|
|
548
548
|
readonly data: readonly ApiTakeableOfferResponse[];
|
|
549
549
|
};
|
|
550
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
/** @internal Installed Midnight SDK package version. */
|
|
2
|
-
export declare const MIDNIGHT_SDK_VERSION = "1.
|
|
2
|
+
export declare const MIDNIGHT_SDK_VERSION = "2.1.0-next.0";
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
// Generated by scripts/
|
|
1
|
+
// Generated by scripts/generate-midnight-package-version.ts. Do not edit.
|
|
2
2
|
/** @internal Installed Midnight SDK package version. */
|
|
3
|
-
export const MIDNIGHT_SDK_VERSION = "1.
|
|
3
|
+
export const MIDNIGHT_SDK_VERSION = "2.1.0-next.0";
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Hex } from "viem";
|
|
2
|
+
/** `MidnightBundlesV2` group cancellation: marks `group` fully consumed if its consumption is at most `maxConsumed`. */
|
|
3
|
+
export interface GroupCancellation {
|
|
4
|
+
/** Offer group id. */
|
|
5
|
+
readonly group: Hex;
|
|
6
|
+
/** Largest current group consumption accepted (uint128); the whole call reverts above it. */
|
|
7
|
+
readonly maxConsumed: bigint;
|
|
8
|
+
}
|
|
9
|
+
/** `MidnightBundlesV2` collateral transfer: `assets` of the market collateral at `collateralIndex`. */
|
|
10
|
+
export interface CollateralTransfer {
|
|
11
|
+
/** Index of the collateral in the market's `collateralParams`. */
|
|
12
|
+
readonly collateralIndex: bigint;
|
|
13
|
+
/** Collateral assets. */
|
|
14
|
+
readonly assets: bigint;
|
|
15
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/lib/esm/errors.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { InvalidPositionAccrualStateError as SharedInvalidPositionAccrualStateError, InvalidPositionAccrualTimestampError as SharedInvalidPositionAccrualTimestampError, InvalidPositionLossFactorError as SharedInvalidPositionLossFactorError } from "@morpho-org/morpho-ts";
|
|
1
2
|
import type { Address } from "viem";
|
|
2
3
|
import type { MempoolPayloadValidationIssue } from "./api/types.js";
|
|
3
4
|
/**
|
|
@@ -70,42 +71,27 @@ export declare class SettlementFeeExceedsPriceError extends Error {
|
|
|
70
71
|
/**
|
|
71
72
|
* Thrown when a local position accrual is requested for an impossible timestamp.
|
|
72
73
|
*
|
|
73
|
-
* @
|
|
74
|
-
* ```ts
|
|
75
|
-
* import { InvalidPositionAccrualTimestampError } from "@morpho-org/midnight-sdk";
|
|
76
|
-
*
|
|
77
|
-
* throw new InvalidPositionAccrualTimestampError(1n, 2n);
|
|
78
|
-
* ```
|
|
74
|
+
* @deprecated Import `InvalidPositionAccrualTimestampError` from `@morpho-org/morpho-ts`. Removed in the next major.
|
|
79
75
|
*/
|
|
80
|
-
export declare
|
|
81
|
-
|
|
82
|
-
|
|
76
|
+
export declare const InvalidPositionAccrualTimestampError: typeof SharedInvalidPositionAccrualTimestampError;
|
|
77
|
+
/** @deprecated Import `InvalidPositionAccrualTimestampError` from `@morpho-org/morpho-ts`. Removed in the next major. */
|
|
78
|
+
export type InvalidPositionAccrualTimestampError = SharedInvalidPositionAccrualTimestampError;
|
|
83
79
|
/**
|
|
84
80
|
* Thrown when a local position accrual sees a market loss factor older than the position.
|
|
85
81
|
*
|
|
86
|
-
* @
|
|
87
|
-
* ```ts
|
|
88
|
-
* import { InvalidPositionLossFactorError } from "@morpho-org/midnight-sdk";
|
|
89
|
-
*
|
|
90
|
-
* throw new InvalidPositionLossFactorError(1n, 2n);
|
|
91
|
-
* ```
|
|
82
|
+
* @deprecated Import `InvalidPositionLossFactorError` from `@morpho-org/morpho-ts`. Removed in the next major.
|
|
92
83
|
*/
|
|
93
|
-
export declare
|
|
94
|
-
|
|
95
|
-
|
|
84
|
+
export declare const InvalidPositionLossFactorError: typeof SharedInvalidPositionLossFactorError;
|
|
85
|
+
/** @deprecated Import `InvalidPositionLossFactorError` from `@morpho-org/morpho-ts`. Removed in the next major. */
|
|
86
|
+
export type InvalidPositionLossFactorError = SharedInvalidPositionLossFactorError;
|
|
96
87
|
/**
|
|
97
88
|
* Thrown when local position accrual inputs violate Midnight accounting invariants.
|
|
98
89
|
*
|
|
99
|
-
* @
|
|
100
|
-
* ```ts
|
|
101
|
-
* import { InvalidPositionAccrualStateError } from "@morpho-org/midnight-sdk";
|
|
102
|
-
*
|
|
103
|
-
* throw new InvalidPositionAccrualStateError("Pending fee exceeds credit.");
|
|
104
|
-
* ```
|
|
90
|
+
* @deprecated Import `InvalidPositionAccrualStateError` from `@morpho-org/morpho-ts`. Removed in the next major.
|
|
105
91
|
*/
|
|
106
|
-
export declare
|
|
107
|
-
|
|
108
|
-
|
|
92
|
+
export declare const InvalidPositionAccrualStateError: typeof SharedInvalidPositionAccrualStateError;
|
|
93
|
+
/** @deprecated Import `InvalidPositionAccrualStateError` from `@morpho-org/morpho-ts`. Removed in the next major. */
|
|
94
|
+
export type InvalidPositionAccrualStateError = SharedInvalidPositionAccrualStateError;
|
|
109
95
|
/**
|
|
110
96
|
* Thrown when a market parameter cannot satisfy Midnight protocol rules.
|
|
111
97
|
*
|
package/lib/esm/errors.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { InvalidPositionAccrualStateError as SharedInvalidPositionAccrualStateError, InvalidPositionAccrualTimestampError as SharedInvalidPositionAccrualTimestampError, InvalidPositionLossFactorError as SharedInvalidPositionLossFactorError, } from "@morpho-org/morpho-ts";
|
|
1
2
|
/**
|
|
2
3
|
* Thrown when a Midnight offer group violates protocol-level group mechanics.
|
|
3
4
|
*
|
|
@@ -81,54 +82,25 @@ export class SettlementFeeExceedsPriceError extends Error {
|
|
|
81
82
|
this.name = "SettlementFeeExceedsPriceError";
|
|
82
83
|
}
|
|
83
84
|
}
|
|
85
|
+
// Temporary compatibility exception for these shared morpho-ts errors.
|
|
84
86
|
/**
|
|
85
87
|
* Thrown when a local position accrual is requested for an impossible timestamp.
|
|
86
88
|
*
|
|
87
|
-
* @
|
|
88
|
-
* ```ts
|
|
89
|
-
* import { InvalidPositionAccrualTimestampError } from "@morpho-org/midnight-sdk";
|
|
90
|
-
*
|
|
91
|
-
* throw new InvalidPositionAccrualTimestampError(1n, 2n);
|
|
92
|
-
* ```
|
|
89
|
+
* @deprecated Import `InvalidPositionAccrualTimestampError` from `@morpho-org/morpho-ts`. Removed in the next major.
|
|
93
90
|
*/
|
|
94
|
-
export
|
|
95
|
-
constructor(timestamp, lastAccrual) {
|
|
96
|
-
super(`Position accrual timestamp "${timestamp}" is before last accrual "${lastAccrual}". Use a timestamp greater than or equal to last accrual.`);
|
|
97
|
-
this.name = "InvalidPositionAccrualTimestampError";
|
|
98
|
-
}
|
|
99
|
-
}
|
|
91
|
+
export const InvalidPositionAccrualTimestampError = SharedInvalidPositionAccrualTimestampError;
|
|
100
92
|
/**
|
|
101
93
|
* Thrown when a local position accrual sees a market loss factor older than the position.
|
|
102
94
|
*
|
|
103
|
-
* @
|
|
104
|
-
* ```ts
|
|
105
|
-
* import { InvalidPositionLossFactorError } from "@morpho-org/midnight-sdk";
|
|
106
|
-
*
|
|
107
|
-
* throw new InvalidPositionLossFactorError(1n, 2n);
|
|
108
|
-
* ```
|
|
95
|
+
* @deprecated Import `InvalidPositionLossFactorError` from `@morpho-org/morpho-ts`. Removed in the next major.
|
|
109
96
|
*/
|
|
110
|
-
export
|
|
111
|
-
constructor(marketLossFactor, positionLossFactor) {
|
|
112
|
-
super(`Market loss factor "${marketLossFactor}" is below position loss factor "${positionLossFactor}". Fetch a consistent market and position at the same block.`);
|
|
113
|
-
this.name = "InvalidPositionLossFactorError";
|
|
114
|
-
}
|
|
115
|
-
}
|
|
97
|
+
export const InvalidPositionLossFactorError = SharedInvalidPositionLossFactorError;
|
|
116
98
|
/**
|
|
117
99
|
* Thrown when local position accrual inputs violate Midnight accounting invariants.
|
|
118
100
|
*
|
|
119
|
-
* @
|
|
120
|
-
* ```ts
|
|
121
|
-
* import { InvalidPositionAccrualStateError } from "@morpho-org/midnight-sdk";
|
|
122
|
-
*
|
|
123
|
-
* throw new InvalidPositionAccrualStateError("Pending fee exceeds credit.");
|
|
124
|
-
* ```
|
|
101
|
+
* @deprecated Import `InvalidPositionAccrualStateError` from `@morpho-org/morpho-ts`. Removed in the next major.
|
|
125
102
|
*/
|
|
126
|
-
export
|
|
127
|
-
constructor(reason) {
|
|
128
|
-
super(`Invalid Midnight position accrual state. ${reason}`);
|
|
129
|
-
this.name = "InvalidPositionAccrualStateError";
|
|
130
|
-
}
|
|
131
|
-
}
|
|
103
|
+
export const InvalidPositionAccrualStateError = SharedInvalidPositionAccrualStateError;
|
|
132
104
|
/**
|
|
133
105
|
* Thrown when a market parameter cannot satisfy Midnight protocol rules.
|
|
134
106
|
*
|
|
@@ -39,6 +39,7 @@ export async function fetchRatifierInfo(client, params) {
|
|
|
39
39
|
const chainId = await resolveChainId(client);
|
|
40
40
|
const ecrecoverRatifier = getChainAddress(chainId, "ecrecoverRatifier");
|
|
41
41
|
const setterRatifier = getChainAddress(chainId, "setterRatifier");
|
|
42
|
+
// eth_getCode is trusted; the returned ratifier is a suggestion the caller commits to on Offer.create. See THREAT_MODEL.md, RPC.
|
|
42
43
|
const bytecode = await getBytecode(client, {
|
|
43
44
|
...(params.blockNumber != null
|
|
44
45
|
? { blockNumber: params.blockNumber }
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { MathLib } from "@morpho-org/morpho-ts";
|
|
2
|
-
import { InvalidPositionAccrualStateError, InvalidPositionAccrualTimestampError, InvalidPositionLossFactorError, } from "../errors.js";
|
|
1
|
+
import { MathLib, MidnightPositionLib, } from "@morpho-org/morpho-ts";
|
|
3
2
|
/**
|
|
4
3
|
* Domain helpers for Midnight positions.
|
|
5
4
|
*
|
|
@@ -132,40 +131,17 @@ export var PositionUtils;
|
|
|
132
131
|
*/
|
|
133
132
|
function accrueInterest(params) {
|
|
134
133
|
const timestamp = BigInt(params.timestamp);
|
|
135
|
-
const credit = BigInt(params.position.credit);
|
|
136
|
-
const pendingFee = BigInt(params.position.pendingFee);
|
|
137
|
-
const lastLossFactor = BigInt(params.position.lastLossFactor);
|
|
138
|
-
const lastAccrual = BigInt(params.position.lastAccrual);
|
|
139
134
|
const marketLossFactor = BigInt(params.market.lossFactor);
|
|
140
|
-
if (timestamp < lastAccrual) {
|
|
141
|
-
throw new InvalidPositionAccrualTimestampError(timestamp, lastAccrual);
|
|
142
|
-
}
|
|
143
|
-
if (marketLossFactor < lastLossFactor) {
|
|
144
|
-
throw new InvalidPositionLossFactorError(marketLossFactor, lastLossFactor);
|
|
145
|
-
}
|
|
146
|
-
if (pendingFee > credit) {
|
|
147
|
-
throw new InvalidPositionAccrualStateError("Pending fee must be less than or equal to credit.");
|
|
148
|
-
}
|
|
149
|
-
const postSlashCredit = lastLossFactor < MathLib.MAX_UINT_128
|
|
150
|
-
? MathLib.mulDivDown(credit, MathLib.MAX_UINT_128 - marketLossFactor, MathLib.MAX_UINT_128 - lastLossFactor)
|
|
151
|
-
: 0n;
|
|
152
|
-
if (postSlashCredit > credit) {
|
|
153
|
-
throw new InvalidPositionAccrualStateError("Post-slash credit cannot exceed stored credit.");
|
|
154
|
-
}
|
|
155
|
-
const creditDecrease = credit - postSlashCredit;
|
|
156
|
-
const pendingFeeDecrease = credit > 0n ? MathLib.mulDivUp(pendingFee, creditDecrease, credit) : 0n;
|
|
157
|
-
if (pendingFeeDecrease > pendingFee) {
|
|
158
|
-
throw new InvalidPositionAccrualStateError("Pending-fee decrease cannot exceed pending fee.");
|
|
159
|
-
}
|
|
160
|
-
const postSlashPendingFee = pendingFee - pendingFeeDecrease;
|
|
161
135
|
const maturity = BigInt(params.market.params.maturity);
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
:
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
136
|
+
const { credit, pendingFee, accruedFee } = MidnightPositionLib.accrue({
|
|
137
|
+
credit: params.position.credit,
|
|
138
|
+
pendingFee: params.position.pendingFee,
|
|
139
|
+
lastLossFactor: params.position.lastLossFactor,
|
|
140
|
+
lastAccrual: params.position.lastAccrual,
|
|
141
|
+
marketLossFactor,
|
|
142
|
+
maturity,
|
|
143
|
+
timestamp,
|
|
144
|
+
});
|
|
169
145
|
const collateral = params.position.collateral.map((assets) => BigInt(assets));
|
|
170
146
|
const collateralParams = params.market.params.collateralParams.map((collateralParam) => ({
|
|
171
147
|
token: collateralParam.token,
|
|
@@ -196,8 +172,8 @@ export var PositionUtils;
|
|
|
196
172
|
position: {
|
|
197
173
|
user: params.position.user,
|
|
198
174
|
marketId: params.position.marketId,
|
|
199
|
-
credit
|
|
200
|
-
pendingFee
|
|
175
|
+
credit,
|
|
176
|
+
pendingFee,
|
|
201
177
|
lastLossFactor: marketLossFactor,
|
|
202
178
|
lastAccrual: timestamp,
|
|
203
179
|
debt: BigInt(params.position.debt),
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@morpho-org/midnight-sdk",
|
|
3
3
|
"description": "Viem-based package for Morpho Midnight that exports protocol utilities, fetch helpers, and Midnight API utilities under a dedicated API subpath.",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "2.1.0-next.0",
|
|
5
5
|
"author": "Morpho Association <contact@morpho.org>",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -37,19 +37,20 @@
|
|
|
37
37
|
},
|
|
38
38
|
"sideEffects": false,
|
|
39
39
|
"files": [
|
|
40
|
-
"lib"
|
|
40
|
+
"lib",
|
|
41
|
+
"MIGRATION-v1-to-v2.md"
|
|
41
42
|
],
|
|
42
43
|
"peerDependencies": {
|
|
43
|
-
"@morpho-org/morpho-ts": "^
|
|
44
|
+
"@morpho-org/morpho-ts": "^4.1.0-0",
|
|
44
45
|
"viem": "^2.0.0"
|
|
45
46
|
},
|
|
46
47
|
"devDependencies": {
|
|
48
|
+
"@morpho-org/morpho-ts": "^4.1.0-next.0",
|
|
49
|
+
"@morpho-org/test": "^2.11.0-next.0",
|
|
47
50
|
"fast-check": "^4.9.0",
|
|
48
51
|
"typescript": "7.0.2",
|
|
49
52
|
"viem": "^2.55.10",
|
|
50
|
-
"vitest": "^4.1.11"
|
|
51
|
-
"@morpho-org/morpho-ts": "^3.1.0",
|
|
52
|
-
"@morpho-org/test": "^2.10.0"
|
|
53
|
+
"vitest": "^4.1.11"
|
|
53
54
|
},
|
|
54
55
|
"scripts": {
|
|
55
56
|
"prepublish": "pnpm build",
|
|
@@ -57,7 +58,7 @@
|
|
|
57
58
|
"build": "pnpm generate:version && tsc --noEmit && pnpm build:cjs && pnpm build:esm",
|
|
58
59
|
"build:cjs": "tsc --build tsconfig.build.cjs.json && echo '{\"type\":\"commonjs\"}' > lib/cjs/package.json",
|
|
59
60
|
"build:esm": "tsc --build tsconfig.build.esm.json && echo '{\"type\":\"module\"}' > lib/esm/package.json",
|
|
60
|
-
"generate:version": "node ../../scripts/
|
|
61
|
+
"generate:version": "node ../../scripts/generate-midnight-package-version.ts",
|
|
61
62
|
"test": "vitest --root ../.. --project midnight-sdk --project midnight-sdk-fork"
|
|
62
63
|
},
|
|
63
64
|
"types": "./lib/esm/index.d.ts"
|