@opensea/seaport-js 1.0.8 → 1.0.9

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.
Files changed (49) hide show
  1. package/lib/abi/Seaport_v1_2.d.ts +129 -0
  2. package/lib/abi/Seaport_v1_2.js +2818 -0
  3. package/lib/abi/Seaport_v1_2.js.map +1 -0
  4. package/lib/abi/Seaport_v1_4.d.ts +129 -0
  5. package/lib/abi/Seaport_v1_4.js +2818 -0
  6. package/lib/abi/Seaport_v1_4.js.map +1 -0
  7. package/lib/constants.d.ts +21 -1
  8. package/lib/constants.js +34 -1
  9. package/lib/constants.js.map +1 -1
  10. package/lib/seaport.d.ts +53 -24
  11. package/lib/seaport.js +324 -126
  12. package/lib/seaport.js.map +1 -1
  13. package/lib/typechain/DomainRegistry.d.ts +2 -2
  14. package/lib/typechain/ERC1155.d.ts +8 -8
  15. package/lib/typechain/ERC20.d.ts +4 -12
  16. package/lib/typechain/ERC721.d.ts +18 -16
  17. package/lib/typechain/Seaport.d.ts +125 -104
  18. package/lib/typechain/common.d.ts +4 -4
  19. package/lib/types.d.ts +56 -46
  20. package/lib/utils/approval.d.ts +1 -1
  21. package/lib/utils/approval.js +11 -7
  22. package/lib/utils/approval.js.map +1 -1
  23. package/lib/utils/balance.d.ts +1 -1
  24. package/lib/utils/balance.js +1 -1
  25. package/lib/utils/balanceAndApprovalCheck.d.ts +3 -3
  26. package/lib/utils/balanceAndApprovalCheck.js +1 -1
  27. package/lib/utils/eip712/Eip712MerkleTree.d.ts +34 -0
  28. package/lib/utils/eip712/Eip712MerkleTree.js +125 -0
  29. package/lib/utils/eip712/Eip712MerkleTree.js.map +1 -0
  30. package/lib/utils/eip712/bulk-orders.d.ts +6 -0
  31. package/lib/utils/eip712/bulk-orders.js +84 -0
  32. package/lib/utils/eip712/bulk-orders.js.map +1 -0
  33. package/lib/utils/eip712/defaults.d.ts +14 -0
  34. package/lib/utils/eip712/defaults.js +114 -0
  35. package/lib/utils/eip712/defaults.js.map +1 -0
  36. package/lib/utils/eip712/utils.d.ts +11 -0
  37. package/lib/utils/eip712/utils.js +78 -0
  38. package/lib/utils/eip712/utils.js.map +1 -0
  39. package/lib/utils/fulfill.d.ts +6 -5
  40. package/lib/utils/fulfill.js +7 -7
  41. package/lib/utils/fulfill.js.map +1 -1
  42. package/lib/utils/item.d.ts +1 -1
  43. package/lib/utils/order.d.ts +1 -1
  44. package/lib/utils/order.js +2 -0
  45. package/lib/utils/order.js.map +1 -1
  46. package/lib/utils/usecase.d.ts +2 -2
  47. package/lib/utils/usecase.js +17 -18
  48. package/lib/utils/usecase.js.map +1 -1
  49. package/package.json +9 -7
