@morpho-dev/router 0.0.13 → 0.0.15

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.
@@ -1,8 +1,11 @@
1
- import { Offer, Errors } from '@morpho-dev/mempool';
1
+ import { Offer, Errors, Format } from '@morpho-dev/mempool';
2
2
  export * from '@morpho-dev/mempool';
3
3
  import * as viem from 'viem';
4
4
  import { Address, PublicClient } from 'viem';
5
5
  import { Chain as Chain$2 } from 'viem/chains';
6
+ import * as zod_v4_core from 'zod/v4/core';
7
+ import * as zod_v4 from 'zod/v4';
8
+ import { z, ZodError } from 'zod/v4';
6
9
 
7
10
  type Compute<type> = {
8
11
  [key in keyof type]: type[key];
@@ -42,16 +45,91 @@ type OfferMetadata = {
42
45
  issue: string;
43
46
  };
44
47
  type RouterOffer = Offer.Offer & {
48
+ consumed: bigint;
45
49
  status: OfferStatus;
46
50
  metadata?: OfferMetadata;
47
51
  };
52
+ declare const RouterOfferSchema: (parameters?: {
53
+ omitHash?: boolean;
54
+ }) => zod_v4.ZodObject<{
55
+ offering: zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>;
56
+ assets: zod_v4.ZodBigInt;
57
+ rate: zod_v4.ZodBigInt;
58
+ maturity: zod_v4.ZodNumber;
59
+ expiry: zod_v4.ZodNumber;
60
+ start: zod_v4.ZodNumber;
61
+ nonce: zod_v4.ZodBigInt;
62
+ buy: zod_v4.ZodBoolean;
63
+ chainId: zod_v4.ZodBigInt;
64
+ loanToken: zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>;
65
+ collaterals: zod_v4.ZodArray<zod_v4.ZodObject<{
66
+ asset: zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>;
67
+ oracle: zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>;
68
+ lltv: zod_v4.ZodBigInt;
69
+ }, zod_v4_core.$strip>>;
70
+ callback: zod_v4.ZodObject<{
71
+ address: zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>;
72
+ data: zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>;
73
+ gasLimit: zod_v4.ZodBigInt;
74
+ }, zod_v4_core.$strip>;
75
+ signature: zod_v4.ZodOptional<zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>>;
76
+ createdAt: zod_v4.ZodOptional<zod_v4.ZodNumber>;
77
+ consumed: z.ZodBigInt;
78
+ status: z.ZodEnum<{
79
+ valid: "valid";
80
+ callback_not_supported: "callback_not_supported";
81
+ callback_error: "callback_error";
82
+ unverified: "unverified";
83
+ }>;
84
+ metadata: z.ZodOptional<z.ZodObject<{
85
+ issue: z.ZodString;
86
+ }, z.core.$strip>>;
87
+ }, zod_v4_core.$strip>;
88
+ /**
89
+ * Creates a router offer from a plain object.
90
+ * @throws {InvalidRouterOfferError} If the router offer is invalid.
91
+ * @param input - The router offer to create.
92
+ * @returns The created router offer with its hash.
93
+ */
94
+ declare function from(input: Omit<RouterOffer, "hash">): RouterOffer;
95
+ declare namespace from {
96
+ type ErrorType = InvalidRouterOfferError;
97
+ }
98
+ /**
99
+ * Creates a router offer from a snake case object.
100
+ * @throws {InvalidRouterOfferError} If the router offer is invalid.
101
+ * @param input - The router offer to create.
102
+ * @returns The created router offer with its hash.
103
+ */
104
+ declare function fromSnakeCase(input: Format.Snake<Omit<RouterOffer, "hash">>): RouterOffer;
105
+ declare namespace fromSnakeCase {
106
+ type ErrorType = InvalidRouterOfferError;
107
+ }
108
+ /**
109
+ * Converts a router offer to a snake case object.
110
+ * @param offer - The router offer to convert.
111
+ * @returns The converted router offer.
112
+ */
113
+ declare function toSnakeCase(offer: RouterOffer): Format.Snake<RouterOffer>;
114
+ declare function random(): RouterOffer;
115
+ declare class InvalidRouterOfferError extends Errors.BaseError<ZodError | Error> {
116
+ readonly name = "RouterOffer.InvalidRouterOfferError";
117
+ constructor(error: ZodError | Error);
118
+ }
48
119
 
120
+ type RouterOffer$1_InvalidRouterOfferError = InvalidRouterOfferError;
121
+ declare const RouterOffer$1_InvalidRouterOfferError: typeof InvalidRouterOfferError;
49
122
  type RouterOffer$1_OfferMetadata = OfferMetadata;
50
123
  type RouterOffer$1_OfferStatus = OfferStatus;
51
124
  declare const RouterOffer$1_OfferStatusValues: typeof OfferStatusValues;
52
125
  type RouterOffer$1_RouterOffer = RouterOffer;
126
+ declare const RouterOffer$1_RouterOfferSchema: typeof RouterOfferSchema;
127
+ declare const RouterOffer$1_from: typeof from;
128
+ declare const RouterOffer$1_fromSnakeCase: typeof fromSnakeCase;
129
+ declare const RouterOffer$1_random: typeof random;
130
+ declare const RouterOffer$1_toSnakeCase: typeof toSnakeCase;
53
131
  declare namespace RouterOffer$1 {
54
- export { type RouterOffer$1_OfferMetadata as OfferMetadata, type RouterOffer$1_OfferStatus as OfferStatus, RouterOffer$1_OfferStatusValues as OfferStatusValues, type RouterOffer$1_RouterOffer as RouterOffer };
132
+ export { RouterOffer$1_InvalidRouterOfferError as InvalidRouterOfferError, type RouterOffer$1_OfferMetadata as OfferMetadata, type RouterOffer$1_OfferStatus as OfferStatus, RouterOffer$1_OfferStatusValues as OfferStatusValues, type RouterOffer$1_RouterOffer as RouterOffer, RouterOffer$1_RouterOfferSchema as RouterOfferSchema, RouterOffer$1_from as from, RouterOffer$1_fromSnakeCase as fromSnakeCase, RouterOffer$1_random as random, RouterOffer$1_toSnakeCase as toSnakeCase };
55
133
  }
56
134
 
57
135
  type GetParameters = {
@@ -228,13 +306,13 @@ declare const types: readonly ["offer_created", "offer_matched", "offer_validati
228
306
  type Type = (typeof types)[number];
229
307
  type EventPayload = {
230
308
  offer_created: {
231
- readonly offer: RouterOffer;
309
+ readonly offer: Offer.Offer;
232
310
  };
233
311
  offer_matched: {
234
- readonly offer: RouterOffer;
312
+ readonly offer: Offer.Offer;
235
313
  };
236
314
  offer_validation: {
237
- readonly offer: RouterOffer;
315
+ readonly offer: Offer.Offer;
238
316
  };
239
317
  };
240
318
  type BaseEvent<T extends Type> = {
@@ -1,8 +1,11 @@
1
- import { Offer, Errors } from '@morpho-dev/mempool';
1
+ import { Offer, Errors, Format } from '@morpho-dev/mempool';
2
2
  export * from '@morpho-dev/mempool';
3
3
  import * as viem from 'viem';
4
4
  import { Address, PublicClient } from 'viem';
5
5
  import { Chain as Chain$2 } from 'viem/chains';
6
+ import * as zod_v4_core from 'zod/v4/core';
7
+ import * as zod_v4 from 'zod/v4';
8
+ import { z, ZodError } from 'zod/v4';
6
9
 
7
10
  type Compute<type> = {
8
11
  [key in keyof type]: type[key];
@@ -42,16 +45,91 @@ type OfferMetadata = {
42
45
  issue: string;
43
46
  };
44
47
  type RouterOffer = Offer.Offer & {
48
+ consumed: bigint;
45
49
  status: OfferStatus;
46
50
  metadata?: OfferMetadata;
47
51
  };
52
+ declare const RouterOfferSchema: (parameters?: {
53
+ omitHash?: boolean;
54
+ }) => zod_v4.ZodObject<{
55
+ offering: zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>;
56
+ assets: zod_v4.ZodBigInt;
57
+ rate: zod_v4.ZodBigInt;
58
+ maturity: zod_v4.ZodNumber;
59
+ expiry: zod_v4.ZodNumber;
60
+ start: zod_v4.ZodNumber;
61
+ nonce: zod_v4.ZodBigInt;
62
+ buy: zod_v4.ZodBoolean;
63
+ chainId: zod_v4.ZodBigInt;
64
+ loanToken: zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>;
65
+ collaterals: zod_v4.ZodArray<zod_v4.ZodObject<{
66
+ asset: zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>;
67
+ oracle: zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>;
68
+ lltv: zod_v4.ZodBigInt;
69
+ }, zod_v4_core.$strip>>;
70
+ callback: zod_v4.ZodObject<{
71
+ address: zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>;
72
+ data: zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>;
73
+ gasLimit: zod_v4.ZodBigInt;
74
+ }, zod_v4_core.$strip>;
75
+ signature: zod_v4.ZodOptional<zod_v4.ZodPipe<zod_v4.ZodString, zod_v4.ZodTransform<`0x${string}`, string>>>;
76
+ createdAt: zod_v4.ZodOptional<zod_v4.ZodNumber>;
77
+ consumed: z.ZodBigInt;
78
+ status: z.ZodEnum<{
79
+ valid: "valid";
80
+ callback_not_supported: "callback_not_supported";
81
+ callback_error: "callback_error";
82
+ unverified: "unverified";
83
+ }>;
84
+ metadata: z.ZodOptional<z.ZodObject<{
85
+ issue: z.ZodString;
86
+ }, z.core.$strip>>;
87
+ }, zod_v4_core.$strip>;
88
+ /**
89
+ * Creates a router offer from a plain object.
90
+ * @throws {InvalidRouterOfferError} If the router offer is invalid.
91
+ * @param input - The router offer to create.
92
+ * @returns The created router offer with its hash.
93
+ */
94
+ declare function from(input: Omit<RouterOffer, "hash">): RouterOffer;
95
+ declare namespace from {
96
+ type ErrorType = InvalidRouterOfferError;
97
+ }
98
+ /**
99
+ * Creates a router offer from a snake case object.
100
+ * @throws {InvalidRouterOfferError} If the router offer is invalid.
101
+ * @param input - The router offer to create.
102
+ * @returns The created router offer with its hash.
103
+ */
104
+ declare function fromSnakeCase(input: Format.Snake<Omit<RouterOffer, "hash">>): RouterOffer;
105
+ declare namespace fromSnakeCase {
106
+ type ErrorType = InvalidRouterOfferError;
107
+ }
108
+ /**
109
+ * Converts a router offer to a snake case object.
110
+ * @param offer - The router offer to convert.
111
+ * @returns The converted router offer.
112
+ */
113
+ declare function toSnakeCase(offer: RouterOffer): Format.Snake<RouterOffer>;
114
+ declare function random(): RouterOffer;
115
+ declare class InvalidRouterOfferError extends Errors.BaseError<ZodError | Error> {
116
+ readonly name = "RouterOffer.InvalidRouterOfferError";
117
+ constructor(error: ZodError | Error);
118
+ }
48
119
 
120
+ type RouterOffer$1_InvalidRouterOfferError = InvalidRouterOfferError;
121
+ declare const RouterOffer$1_InvalidRouterOfferError: typeof InvalidRouterOfferError;
49
122
  type RouterOffer$1_OfferMetadata = OfferMetadata;
50
123
  type RouterOffer$1_OfferStatus = OfferStatus;
51
124
  declare const RouterOffer$1_OfferStatusValues: typeof OfferStatusValues;
52
125
  type RouterOffer$1_RouterOffer = RouterOffer;
126
+ declare const RouterOffer$1_RouterOfferSchema: typeof RouterOfferSchema;
127
+ declare const RouterOffer$1_from: typeof from;
128
+ declare const RouterOffer$1_fromSnakeCase: typeof fromSnakeCase;
129
+ declare const RouterOffer$1_random: typeof random;
130
+ declare const RouterOffer$1_toSnakeCase: typeof toSnakeCase;
53
131
  declare namespace RouterOffer$1 {
54
- export { type RouterOffer$1_OfferMetadata as OfferMetadata, type RouterOffer$1_OfferStatus as OfferStatus, RouterOffer$1_OfferStatusValues as OfferStatusValues, type RouterOffer$1_RouterOffer as RouterOffer };
132
+ export { RouterOffer$1_InvalidRouterOfferError as InvalidRouterOfferError, type RouterOffer$1_OfferMetadata as OfferMetadata, type RouterOffer$1_OfferStatus as OfferStatus, RouterOffer$1_OfferStatusValues as OfferStatusValues, type RouterOffer$1_RouterOffer as RouterOffer, RouterOffer$1_RouterOfferSchema as RouterOfferSchema, RouterOffer$1_from as from, RouterOffer$1_fromSnakeCase as fromSnakeCase, RouterOffer$1_random as random, RouterOffer$1_toSnakeCase as toSnakeCase };
55
133
  }
56
134
 
57
135
  type GetParameters = {
@@ -228,13 +306,13 @@ declare const types: readonly ["offer_created", "offer_matched", "offer_validati
228
306
  type Type = (typeof types)[number];
229
307
  type EventPayload = {
230
308
  offer_created: {
231
- readonly offer: RouterOffer;
309
+ readonly offer: Offer.Offer;
232
310
  };
233
311
  offer_matched: {
234
- readonly offer: RouterOffer;
312
+ readonly offer: Offer.Offer;
235
313
  };
236
314
  offer_validation: {
237
- readonly offer: RouterOffer;
315
+ readonly offer: Offer.Offer;
238
316
  };
239
317
  };
240
318
  type BaseEvent<T extends Type> = {
@@ -2,9 +2,9 @@
2
2
 
3
3
  var mempool = require('@morpho-dev/mempool');
4
4
  var chains$1 = require('viem/chains');
5
+ var viem = require('viem');
5
6
  var v4 = require('zod/v4');
6
7
  var zodOpenapi = require('zod-openapi');
7
- var viem = require('viem');
8
8
 
9
9
  var __defProp = Object.defineProperty;
10
10
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
@@ -84,7 +84,13 @@ __export(Client_exports, {
84
84
  // src/RouterOffer.ts
85
85
  var RouterOffer_exports = {};
86
86
  __export(RouterOffer_exports, {
87
- OfferStatusValues: () => OfferStatusValues
87
+ InvalidRouterOfferError: () => InvalidRouterOfferError,
88
+ OfferStatusValues: () => OfferStatusValues,
89
+ RouterOfferSchema: () => RouterOfferSchema,
90
+ from: () => from,
91
+ fromSnakeCase: () => fromSnakeCase,
92
+ random: () => random,
93
+ toSnakeCase: () => toSnakeCase
88
94
  });
89
95
  var OfferStatusValues = [
90
96
  "valid",
@@ -92,6 +98,46 @@ var OfferStatusValues = [
92
98
  "callback_error",
93
99
  "unverified"
94
100
  ];
101
+ var RouterOfferSchema = (parameters) => mempool.Offer.OfferSchema(parameters).extend({
102
+ consumed: v4.z.bigint({ coerce: true }).min(0n).max(viem.maxUint256),
103
+ status: v4.z.enum(OfferStatusValues),
104
+ metadata: v4.z.object({
105
+ issue: v4.z.string()
106
+ }).optional()
107
+ });
108
+ function from(input) {
109
+ try {
110
+ const parsedOffer = RouterOfferSchema({ omitHash: true }).parse(input);
111
+ const parsedHash = mempool.Offer.OfferHashSchema.parse(mempool.Offer.hash(parsedOffer));
112
+ return {
113
+ ...parsedOffer,
114
+ hash: parsedHash
115
+ };
116
+ } catch (error) {
117
+ throw new InvalidRouterOfferError(error);
118
+ }
119
+ }
120
+ function fromSnakeCase(input) {
121
+ return from(mempool.Format.fromSnakeCase(input));
122
+ }
123
+ function toSnakeCase(offer) {
124
+ return mempool.Format.toSnakeCase(offer);
125
+ }
126
+ function random() {
127
+ const baseOffer = mempool.Offer.random();
128
+ return from({
129
+ ...baseOffer,
130
+ status: "valid",
131
+ metadata: void 0,
132
+ consumed: 0n
133
+ });
134
+ }
135
+ var InvalidRouterOfferError = class extends mempool.Errors.BaseError {
136
+ constructor(error) {
137
+ super("Invalid router offer.", { cause: error });
138
+ __publicField(this, "name", "RouterOffer.InvalidRouterOfferError");
139
+ }
140
+ };
95
141
 
96
142
  // src/utils/batch.ts
97
143
  function* batch(array, batchSize) {
@@ -777,14 +823,7 @@ async function get(config, parameters) {
777
823
  const { cursor: returnedCursor, data: offers } = await getApi(config, url);
778
824
  return {
779
825
  cursor: returnedCursor,
780
- offers: offers.map((offer) => {
781
- const baseOffer = mempool.Offer.fromSnakeCase(offer);
782
- return {
783
- ...baseOffer,
784
- status: offer.status,
785
- metadata: offer.metadata
786
- };
787
- })
826
+ offers: offers.map(fromSnakeCase)
788
827
  };
789
828
  }
790
829
  async function match(config, parameters) {
@@ -825,14 +864,7 @@ async function match(config, parameters) {
825
864
  const { cursor: returnedCursor, data: offers } = await getApi(config, url);
826
865
  return {
827
866
  cursor: returnedCursor,
828
- offers: offers.map((offer) => {
829
- const baseOffer = mempool.Offer.fromSnakeCase(offer);
830
- return {
831
- ...baseOffer,
832
- status: offer.status,
833
- metadata: offer.metadata
834
- };
835
- })
867
+ offers: offers.map(fromSnakeCase)
836
868
  };
837
869
  }
838
870
  async function getApi(config, url) {