@zerodev/permissions 5.2.5 → 5.2.6
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/_cjs/signers/index.js +1 -5
- package/_cjs/signers/index.js.map +1 -1
- package/_esm/signers/index.js +0 -2
- package/_esm/signers/index.js.map +1 -1
- package/_types/signers/index.d.ts +0 -2
- package/_types/signers/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/signers/index.ts +0 -2
- package/_cjs/signers/toRemoteSessionKeySigner.js +0 -100
- package/_cjs/signers/toRemoteSessionKeySigner.js.map +0 -1
- package/_esm/signers/toRemoteSessionKeySigner.js +0 -96
- package/_esm/signers/toRemoteSessionKeySigner.js.map +0 -1
- package/_types/signers/toRemoteSessionKeySigner.d.ts +0 -14
- package/_types/signers/toRemoteSessionKeySigner.d.ts.map +0 -1
- package/signers/toRemoteSessionKeySigner.ts +0 -144
package/_cjs/signers/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.toEmptyECDSASigner = exports.toSignerId = exports.WebAuthnMode = exports.toWebAuthnSigner = exports.toECDSASigner = void 0;
|
|
4
4
|
var toECDSASigner_js_1 = require("./toECDSASigner.js");
|
|
5
5
|
Object.defineProperty(exports, "toECDSASigner", { enumerable: true, get: function () { return toECDSASigner_js_1.toECDSASigner; } });
|
|
6
6
|
var toWebAuthnSigner_js_1 = require("./toWebAuthnSigner.js");
|
|
@@ -11,8 +11,4 @@ var toSignerId_js_1 = require("./utils/toSignerId.js");
|
|
|
11
11
|
Object.defineProperty(exports, "toSignerId", { enumerable: true, get: function () { return toSignerId_js_1.toSignerId; } });
|
|
12
12
|
var toEmptyECDSASigner_js_1 = require("./toEmptyECDSASigner.js");
|
|
13
13
|
Object.defineProperty(exports, "toEmptyECDSASigner", { enumerable: true, get: function () { return toEmptyECDSASigner_js_1.toEmptyECDSASigner; } });
|
|
14
|
-
var toRemoteSessionKeySigner_js_1 = require("./toRemoteSessionKeySigner.js");
|
|
15
|
-
Object.defineProperty(exports, "toRemoteSessionKeySigner", { enumerable: true, get: function () { return toRemoteSessionKeySigner_js_1.toRemoteSessionKeySigner; } });
|
|
16
|
-
var toRemoteSessionKeySigner_js_2 = require("./toRemoteSessionKeySigner.js");
|
|
17
|
-
Object.defineProperty(exports, "SessionKeySignerMode", { enumerable: true, get: function () { return toRemoteSessionKeySigner_js_2.SessionKeySignerMode; } });
|
|
18
14
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../signers/index.ts"],"names":[],"mappings":";;;AAAA,uDAG2B;AAFvB,iHAAA,aAAa,OAAA;AAGjB,6DAG8B;AAF1B,uHAAA,gBAAgB,OAAA;AAGpB,6DAAoD;AAA3C,mHAAA,YAAY,OAAA;AACrB,uDAAkD;AAAzC,2GAAA,UAAU,OAAA;AACnB,iEAA4D;AAAnD,2HAAA,kBAAkB,OAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../signers/index.ts"],"names":[],"mappings":";;;AAAA,uDAG2B;AAFvB,iHAAA,aAAa,OAAA;AAGjB,6DAG8B;AAF1B,uHAAA,gBAAgB,OAAA;AAGpB,6DAAoD;AAA3C,mHAAA,YAAY,OAAA;AACrB,uDAAkD;AAAzC,2GAAA,UAAU,OAAA;AACnB,iEAA4D;AAAnD,2HAAA,kBAAkB,OAAA"}
|
package/_esm/signers/index.js
CHANGED
|
@@ -3,6 +3,4 @@ export { toWebAuthnSigner } from "./toWebAuthnSigner.js";
|
|
|
3
3
|
export { WebAuthnMode } from "./toWebAuthnPubKey.js";
|
|
4
4
|
export { toSignerId } from "./utils/toSignerId.js";
|
|
5
5
|
export { toEmptyECDSASigner } from "./toEmptyECDSASigner.js";
|
|
6
|
-
export { toRemoteSessionKeySigner } from "./toRemoteSessionKeySigner.js";
|
|
7
|
-
export { SessionKeySignerMode } from "./toRemoteSessionKeySigner.js";
|
|
8
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../signers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAEhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,gBAAgB,EAEnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../signers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EAEhB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,gBAAgB,EAEnB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA"}
|
|
@@ -3,6 +3,4 @@ export { toWebAuthnSigner, type WebAuthnModularSignerParams } from "./toWebAuthn
|
|
|
3
3
|
export { WebAuthnMode } from "./toWebAuthnPubKey.js";
|
|
4
4
|
export { toSignerId } from "./utils/toSignerId.js";
|
|
5
5
|
export { toEmptyECDSASigner } from "./toEmptyECDSASigner.js";
|
|
6
|
-
export { toRemoteSessionKeySigner } from "./toRemoteSessionKeySigner.js";
|
|
7
|
-
export { SessionKeySignerMode } from "./toRemoteSessionKeySigner.js";
|
|
8
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../signers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,KAAK,wBAAwB,EAChC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,gBAAgB,EAChB,KAAK,2BAA2B,EACnC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../signers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,aAAa,EACb,KAAK,wBAAwB,EAChC,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EACH,gBAAgB,EAChB,KAAK,2BAA2B,EACnC,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA"}
|
package/package.json
CHANGED
package/signers/index.ts
CHANGED
|
@@ -9,5 +9,3 @@ export {
|
|
|
9
9
|
export { WebAuthnMode } from "./toWebAuthnPubKey.js"
|
|
10
10
|
export { toSignerId } from "./utils/toSignerId.js"
|
|
11
11
|
export { toEmptyECDSASigner } from "./toEmptyECDSASigner.js"
|
|
12
|
-
export { toRemoteSessionKeySigner } from "./toRemoteSessionKeySigner.js"
|
|
13
|
-
export { SessionKeySignerMode } from "./toRemoteSessionKeySigner.js"
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.toRemoteSessionKeySigner = exports.SessionKeySignerMode = void 0;
|
|
4
|
-
const sdk_1 = require("@zerodev/sdk");
|
|
5
|
-
const accounts_1 = require("permissionless/accounts");
|
|
6
|
-
const viem_1 = require("viem");
|
|
7
|
-
const accounts_2 = require("viem/accounts");
|
|
8
|
-
const constants_js_1 = require("../constants.js");
|
|
9
|
-
var SessionKeySignerMode;
|
|
10
|
-
(function (SessionKeySignerMode) {
|
|
11
|
-
SessionKeySignerMode["Create"] = "create";
|
|
12
|
-
SessionKeySignerMode["Get"] = "get";
|
|
13
|
-
})(SessionKeySignerMode || (exports.SessionKeySignerMode = SessionKeySignerMode = {}));
|
|
14
|
-
async function toRemoteSessionKeySigner({ apiKey, keyAddress, sessionKeyStorageUrl = "https://keys.zerodev.app/wallet/v1", mode = SessionKeySignerMode.Get, signerContractAddress = constants_js_1.ECDSA_SIGNER_CONTRACT }) {
|
|
15
|
-
if (mode === SessionKeySignerMode.Create) {
|
|
16
|
-
try {
|
|
17
|
-
const response = await fetch(`${sessionKeyStorageUrl}/key-pair`, {
|
|
18
|
-
method: "POST",
|
|
19
|
-
headers: {
|
|
20
|
-
"Content-Type": "application/json",
|
|
21
|
-
"x-api-key": apiKey
|
|
22
|
-
}
|
|
23
|
-
});
|
|
24
|
-
if (!response.ok) {
|
|
25
|
-
const errorBody = await response.json();
|
|
26
|
-
throw new Error(`Request failed with status code ${response.status}: ${errorBody.message}`);
|
|
27
|
-
}
|
|
28
|
-
const createTurnkeyWalletResult = await response.json();
|
|
29
|
-
keyAddress = createTurnkeyWalletResult.walletAddress;
|
|
30
|
-
}
|
|
31
|
-
catch (error) {
|
|
32
|
-
const errorMessage = error instanceof Error
|
|
33
|
-
? error.message
|
|
34
|
-
: "An unknown error occurred";
|
|
35
|
-
throw new Error(`An unexpected error occurred: ${errorMessage}`);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
if (!keyAddress) {
|
|
39
|
-
throw new Error("Wallet address should be provided on get mode");
|
|
40
|
-
}
|
|
41
|
-
const signMessageWithTurnkeyWallet = async (message) => {
|
|
42
|
-
try {
|
|
43
|
-
const response = await fetch(`${sessionKeyStorageUrl}/sign-message`, {
|
|
44
|
-
method: "POST",
|
|
45
|
-
headers: {
|
|
46
|
-
"Content-Type": "application/json",
|
|
47
|
-
"x-api-key": apiKey
|
|
48
|
-
},
|
|
49
|
-
body: JSON.stringify({
|
|
50
|
-
keyAddress,
|
|
51
|
-
message
|
|
52
|
-
})
|
|
53
|
-
});
|
|
54
|
-
if (!response.ok) {
|
|
55
|
-
const errorBody = await response.json();
|
|
56
|
-
throw new Error(`Request failed with status code ${response.status}: ${errorBody.message || "An unknown error occurred"}`);
|
|
57
|
-
}
|
|
58
|
-
const signMessageResult = await response.json();
|
|
59
|
-
return signMessageResult.signature;
|
|
60
|
-
}
|
|
61
|
-
catch (error) {
|
|
62
|
-
const errorMessage = error instanceof Error
|
|
63
|
-
? error.message
|
|
64
|
-
: "An unknown error occurred";
|
|
65
|
-
throw new Error(`An unexpected error occurred: ${errorMessage}`);
|
|
66
|
-
}
|
|
67
|
-
};
|
|
68
|
-
const account = (0, accounts_2.toAccount)({
|
|
69
|
-
address: keyAddress,
|
|
70
|
-
async signMessage({ message }) {
|
|
71
|
-
return (0, sdk_1.fixSignedData)(await signMessageWithTurnkeyWallet(message));
|
|
72
|
-
},
|
|
73
|
-
async signTransaction(_, __) {
|
|
74
|
-
throw new accounts_1.SignTransactionNotSupportedBySmartAccount();
|
|
75
|
-
},
|
|
76
|
-
async signTypedData(typedData) {
|
|
77
|
-
const { domain, message, primaryType } = typedData;
|
|
78
|
-
const types = {
|
|
79
|
-
EIP712Domain: (0, viem_1.getTypesForEIP712Domain)({ domain }),
|
|
80
|
-
...typedData.types
|
|
81
|
-
};
|
|
82
|
-
(0, viem_1.validateTypedData)({ domain, message, primaryType, types });
|
|
83
|
-
const hash = (0, viem_1.hashTypedData)(typedData);
|
|
84
|
-
return (0, sdk_1.fixSignedData)(await signMessageWithTurnkeyWallet(hash));
|
|
85
|
-
}
|
|
86
|
-
});
|
|
87
|
-
return {
|
|
88
|
-
account,
|
|
89
|
-
signerContractAddress,
|
|
90
|
-
getSignerData: () => {
|
|
91
|
-
if (!keyAddress) {
|
|
92
|
-
throw new Error("Wallet address not found");
|
|
93
|
-
}
|
|
94
|
-
return keyAddress;
|
|
95
|
-
},
|
|
96
|
-
getDummySignature: () => sdk_1.constants.DUMMY_ECDSA_SIG
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
exports.toRemoteSessionKeySigner = toRemoteSessionKeySigner;
|
|
100
|
-
//# sourceMappingURL=toRemoteSessionKeySigner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toRemoteSessionKeySigner.js","sourceRoot":"","sources":["../../signers/toRemoteSessionKeySigner.ts"],"names":[],"mappings":";;;AAAA,sCAAuD;AAEvD,sDAAmF;AACnF,+BAQa;AACb,4CAAyC;AACzC,kDAAuD;AAGvD,IAAY,oBAGX;AAHD,WAAY,oBAAoB;IAC5B,yCAAiB,CAAA;IACjB,mCAAW,CAAA;AACf,CAAC,EAHW,oBAAoB,oCAApB,oBAAoB,QAG/B;AASM,KAAK,UAAU,wBAAwB,CAAC,EAC3C,MAAM,EACN,UAAU,EACV,oBAAoB,GAAG,oCAAoC,EAC3D,IAAI,GAAG,oBAAoB,CAAC,GAAG,EAC/B,qBAAqB,GAAG,oCAAqB,EACjB;IAC5B,IAAI,IAAI,KAAK,oBAAoB,CAAC,MAAM,EAAE,CAAC;QACvC,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,oBAAoB,WAAW,EAAE;gBAC7D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACL,cAAc,EAAE,kBAAkB;oBAClC,WAAW,EAAE,MAAM;iBACtB;aACJ,CAAC,CAAA;YAEF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;gBACvC,MAAM,IAAI,KAAK,CACX,mCAAmC,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,OAAO,EAAE,CAC7E,CAAA;YACL,CAAC;YAED,MAAM,yBAAyB,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YACvD,UAAU,GAAG,yBAAyB,CAAC,aAAa,CAAA;QACxD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GACd,KAAK,YAAY,KAAK;gBAClB,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,2BAA2B,CAAA;YACrC,MAAM,IAAI,KAAK,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAA;QACpE,CAAC;IACL,CAAC;IAED,IAAI,CAAC,UAAU,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAA;IACpE,CAAC;IAED,MAAM,4BAA4B,GAAG,KAAK,EAAE,OAAwB,EAAE,EAAE;QACpE,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CACxB,GAAG,oBAAoB,eAAe,EACtC;gBACI,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACL,cAAc,EAAE,kBAAkB;oBAClC,WAAW,EAAE,MAAM;iBACtB;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,UAAU;oBACV,OAAO;iBACV,CAAC;aACL,CACJ,CAAA;YAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;gBACvC,MAAM,IAAI,KAAK,CACX,mCAAmC,QAAQ,CAAC,MAAM,KAC9C,SAAS,CAAC,OAAO,IAAI,2BACzB,EAAE,CACL,CAAA;YACL,CAAC;YAED,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAA;YAC/C,OAAO,iBAAiB,CAAC,SAAS,CAAA;QACtC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,YAAY,GACd,KAAK,YAAY,KAAK;gBAClB,CAAC,CAAC,KAAK,CAAC,OAAO;gBACf,CAAC,CAAC,2BAA2B,CAAA;YACrC,MAAM,IAAI,KAAK,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAA;QACpE,CAAC;IACL,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,IAAA,oBAAS,EAAC;QACtB,OAAO,EAAE,UAAU;QACnB,KAAK,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE;YACzB,OAAO,IAAA,mBAAa,EAAC,MAAM,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAA;QACrE,CAAC;QACD,KAAK,CAAC,eAAe,CAAC,CAAC,EAAE,EAAE;YACvB,MAAM,IAAI,oDAAyC,EAAE,CAAA;QACzD,CAAC;QACD,KAAK,CAAC,aAAa,CAKjB,SAAwD;YACtD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAClC,SAA+C,CAAA;YAEnD,MAAM,KAAK,GAAG;gBACV,YAAY,EAAE,IAAA,8BAAuB,EAAC,EAAE,MAAM,EAAE,CAAC;gBACjD,GAAG,SAAS,CAAC,KAAK;aACrB,CAAA;YAED,IAAA,wBAAiB,EAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAA;YAE1D,MAAM,IAAI,GAAG,IAAA,oBAAa,EAAC,SAAS,CAAC,CAAA;YACrC,OAAO,IAAA,mBAAa,EAAC,MAAM,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAA;QAClE,CAAC;KACJ,CAAC,CAAA;IACF,OAAO;QACH,OAAO;QACP,qBAAqB;QACrB,aAAa,EAAE,GAAG,EAAE;YAChB,IAAI,CAAC,UAAU,EAAE,CAAC;gBACd,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAA;YAC/C,CAAC;YACD,OAAO,UAAU,CAAA;QACrB,CAAC;QACD,iBAAiB,EAAE,GAAG,EAAE,CAAC,eAAS,CAAC,eAAe;KACrD,CAAA;AACL,CAAC;AAnHD,4DAmHC"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { constants, fixSignedData } from "@zerodev/sdk";
|
|
2
|
-
import { SignTransactionNotSupportedBySmartAccount } from "permissionless/accounts";
|
|
3
|
-
import { getTypesForEIP712Domain, hashTypedData, validateTypedData } from "viem";
|
|
4
|
-
import { toAccount } from "viem/accounts";
|
|
5
|
-
import { ECDSA_SIGNER_CONTRACT } from "../constants.js";
|
|
6
|
-
export var SessionKeySignerMode;
|
|
7
|
-
(function (SessionKeySignerMode) {
|
|
8
|
-
SessionKeySignerMode["Create"] = "create";
|
|
9
|
-
SessionKeySignerMode["Get"] = "get";
|
|
10
|
-
})(SessionKeySignerMode || (SessionKeySignerMode = {}));
|
|
11
|
-
export async function toRemoteSessionKeySigner({ apiKey, keyAddress, sessionKeyStorageUrl = "https://keys.zerodev.app/wallet/v1", mode = SessionKeySignerMode.Get, signerContractAddress = ECDSA_SIGNER_CONTRACT }) {
|
|
12
|
-
if (mode === SessionKeySignerMode.Create) {
|
|
13
|
-
try {
|
|
14
|
-
const response = await fetch(`${sessionKeyStorageUrl}/key-pair`, {
|
|
15
|
-
method: "POST",
|
|
16
|
-
headers: {
|
|
17
|
-
"Content-Type": "application/json",
|
|
18
|
-
"x-api-key": apiKey
|
|
19
|
-
}
|
|
20
|
-
});
|
|
21
|
-
if (!response.ok) {
|
|
22
|
-
const errorBody = await response.json();
|
|
23
|
-
throw new Error(`Request failed with status code ${response.status}: ${errorBody.message}`);
|
|
24
|
-
}
|
|
25
|
-
const createTurnkeyWalletResult = await response.json();
|
|
26
|
-
keyAddress = createTurnkeyWalletResult.walletAddress;
|
|
27
|
-
}
|
|
28
|
-
catch (error) {
|
|
29
|
-
const errorMessage = error instanceof Error
|
|
30
|
-
? error.message
|
|
31
|
-
: "An unknown error occurred";
|
|
32
|
-
throw new Error(`An unexpected error occurred: ${errorMessage}`);
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
if (!keyAddress) {
|
|
36
|
-
throw new Error("Wallet address should be provided on get mode");
|
|
37
|
-
}
|
|
38
|
-
const signMessageWithTurnkeyWallet = async (message) => {
|
|
39
|
-
try {
|
|
40
|
-
const response = await fetch(`${sessionKeyStorageUrl}/sign-message`, {
|
|
41
|
-
method: "POST",
|
|
42
|
-
headers: {
|
|
43
|
-
"Content-Type": "application/json",
|
|
44
|
-
"x-api-key": apiKey
|
|
45
|
-
},
|
|
46
|
-
body: JSON.stringify({
|
|
47
|
-
keyAddress,
|
|
48
|
-
message
|
|
49
|
-
})
|
|
50
|
-
});
|
|
51
|
-
if (!response.ok) {
|
|
52
|
-
const errorBody = await response.json();
|
|
53
|
-
throw new Error(`Request failed with status code ${response.status}: ${errorBody.message || "An unknown error occurred"}`);
|
|
54
|
-
}
|
|
55
|
-
const signMessageResult = await response.json();
|
|
56
|
-
return signMessageResult.signature;
|
|
57
|
-
}
|
|
58
|
-
catch (error) {
|
|
59
|
-
const errorMessage = error instanceof Error
|
|
60
|
-
? error.message
|
|
61
|
-
: "An unknown error occurred";
|
|
62
|
-
throw new Error(`An unexpected error occurred: ${errorMessage}`);
|
|
63
|
-
}
|
|
64
|
-
};
|
|
65
|
-
const account = toAccount({
|
|
66
|
-
address: keyAddress,
|
|
67
|
-
async signMessage({ message }) {
|
|
68
|
-
return fixSignedData(await signMessageWithTurnkeyWallet(message));
|
|
69
|
-
},
|
|
70
|
-
async signTransaction(_, __) {
|
|
71
|
-
throw new SignTransactionNotSupportedBySmartAccount();
|
|
72
|
-
},
|
|
73
|
-
async signTypedData(typedData) {
|
|
74
|
-
const { domain, message, primaryType } = typedData;
|
|
75
|
-
const types = {
|
|
76
|
-
EIP712Domain: getTypesForEIP712Domain({ domain }),
|
|
77
|
-
...typedData.types
|
|
78
|
-
};
|
|
79
|
-
validateTypedData({ domain, message, primaryType, types });
|
|
80
|
-
const hash = hashTypedData(typedData);
|
|
81
|
-
return fixSignedData(await signMessageWithTurnkeyWallet(hash));
|
|
82
|
-
}
|
|
83
|
-
});
|
|
84
|
-
return {
|
|
85
|
-
account,
|
|
86
|
-
signerContractAddress,
|
|
87
|
-
getSignerData: () => {
|
|
88
|
-
if (!keyAddress) {
|
|
89
|
-
throw new Error("Wallet address not found");
|
|
90
|
-
}
|
|
91
|
-
return keyAddress;
|
|
92
|
-
},
|
|
93
|
-
getDummySignature: () => constants.DUMMY_ECDSA_SIG
|
|
94
|
-
};
|
|
95
|
-
}
|
|
96
|
-
//# sourceMappingURL=toRemoteSessionKeySigner.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toRemoteSessionKeySigner.js","sourceRoot":"","sources":["../../signers/toRemoteSessionKeySigner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { type Hex } from "viem";
|
|
2
|
-
import type { ModularSigner, ModularSignerParams } from "../types.js";
|
|
3
|
-
export declare enum SessionKeySignerMode {
|
|
4
|
-
Create = "create",
|
|
5
|
-
Get = "get"
|
|
6
|
-
}
|
|
7
|
-
export type SessionKeyModularSignerParams = ModularSignerParams & {
|
|
8
|
-
apiKey: string;
|
|
9
|
-
sessionKeyStorageUrl?: string;
|
|
10
|
-
keyAddress?: Hex;
|
|
11
|
-
mode?: SessionKeySignerMode;
|
|
12
|
-
};
|
|
13
|
-
export declare function toRemoteSessionKeySigner({ apiKey, keyAddress, sessionKeyStorageUrl, mode, signerContractAddress }: SessionKeyModularSignerParams): Promise<ModularSigner>;
|
|
14
|
-
//# sourceMappingURL=toRemoteSessionKeySigner.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"toRemoteSessionKeySigner.d.ts","sourceRoot":"","sources":["../../signers/toRemoteSessionKeySigner.ts"],"names":[],"mappings":"AAGA,OAAO,EACH,KAAK,GAAG,EAOX,MAAM,MAAM,CAAA;AAGb,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAErE,oBAAY,oBAAoB;IAC5B,MAAM,WAAW;IACjB,GAAG,QAAQ;CACd;AAED,MAAM,MAAM,6BAA6B,GAAG,mBAAmB,GAAG;IAC9D,MAAM,EAAE,MAAM,CAAA;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B,UAAU,CAAC,EAAE,GAAG,CAAA;IAChB,IAAI,CAAC,EAAE,oBAAoB,CAAA;CAC9B,CAAA;AAED,wBAAsB,wBAAwB,CAAC,EAC3C,MAAM,EACN,UAAU,EACV,oBAA2D,EAC3D,IAA+B,EAC/B,qBAA6C,EAChD,EAAE,6BAA6B,GAAG,OAAO,CAAC,aAAa,CAAC,CA6GxD"}
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
import { constants, fixSignedData } from "@zerodev/sdk"
|
|
2
|
-
import type { TypedData } from "abitype"
|
|
3
|
-
import { SignTransactionNotSupportedBySmartAccount } from "permissionless/accounts"
|
|
4
|
-
import {
|
|
5
|
-
type Hex,
|
|
6
|
-
type SignTypedDataParameters,
|
|
7
|
-
type SignableMessage,
|
|
8
|
-
type TypedDataDefinition,
|
|
9
|
-
getTypesForEIP712Domain,
|
|
10
|
-
hashTypedData,
|
|
11
|
-
validateTypedData
|
|
12
|
-
} from "viem"
|
|
13
|
-
import { toAccount } from "viem/accounts"
|
|
14
|
-
import { ECDSA_SIGNER_CONTRACT } from "../constants.js"
|
|
15
|
-
import type { ModularSigner, ModularSignerParams } from "../types.js"
|
|
16
|
-
|
|
17
|
-
export enum SessionKeySignerMode {
|
|
18
|
-
Create = "create",
|
|
19
|
-
Get = "get"
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export type SessionKeyModularSignerParams = ModularSignerParams & {
|
|
23
|
-
apiKey: string
|
|
24
|
-
sessionKeyStorageUrl?: string
|
|
25
|
-
keyAddress?: Hex
|
|
26
|
-
mode?: SessionKeySignerMode
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export async function toRemoteSessionKeySigner({
|
|
30
|
-
apiKey,
|
|
31
|
-
keyAddress,
|
|
32
|
-
sessionKeyStorageUrl = "https://keys.zerodev.app/wallet/v1",
|
|
33
|
-
mode = SessionKeySignerMode.Get,
|
|
34
|
-
signerContractAddress = ECDSA_SIGNER_CONTRACT
|
|
35
|
-
}: SessionKeyModularSignerParams): Promise<ModularSigner> {
|
|
36
|
-
if (mode === SessionKeySignerMode.Create) {
|
|
37
|
-
try {
|
|
38
|
-
const response = await fetch(`${sessionKeyStorageUrl}/key-pair`, {
|
|
39
|
-
method: "POST",
|
|
40
|
-
headers: {
|
|
41
|
-
"Content-Type": "application/json",
|
|
42
|
-
"x-api-key": apiKey
|
|
43
|
-
}
|
|
44
|
-
})
|
|
45
|
-
|
|
46
|
-
if (!response.ok) {
|
|
47
|
-
const errorBody = await response.json()
|
|
48
|
-
throw new Error(
|
|
49
|
-
`Request failed with status code ${response.status}: ${errorBody.message}`
|
|
50
|
-
)
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
const createTurnkeyWalletResult = await response.json()
|
|
54
|
-
keyAddress = createTurnkeyWalletResult.walletAddress
|
|
55
|
-
} catch (error) {
|
|
56
|
-
const errorMessage =
|
|
57
|
-
error instanceof Error
|
|
58
|
-
? error.message
|
|
59
|
-
: "An unknown error occurred"
|
|
60
|
-
throw new Error(`An unexpected error occurred: ${errorMessage}`)
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
if (!keyAddress) {
|
|
65
|
-
throw new Error("Wallet address should be provided on get mode")
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
const signMessageWithTurnkeyWallet = async (message: SignableMessage) => {
|
|
69
|
-
try {
|
|
70
|
-
const response = await fetch(
|
|
71
|
-
`${sessionKeyStorageUrl}/sign-message`,
|
|
72
|
-
{
|
|
73
|
-
method: "POST",
|
|
74
|
-
headers: {
|
|
75
|
-
"Content-Type": "application/json",
|
|
76
|
-
"x-api-key": apiKey
|
|
77
|
-
},
|
|
78
|
-
body: JSON.stringify({
|
|
79
|
-
keyAddress,
|
|
80
|
-
message
|
|
81
|
-
})
|
|
82
|
-
}
|
|
83
|
-
)
|
|
84
|
-
|
|
85
|
-
if (!response.ok) {
|
|
86
|
-
const errorBody = await response.json()
|
|
87
|
-
throw new Error(
|
|
88
|
-
`Request failed with status code ${response.status}: ${
|
|
89
|
-
errorBody.message || "An unknown error occurred"
|
|
90
|
-
}`
|
|
91
|
-
)
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
const signMessageResult = await response.json()
|
|
95
|
-
return signMessageResult.signature
|
|
96
|
-
} catch (error) {
|
|
97
|
-
const errorMessage =
|
|
98
|
-
error instanceof Error
|
|
99
|
-
? error.message
|
|
100
|
-
: "An unknown error occurred"
|
|
101
|
-
throw new Error(`An unexpected error occurred: ${errorMessage}`)
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const account = toAccount({
|
|
106
|
-
address: keyAddress,
|
|
107
|
-
async signMessage({ message }) {
|
|
108
|
-
return fixSignedData(await signMessageWithTurnkeyWallet(message))
|
|
109
|
-
},
|
|
110
|
-
async signTransaction(_, __) {
|
|
111
|
-
throw new SignTransactionNotSupportedBySmartAccount()
|
|
112
|
-
},
|
|
113
|
-
async signTypedData<
|
|
114
|
-
const TTypedData extends TypedData | Record<string, unknown>,
|
|
115
|
-
TPrimaryType extends
|
|
116
|
-
| keyof TTypedData
|
|
117
|
-
| "EIP712Domain" = keyof TTypedData
|
|
118
|
-
>(typedData: TypedDataDefinition<TTypedData, TPrimaryType>) {
|
|
119
|
-
const { domain, message, primaryType } =
|
|
120
|
-
typedData as unknown as SignTypedDataParameters
|
|
121
|
-
|
|
122
|
-
const types = {
|
|
123
|
-
EIP712Domain: getTypesForEIP712Domain({ domain }),
|
|
124
|
-
...typedData.types
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
validateTypedData({ domain, message, primaryType, types })
|
|
128
|
-
|
|
129
|
-
const hash = hashTypedData(typedData)
|
|
130
|
-
return fixSignedData(await signMessageWithTurnkeyWallet(hash))
|
|
131
|
-
}
|
|
132
|
-
})
|
|
133
|
-
return {
|
|
134
|
-
account,
|
|
135
|
-
signerContractAddress,
|
|
136
|
-
getSignerData: () => {
|
|
137
|
-
if (!keyAddress) {
|
|
138
|
-
throw new Error("Wallet address not found")
|
|
139
|
-
}
|
|
140
|
-
return keyAddress
|
|
141
|
-
},
|
|
142
|
-
getDummySignature: () => constants.DUMMY_ECDSA_SIG
|
|
143
|
-
}
|
|
144
|
-
}
|