package/lib/types.d.ts CHANGED
@@ -4,38 +4,39 @@ import { BigNumber, BigNumberish, BytesLike, Contract, ContractTransaction, ethe
4
4
  import { ItemType, OrderType } from "./constants";
5
5
  import type { ERC721 } from "./typechain/ERC721";
6
6
  import type { ERC20 } from "./typechain/ERC20";
7
- export declare type SeaportConfig = {
7
+ export type SeaportConfig = {
8
8
  ascendingAmountFulfillmentBuffer?: number;
9
9
  balanceAndApprovalChecksOnOrderCreation?: boolean;
10
10
  conduitKeyToConduit?: Record<string, string>;
11
+ seaportVersion?: "1.1" | "1.4";
11
12
  overrides?: {
12
13
  contractAddress?: string;
13
14
  domainRegistryAddress?: string;
14
15
  defaultConduitKey?: string;
15
16
  };
16
17
  };
17
- declare type TypedDataDomain = {
18
+ type TypedDataDomain = {
18
19
  name?: string;
19
20
  version?: string;
20
21
  chainId?: BigNumberish;
21
22
  verifyingContract?: string;
22
23
  salt?: BytesLike;
23
24
  };
24
- declare type TypedDataField = {
25
+ type TypedDataField = {
25
26
  name: string;
26
27
  type: string;
27
28
  };
28
- export declare type Signer = ethers.Signer & {
29
+ export type Signer = ethers.Signer & {
29
30
  _signTypedData(domain: TypedDataDomain, types: Record<string, Array<TypedDataField>>, value: Record<string, any>): Promise<string>;
30
31
  };
31
- export declare type OfferItem = {
32
+ export type OfferItem = {
32
33
  itemType: ItemType;
33
34
  token: string;
34
35
  identifierOrCriteria: string;
35
36
  startAmount: string;
36
37
  endAmount: string;
37
38
  };
38
- export declare type ConsiderationItem = {
39
+ export type ConsiderationItem = {
39
40
  itemType: ItemType;
40
41
  token: string;
41
42
  identifierOrCriteria: string;
@@ -43,8 +44,8 @@ export declare type ConsiderationItem = {
43
44
  endAmount: string;
44
45
  recipient: string;
45
46
  };
46
- export declare type Item = OfferItem | ConsiderationItem;
47
- export declare type OrderParameters = {
47
+ export type Item = OfferItem | ConsiderationItem;
48
+ export type OrderParameters = {
48
49
  offerer: string;
49
50
  zone: string;
50
51
  orderType: OrderType;
@@ -57,70 +58,70 @@ export declare type OrderParameters = {
57
58
  totalOriginalConsiderationItems: BigNumberish;
58
59
  conduitKey: string;
59
60
  };
60
- export declare type OrderComponents = OrderParameters & {
61
- counter: number;
61
+ export type OrderComponents = OrderParameters & {
62
+ counter: BigNumberish;
62
63
  };
63
- export declare type Order = {
64
+ export type Order = {
64
65
  parameters: OrderParameters;
65
66
  signature: string;
66
67
  };
67
- export declare type AdvancedOrder = Order & {
68
+ export type AdvancedOrder = Order & {
68
69
  numerator: BigNumber;
69
70
  denominator: BigNumber;
70
71
  extraData: string;
71
72
  };
72
- export declare type BasicErc721Item = {
73
+ export type BasicErc721Item = {
73
74
  itemType: ItemType.ERC721;
74
75
  token: string;
75
76
  identifier: string;
76
77
  };
77
- export declare type Erc721ItemWithCriteria = {
78
+ export type Erc721ItemWithCriteria = {
78
79
  itemType: ItemType.ERC721;
79
80
  token: string;
80
81
  identifiers: string[];
81
82
  amount?: string;
82
83
  endAmount?: string;
83
84
  };
84
- declare type Erc721Item = BasicErc721Item | Erc721ItemWithCriteria;
85
- export declare type BasicErc1155Item = {
85
+ type Erc721Item = BasicErc721Item | Erc721ItemWithCriteria;
86
+ export type BasicErc1155Item = {
86
87
  itemType: ItemType.ERC1155;
87
88
  token: string;
88
89
  identifier: string;
89
90
  amount: string;
90
91
  endAmount?: string;
91
92
  };
92
- export declare type Erc1155ItemWithCriteria = {
93
+ export type Erc1155ItemWithCriteria = {
93
94
  itemType: ItemType.ERC1155;
94
95
  token: string;
95
96
  identifiers: string[];
96
97
  amount: string;
97
98
  endAmount?: string;
98
99
  };
99
- declare type Erc1155Item = BasicErc1155Item | Erc1155ItemWithCriteria;
100
- export declare type CurrencyItem = {
100
+ type Erc1155Item = BasicErc1155Item | Erc1155ItemWithCriteria;
101
+ export type CurrencyItem = {
101
102
  token?: string;
102
103
  amount: string;
103
104
  endAmount?: string;
104
105
  };
105
- export declare type CreateInputItem = Erc721Item | Erc1155Item | CurrencyItem;
106
- export declare type ConsiderationInputItem = CreateInputItem & {
106
+ export type CreateInputItem = Erc721Item | Erc1155Item | CurrencyItem;
107
+ export type ConsiderationInputItem = CreateInputItem & {
107
108
  recipient?: string;
108
109
  };
109
- export declare type TipInputItem = CreateInputItem & {
110
+ export type TipInputItem = CreateInputItem & {
110
111
  recipient: string;
111
112
  };
112
- export declare type Fee = {
113
+ export type Fee = {
113
114
  recipient: string;
114
115
  basisPoints: number;
115
116
  };
116
- export declare type CreateOrderInput = {
117
+ export type CreateOrderInput = {
117
118
  conduitKey?: string;
118
119
  zone?: string;
119
120
  startTime?: string;
120
121
  endTime?: string;
121
122
  offer: readonly CreateInputItem[];
122
123
  consideration: readonly ConsiderationInputItem[];
123
- counter?: number;
124
+ counter?: BigNumberish;
124
125
  fees?: readonly Fee[];
125
126
  allowPartialFills?: boolean;
126
127
  restrictedByZone?: boolean;
@@ -128,28 +129,28 @@ export declare type CreateOrderInput = {
128
129
  domain?: string;
129
130
  salt?: string;
130
131
  };
131
- export declare type InputCriteria = {
132
+ export type InputCriteria = {
132
133
  identifier: string;
133
134
  proof: string[];
134
135
  };
135
- export declare type OrderStatus = {
136
+ export type OrderStatus = {
136
137
  isValidated: boolean;
137
138
  isCancelled: boolean;
138
139
  totalFilled: BigNumber;
139
140
  totalSize: BigNumber;
140
141
  };
141
- export declare type OrderWithCounter = {
142
+ export type OrderWithCounter = {
142
143
  parameters: OrderComponents;
143
144
  signature: string;
144
145
  };
145
- export declare type ContractMethodReturnType<T extends Contract, U extends keyof T["callStatic"]> = Awaited<ReturnType<T["callStatic"][U]>>;
146
- export declare type TransactionMethods<T = unknown> = {
146
+ export type ContractMethodReturnType<T extends Contract, U extends keyof T["callStatic"]> = Awaited<ReturnType<T["callStatic"][U]>>;
147
+ export type TransactionMethods<T = unknown> = {
147
148
  buildTransaction: (overrides?: Overrides) => Promise<PopulatedTransaction>;
148
149
  callStatic: (overrides?: Overrides) => Promise<T>;
149
150
  estimateGas: (overrides?: Overrides) => Promise<BigNumber>;
150
151
  transact: (overrides?: Overrides) => Promise<ContractTransaction>;
151
152
  };
152
- export declare type ApprovalAction = {
153
+ export type ApprovalAction = {
153
154
  type: "approval";
154
155
  token: string;
155
156
  identifierOrCriteria: string;
@@ -157,45 +158,54 @@ export declare type ApprovalAction = {
157
158
  operator: string;
158
159
  transactionMethods: TransactionMethods<ContractMethodReturnType<ERC721, "setApprovalForAll">> | TransactionMethods<ContractMethodReturnType<ERC20, "approve">>;
159
160
  };
160
- export declare type ExchangeAction<T = unknown> = {
161
+ export type ExchangeAction<T = unknown> = {
161
162
  type: "exchange";
162
163
  transactionMethods: TransactionMethods<T>;
163
164
  };
164
- export declare type CreateOrderAction = {
165
+ export type CreateOrderAction = {
165
166
  type: "create";
166
167
  getMessageToSign: () => Promise<string>;
167
168
  createOrder: () => Promise<OrderWithCounter>;
168
169
  };
169
- export declare type TransactionAction = ApprovalAction | ExchangeAction;
170
- export declare type CreateOrderActions = readonly [
170
+ export type CreateBulkOrdersAction = {
171
+ type: "createBulk";
172
+ getMessageToSign: () => Promise<string>;
173
+ createBulkOrders: () => Promise<OrderWithCounter[]>;
174
+ };
175
+ export type TransactionAction = ApprovalAction | ExchangeAction;
176
+ export type CreateOrderActions = readonly [
171
177
  ...ApprovalAction[],
172
178
  CreateOrderAction
173
179
  ];
174
- export declare type OrderExchangeActions<T> = readonly [
180
+ export type CreateBulkOrdersActions = readonly [
181
+ ...ApprovalAction[],
182
+ CreateBulkOrdersAction
183
+ ];
184
+ export type OrderExchangeActions<T> = readonly [
175
185
  ...ApprovalAction[],
176
186
  ExchangeAction<T>
177
187
  ];
178
- export declare type OrderUseCase<T extends CreateOrderAction | ExchangeAction> = {
179
- actions: T extends CreateOrderAction ? CreateOrderActions : OrderExchangeActions<T extends ExchangeAction<infer U> ? U : never>;
180
- executeAllActions: () => Promise<T extends CreateOrderAction ? OrderWithCounter : ContractTransaction>;
188
+ export type OrderUseCase<T extends CreateOrderAction | CreateBulkOrdersAction | ExchangeAction> = {
189
+ actions: T extends CreateOrderAction ? CreateOrderActions : T extends CreateBulkOrdersAction ? CreateBulkOrdersActions : OrderExchangeActions<T extends ExchangeAction<infer U> ? U : never>;
190
+ executeAllActions: () => Promise<T extends CreateOrderAction ? OrderWithCounter : T extends CreateBulkOrdersAction ? OrderWithCounter[] : ContractTransaction>;
181
191
  };
182
- export declare type FulfillmentComponent = {
192
+ export type FulfillmentComponent = {
183
193
  orderIndex: number;
184
194
  itemIndex: number;
185
195
  }[];
186
- export declare type Fulfillment = {
196
+ export type Fulfillment = {
187
197
  offerComponents: FulfillmentComponent[];
188
198
  considerationComponents: FulfillmentComponent[];
189
199
  };
190
- declare type MatchOrdersFulfillmentComponent = {
200
+ type MatchOrdersFulfillmentComponent = {
191
201
  orderIndex: number;
192
202
  itemIndex: number;
193
203
  };
194
- export declare type MatchOrdersFulfillment = {
204
+ export type MatchOrdersFulfillment = {
195
205
  offerComponents: MatchOrdersFulfillmentComponent[];
196
206
  considerationComponents: MatchOrdersFulfillmentComponent[];
197
207
  };
198
- export declare type SeaportContract = TypeChainSeaportContract & {
208
+ export type SeaportContract = TypeChainSeaportContract & {
199
209
  encodeFunctionData(functionFragment: "matchOrders", values: [OrderStruct[], MatchOrdersFulfillment[]]): string;
200
210
  matchOrders(orders: OrderStruct[], fulfillments: MatchOrdersFulfillment[], overrides?: PayableOverrides & {
201
211
  from?: string | Promise<string>;
@@ -215,11 +225,11 @@ export declare type SeaportContract = TypeChainSeaportContract & {
215
225
  from?: string | Promise<string>;
216
226
  }): Promise<BigNumber>;
217
227
  };
218
- populateTranscation: TypeChainSeaportContract["populateTransaction"] & {
228
+ populateTransaction: TypeChainSeaportContract["populateTransaction"] & {
219
229
  matchOrders(orders: OrderStruct[], fulfillments: MatchOrdersFulfillment[], overrides?: PayableOverrides & {
220
230
  from?: string | Promise<string>;
221
231
  }): Promise<PopulatedTransaction>;
222
232
  };
223
233
  };
224
- export declare type DomainRegistryContract = TypeChainDomainRegistryContract;
234
+ export type DomainRegistryContract = TypeChainDomainRegistryContract;
225
235
  export {};
@@ -6,4 +6,4 @@ export declare const approvedItemAmount: (owner: string, item: Item, operator: s
6
6
  /**
7
7
  * Get approval actions given a list of insufficent approvals.
8
8
  */
9
- export declare function getApprovalActions(insufficientApprovals: InsufficientApprovals, signer: Signer): Promise<ApprovalAction[]>;
9
+ export declare function getApprovalActions(insufficientApprovals: InsufficientApprovals, exactApproval: boolean, signer: Signer): Promise<ApprovalAction[]>;
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
18
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
19
  if (y = 0, t) op = [op[0] & 2, t.value];
20
20
  switch (op[0]) {
@@ -65,7 +65,7 @@ exports.approvedItemAmount = approvedItemAmount;
65
65
  /**
66
66
  * Get approval actions given a list of insufficent approvals.
67
67
  */
68
- function getApprovalActions(insufficientApprovals, signer) {
68
+ function getApprovalActions(insufficientApprovals, exactApproval, signer) {
69
69
  var _this = this;
70
70
  return Promise.all(insufficientApprovals
71
71
  .filter(function (approval, index) {
@@ -73,11 +73,12 @@ function getApprovalActions(insufficientApprovals, signer) {
73
73
  insufficientApprovals[index + 1].token !== approval.token;
74
74
  })
75
75
  .map(function (_a) {
76
- var token = _a.token, operator = _a.operator, itemType = _a.itemType, identifierOrCriteria = _a.identifierOrCriteria;
76
+ var token = _a.token, operator = _a.operator, itemType = _a.itemType, identifierOrCriteria = _a.identifierOrCriteria, requiredApprovedAmount = _a.requiredApprovedAmount;
77
77
  return __awaiter(_this, void 0, void 0, function () {
78
- var contract, contract;
78
+ var isErc1155, contract, contract;
79
79
  return __generator(this, function (_b) {
80
- if ((0, item_1.isErc721Item)(itemType) || (0, item_1.isErc1155Item)(itemType)) {
80
+ isErc1155 = (0, item_1.isErc1155Item)(itemType);
81
+ if ((0, item_1.isErc721Item)(itemType) || isErc1155) {
81
82
  contract = new ethers_1.Contract(token, ERC721_1.ERC721ABI, signer);
82
83
  return [2 /*return*/, {
83
84
  type: "approval",
@@ -85,7 +86,10 @@ function getApprovalActions(insufficientApprovals, signer) {
85
86
  identifierOrCriteria: identifierOrCriteria,
86
87
  itemType: itemType,
87
88
  operator: operator,
88
- transactionMethods: (0, usecase_1.getTransactionMethods)(contract.connect(signer), "setApprovalForAll", [operator, true]),
89
+ transactionMethods: (0, usecase_1.getTransactionMethods)(contract.connect(signer), exactApproval && !isErc1155 ? "approve" : "setApprovalForAll", [
90
+ operator,
91
+ exactApproval && !isErc1155 ? identifierOrCriteria : true,
92
+ ]),
89
93
  }];
90
94
  }
91
95
  else {
@@ -95,7 +99,7 @@ function getApprovalActions(insufficientApprovals, signer) {
95
99
  token: token,
96
100
  identifierOrCriteria: identifierOrCriteria,
97
101
  itemType: itemType,
98
- transactionMethods: (0, usecase_1.getTransactionMethods)(contract.connect(signer), "approve", [operator, constants_1.MAX_INT]),
102
+ transactionMethods: (0, usecase_1.getTransactionMethods)(contract.connect(signer), "approve", [operator, exactApproval ? requiredApprovedAmount : constants_1.MAX_INT]),
99
103
  operator: operator,
100
104
  }];
101
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../src/utils/approval.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,iCAAqD;AACrD,sCAAwC;AACxC,wCAA0C;AAC1C,0CAAiD;AAKjD,+BAAqD;AACrD,qCAAkD;AAE3C,IAAM,kBAAkB,GAAG,UAChC,KAAa,EACb,IAAU,EACV,QAAgB,EAChB,iBAAuD;;;QAEvD,IAAI,IAAA,mBAAY,EAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAA,oBAAa,EAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAEzD,QAAQ,GAAG,IAAI,iBAAQ,CAC3B,IAAI,CAAC,KAAK,EACV,kBAAS,EACT,iBAAiB,CACR,CAAC;YACZ,sBAAO,QAAQ,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,IAAI,CAAC,UAAC,gBAAgB;oBACtE,2DAA2D;oBAC3D,OAAA,gBAAgB,CAAC,CAAC,CAAC,mBAAO,CAAC,CAAC,CAAC,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAA9C,CAA8C,CAC/C,EAAC;SACH;aAAM,IAAI,IAAI,CAAC,QAAQ,KAAK,oBAAQ,CAAC,KAAK,EAAE;YACrC,QAAQ,GAAG,IAAI,iBAAQ,CAC3B,IAAI,CAAC,KAAK,EACV,gBAAQ,EACR,iBAAiB,CACT,CAAC;YAEX,sBAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAC;SAC5C;QAED,qDAAqD;QACrD,sBAAO,mBAAO,EAAC;;KAChB,CAAC;AA7BW,QAAA,kBAAkB,sBA6B7B;AAEF;;GAEG;AACH,SAAgB,kBAAkB,CAChC,qBAA4C,EAC5C,MAAc;IAFhB,iBA8CC;IA1CC,OAAO,OAAO,CAAC,GAAG,CAChB,qBAAqB;SAClB,MAAM,CACL,UAAC,QAAQ,EAAE,KAAK;QACd,OAAA,KAAK,KAAK,qBAAqB,CAAC,MAAM,GAAG,CAAC;YAC1C,qBAAqB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,KAAK;IADzD,CACyD,CAC5D;SACA,GAAG,CAAC,UAAO,EAAmD;YAAjD,KAAK,WAAA,EAAE,QAAQ,cAAA,EAAE,QAAQ,cAAA,EAAE,oBAAoB,0BAAA;;;;gBAC3D,IAAI,IAAA,mBAAY,EAAC,QAAQ,CAAC,IAAI,IAAA,oBAAa,EAAC,QAAQ,CAAC,EAAE;oBAE/C,QAAQ,GAAG,IAAI,iBAAQ,CAAC,KAAK,EAAE,kBAAS,EAAE,MAAM,CAAW,CAAC;oBAElE,sBAAO;4BACL,IAAI,EAAE,UAAU;4BAChB,KAAK,OAAA;4BACL,oBAAoB,sBAAA;4BACpB,QAAQ,UAAA;4BACR,QAAQ,UAAA;4BACR,kBAAkB,EAAE,IAAA,+BAAqB,EACvC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EACxB,mBAAmB,EACnB,CAAC,QAAQ,EAAE,IAAI,CAAC,CACjB;yBACF,EAAC;iBACH;qBAAM;oBACC,QAAQ,GAAG,IAAI,iBAAQ,CAAC,KAAK,EAAE,gBAAQ,EAAE,MAAM,CAAU,CAAC;oBAEhE,sBAAO;4BACL,IAAI,EAAE,UAAU;4BAChB,KAAK,OAAA;4BACL,oBAAoB,sBAAA;4BACpB,QAAQ,UAAA;4BACR,kBAAkB,EAAE,IAAA,+BAAqB,EACvC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EACxB,SAAS,EACT,CAAC,QAAQ,EAAE,mBAAO,CAAC,CACpB;4BACD,QAAQ,UAAA;yBACT,EAAC;iBACH;;;;KACF,CAAC,CACL,CAAC;AACJ,CAAC;AA9CD,gDA8CC"}
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../src/utils/approval.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  import { providers as multicallProviders } from "@0xsequence/multicall";
2
2
  import { BigNumber } from "ethers";
3
3
  import type { InputCriteria, Item } from "../types";
4
- export declare const balanceOf: (owner: string, item: Item, multicallProvider: multicallProviders.MulticallProvider, criteria?: InputCriteria | undefined) => Promise<BigNumber>;
4
+ export declare const balanceOf: (owner: string, item: Item, multicallProvider: multicallProviders.MulticallProvider, criteria?: InputCriteria) => Promise<BigNumber>;
@@ -14,7 +14,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
14
14
  function verb(n) { return function (v) { return step([n, v]); }; }
15
15
  function step(op) {
16
16
  if (f) throw new TypeError("Generator is already executing.");
17
- while (_) try {
17
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
18
18
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
19
  if (y = 0, t) op = [op[0] & 2, t.value];
20
20
  switch (op[0]) {
@@ -3,21 +3,21 @@ import { BigNumber } from "ethers";
3
3
  import { ItemType } from "../constants";
4
4
  import type { InputCriteria, Item, OrderParameters } from "../types";
5
5
  import { getSummedTokenAndIdentifierAmounts, TimeBasedItemParams } from "./item";
6
- export declare type BalancesAndApprovals = {
6
+ export type BalancesAndApprovals = {
7
7
  token: string;
8
8
  identifierOrCriteria: string;
9
9
  balance: BigNumber;
10
10
  approvedAmount: BigNumber;
11
11
  itemType: ItemType;
12
12
  }[];
13
- export declare type InsufficientBalances = {
13
+ export type InsufficientBalances = {
14
14
  token: string;
15
15
  identifierOrCriteria: string;
16
16
  requiredAmount: BigNumber;
17
17
  amountHave: BigNumber;
18
18
  itemType: ItemType;
19
19
  }[];
20
- export declare type InsufficientApprovals = {
20
+ export type InsufficientApprovals = {
21
21
  token: string;
22
22
  identifierOrCriteria: string;
23
23
  approvedAmount: BigNumber;
@@ -25,7 +25,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
25
25
  function verb(n) { return function (v) { return step([n, v]); }; }
26
26
  function step(op) {
27
27
  if (f) throw new TypeError("Generator is already executing.");
28
- while (_) try {
28
+ while (g && (g = 0, op[0] && (_ = 0)), _) try {
29
29
  if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
30
  if (y = 0, t) op = [op[0] & 2, t.value];
31
31
  switch (op[0]) {
@@ -0,0 +1,34 @@
1
+ import { _TypedDataEncoder as TypedDataEncoder } from "@ethersproject/hash";
2
+ import { MerkleTree } from "merkletreejs";
3
+ import type { OrderComponents } from "../../types";
4
+ import type { EIP712TypeDefinitions } from "./defaults";
5
+ type BulkOrderElements = [OrderComponents, OrderComponents] | [BulkOrderElements, BulkOrderElements];
6
+ export declare class Eip712MerkleTree<BaseType extends Record<string, any> = any> {
7
+ types: EIP712TypeDefinitions;
8
+ rootType: string;
9
+ leafType: string;
10
+ elements: BaseType[];
11
+ depth: number;
12
+ tree: MerkleTree;
13
+ private leafHasher;
14
+ defaultNode: BaseType;
15
+ defaultLeaf: string;
16
+ encoder: TypedDataEncoder;
17
+ get completedSize(): number;
18
+ /** Returns the array of elements in the tree, padded to the complete size with empty items. */
19
+ getCompleteElements(): BaseType[];
20
+ /** Returns the array of leaf nodes in the tree, padded to the complete size with default hashes. */
21
+ getCompleteLeaves(): string[];
22
+ get root(): string;
23
+ getProof(i: number): {
24
+ leaf: string;
25
+ proof: string[];
26
+ root: string;
27
+ };
28
+ getEncodedProofAndSignature(i: number, signature: string): string;
29
+ getDataToSign(): BulkOrderElements;
30
+ add(element: BaseType): void;
31
+ getBulkOrderHash(): string;
32
+ constructor(types: EIP712TypeDefinitions, rootType: string, leafType: string, elements: BaseType[], depth: number);
33
+ }
34
+ export {};
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ var __read = (this && this.__read) || function (o, n) {
3
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
4
+ if (!m) return o;
5
+ var i = m.call(o), r, ar = [], e;
6
+ try {
7
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
+ }
9
+ catch (error) { e = { error: error }; }
10
+ finally {
11
+ try {
12
+ if (r && !r.done && (m = i["return"])) m.call(i);
13
+ }
14
+ finally { if (e) throw e.error; }
15
+ }
16
+ return ar;
17
+ };
18
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
19
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
20
+ if (ar || !(i in from)) {
21
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
22
+ ar[i] = from[i];
23
+ }
24
+ }
25
+ return to.concat(ar || Array.prototype.slice.call(from));
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ exports.Eip712MerkleTree = void 0;
29
+ var hash_1 = require("@ethersproject/hash");
30
+ var utils_1 = require("ethers/lib/utils");
31
+ var merkletreejs_1 = require("merkletreejs");
32
+ var defaults_1 = require("./defaults");
33
+ var utils_2 = require("./utils");
34
+ var getTree = function (leaves, defaultLeafHash) {
35
+ return new merkletreejs_1.MerkleTree(leaves.map(utils_2.hexToBuffer), utils_2.bufferKeccak, {
36
+ complete: true,
37
+ sort: false,
38
+ hashLeaves: false,
39
+ fillDefaultHash: (0, utils_2.hexToBuffer)(defaultLeafHash),
40
+ });
41
+ };
42
+ var encodeProof = function (key, proof, signature) {
43
+ if (signature === void 0) { signature = "0x".concat("ff".repeat(64)); }
44
+ return (0, utils_1.hexConcat)([
45
+ signature,
46
+ "0x".concat(key.toString(16).padStart(6, "0")),
47
+ utils_1.defaultAbiCoder.encode(["uint256[".concat(proof.length, "]")], [proof]),
48
+ ]);
49
+ };
50
+ var Eip712MerkleTree = /** @class */ (function () {
51
+ function Eip712MerkleTree(types, rootType, leafType, elements, depth) {
52
+ this.types = types;
53
+ this.rootType = rootType;
54
+ this.leafType = leafType;
55
+ this.elements = elements;
56
+ this.depth = depth;
57
+ var encoder = hash_1._TypedDataEncoder.from(types);
58
+ this.encoder = encoder;
59
+ this.leafHasher = function (leaf) { return encoder.hashStruct(leafType, leaf); };
60
+ this.defaultNode = defaults_1.DefaultGetter.from(types, leafType);
61
+ this.defaultLeaf = this.leafHasher(this.defaultNode);
62
+ this.tree = getTree(this.getCompleteLeaves(), this.defaultLeaf);
63
+ }
64
+ Object.defineProperty(Eip712MerkleTree.prototype, "completedSize", {
65
+ get: function () {
66
+ return Math.pow(2, this.depth);
67
+ },
68
+ enumerable: false,
69
+ configurable: true
70
+ });
71
+ /** Returns the array of elements in the tree, padded to the complete size with empty items. */
72
+ Eip712MerkleTree.prototype.getCompleteElements = function () {
73
+ var elements = this.elements;
74
+ return (0, utils_2.fillArray)(__spreadArray([], __read(elements), false), this.completedSize, this.defaultNode);
75
+ };
76
+ /** Returns the array of leaf nodes in the tree, padded to the complete size with default hashes. */
77
+ Eip712MerkleTree.prototype.getCompleteLeaves = function () {
78
+ var leaves = this.elements.map(this.leafHasher);
79
+ return (0, utils_2.fillArray)(__spreadArray([], __read(leaves), false), this.completedSize, this.defaultLeaf);
80
+ };
81
+ Object.defineProperty(Eip712MerkleTree.prototype, "root", {
82
+ get: function () {
83
+ return this.tree.getHexRoot();
84
+ },
85
+ enumerable: false,
86
+ configurable: true
87
+ });
88
+ Eip712MerkleTree.prototype.getProof = function (i) {
89
+ var leaves = this.getCompleteLeaves();
90
+ var leaf = leaves[i];
91
+ var proof = this.tree.getHexProof(leaf, i);
92
+ var root = this.tree.getHexRoot();
93
+ return { leaf: leaf, proof: proof, root: root };
94
+ };
95
+ Eip712MerkleTree.prototype.getEncodedProofAndSignature = function (i, signature) {
96
+ var proof = this.getProof(i).proof;
97
+ return encodeProof(i, proof, signature);
98
+ };
99
+ Eip712MerkleTree.prototype.getDataToSign = function () {
100
+ var layer = this.getCompleteElements();
101
+ while (layer.length > 2) {
102
+ layer = (0, utils_2.chunk)(layer, 2);
103
+ }
104
+ return layer;
105
+ };
106
+ Eip712MerkleTree.prototype.add = function (element) {
107
+ this.elements.push(element);
108
+ };
109
+ Eip712MerkleTree.prototype.getBulkOrderHash = function () {
110
+ var structHash = this.encoder.hashStruct("BulkOrder", {
111
+ tree: this.getDataToSign(),
112
+ });
113
+ var leaves = this.getCompleteLeaves().map(utils_2.hexToBuffer);
114
+ var rootHash = (0, utils_2.bufferToHex)((0, utils_2.getRoot)(leaves, false));
115
+ var typeHash = (0, utils_1.keccak256)((0, utils_1.toUtf8Bytes)(this.encoder._types.BulkOrder));
116
+ var bulkOrderHash = (0, utils_1.keccak256)((0, utils_1.hexConcat)([typeHash, rootHash]));
117
+ if (bulkOrderHash !== structHash) {
118
+ throw new Error("expected derived bulk order hash to match");
119
+ }
120
+ return structHash;
121
+ };
122
+ return Eip712MerkleTree;
123
+ }());
124
+ exports.Eip712MerkleTree = Eip712MerkleTree;
125
+ //# sourceMappingURL=Eip712MerkleTree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Eip712MerkleTree.js","sourceRoot":"","sources":["../../../src/utils/eip712/Eip712MerkleTree.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { Eip712MerkleTree } from "./Eip712MerkleTree";
2
+ import type { OrderComponents } from "../../types";
3
+ export declare function getBulkOrderTreeHeight(length: number): number;
4
+ export declare function getBulkOrderTree(orderComponents: OrderComponents[], startIndex?: number, height?: number): Eip712MerkleTree<OrderComponents>;
5
+ export declare function getBulkOrderTypeHash(height: number): string;
6
+ export declare function getBulkOrderTypeHashes(maxHeight: number): string[];
@@ -0,0 +1,84 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __read = (this && this.__read) || function (o, n) {
14
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
15
+ if (!m) return o;
16
+ var i = m.call(o), r, ar = [], e;
17
+ try {
18
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
19
+ }
20
+ catch (error) { e = { error: error }; }
21
+ finally {
22
+ try {
23
+ if (r && !r.done && (m = i["return"])) m.call(i);
24
+ }
25
+ finally { if (e) throw e.error; }
26
+ }
27
+ return ar;
28
+ };
29
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
30
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
31
+ if (ar || !(i in from)) {
32
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
33
+ ar[i] = from[i];
34
+ }
35
+ }
36
+ return to.concat(ar || Array.prototype.slice.call(from));
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.getBulkOrderTypeHashes = exports.getBulkOrderTypeHash = exports.getBulkOrderTree = exports.getBulkOrderTreeHeight = void 0;
40
+ var utils_1 = require("ethers/lib/utils");
41
+ var Eip712MerkleTree_1 = require("./Eip712MerkleTree");
42
+ var defaults_1 = require("./defaults");
43
+ var utils_2 = require("./utils");
44
+ var constants_1 = require("../../constants");
45
+ function getBulkOrderTypes(height) {
46
+ var types = __assign({}, constants_1.EIP_712_BULK_ORDER_TYPE);
47
+ types.BulkOrder = [
48
+ { name: "tree", type: "OrderComponents".concat("[2]".repeat(height)) },
49
+ ];
50
+ return types;
51
+ }
52
+ function getBulkOrderTreeHeight(length) {
53
+ return Math.max(Math.ceil(Math.log2(length)), 1);
54
+ }
55
+ exports.getBulkOrderTreeHeight = getBulkOrderTreeHeight;
56
+ function getBulkOrderTree(orderComponents, startIndex, height) {
57
+ if (startIndex === void 0) { startIndex = 0; }
58
+ if (height === void 0) { height = getBulkOrderTreeHeight(orderComponents.length + startIndex); }
59
+ var types = getBulkOrderTypes(height);
60
+ var defaultNode = defaults_1.DefaultGetter.from(types, "OrderComponents");
61
+ var elements = __spreadArray([], __read(orderComponents), false);
62
+ if (startIndex > 0) {
63
+ elements = __spreadArray(__spreadArray([], __read((0, utils_2.fillArray)([], startIndex, defaultNode)), false), __read(orderComponents), false);
64
+ }
65
+ var tree = new Eip712MerkleTree_1.Eip712MerkleTree(types, "BulkOrder", "OrderComponents", elements, height);
66
+ return tree;
67
+ }
68
+ exports.getBulkOrderTree = getBulkOrderTree;
69
+ function getBulkOrderTypeHash(height) {
70
+ var types = getBulkOrderTypes(height);
71
+ var encoder = utils_1._TypedDataEncoder.from(types);
72
+ var typeString = (0, utils_1.toUtf8Bytes)(encoder._types.BulkOrder);
73
+ return (0, utils_1.keccak256)(typeString);
74
+ }
75
+ exports.getBulkOrderTypeHash = getBulkOrderTypeHash;
76
+ function getBulkOrderTypeHashes(maxHeight) {
77
+ var typeHashes = [];
78
+ for (var i = 0; i < maxHeight; i++) {
79
+ typeHashes.push(getBulkOrderTypeHash(i + 1));
80
+ }
81
+ return typeHashes;
82
+ }
83
+ exports.getBulkOrderTypeHashes = getBulkOrderTypeHashes;
84
+ //# sourceMappingURL=bulk-orders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bulk-orders.js","sourceRoot":"","sources":["../../../src/utils/eip712/bulk-orders.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0CAA6E;AAE7E,uDAAsD;AACtD,uCAA2C;AAC3C,iCAAoC;AAKpC,6CAA0D;AAE1D,SAAS,iBAAiB,CAAC,MAAc;IACvC,IAAM,KAAK,gBAAQ,mCAAuB,CAAE,CAAC;IAC7C,KAAK,CAAC,SAAS,GAAG;QAChB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,yBAAkB,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAE,EAAE;KACjE,CAAC;IACF,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAgB,sBAAsB,CAAC,MAAc;IACnD,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACnD,CAAC;AAFD,wDAEC;AAED,SAAgB,gBAAgB,CAC9B,eAAkC,EAClC,UAAc,EACd,MAAoE;IADpE,2BAAA,EAAA,cAAc;IACd,uBAAA,EAAA,SAAS,sBAAsB,CAAC,eAAe,CAAC,MAAM,GAAG,UAAU,CAAC;IAEpE,IAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,IAAM,WAAW,GAAG,wBAAa,CAAC,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAC;IACjE,IAAI,QAAQ,4BAAO,eAAe,SAAC,CAAC;IAEpC,IAAI,UAAU,GAAG,CAAC,EAAE;QAClB,QAAQ,0CACH,IAAA,iBAAS,EAAC,EAAuB,EAAE,UAAU,EAAE,WAAW,CAAC,kBAC3D,eAAe,SACnB,CAAC;KACH;IACD,IAAM,IAAI,GAAG,IAAI,mCAAgB,CAC/B,KAAK,EACL,WAAW,EACX,iBAAiB,EACjB,QAAQ,EACR,MAAM,CACP,CAAC;IACF,OAAO,IAAI,CAAC;AACd,CAAC;AAvBD,4CAuBC;AAED,SAAgB,oBAAoB,CAAC,MAAc;IACjD,IAAM,KAAK,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IACxC,IAAM,OAAO,GAAG,yBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAM,UAAU,GAAG,IAAA,mBAAW,EAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzD,OAAO,IAAA,iBAAS,EAAC,UAAU,CAAC,CAAC;AAC/B,CAAC;AALD,oDAKC;AAED,SAAgB,sBAAsB,CAAC,SAAiB;IACtD,IAAM,UAAU,GAAa,EAAE,CAAC;IAChC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;QAClC,UAAU,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;KAC9C;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAND,wDAMC"}