@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.
- package/lib/abi/Seaport_v1_2.d.ts +129 -0
- package/lib/abi/Seaport_v1_2.js +2818 -0
- package/lib/abi/Seaport_v1_2.js.map +1 -0
- package/lib/abi/Seaport_v1_4.d.ts +129 -0
- package/lib/abi/Seaport_v1_4.js +2818 -0
- package/lib/abi/Seaport_v1_4.js.map +1 -0
- package/lib/constants.d.ts +21 -1
- package/lib/constants.js +34 -1
- package/lib/constants.js.map +1 -1
- package/lib/seaport.d.ts +53 -24
- package/lib/seaport.js +324 -126
- package/lib/seaport.js.map +1 -1
- package/lib/typechain/DomainRegistry.d.ts +2 -2
- package/lib/typechain/ERC1155.d.ts +8 -8
- package/lib/typechain/ERC20.d.ts +4 -12
- package/lib/typechain/ERC721.d.ts +18 -16
- package/lib/typechain/Seaport.d.ts +125 -104
- package/lib/typechain/common.d.ts +4 -4
- package/lib/types.d.ts +56 -46
- package/lib/utils/approval.d.ts +1 -1
- package/lib/utils/approval.js +11 -7
- package/lib/utils/approval.js.map +1 -1
- package/lib/utils/balance.d.ts +1 -1
- package/lib/utils/balance.js +1 -1
- package/lib/utils/balanceAndApprovalCheck.d.ts +3 -3
- package/lib/utils/balanceAndApprovalCheck.js +1 -1
- package/lib/utils/eip712/Eip712MerkleTree.d.ts +34 -0
- package/lib/utils/eip712/Eip712MerkleTree.js +125 -0
- package/lib/utils/eip712/Eip712MerkleTree.js.map +1 -0
- package/lib/utils/eip712/bulk-orders.d.ts +6 -0
- package/lib/utils/eip712/bulk-orders.js +84 -0
- package/lib/utils/eip712/bulk-orders.js.map +1 -0
- package/lib/utils/eip712/defaults.d.ts +14 -0
- package/lib/utils/eip712/defaults.js +114 -0
- package/lib/utils/eip712/defaults.js.map +1 -0
- package/lib/utils/eip712/utils.d.ts +11 -0
- package/lib/utils/eip712/utils.js +78 -0
- package/lib/utils/eip712/utils.js.map +1 -0
- package/lib/utils/fulfill.d.ts +6 -5
- package/lib/utils/fulfill.js +7 -7
- package/lib/utils/fulfill.js.map +1 -1
- package/lib/utils/item.d.ts +1 -1
- package/lib/utils/order.d.ts +1 -1
- package/lib/utils/order.js +2 -0
- package/lib/utils/order.js.map +1 -1
- package/lib/utils/usecase.d.ts +2 -2
- package/lib/utils/usecase.js +17 -18
- package/lib/utils/usecase.js.map +1 -1
- 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
|
|
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
|
-
|
|
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
|
-
|
|
25
|
+
type TypedDataField = {
|
|
25
26
|
name: string;
|
|
26
27
|
type: string;
|
|
27
28
|
};
|
|
28
|
-
export
|
|
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
|
|
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
|
|
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
|
|
47
|
-
export
|
|
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
|
|
61
|
-
counter:
|
|
61
|
+
export type OrderComponents = OrderParameters & {
|
|
62
|
+
counter: BigNumberish;
|
|
62
63
|
};
|
|
63
|
-
export
|
|
64
|
+
export type Order = {
|
|
64
65
|
parameters: OrderParameters;
|
|
65
66
|
signature: string;
|
|
66
67
|
};
|
|
67
|
-
export
|
|
68
|
+
export type AdvancedOrder = Order & {
|
|
68
69
|
numerator: BigNumber;
|
|
69
70
|
denominator: BigNumber;
|
|
70
71
|
extraData: string;
|
|
71
72
|
};
|
|
72
|
-
export
|
|
73
|
+
export type BasicErc721Item = {
|
|
73
74
|
itemType: ItemType.ERC721;
|
|
74
75
|
token: string;
|
|
75
76
|
identifier: string;
|
|
76
77
|
};
|
|
77
|
-
export
|
|
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
|
-
|
|
85
|
-
export
|
|
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
|
|
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
|
-
|
|
100
|
-
export
|
|
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
|
|
106
|
-
export
|
|
106
|
+
export type CreateInputItem = Erc721Item | Erc1155Item | CurrencyItem;
|
|
107
|
+
export type ConsiderationInputItem = CreateInputItem & {
|
|
107
108
|
recipient?: string;
|
|
108
109
|
};
|
|
109
|
-
export
|
|
110
|
+
export type TipInputItem = CreateInputItem & {
|
|
110
111
|
recipient: string;
|
|
111
112
|
};
|
|
112
|
-
export
|
|
113
|
+
export type Fee = {
|
|
113
114
|
recipient: string;
|
|
114
115
|
basisPoints: number;
|
|
115
116
|
};
|
|
116
|
-
export
|
|
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?:
|
|
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
|
|
132
|
+
export type InputCriteria = {
|
|
132
133
|
identifier: string;
|
|
133
134
|
proof: string[];
|
|
134
135
|
};
|
|
135
|
-
export
|
|
136
|
+
export type OrderStatus = {
|
|
136
137
|
isValidated: boolean;
|
|
137
138
|
isCancelled: boolean;
|
|
138
139
|
totalFilled: BigNumber;
|
|
139
140
|
totalSize: BigNumber;
|
|
140
141
|
};
|
|
141
|
-
export
|
|
142
|
+
export type OrderWithCounter = {
|
|
142
143
|
parameters: OrderComponents;
|
|
143
144
|
signature: string;
|
|
144
145
|
};
|
|
145
|
-
export
|
|
146
|
-
export
|
|
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
|
|
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
|
|
161
|
+
export type ExchangeAction<T = unknown> = {
|
|
161
162
|
type: "exchange";
|
|
162
163
|
transactionMethods: TransactionMethods<T>;
|
|
163
164
|
};
|
|
164
|
-
export
|
|
165
|
+
export type CreateOrderAction = {
|
|
165
166
|
type: "create";
|
|
166
167
|
getMessageToSign: () => Promise<string>;
|
|
167
168
|
createOrder: () => Promise<OrderWithCounter>;
|
|
168
169
|
};
|
|
169
|
-
export
|
|
170
|
-
|
|
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
|
|
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
|
|
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
|
|
192
|
+
export type FulfillmentComponent = {
|
|
183
193
|
orderIndex: number;
|
|
184
194
|
itemIndex: number;
|
|
185
195
|
}[];
|
|
186
|
-
export
|
|
196
|
+
export type Fulfillment = {
|
|
187
197
|
offerComponents: FulfillmentComponent[];
|
|
188
198
|
considerationComponents: FulfillmentComponent[];
|
|
189
199
|
};
|
|
190
|
-
|
|
200
|
+
type MatchOrdersFulfillmentComponent = {
|
|
191
201
|
orderIndex: number;
|
|
192
202
|
itemIndex: number;
|
|
193
203
|
};
|
|
194
|
-
export
|
|
204
|
+
export type MatchOrdersFulfillment = {
|
|
195
205
|
offerComponents: MatchOrdersFulfillmentComponent[];
|
|
196
206
|
considerationComponents: MatchOrdersFulfillmentComponent[];
|
|
197
207
|
};
|
|
198
|
-
export
|
|
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
|
-
|
|
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
|
|
234
|
+
export type DomainRegistryContract = TypeChainDomainRegistryContract;
|
|
225
235
|
export {};
|
package/lib/utils/approval.d.ts
CHANGED
|
@@ -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[]>;
|
package/lib/utils/approval.js
CHANGED
|
@@ -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
|
-
|
|
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", [
|
|
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;
|
|
1
|
+
{"version":3,"file":"approval.js","sourceRoot":"","sources":["../../src/utils/approval.ts"],"names":[],"mappings":"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"}
|
package/lib/utils/balance.d.ts
CHANGED
|
@@ -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
|
|
4
|
+
export declare const balanceOf: (owner: string, item: Item, multicallProvider: multicallProviders.MulticallProvider, criteria?: InputCriteria) => Promise<BigNumber>;
|
package/lib/utils/balance.js
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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"}
|