zksync-sso 0.0.0-beta.8 → 0.1.0
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/abi/{Factory.js → AAFactory.js} +112 -63
- package/dist/_cjs/abi/AAFactory.js.map +1 -0
- package/dist/_cjs/abi/GuardianRecoveryModule.js +818 -0
- package/dist/_cjs/abi/GuardianRecoveryModule.js.map +1 -0
- package/dist/_cjs/abi/{SessionKeyModule.js → SessionKeyValidator.js} +251 -90
- package/dist/_cjs/abi/SessionKeyValidator.js.map +1 -0
- package/dist/_cjs/abi/WebAuthValidator.js +361 -0
- package/dist/_cjs/abi/WebAuthValidator.js.map +1 -0
- package/dist/_cjs/abi/index.js +9 -5
- package/dist/_cjs/abi/index.js.map +1 -1
- package/dist/_cjs/client/ecdsa/account.js +38 -0
- package/dist/_cjs/client/ecdsa/account.js.map +1 -0
- package/dist/_cjs/client/ecdsa/actions/account.js +83 -0
- package/dist/_cjs/client/ecdsa/actions/account.js.map +1 -0
- package/dist/_cjs/client/ecdsa/client.js +35 -0
- package/dist/_cjs/client/ecdsa/client.js.map +1 -0
- package/dist/_cjs/client/ecdsa/decorators/ecdsa.js +22 -0
- package/dist/_cjs/client/ecdsa/decorators/ecdsa.js.map +1 -0
- package/dist/_cjs/client/ecdsa/decorators/wallet.js +47 -0
- package/dist/_cjs/client/ecdsa/decorators/wallet.js.map +1 -0
- package/dist/_cjs/client/ecdsa/index.js +23 -0
- package/dist/_cjs/client/ecdsa/index.js.map +1 -0
- package/dist/_cjs/client/ecdsa/types.js +63 -0
- package/dist/_cjs/client/ecdsa/types.js.map +1 -0
- package/dist/_cjs/client/index.js +9 -4
- package/dist/_cjs/client/index.js.map +1 -1
- package/dist/_cjs/client/passkey/actions/account.js +35 -31
- package/dist/_cjs/client/passkey/actions/account.js.map +1 -1
- package/dist/_cjs/client/passkey/actions/passkey.js +26 -6
- package/dist/_cjs/client/passkey/actions/passkey.js.map +1 -1
- package/dist/_cjs/client/passkey/client.js +1 -1
- package/dist/_cjs/client/passkey/client.js.map +1 -1
- package/dist/_cjs/client/passkey/decorators/passkey.js +19 -0
- package/dist/_cjs/client/passkey/decorators/passkey.js.map +1 -1
- package/dist/_cjs/client/passkey/decorators/wallet.js +10 -2
- package/dist/_cjs/client/passkey/decorators/wallet.js.map +1 -1
- package/dist/_cjs/client/recovery/account.js +46 -0
- package/dist/_cjs/client/recovery/account.js.map +1 -0
- package/dist/_cjs/client/recovery/actions/recovery.js +114 -0
- package/dist/_cjs/client/recovery/actions/recovery.js.map +1 -0
- package/dist/_cjs/client/recovery/actions/sendEip712Transaction.js +45 -0
- package/dist/_cjs/client/recovery/actions/sendEip712Transaction.js.map +1 -0
- package/dist/_cjs/client/recovery/client.js +49 -0
- package/dist/_cjs/client/recovery/client.js.map +1 -0
- package/dist/_cjs/client/recovery/decorators/publicActionsRewrite.js +33 -0
- package/dist/_cjs/client/recovery/decorators/publicActionsRewrite.js.map +1 -0
- package/dist/_cjs/client/recovery/decorators/recovery.js +15 -0
- package/dist/_cjs/client/recovery/decorators/recovery.js.map +1 -0
- package/dist/_cjs/client/recovery/decorators/wallet.js +39 -0
- package/dist/_cjs/client/recovery/decorators/wallet.js.map +1 -0
- package/dist/_cjs/client/recovery/index.js +19 -0
- package/dist/_cjs/client/recovery/index.js.map +1 -0
- package/dist/_cjs/client/session/actions/session.js +8 -5
- package/dist/_cjs/client/session/actions/session.js.map +1 -1
- package/dist/_cjs/client/session/client.js +1 -0
- package/dist/_cjs/client/session/client.js.map +1 -1
- package/dist/_cjs/client/session/decorators/wallet.js +10 -2
- package/dist/_cjs/client/session/decorators/wallet.js.map +1 -1
- package/dist/_cjs/client-auth-server/Signer.js +21 -1
- package/dist/_cjs/client-auth-server/Signer.js.map +1 -1
- package/dist/_cjs/client-auth-server/WalletProvider.js +3 -1
- package/dist/_cjs/client-auth-server/WalletProvider.js.map +1 -1
- package/dist/_cjs/connector/index.js +2 -0
- package/dist/_cjs/connector/index.js.map +1 -1
- package/dist/_cjs/paymaster/handlers/general.js +13 -0
- package/dist/_cjs/paymaster/handlers/general.js.map +1 -0
- package/dist/_cjs/paymaster/handlers/index.js +19 -0
- package/dist/_cjs/paymaster/handlers/index.js.map +1 -0
- package/dist/_cjs/paymaster/handlers/zyfi.js +57 -0
- package/dist/_cjs/paymaster/handlers/zyfi.js.map +1 -0
- package/dist/_cjs/paymaster/index.js +54 -0
- package/dist/_cjs/paymaster/index.js.map +1 -0
- package/dist/_cjs/utils/encoding.js +6 -3
- package/dist/_cjs/utils/encoding.js.map +1 -1
- package/dist/_cjs/utils/passkey.js +4 -2
- package/dist/_cjs/utils/passkey.js.map +1 -1
- package/dist/_esm/abi/{Factory.js → AAFactory.js} +111 -62
- package/dist/_esm/abi/AAFactory.js.map +1 -0
- package/dist/_esm/abi/GuardianRecoveryModule.js +815 -0
- package/dist/_esm/abi/GuardianRecoveryModule.js.map +1 -0
- package/dist/_esm/abi/{SessionKeyModule.js → SessionKeyValidator.js} +250 -89
- package/dist/_esm/abi/SessionKeyValidator.js.map +1 -0
- package/dist/_esm/abi/WebAuthValidator.js +358 -0
- package/dist/_esm/abi/WebAuthValidator.js.map +1 -0
- package/dist/_esm/abi/index.js +4 -2
- package/dist/_esm/abi/index.js.map +1 -1
- package/dist/_esm/client/ecdsa/account.js +35 -0
- package/dist/_esm/client/ecdsa/account.js.map +1 -0
- package/dist/_esm/client/ecdsa/actions/account.js +81 -0
- package/dist/_esm/client/ecdsa/actions/account.js.map +1 -0
- package/dist/_esm/client/ecdsa/client.js +32 -0
- package/dist/_esm/client/ecdsa/client.js.map +1 -0
- package/dist/_esm/client/ecdsa/decorators/ecdsa.js +19 -0
- package/dist/_esm/client/ecdsa/decorators/ecdsa.js.map +1 -0
- package/dist/_esm/client/ecdsa/decorators/wallet.js +47 -0
- package/dist/_esm/client/ecdsa/decorators/wallet.js.map +1 -0
- package/dist/_esm/client/ecdsa/index.js +7 -0
- package/dist/_esm/client/ecdsa/index.js.map +1 -0
- package/dist/_esm/client/ecdsa/types.js +61 -0
- package/dist/_esm/client/ecdsa/types.js.map +1 -0
- package/dist/_esm/client/index.js +3 -0
- package/dist/_esm/client/index.js.map +1 -1
- package/dist/_esm/client/passkey/actions/account.js +37 -33
- package/dist/_esm/client/passkey/actions/account.js.map +1 -1
- package/dist/_esm/client/passkey/actions/passkey.js +29 -10
- package/dist/_esm/client/passkey/actions/passkey.js.map +1 -1
- package/dist/_esm/client/passkey/client.js +1 -1
- package/dist/_esm/client/passkey/client.js.map +1 -1
- package/dist/_esm/client/passkey/decorators/passkey.js +19 -0
- package/dist/_esm/client/passkey/decorators/passkey.js.map +1 -1
- package/dist/_esm/client/passkey/decorators/wallet.js +12 -3
- package/dist/_esm/client/passkey/decorators/wallet.js.map +1 -1
- package/dist/_esm/client/recovery/account.js +43 -0
- package/dist/_esm/client/recovery/account.js.map +1 -0
- package/dist/_esm/client/recovery/actions/recovery.js +111 -0
- package/dist/_esm/client/recovery/actions/recovery.js.map +1 -0
- package/dist/_esm/client/recovery/actions/sendEip712Transaction.js +93 -0
- package/dist/_esm/client/recovery/actions/sendEip712Transaction.js.map +1 -0
- package/dist/_esm/client/recovery/client.js +45 -0
- package/dist/_esm/client/recovery/client.js.map +1 -0
- package/dist/_esm/client/recovery/decorators/publicActionsRewrite.js +31 -0
- package/dist/_esm/client/recovery/decorators/publicActionsRewrite.js.map +1 -0
- package/dist/_esm/client/recovery/decorators/recovery.js +13 -0
- package/dist/_esm/client/recovery/decorators/recovery.js.map +1 -0
- package/dist/_esm/client/recovery/decorators/wallet.js +38 -0
- package/dist/_esm/client/recovery/decorators/wallet.js.map +1 -0
- package/dist/_esm/client/recovery/index.js +3 -0
- package/dist/_esm/client/recovery/index.js.map +1 -0
- package/dist/_esm/client/session/actions/session.js +8 -5
- package/dist/_esm/client/session/actions/session.js.map +1 -1
- package/dist/_esm/client/session/client.js +1 -0
- package/dist/_esm/client/session/client.js.map +1 -1
- package/dist/_esm/client/session/decorators/wallet.js +12 -4
- package/dist/_esm/client/session/decorators/wallet.js.map +1 -1
- package/dist/_esm/client-auth-server/Signer.js +22 -1
- package/dist/_esm/client-auth-server/Signer.js.map +1 -1
- package/dist/_esm/client-auth-server/WalletProvider.js +3 -1
- package/dist/_esm/client-auth-server/WalletProvider.js.map +1 -1
- package/dist/_esm/connector/index.js +2 -0
- package/dist/_esm/connector/index.js.map +1 -1
- package/dist/_esm/paymaster/handlers/general.js +11 -0
- package/dist/_esm/paymaster/handlers/general.js.map +1 -0
- package/dist/_esm/paymaster/handlers/index.js +3 -0
- package/dist/_esm/paymaster/handlers/index.js.map +1 -0
- package/dist/_esm/paymaster/handlers/zyfi.js +54 -0
- package/dist/_esm/paymaster/handlers/zyfi.js.map +1 -0
- package/dist/_esm/paymaster/index.js +37 -0
- package/dist/_esm/paymaster/index.js.map +1 -0
- package/dist/_esm/utils/encoding.js +7 -4
- package/dist/_esm/utils/encoding.js.map +1 -1
- package/dist/_esm/utils/passkey.js +5 -3
- package/dist/_esm/utils/passkey.js.map +1 -1
- package/dist/_types/abi/{Factory.d.ts → AAFactory.d.ts} +95 -58
- package/dist/_types/abi/AAFactory.d.ts.map +1 -0
- package/dist/_types/abi/GuardianRecoveryModule.d.ts +630 -0
- package/dist/_types/abi/GuardianRecoveryModule.d.ts.map +1 -0
- package/dist/_types/abi/{SessionKeyModule.d.ts → SessionKeyValidator.d.ts} +193 -75
- package/dist/_types/abi/{SessionKeyModule.d.ts.map → SessionKeyValidator.d.ts.map} +1 -1
- package/dist/_types/abi/WebAuthValidator.d.ts +277 -0
- package/dist/_types/abi/WebAuthValidator.d.ts.map +1 -0
- package/dist/_types/abi/index.d.ts +4 -2
- package/dist/_types/abi/index.d.ts.map +1 -1
- package/dist/_types/client/ecdsa/account.d.ts +14 -0
- package/dist/_types/client/ecdsa/account.d.ts.map +1 -0
- package/dist/_types/client/ecdsa/actions/account.d.ts +38 -0
- package/dist/_types/client/ecdsa/actions/account.d.ts.map +1 -0
- package/dist/_types/client/ecdsa/client.d.ts +25 -0
- package/dist/_types/client/ecdsa/client.d.ts.map +1 -0
- package/dist/_types/client/ecdsa/decorators/ecdsa.d.ts +16 -0
- package/dist/_types/client/ecdsa/decorators/ecdsa.d.ts.map +1 -0
- package/dist/_types/client/ecdsa/decorators/wallet.d.ts +5 -0
- package/dist/_types/client/ecdsa/decorators/wallet.d.ts.map +1 -0
- package/dist/_types/client/ecdsa/index.d.ts +7 -0
- package/dist/_types/client/ecdsa/index.d.ts.map +1 -0
- package/dist/_types/client/ecdsa/types.d.ts +10 -0
- package/dist/_types/client/ecdsa/types.d.ts.map +1 -0
- package/dist/_types/client/index.d.ts +3 -0
- package/dist/_types/client/index.d.ts.map +1 -1
- package/dist/_types/client/passkey/actions/account.d.ts +3 -1
- package/dist/_types/client/passkey/actions/account.d.ts.map +1 -1
- package/dist/_types/client/passkey/actions/passkey.d.ts +13 -4
- package/dist/_types/client/passkey/actions/passkey.d.ts.map +1 -1
- package/dist/_types/client/passkey/client.d.ts +3 -0
- package/dist/_types/client/passkey/client.d.ts.map +1 -1
- package/dist/_types/client/passkey/decorators/passkey.d.ts +4 -0
- package/dist/_types/client/passkey/decorators/passkey.d.ts.map +1 -1
- package/dist/_types/client/passkey/decorators/wallet.d.ts.map +1 -1
- package/dist/_types/client/recovery/account.d.ts +14 -0
- package/dist/_types/client/recovery/account.d.ts.map +1 -0
- package/dist/_types/client/recovery/actions/recovery.d.ts +50 -0
- package/dist/_types/client/recovery/actions/recovery.d.ts.map +1 -0
- package/dist/_types/client/recovery/actions/sendEip712Transaction.d.ts +60 -0
- package/dist/_types/client/recovery/actions/sendEip712Transaction.d.ts.map +1 -0
- package/dist/_types/client/recovery/client.d.ts +23 -0
- package/dist/_types/client/recovery/client.d.ts.map +1 -0
- package/dist/_types/client/recovery/decorators/publicActionsRewrite.d.ts +4 -0
- package/dist/_types/client/recovery/decorators/publicActionsRewrite.d.ts.map +1 -0
- package/dist/_types/client/recovery/decorators/recovery.d.ts +8 -0
- package/dist/_types/client/recovery/decorators/recovery.d.ts.map +1 -0
- package/dist/_types/client/recovery/decorators/wallet.d.ts +5 -0
- package/dist/_types/client/recovery/decorators/wallet.d.ts.map +1 -0
- package/dist/_types/client/recovery/index.d.ts +3 -0
- package/dist/_types/client/recovery/index.d.ts.map +1 -0
- package/dist/_types/client/session/actions/session.d.ts +3 -0
- package/dist/_types/client/session/actions/session.d.ts.map +1 -1
- package/dist/_types/client/session/client.d.ts +3 -0
- package/dist/_types/client/session/client.d.ts.map +1 -1
- package/dist/_types/client/session/decorators/wallet.d.ts.map +1 -1
- package/dist/_types/client-auth-server/Signer.d.ts +530 -527
- package/dist/_types/client-auth-server/Signer.d.ts.map +1 -1
- package/dist/_types/client-auth-server/WalletProvider.d.ts +529 -527
- package/dist/_types/client-auth-server/WalletProvider.d.ts.map +1 -1
- package/dist/_types/client-auth-server/interface.d.ts +1 -0
- package/dist/_types/client-auth-server/interface.d.ts.map +1 -1
- package/dist/_types/connector/index.d.ts +2 -0
- package/dist/_types/connector/index.d.ts.map +1 -1
- package/dist/_types/paymaster/handlers/general.d.ts +4 -0
- package/dist/_types/paymaster/handlers/general.d.ts.map +1 -0
- package/dist/_types/paymaster/handlers/index.d.ts +3 -0
- package/dist/_types/paymaster/handlers/index.d.ts.map +1 -0
- package/dist/_types/paymaster/handlers/zyfi.d.ts +18 -0
- package/dist/_types/paymaster/handlers/zyfi.d.ts.map +1 -0
- package/dist/_types/paymaster/index.d.ts +29 -0
- package/dist/_types/paymaster/index.d.ts.map +1 -0
- package/dist/_types/utils/encoding.d.ts +1 -0
- package/dist/_types/utils/encoding.d.ts.map +1 -1
- package/dist/_types/utils/passkey.d.ts +2 -2
- package/dist/_types/utils/passkey.d.ts.map +1 -1
- package/package.json +20 -3
- package/src/abi/{Factory.ts → AAFactory.ts} +110 -61
- package/src/abi/GuardianRecoveryModule.ts +814 -0
- package/src/abi/{SessionKeyModule.ts → SessionKeyValidator.ts} +249 -88
- package/src/abi/WebAuthValidator.ts +357 -0
- package/src/abi/index.ts +4 -2
- package/src/client/ecdsa/account.ts +56 -0
- package/src/client/ecdsa/actions/account.ts +145 -0
- package/src/client/ecdsa/client.ts +90 -0
- package/src/client/ecdsa/decorators/ecdsa.ts +32 -0
- package/src/client/ecdsa/decorators/wallet.ts +73 -0
- package/src/client/ecdsa/index.ts +6 -0
- package/src/client/ecdsa/types.ts +108 -0
- package/src/client/index.ts +3 -0
- package/src/client/passkey/actions/account.ts +43 -34
- package/src/client/passkey/actions/passkey.ts +46 -15
- package/src/client/passkey/client.ts +7 -1
- package/src/client/passkey/decorators/passkey.ts +26 -0
- package/src/client/passkey/decorators/wallet.ts +26 -5
- package/src/client/recovery/account.ts +61 -0
- package/src/client/recovery/actions/recovery.ts +176 -0
- package/src/client/recovery/actions/sendEip712Transaction.ts +149 -0
- package/src/client/recovery/client.ts +102 -0
- package/src/client/recovery/decorators/publicActionsRewrite.ts +38 -0
- package/src/client/recovery/decorators/recovery.ts +22 -0
- package/src/client/recovery/decorators/wallet.ts +52 -0
- package/src/client/recovery/index.ts +2 -0
- package/src/client/session/actions/session.ts +23 -5
- package/src/client/session/client.ts +4 -0
- package/src/client/session/decorators/wallet.ts +33 -7
- package/src/client-auth-server/Signer.ts +25 -1
- package/src/client-auth-server/WalletProvider.ts +5 -1
- package/src/client-auth-server/interface.ts +1 -0
- package/src/connector/index.ts +4 -0
- package/src/paymaster/handlers/general.ts +14 -0
- package/src/paymaster/handlers/index.ts +2 -0
- package/src/paymaster/handlers/zyfi.ts +108 -0
- package/src/paymaster/index.ts +76 -0
- package/src/utils/encoding.ts +8 -5
- package/src/utils/passkey.ts +6 -3
- package/dist/_cjs/abi/Factory.js.map +0 -1
- package/dist/_cjs/abi/SessionKeyModule.js.map +0 -1
- package/dist/_esm/abi/Factory.js.map +0 -1
- package/dist/_esm/abi/SessionKeyModule.js.map +0 -1
- package/dist/_types/abi/Factory.d.ts.map +0 -1
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { createWalletClient, custom, hashTypedData } from "viem";
|
|
2
|
+
import { toAccount } from "viem/accounts";
|
|
3
|
+
import { signTypedData } from "viem/actions";
|
|
4
|
+
import { getAction } from "viem/utils";
|
|
5
|
+
import { serializeTransaction } from "viem/zksync";
|
|
6
|
+
import { getEip712Domain } from "../utils/getEip712Domain.js";
|
|
7
|
+
export async function toOwner({ owner, address, }) {
|
|
8
|
+
if ("type" in owner && owner.type === "local") {
|
|
9
|
+
return owner;
|
|
10
|
+
}
|
|
11
|
+
let walletClient = undefined;
|
|
12
|
+
if ("request" in owner) {
|
|
13
|
+
if (!address) {
|
|
14
|
+
try {
|
|
15
|
+
[address] = await owner.request({
|
|
16
|
+
method: "eth_requestAccounts",
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
[address] = await owner.request({
|
|
21
|
+
method: "eth_accounts",
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (!address) {
|
|
26
|
+
// For TS to be happy
|
|
27
|
+
throw new Error("address is required");
|
|
28
|
+
}
|
|
29
|
+
walletClient = createWalletClient({
|
|
30
|
+
account: address,
|
|
31
|
+
transport: custom(owner),
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
if (!walletClient) {
|
|
35
|
+
walletClient = owner;
|
|
36
|
+
}
|
|
37
|
+
return toAccount({
|
|
38
|
+
address: walletClient.account.address,
|
|
39
|
+
async signMessage({ message }) {
|
|
40
|
+
return walletClient.signMessage({ message });
|
|
41
|
+
},
|
|
42
|
+
async signTransaction(transaction) {
|
|
43
|
+
const signableTransaction = {
|
|
44
|
+
...transaction,
|
|
45
|
+
from: this.address,
|
|
46
|
+
type: "eip712",
|
|
47
|
+
};
|
|
48
|
+
const eip712DomainAndMessage = getEip712Domain(signableTransaction);
|
|
49
|
+
const digest = hashTypedData(eip712DomainAndMessage);
|
|
50
|
+
const signedMessage = await walletClient.signMessage({ message: digest });
|
|
51
|
+
return serializeTransaction({
|
|
52
|
+
...signableTransaction,
|
|
53
|
+
customSignature: signedMessage,
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
async signTypedData(typedData) {
|
|
57
|
+
return getAction(walletClient, signTypedData, "signTypedData")(typedData);
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/client/ecdsa/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,kBAAkB,EAAE,MAAM,EAE1B,aAAa,EAIM,MAAM,MAAM,CAAC;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAA4C,MAAM,aAAa,CAAC;AAE7F,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAY9D,MAAM,CAAC,KAAK,UAAU,OAAO,CAAoC,EAC/D,KAAK,EACL,OAAO,GAQR;IACC,IAAI,MAAM,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC9C,OAAO,KAAqB,CAAC;IAC/B,CAAC;IAED,IAAI,YAAY,GAEA,SAAS,CAAC;IAE1B,IAAI,SAAS,IAAI,KAAK,EAAE,CAAC;QACvB,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC;gBACH,CAAC,OAAO,CAAC,GAAG,MAAO,KAA0B,CAAC,OAAO,CAAC;oBACpD,MAAM,EAAE,qBAAqB;iBAC9B,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,CAAC,OAAO,CAAC,GAAG,MAAO,KAA0B,CAAC,OAAO,CAAC;oBACpD,MAAM,EAAE,cAAc;iBACvB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,qBAAqB;YACrB,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,YAAY,GAAG,kBAAkB,CAAC;YAChC,OAAO,EAAE,OAAO;YAChB,SAAS,EAAE,MAAM,CAAC,KAAyB,CAAC;SAC7C,CAAC,CAAC;IACL,CAAC;IAED,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,YAAY,GAAG,KAId,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;QACf,OAAO,EAAE,YAAY,CAAC,OAAO,CAAC,OAAO;QACrC,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE;YAC3B,OAAO,YAAY,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,WAAW;YAC/B,MAAM,mBAAmB,GAAG;gBAC1B,GAAG,WAAW;gBACd,IAAI,EAAE,IAAI,CAAC,OAAQ;gBACnB,IAAI,EAAE,QAAQ;aACwB,CAAC;YAEzC,MAAM,sBAAsB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,aAAa,CAAC,sBAAsB,CAAC,CAAC;YAErD,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YAE1E,OAAO,oBAAoB,CAAC;gBAC1B,GAAG,mBAAmB;gBACtB,eAAe,EAAE,aAAa;aAC/B,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,aAAa,CAAC,SAAS;YAC3B,OAAO,SAAS,CACd,YAAY,EACZ,aAAa,EACb,eAAe,CAChB,CAAC,SAAgB,CAAC,CAAC;QACtB,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
export { deployAccount as deployEcdsaAccount, fetchAccount as fetchEcdsaAccount } from "./ecdsa/actions/account.js";
|
|
1
2
|
export { deployAccount, fetchAccount } from "./passkey/actions/account.js";
|
|
3
|
+
export * from "./recovery/actions/recovery.js";
|
|
4
|
+
export * from "./recovery/client.js";
|
|
2
5
|
export * from "./session/client.js";
|
|
3
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC3E,cAAc,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,IAAI,kBAAkB,EAAE,YAAY,IAAI,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AACpH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC3E,cAAc,gCAAgC,CAAC;AAC/C,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC"}
|
|
@@ -1,16 +1,14 @@
|
|
|
1
|
-
import { getAddress,
|
|
1
|
+
import { getAddress, keccak256, parseEventLogs, toHex } from "viem";
|
|
2
2
|
import { readContract, waitForTransactionReceipt, writeContract } from "viem/actions";
|
|
3
3
|
import { getGeneralPaymasterInput } from "viem/zksync";
|
|
4
|
-
import {
|
|
4
|
+
import { AAFactoryAbi } from "../../../abi/AAFactory.js";
|
|
5
|
+
import { WebAuthValidatorAbi } from "../../../abi/WebAuthValidator.js";
|
|
5
6
|
import { encodeModuleData, encodePasskeyModuleParameters, encodeSession } from "../../../utils/encoding.js";
|
|
6
7
|
import { noThrow } from "../../../utils/helpers.js";
|
|
7
|
-
import { getPasskeySignatureFromPublicKeyBytes, getPublicKeyBytesFromPasskeySignature } from "../../../utils/passkey.js";
|
|
8
|
+
import { base64UrlToUint8Array, getPasskeySignatureFromPublicKeyBytes, getPublicKeyBytesFromPasskeySignature } from "../../../utils/passkey.js";
|
|
8
9
|
const NULL_ADDRESS = "0x0000000000000000000000000000000000000000";
|
|
9
10
|
export const deployAccount = async (client, // Account deployer (any viem client)
|
|
10
11
|
args) => {
|
|
11
|
-
if (!args.salt) {
|
|
12
|
-
args.salt = crypto.getRandomValues(new Uint8Array(32));
|
|
13
|
-
}
|
|
14
12
|
let origin = args.expectedOrigin;
|
|
15
13
|
if (!origin) {
|
|
16
14
|
try {
|
|
@@ -22,6 +20,7 @@ args) => {
|
|
|
22
20
|
}
|
|
23
21
|
const passkeyPublicKey = getPublicKeyBytesFromPasskeySignature(args.credentialPublicKey);
|
|
24
22
|
const encodedPasskeyParameters = encodePasskeyModuleParameters({
|
|
23
|
+
credentialId: args.credentialId,
|
|
25
24
|
passkeyPublicKey,
|
|
26
25
|
expectedOrigin: origin,
|
|
27
26
|
});
|
|
@@ -34,16 +33,19 @@ args) => {
|
|
|
34
33
|
address: args.contracts.session,
|
|
35
34
|
parameters: args.initialSession ? encodeSession(args.initialSession) : "0x",
|
|
36
35
|
});
|
|
36
|
+
const encodedGuardianRecoveryModuleData = encodeModuleData({
|
|
37
|
+
address: args.contracts.recovery,
|
|
38
|
+
parameters: "0x",
|
|
39
|
+
});
|
|
37
40
|
let deployProxyArgs = {
|
|
38
41
|
account: client.account,
|
|
39
42
|
chain: client.chain,
|
|
40
43
|
address: args.contracts.accountFactory,
|
|
41
|
-
abi:
|
|
44
|
+
abi: AAFactoryAbi,
|
|
42
45
|
functionName: "deployProxySsoAccount",
|
|
43
46
|
args: [
|
|
44
|
-
toHex(
|
|
45
|
-
|
|
46
|
-
[encodedPasskeyModuleData, encodedSessionKeyModuleData],
|
|
47
|
+
keccak256(toHex(accountId)),
|
|
48
|
+
[encodedPasskeyModuleData, encodedSessionKeyModuleData, encodedGuardianRecoveryModuleData],
|
|
47
49
|
[],
|
|
48
50
|
],
|
|
49
51
|
};
|
|
@@ -61,12 +63,21 @@ args) => {
|
|
|
61
63
|
const transactionReceipt = await waitForTransactionReceipt(client, { hash: transactionHash });
|
|
62
64
|
if (transactionReceipt.status !== "success")
|
|
63
65
|
throw new Error("Account deployment transaction reverted");
|
|
64
|
-
const
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
66
|
+
const getAccountId = () => {
|
|
67
|
+
if (transactionReceipt.contractAddress) {
|
|
68
|
+
return transactionReceipt.contractAddress;
|
|
69
|
+
}
|
|
70
|
+
const accountCreatedEvent = parseEventLogs({ abi: AAFactoryAbi, logs: transactionReceipt.logs })
|
|
71
|
+
.find((log) => log && log.eventName === "AccountCreated");
|
|
72
|
+
if (!accountCreatedEvent) {
|
|
73
|
+
throw new Error("No contract address in transaction receipt");
|
|
74
|
+
}
|
|
75
|
+
const { accountAddress } = accountCreatedEvent.args;
|
|
76
|
+
return accountAddress;
|
|
77
|
+
};
|
|
78
|
+
const accountAddress = getAccountId();
|
|
68
79
|
return {
|
|
69
|
-
address: getAddress(
|
|
80
|
+
address: getAddress(accountAddress),
|
|
70
81
|
transactionReceipt: transactionReceipt,
|
|
71
82
|
};
|
|
72
83
|
};
|
|
@@ -81,8 +92,6 @@ args) => {
|
|
|
81
92
|
throw new Error("Can't identify expectedOrigin, please provide it manually");
|
|
82
93
|
}
|
|
83
94
|
}
|
|
84
|
-
if (!args.contracts.accountFactory)
|
|
85
|
-
throw new Error("Account factory address is not set");
|
|
86
95
|
if (!args.contracts.passkey)
|
|
87
96
|
throw new Error("Passkey module address is not set");
|
|
88
97
|
let username = args.uniqueAccountId;
|
|
@@ -104,29 +113,24 @@ args) => {
|
|
|
104
113
|
}
|
|
105
114
|
if (!username)
|
|
106
115
|
throw new Error("No account found");
|
|
116
|
+
const credentialId = toHex(base64UrlToUint8Array(username));
|
|
107
117
|
const accountAddress = await readContract(client, {
|
|
108
|
-
abi:
|
|
109
|
-
address: args.contracts.
|
|
110
|
-
functionName: "
|
|
111
|
-
args: [
|
|
118
|
+
abi: WebAuthValidatorAbi,
|
|
119
|
+
address: args.contracts.passkey,
|
|
120
|
+
functionName: "registeredAddress",
|
|
121
|
+
args: [origin, credentialId],
|
|
112
122
|
});
|
|
113
123
|
if (!accountAddress || accountAddress == NULL_ADDRESS)
|
|
114
124
|
throw new Error(`No account found for username: ${username}`);
|
|
115
|
-
const
|
|
116
|
-
abi:
|
|
117
|
-
address: args.contracts.passkey,
|
|
118
|
-
functionName: "lowerKeyHalf",
|
|
119
|
-
args: [origin, accountAddress],
|
|
120
|
-
});
|
|
121
|
-
const upperKeyHalfBytes = await readContract(client, {
|
|
122
|
-
abi: parseAbi(["function upperKeyHalf(string,address) view returns (bytes32)"]),
|
|
125
|
+
const publicKey = await readContract(client, {
|
|
126
|
+
abi: WebAuthValidatorAbi,
|
|
123
127
|
address: args.contracts.passkey,
|
|
124
|
-
functionName: "
|
|
125
|
-
args: [origin, accountAddress],
|
|
128
|
+
functionName: "getAccountKey",
|
|
129
|
+
args: [origin, credentialId, accountAddress],
|
|
126
130
|
});
|
|
127
|
-
if (!
|
|
131
|
+
if (!publicKey || !publicKey[0] || !publicKey[1])
|
|
128
132
|
throw new Error(`Passkey credentials not found in on-chain module for passkey ${username}`);
|
|
129
|
-
const passkeyPublicKey = getPasskeySignatureFromPublicKeyBytes(
|
|
133
|
+
const passkeyPublicKey = getPasskeySignatureFromPublicKeyBytes(publicKey);
|
|
130
134
|
return {
|
|
131
135
|
username,
|
|
132
136
|
address: accountAddress,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../../src/client/passkey/actions/account.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,UAAU,EAAuB,
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../../src/client/passkey/actions/account.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { startAuthentication, startRegistration } from "@simplewebauthn/browser";
|
|
2
2
|
import { generateAuthenticationOptions, generateRegistrationOptions, verifyAuthenticationResponse, verifyRegistrationResponse } from "@simplewebauthn/server";
|
|
3
3
|
import {} from "@simplewebauthn/types";
|
|
4
|
-
import { toBytes } from "viem";
|
|
5
|
-
import {
|
|
4
|
+
import { encodeFunctionData, toBytes, toHex } from "viem";
|
|
5
|
+
import { waitForTransactionReceipt } from "viem/actions";
|
|
6
|
+
import { getGeneralPaymasterInput, sendTransaction } from "viem/zksync";
|
|
7
|
+
import { WebAuthValidatorAbi } from "../../../abi/WebAuthValidator.js";
|
|
8
|
+
import { noThrow } from "../../../utils/helpers.js";
|
|
9
|
+
import { base64UrlToUint8Array } from "../../../utils/passkey.js";
|
|
6
10
|
const identifyPasskeyParams = () => {
|
|
7
11
|
let rpName;
|
|
8
12
|
let rpID;
|
|
@@ -110,14 +114,29 @@ export const requestPasskeyAuthentication = async (args) => {
|
|
|
110
114
|
};
|
|
111
115
|
};
|
|
112
116
|
export const addAccountOwnerPasskey = async (client, args) => {
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
args: [args.
|
|
117
|
-
abi: [],
|
|
118
|
-
functionName: "USE_ACTUAL_METHOD_HERE",
|
|
119
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
117
|
+
const callData = encodeFunctionData({
|
|
118
|
+
abi: WebAuthValidatorAbi,
|
|
119
|
+
functionName: "addValidationKey",
|
|
120
|
+
args: [toHex(base64UrlToUint8Array(args.credentialId)), args.rawPublicKey, args.origin],
|
|
120
121
|
});
|
|
121
|
-
|
|
122
|
+
const sendTransactionArgs = {
|
|
123
|
+
account: client.account,
|
|
124
|
+
to: args.contracts.passkey,
|
|
125
|
+
paymaster: args.paymaster?.address,
|
|
126
|
+
paymasterInput: args.paymaster?.address ? (args.paymaster?.paymasterInput || getGeneralPaymasterInput({ innerInput: "0x" })) : undefined,
|
|
127
|
+
data: callData,
|
|
128
|
+
gas: 10000000n, // TODO: Remove when gas estimation is fixed
|
|
129
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
130
|
+
};
|
|
131
|
+
const transactionHash = await sendTransaction(client, sendTransactionArgs);
|
|
132
|
+
if (args.onTransactionSent) {
|
|
133
|
+
noThrow(() => args.onTransactionSent?.(transactionHash));
|
|
134
|
+
}
|
|
135
|
+
const transactionReceipt = await waitForTransactionReceipt(client, { hash: transactionHash });
|
|
136
|
+
if (transactionReceipt.status !== "success")
|
|
137
|
+
throw new Error("addValidationKey transaction reverted");
|
|
138
|
+
return {
|
|
139
|
+
transactionReceipt,
|
|
140
|
+
};
|
|
122
141
|
};
|
|
123
142
|
//# sourceMappingURL=passkey.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passkey.js","sourceRoot":"","sources":["../../../../../src/client/passkey/actions/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,6BAA6B,EAA0C,2BAA2B,EAA2E,4BAA4B,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAC/Q,OAAO,EAA2J,MAAM,uBAAuB,CAAC;AAChM,OAAO,
|
|
1
|
+
{"version":3,"file":"passkey.js","sourceRoot":"","sources":["../../../../../src/client/passkey/actions/passkey.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,7 +19,7 @@ export function createZksyncPasskeyClient(_parameters) {
|
|
|
19
19
|
challenge: hash,
|
|
20
20
|
credentialPublicKey: parameters.credentialPublicKey,
|
|
21
21
|
});
|
|
22
|
-
return passkeyHashSignatureResponseFormat(passkeySignature.passkeyAuthenticationResponse.response, parameters.contracts);
|
|
22
|
+
return passkeyHashSignatureResponseFormat(passkeySignature.passkeyAuthenticationResponse.id, passkeySignature.passkeyAuthenticationResponse.response, parameters.contracts);
|
|
23
23
|
},
|
|
24
24
|
});
|
|
25
25
|
const client = createClient({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/passkey/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,YAAY,EAAE,UAAU,EAAqC,aAAa,EAA4E,aAAa,EAAiD,MAAM,MAAM,CAAC;AAC/R,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/client/passkey/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuD,YAAY,EAAE,UAAU,EAAqC,aAAa,EAA4E,aAAa,EAAiD,MAAM,MAAM,CAAC;AAC/R,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,OAAO,EAAE,kCAAkC,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,4BAA4B,EAAE,MAAM,sBAAsB,CAAC;AACpE,OAAO,EAAgC,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,6BAA6B,EAAE,MAAM,wBAAwB,CAAC;AAEvE,MAAM,UAAU,yBAAyB,CAIvC,WAAsE;IAEtE,MAAM,UAAU,GAGZ;QACF,GAAG,WAAW;QACd,OAAO,EAAE,UAAU,CAAC,WAAW,CAAC,OAAO,CAAC;QACxC,GAAG,EAAE,WAAW,CAAC,GAAG,IAAI,2BAA2B;QACnD,IAAI,EAAE,WAAW,CAAC,IAAI,IAAI,2BAA2B;KACtD,CAAC;IAEF,MAAM,OAAO,GAAG,gBAAgB,CAAC;QAC/B,OAAO,EAAE,UAAU,CAAC,OAAO;QAC3B,IAAI,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE;YACvB,MAAM,gBAAgB,GAAG,MAAM,4BAA4B,CAAC;gBAC1D,SAAS,EAAE,IAAI;gBACf,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;aACpD,CAAC,CAAC;YAEH,OAAO,kCAAkC,CACvC,gBAAgB,CAAC,6BAA6B,CAAC,EAAE,EACjD,gBAAgB,CAAC,6BAA6B,CAAC,QAAQ,EACvD,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1B,CAAC;KACF,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,YAAY,CAAuC;QAChE,GAAG,UAAU;QACb,OAAO;QACP,IAAI,EAAE,cAAc;KACrB,CAAC;SACC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;QACb,mBAAmB,EAAE,UAAU,CAAC,mBAAmB;QACnD,QAAQ,EAAE,UAAU,CAAC,QAAQ;QAC7B,eAAe,EAAE,UAAU,CAAC,eAAe;QAC3C,SAAS,EAAE,UAAU,CAAC,SAAS;KAChC,CAAC,CAAC;SACF,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,aAAa,CAAC;SACrB,MAAM,CAAC,mBAAmB,EAAE,CAAC;SAC7B,MAAM,CAAC,uBAAuB,CAAC;SAC/B,MAAM,CAAC,6BAA6B,CAAC,CAAC;IACzC,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import {} from "viem";
|
|
2
|
+
import { confirmGuardian, proposeGuardian, removeGuardian, } from "../../recovery/actions/recovery.js";
|
|
2
3
|
import { createSession, revokeSession, } from "../../session/actions/session.js";
|
|
3
4
|
export function zksyncSsoPasskeyActions(client) {
|
|
4
5
|
return {
|
|
@@ -14,6 +15,24 @@ export function zksyncSsoPasskeyActions(client) {
|
|
|
14
15
|
contracts: client.contracts,
|
|
15
16
|
});
|
|
16
17
|
},
|
|
18
|
+
proposeGuardian: async (args) => {
|
|
19
|
+
return await proposeGuardian(client, {
|
|
20
|
+
...args,
|
|
21
|
+
contracts: client.contracts,
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
confirmGuardian: async (args) => {
|
|
25
|
+
return await confirmGuardian(client, {
|
|
26
|
+
...args,
|
|
27
|
+
contracts: client.contracts,
|
|
28
|
+
});
|
|
29
|
+
},
|
|
30
|
+
removeGuardian: async (args) => {
|
|
31
|
+
return await removeGuardian(client, {
|
|
32
|
+
...args,
|
|
33
|
+
contracts: client.contracts,
|
|
34
|
+
});
|
|
35
|
+
},
|
|
17
36
|
};
|
|
18
37
|
}
|
|
19
38
|
//# sourceMappingURL=passkey.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passkey.js","sourceRoot":"","sources":["../../../../../src/client/passkey/decorators/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,MAAM,CAAC;AAElD,OAAO,EACL,aAAa,EACb,aAAa,GACd,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"passkey.js","sourceRoot":"","sources":["../../../../../src/client/passkey/decorators/passkey.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8B,MAAM,MAAM,CAAC;AAElD,OAAO,EACL,eAAe,EACf,eAAe,EACf,cAAc,GACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EACL,aAAa,EACb,aAAa,GACd,MAAM,kCAAkC,CAAC;AAW1C,MAAM,UAAU,uBAAuB,CAGrC,MAAwD;IACxD,OAAO;QACL,aAAa,EAAE,KAAK,EAAE,IAA0C,EAAE,EAAE;YAClE,OAAO,MAAM,aAAa,CAAC,MAAM,EAAE;gBACjC,GAAG,IAAI;gBACP,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,aAAa,EAAE,KAAK,EAAE,IAA0C,EAAE,EAAE;YAClE,OAAO,MAAM,aAAa,CAAC,MAAM,EAAE;gBACjC,GAAG,IAAI;gBACP,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,eAAe,EAAE,KAAK,EAAE,IAA4C,EAAE,EAAE;YACtE,OAAO,MAAM,eAAe,CAAC,MAAM,EAAE;gBACnC,GAAG,IAAI;gBACP,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,eAAe,EAAE,KAAK,EAAE,IAA4C,EAAE,EAAE;YACtE,OAAO,MAAM,eAAe,CAAC,MAAM,EAAE;gBACnC,GAAG,IAAI;gBACP,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;QACL,CAAC;QACD,cAAc,EAAE,KAAK,EAAE,IAA2C,EAAE,EAAE;YACpE,OAAO,MAAM,cAAc,CAAC,MAAM,EAAE;gBAClC,GAAG,IAAI;gBACP,SAAS,EAAE,MAAM,CAAC,SAAS;aAC5B,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { bytesToHex, formatTransaction } from "viem";
|
|
2
2
|
import { deployContract, getAddresses, getChainId, sendRawTransaction, signMessage, signTypedData, writeContract } from "viem/actions";
|
|
3
3
|
import { signTransaction } from "viem/zksync";
|
|
4
|
+
import { getTransactionWithPaymasterData } from "../../../paymaster/index.js";
|
|
4
5
|
import { sendEip712Transaction } from "../../session/actions/sendEip712Transaction.js";
|
|
5
6
|
export function zksyncSsoPasskeyWalletActions(client) {
|
|
6
7
|
return {
|
|
@@ -20,17 +21,25 @@ export function zksyncSsoPasskeyWalletActions(client) {
|
|
|
20
21
|
unformattedTx.paymasterInput = eip712Meta.paymasterParams?.paymasterInput ? bytesToHex(new Uint8Array(eip712Meta.paymasterParams?.paymasterInput)) : undefined;
|
|
21
22
|
delete unformattedTx.eip712Meta;
|
|
22
23
|
}
|
|
24
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
25
|
+
const { chainId: _, ...unformattedTxWithPaymaster } = await getTransactionWithPaymasterData(client.chain.id, client.account.address, unformattedTx, client.paymasterHandler);
|
|
23
26
|
const formatters = client.chain?.formatters;
|
|
24
27
|
const format = formatters?.transaction?.format || formatTransaction;
|
|
25
28
|
const tx = {
|
|
26
|
-
...format(
|
|
29
|
+
...format(unformattedTxWithPaymaster),
|
|
27
30
|
type: "eip712",
|
|
28
31
|
};
|
|
29
32
|
return await sendEip712Transaction(client, tx);
|
|
30
33
|
},
|
|
31
34
|
signMessage: (args) => signMessage(client, args),
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
signTransaction: async (args) => {
|
|
36
|
+
/* eslint-disable @typescript-eslint/no-unused-vars */
|
|
37
|
+
const { chainId: _, ...unformattedTxWithPaymaster } = await getTransactionWithPaymasterData(client.chain.id, client.account.address, args, client.paymasterHandler);
|
|
38
|
+
return signTransaction(client, {
|
|
39
|
+
...args,
|
|
40
|
+
unformattedTxWithPaymaster,
|
|
41
|
+
});
|
|
42
|
+
},
|
|
34
43
|
signTypedData: (args) => signTypedData(client, args),
|
|
35
44
|
writeContract: (args) => writeContract(client, args),
|
|
36
45
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../../../src/client/passkey/decorators/wallet.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,UAAU,
|
|
1
|
+
{"version":3,"file":"wallet.js","sourceRoot":"","sources":["../../../../../src/client/passkey/decorators/wallet.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { hashMessage, hashTypedData } from "viem";
|
|
2
|
+
import { toAccount } from "viem/accounts";
|
|
3
|
+
import { serializeTransaction } from "viem/zksync";
|
|
4
|
+
import { getEip712Domain } from "../utils/getEip712Domain.js";
|
|
5
|
+
export function toRecoveryAccount(parameters) {
|
|
6
|
+
const { address, signTransaction } = parameters;
|
|
7
|
+
const account = toAccount({
|
|
8
|
+
address,
|
|
9
|
+
async signTransaction(transaction) {
|
|
10
|
+
const signableTransaction = {
|
|
11
|
+
...transaction,
|
|
12
|
+
from: this.address,
|
|
13
|
+
type: "eip712",
|
|
14
|
+
};
|
|
15
|
+
const eip712DomainAndMessage = getEip712Domain(signableTransaction);
|
|
16
|
+
const digest = hashTypedData(eip712DomainAndMessage);
|
|
17
|
+
return serializeTransaction({
|
|
18
|
+
...signableTransaction,
|
|
19
|
+
customSignature: await signTransaction({
|
|
20
|
+
hash: digest,
|
|
21
|
+
}),
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
async sign({ hash }) {
|
|
25
|
+
return signTransaction({ hash });
|
|
26
|
+
},
|
|
27
|
+
async signMessage({ message }) {
|
|
28
|
+
return signTransaction({
|
|
29
|
+
hash: hashMessage(message),
|
|
30
|
+
});
|
|
31
|
+
},
|
|
32
|
+
async signTypedData(typedData) {
|
|
33
|
+
return signTransaction({
|
|
34
|
+
hash: hashTypedData(typedData),
|
|
35
|
+
});
|
|
36
|
+
},
|
|
37
|
+
});
|
|
38
|
+
return {
|
|
39
|
+
...account,
|
|
40
|
+
source: "ssoRecoveryAccount",
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=account.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account.js","sourceRoot":"","sources":["../../../../src/client/recovery/account.ts"],"names":[],"mappings":"AACA,OAAO,EAAgC,WAAW,EAAE,aAAa,EAA+B,MAAM,MAAM,CAAC;AAC7G,OAAO,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC1C,OAAO,EAAE,oBAAoB,EAA4C,MAAM,aAAa,CAAC;AAE7F,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAY9D,MAAM,UAAU,iBAAiB,CAC/B,UAAuC;IAEvC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,UAAU,CAAC;IAEhD,MAAM,OAAO,GAAG,SAAS,CAAC;QACxB,OAAO;QACP,KAAK,CAAC,eAAe,CAAC,WAAW;YAC/B,MAAM,mBAAmB,GAAG;gBAC1B,GAAG,WAAW;gBACd,IAAI,EAAE,IAAI,CAAC,OAAQ;gBACnB,IAAI,EAAE,QAAQ;aACwB,CAAC;YAEzC,MAAM,sBAAsB,GAAG,eAAe,CAAC,mBAAmB,CAAC,CAAC;YACpE,MAAM,MAAM,GAAG,aAAa,CAAC,sBAAsB,CAAC,CAAC;YAErD,OAAO,oBAAoB,CAAC;gBAC1B,GAAG,mBAAmB;gBACtB,eAAe,EAAE,MAAM,eAAe,CAAC;oBACrC,IAAI,EAAE,MAAM;iBACb,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE;YACjB,OAAO,eAAe,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE;YAC3B,OAAO,eAAe,CAAC;gBACrB,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC;aAC3B,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,aAAa,CAAC,SAAS;YAC3B,OAAO,eAAe,CAAC;gBACrB,IAAI,EAAE,aAAa,CAAC,SAAS,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;IAEH,OAAO;QACL,GAAG,OAAO;QACV,MAAM,EAAE,oBAAoB;KACV,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import { encodeFunctionData, keccak256, toHex } from "viem";
|
|
2
|
+
import { waitForTransactionReceipt } from "viem/actions";
|
|
3
|
+
import { getGeneralPaymasterInput, sendTransaction } from "viem/zksync";
|
|
4
|
+
import { GuardianRecoveryModuleAbi } from "../../../abi/GuardianRecoveryModule.js";
|
|
5
|
+
import { noThrow } from "../../../utils/helpers.js";
|
|
6
|
+
export const proposeGuardian = async (client, args) => {
|
|
7
|
+
let origin = args.origin;
|
|
8
|
+
if (!origin) {
|
|
9
|
+
try {
|
|
10
|
+
origin = window.location.origin;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
throw new Error("Can't identify expectedOrigin, please provide it manually");
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
const callData = encodeFunctionData({
|
|
17
|
+
abi: GuardianRecoveryModuleAbi,
|
|
18
|
+
functionName: "proposeGuardian",
|
|
19
|
+
args: [keccak256(toHex(origin)), args.newGuardian],
|
|
20
|
+
});
|
|
21
|
+
const sendTransactionArgs = {
|
|
22
|
+
account: client.account,
|
|
23
|
+
to: args.contracts.recovery,
|
|
24
|
+
paymaster: args.paymaster?.address,
|
|
25
|
+
paymasterInput: args.paymaster?.address ? (args.paymaster?.paymasterInput || getGeneralPaymasterInput({ innerInput: "0x" })) : undefined,
|
|
26
|
+
data: callData,
|
|
27
|
+
gas: 10000000n, // TODO: Remove when gas estimation is fixed
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
};
|
|
30
|
+
const transactionHash = await sendTransaction(client, sendTransactionArgs);
|
|
31
|
+
if (args.onTransactionSent) {
|
|
32
|
+
noThrow(() => args.onTransactionSent?.(transactionHash));
|
|
33
|
+
}
|
|
34
|
+
const transactionReceipt = await waitForTransactionReceipt(client, { hash: transactionHash });
|
|
35
|
+
if (transactionReceipt.status !== "success")
|
|
36
|
+
throw new Error("proposeGuardian transaction reverted");
|
|
37
|
+
return {
|
|
38
|
+
transactionReceipt,
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export const confirmGuardian = async (client, args) => {
|
|
42
|
+
let origin = args.origin;
|
|
43
|
+
if (!origin) {
|
|
44
|
+
try {
|
|
45
|
+
origin = window.location.origin;
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
throw new Error("Can't identify expectedOrigin, please provide it manually");
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const callData = encodeFunctionData({
|
|
52
|
+
abi: GuardianRecoveryModuleAbi,
|
|
53
|
+
functionName: "addGuardian",
|
|
54
|
+
args: [keccak256(toHex(origin)), args.accountToGuard],
|
|
55
|
+
});
|
|
56
|
+
const sendTransactionArgs = {
|
|
57
|
+
account: client.account,
|
|
58
|
+
to: args.contracts.recovery,
|
|
59
|
+
paymaster: args.paymaster?.address,
|
|
60
|
+
paymasterInput: args.paymaster?.address ? (args.paymaster?.paymasterInput || getGeneralPaymasterInput({ innerInput: "0x" })) : undefined,
|
|
61
|
+
data: callData,
|
|
62
|
+
gas: 10000000n, // TODO: Remove when gas estimation is fixed
|
|
63
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
64
|
+
};
|
|
65
|
+
const transactionHash = await sendTransaction(client, sendTransactionArgs);
|
|
66
|
+
if (args.onTransactionSent) {
|
|
67
|
+
noThrow(() => args.onTransactionSent?.(transactionHash));
|
|
68
|
+
}
|
|
69
|
+
const transactionReceipt = await waitForTransactionReceipt(client, { hash: transactionHash });
|
|
70
|
+
if (transactionReceipt.status !== "success")
|
|
71
|
+
throw new Error("confirmGuardian transaction reverted");
|
|
72
|
+
return {
|
|
73
|
+
transactionReceipt,
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
export const removeGuardian = async (client, args) => {
|
|
77
|
+
let origin = args.origin;
|
|
78
|
+
if (!origin) {
|
|
79
|
+
try {
|
|
80
|
+
origin = window.location.origin;
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
throw new Error("Can't identify expectedOrigin, please provide it manually");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
const callData = encodeFunctionData({
|
|
87
|
+
abi: GuardianRecoveryModuleAbi,
|
|
88
|
+
functionName: "removeGuardian",
|
|
89
|
+
args: [keccak256(toHex(origin)), args.guardian],
|
|
90
|
+
});
|
|
91
|
+
const sendTransactionArgs = {
|
|
92
|
+
account: client.account,
|
|
93
|
+
to: args.contracts.recovery,
|
|
94
|
+
paymaster: args.paymaster?.address,
|
|
95
|
+
paymasterInput: args.paymaster?.address ? (args.paymaster?.paymasterInput || getGeneralPaymasterInput({ innerInput: "0x" })) : undefined,
|
|
96
|
+
data: callData,
|
|
97
|
+
gas: 10000000n, // TODO: Remove when gas estimation is fixed
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
99
|
+
};
|
|
100
|
+
const transactionHash = await sendTransaction(client, sendTransactionArgs);
|
|
101
|
+
if (args.onTransactionSent) {
|
|
102
|
+
noThrow(() => args.onTransactionSent?.(transactionHash));
|
|
103
|
+
}
|
|
104
|
+
const transactionReceipt = await waitForTransactionReceipt(client, { hash: transactionHash });
|
|
105
|
+
if (transactionReceipt.status !== "success")
|
|
106
|
+
throw new Error("removeGuardian transaction reverted");
|
|
107
|
+
return {
|
|
108
|
+
transactionReceipt,
|
|
109
|
+
};
|
|
110
|
+
};
|
|
111
|
+
//# sourceMappingURL=recovery.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recovery.js","sourceRoot":"","sources":["../../../../../src/client/recovery/actions/recovery.ts"],"names":[],"mappings":"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"}
|