@account-kit/wallet-client 0.1.0-alpha.9 → 4.50.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/LICENSE +21 -0
- package/dist/esm/client/actions/formatSign.d.ts +30 -0
- package/dist/esm/client/actions/formatSign.js +32 -0
- package/dist/esm/client/actions/formatSign.js.map +1 -0
- package/dist/esm/client/actions/getCallsStatus.d.ts +6 -3
- package/dist/esm/client/actions/getCallsStatus.js +3 -0
- package/dist/esm/client/actions/getCallsStatus.js.map +1 -1
- package/dist/esm/client/actions/grantPermissions.d.ts +10 -11
- package/dist/esm/client/actions/grantPermissions.js +26 -12
- package/dist/esm/client/actions/grantPermissions.js.map +1 -1
- package/dist/esm/client/actions/listAccounts.d.ts +10 -3
- package/dist/esm/client/actions/listAccounts.js +14 -2
- package/dist/esm/client/actions/listAccounts.js.map +1 -1
- package/dist/esm/client/actions/prepareCalls.d.ts +6 -3
- package/dist/esm/client/actions/prepareCalls.js +12 -8
- package/dist/esm/client/actions/prepareCalls.js.map +1 -1
- package/dist/esm/client/actions/prepareSign.d.ts +28 -0
- package/dist/esm/client/actions/prepareSign.js +31 -0
- package/dist/esm/client/actions/prepareSign.js.map +1 -0
- package/dist/esm/client/actions/requestAccount.d.ts +3 -1
- package/dist/esm/client/actions/requestAccount.js +5 -3
- package/dist/esm/client/actions/requestAccount.js.map +1 -1
- package/dist/esm/client/actions/sendPreparedCalls.d.ts +3 -1
- package/dist/esm/client/actions/sendPreparedCalls.js +2 -0
- package/dist/esm/client/actions/sendPreparedCalls.js.map +1 -1
- package/dist/esm/client/actions/signMessage.d.ts +5 -2
- package/dist/esm/client/actions/signMessage.js +5 -2
- package/dist/esm/client/actions/signMessage.js.map +1 -1
- package/dist/esm/client/actions/signPreparedCalls.d.ts +2 -2
- package/dist/esm/client/actions/signPreparedCalls.js +3 -3
- package/dist/esm/client/actions/signPreparedCalls.js.map +1 -1
- package/dist/esm/client/actions/signSignatureRequest.d.ts +6 -10
- package/dist/esm/client/actions/signSignatureRequest.js +4 -7
- package/dist/esm/client/actions/signSignatureRequest.js.map +1 -1
- package/dist/esm/client/actions/signTypedData.d.ts +2 -0
- package/dist/esm/client/actions/signTypedData.js +2 -0
- package/dist/esm/client/actions/signTypedData.js.map +1 -1
- package/dist/esm/client/decorator.d.ts +0 -2
- package/dist/esm/client/decorator.js +1 -3
- package/dist/esm/client/decorator.js.map +1 -1
- package/dist/esm/client/index.d.ts +10 -6
- package/dist/esm/client/index.js +18 -21
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/exports/index.d.ts +1 -5
- package/dist/esm/exports/index.js +1 -6
- package/dist/esm/exports/index.js.map +1 -1
- package/dist/esm/internal/account.d.ts +33 -0
- package/dist/esm/{isomorphic/utils/createAccount.js → internal/account.js} +25 -49
- package/dist/esm/internal/account.js.map +1 -0
- package/dist/esm/types.d.ts +5 -11
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils.d.ts +13 -1
- package/dist/esm/utils.js +13 -1
- package/dist/esm/utils.js.map +1 -1
- package/dist/esm/version.d.ts +1 -0
- package/dist/esm/version.js +4 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/types/client/actions/formatSign.d.ts +31 -0
- package/dist/types/client/actions/formatSign.d.ts.map +1 -0
- package/dist/types/client/actions/getCallsStatus.d.ts +6 -3
- package/dist/types/client/actions/getCallsStatus.d.ts.map +1 -1
- package/dist/types/client/actions/grantPermissions.d.ts +10 -11
- package/dist/types/client/actions/grantPermissions.d.ts.map +1 -1
- package/dist/types/client/actions/listAccounts.d.ts +10 -3
- package/dist/types/client/actions/listAccounts.d.ts.map +1 -1
- package/dist/types/client/actions/prepareCalls.d.ts +6 -3
- package/dist/types/client/actions/prepareCalls.d.ts.map +1 -1
- package/dist/types/client/actions/prepareSign.d.ts +29 -0
- package/dist/types/client/actions/prepareSign.d.ts.map +1 -0
- package/dist/types/client/actions/requestAccount.d.ts +3 -1
- package/dist/types/client/actions/requestAccount.d.ts.map +1 -1
- package/dist/types/client/actions/sendPreparedCalls.d.ts +3 -1
- package/dist/types/client/actions/sendPreparedCalls.d.ts.map +1 -1
- package/dist/types/client/actions/signMessage.d.ts +5 -2
- package/dist/types/client/actions/signMessage.d.ts.map +1 -1
- package/dist/types/client/actions/signPreparedCalls.d.ts +2 -2
- package/dist/types/client/actions/signPreparedCalls.d.ts.map +1 -1
- package/dist/types/client/actions/signSignatureRequest.d.ts +6 -10
- package/dist/types/client/actions/signSignatureRequest.d.ts.map +1 -1
- package/dist/types/client/actions/signTypedData.d.ts +2 -0
- package/dist/types/client/actions/signTypedData.d.ts.map +1 -1
- package/dist/types/client/decorator.d.ts +0 -2
- package/dist/types/client/decorator.d.ts.map +1 -1
- package/dist/types/client/index.d.ts +10 -6
- package/dist/types/client/index.d.ts.map +1 -1
- package/dist/types/exports/index.d.ts +1 -5
- package/dist/types/exports/index.d.ts.map +1 -1
- package/dist/types/internal/account.d.ts +34 -0
- package/dist/types/internal/account.d.ts.map +1 -0
- package/dist/types/types.d.ts +5 -11
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils.d.ts +13 -1
- package/dist/types/utils.d.ts.map +1 -1
- package/dist/types/version.d.ts +2 -0
- package/dist/types/version.d.ts.map +1 -0
- package/package.json +32 -28
- package/src/client/actions/formatSign.ts +55 -0
- package/src/client/actions/getCallsStatus.ts +10 -6
- package/src/client/actions/grantPermissions.ts +46 -18
- package/src/client/actions/listAccounts.ts +22 -5
- package/src/client/actions/prepareCalls.ts +22 -16
- package/src/client/actions/prepareSign.ts +51 -0
- package/src/client/actions/requestAccount.ts +6 -4
- package/src/client/actions/sendPreparedCalls.ts +3 -1
- package/src/client/actions/signMessage.ts +5 -2
- package/src/client/actions/signPreparedCalls.ts +8 -12
- package/src/client/actions/signSignatureRequest.ts +12 -15
- package/src/client/actions/signTypedData.ts +2 -0
- package/src/client/decorator.ts +1 -8
- package/src/client/index.ts +41 -33
- package/src/exports/index.ts +1 -13
- package/src/internal/account.ts +120 -0
- package/src/types.ts +7 -18
- package/src/utils.ts +13 -1
- package/src/version.ts +3 -0
- package/dist/esm/capabilities/eip7702Auth.d.ts +0 -4
- package/dist/esm/capabilities/eip7702Auth.js +0 -18
- package/dist/esm/capabilities/eip7702Auth.js.map +0 -1
- package/dist/esm/capabilities/index.d.ts +0 -41
- package/dist/esm/capabilities/index.js +0 -14
- package/dist/esm/capabilities/index.js.map +0 -1
- package/dist/esm/capabilities/multiDimensionalNonce.d.ts +0 -3
- package/dist/esm/capabilities/multiDimensionalNonce.js +0 -7
- package/dist/esm/capabilities/multiDimensionalNonce.js.map +0 -1
- package/dist/esm/capabilities/overrides.d.ts +0 -26
- package/dist/esm/capabilities/overrides.js +0 -14
- package/dist/esm/capabilities/overrides.js.map +0 -1
- package/dist/esm/capabilities/paymaster.d.ts +0 -3
- package/dist/esm/capabilities/paymaster.js +0 -5
- package/dist/esm/capabilities/paymaster.js.map +0 -1
- package/dist/esm/capabilities/permissions/index.d.ts +0 -145
- package/dist/esm/capabilities/permissions/index.js +0 -83
- package/dist/esm/capabilities/permissions/index.js.map +0 -1
- package/dist/esm/capabilities/permissions/mav2.d.ts +0 -36
- package/dist/esm/capabilities/permissions/mav2.js +0 -88
- package/dist/esm/capabilities/permissions/mav2.js.map +0 -1
- package/dist/esm/client/actions/createAccount.d.ts +0 -35
- package/dist/esm/client/actions/createAccount.js +0 -32
- package/dist/esm/client/actions/createAccount.js.map +0 -1
- package/dist/esm/client/client.e2e-test.d.ts +0 -1
- package/dist/esm/client/client.e2e-test.js +0 -375
- package/dist/esm/client/client.e2e-test.js.map +0 -1
- package/dist/esm/exports/internal.d.ts +0 -14
- package/dist/esm/exports/internal.js +0 -16
- package/dist/esm/exports/internal.js.map +0 -1
- package/dist/esm/isomorphic/actions/createSession.d.ts +0 -14
- package/dist/esm/isomorphic/actions/createSession.js +0 -95
- package/dist/esm/isomorphic/actions/createSession.js.map +0 -1
- package/dist/esm/isomorphic/actions/getCallsStatus.d.ts +0 -21
- package/dist/esm/isomorphic/actions/getCallsStatus.js +0 -113
- package/dist/esm/isomorphic/actions/getCallsStatus.js.map +0 -1
- package/dist/esm/isomorphic/actions/prepareCalls.d.ts +0 -8
- package/dist/esm/isomorphic/actions/prepareCalls.js +0 -116
- package/dist/esm/isomorphic/actions/prepareCalls.js.map +0 -1
- package/dist/esm/isomorphic/actions/sendPreparedCalls.d.ts +0 -8
- package/dist/esm/isomorphic/actions/sendPreparedCalls.js +0 -157
- package/dist/esm/isomorphic/actions/sendPreparedCalls.js.map +0 -1
- package/dist/esm/isomorphic/client.d.ts +0 -239
- package/dist/esm/isomorphic/client.js +0 -37
- package/dist/esm/isomorphic/client.js.map +0 -1
- package/dist/esm/isomorphic/utils/7702.d.ts +0 -23
- package/dist/esm/isomorphic/utils/7702.js +0 -75
- package/dist/esm/isomorphic/utils/7702.js.map +0 -1
- package/dist/esm/isomorphic/utils/createAccount.d.ts +0 -24
- package/dist/esm/isomorphic/utils/createAccount.js.map +0 -1
- package/dist/esm/isomorphic/utils/createDummySigner.d.ts +0 -3
- package/dist/esm/isomorphic/utils/createDummySigner.js +0 -17
- package/dist/esm/isomorphic/utils/createDummySigner.js.map +0 -1
- package/dist/esm/isomorphic/utils/decodeSignature.d.ts +0 -3
- package/dist/esm/isomorphic/utils/decodeSignature.js +0 -13
- package/dist/esm/isomorphic/utils/decodeSignature.js.map +0 -1
- package/dist/esm/isomorphic/utils/parsePermissionsContext.d.ts +0 -21
- package/dist/esm/isomorphic/utils/parsePermissionsContext.js +0 -34
- package/dist/esm/isomorphic/utils/parsePermissionsContext.js.map +0 -1
- package/dist/esm/isomorphic/utils/supportsFeature.d.ts +0 -4
- package/dist/esm/isomorphic/utils/supportsFeature.js +0 -21
- package/dist/esm/isomorphic/utils/supportsFeature.js.map +0 -1
- package/dist/esm/local/client.d.ts +0 -3
- package/dist/esm/local/client.js +0 -97
- package/dist/esm/local/client.js.map +0 -1
- package/dist/esm/remote/client.d.ts +0 -9
- package/dist/esm/remote/client.js +0 -41
- package/dist/esm/remote/client.js.map +0 -1
- package/dist/esm/rpc/examples.d.ts +0 -230
- package/dist/esm/rpc/examples.js +0 -314
- package/dist/esm/rpc/examples.js.map +0 -1
- package/dist/esm/rpc/request.d.ts +0 -755
- package/dist/esm/rpc/request.js +0 -214
- package/dist/esm/rpc/request.js.map +0 -1
- package/dist/esm/rpc/schema.d.ts +0 -703
- package/dist/esm/rpc/schema.js +0 -5
- package/dist/esm/rpc/schema.js.map +0 -1
- package/dist/esm/schemas.d.ts +0 -712
- package/dist/esm/schemas.js +0 -463
- package/dist/esm/schemas.js.map +0 -1
- package/dist/types/capabilities/eip7702Auth.d.ts +0 -5
- package/dist/types/capabilities/eip7702Auth.d.ts.map +0 -1
- package/dist/types/capabilities/index.d.ts +0 -42
- package/dist/types/capabilities/index.d.ts.map +0 -1
- package/dist/types/capabilities/multiDimensionalNonce.d.ts +0 -4
- package/dist/types/capabilities/multiDimensionalNonce.d.ts.map +0 -1
- package/dist/types/capabilities/overrides.d.ts +0 -27
- package/dist/types/capabilities/overrides.d.ts.map +0 -1
- package/dist/types/capabilities/paymaster.d.ts +0 -4
- package/dist/types/capabilities/paymaster.d.ts.map +0 -1
- package/dist/types/capabilities/permissions/index.d.ts +0 -146
- package/dist/types/capabilities/permissions/index.d.ts.map +0 -1
- package/dist/types/capabilities/permissions/mav2.d.ts +0 -37
- package/dist/types/capabilities/permissions/mav2.d.ts.map +0 -1
- package/dist/types/client/actions/createAccount.d.ts +0 -36
- package/dist/types/client/actions/createAccount.d.ts.map +0 -1
- package/dist/types/client/client.e2e-test.d.ts +0 -2
- package/dist/types/client/client.e2e-test.d.ts.map +0 -1
- package/dist/types/exports/internal.d.ts +0 -15
- package/dist/types/exports/internal.d.ts.map +0 -1
- package/dist/types/isomorphic/actions/createSession.d.ts +0 -15
- package/dist/types/isomorphic/actions/createSession.d.ts.map +0 -1
- package/dist/types/isomorphic/actions/getCallsStatus.d.ts +0 -22
- package/dist/types/isomorphic/actions/getCallsStatus.d.ts.map +0 -1
- package/dist/types/isomorphic/actions/prepareCalls.d.ts +0 -9
- package/dist/types/isomorphic/actions/prepareCalls.d.ts.map +0 -1
- package/dist/types/isomorphic/actions/sendPreparedCalls.d.ts +0 -9
- package/dist/types/isomorphic/actions/sendPreparedCalls.d.ts.map +0 -1
- package/dist/types/isomorphic/client.d.ts +0 -240
- package/dist/types/isomorphic/client.d.ts.map +0 -1
- package/dist/types/isomorphic/utils/7702.d.ts +0 -24
- package/dist/types/isomorphic/utils/7702.d.ts.map +0 -1
- package/dist/types/isomorphic/utils/createAccount.d.ts +0 -25
- package/dist/types/isomorphic/utils/createAccount.d.ts.map +0 -1
- package/dist/types/isomorphic/utils/createDummySigner.d.ts +0 -4
- package/dist/types/isomorphic/utils/createDummySigner.d.ts.map +0 -1
- package/dist/types/isomorphic/utils/decodeSignature.d.ts +0 -4
- package/dist/types/isomorphic/utils/decodeSignature.d.ts.map +0 -1
- package/dist/types/isomorphic/utils/parsePermissionsContext.d.ts +0 -22
- package/dist/types/isomorphic/utils/parsePermissionsContext.d.ts.map +0 -1
- package/dist/types/isomorphic/utils/supportsFeature.d.ts +0 -5
- package/dist/types/isomorphic/utils/supportsFeature.d.ts.map +0 -1
- package/dist/types/local/client.d.ts +0 -4
- package/dist/types/local/client.d.ts.map +0 -1
- package/dist/types/remote/client.d.ts +0 -10
- package/dist/types/remote/client.d.ts.map +0 -1
- package/dist/types/rpc/examples.d.ts +0 -231
- package/dist/types/rpc/examples.d.ts.map +0 -1
- package/dist/types/rpc/request.d.ts +0 -756
- package/dist/types/rpc/request.d.ts.map +0 -1
- package/dist/types/rpc/schema.d.ts +0 -704
- package/dist/types/rpc/schema.d.ts.map +0 -1
- package/dist/types/schemas.d.ts +0 -713
- package/dist/types/schemas.d.ts.map +0 -1
- package/src/capabilities/eip7702Auth.ts +0 -26
- package/src/capabilities/index.ts +0 -14
- package/src/capabilities/multiDimensionalNonce.ts +0 -7
- package/src/capabilities/overrides.ts +0 -35
- package/src/capabilities/paymaster.ts +0 -5
- package/src/capabilities/permissions/index.ts +0 -163
- package/src/capabilities/permissions/mav2.ts +0 -138
- package/src/client/actions/createAccount.ts +0 -53
- package/src/client/client.e2e-test.ts +0 -463
- package/src/exports/internal.ts +0 -17
- package/src/isomorphic/actions/createSession.ts +0 -159
- package/src/isomorphic/actions/getCallsStatus.ts +0 -170
- package/src/isomorphic/actions/prepareCalls.ts +0 -170
- package/src/isomorphic/actions/sendPreparedCalls.ts +0 -232
- package/src/isomorphic/client.ts +0 -94
- package/src/isomorphic/utils/7702.ts +0 -143
- package/src/isomorphic/utils/createAccount.ts +0 -170
- package/src/isomorphic/utils/createDummySigner.ts +0 -27
- package/src/isomorphic/utils/decodeSignature.ts +0 -18
- package/src/isomorphic/utils/parsePermissionsContext.ts +0 -49
- package/src/isomorphic/utils/supportsFeature.ts +0 -34
- package/src/local/client.ts +0 -136
- package/src/remote/client.ts +0 -67
- package/src/rpc/examples.ts +0 -342
- package/src/rpc/request.ts +0 -300
- package/src/rpc/schema.ts +0 -40
- package/src/schemas.ts +0 -657
|
@@ -1,463 +0,0 @@
|
|
|
1
|
-
import { LocalAccountSigner } from "@aa-sdk/core";
|
|
2
|
-
import { alchemy, arbitrumSepolia } from "@account-kit/infra";
|
|
3
|
-
import { describe, expect, it } from "bun:test";
|
|
4
|
-
import { createPublicClient, zeroAddress, type Address } from "viem";
|
|
5
|
-
import { createSmartWalletClient } from "./index.js";
|
|
6
|
-
|
|
7
|
-
describe("Client E2E Tests", () => {
|
|
8
|
-
const transport = alchemy(
|
|
9
|
-
process.env.ALCHEMY_PROXY_RPC_URL
|
|
10
|
-
? {
|
|
11
|
-
rpcUrl: process.env.ALCHEMY_PROXY_RPC_URL,
|
|
12
|
-
}
|
|
13
|
-
: {
|
|
14
|
-
apiKey: process.env.TEST_ALCHEMY_API_KEY!,
|
|
15
|
-
},
|
|
16
|
-
);
|
|
17
|
-
describe("Local Mode Tests", () => {
|
|
18
|
-
const signer = LocalAccountSigner.privateKeyToAccountSigner(
|
|
19
|
-
"0xbaca22d9b6846ec09a4da378ffa07e2f14ce7d65675d135911b6fd281416bb03",
|
|
20
|
-
);
|
|
21
|
-
|
|
22
|
-
const client = createSmartWalletClient({
|
|
23
|
-
transport,
|
|
24
|
-
chain: arbitrumSepolia,
|
|
25
|
-
mode: "local",
|
|
26
|
-
signer,
|
|
27
|
-
});
|
|
28
|
-
|
|
29
|
-
const publicClient = createPublicClient({
|
|
30
|
-
chain: arbitrumSepolia,
|
|
31
|
-
transport,
|
|
32
|
-
});
|
|
33
|
-
|
|
34
|
-
it("should successfully get a counterfactual address", async () => {
|
|
35
|
-
const account = await client.requestAccount();
|
|
36
|
-
expect(account.address).toMatchInlineSnapshot(
|
|
37
|
-
`"0xa46944b7a39c35d931D514ACAc3ac77c226a81ff"`,
|
|
38
|
-
);
|
|
39
|
-
});
|
|
40
|
-
|
|
41
|
-
it("should successfully request account with different salt", async () => {
|
|
42
|
-
const account = await client.requestAccount({
|
|
43
|
-
id: "f4c1d956-24ef-4002-a141-2c9d6d92af1a",
|
|
44
|
-
creationHint: { salt: "0x1" },
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
expect(account.address).toMatchInlineSnapshot(
|
|
48
|
-
`"0xA692f0E5AfAD20F771443D89C635146C6A592f06"`,
|
|
49
|
-
);
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
it("should not cache account if different inputs provided", async () => {
|
|
53
|
-
const account = await client.requestAccount();
|
|
54
|
-
const account2 = await client.requestAccount({
|
|
55
|
-
id: "52ab44be-b03e-47ed-ad65-43014ea5fbfc",
|
|
56
|
-
creationHint: { salt: "0x2" },
|
|
57
|
-
});
|
|
58
|
-
|
|
59
|
-
expect(account.address).not.toEqual(account2.address);
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
it("can correctly sign a message", async () => {
|
|
63
|
-
const account = await client.requestAccount();
|
|
64
|
-
const message = "hello world";
|
|
65
|
-
const signature = await client.signMessage({ message });
|
|
66
|
-
const isValid = await publicClient.verifyMessage({
|
|
67
|
-
address: account.address,
|
|
68
|
-
message,
|
|
69
|
-
signature,
|
|
70
|
-
});
|
|
71
|
-
expect(isValid).toBeTrue();
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
it("can correctly sign typed data", async () => {
|
|
75
|
-
const account = await client.requestAccount();
|
|
76
|
-
const signature = await client.signTypedData(givenTypedData);
|
|
77
|
-
const isValid = await publicClient.verifyTypedData({
|
|
78
|
-
...givenTypedData,
|
|
79
|
-
signature,
|
|
80
|
-
address: account.address,
|
|
81
|
-
});
|
|
82
|
-
expect(isValid).toBeTrue();
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
it("can correctly sign a message with a different account", async () => {
|
|
86
|
-
const account = await client.requestAccount({
|
|
87
|
-
id: "f4c1d956-24ef-4002-a141-2c9d6d92af1a",
|
|
88
|
-
creationHint: { salt: "0x1" },
|
|
89
|
-
});
|
|
90
|
-
const message = "hello world";
|
|
91
|
-
|
|
92
|
-
const signature = await client.signMessage({
|
|
93
|
-
message,
|
|
94
|
-
account: account.address,
|
|
95
|
-
});
|
|
96
|
-
const isValid = await publicClient.verifyMessage({
|
|
97
|
-
address: account.address,
|
|
98
|
-
message,
|
|
99
|
-
signature,
|
|
100
|
-
});
|
|
101
|
-
expect(isValid).toBeTrue();
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
it("can correctly sign typed data with a different account", async () => {
|
|
105
|
-
const account = await client.requestAccount({
|
|
106
|
-
id: "f4c1d956-24ef-4002-a141-2c9d6d92af1a",
|
|
107
|
-
creationHint: { salt: "0x1" },
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
const signature = await client.signTypedData({
|
|
111
|
-
...givenTypedData,
|
|
112
|
-
account: account.address,
|
|
113
|
-
});
|
|
114
|
-
const isValid = await publicClient.verifyTypedData({
|
|
115
|
-
...givenTypedData,
|
|
116
|
-
signature,
|
|
117
|
-
address: account.address,
|
|
118
|
-
});
|
|
119
|
-
expect(isValid).toBeTrue();
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
it("should successfully send a UO with paymaster using 7702", async () => {
|
|
123
|
-
const _signer = LocalAccountSigner.privateKeyToAccountSigner(
|
|
124
|
-
"0x49daf21e92c997093e9ffdf7e7ddbf8970e9eadc5d4847d0f690db25d5128e1f",
|
|
125
|
-
);
|
|
126
|
-
|
|
127
|
-
const _client = createSmartWalletClient({
|
|
128
|
-
transport,
|
|
129
|
-
chain: arbitrumSepolia,
|
|
130
|
-
mode: "local",
|
|
131
|
-
signer: _signer,
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
const account = await _client.requestAccount({
|
|
135
|
-
creationHint: {
|
|
136
|
-
accountType: "7702",
|
|
137
|
-
},
|
|
138
|
-
});
|
|
139
|
-
|
|
140
|
-
const preparedCalls = await _client.prepareCalls({
|
|
141
|
-
calls: [{ to: zeroAddress, value: "0x0" }],
|
|
142
|
-
from: account.address,
|
|
143
|
-
capabilities: {
|
|
144
|
-
paymasterService: {
|
|
145
|
-
policyId: process.env.TEST_PAYMASTER_POLICY_ID!,
|
|
146
|
-
},
|
|
147
|
-
},
|
|
148
|
-
});
|
|
149
|
-
|
|
150
|
-
const signedCalls = await _client.signPreparedCalls(preparedCalls);
|
|
151
|
-
|
|
152
|
-
const result = await _client.sendPreparedCalls(signedCalls);
|
|
153
|
-
|
|
154
|
-
expect(result.preparedCallIds).toBeArrayOfSize(1);
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
it("should successfully send a UO with paymaster", async () => {
|
|
158
|
-
const account = await client.requestAccount();
|
|
159
|
-
const preparedCalls = await client.prepareCalls({
|
|
160
|
-
calls: [{ to: zeroAddress, value: "0x0" }],
|
|
161
|
-
from: account.address,
|
|
162
|
-
capabilities: {
|
|
163
|
-
paymasterService: {
|
|
164
|
-
policyId: process.env.TEST_PAYMASTER_POLICY_ID!,
|
|
165
|
-
},
|
|
166
|
-
},
|
|
167
|
-
});
|
|
168
|
-
|
|
169
|
-
const signedCalls = await client.signPreparedCalls(preparedCalls);
|
|
170
|
-
|
|
171
|
-
const result = await client.sendPreparedCalls(signedCalls);
|
|
172
|
-
|
|
173
|
-
expect(result.preparedCallIds).toBeArrayOfSize(1);
|
|
174
|
-
});
|
|
175
|
-
|
|
176
|
-
it("should successfully create a session with grantPermissions and send a UO", async () => {
|
|
177
|
-
const account = await client.requestAccount();
|
|
178
|
-
|
|
179
|
-
const sessionKey = LocalAccountSigner.generatePrivateKeySigner();
|
|
180
|
-
|
|
181
|
-
const permissions = await client.grantPermissions({
|
|
182
|
-
account: account.address,
|
|
183
|
-
expirySec: Math.floor(Date.now() / 1000) + 60 * 60,
|
|
184
|
-
key: {
|
|
185
|
-
publicKey: await sessionKey.getAddress(),
|
|
186
|
-
type: "secp256k1",
|
|
187
|
-
},
|
|
188
|
-
permissions: [{ type: "root" }],
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
const sessionKeyClient = createSmartWalletClient({
|
|
192
|
-
transport,
|
|
193
|
-
chain: arbitrumSepolia,
|
|
194
|
-
mode: "local",
|
|
195
|
-
signer: sessionKey,
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
const preparedCalls = await sessionKeyClient.prepareCalls({
|
|
199
|
-
calls: [{ to: zeroAddress, value: "0x0" }],
|
|
200
|
-
from: account.address,
|
|
201
|
-
capabilities: {
|
|
202
|
-
paymasterService: {
|
|
203
|
-
policyId: process.env.TEST_PAYMASTER_POLICY_ID!,
|
|
204
|
-
},
|
|
205
|
-
permissions,
|
|
206
|
-
},
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
const signedCalls =
|
|
210
|
-
await sessionKeyClient.signPreparedCalls(preparedCalls);
|
|
211
|
-
|
|
212
|
-
const result = await sessionKeyClient.sendPreparedCalls({
|
|
213
|
-
...signedCalls,
|
|
214
|
-
capabilities: {
|
|
215
|
-
permissions,
|
|
216
|
-
},
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
expect(result.preparedCallIds).toBeArrayOfSize(1);
|
|
220
|
-
});
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
describe("Remote Mode Tests", () => {
|
|
224
|
-
const signer = LocalAccountSigner.privateKeyToAccountSigner(
|
|
225
|
-
"0xd7b061ef04d29cf68b3c89356678eccec9988de8d5ed892c19461c4a9d65925d",
|
|
226
|
-
);
|
|
227
|
-
|
|
228
|
-
const client = createSmartWalletClient({
|
|
229
|
-
transport,
|
|
230
|
-
chain: arbitrumSepolia,
|
|
231
|
-
mode: "remote",
|
|
232
|
-
signer,
|
|
233
|
-
});
|
|
234
|
-
|
|
235
|
-
const publicClient = createPublicClient({
|
|
236
|
-
chain: arbitrumSepolia,
|
|
237
|
-
transport,
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
it("should successfully get a counterfactual address", async () => {
|
|
241
|
-
const account = await client.requestAccount();
|
|
242
|
-
expect(account.address).toMatchInlineSnapshot(
|
|
243
|
-
`"0x76E765e80FFAC96ac10Aa8908a8267A3B80d606D"`,
|
|
244
|
-
);
|
|
245
|
-
});
|
|
246
|
-
|
|
247
|
-
it("should successfully request account with different salt", async () => {
|
|
248
|
-
const account = await client.requestAccount({
|
|
249
|
-
id: "26b375e3-c94a-4e98-b6b7-5a97121aa583",
|
|
250
|
-
creationHint: { salt: "0x1" },
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
expect(account.address).toMatchInlineSnapshot(
|
|
254
|
-
`"0xdfdd407b9569D40BEFa503208753E59cAc9713fA"`,
|
|
255
|
-
);
|
|
256
|
-
});
|
|
257
|
-
|
|
258
|
-
it("should not cache account if different inputs provided", async () => {
|
|
259
|
-
const account = await client.requestAccount();
|
|
260
|
-
const account2 = await client.requestAccount({
|
|
261
|
-
id: "2a3320b4-6ed2-4833-a488-5188e9bdd9d2",
|
|
262
|
-
creationHint: { salt: "0x2" },
|
|
263
|
-
});
|
|
264
|
-
|
|
265
|
-
expect(account.address).not.toEqual(account2.address);
|
|
266
|
-
});
|
|
267
|
-
|
|
268
|
-
it("can correctly sign a message", async () => {
|
|
269
|
-
const account = await client.requestAccount();
|
|
270
|
-
const message = "hello world";
|
|
271
|
-
const signature = await client.signMessage({ message });
|
|
272
|
-
const isValid = await publicClient.verifyMessage({
|
|
273
|
-
address: account.address,
|
|
274
|
-
message: "hello world",
|
|
275
|
-
signature,
|
|
276
|
-
});
|
|
277
|
-
expect(isValid).toBeTrue();
|
|
278
|
-
});
|
|
279
|
-
|
|
280
|
-
it("can correctly sign typed data", async () => {
|
|
281
|
-
const account = await client.requestAccount();
|
|
282
|
-
const signature = await client.signTypedData(givenTypedData);
|
|
283
|
-
const isValid = await publicClient.verifyTypedData({
|
|
284
|
-
...givenTypedData,
|
|
285
|
-
signature,
|
|
286
|
-
address: account.address,
|
|
287
|
-
});
|
|
288
|
-
expect(isValid).toBeTrue();
|
|
289
|
-
});
|
|
290
|
-
|
|
291
|
-
it("can correctly sign a message with a different account", async () => {
|
|
292
|
-
const account = await client.requestAccount({
|
|
293
|
-
id: "26b375e3-c94a-4e98-b6b7-5a97121aa583",
|
|
294
|
-
creationHint: { salt: "0x1" },
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
const message = "hello world";
|
|
298
|
-
const signature = await client.signMessage({
|
|
299
|
-
message,
|
|
300
|
-
account: account.address,
|
|
301
|
-
});
|
|
302
|
-
const isValid = await publicClient.verifyMessage({
|
|
303
|
-
address: account.address,
|
|
304
|
-
message: "hello world",
|
|
305
|
-
signature,
|
|
306
|
-
});
|
|
307
|
-
expect(isValid).toBeTrue();
|
|
308
|
-
});
|
|
309
|
-
|
|
310
|
-
it("can correctly sign typed data with a different account", async () => {
|
|
311
|
-
const account = await client.requestAccount({
|
|
312
|
-
id: "26b375e3-c94a-4e98-b6b7-5a97121aa583",
|
|
313
|
-
creationHint: { salt: "0x1" },
|
|
314
|
-
});
|
|
315
|
-
|
|
316
|
-
const signature = await client.signTypedData({
|
|
317
|
-
...givenTypedData,
|
|
318
|
-
account: account.address,
|
|
319
|
-
});
|
|
320
|
-
|
|
321
|
-
const isValid = await publicClient.verifyTypedData({
|
|
322
|
-
...givenTypedData,
|
|
323
|
-
signature,
|
|
324
|
-
address: account.address,
|
|
325
|
-
});
|
|
326
|
-
expect(isValid).toBeTrue();
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
it("should successfully send a UO with paymaster", async () => {
|
|
330
|
-
const account = await client.requestAccount();
|
|
331
|
-
const preparedCalls = await client.prepareCalls({
|
|
332
|
-
calls: [{ to: zeroAddress, value: "0x0" }],
|
|
333
|
-
from: account.address,
|
|
334
|
-
capabilities: {
|
|
335
|
-
paymasterService: {
|
|
336
|
-
policyId: process.env.TEST_PAYMASTER_POLICY_ID!,
|
|
337
|
-
},
|
|
338
|
-
},
|
|
339
|
-
});
|
|
340
|
-
|
|
341
|
-
const signedCalls = await client.signPreparedCalls(preparedCalls);
|
|
342
|
-
|
|
343
|
-
const result = await client.sendPreparedCalls(signedCalls);
|
|
344
|
-
|
|
345
|
-
expect(result.preparedCallIds).toBeArrayOfSize(1);
|
|
346
|
-
});
|
|
347
|
-
|
|
348
|
-
it("should successfully send a UO with paymaster using 7702", async () => {
|
|
349
|
-
const _signer = LocalAccountSigner.privateKeyToAccountSigner(
|
|
350
|
-
"0x00d35c6d307b5cddeb70aeed96ee27a551fee58bf1a43858477e6c11f9172ba8",
|
|
351
|
-
);
|
|
352
|
-
|
|
353
|
-
const _client = createSmartWalletClient({
|
|
354
|
-
transport,
|
|
355
|
-
chain: arbitrumSepolia,
|
|
356
|
-
mode: "remote",
|
|
357
|
-
signer: _signer,
|
|
358
|
-
});
|
|
359
|
-
|
|
360
|
-
const account = await _client.requestAccount({
|
|
361
|
-
creationHint: {
|
|
362
|
-
accountType: "7702",
|
|
363
|
-
},
|
|
364
|
-
});
|
|
365
|
-
expect(account.address).toBe(await _signer.getAddress());
|
|
366
|
-
|
|
367
|
-
const preparedCalls = await _client.prepareCalls({
|
|
368
|
-
calls: [{ to: zeroAddress, value: "0x0" }],
|
|
369
|
-
from: account.address,
|
|
370
|
-
capabilities: {
|
|
371
|
-
paymasterService: {
|
|
372
|
-
policyId: process.env.TEST_PAYMASTER_POLICY_ID!,
|
|
373
|
-
},
|
|
374
|
-
},
|
|
375
|
-
});
|
|
376
|
-
|
|
377
|
-
const signedCalls = await _client.signPreparedCalls(preparedCalls);
|
|
378
|
-
|
|
379
|
-
const result = await _client.sendPreparedCalls(signedCalls);
|
|
380
|
-
|
|
381
|
-
expect(result.preparedCallIds).toBeArrayOfSize(1);
|
|
382
|
-
});
|
|
383
|
-
|
|
384
|
-
it("should successfully create a session with grantPermissions and send a UO", async () => {
|
|
385
|
-
const account = await client.requestAccount();
|
|
386
|
-
|
|
387
|
-
const sessionKey = LocalAccountSigner.generatePrivateKeySigner();
|
|
388
|
-
|
|
389
|
-
const permissions = await client.grantPermissions({
|
|
390
|
-
account: account.address,
|
|
391
|
-
expirySec: Math.floor(Date.now() / 1000) + 60 * 60,
|
|
392
|
-
key: {
|
|
393
|
-
publicKey: await sessionKey.getAddress(),
|
|
394
|
-
type: "secp256k1",
|
|
395
|
-
},
|
|
396
|
-
permissions: [{ type: "root" }],
|
|
397
|
-
});
|
|
398
|
-
|
|
399
|
-
const sessionKeyClient = createSmartWalletClient({
|
|
400
|
-
transport,
|
|
401
|
-
chain: arbitrumSepolia,
|
|
402
|
-
mode: "remote",
|
|
403
|
-
signer: sessionKey,
|
|
404
|
-
});
|
|
405
|
-
|
|
406
|
-
const preparedCalls = await sessionKeyClient.prepareCalls({
|
|
407
|
-
calls: [{ to: zeroAddress, value: "0x0" }],
|
|
408
|
-
from: account.address,
|
|
409
|
-
capabilities: {
|
|
410
|
-
paymasterService: {
|
|
411
|
-
policyId: process.env.TEST_PAYMASTER_POLICY_ID!,
|
|
412
|
-
},
|
|
413
|
-
permissions,
|
|
414
|
-
},
|
|
415
|
-
});
|
|
416
|
-
|
|
417
|
-
const signedCalls =
|
|
418
|
-
await sessionKeyClient.signPreparedCalls(preparedCalls);
|
|
419
|
-
|
|
420
|
-
const result = await sessionKeyClient.sendPreparedCalls({
|
|
421
|
-
...signedCalls,
|
|
422
|
-
capabilities: {
|
|
423
|
-
permissions,
|
|
424
|
-
},
|
|
425
|
-
});
|
|
426
|
-
|
|
427
|
-
expect(result.preparedCallIds).toBeArrayOfSize(1);
|
|
428
|
-
});
|
|
429
|
-
});
|
|
430
|
-
|
|
431
|
-
const givenTypedData = {
|
|
432
|
-
types: {
|
|
433
|
-
Person: [
|
|
434
|
-
{ name: "name", type: "string" },
|
|
435
|
-
{ name: "wallet", type: "address" },
|
|
436
|
-
],
|
|
437
|
-
Mail: [
|
|
438
|
-
{ name: "from", type: "Person" },
|
|
439
|
-
{ name: "to", type: "Person" },
|
|
440
|
-
{ name: "contents", type: "string" },
|
|
441
|
-
],
|
|
442
|
-
},
|
|
443
|
-
primaryType: "Mail" as const,
|
|
444
|
-
domain: {
|
|
445
|
-
name: "Ether Mail",
|
|
446
|
-
version: "1",
|
|
447
|
-
chainId: 1,
|
|
448
|
-
verifyingContract:
|
|
449
|
-
"0xbbc68f94D29d52EE8D4994E54d6ED0fEAeb99C2c" as Address,
|
|
450
|
-
},
|
|
451
|
-
message: {
|
|
452
|
-
from: {
|
|
453
|
-
name: "Alice",
|
|
454
|
-
wallet: "0xFC24e57486116026740634F629ffC4E5C95A6893",
|
|
455
|
-
},
|
|
456
|
-
to: {
|
|
457
|
-
name: "Bob",
|
|
458
|
-
wallet: "0xe7a26f006EAA562308C5df235C02BFB9a5849177",
|
|
459
|
-
},
|
|
460
|
-
contents: "Hello, Bob!",
|
|
461
|
-
},
|
|
462
|
-
} as const;
|
|
463
|
-
});
|
package/src/exports/internal.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
// exports from this file are meant to be imported by our packages in the monorepo
|
|
2
|
-
// we will expose this in the package.json as a named export like `this-pkg/internal`
|
|
3
|
-
// TODO: name `this-pkg`
|
|
4
|
-
export * from "../capabilities/index.js";
|
|
5
|
-
export * from "../capabilities/paymaster.js";
|
|
6
|
-
export * from "../capabilities/permissions/index.js";
|
|
7
|
-
export * from "../capabilities/permissions/mav2.js";
|
|
8
|
-
export type * from "../isomorphic/client.js";
|
|
9
|
-
export { createIsomorphicClient } from "../isomorphic/client.js";
|
|
10
|
-
export { createDummySigner } from "../isomorphic/utils/createDummySigner.js";
|
|
11
|
-
export { prepareInitialOwners } from "../isomorphic/utils/createAccount.js";
|
|
12
|
-
export * from "../rpc/request.js";
|
|
13
|
-
export * as RpcSchemas from "../rpc/request.js";
|
|
14
|
-
export * from "../rpc/schema.js";
|
|
15
|
-
export * from "../schemas.js";
|
|
16
|
-
export type * from "../types.ts";
|
|
17
|
-
export * from "../utils.js";
|
|
@@ -1,159 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
createSmartAccountClient,
|
|
3
|
-
type SmartAccountClient,
|
|
4
|
-
type SmartContractAccount,
|
|
5
|
-
} from "@aa-sdk/core";
|
|
6
|
-
import {
|
|
7
|
-
deferralActions,
|
|
8
|
-
PermissionBuilder,
|
|
9
|
-
} from "@account-kit/smart-contracts/experimental";
|
|
10
|
-
import type { Static } from "@sinclair/typebox";
|
|
11
|
-
import { Value } from "@sinclair/typebox/value";
|
|
12
|
-
import {
|
|
13
|
-
ChainNotFoundError,
|
|
14
|
-
custom,
|
|
15
|
-
hashTypedData,
|
|
16
|
-
hexToNumber,
|
|
17
|
-
toHex,
|
|
18
|
-
type Chain,
|
|
19
|
-
type Hex,
|
|
20
|
-
type Transport,
|
|
21
|
-
} from "viem";
|
|
22
|
-
import { InvalidRequestError } from "ox/RpcResponse";
|
|
23
|
-
import { TypePermission } from "../../capabilities/permissions/index.js";
|
|
24
|
-
import { isGlobalValidation } from "../../capabilities/permissions/mav2.js";
|
|
25
|
-
import type { wallet_createSession } from "../../rpc/request.js";
|
|
26
|
-
import type { WalletServerViemRpcSchema } from "../../rpc/schema.js";
|
|
27
|
-
import { createAccount, isModularAccountV2 } from "../utils/createAccount.js";
|
|
28
|
-
import { createDummySigner } from "../utils/createDummySigner.js";
|
|
29
|
-
import { supportsFeature } from "../utils/supportsFeature.js";
|
|
30
|
-
import { isDelegated } from "../utils/7702.js";
|
|
31
|
-
|
|
32
|
-
export type CreateSessionParams = Omit<
|
|
33
|
-
Static<
|
|
34
|
-
(typeof wallet_createSession)["properties"]["Request"]["properties"]["params"]
|
|
35
|
-
>[0],
|
|
36
|
-
"chainId"
|
|
37
|
-
> & {
|
|
38
|
-
entityId?: Hex;
|
|
39
|
-
};
|
|
40
|
-
|
|
41
|
-
export type CreateSessionResult = Omit<
|
|
42
|
-
Static<(typeof wallet_createSession)["properties"]["ReturnType"]>,
|
|
43
|
-
"sessionId"
|
|
44
|
-
> & {
|
|
45
|
-
sessionId: Hex | null;
|
|
46
|
-
entityId: Hex;
|
|
47
|
-
fullPreSignatureDeferredActionDigest: Hex;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export async function createSession(
|
|
51
|
-
client: SmartAccountClient<
|
|
52
|
-
Transport,
|
|
53
|
-
Chain,
|
|
54
|
-
SmartContractAccount | undefined,
|
|
55
|
-
Record<string, unknown>,
|
|
56
|
-
WalletServerViemRpcSchema
|
|
57
|
-
>,
|
|
58
|
-
params: CreateSessionParams,
|
|
59
|
-
): Promise<CreateSessionResult> {
|
|
60
|
-
if (!client.chain) {
|
|
61
|
-
throw new ChainNotFoundError();
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const { counterfactualInfo, delegation } = await client.request({
|
|
65
|
-
method: "wallet_requestAccount",
|
|
66
|
-
params: [
|
|
67
|
-
{
|
|
68
|
-
accountAddress: params.account,
|
|
69
|
-
includeCounterfactualInfo: true,
|
|
70
|
-
},
|
|
71
|
-
],
|
|
72
|
-
});
|
|
73
|
-
|
|
74
|
-
if (
|
|
75
|
-
delegation &&
|
|
76
|
-
!(await isDelegated(client, {
|
|
77
|
-
address: params.account,
|
|
78
|
-
delegation,
|
|
79
|
-
}))
|
|
80
|
-
) {
|
|
81
|
-
throw new InvalidRequestError({
|
|
82
|
-
message:
|
|
83
|
-
"7702 account must be delegated before calling `wallet_createSession`",
|
|
84
|
-
});
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
if (!delegation && !counterfactualInfo) {
|
|
88
|
-
throw new InvalidRequestError({
|
|
89
|
-
message: "No counterfactual info found.",
|
|
90
|
-
});
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
if (
|
|
94
|
-
counterfactualInfo &&
|
|
95
|
-
!supportsFeature(counterfactualInfo, "permissions")
|
|
96
|
-
) {
|
|
97
|
-
throw new InvalidRequestError({
|
|
98
|
-
message: "Account type does not support createSession",
|
|
99
|
-
});
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
// At this point we know the account supports the permission feature
|
|
103
|
-
const account = await createAccount({
|
|
104
|
-
chain: client.chain,
|
|
105
|
-
transport: custom(client.transport),
|
|
106
|
-
signer: createDummySigner(params.account),
|
|
107
|
-
accountAddress: params.account,
|
|
108
|
-
counterfactualInfo,
|
|
109
|
-
delegation,
|
|
110
|
-
});
|
|
111
|
-
|
|
112
|
-
if (!isModularAccountV2(account)) {
|
|
113
|
-
throw new InvalidRequestError({
|
|
114
|
-
message: "Sessions are currently only supported by MAv2 accounts.",
|
|
115
|
-
});
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
const _client = createSmartAccountClient({
|
|
119
|
-
chain: client.chain,
|
|
120
|
-
transport: custom(client.transport),
|
|
121
|
-
account,
|
|
122
|
-
}).extend(deferralActions);
|
|
123
|
-
|
|
124
|
-
const { entityId, nonce } = await _client.getEntityIdAndNonce({
|
|
125
|
-
entityId: params.entityId ? hexToNumber(params.entityId) : undefined,
|
|
126
|
-
isGlobalValidation: isGlobalValidation(params),
|
|
127
|
-
});
|
|
128
|
-
|
|
129
|
-
const { typedData, fullPreSignatureDeferredActionDigest } =
|
|
130
|
-
await new PermissionBuilder({
|
|
131
|
-
client: _client,
|
|
132
|
-
key: {
|
|
133
|
-
...params.key,
|
|
134
|
-
// Alias 'ecdsa' to 'secp256k1'
|
|
135
|
-
type: params.key.type === "ecdsa" ? "secp256k1" : params.key.type,
|
|
136
|
-
},
|
|
137
|
-
entityId,
|
|
138
|
-
nonce,
|
|
139
|
-
deadline: params.expirySec,
|
|
140
|
-
})
|
|
141
|
-
.addPermissions({
|
|
142
|
-
permissions: params.permissions.map((permission) =>
|
|
143
|
-
Value.Encode(TypePermission, permission),
|
|
144
|
-
),
|
|
145
|
-
})
|
|
146
|
-
.compileDeferred();
|
|
147
|
-
|
|
148
|
-
return {
|
|
149
|
-
sessionId: null, // In remote mode, the server will set this later.
|
|
150
|
-
chainId: toHex(client.chain.id),
|
|
151
|
-
entityId: toHex(entityId),
|
|
152
|
-
signatureRequest: {
|
|
153
|
-
type: "eth_signTypedData_v4" as const,
|
|
154
|
-
data: typedData,
|
|
155
|
-
rawPayload: hashTypedData(typedData),
|
|
156
|
-
},
|
|
157
|
-
fullPreSignatureDeferredActionDigest,
|
|
158
|
-
};
|
|
159
|
-
}
|