thirdweb 5.48.2 → 5.48.3-nightly-b661ce7b2fd58e7ff01faf47cf8fb3bb232841ec-20240827000337
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/exports/wallets/smart.js +4 -2
- package/dist/cjs/exports/wallets/smart.js.map +1 -1
- package/dist/cjs/extensions/erc1155/drops/write/claimTo.js.map +1 -1
- package/dist/cjs/extensions/erc4337/__generated__/IEntryPoint_v07/events/PostOpRevertReason.js +32 -0
- package/dist/cjs/extensions/erc4337/__generated__/IEntryPoint_v07/events/PostOpRevertReason.js.map +1 -0
- package/dist/cjs/extensions/erc4337/__generated__/IEntryPoint_v07/read/getUserOpHash.js +153 -0
- package/dist/cjs/extensions/erc4337/__generated__/IEntryPoint_v07/read/getUserOpHash.js.map +1 -0
- package/dist/cjs/extensions/prebuilts/__generated__/VoteERC20/write/initialize.js +184 -0
- package/dist/cjs/extensions/prebuilts/__generated__/VoteERC20/write/initialize.js.map +1 -0
- package/dist/cjs/extensions/prebuilts/deploy-vote.js +122 -0
- package/dist/cjs/extensions/prebuilts/deploy-vote.js.map +1 -0
- package/dist/cjs/version.js +1 -1
- package/dist/cjs/version.js.map +1 -1
- package/dist/cjs/wallets/smart/index.js +13 -2
- package/dist/cjs/wallets/smart/index.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/bundler.js +11 -2
- package/dist/cjs/wallets/smart/lib/bundler.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/constants.js +27 -13
- package/dist/cjs/wallets/smart/lib/constants.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/packUserOp.js +75 -0
- package/dist/cjs/wallets/smart/lib/packUserOp.js.map +1 -0
- package/dist/cjs/wallets/smart/lib/paymaster.js +11 -1
- package/dist/cjs/wallets/smart/lib/paymaster.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/userop.js +201 -66
- package/dist/cjs/wallets/smart/lib/userop.js.map +1 -1
- package/dist/cjs/wallets/smart/lib/utils.js +1 -1
- package/dist/cjs/wallets/smart/lib/utils.js.map +1 -1
- package/dist/cjs/wallets/smart/smart-wallet.js +2 -1
- package/dist/cjs/wallets/smart/smart-wallet.js.map +1 -1
- package/dist/cjs/wallets/smart/types.js.map +1 -1
- package/dist/esm/exports/wallets/smart.js +1 -1
- package/dist/esm/exports/wallets/smart.js.map +1 -1
- package/dist/esm/extensions/erc1155/drops/write/claimTo.js.map +1 -1
- package/dist/esm/extensions/erc4337/__generated__/IEntryPoint_v07/events/PostOpRevertReason.js +29 -0
- package/dist/esm/extensions/erc4337/__generated__/IEntryPoint_v07/events/PostOpRevertReason.js.map +1 -0
- package/dist/esm/extensions/erc4337/__generated__/IEntryPoint_v07/read/getUserOpHash.js +145 -0
- package/dist/esm/extensions/erc4337/__generated__/IEntryPoint_v07/read/getUserOpHash.js.map +1 -0
- package/dist/esm/extensions/prebuilts/__generated__/VoteERC20/write/initialize.js +177 -0
- package/dist/esm/extensions/prebuilts/__generated__/VoteERC20/write/initialize.js.map +1 -0
- package/dist/esm/extensions/prebuilts/deploy-vote.js +119 -0
- package/dist/esm/extensions/prebuilts/deploy-vote.js.map +1 -0
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esm/wallets/smart/index.js +14 -3
- package/dist/esm/wallets/smart/index.js.map +1 -1
- package/dist/esm/wallets/smart/lib/bundler.js +12 -3
- package/dist/esm/wallets/smart/lib/bundler.js.map +1 -1
- package/dist/esm/wallets/smart/lib/constants.js +23 -10
- package/dist/esm/wallets/smart/lib/constants.js.map +1 -1
- package/dist/esm/wallets/smart/lib/packUserOp.js +65 -0
- package/dist/esm/wallets/smart/lib/packUserOp.js.map +1 -0
- package/dist/esm/wallets/smart/lib/paymaster.js +12 -2
- package/dist/esm/wallets/smart/lib/paymaster.js.map +1 -1
- package/dist/esm/wallets/smart/lib/userop.js +202 -67
- package/dist/esm/wallets/smart/lib/userop.js.map +1 -1
- package/dist/esm/wallets/smart/lib/utils.js +1 -1
- package/dist/esm/wallets/smart/lib/utils.js.map +1 -1
- package/dist/esm/wallets/smart/smart-wallet.js +3 -2
- package/dist/esm/wallets/smart/smart-wallet.js.map +1 -1
- package/dist/esm/wallets/smart/types.js.map +1 -1
- package/dist/types/exports/wallets/smart.d.ts +2 -2
- package/dist/types/exports/wallets/smart.d.ts.map +1 -1
- package/dist/types/extensions/erc1155/drops/write/claimTo.d.ts +2 -3
- package/dist/types/extensions/erc1155/drops/write/claimTo.d.ts.map +1 -1
- package/dist/types/extensions/erc4337/__generated__/IEntryPoint_v07/events/PostOpRevertReason.d.ts +57 -0
- package/dist/types/extensions/erc4337/__generated__/IEntryPoint_v07/events/PostOpRevertReason.d.ts.map +1 -0
- package/dist/types/extensions/erc4337/__generated__/IEntryPoint_v07/read/getUserOpHash.d.ts +123 -0
- package/dist/types/extensions/erc4337/__generated__/IEntryPoint_v07/read/getUserOpHash.d.ts.map +1 -0
- package/dist/types/extensions/prebuilts/__generated__/VoteERC20/write/initialize.d.ts +129 -0
- package/dist/types/extensions/prebuilts/__generated__/VoteERC20/write/initialize.d.ts.map +1 -0
- package/dist/types/extensions/prebuilts/deploy-vote.d.ts +82 -0
- package/dist/types/extensions/prebuilts/deploy-vote.d.ts.map +1 -0
- package/dist/types/version.d.ts +1 -1
- package/dist/types/version.d.ts.map +1 -1
- package/dist/types/wallets/smart/index.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/bundler.d.ts +3 -3
- package/dist/types/wallets/smart/lib/bundler.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/constants.d.ts +6 -6
- package/dist/types/wallets/smart/lib/constants.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/packUserOp.d.ts +16 -0
- package/dist/types/wallets/smart/lib/packUserOp.d.ts.map +1 -0
- package/dist/types/wallets/smart/lib/paymaster.d.ts +3 -3
- package/dist/types/wallets/smart/lib/paymaster.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/userop.d.ts +6 -4
- package/dist/types/wallets/smart/lib/userop.d.ts.map +1 -1
- package/dist/types/wallets/smart/lib/utils.d.ts +2 -2
- package/dist/types/wallets/smart/lib/utils.d.ts.map +1 -1
- package/dist/types/wallets/smart/smart-wallet.d.ts.map +1 -1
- package/dist/types/wallets/smart/types.d.ts +62 -9
- package/dist/types/wallets/smart/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/exports/wallets/smart.ts +4 -2
- package/src/extensions/erc1155/drops/write/claimTo.ts +2 -3
- package/src/extensions/erc4337/__generated__/IEntryPoint_v07/events/PostOpRevertReason.ts +49 -0
- package/src/extensions/erc4337/__generated__/IEntryPoint_v07/read/getUserOpHash.ts +181 -0
- package/src/extensions/prebuilts/__generated__/VoteERC20/write/initialize.ts +230 -0
- package/src/extensions/prebuilts/deploy-vote.test.ts +73 -0
- package/src/extensions/prebuilts/deploy-vote.ts +213 -0
- package/src/extensions/vote/read/proposalExists.test.ts +123 -0
- package/src/version.ts +1 -1
- package/src/wallets/smart/index.ts +21 -5
- package/src/wallets/smart/lib/bundler.ts +21 -5
- package/src/wallets/smart/lib/constants.ts +29 -10
- package/src/wallets/smart/lib/packUserOp.ts +79 -0
- package/src/wallets/smart/lib/paymaster.ts +22 -5
- package/src/wallets/smart/lib/userop.ts +292 -85
- package/src/wallets/smart/lib/utils.ts +11 -4
- package/src/wallets/smart/smart-wallet-integration-v07.test.ts +206 -0
- package/src/wallets/smart/smart-wallet-integration.test.ts +1 -1
- package/src/wallets/smart/smart-wallet-zksync.test.ts +1 -2
- package/src/wallets/smart/smart-wallet.ts +4 -2
- package/src/wallets/smart/types.ts +73 -9
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/wallets/smart/lib/utils.ts"],"names":[],"mappings":";;;
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../../src/wallets/smart/lib/utils.ts"],"names":[],"mappings":";;;AAuCA,sCAUC;AAED,0CAOC;AA1DD,+BAA8B;AAE9B,2DAA2E;AAQpE,MAAM,qBAAqB,GAAG,GAAW,EAAE;IAChD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC,CAAC;IAC9D,OAAO,CACL,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC,KAAK,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;QACrB,KAAK,CACN,CAAC;AACJ,CAAC,CAAC;AAfW,QAAA,qBAAqB,yBAehC;AAEF;;GAEG;AACI,MAAM,WAAW,GAAG,GAAG,EAAE;IAC9B,OAAO,MAAM,CACX,IAAA,aAAM,EAAC,CAAC,IAAA,oBAAW,EAAC,IAAA,6BAAqB,GAAE,CAAC,EAAE,oBAAoB,CAAC,CAAC,CACrE,CAAC;AACJ,CAAC,CAAC;AAJW,QAAA,WAAW,eAItB;AAEF;;GAEG;AACH,SAAgB,aAAa,CAC3B,MAA2C;IAE3C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;QACzC,GAAG;QACH,yCAAyC;QACzC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI,IAAI,IAAA,cAAK,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAA,cAAK,EAAC,GAAG,CAAC;KACnE,CAAC,CAC8C,CAAC;AACrD,CAAC;AAED,SAAgB,eAAe,CAAC,KAAY;IAC1C,OAAO,CACL,KAAK,CAAC,EAAE,KAAK,GAAG;QAChB,KAAK,CAAC,EAAE,KAAK,GAAG;QAChB,KAAK,CAAC,EAAE,KAAK,GAAG;QAChB,KAAK,CAAC,EAAE,KAAK,KAAK,CACnB,CAAC;AACJ,CAAC"}
|
@@ -154,7 +154,8 @@ function smartWallet(createOptions) {
|
|
154
154
|
}
|
155
155
|
// check if factory is deployed
|
156
156
|
const factory = (0, contract_js_1.getContract)({
|
157
|
-
address: createOptions.factoryAddress ||
|
157
|
+
address: createOptions.factoryAddress ||
|
158
|
+
(0, constants_js_1.getDefaultAccountFactory)(createOptions.overrides?.entrypointAddress),
|
158
159
|
chain: newChain,
|
159
160
|
client: lastConnectOptions.client,
|
160
161
|
});
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"smart-wallet.js","sourceRoot":"","sources":["../../../../src/wallets/smart/smart-wallet.ts"],"names":[],"mappings":";;AAmGA,
|
1
|
+
{"version":3,"file":"smart-wallet.js","sourceRoot":"","sources":["../../../../src/wallets/smart/smart-wallet.ts"],"names":[],"mappings":"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"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/wallets/smart/types.ts"],"names":[],"mappings":";;
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/wallets/smart/types.ts"],"names":[],"mappings":";;AA6MA,gEA4CC;AA5CD,SAAgB,0BAA0B,CACxC,gBAAsC;IAEtC,MAAM,EAAE,OAAO,EAAE,kBAAkB,EAAE,GAAG,gBAAgB,CAAC;IAEzD,MAAM,OAAO,GAAG;QACd,GAAG,kBAAkB;QACrB,eAAe,EAAE,kBAAkB,CAAC,eAAe;QACnD,WAAW,EAAE,kBAAkB,CAAC,WAAW;YACzC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC;YACxC,CAAC,CAAC,IAAI;QACR,eAAe,EAAE,kBAAkB,CAAC,eAAe;YACjD,CAAC,CAAC,kBAAkB,CAAC,eAAe;YACpC,CAAC,CAAC,IAAI;QACR,iBAAiB,EAAE,kBAAkB,CAAC,iBAAiB;YACrD,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;YAC9C,CAAC,CAAC,IAAI;QACR,iBAAiB,EAAE,kBAAkB,CAAC,iBAAiB;YACrD,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,iBAAiB,CAAC;YAC9C,CAAC,CAAC,IAAI;QACR,OAAO,EAAE,kBAAkB,CAAC,OAAO;YACjC,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC;YACpC,CAAC,CAAC,IAAI;QACR,IAAI,EAAE,kBAAkB,CAAC,IAAI;QAC7B,EAAE,EAAE,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;QACxD,gBAAgB,EAAE,kBAAkB,CAAC,gBAAgB;QACrD,MAAM,EAAE,kBAAkB,CAAC,MAAM;QACjC,IAAI,EAAE,kBAAkB,CAAC,IAAI;KACR,CAAC;IAExB,IAAI,kBAAkB,CAAC,YAAY;QACjC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;IACjE,IAAI,kBAAkB,CAAC,WAAW;QAChC,OAAO,CAAC,WAAW,GAAG,MAAM,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAE/D,MAAM,aAAa,GAAG;QACpB,GAAG,gBAAgB;QACnB,OAAO;QACP,UAAU,EAAE,gBAAgB,CAAC,UAAU;QACvC,aAAa,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;QACrD,aAAa,EAAE,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC;QACrD,KAAK,EAAE,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC;KACd,CAAC;IAC1B,OAAO,aAAa,CAAC;AACvB,CAAC"}
|
@@ -3,5 +3,5 @@ export { waitForUserOpReceipt, createUnsignedUserOp, signUserOp, } from "../../w
|
|
3
3
|
export { getUserOpReceipt, getUserOpReceiptRaw, bundleUserOp, getUserOpGasFees, estimateUserOpGas, } from "../../wallets/smart/lib/bundler.js";
|
4
4
|
export { predictAddress } from "../../wallets/smart/lib/calls.js";
|
5
5
|
export { getPaymasterAndData } from "../../wallets/smart/lib/paymaster.js";
|
6
|
-
export { ENTRYPOINT_ADDRESS_v0_6,
|
6
|
+
export { ENTRYPOINT_ADDRESS_v0_6, ENTRYPOINT_ADDRESS_v0_7, DEFAULT_ACCOUNT_FACTORY_V0_6, DEFAULT_ACCOUNT_FACTORY_V0_7, } from "../../wallets/smart/lib/constants.js";
|
7
7
|
//# sourceMappingURL=smart.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"smart.js","sourceRoot":"","sources":["../../../../src/exports/wallets/smart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,GACX,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAS3E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,
|
1
|
+
{"version":3,"file":"smart.js","sourceRoot":"","sources":["../../../../src/exports/wallets/smart.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAElE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,GACX,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,MAAM,sCAAsC,CAAC;AAS3E,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,4BAA4B,EAC5B,4BAA4B,GAC7B,MAAM,sCAAsC,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"claimTo.js","sourceRoot":"","sources":["../../../../../../src/extensions/erc1155/drops/write/claimTo.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"claimTo.js","sourceRoot":"","sources":["../../../../../../src/extensions/erc1155/drops/write/claimTo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,wDAAwD,CAAC;AACxF,OAAO,EAAE,KAAK,EAAE,MAAM,8CAA8C,CAAC;AAYrE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,OAAO,CAAC,OAA8C;IACpE,OAAO,KAAK,CAAC;QACX,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,KAAK,CAAC,WAAW;YACf,MAAM,MAAM,GAAG,MAAM,cAAc,CAAC;gBAClC,IAAI,EAAE,SAAS;gBACf,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC,CAAC;YAEH,OAAO;gBACL,GAAG,MAAM;gBACT,OAAO,EAAE,OAAO,CAAC,OAAO;aACzB,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/esm/extensions/erc4337/__generated__/IEntryPoint_v07/events/PostOpRevertReason.js
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
import { prepareEvent } from "../../../../../event/prepare-event.js";
|
2
|
+
/**
|
3
|
+
* Creates an event object for the PostOpRevertReason event.
|
4
|
+
* @param filters - Optional filters to apply to the event.
|
5
|
+
* @returns The prepared event object.
|
6
|
+
* @extension ERC4337
|
7
|
+
* @example
|
8
|
+
* ```ts
|
9
|
+
* import { getContractEvents } from "thirdweb";
|
10
|
+
* import { postOpRevertReasonEvent } from "thirdweb/extensions/erc4337";
|
11
|
+
*
|
12
|
+
* const events = await getContractEvents({
|
13
|
+
* contract,
|
14
|
+
* events: [
|
15
|
+
* postOpRevertReasonEvent({
|
16
|
+
* userOpHash: ...,
|
17
|
+
* sender: ...,
|
18
|
+
* })
|
19
|
+
* ],
|
20
|
+
* });
|
21
|
+
* ```
|
22
|
+
*/
|
23
|
+
export function postOpRevertReasonEvent(filters = {}) {
|
24
|
+
return prepareEvent({
|
25
|
+
signature: "event PostOpRevertReason(bytes32 indexed userOpHash, address indexed sender, uint256 nonce, bytes revertReason)",
|
26
|
+
filters,
|
27
|
+
});
|
28
|
+
}
|
29
|
+
//# sourceMappingURL=PostOpRevertReason.js.map
|
package/dist/esm/extensions/erc4337/__generated__/IEntryPoint_v07/events/PostOpRevertReason.js.map
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"PostOpRevertReason.js","sourceRoot":"","sources":["../../../../../../../src/extensions/erc4337/__generated__/IEntryPoint_v07/events/PostOpRevertReason.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AAmBrE;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAA0C,EAAE;IAE5C,OAAO,YAAY,CAAC;QAClB,SAAS,EACP,iHAAiH;QACnH,OAAO;KACR,CAAC,CAAC;AACL,CAAC"}
|
@@ -0,0 +1,145 @@
|
|
1
|
+
import { readContract } from "../../../../../transaction/read-contract.js";
|
2
|
+
import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
|
3
|
+
import { decodeAbiParameters } from "viem";
|
4
|
+
import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
|
5
|
+
export const FN_SELECTOR = "0x22cdde4c";
|
6
|
+
const FN_INPUTS = [
|
7
|
+
{
|
8
|
+
type: "tuple",
|
9
|
+
name: "userOp",
|
10
|
+
components: [
|
11
|
+
{
|
12
|
+
type: "address",
|
13
|
+
name: "sender",
|
14
|
+
},
|
15
|
+
{
|
16
|
+
type: "uint256",
|
17
|
+
name: "nonce",
|
18
|
+
},
|
19
|
+
{
|
20
|
+
type: "bytes",
|
21
|
+
name: "initCode",
|
22
|
+
},
|
23
|
+
{
|
24
|
+
type: "bytes",
|
25
|
+
name: "callData",
|
26
|
+
},
|
27
|
+
{
|
28
|
+
type: "bytes32",
|
29
|
+
name: "accountGasLimits",
|
30
|
+
},
|
31
|
+
{
|
32
|
+
type: "uint256",
|
33
|
+
name: "preVerificationGas",
|
34
|
+
},
|
35
|
+
{
|
36
|
+
type: "bytes32",
|
37
|
+
name: "gasFees",
|
38
|
+
},
|
39
|
+
{
|
40
|
+
type: "bytes",
|
41
|
+
name: "paymasterAndData",
|
42
|
+
},
|
43
|
+
{
|
44
|
+
type: "bytes",
|
45
|
+
name: "signature",
|
46
|
+
},
|
47
|
+
],
|
48
|
+
},
|
49
|
+
];
|
50
|
+
const FN_OUTPUTS = [
|
51
|
+
{
|
52
|
+
type: "bytes32",
|
53
|
+
},
|
54
|
+
];
|
55
|
+
/**
|
56
|
+
* Checks if the `getUserOpHash` method is supported by the given contract.
|
57
|
+
* @param contract The ThirdwebContract.
|
58
|
+
* @returns A promise that resolves to a boolean indicating if the `getUserOpHash` method is supported.
|
59
|
+
* @extension ERC4337
|
60
|
+
* @example
|
61
|
+
* ```ts
|
62
|
+
* import { isGetUserOpHashSupported } from "thirdweb/extensions/erc4337";
|
63
|
+
*
|
64
|
+
* const supported = await isGetUserOpHashSupported(contract);
|
65
|
+
* ```
|
66
|
+
*/
|
67
|
+
export async function isGetUserOpHashSupported(contract) {
|
68
|
+
return detectMethod({
|
69
|
+
contract,
|
70
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],
|
71
|
+
});
|
72
|
+
}
|
73
|
+
/**
|
74
|
+
* Encodes the parameters for the "getUserOpHash" function.
|
75
|
+
* @param options - The options for the getUserOpHash function.
|
76
|
+
* @returns The encoded ABI parameters.
|
77
|
+
* @extension ERC4337
|
78
|
+
* @example
|
79
|
+
* ```ts
|
80
|
+
* import { encodeGetUserOpHashParams } "thirdweb/extensions/erc4337";
|
81
|
+
* const result = encodeGetUserOpHashParams({
|
82
|
+
* userOp: ...,
|
83
|
+
* });
|
84
|
+
* ```
|
85
|
+
*/
|
86
|
+
export function encodeGetUserOpHashParams(options) {
|
87
|
+
return encodeAbiParameters(FN_INPUTS, [options.userOp]);
|
88
|
+
}
|
89
|
+
/**
|
90
|
+
* Encodes the "getUserOpHash" function into a Hex string with its parameters.
|
91
|
+
* @param options - The options for the getUserOpHash function.
|
92
|
+
* @returns The encoded hexadecimal string.
|
93
|
+
* @extension ERC4337
|
94
|
+
* @example
|
95
|
+
* ```ts
|
96
|
+
* import { encodeGetUserOpHash } "thirdweb/extensions/erc4337";
|
97
|
+
* const result = encodeGetUserOpHash({
|
98
|
+
* userOp: ...,
|
99
|
+
* });
|
100
|
+
* ```
|
101
|
+
*/
|
102
|
+
export function encodeGetUserOpHash(options) {
|
103
|
+
// we do a "manual" concat here to avoid the overhead of the "concatHex" function
|
104
|
+
// we can do this because we know the specific formats of the values
|
105
|
+
return (FN_SELECTOR +
|
106
|
+
encodeGetUserOpHashParams(options).slice(2));
|
107
|
+
}
|
108
|
+
/**
|
109
|
+
* Decodes the result of the getUserOpHash function call.
|
110
|
+
* @param result - The hexadecimal result to decode.
|
111
|
+
* @returns The decoded result as per the FN_OUTPUTS definition.
|
112
|
+
* @extension ERC4337
|
113
|
+
* @example
|
114
|
+
* ```ts
|
115
|
+
* import { decodeGetUserOpHashResult } from "thirdweb/extensions/erc4337";
|
116
|
+
* const result = decodeGetUserOpHashResult("...");
|
117
|
+
* ```
|
118
|
+
*/
|
119
|
+
export function decodeGetUserOpHashResult(result) {
|
120
|
+
return decodeAbiParameters(FN_OUTPUTS, result)[0];
|
121
|
+
}
|
122
|
+
/**
|
123
|
+
* Calls the "getUserOpHash" function on the contract.
|
124
|
+
* @param options - The options for the getUserOpHash function.
|
125
|
+
* @returns The parsed result of the function call.
|
126
|
+
* @extension ERC4337
|
127
|
+
* @example
|
128
|
+
* ```ts
|
129
|
+
* import { getUserOpHash } from "thirdweb/extensions/erc4337";
|
130
|
+
*
|
131
|
+
* const result = await getUserOpHash({
|
132
|
+
* contract,
|
133
|
+
* userOp: ...,
|
134
|
+
* });
|
135
|
+
*
|
136
|
+
* ```
|
137
|
+
*/
|
138
|
+
export async function getUserOpHash(options) {
|
139
|
+
return readContract({
|
140
|
+
contract: options.contract,
|
141
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],
|
142
|
+
params: [options.userOp],
|
143
|
+
});
|
144
|
+
}
|
145
|
+
//# sourceMappingURL=getUserOpHash.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"getUserOpHash.js","sourceRoot":"","sources":["../../../../../../../src/extensions/erc4337/__generated__/IEntryPoint_v07/read/getUserOpHash.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6CAA6C,CAAC;AAE3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,iDAAiD,CAAC;AACtF,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAC;AAG3C,OAAO,EAAE,YAAY,EAAE,MAAM,kDAAkD,CAAC;AAuBhF,MAAM,CAAC,MAAM,WAAW,GAAG,YAAqB,CAAC;AACjD,MAAM,SAAS,GAAG;IAChB;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,QAAQ;aACf;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,OAAO;aACd;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAU;aACjB;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,UAAU;aACjB;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,kBAAkB;aACzB;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,oBAAoB;aAC3B;YACD;gBACE,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,kBAAkB;aACzB;YACD;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,WAAW;aAClB;SACF;KACF;CACO,CAAC;AACX,MAAM,UAAU,GAAG;IACjB;QACE,IAAI,EAAE,SAAS;KAChB;CACO,CAAC;AAEX;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,QAA+B;IAE/B,OAAO,YAAY,CAAC;QAClB,QAAQ;QACR,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAU;KACtD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,yBAAyB,CAAC,OAA4B;IACpE,OAAO,mBAAmB,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAA4B;IAC9D,iFAAiF;IACjF,oEAAoE;IACpE,OAAO,CAAC,WAAW;QACjB,yBAAyB,CAAC,OAAO,CAAC,CAAC,KAAK,CACtC,CAAC,CACF,CAAqC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,yBAAyB,CAAC,MAAW;IACnD,OAAO,mBAAmB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAoD;IAEpD,OAAO,YAAY,CAAC;QAClB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAU;QACrD,MAAM,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;KACzB,CAAC,CAAC;AACL,CAAC"}
|
@@ -0,0 +1,177 @@
|
|
1
|
+
import { prepareContractCall } from "../../../../../transaction/prepare-contract-call.js";
|
2
|
+
import { encodeAbiParameters } from "../../../../../utils/abi/encodeAbiParameters.js";
|
3
|
+
import { once } from "../../../../../utils/promise/once.js";
|
4
|
+
import { detectMethod } from "../../../../../utils/bytecode/detectExtension.js";
|
5
|
+
export const FN_SELECTOR = "0x7cf43f8d";
|
6
|
+
const FN_INPUTS = [
|
7
|
+
{
|
8
|
+
type: "string",
|
9
|
+
name: "_name",
|
10
|
+
},
|
11
|
+
{
|
12
|
+
type: "string",
|
13
|
+
name: "_contractURI",
|
14
|
+
},
|
15
|
+
{
|
16
|
+
type: "address[]",
|
17
|
+
name: "_trustedForwarders",
|
18
|
+
},
|
19
|
+
{
|
20
|
+
type: "address",
|
21
|
+
name: "_token",
|
22
|
+
},
|
23
|
+
{
|
24
|
+
type: "uint256",
|
25
|
+
name: "_initialVotingDelay",
|
26
|
+
},
|
27
|
+
{
|
28
|
+
type: "uint256",
|
29
|
+
name: "_initialVotingPeriod",
|
30
|
+
},
|
31
|
+
{
|
32
|
+
type: "uint256",
|
33
|
+
name: "_initialProposalThreshold",
|
34
|
+
},
|
35
|
+
{
|
36
|
+
type: "uint256",
|
37
|
+
name: "_initialVoteQuorumFraction",
|
38
|
+
},
|
39
|
+
];
|
40
|
+
const FN_OUTPUTS = [];
|
41
|
+
/**
|
42
|
+
* Checks if the `initialize` method is supported by the given contract.
|
43
|
+
* @param contract The ThirdwebContract.
|
44
|
+
* @returns A promise that resolves to a boolean indicating if the `initialize` method is supported.
|
45
|
+
* @extension PREBUILTS
|
46
|
+
* @example
|
47
|
+
* ```ts
|
48
|
+
* import { isInitializeSupported } from "thirdweb/extensions/prebuilts";
|
49
|
+
*
|
50
|
+
* const supported = await isInitializeSupported(contract);
|
51
|
+
* ```
|
52
|
+
*/
|
53
|
+
export async function isInitializeSupported(contract) {
|
54
|
+
return detectMethod({
|
55
|
+
contract,
|
56
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],
|
57
|
+
});
|
58
|
+
}
|
59
|
+
/**
|
60
|
+
* Encodes the parameters for the "initialize" function.
|
61
|
+
* @param options - The options for the initialize function.
|
62
|
+
* @returns The encoded ABI parameters.
|
63
|
+
* @extension PREBUILTS
|
64
|
+
* @example
|
65
|
+
* ```ts
|
66
|
+
* import { encodeInitializeParams } "thirdweb/extensions/prebuilts";
|
67
|
+
* const result = encodeInitializeParams({
|
68
|
+
* name: ...,
|
69
|
+
* contractURI: ...,
|
70
|
+
* trustedForwarders: ...,
|
71
|
+
* token: ...,
|
72
|
+
* initialVotingDelay: ...,
|
73
|
+
* initialVotingPeriod: ...,
|
74
|
+
* initialProposalThreshold: ...,
|
75
|
+
* initialVoteQuorumFraction: ...,
|
76
|
+
* });
|
77
|
+
* ```
|
78
|
+
*/
|
79
|
+
export function encodeInitializeParams(options) {
|
80
|
+
return encodeAbiParameters(FN_INPUTS, [
|
81
|
+
options.name,
|
82
|
+
options.contractURI,
|
83
|
+
options.trustedForwarders,
|
84
|
+
options.token,
|
85
|
+
options.initialVotingDelay,
|
86
|
+
options.initialVotingPeriod,
|
87
|
+
options.initialProposalThreshold,
|
88
|
+
options.initialVoteQuorumFraction,
|
89
|
+
]);
|
90
|
+
}
|
91
|
+
/**
|
92
|
+
* Encodes the "initialize" function into a Hex string with its parameters.
|
93
|
+
* @param options - The options for the initialize function.
|
94
|
+
* @returns The encoded hexadecimal string.
|
95
|
+
* @extension PREBUILTS
|
96
|
+
* @example
|
97
|
+
* ```ts
|
98
|
+
* import { encodeInitialize } "thirdweb/extensions/prebuilts";
|
99
|
+
* const result = encodeInitialize({
|
100
|
+
* name: ...,
|
101
|
+
* contractURI: ...,
|
102
|
+
* trustedForwarders: ...,
|
103
|
+
* token: ...,
|
104
|
+
* initialVotingDelay: ...,
|
105
|
+
* initialVotingPeriod: ...,
|
106
|
+
* initialProposalThreshold: ...,
|
107
|
+
* initialVoteQuorumFraction: ...,
|
108
|
+
* });
|
109
|
+
* ```
|
110
|
+
*/
|
111
|
+
export function encodeInitialize(options) {
|
112
|
+
// we do a "manual" concat here to avoid the overhead of the "concatHex" function
|
113
|
+
// we can do this because we know the specific formats of the values
|
114
|
+
return (FN_SELECTOR +
|
115
|
+
encodeInitializeParams(options).slice(2));
|
116
|
+
}
|
117
|
+
/**
|
118
|
+
* Prepares a transaction to call the "initialize" function on the contract.
|
119
|
+
* @param options - The options for the "initialize" function.
|
120
|
+
* @returns A prepared transaction object.
|
121
|
+
* @extension PREBUILTS
|
122
|
+
* @example
|
123
|
+
* ```ts
|
124
|
+
* import { initialize } from "thirdweb/extensions/prebuilts";
|
125
|
+
*
|
126
|
+
* const transaction = initialize({
|
127
|
+
* contract,
|
128
|
+
* name: ...,
|
129
|
+
* contractURI: ...,
|
130
|
+
* trustedForwarders: ...,
|
131
|
+
* token: ...,
|
132
|
+
* initialVotingDelay: ...,
|
133
|
+
* initialVotingPeriod: ...,
|
134
|
+
* initialProposalThreshold: ...,
|
135
|
+
* initialVoteQuorumFraction: ...,
|
136
|
+
* overrides: {
|
137
|
+
* ...
|
138
|
+
* }
|
139
|
+
* });
|
140
|
+
*
|
141
|
+
* // Send the transaction
|
142
|
+
* ...
|
143
|
+
*
|
144
|
+
* ```
|
145
|
+
*/
|
146
|
+
export function initialize(options) {
|
147
|
+
const asyncOptions = once(async () => {
|
148
|
+
return "asyncParams" in options ? await options.asyncParams() : options;
|
149
|
+
});
|
150
|
+
return prepareContractCall({
|
151
|
+
contract: options.contract,
|
152
|
+
method: [FN_SELECTOR, FN_INPUTS, FN_OUTPUTS],
|
153
|
+
params: async () => {
|
154
|
+
const resolvedOptions = await asyncOptions();
|
155
|
+
return [
|
156
|
+
resolvedOptions.name,
|
157
|
+
resolvedOptions.contractURI,
|
158
|
+
resolvedOptions.trustedForwarders,
|
159
|
+
resolvedOptions.token,
|
160
|
+
resolvedOptions.initialVotingDelay,
|
161
|
+
resolvedOptions.initialVotingPeriod,
|
162
|
+
resolvedOptions.initialProposalThreshold,
|
163
|
+
resolvedOptions.initialVoteQuorumFraction,
|
164
|
+
];
|
165
|
+
},
|
166
|
+
value: async () => (await asyncOptions()).overrides?.value,
|
167
|
+
accessList: async () => (await asyncOptions()).overrides?.accessList,
|
168
|
+
gas: async () => (await asyncOptions()).overrides?.gas,
|
169
|
+
gasPrice: async () => (await asyncOptions()).overrides?.gasPrice,
|
170
|
+
maxFeePerGas: async () => (await asyncOptions()).overrides?.maxFeePerGas,
|
171
|
+
maxPriorityFeePerGas: async () => (await asyncOptions()).overrides?.maxPriorityFeePerGas,
|
172
|
+
nonce: async () => (await asyncOptions()).overrides?.nonce,
|
173
|
+
extraGas: async () => (await asyncOptions()).overrides?.extraGas,
|
174
|
+
erc20Value: async () => (await asyncOptions()).overrides?.erc20Value,
|
175
|
+
});
|
176
|
+
}
|
177
|
+
//# sourceMappingURL=initialize.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"initialize.js","sourceRoot":"","sources":["../../../../../../../src/extensions/prebuilts/__generated__/VoteERC20/write/initialize.ts"],"names":[],"mappings":"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"}
|
@@ -0,0 +1,119 @@
|
|
1
|
+
import { getContract } from "../../contract/contract.js";
|
2
|
+
import { deployViaAutoFactory } from "../../contract/deployment/deploy-via-autofactory.js";
|
3
|
+
import { getOrDeployInfraForPublishedContract } from "../../contract/deployment/utils/bootstrap.js";
|
4
|
+
import { decimals } from "../erc20/read/decimals.js";
|
5
|
+
/**
|
6
|
+
* Deploys a thirdweb [`VoteERC20 contract`](https://thirdweb.com/thirdweb.eth/VoteERC20)
|
7
|
+
* On chains where the thirdweb infrastructure contracts are not deployed, this function will deploy them as well.
|
8
|
+
* @param options - The deployment options.
|
9
|
+
* @returns The deployed contract address.
|
10
|
+
* @extension DEPLOY
|
11
|
+
*
|
12
|
+
* @example
|
13
|
+
* ```ts
|
14
|
+
* import { deployVoteContract } from "thirdweb/deploys";
|
15
|
+
* const contractAddress = await deployVoteContract({
|
16
|
+
* chain,
|
17
|
+
* client,
|
18
|
+
* account,
|
19
|
+
* params: {
|
20
|
+
* tokenAddress: "0x...",
|
21
|
+
* // user needs 0.5 <token> to create proposal
|
22
|
+
* initialProposalThreshold: "0.5",
|
23
|
+
* // vote expires 10 blocks later
|
24
|
+
* initialVotingPeriod: 10,
|
25
|
+
* // Requires 51% of users who voted, voted "For", for this proposal to pass
|
26
|
+
* minVoteQuorumRequiredPercent: 51,
|
27
|
+
* }
|
28
|
+
* });
|
29
|
+
* ```
|
30
|
+
*/
|
31
|
+
export async function deployVoteContract(options) {
|
32
|
+
const { chain, client, account, params } = options;
|
33
|
+
const { cloneFactoryContract, implementationContract } = await getOrDeployInfraForPublishedContract({
|
34
|
+
chain,
|
35
|
+
client,
|
36
|
+
account,
|
37
|
+
contractId: "VoteERC20",
|
38
|
+
constructorParams: [],
|
39
|
+
});
|
40
|
+
const initializeTransaction = await getInitializeTransaction({
|
41
|
+
client,
|
42
|
+
implementationContract,
|
43
|
+
params,
|
44
|
+
accountAddress: account.address,
|
45
|
+
chain,
|
46
|
+
});
|
47
|
+
return deployViaAutoFactory({
|
48
|
+
client,
|
49
|
+
chain,
|
50
|
+
account,
|
51
|
+
cloneFactoryContract,
|
52
|
+
initializeTransaction,
|
53
|
+
});
|
54
|
+
}
|
55
|
+
async function getInitializeTransaction(options) {
|
56
|
+
const { client, implementationContract, params, chain } = options;
|
57
|
+
const { name, tokenAddress, initialProposalThreshold, minVoteQuorumRequiredPercent, initialVotingDelay, initialVotingPeriod, description, symbol, image, external_link, social_urls, } = params;
|
58
|
+
const tokenErc20Contract = getContract({
|
59
|
+
address: tokenAddress,
|
60
|
+
client,
|
61
|
+
chain,
|
62
|
+
});
|
63
|
+
/**
|
64
|
+
* A good side effect for checking for token decimals (instead of just taking in value in wei)
|
65
|
+
* is that it validates the token address that user entered. In case they enter an invalid ERC20 contract address,
|
66
|
+
* the extension will throw.
|
67
|
+
*/
|
68
|
+
const _decimals = await decimals({ contract: tokenErc20Contract });
|
69
|
+
if (!_decimals) {
|
70
|
+
throw new Error(`Could not fetch decimals for contract: ${tokenAddress}`);
|
71
|
+
}
|
72
|
+
const [{ toUnits }, { upload }, { initialize }] = await Promise.all([
|
73
|
+
import("../../utils/units.js"),
|
74
|
+
import("../../storage/upload.js"),
|
75
|
+
import("./__generated__/VoteERC20/write/initialize.js"),
|
76
|
+
]);
|
77
|
+
const initialProposalThresholdInWei = toUnits(String(initialProposalThreshold), _decimals);
|
78
|
+
const contractURI = params.contractURI ||
|
79
|
+
(await upload({
|
80
|
+
client,
|
81
|
+
files: [
|
82
|
+
{
|
83
|
+
name,
|
84
|
+
description,
|
85
|
+
symbol,
|
86
|
+
image,
|
87
|
+
external_link,
|
88
|
+
social_urls,
|
89
|
+
},
|
90
|
+
],
|
91
|
+
})) ||
|
92
|
+
"";
|
93
|
+
// Validate initialVoteQuorumFraction
|
94
|
+
const _num = Number(minVoteQuorumRequiredPercent);
|
95
|
+
if (Number.isNaN(_num)) {
|
96
|
+
throw new Error(`${minVoteQuorumRequiredPercent} is not a valid minVoteQuorumRequiredPercent`);
|
97
|
+
}
|
98
|
+
if (_num < 0 || _num > 100) {
|
99
|
+
throw new Error("minVoteQuorumRequiredPercent must be >= 0 and <= 100");
|
100
|
+
}
|
101
|
+
// Make sure if user is passing a float, it should only have 2 digit after the decimal point
|
102
|
+
if (!Number.isInteger(_num)) {
|
103
|
+
throw new Error(`${_num} is an invalid value. Only integer-like values accepted`);
|
104
|
+
}
|
105
|
+
const initialVoteQuorumFraction = BigInt(_num);
|
106
|
+
return initialize({
|
107
|
+
contract: implementationContract,
|
108
|
+
name,
|
109
|
+
token: tokenAddress,
|
110
|
+
// Make sure the final value passed to `initialProposalThreshold` is in wei
|
111
|
+
initialProposalThreshold: initialProposalThresholdInWei,
|
112
|
+
initialVoteQuorumFraction,
|
113
|
+
initialVotingDelay: BigInt(initialVotingDelay || 0),
|
114
|
+
initialVotingPeriod: BigInt(initialVotingPeriod),
|
115
|
+
contractURI,
|
116
|
+
trustedForwarders: params.trustedForwarders || [],
|
117
|
+
});
|
118
|
+
}
|
119
|
+
//# sourceMappingURL=deploy-vote.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"deploy-vote.js","sourceRoot":"","sources":["../../../../src/extensions/prebuilts/deploy-vote.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qDAAqD,CAAC;AAC3F,OAAO,EAAE,oCAAoC,EAAE,MAAM,8CAA8C,CAAC;AAIpG,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAyDrD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAAkC;IACzE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IACnD,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,GACpD,MAAM,oCAAoC,CAAC;QACzC,KAAK;QACL,MAAM;QACN,OAAO;QACP,UAAU,EAAE,WAAW;QACvB,iBAAiB,EAAE,EAAE;KACtB,CAAC,CAAC;IACL,MAAM,qBAAqB,GAAG,MAAM,wBAAwB,CAAC;QAC3D,MAAM;QACN,sBAAsB;QACtB,MAAM;QACN,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,KAAK;KACN,CAAC,CAAC;IAEH,OAAO,oBAAoB,CAAC;QAC1B,MAAM;QACN,KAAK;QACL,OAAO;QACP,oBAAoB;QACpB,qBAAqB;KACtB,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,wBAAwB,CAAC,OAMvC;IACC,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC;IAClE,MAAM,EACJ,IAAI,EACJ,YAAY,EACZ,wBAAwB,EACxB,4BAA4B,EAC5B,kBAAkB,EAClB,mBAAmB,EACnB,WAAW,EACX,MAAM,EACN,KAAK,EACL,aAAa,EACb,WAAW,GACZ,GAAG,MAAM,CAAC;IACX,MAAM,kBAAkB,GAAG,WAAW,CAAC;QACrC,OAAO,EAAE,YAAY;QACrB,MAAM;QACN,KAAK;KACN,CAAC,CAAC;IAEH;;;;OAIG;IACH,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC,CAAC;IACnE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,0CAA0C,YAAY,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAClE,MAAM,CAAC,sBAAsB,CAAC;QAC9B,MAAM,CAAC,yBAAyB,CAAC;QACjC,MAAM,CAAC,+CAA+C,CAAC;KACxD,CAAC,CAAC;IACH,MAAM,6BAA6B,GAAG,OAAO,CAC3C,MAAM,CAAC,wBAAwB,CAAC,EAChC,SAAS,CACV,CAAC;IACF,MAAM,WAAW,GACf,MAAM,CAAC,WAAW;QAClB,CAAC,MAAM,MAAM,CAAC;YACZ,MAAM;YACN,KAAK,EAAE;gBACL;oBACE,IAAI;oBACJ,WAAW;oBACX,MAAM;oBACN,KAAK;oBACL,aAAa;oBACb,WAAW;iBACZ;aACF;SACF,CAAC,CAAC;QACH,EAAE,CAAC;IAEL,qCAAqC;IACrC,MAAM,IAAI,GAAG,MAAM,CAAC,4BAA4B,CAAC,CAAC;IAClD,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,GAAG,4BAA4B,8CAA8C,CAC9E,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,4FAA4F;IAC5F,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,yDAAyD,CACjE,CAAC;IACJ,CAAC;IAED,MAAM,yBAAyB,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAE/C,OAAO,UAAU,CAAC;QAChB,QAAQ,EAAE,sBAAsB;QAChC,IAAI;QACJ,KAAK,EAAE,YAAY;QACnB,2EAA2E;QAC3E,wBAAwB,EAAE,6BAA6B;QACvD,yBAAyB;QACzB,kBAAkB,EAAE,MAAM,CAAC,kBAAkB,IAAI,CAAC,CAAC;QACnD,mBAAmB,EAAE,MAAM,CAAC,mBAAmB,CAAC;QAChD,WAAW;QACX,iBAAiB,EAAE,MAAM,CAAC,iBAAiB,IAAI,EAAE;KAClD,CAAC,CAAC;AACL,CAAC"}
|
package/dist/esm/version.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
export const version = "5.48.
|
1
|
+
export const version = "5.48.3-nightly-b661ce7b2fd58e7ff01faf47cf8fb3bb232841ec-20240827000337";
|
2
2
|
//# sourceMappingURL=version.js.map
|
package/dist/esm/version.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,OAAO,GAAG,wEAAwE,CAAC"}
|
@@ -10,7 +10,7 @@ import { concatHex } from "../../utils/encoding/helpers/concat-hex.js";
|
|
10
10
|
import { parseTypedData } from "../../utils/signatures/helpers/parseTypedData.js";
|
11
11
|
import { broadcastZkTransaction, bundleUserOp, getZkPaymasterData, } from "./lib/bundler.js";
|
12
12
|
import { predictAddress, prepareBatchExecute, prepareExecute, } from "./lib/calls.js";
|
13
|
-
import {
|
13
|
+
import { getDefaultAccountFactory } from "./lib/constants.js";
|
14
14
|
import { createUnsignedUserOp, signUserOp, waitForUserOpReceipt, } from "./lib/userop.js";
|
15
15
|
import { isNativeAAChain } from "./lib/utils.js";
|
16
16
|
/**
|
@@ -37,7 +37,8 @@ export async function connectSmartWallet(wallet, connectionOptions, creationOpti
|
|
37
37
|
throw new Error("Personal wallet does not have an account");
|
38
38
|
}
|
39
39
|
const options = creationOptions;
|
40
|
-
const factoryAddress = options.factoryAddress ??
|
40
|
+
const factoryAddress = options.factoryAddress ??
|
41
|
+
getDefaultAccountFactory(creationOptions.overrides?.entrypointAddress);
|
41
42
|
const chain = connectChain ?? options.chain;
|
42
43
|
const sponsorGas = "gasless" in options ? options.gasless : options.sponsorGas;
|
43
44
|
if (isNativeAAChain(chain)) {
|
@@ -118,6 +119,9 @@ async function createSmartAccount(options) {
|
|
118
119
|
erc20Paymaster.address,
|
119
120
|
erc20Paymaster?.token,
|
120
121
|
]),
|
122
|
+
// for 0.7 compatibility
|
123
|
+
paymaster: erc20Paymaster.address,
|
124
|
+
paymasterData: "0x",
|
121
125
|
};
|
122
126
|
};
|
123
127
|
paymasterOverride = options.overrides?.paymaster || paymasterCallback;
|
@@ -419,13 +423,20 @@ async function _sendUserOp(args) {
|
|
419
423
|
overrides: options.overrides,
|
420
424
|
});
|
421
425
|
const signedUserOp = await signUserOp({
|
426
|
+
client: options.client,
|
422
427
|
chain: options.chain,
|
423
428
|
adminAccount: options.personalAccount,
|
424
429
|
entrypointAddress: options.overrides?.entrypointAddress,
|
425
430
|
userOp: unsignedUserOp,
|
426
431
|
});
|
432
|
+
const bundlerOptions = {
|
433
|
+
chain: options.chain,
|
434
|
+
client: options.client,
|
435
|
+
bundlerUrl: options.overrides?.bundlerUrl,
|
436
|
+
entrypointAddress: options.overrides?.entrypointAddress,
|
437
|
+
};
|
427
438
|
const userOpHash = await bundleUserOp({
|
428
|
-
options,
|
439
|
+
options: bundlerOptions,
|
429
440
|
userOp: signedUserOp,
|
430
441
|
});
|
431
442
|
// wait for tx receipt rather than return the userOp hash
|