@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.
- package/dist/drizzle/0008_add-consumed-relation.sql +10 -0
- package/dist/drizzle/meta/0008_snapshot.json +635 -0
- package/dist/drizzle/meta/_journal.json +8 -1
- package/dist/index.browser.d.cts +83 -5
- package/dist/index.browser.d.ts +83 -5
- package/dist/index.browser.js +50 -18
- package/dist/index.browser.js.map +1 -1
- package/dist/index.browser.mjs +51 -19
- package/dist/index.browser.mjs.map +1 -1
- package/dist/index.node.d.cts +201 -7
- package/dist/index.node.d.ts +201 -7
- package/dist/index.node.js +264 -101
- package/dist/index.node.js.map +1 -1
- package/dist/index.node.mjs +265 -103
- package/dist/index.node.mjs.map +1 -1
- package/package.json +2 -2
package/dist/index.browser.d.cts
CHANGED
|
@@ -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:
|
|
309
|
+
readonly offer: Offer.Offer;
|
|
232
310
|
};
|
|
233
311
|
offer_matched: {
|
|
234
|
-
readonly offer:
|
|
312
|
+
readonly offer: Offer.Offer;
|
|
235
313
|
};
|
|
236
314
|
offer_validation: {
|
|
237
|
-
readonly offer:
|
|
315
|
+
readonly offer: Offer.Offer;
|
|
238
316
|
};
|
|
239
317
|
};
|
|
240
318
|
type BaseEvent<T extends Type> = {
|
package/dist/index.browser.d.ts
CHANGED
|
@@ -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:
|
|
309
|
+
readonly offer: Offer.Offer;
|
|
232
310
|
};
|
|
233
311
|
offer_matched: {
|
|
234
|
-
readonly offer:
|
|
312
|
+
readonly offer: Offer.Offer;
|
|
235
313
|
};
|
|
236
314
|
offer_validation: {
|
|
237
|
-
readonly offer:
|
|
315
|
+
readonly offer: Offer.Offer;
|
|
238
316
|
};
|
|
239
317
|
};
|
|
240
318
|
type BaseEvent<T extends Type> = {
|
package/dist/index.browser.js
CHANGED
|
@@ -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
|
-
|
|
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(
|
|
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(
|
|
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) {
|