@bosonprotocol/core-sdk 1.24.1-alpha.4 → 1.25.0-alpha.1
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/cjs/disputes/handler.d.ts +1 -0
- package/dist/cjs/disputes/handler.d.ts.map +1 -1
- package/dist/cjs/disputes/mixin.d.ts +5 -0
- package/dist/cjs/disputes/mixin.d.ts.map +1 -1
- package/dist/cjs/forwarder/biconomy-interface.d.ts +72 -0
- package/dist/cjs/forwarder/biconomy-interface.d.ts.map +1 -0
- package/dist/cjs/forwarder/biconomy-interface.js +31 -0
- package/dist/cjs/forwarder/biconomy-interface.js.map +1 -0
- package/dist/cjs/forwarder/handler.d.ts +13 -1
- package/dist/cjs/forwarder/handler.d.ts.map +1 -1
- package/dist/cjs/forwarder/handler.js +58 -4
- package/dist/cjs/forwarder/handler.js.map +1 -1
- package/dist/cjs/forwarder/index.d.ts +2 -0
- package/dist/cjs/forwarder/index.d.ts.map +1 -1
- package/dist/cjs/forwarder/index.js +3 -1
- package/dist/cjs/forwarder/index.js.map +1 -1
- package/dist/cjs/forwarder/mock-interface.d.ts +41 -0
- package/dist/cjs/forwarder/mock-interface.d.ts.map +1 -0
- package/dist/cjs/forwarder/mock-interface.js +16 -0
- package/dist/cjs/forwarder/mock-interface.js.map +1 -0
- package/dist/cjs/index.d.ts +2 -0
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +3 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/meta-tx/biconomy.d.ts +1 -0
- package/dist/cjs/meta-tx/biconomy.d.ts.map +1 -1
- package/dist/cjs/meta-tx/biconomy.js +1 -1
- package/dist/cjs/meta-tx/biconomy.js.map +1 -1
- package/dist/cjs/meta-tx/handler.d.ts +41 -15
- package/dist/cjs/meta-tx/handler.d.ts.map +1 -1
- package/dist/cjs/meta-tx/handler.js +137 -3
- package/dist/cjs/meta-tx/handler.js.map +1 -1
- package/dist/cjs/meta-tx/mixin.d.ts +17 -7
- package/dist/cjs/meta-tx/mixin.d.ts.map +1 -1
- package/dist/cjs/meta-tx/mixin.js +49 -3
- package/dist/cjs/meta-tx/mixin.js.map +1 -1
- package/dist/cjs/native-meta-tx/handler.d.ts +1 -1
- package/dist/cjs/native-meta-tx/handler.d.ts.map +1 -1
- package/dist/cjs/native-meta-tx/mixin.d.ts +1 -1
- package/dist/cjs/native-meta-tx/mixin.d.ts.map +1 -1
- package/dist/cjs/native-meta-tx/mixin.js.map +1 -1
- package/dist/cjs/utils/signature.d.ts +2 -0
- package/dist/cjs/utils/signature.d.ts.map +1 -1
- package/dist/cjs/utils/signature.js +8 -7
- package/dist/cjs/utils/signature.js.map +1 -1
- package/dist/cjs/voucher/handler.d.ts +6 -0
- package/dist/cjs/voucher/handler.d.ts.map +1 -1
- package/dist/cjs/voucher/handler.js +12 -1
- package/dist/cjs/voucher/handler.js.map +1 -1
- package/dist/cjs/voucher/interface.d.ts +3 -0
- package/dist/cjs/voucher/interface.d.ts.map +1 -1
- package/dist/cjs/voucher/interface.js +19 -1
- package/dist/cjs/voucher/interface.js.map +1 -1
- package/dist/cjs/voucher/mixin.d.ts +4 -0
- package/dist/cjs/voucher/mixin.d.ts.map +1 -1
- package/dist/cjs/voucher/mixin.js +13 -0
- package/dist/cjs/voucher/mixin.js.map +1 -1
- package/dist/esm/disputes/handler.d.ts +1 -0
- package/dist/esm/disputes/handler.d.ts.map +1 -1
- package/dist/esm/disputes/mixin.d.ts +5 -0
- package/dist/esm/disputes/mixin.d.ts.map +1 -1
- package/dist/esm/forwarder/biconomy-interface.d.ts +72 -0
- package/dist/esm/forwarder/biconomy-interface.d.ts.map +1 -0
- package/dist/esm/forwarder/biconomy-interface.js +24 -0
- package/dist/esm/forwarder/biconomy-interface.js.map +1 -0
- package/dist/esm/forwarder/handler.d.ts +13 -1
- package/dist/esm/forwarder/handler.d.ts.map +1 -1
- package/dist/esm/forwarder/handler.js +31 -3
- package/dist/esm/forwarder/handler.js.map +1 -1
- package/dist/esm/forwarder/index.d.ts +2 -0
- package/dist/esm/forwarder/index.d.ts.map +1 -1
- package/dist/esm/forwarder/index.js +2 -0
- package/dist/esm/forwarder/index.js.map +1 -1
- package/dist/esm/forwarder/mock-interface.d.ts +41 -0
- package/dist/esm/forwarder/mock-interface.d.ts.map +1 -0
- package/dist/esm/forwarder/{interface.js → mock-interface.js} +3 -2
- package/dist/esm/forwarder/mock-interface.js.map +1 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +2 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/meta-tx/biconomy.d.ts +1 -0
- package/dist/esm/meta-tx/biconomy.d.ts.map +1 -1
- package/dist/esm/meta-tx/biconomy.js +1 -1
- package/dist/esm/meta-tx/biconomy.js.map +1 -1
- package/dist/esm/meta-tx/handler.d.ts +41 -15
- package/dist/esm/meta-tx/handler.d.ts.map +1 -1
- package/dist/esm/meta-tx/handler.js +155 -4
- package/dist/esm/meta-tx/handler.js.map +1 -1
- package/dist/esm/meta-tx/mixin.d.ts +17 -7
- package/dist/esm/meta-tx/mixin.d.ts.map +1 -1
- package/dist/esm/meta-tx/mixin.js +52 -2
- package/dist/esm/meta-tx/mixin.js.map +1 -1
- package/dist/esm/native-meta-tx/handler.d.ts +1 -1
- package/dist/esm/native-meta-tx/handler.d.ts.map +1 -1
- package/dist/esm/native-meta-tx/mixin.d.ts +1 -1
- package/dist/esm/native-meta-tx/mixin.d.ts.map +1 -1
- package/dist/esm/native-meta-tx/mixin.js.map +1 -1
- package/dist/esm/utils/signature.d.ts +2 -0
- package/dist/esm/utils/signature.d.ts.map +1 -1
- package/dist/esm/utils/signature.js +8 -7
- package/dist/esm/utils/signature.js.map +1 -1
- package/dist/esm/voucher/handler.d.ts +6 -0
- package/dist/esm/voucher/handler.d.ts.map +1 -1
- package/dist/esm/voucher/handler.js +9 -1
- package/dist/esm/voucher/handler.js.map +1 -1
- package/dist/esm/voucher/interface.d.ts +3 -0
- package/dist/esm/voucher/interface.d.ts.map +1 -1
- package/dist/esm/voucher/interface.js +15 -0
- package/dist/esm/voucher/interface.js.map +1 -1
- package/dist/esm/voucher/mixin.d.ts +4 -0
- package/dist/esm/voucher/mixin.d.ts.map +1 -1
- package/dist/esm/voucher/mixin.js +11 -0
- package/dist/esm/voucher/mixin.js.map +1 -1
- package/package.json +3 -3
- package/src/forwarder/biconomy-interface.ts +48 -0
- package/src/forwarder/handler.ts +47 -4
- package/src/forwarder/index.ts +2 -0
- package/src/forwarder/{interface.ts → mock-interface.ts} +9 -1
- package/src/index.ts +2 -0
- package/src/meta-tx/biconomy.ts +5 -1
- package/src/meta-tx/handler.ts +237 -13
- package/src/meta-tx/mixin.ts +101 -4
- package/src/native-meta-tx/handler.ts +1 -1
- package/src/native-meta-tx/mixin.ts +3 -1
- package/src/utils/signature.ts +8 -7
- package/src/voucher/handler.ts +16 -0
- package/src/voucher/interface.ts +18 -0
- package/src/voucher/mixin.ts +21 -0
- package/dist/cjs/forwarder/interface.d.ts +0 -6
- package/dist/cjs/forwarder/interface.d.ts.map +0 -1
- package/dist/cjs/forwarder/interface.js +0 -15
- package/dist/cjs/forwarder/interface.js.map +0 -1
- package/dist/esm/forwarder/interface.d.ts +0 -6
- package/dist/esm/forwarder/interface.d.ts.map +0 -1
- package/dist/esm/forwarder/interface.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { decodeGetAvailablePreMints, decodeGetRangeByOfferId, encodeBurnPremintedVouchers, encodeGetAvailablePreMints, encodeGetRangeByOfferId, encodePreMint, encodeTransferFrom } from "./interface";
|
|
1
|
+
import { decodeGetAvailablePreMints, decodeGetRangeByOfferId, decodeIsApprovedForAll, encodeBurnPremintedVouchers, encodeGetAvailablePreMints, encodeGetRangeByOfferId, encodeIsApprovedForAll, encodePreMint, encodeTransferFrom } from "./interface";
|
|
2
2
|
export async function burnPremintedVouchers(args) {
|
|
3
3
|
return args.web3Lib.sendTransaction({
|
|
4
4
|
to: args.contractAddress,
|
|
@@ -38,4 +38,12 @@ export async function transferFrom(args) {
|
|
|
38
38
|
data: encodeTransferFrom(args.from, args.to, args.tokenId)
|
|
39
39
|
});
|
|
40
40
|
}
|
|
41
|
+
export async function isApprovedForAll(args) {
|
|
42
|
+
const result = await args.web3Lib.call({
|
|
43
|
+
to: args.contractAddress,
|
|
44
|
+
data: encodeIsApprovedForAll(args.owner, args.operator)
|
|
45
|
+
});
|
|
46
|
+
const [isApproved] = decodeIsApprovedForAll(result);
|
|
47
|
+
return isApproved;
|
|
48
|
+
}
|
|
41
49
|
//# sourceMappingURL=handler.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/voucher/handler.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,aAAa,EACb,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAI3C;IACC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;KAChD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAI1C;IACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;KAC/C,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAIvC;IACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,OAAO;QACrB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAK7B;IACC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAMlC;IACC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC;KAC3D,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/voucher/handler.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,2BAA2B,EAC3B,0BAA0B,EAC1B,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACb,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,KAAK,UAAU,qBAAqB,CAAC,IAI3C;IACC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC;KAChD,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,IAI1C;IACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,0BAA0B,CAAC,IAAI,CAAC,OAAO,CAAC;KAC/C,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAIvC;IACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC;KAC5C,CAAC,CAAC;IACH,MAAM,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC;IAChD,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,MAAM,EAAE,KAAK,CAAC,OAAO;QACrB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,IAK7B;IACC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAMlC;IACC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;QAClC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC;KAC3D,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAKtC;IACC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;QACrC,EAAE,EAAE,IAAI,CAAC,eAAe;QACxB,IAAI,EAAE,sBAAsB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;KACxD,CAAC,CAAC;IACH,MAAM,CAAC,UAAU,CAAC,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACpD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -4,8 +4,11 @@ export declare const bosonVoucherIface: Interface;
|
|
|
4
4
|
export declare function encodeBurnPremintedVouchers(offerId: BigNumberish): string;
|
|
5
5
|
export declare function encodeGetAvailablePreMints(offerId: BigNumberish): string;
|
|
6
6
|
export declare function decodeGetAvailablePreMints(result: string): import("@ethersproject/abi").Result;
|
|
7
|
+
export declare function encodeIsApprovedForAll(owner: string, operator: string): string;
|
|
8
|
+
export declare function decodeIsApprovedForAll(result: string): import("@ethersproject/abi").Result;
|
|
7
9
|
export declare function encodeGetRangeByOfferId(offerId: BigNumberish): string;
|
|
8
10
|
export declare function decodeGetRangeByOfferId(result: string): import("@ethersproject/abi").Result;
|
|
9
11
|
export declare function encodePreMint(offerId: BigNumberish, amount: BigNumberish): string;
|
|
12
|
+
export declare function encodeSetApprovalForAll(operator: string, approved: boolean): string;
|
|
10
13
|
export declare function encodeTransferFrom(from: BigNumberish, to: BigNumberish, tokenId: BigNumberish): string;
|
|
11
14
|
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/voucher/interface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,eAAO,MAAM,iBAAiB,WAAuC,CAAC;AAEtE,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,YAAY,UAIhE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,YAAY,UAI/D;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,uCAExD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,UAE5D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,uCAErD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,UAExE;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,YAAY,UAOtB"}
|
|
1
|
+
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/voucher/interface.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,eAAO,MAAM,iBAAiB,WAAuC,CAAC;AAEtE,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,YAAY,UAIhE;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,YAAY,UAI/D;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,uCAExD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,UAKrE;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,uCAEpD;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,YAAY,UAE5D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,uCAErD;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,UAExE;AAED,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,UAK1E;AAED,wBAAgB,kBAAkB,CAChC,IAAI,EAAE,YAAY,EAClB,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,YAAY,UAOtB"}
|
|
@@ -14,6 +14,15 @@ export function encodeGetAvailablePreMints(offerId) {
|
|
|
14
14
|
export function decodeGetAvailablePreMints(result) {
|
|
15
15
|
return bosonVoucherIface.decodeFunctionResult("getAvailablePreMints", result);
|
|
16
16
|
}
|
|
17
|
+
export function encodeIsApprovedForAll(owner, operator) {
|
|
18
|
+
return bosonVoucherIface.encodeFunctionData("isApprovedForAll", [
|
|
19
|
+
owner,
|
|
20
|
+
operator
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
23
|
+
export function decodeIsApprovedForAll(result) {
|
|
24
|
+
return bosonVoucherIface.decodeFunctionResult("isApprovedForAll", result);
|
|
25
|
+
}
|
|
17
26
|
export function encodeGetRangeByOfferId(offerId) {
|
|
18
27
|
return bosonVoucherIface.encodeFunctionData("getRangeByOfferId", [offerId]);
|
|
19
28
|
}
|
|
@@ -23,6 +32,12 @@ export function decodeGetRangeByOfferId(result) {
|
|
|
23
32
|
export function encodePreMint(offerId, amount) {
|
|
24
33
|
return bosonVoucherIface.encodeFunctionData("preMint", [offerId, amount]);
|
|
25
34
|
}
|
|
35
|
+
export function encodeSetApprovalForAll(operator, approved) {
|
|
36
|
+
return bosonVoucherIface.encodeFunctionData("setApprovalForAll", [
|
|
37
|
+
operator,
|
|
38
|
+
approved
|
|
39
|
+
]);
|
|
40
|
+
}
|
|
26
41
|
export function encodeTransferFrom(from, to, tokenId) {
|
|
27
42
|
return bosonVoucherIface.encodeFunctionData("transferFrom", [
|
|
28
43
|
from,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/voucher/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAEtE,MAAM,UAAU,2BAA2B,CAAC,OAAqB;IAC/D,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,uBAAuB,EAAE;QACnE,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAqB;IAC9D,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,sBAAsB,EAAE;QAClE,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAc;IACvD,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAqB;IAC3D,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAqB,EAAE,MAAoB;IACvE,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAkB,EAClB,EAAgB,EAChB,OAAqB;IAErB,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,EAAE;QAC1D,IAAI;QACJ,EAAE;QACF,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/voucher/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAG/C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;AAEtE,MAAM,UAAU,2BAA2B,CAAC,OAAqB;IAC/D,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,uBAAuB,EAAE;QACnE,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAAqB;IAC9D,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,sBAAsB,EAAE;QAClE,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,MAAc;IACvD,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,QAAgB;IACpE,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,kBAAkB,EAAE;QAC9D,KAAK;QACL,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,OAAqB;IAC3D,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,mBAAmB,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAc;IACpD,OAAO,iBAAiB,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAqB,EAAE,MAAoB;IACvE,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,QAAgB,EAAE,QAAiB;IACzE,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,mBAAmB,EAAE;QAC/D,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAkB,EAClB,EAAgB,EAChB,OAAqB;IAErB,OAAO,iBAAiB,CAAC,kBAAkB,CAAC,cAAc,EAAE;QAC1D,IAAI;QACJ,EAAE;QACF,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -49,5 +49,9 @@ export declare class VoucherMixin extends BaseCoreSDK {
|
|
|
49
49
|
owner: BigNumberish;
|
|
50
50
|
contractAddress: string;
|
|
51
51
|
}>): Promise<TransactionResponse>;
|
|
52
|
+
isApprovedForAll(operator: string, overrides?: Partial<{
|
|
53
|
+
owner: string;
|
|
54
|
+
contractAddress: string;
|
|
55
|
+
}>): Promise<boolean>;
|
|
52
56
|
}
|
|
53
57
|
//# sourceMappingURL=mixin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mixin.d.ts","sourceRoot":"","sources":["../../../src/voucher/mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"mixin.d.ts","sourceRoot":"","sources":["../../../src/voucher/mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,KAAK,EAAE,MAAM,iCAAiC,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAIxD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,qBAAa,YAAa,SAAQ,WAAW;IAC3C;;;;;OAKG;IACU,qBAAqB,CAChC,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,mBAAmB,CAAC;IAW/B;;;;;OAKG;IACU,oBAAoB,CAC/B,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,MAAM,CAAC;IAWlB;;;;;OAKG;IACU,iBAAiB,CAC5B,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,KAAK,CAAC;IAWjB;;;;;OAKG;IACU,OAAO,CAClB,OAAO,EAAE,YAAY,EACrB,MAAM,EAAE,YAAY,EACpB,SAAS,GAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,mBAAmB,CAAC;IAY/B;;;;;OAKG;IACU,YAAY,CACvB,OAAO,EAAE,YAAY,EACrB,EAAE,EAAE,YAAY,EAChB,OAAO,EAAE,YAAY,EACrB,SAAS,GAAE,OAAO,CAAC;QACjB,KAAK,EAAE,YAAY,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM,GACN,OAAO,CAAC,mBAAmB,CAAC;IAclB,gBAAgB,CAC3B,QAAQ,EAAE,MAAM,EAChB,SAAS,GAAE,OAAO,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,eAAe,EAAE,MAAM,CAAC;KACzB,CAAM;CAcV"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { handler } from ".";
|
|
2
|
+
import { accounts } from "..";
|
|
2
3
|
import { getOfferById } from "../offers/subgraph";
|
|
3
4
|
import { BaseCoreSDK } from "./../mixins/base-core-sdk";
|
|
4
5
|
export class VoucherMixin extends BaseCoreSDK {
|
|
@@ -80,5 +81,15 @@ export class VoucherMixin extends BaseCoreSDK {
|
|
|
80
81
|
web3Lib: this._web3Lib
|
|
81
82
|
});
|
|
82
83
|
}
|
|
84
|
+
async isApprovedForAll(operator, overrides = {}) {
|
|
85
|
+
const sellerAddress = await this._web3Lib.getSignerAddress();
|
|
86
|
+
const seller = await accounts.subgraph.getSellerByAddress(this._subgraphUrl, sellerAddress);
|
|
87
|
+
return handler.isApprovedForAll({
|
|
88
|
+
owner: overrides.owner || sellerAddress,
|
|
89
|
+
operator,
|
|
90
|
+
contractAddress: overrides.contractAddress || seller.voucherCloneAddress,
|
|
91
|
+
web3Lib: this._web3Lib
|
|
92
|
+
});
|
|
93
|
+
}
|
|
83
94
|
}
|
|
84
95
|
//# sourceMappingURL=mixin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mixin.js","sourceRoot":"","sources":["../../../src/voucher/mixin.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,MAAM,OAAO,YAAa,SAAQ,WAAW;IAC3C;;;;;OAKG;IACI,KAAK,CAAC,qBAAqB,CAChC,OAAqB,EACrB,YAEK,EAAE;QAEP,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,qBAAqB,CAAC;YACnC,OAAO;YACP,eAAe,EACb,SAAS,CAAC,eAAe;gBACzB,iBAAiB,CAAC,MAAM,CAAC,mBAAmB;YAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,oBAAoB,CAC/B,OAAqB,EACrB,YAEK,EAAE;QAEP,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,oBAAoB,CAAC;YAClC,OAAO;YACP,eAAe,EACb,SAAS,CAAC,eAAe;gBACzB,iBAAiB,CAAC,MAAM,CAAC,mBAAmB;YAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,iBAAiB,CAC5B,OAAqB,EACrB,YAEK,EAAE;QAEP,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,iBAAiB,CAAC;YAC/B,OAAO;YACP,eAAe,EACb,SAAS,CAAC,eAAe;gBACzB,iBAAiB,CAAC,MAAM,CAAC,mBAAmB;YAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAClB,OAAqB,EACrB,MAAoB,EACpB,YAEK,EAAE;QAEP,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzE,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,OAAO;YACP,MAAM;YACN,eAAe,EACb,SAAS,CAAC,eAAe;gBACzB,iBAAiB,CAAC,MAAM,CAAC,mBAAmB;YAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,YAAY,CACvB,OAAqB,EACrB,EAAgB,EAChB,OAAqB,EACrB,YAGK,EAAE;QAEP,MAAM,iBAAiB,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAEzE,OAAO,OAAO,CAAC,YAAY,CAAC;YAC1B,IAAI,EAAE,SAAS,CAAC,KAAK,IAAI,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,CAAC;YACjE,EAAE;YACF,OAAO;YACP,eAAe,EACb,SAAS,CAAC,eAAe;gBACzB,iBAAiB,CAAC,MAAM,CAAC,mBAAmB;YAC9C,OAAO,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
1
|
+
{"version":3,"file":"mixin.js","sourceRoot":"","sources":["../../../src/voucher/mixin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bosonprotocol/core-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.25.0-alpha.1",
|
|
4
4
|
"description": "Facilitates interaction with the contracts and subgraphs of the Boson Protocol",
|
|
5
5
|
"main": "./dist/cjs/index.js",
|
|
6
6
|
"module": "./dist/esm/index.js",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@bosonprotocol/common": "^1.
|
|
36
|
+
"@bosonprotocol/common": "^1.21.0-alpha.1",
|
|
37
37
|
"@ethersproject/abi": "^5.5.0",
|
|
38
38
|
"@ethersproject/address": "^5.5.0",
|
|
39
39
|
"@ethersproject/bignumber": "^5.5.0",
|
|
@@ -54,5 +54,5 @@
|
|
|
54
54
|
"ts-jest": "^27.1.3",
|
|
55
55
|
"typescript": "^4.5.5"
|
|
56
56
|
},
|
|
57
|
-
"gitHead": "
|
|
57
|
+
"gitHead": "828eb7c080300ca3f2072789fc719b4600351067"
|
|
58
58
|
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { abis } from "@bosonprotocol/common";
|
|
2
|
+
import { Interface } from "@ethersproject/abi";
|
|
3
|
+
import { BigNumberish } from "@ethersproject/bignumber";
|
|
4
|
+
|
|
5
|
+
export const abi = abis.BiconomyForwarderABI;
|
|
6
|
+
const forwarderInterface = new Interface(abi);
|
|
7
|
+
|
|
8
|
+
export type ERC20ForwardRequest = {
|
|
9
|
+
from: BigNumberish;
|
|
10
|
+
to: BigNumberish;
|
|
11
|
+
token: BigNumberish;
|
|
12
|
+
txGas: BigNumberish;
|
|
13
|
+
tokenGasPrice: string;
|
|
14
|
+
batchId: BigNumberish;
|
|
15
|
+
batchNonce: BigNumberish;
|
|
16
|
+
deadline: number;
|
|
17
|
+
data: string;
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export function encodeGetNonce(
|
|
21
|
+
signerAddress: BigNumberish,
|
|
22
|
+
batchId: BigNumberish
|
|
23
|
+
) {
|
|
24
|
+
return forwarderInterface.encodeFunctionData("getNonce", [
|
|
25
|
+
signerAddress,
|
|
26
|
+
batchId
|
|
27
|
+
]);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export function decodeGetNonce(result: string) {
|
|
31
|
+
return forwarderInterface.decodeFunctionResult("getNonce", result);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export function encodeVerifyEIP712(
|
|
35
|
+
request: ERC20ForwardRequest,
|
|
36
|
+
domainSeparator: string,
|
|
37
|
+
signature: string
|
|
38
|
+
) {
|
|
39
|
+
return forwarderInterface.encodeFunctionData("verifyEIP712", [
|
|
40
|
+
request,
|
|
41
|
+
domainSeparator,
|
|
42
|
+
signature
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
export function decodeVerifyEIP712(result: string) {
|
|
47
|
+
return forwarderInterface.decodeFunctionResult("verifyEIP712", result);
|
|
48
|
+
}
|
package/src/forwarder/handler.ts
CHANGED
|
@@ -1,15 +1,58 @@
|
|
|
1
|
-
import { Web3LibAdapter } from "@bosonprotocol/common";
|
|
2
|
-
import {
|
|
1
|
+
import { Web3LibAdapter, abis } from "@bosonprotocol/common";
|
|
2
|
+
import { BigNumberish } from "@ethersproject/bignumber";
|
|
3
|
+
import * as mockInterface from "./mock-interface";
|
|
4
|
+
import * as biconomyInterface from "./biconomy-interface";
|
|
3
5
|
|
|
4
6
|
export async function getNonce(args: {
|
|
5
7
|
contractAddress: string;
|
|
6
8
|
user: string;
|
|
7
9
|
web3Lib: Web3LibAdapter;
|
|
10
|
+
batchId: BigNumberish;
|
|
11
|
+
forwarderAbi: typeof abis.MockForwarderABI | typeof abis.BiconomyForwarderABI;
|
|
8
12
|
}): Promise<string> {
|
|
13
|
+
const isMock = args.forwarderAbi === mockInterface.abi;
|
|
14
|
+
const data = isMock
|
|
15
|
+
? mockInterface.encodeGetNonce(args.user)
|
|
16
|
+
: biconomyInterface.encodeGetNonce(args.user, args.batchId);
|
|
17
|
+
|
|
9
18
|
const result = await args.web3Lib.call({
|
|
10
19
|
to: args.contractAddress,
|
|
11
|
-
data
|
|
20
|
+
data
|
|
12
21
|
});
|
|
13
|
-
const
|
|
22
|
+
const nonceResult = isMock
|
|
23
|
+
? mockInterface.decodeGetNonce(result)
|
|
24
|
+
: biconomyInterface.decodeGetNonce(result);
|
|
25
|
+
const [nonce] = nonceResult;
|
|
14
26
|
return String(nonce);
|
|
15
27
|
}
|
|
28
|
+
|
|
29
|
+
export async function verifyEIP712(args: {
|
|
30
|
+
contractAddress: string;
|
|
31
|
+
request: biconomyInterface.ERC20ForwardRequest;
|
|
32
|
+
domainSeparator: string;
|
|
33
|
+
web3Lib: Web3LibAdapter;
|
|
34
|
+
signature: string;
|
|
35
|
+
forwarderAbi: typeof abis.MockForwarderABI | typeof abis.BiconomyForwarderABI;
|
|
36
|
+
}): Promise<boolean> {
|
|
37
|
+
const isMock = args.forwarderAbi === mockInterface.abi;
|
|
38
|
+
if (isMock) {
|
|
39
|
+
// TODO: call mockForwarder.verify(request, signature)
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
const data = biconomyInterface.encodeVerifyEIP712(
|
|
43
|
+
args.request,
|
|
44
|
+
args.domainSeparator,
|
|
45
|
+
args.signature
|
|
46
|
+
);
|
|
47
|
+
try {
|
|
48
|
+
const result = await args.web3Lib.call({
|
|
49
|
+
to: args.contractAddress,
|
|
50
|
+
data
|
|
51
|
+
});
|
|
52
|
+
const ret = biconomyInterface.decodeVerifyEIP712(result);
|
|
53
|
+
console.log({ ret });
|
|
54
|
+
return true;
|
|
55
|
+
} catch (e) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
}
|
package/src/forwarder/index.ts
CHANGED
|
@@ -2,7 +2,15 @@ import { abis } from "@bosonprotocol/common";
|
|
|
2
2
|
import { Interface } from "@ethersproject/abi";
|
|
3
3
|
import { BigNumberish } from "@ethersproject/bignumber";
|
|
4
4
|
|
|
5
|
-
export const
|
|
5
|
+
export const abi = abis.MockForwarderABI;
|
|
6
|
+
const forwarderInterface = new Interface(abi);
|
|
7
|
+
|
|
8
|
+
export type MockForwardRequest = {
|
|
9
|
+
from: string;
|
|
10
|
+
to: string;
|
|
11
|
+
nonce: BigNumberish;
|
|
12
|
+
data: string;
|
|
13
|
+
};
|
|
6
14
|
|
|
7
15
|
export function encodeGetNonce(signerAddress: BigNumberish) {
|
|
8
16
|
return forwarderInterface.encodeFunctionData("getNonce", [signerAddress]);
|
package/src/index.ts
CHANGED
|
@@ -11,6 +11,8 @@ export * as metaTx from "./meta-tx";
|
|
|
11
11
|
export * as nativeMetaTx from "./native-meta-tx";
|
|
12
12
|
export * as subgraph from "./subgraph";
|
|
13
13
|
export * as groups from "./groups";
|
|
14
|
+
export * as forwarder from "./forwarder";
|
|
15
|
+
export * as voucher from "./voucher";
|
|
14
16
|
|
|
15
17
|
export {
|
|
16
18
|
defaultConfigs,
|
package/src/meta-tx/biconomy.ts
CHANGED
|
@@ -13,6 +13,7 @@ export type RelayTransactionArgs = {
|
|
|
13
13
|
to: string;
|
|
14
14
|
params: unknown[];
|
|
15
15
|
from: string;
|
|
16
|
+
signatureType?: string;
|
|
16
17
|
};
|
|
17
18
|
|
|
18
19
|
export type RelayOverrides = {
|
|
@@ -83,7 +84,10 @@ export class Biconomy {
|
|
|
83
84
|
|
|
84
85
|
const txResponse = (await response.json()) as RelayTransactionResponse;
|
|
85
86
|
if (!txResponse.txHash) {
|
|
86
|
-
throw new ApiError(
|
|
87
|
+
throw new ApiError(
|
|
88
|
+
txResponse.flag || (txResponse as any).code,
|
|
89
|
+
txResponse.log || (txResponse as any).message
|
|
90
|
+
);
|
|
87
91
|
}
|
|
88
92
|
return txResponse;
|
|
89
93
|
}
|
package/src/meta-tx/handler.ts
CHANGED
|
@@ -9,7 +9,9 @@ import {
|
|
|
9
9
|
CreateGroupArgs,
|
|
10
10
|
ConditionStruct,
|
|
11
11
|
UpdateSellerArgs,
|
|
12
|
-
OptInToSellerUpdateArgs
|
|
12
|
+
OptInToSellerUpdateArgs,
|
|
13
|
+
defaultConfigs,
|
|
14
|
+
abis
|
|
13
15
|
} from "@bosonprotocol/common";
|
|
14
16
|
import { storeMetadataOnTheGraph } from "../offers/storage";
|
|
15
17
|
import { BigNumber, BigNumberish } from "@ethersproject/bignumber";
|
|
@@ -35,7 +37,11 @@ import { encodeDepositFunds, encodeWithdrawFunds } from "../funds/interface";
|
|
|
35
37
|
import { bosonDisputeHandlerIface } from "../disputes/interface";
|
|
36
38
|
import { encodeCreateGroup } from "../groups/interface";
|
|
37
39
|
import { encodeCreateOfferWithCondition } from "../orchestration/interface";
|
|
38
|
-
import { encodePreMint } from "../voucher/interface";
|
|
40
|
+
import { encodePreMint, encodeSetApprovalForAll } from "../voucher/interface";
|
|
41
|
+
import { ethers } from "ethers";
|
|
42
|
+
import { ERC20ForwardRequest } from "../forwarder/biconomy-interface";
|
|
43
|
+
import { verifyEIP712 } from "../forwarder/handler";
|
|
44
|
+
import { MockForwardRequest } from "../forwarder/mock-interface";
|
|
39
45
|
|
|
40
46
|
export type BaseMetaTxArgs = {
|
|
41
47
|
web3Lib: Web3LibAdapter;
|
|
@@ -60,6 +66,13 @@ export type SignedMetaTx = {
|
|
|
60
66
|
v: number;
|
|
61
67
|
};
|
|
62
68
|
|
|
69
|
+
export type SignedVoucherMetaTx = Omit<SignedMetaTx, "functionName"> & {
|
|
70
|
+
to: string;
|
|
71
|
+
signature: string;
|
|
72
|
+
request: ERC20ForwardRequest | MockForwardRequest;
|
|
73
|
+
domainSeparator?: string;
|
|
74
|
+
};
|
|
75
|
+
|
|
63
76
|
export async function signMetaTx(
|
|
64
77
|
args: BaseMetaTxArgs & {
|
|
65
78
|
functionName: string;
|
|
@@ -107,13 +120,7 @@ export async function signVoucherMetaTx(
|
|
|
107
120
|
args: BaseVoucherMetaTxArgs & {
|
|
108
121
|
functionSignature: string;
|
|
109
122
|
}
|
|
110
|
-
): Promise<{
|
|
111
|
-
to: string;
|
|
112
|
-
functionSignature: string;
|
|
113
|
-
r: string;
|
|
114
|
-
s: string;
|
|
115
|
-
v: number;
|
|
116
|
-
}> {
|
|
123
|
+
): Promise<SignedVoucherMetaTx> {
|
|
117
124
|
const forwardType = [
|
|
118
125
|
{ name: "from", type: "address" },
|
|
119
126
|
{ name: "to", type: "address" },
|
|
@@ -158,10 +165,178 @@ export async function signVoucherMetaTx(
|
|
|
158
165
|
return {
|
|
159
166
|
to: message.to,
|
|
160
167
|
functionSignature: args.functionSignature,
|
|
168
|
+
request: message,
|
|
161
169
|
...signature
|
|
162
170
|
};
|
|
163
171
|
}
|
|
164
172
|
|
|
173
|
+
export async function signBiconomyVoucherMetaTx(
|
|
174
|
+
args: BaseVoucherMetaTxArgs & {
|
|
175
|
+
functionSignature: string;
|
|
176
|
+
batchId: BigNumberish;
|
|
177
|
+
forwarderAbi:
|
|
178
|
+
| typeof abis.MockForwarderABI
|
|
179
|
+
| typeof abis.BiconomyForwarderABI;
|
|
180
|
+
txGas: BigNumberish;
|
|
181
|
+
}
|
|
182
|
+
): Promise<SignedVoucherMetaTx> {
|
|
183
|
+
const customSignatureType = {
|
|
184
|
+
EIP712Domain: [
|
|
185
|
+
{ name: "name", type: "string" },
|
|
186
|
+
{ name: "version", type: "string" },
|
|
187
|
+
// { name: "chainId", type: "uint256" },
|
|
188
|
+
// { name: "verifyingContract", type: "address" }
|
|
189
|
+
{ name: "verifyingContract", type: "address" },
|
|
190
|
+
{ name: "salt", type: "bytes32" }
|
|
191
|
+
],
|
|
192
|
+
ERC20ForwardRequest: [
|
|
193
|
+
{ name: "from", type: "address" },
|
|
194
|
+
{ name: "to", type: "address" },
|
|
195
|
+
{ name: "token", type: "address" },
|
|
196
|
+
{ name: "txGas", type: "uint256" },
|
|
197
|
+
{ name: "tokenGasPrice", type: "uint256" },
|
|
198
|
+
{ name: "batchId", type: "uint256" },
|
|
199
|
+
{ name: "batchNonce", type: "uint256" },
|
|
200
|
+
{ name: "deadline", type: "uint256" },
|
|
201
|
+
{ name: "data", type: "bytes" }
|
|
202
|
+
]
|
|
203
|
+
};
|
|
204
|
+
|
|
205
|
+
const signerAddress = await args.web3Lib.getSignerAddress();
|
|
206
|
+
const chainId = await args.web3Lib.getChainId();
|
|
207
|
+
|
|
208
|
+
const message = {
|
|
209
|
+
from: signerAddress,
|
|
210
|
+
to: args.bosonVoucherAddress,
|
|
211
|
+
token: "0x0000000000000000000000000000000000000000",
|
|
212
|
+
txGas: args.txGas,
|
|
213
|
+
tokenGasPrice: "0",
|
|
214
|
+
batchId: args.batchId,
|
|
215
|
+
batchNonce: args.nonce,
|
|
216
|
+
deadline: Math.floor(Date.now() / 1000 + 3600),
|
|
217
|
+
data: args.functionSignature
|
|
218
|
+
};
|
|
219
|
+
|
|
220
|
+
const biconomyForwarderDomainData = {
|
|
221
|
+
name: "Biconomy Forwarder",
|
|
222
|
+
version: "1",
|
|
223
|
+
verifyingContract: args.forwarderAddress,
|
|
224
|
+
salt: ethers.utils.hexZeroPad(
|
|
225
|
+
ethers.BigNumber.from(chainId).toHexString(),
|
|
226
|
+
32
|
|
227
|
+
)
|
|
228
|
+
};
|
|
229
|
+
|
|
230
|
+
const signatureParams = await prepareDataSignatureParameters({
|
|
231
|
+
...args,
|
|
232
|
+
chainId,
|
|
233
|
+
verifyingContractAddress: args.forwarderAddress,
|
|
234
|
+
customSignatureType,
|
|
235
|
+
primaryType: "ERC20ForwardRequest",
|
|
236
|
+
message,
|
|
237
|
+
customDomainData: {
|
|
238
|
+
...biconomyForwarderDomainData
|
|
239
|
+
// chainId
|
|
240
|
+
// salt: undefined
|
|
241
|
+
}
|
|
242
|
+
});
|
|
243
|
+
const signature = signatureParams.signature;
|
|
244
|
+
const getDomainSeparator = async () => {
|
|
245
|
+
const domainData = biconomyForwarderDomainData;
|
|
246
|
+
const domainSeparator = ethers.utils.keccak256(
|
|
247
|
+
ethers.utils.defaultAbiCoder.encode(
|
|
248
|
+
["bytes32", "bytes32", "bytes32", "address", "bytes32"],
|
|
249
|
+
[
|
|
250
|
+
ethers.utils.id(
|
|
251
|
+
"EIP712Domain(string name,string version,address verifyingContract,bytes32 salt)"
|
|
252
|
+
),
|
|
253
|
+
ethers.utils.id(domainData.name),
|
|
254
|
+
ethers.utils.id(domainData.version),
|
|
255
|
+
domainData.verifyingContract,
|
|
256
|
+
domainData.salt
|
|
257
|
+
]
|
|
258
|
+
)
|
|
259
|
+
);
|
|
260
|
+
return domainSeparator;
|
|
261
|
+
};
|
|
262
|
+
const domainSeparator = await getDomainSeparator();
|
|
263
|
+
// verify signature
|
|
264
|
+
const signatureVerified = await verifyEIP712({
|
|
265
|
+
request: message,
|
|
266
|
+
contractAddress: args.forwarderAddress,
|
|
267
|
+
web3Lib: args.web3Lib,
|
|
268
|
+
domainSeparator,
|
|
269
|
+
forwarderAbi: args.forwarderAbi,
|
|
270
|
+
signature
|
|
271
|
+
});
|
|
272
|
+
if (!signatureVerified) {
|
|
273
|
+
throw `Signature is not verified`;
|
|
274
|
+
}
|
|
275
|
+
|
|
276
|
+
return {
|
|
277
|
+
to: message.to,
|
|
278
|
+
domainSeparator,
|
|
279
|
+
request: message,
|
|
280
|
+
...signatureParams,
|
|
281
|
+
signature,
|
|
282
|
+
functionSignature: args.functionSignature
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
|
|
286
|
+
export async function relayBiconomyMetaTransaction(args: {
|
|
287
|
+
web3LibAdapter: Web3LibAdapter;
|
|
288
|
+
chainId: number;
|
|
289
|
+
contractAddress: string;
|
|
290
|
+
metaTx: {
|
|
291
|
+
config: Omit<MetaTxConfig, "apiIds" | "forwarderAbi"> & { apiId: string };
|
|
292
|
+
params: {
|
|
293
|
+
userAddress: string;
|
|
294
|
+
request: ERC20ForwardRequest;
|
|
295
|
+
domainSeparator: string;
|
|
296
|
+
signature: string;
|
|
297
|
+
};
|
|
298
|
+
};
|
|
299
|
+
}): Promise<TransactionResponse> {
|
|
300
|
+
const { chainId, contractAddress, metaTx } = args;
|
|
301
|
+
|
|
302
|
+
const biconomy = new Biconomy(
|
|
303
|
+
metaTx.config.relayerUrl,
|
|
304
|
+
metaTx.config.apiKey,
|
|
305
|
+
metaTx.config.apiId
|
|
306
|
+
);
|
|
307
|
+
|
|
308
|
+
const relayTxResponse = await biconomy.relayTransaction({
|
|
309
|
+
to: contractAddress,
|
|
310
|
+
params: [
|
|
311
|
+
metaTx.params.request,
|
|
312
|
+
metaTx.params.domainSeparator,
|
|
313
|
+
metaTx.params.signature
|
|
314
|
+
],
|
|
315
|
+
from: metaTx.params.userAddress,
|
|
316
|
+
signatureType: "EIP712_SIGN"
|
|
317
|
+
});
|
|
318
|
+
|
|
319
|
+
return {
|
|
320
|
+
wait: async () => {
|
|
321
|
+
const waitResponse = await biconomy.wait({
|
|
322
|
+
networkId: chainId,
|
|
323
|
+
transactionHash: relayTxResponse.txHash
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
const txHash = waitResponse.data.newHash;
|
|
327
|
+
const txReceipt = await args.web3LibAdapter.getTransactionReceipt(txHash);
|
|
328
|
+
return {
|
|
329
|
+
to: txReceipt?.to || contractAddress,
|
|
330
|
+
from: txReceipt?.from || metaTx.params.userAddress,
|
|
331
|
+
transactionHash: txHash,
|
|
332
|
+
logs: txReceipt?.logs || [],
|
|
333
|
+
effectiveGasPrice: BigNumber.from(waitResponse.data.newGasPrice)
|
|
334
|
+
};
|
|
335
|
+
},
|
|
336
|
+
hash: relayTxResponse.txHash
|
|
337
|
+
};
|
|
338
|
+
}
|
|
339
|
+
|
|
165
340
|
export async function signMetaTxCreateSeller(
|
|
166
341
|
args: BaseMetaTxArgs & {
|
|
167
342
|
createSellerArgs: CreateSellerArgs;
|
|
@@ -360,11 +535,60 @@ export async function signMetaTxPreMint(
|
|
|
360
535
|
args: BaseVoucherMetaTxArgs & {
|
|
361
536
|
offerId: BigNumberish;
|
|
362
537
|
amount: BigNumberish;
|
|
538
|
+
batchId: BigNumberish;
|
|
539
|
+
forwarderAbi:
|
|
540
|
+
| typeof abis.MockForwarderABI
|
|
541
|
+
| typeof abis.BiconomyForwarderABI;
|
|
363
542
|
}
|
|
364
|
-
) {
|
|
365
|
-
|
|
543
|
+
): Promise<SignedVoucherMetaTx> {
|
|
544
|
+
const localConfig = defaultConfigs.find(
|
|
545
|
+
(config) => config.envName === "local"
|
|
546
|
+
);
|
|
547
|
+
const isLocal = localConfig.chainId === args.chainId;
|
|
548
|
+
const functionSignature = encodePreMint(args.offerId, args.amount);
|
|
549
|
+
if (isLocal) {
|
|
550
|
+
return signVoucherMetaTx({
|
|
551
|
+
...args,
|
|
552
|
+
functionSignature
|
|
553
|
+
});
|
|
554
|
+
}
|
|
555
|
+
const txGas = 200000 + BigNumber.from(args.amount).mul(2500).toNumber(); // ~(180000 + 2250*N) estimation on 2023/02/03
|
|
556
|
+
return signBiconomyVoucherMetaTx({
|
|
557
|
+
...args,
|
|
558
|
+
functionSignature,
|
|
559
|
+
txGas
|
|
560
|
+
});
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
export async function signMetaTxSetApprovalForAll(
|
|
564
|
+
args: BaseVoucherMetaTxArgs & {
|
|
565
|
+
operator: string;
|
|
566
|
+
approved: boolean;
|
|
567
|
+
batchId: BigNumberish;
|
|
568
|
+
forwarderAbi:
|
|
569
|
+
| typeof abis.MockForwarderABI
|
|
570
|
+
| typeof abis.BiconomyForwarderABI;
|
|
571
|
+
}
|
|
572
|
+
): Promise<SignedVoucherMetaTx> {
|
|
573
|
+
const localConfig = defaultConfigs.find(
|
|
574
|
+
(config) => config.envName === "local"
|
|
575
|
+
);
|
|
576
|
+
const isLocal = localConfig.chainId === args.chainId;
|
|
577
|
+
const functionSignature = encodeSetApprovalForAll(
|
|
578
|
+
args.operator,
|
|
579
|
+
args.approved
|
|
580
|
+
);
|
|
581
|
+
if (isLocal) {
|
|
582
|
+
return signVoucherMetaTx({
|
|
583
|
+
...args,
|
|
584
|
+
functionSignature
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
const txGas = 100000; // ~70000 estimation on 2023/02/03
|
|
588
|
+
return signBiconomyVoucherMetaTx({
|
|
366
589
|
...args,
|
|
367
|
-
functionSignature
|
|
590
|
+
functionSignature,
|
|
591
|
+
txGas
|
|
368
592
|
});
|
|
369
593
|
}
|
|
370
594
|
|
|
@@ -753,7 +977,7 @@ export async function relayMetaTransaction(args: {
|
|
|
753
977
|
chainId: number;
|
|
754
978
|
contractAddress: string;
|
|
755
979
|
metaTx: {
|
|
756
|
-
config: Omit<MetaTxConfig, "apiIds"> & { apiId: string };
|
|
980
|
+
config: Omit<MetaTxConfig, "apiIds" | "forwarderAbi"> & { apiId: string };
|
|
757
981
|
params: {
|
|
758
982
|
userAddress: string;
|
|
759
983
|
functionName: string;
|