@funkit/core 2.0.1 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +11 -27
- package/dist/index.js.map +1 -1
- package/dist/src/abis/ApproveAndExec.json +45 -9
- package/dist/src/abis/ApproveAndSwap.json +141 -1
- package/dist/src/abis/CheckoutPaymaster.json +3358 -1
- package/dist/src/abis/EntryPoint.json +590 -113
- package/dist/src/abis/EstimationPaymaster.json +134 -24
- package/dist/src/abis/FeePercentOracle.json +94 -18
- package/dist/src/abis/FunWallet.json +280 -56
- package/dist/src/abis/FunWalletFactory.json +112 -21
- package/dist/src/abis/GaslessPaymaster.json +279 -50
- package/dist/src/abis/RoleBasedAccessControl.json +2 -1
- package/dist/src/abis/TestNFT.json +71 -15
- package/dist/src/abis/TokenPriceOracle.json +17 -4
- package/dist/src/abis/UserAuthentication.json +147 -32
- package/dist/src/actions/AccessControl.js +39 -48
- package/dist/src/actions/AccessControl.js.map +1 -1
- package/dist/src/actions/BatchActions.js +3 -7
- package/dist/src/actions/BatchActions.js.map +1 -1
- package/dist/src/actions/Bridge.js +16 -20
- package/dist/src/actions/Bridge.js.map +1 -1
- package/dist/src/actions/FirstClassActions.js +74 -77
- package/dist/src/actions/FirstClassActions.js.map +1 -1
- package/dist/src/actions/Group.js +14 -20
- package/dist/src/actions/Group.js.map +1 -1
- package/dist/src/actions/LimitOrder.js +18 -22
- package/dist/src/actions/LimitOrder.js.map +1 -1
- package/dist/src/actions/Stake.js +40 -43
- package/dist/src/actions/Stake.js.map +1 -1
- package/dist/src/actions/Swap.js +40 -46
- package/dist/src/actions/Swap.js.map +1 -1
- package/dist/src/actions/Token.js +41 -53
- package/dist/src/actions/Token.js.map +1 -1
- package/dist/src/actions/index.js +7 -23
- package/dist/src/actions/index.js.map +1 -1
- package/dist/src/actions/types.js +4 -7
- package/dist/src/actions/types.js.map +1 -1
- package/dist/src/apis/AccessControlApis.js +10 -16
- package/dist/src/apis/AccessControlApis.js.map +1 -1
- package/dist/src/apis/BridgeApis.js +14 -20
- package/dist/src/apis/BridgeApis.js.map +1 -1
- package/dist/src/apis/ContractApis.js +4 -7
- package/dist/src/apis/ContractApis.js.map +1 -1
- package/dist/src/apis/GroupApis.js +6 -10
- package/dist/src/apis/GroupApis.js.map +1 -1
- package/dist/src/apis/InfoApis.js +16 -23
- package/dist/src/apis/InfoApis.js.map +1 -1
- package/dist/src/apis/ListenerApis.js +9 -13
- package/dist/src/apis/ListenerApis.js.map +1 -1
- package/dist/src/apis/NFTApis.js +6 -10
- package/dist/src/apis/NFTApis.js.map +1 -1
- package/dist/src/apis/OperationApis.js +26 -40
- package/dist/src/apis/OperationApis.js.map +1 -1
- package/dist/src/apis/PaymasterApis.js +4 -7
- package/dist/src/apis/PaymasterApis.js.map +1 -1
- package/dist/src/apis/SwapApis.js +8 -13
- package/dist/src/apis/SwapApis.js.map +1 -1
- package/dist/src/apis/UserApis.js +20 -29
- package/dist/src/apis/UserApis.js.map +1 -1
- package/dist/src/apis/index.js +8 -24
- package/dist/src/apis/index.js.map +1 -1
- package/dist/src/apis/types.js +1 -2
- package/dist/src/auth/Auth.js +60 -76
- package/dist/src/auth/Auth.js.map +1 -1
- package/dist/src/auth/SessionKeyAuth.js +30 -33
- package/dist/src/auth/SessionKeyAuth.js.map +1 -1
- package/dist/src/auth/index.js +2 -18
- package/dist/src/auth/index.js.map +1 -1
- package/dist/src/auth/types.js +1 -2
- package/dist/src/common/constants.d.ts +141 -3
- package/dist/src/common/constants.js +211 -191
- package/dist/src/common/constants.js.map +1 -1
- package/dist/src/common/index.js +2 -18
- package/dist/src/common/index.js.map +1 -1
- package/dist/src/common/types.js +1 -2
- package/dist/src/config/Config.js +8 -13
- package/dist/src/config/Config.js.map +1 -1
- package/dist/src/config/index.js +2 -18
- package/dist/src/config/index.js.map +1 -1
- package/dist/src/config/types.js +1 -2
- package/dist/src/data/Chain.js +35 -33
- package/dist/src/data/Chain.js.map +1 -1
- package/dist/src/data/NFT.js +28 -31
- package/dist/src/data/NFT.js.map +1 -1
- package/dist/src/data/Operation.js +28 -11
- package/dist/src/data/Operation.js.map +1 -1
- package/dist/src/data/SolidityData.js +23 -30
- package/dist/src/data/SolidityData.js.map +1 -1
- package/dist/src/data/Token.js +21 -23
- package/dist/src/data/Token.js.map +1 -1
- package/dist/src/data/index.js +6 -22
- package/dist/src/data/index.js.map +1 -1
- package/dist/src/data/types.js +6 -9
- package/dist/src/data/types.js.map +1 -1
- package/dist/src/errors/BaseError.js +6 -5
- package/dist/src/errors/BaseError.js.map +1 -1
- package/dist/src/errors/ClientError.js +21 -34
- package/dist/src/errors/ClientError.js.map +1 -1
- package/dist/src/errors/ServerError.js +6 -11
- package/dist/src/errors/ServerError.js.map +1 -1
- package/dist/src/errors/index.js +4 -20
- package/dist/src/errors/index.js.map +1 -1
- package/dist/src/errors/types.js +6 -9
- package/dist/src/errors/types.js.map +1 -1
- package/dist/src/sponsors/CheckoutSponsor.js +10 -14
- package/dist/src/sponsors/CheckoutSponsor.js.map +1 -1
- package/dist/src/sponsors/GaslessSponsor.js +23 -27
- package/dist/src/sponsors/GaslessSponsor.js.map +1 -1
- package/dist/src/sponsors/Sponsor.js +10 -8
- package/dist/src/sponsors/Sponsor.js.map +1 -1
- package/dist/src/sponsors/TokenSponsor.js +79 -82
- package/dist/src/sponsors/TokenSponsor.js.map +1 -1
- package/dist/src/sponsors/index.js +4 -20
- package/dist/src/sponsors/index.js.map +1 -1
- package/dist/src/sponsors/types.js +2 -5
- package/dist/src/sponsors/types.js.map +1 -1
- package/dist/src/utils/ApiUtils.js +30 -38
- package/dist/src/utils/ApiUtils.js.map +1 -1
- package/dist/src/utils/AuthUtils.js +9 -14
- package/dist/src/utils/AuthUtils.js.map +1 -1
- package/dist/src/utils/ChainUtils.js +38 -49
- package/dist/src/utils/ChainUtils.js.map +1 -1
- package/dist/src/utils/CheckoutUtils.js +13 -18
- package/dist/src/utils/CheckoutUtils.js.map +1 -1
- package/dist/src/utils/GroupUtils.js +6 -9
- package/dist/src/utils/GroupUtils.js.map +1 -1
- package/dist/src/utils/MerkleUtils.js +34 -47
- package/dist/src/utils/MerkleUtils.js.map +1 -1
- package/dist/src/utils/PaymasterUtils.js +5 -9
- package/dist/src/utils/PaymasterUtils.js.map +1 -1
- package/dist/src/utils/SwapUtils.js +44 -43
- package/dist/src/utils/SwapUtils.js.map +1 -1
- package/dist/src/utils/TypeUtils.js +5 -9
- package/dist/src/utils/TypeUtils.js.map +1 -1
- package/dist/src/utils/UserOpUtils.js +20 -29
- package/dist/src/utils/UserOpUtils.js.map +1 -1
- package/dist/src/utils/ViemUtils.js +6 -12
- package/dist/src/utils/ViemUtils.js.map +1 -1
- package/dist/src/utils/WalletUtils.js +28 -42
- package/dist/src/utils/WalletUtils.js.map +1 -1
- package/dist/src/utils/index.js +8 -24
- package/dist/src/utils/index.js.map +1 -1
- package/dist/src/viem/ContractInterface.js +14 -18
- package/dist/src/viem/ContractInterface.js.map +1 -1
- package/dist/src/viem/Converter.js +15 -20
- package/dist/src/viem/Converter.js.map +1 -1
- package/dist/src/viem/index.js +2 -18
- package/dist/src/viem/index.js.map +1 -1
- package/dist/src/wallet/FunWallet.js +141 -142
- package/dist/src/wallet/FunWallet.js.map +1 -1
- package/dist/src/wallet/index.js +2 -18
- package/dist/src/wallet/index.js.map +1 -1
- package/dist/src/wallet/types.js +1 -2
- package/package.json +4 -2
|
@@ -1,65 +1,56 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
exports.getUserAuthIdByAddr = getUserAuthIdByAddr;
|
|
8
|
-
exports.addUserToWallet = addUserToWallet;
|
|
9
|
-
exports.getUserWalletIdentities = getUserWalletIdentities;
|
|
10
|
-
const viem_1 = require("viem");
|
|
11
|
-
const constants_1 = require("../common/constants");
|
|
12
|
-
const errors_1 = require("../errors");
|
|
13
|
-
const ApiUtils_1 = require("../utils/ApiUtils");
|
|
14
|
-
async function createUser(authId, addr, method, userUniqueId) {
|
|
15
|
-
await (0, ApiUtils_1.sendPostRequest)(constants_1.API_URL, 'user', {
|
|
1
|
+
import { InvalidParameterError } from 'viem';
|
|
2
|
+
import { API_URL } from '../common/constants';
|
|
3
|
+
import { ResourceNotFoundError } from '../errors';
|
|
4
|
+
import { sendGetRequest, sendPostRequest } from '../utils/ApiUtils';
|
|
5
|
+
export async function createUser(authId, addr, method, userUniqueId) {
|
|
6
|
+
await sendPostRequest(API_URL, 'user', {
|
|
16
7
|
authId,
|
|
17
8
|
addr,
|
|
18
9
|
method,
|
|
19
10
|
userUniqueId,
|
|
20
11
|
});
|
|
21
12
|
}
|
|
22
|
-
async function getUserUniqueId(authId) {
|
|
13
|
+
export async function getUserUniqueId(authId) {
|
|
23
14
|
try {
|
|
24
|
-
return (await
|
|
15
|
+
return (await sendGetRequest(API_URL, `user/auth/${authId}/unique-id`))
|
|
25
16
|
.userUniqueId;
|
|
26
17
|
}
|
|
27
18
|
catch (err) {
|
|
28
|
-
if (err instanceof
|
|
19
|
+
if (err instanceof ResourceNotFoundError) {
|
|
29
20
|
return '';
|
|
30
21
|
}
|
|
31
22
|
throw err;
|
|
32
23
|
}
|
|
33
24
|
}
|
|
34
|
-
async function getUserAddr(authId) {
|
|
35
|
-
return (await
|
|
25
|
+
export async function getUserAddr(authId) {
|
|
26
|
+
return (await sendGetRequest(API_URL, `user/auth/${authId}/addr`)).addr;
|
|
36
27
|
}
|
|
37
|
-
async function getUserWalletsByAddr(addr, chainId) {
|
|
28
|
+
export async function getUserWalletsByAddr(addr, chainId) {
|
|
38
29
|
const endpoint = chainId
|
|
39
30
|
? `user/addr/${addr}/wallets?chainId=${chainId}`
|
|
40
31
|
: `user/addr/${addr}/wallets`;
|
|
41
|
-
return (await
|
|
32
|
+
return (await sendGetRequest(API_URL, endpoint)).wallets;
|
|
42
33
|
}
|
|
43
|
-
async function getUserAuthIdByAddr(addr) {
|
|
44
|
-
return (await
|
|
34
|
+
export async function getUserAuthIdByAddr(addr) {
|
|
35
|
+
return (await sendGetRequest(API_URL, `user/addr/${addr}/authId`)).authId;
|
|
45
36
|
}
|
|
46
|
-
async function addUserToWallet(authId, chainId, walletAddr, userIds, walletUniqueId) {
|
|
37
|
+
export async function addUserToWallet(authId, chainId, walletAddr, userIds, walletUniqueId) {
|
|
47
38
|
try {
|
|
48
|
-
await
|
|
39
|
+
await sendPostRequest(API_URL, `user/auth/${authId}/chain/${chainId}/wallet`, {
|
|
49
40
|
walletAddr,
|
|
50
41
|
userIds,
|
|
51
42
|
walletUniqueId,
|
|
52
43
|
});
|
|
53
44
|
}
|
|
54
45
|
catch (err) {
|
|
55
|
-
if (err instanceof
|
|
46
|
+
if (err instanceof InvalidParameterError) {
|
|
56
47
|
// swallow the error if the wallet already exists.
|
|
57
48
|
return;
|
|
58
49
|
}
|
|
59
50
|
}
|
|
60
51
|
}
|
|
61
52
|
// return userIds of the specificed Wallet.
|
|
62
|
-
async function getUserWalletIdentities(authId, chainId, walletAddr) {
|
|
63
|
-
return ((await
|
|
53
|
+
export async function getUserWalletIdentities(authId, chainId, walletAddr) {
|
|
54
|
+
return ((await sendGetRequest(API_URL, `user/auth/${authId}/chain/${chainId}/wallet/${walletAddr}/identities`)).ids ?? []);
|
|
64
55
|
}
|
|
65
56
|
//# sourceMappingURL=UserApis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"UserApis.js","sourceRoot":"","sources":["../../../src/apis/UserApis.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"UserApis.js","sourceRoot":"","sources":["../../../src/apis/UserApis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,qBAAqB,EAAE,MAAM,MAAM,CAAA;AAE1D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAGnE,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAc,EACd,IAAY,EACZ,MAAc,EACd,YAAoB;IAEpB,MAAM,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE;QACrC,MAAM;QACN,IAAI;QACJ,MAAM;QACN,YAAY;KACb,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc;IAClD,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,aAAa,MAAM,YAAY,CAAC,CAAC;aACpE,YAAY,CAAA;IACjB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;YACzC,OAAO,EAAE,CAAA;QACX,CAAC;QACD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc;IAC9C,OAAO,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,aAAa,MAAM,OAAO,CAAC,CAAC,CAAC,IAAI,CAAA;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAY,EACZ,OAAgB;IAEhB,MAAM,QAAQ,GAAG,OAAO;QACtB,CAAC,CAAC,aAAa,IAAI,oBAAoB,OAAO,EAAE;QAChD,CAAC,CAAC,aAAa,IAAI,UAAU,CAAA;IAC/B,OAAO,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAA;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY;IACpD,OAAO,CAAC,MAAM,cAAc,CAAC,OAAO,EAAE,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC,MAAM,CAAA;AAC3E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,MAAc,EACd,OAAe,EACf,UAAmB,EACnB,OAAc,EACd,cAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,eAAe,CACnB,OAAO,EACP,aAAa,MAAM,UAAU,OAAO,SAAS,EAC7C;YACE,UAAU;YACV,OAAO;YACP,cAAc;SACf,CACF,CAAA;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,qBAAqB,EAAE,CAAC;YACzC,kDAAkD;YAClD,OAAM;QACR,CAAC;IACH,CAAC;AACH,CAAC;AAED,2CAA2C;AAC3C,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAAc,EACd,OAAe,EACf,UAAmB;IAEnB,OAAO,CACL,CACE,MAAM,cAAc,CAClB,OAAO,EACP,aAAa,MAAM,UAAU,OAAO,WAAW,UAAU,aAAa,CACvE,CACF,CAAC,GAAG,IAAI,EAAE,CACZ,CAAA;AACH,CAAC"}
|
package/dist/src/apis/index.js
CHANGED
|
@@ -1,25 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./ContractApis"), exports);
|
|
18
|
-
__exportStar(require("./GroupApis"), exports);
|
|
19
|
-
__exportStar(require("./InfoApis"), exports);
|
|
20
|
-
__exportStar(require("./NFTApis"), exports);
|
|
21
|
-
__exportStar(require("./OperationApis"), exports);
|
|
22
|
-
__exportStar(require("./PaymasterApis"), exports);
|
|
23
|
-
__exportStar(require("./types"), exports);
|
|
24
|
-
__exportStar(require("./UserApis"), exports);
|
|
1
|
+
export * from './ContractApis';
|
|
2
|
+
export * from './GroupApis';
|
|
3
|
+
export * from './InfoApis';
|
|
4
|
+
export * from './NFTApis';
|
|
5
|
+
export * from './OperationApis';
|
|
6
|
+
export * from './PaymasterApis';
|
|
7
|
+
export * from './types';
|
|
8
|
+
export * from './UserApis';
|
|
25
9
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/apis/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/apis/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,aAAa,CAAA;AAC3B,cAAc,YAAY,CAAA;AAC1B,cAAc,WAAW,CAAA;AACzB,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA"}
|
package/dist/src/apis/types.js
CHANGED
package/dist/src/auth/Auth.js
CHANGED
|
@@ -1,56 +1,37 @@
|
|
|
1
|
-
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.Auth = void 0;
|
|
27
|
-
const viem_1 = require("viem");
|
|
1
|
+
import { createWalletClient, custom, http, isHex, keccak256, pad, toBytes, } from 'viem';
|
|
28
2
|
// @ts-ignore
|
|
29
3
|
// eslint-disable-next-line
|
|
30
|
-
|
|
4
|
+
import { privateKeyToAccount } from 'viem/accounts';
|
|
31
5
|
// @ts-ignore
|
|
32
6
|
// eslint-disable-next-line
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
7
|
+
import * as viemChains from 'viem/chains';
|
|
8
|
+
import { getUserWalletIdentities, getUserWalletsByAddr } from '../apis/UserApis';
|
|
9
|
+
import { VALID_PRIVATE_KEY_LENGTH, } from '../common';
|
|
10
|
+
import { Chain, encodeWalletSignature, } from '../data';
|
|
11
|
+
import { ErrorCode, InvalidParameterError, ResourceNotFoundError, } from '../errors';
|
|
12
|
+
import { getAuthUniqueId, getGasStation } from '../utils';
|
|
13
|
+
import { isBytes32 } from '../utils/TypeUtils';
|
|
14
|
+
import { convertProviderToClient, convertSignerToClient } from '../viem';
|
|
41
15
|
const gasSpecificChain = {
|
|
42
16
|
'137': {
|
|
43
17
|
gasStationUrl: 'https://gasstation.polygon.technology/v2',
|
|
44
18
|
backupPriorityFee: '1000', // 1000 gwei
|
|
45
19
|
backupFee: '200', // 200 gwei
|
|
46
20
|
},
|
|
21
|
+
// TODO: Do the actual calculation for scroll transactions https://docs.scroll.io/en/developers/transaction-fees-on-scroll/
|
|
22
|
+
'534352': {
|
|
23
|
+
gasStationUrl: '',
|
|
24
|
+
backupPriorityFee: 1, // 50 gwei
|
|
25
|
+
backupFee: 1, // 50 gwei
|
|
26
|
+
},
|
|
47
27
|
};
|
|
48
28
|
const preProcessesChains = {};
|
|
49
|
-
for (const key in
|
|
50
|
-
const chain =
|
|
29
|
+
for (const key in viemChains) {
|
|
30
|
+
const chain = viemChains[key];
|
|
51
31
|
preProcessesChains[chain.id] = key;
|
|
52
32
|
}
|
|
53
33
|
preProcessesChains['36865'] = 'funtestnet';
|
|
34
|
+
const chains = { ...viemChains };
|
|
54
35
|
chains['funtestnet'] = {
|
|
55
36
|
id: 36865,
|
|
56
37
|
name: 'Fun Testnet',
|
|
@@ -58,9 +39,13 @@ chains['funtestnet'] = {
|
|
|
58
39
|
nativeCurrency: { name: 'ethereum', symbol: 'ETH', decimals: 18 },
|
|
59
40
|
rpcUrls: { default: { http: [Array] }, public: { http: [Array] } },
|
|
60
41
|
};
|
|
61
|
-
class Auth {
|
|
42
|
+
export class Auth {
|
|
43
|
+
authId;
|
|
44
|
+
signer;
|
|
45
|
+
client;
|
|
46
|
+
inited = false;
|
|
47
|
+
account;
|
|
62
48
|
constructor(authInput) {
|
|
63
|
-
this.inited = false;
|
|
64
49
|
if (authInput.web2AuthId) {
|
|
65
50
|
this.authId = authInput.web2AuthId;
|
|
66
51
|
}
|
|
@@ -68,37 +53,37 @@ class Auth {
|
|
|
68
53
|
this.client = authInput.client;
|
|
69
54
|
}
|
|
70
55
|
else if (authInput.windowEth) {
|
|
71
|
-
this.client =
|
|
72
|
-
transport:
|
|
56
|
+
this.client = createWalletClient({
|
|
57
|
+
transport: custom(authInput.windowEth),
|
|
73
58
|
});
|
|
74
59
|
}
|
|
75
60
|
else if (authInput.rpc) {
|
|
76
|
-
this.client =
|
|
77
|
-
transport:
|
|
61
|
+
this.client = createWalletClient({
|
|
62
|
+
transport: http(authInput.rpc),
|
|
78
63
|
});
|
|
79
64
|
}
|
|
80
65
|
else if (authInput.provider) {
|
|
81
|
-
this.client =
|
|
66
|
+
this.client = convertProviderToClient({ provider: authInput.provider });
|
|
82
67
|
}
|
|
83
68
|
else if (authInput.signer) {
|
|
84
|
-
this.client =
|
|
69
|
+
this.client = convertSignerToClient({ signer: authInput.signer });
|
|
85
70
|
}
|
|
86
71
|
else if (authInput.privateKey) {
|
|
87
72
|
let privateKey;
|
|
88
|
-
if (
|
|
73
|
+
if (isBytes32(authInput.privateKey)) {
|
|
89
74
|
privateKey = authInput.privateKey;
|
|
90
75
|
}
|
|
91
|
-
else if (!
|
|
92
|
-
authInput.privateKey.length ===
|
|
76
|
+
else if (!isHex(authInput.privateKey) &&
|
|
77
|
+
authInput.privateKey.length === VALID_PRIVATE_KEY_LENGTH) {
|
|
93
78
|
privateKey = `0x${authInput.privateKey}`;
|
|
94
79
|
}
|
|
95
80
|
else {
|
|
96
|
-
throw new
|
|
81
|
+
throw new InvalidParameterError(ErrorCode.InvalidParameter, 'privateKey is not a valid one', authInput.privateKey, 'Provide valid privateKey string', 'https://docs.fun.xyz/how-to-guides/configure-account');
|
|
97
82
|
}
|
|
98
|
-
this.signer =
|
|
83
|
+
this.signer = privateKeyToAccount(privateKey);
|
|
99
84
|
}
|
|
100
85
|
else {
|
|
101
|
-
throw new
|
|
86
|
+
throw new InvalidParameterError(ErrorCode.MissingParameter, 'valid authInput is required', authInput, 'Provide viem client, privateKey, window eth (check viem.sh), rpc signer, provider, or signer when constructing Auth', 'https://docs.fun.xyz/how-to-guides/configure-account');
|
|
102
87
|
}
|
|
103
88
|
}
|
|
104
89
|
async init() {
|
|
@@ -111,7 +96,7 @@ class Auth {
|
|
|
111
96
|
else if (this.signer) {
|
|
112
97
|
this.account = this.signer.address;
|
|
113
98
|
}
|
|
114
|
-
this.authId
|
|
99
|
+
this.authId ??= this.account;
|
|
115
100
|
this.inited = true;
|
|
116
101
|
}
|
|
117
102
|
/**
|
|
@@ -125,13 +110,13 @@ class Auth {
|
|
|
125
110
|
let signature;
|
|
126
111
|
if (this.signer?.type === 'local') {
|
|
127
112
|
signature = await this.signer.signMessage({
|
|
128
|
-
message: { raw:
|
|
113
|
+
message: { raw: toBytes(hash) },
|
|
129
114
|
});
|
|
130
115
|
}
|
|
131
116
|
else if (this.client && this.account) {
|
|
132
117
|
signature = await this.client.signMessage({
|
|
133
118
|
account: this.account,
|
|
134
|
-
message: { raw:
|
|
119
|
+
message: { raw: toBytes(hash) },
|
|
135
120
|
});
|
|
136
121
|
}
|
|
137
122
|
else {
|
|
@@ -145,7 +130,7 @@ class Auth {
|
|
|
145
130
|
userId: await this.getUserId(),
|
|
146
131
|
signature,
|
|
147
132
|
};
|
|
148
|
-
return
|
|
133
|
+
return encodeWalletSignature(walletSignature);
|
|
149
134
|
}
|
|
150
135
|
}
|
|
151
136
|
/**
|
|
@@ -176,7 +161,7 @@ class Auth {
|
|
|
176
161
|
* @returns {Promise<Hex>} The padded user ID.
|
|
177
162
|
*/
|
|
178
163
|
async getUserId() {
|
|
179
|
-
return
|
|
164
|
+
return pad(await this.getAddress(), { size: 32 }).toLowerCase();
|
|
180
165
|
}
|
|
181
166
|
/**
|
|
182
167
|
* Generates an estimate gas signature for an operation using the provided user ID.
|
|
@@ -189,10 +174,10 @@ class Auth {
|
|
|
189
174
|
async getEstimateGasSignature(userId, _) {
|
|
190
175
|
await this.init();
|
|
191
176
|
const walletSignature = {
|
|
192
|
-
userId:
|
|
193
|
-
signature:
|
|
177
|
+
userId: pad(userId, { size: 32 }),
|
|
178
|
+
signature: pad('0x', { size: 65 }),
|
|
194
179
|
};
|
|
195
|
-
return
|
|
180
|
+
return encodeWalletSignature(walletSignature);
|
|
196
181
|
}
|
|
197
182
|
/**
|
|
198
183
|
* Retrieves a unique ID for the wallet based on an index and optional skipDBActions flag.
|
|
@@ -202,8 +187,8 @@ class Auth {
|
|
|
202
187
|
*/
|
|
203
188
|
async getWalletUniqueId(index = 0, skipDBActions = false) {
|
|
204
189
|
await this.init();
|
|
205
|
-
const authUniqueId = await
|
|
206
|
-
return
|
|
190
|
+
const authUniqueId = await getAuthUniqueId(this.authId, await this.getAddress(), skipDBActions);
|
|
191
|
+
return keccak256(toBytes(`${authUniqueId}-${index}`));
|
|
207
192
|
}
|
|
208
193
|
/**
|
|
209
194
|
* Sends a transaction with the provided transaction data and options.
|
|
@@ -213,36 +198,36 @@ class Auth {
|
|
|
213
198
|
*/
|
|
214
199
|
async sendTx(txData, options = globalThis.globalEnvOption) {
|
|
215
200
|
await this.init();
|
|
216
|
-
const chain = await
|
|
201
|
+
const chain = await Chain.getChain({ chainIdentifier: options.chain });
|
|
217
202
|
const chainId = await chain.getChainId();
|
|
218
203
|
const { to, data } = txData;
|
|
219
204
|
let { value } = txData;
|
|
220
205
|
if (!chain || !chainId) {
|
|
221
|
-
throw new
|
|
206
|
+
throw new InvalidParameterError(ErrorCode.MissingParameter, 'chain object is missing or incorrect', { options, chainId }, 'Provide proper chain information from options field', 'https://docs.fun.xyz');
|
|
222
207
|
}
|
|
223
208
|
const client = await chain.getClient();
|
|
224
209
|
let tx;
|
|
225
|
-
value
|
|
210
|
+
value ??= 0n;
|
|
226
211
|
let txClient;
|
|
227
212
|
if (this.client)
|
|
228
213
|
txClient = this.client;
|
|
229
214
|
else {
|
|
230
|
-
txClient =
|
|
215
|
+
txClient = createWalletClient({
|
|
231
216
|
account: this.signer,
|
|
232
|
-
transport:
|
|
217
|
+
transport: http(client.transport.url),
|
|
233
218
|
chain: chains[preProcessesChains[await chain.getChainId()]],
|
|
234
219
|
});
|
|
235
220
|
}
|
|
236
221
|
let maxPriorityFee, maxFee;
|
|
237
222
|
if (gasSpecificChain[chainId]) {
|
|
238
223
|
try {
|
|
239
|
-
const { standard: { maxPriorityFee: maxPriorityFee1, maxFee: maxFee1 }, } = await
|
|
224
|
+
const { standard: { maxPriorityFee: maxPriorityFee1, maxFee: maxFee1 }, } = await getGasStation(gasSpecificChain[chainId].gasStationUrl);
|
|
240
225
|
maxPriorityFee = maxPriorityFee1;
|
|
241
226
|
maxFee = maxFee1;
|
|
242
227
|
}
|
|
243
228
|
catch (e) {
|
|
244
|
-
maxPriorityFee =
|
|
245
|
-
maxFee =
|
|
229
|
+
maxPriorityFee = gasSpecificChain[chainId].backupPriorityFee;
|
|
230
|
+
maxFee = gasSpecificChain[chainId].backupFee;
|
|
246
231
|
}
|
|
247
232
|
tx = {
|
|
248
233
|
to,
|
|
@@ -265,7 +250,7 @@ class Auth {
|
|
|
265
250
|
if (chainId !== '1' && chainId !== '5') {
|
|
266
251
|
receipt = await client.waitForTransactionReceipt({
|
|
267
252
|
hash,
|
|
268
|
-
timeout:
|
|
253
|
+
timeout: 30_000,
|
|
269
254
|
});
|
|
270
255
|
}
|
|
271
256
|
else {
|
|
@@ -276,7 +261,7 @@ class Auth {
|
|
|
276
261
|
try {
|
|
277
262
|
receipt = await client.waitForTransactionReceipt({
|
|
278
263
|
hash,
|
|
279
|
-
timeout:
|
|
264
|
+
timeout: 30_000,
|
|
280
265
|
});
|
|
281
266
|
break;
|
|
282
267
|
}
|
|
@@ -313,7 +298,7 @@ class Auth {
|
|
|
313
298
|
*/
|
|
314
299
|
async getUserIds(wallet, chainId) {
|
|
315
300
|
await this.init();
|
|
316
|
-
return await
|
|
301
|
+
return await getUserWalletIdentities(this.authId, chainId, wallet);
|
|
317
302
|
}
|
|
318
303
|
/**
|
|
319
304
|
* Retrieves the wallets associated with the current auth object.
|
|
@@ -323,15 +308,14 @@ class Auth {
|
|
|
323
308
|
async getWallets(chainId) {
|
|
324
309
|
await this.init();
|
|
325
310
|
try {
|
|
326
|
-
return await
|
|
311
|
+
return await getUserWalletsByAddr(await this.getAddress(), chainId);
|
|
327
312
|
}
|
|
328
313
|
catch (err) {
|
|
329
|
-
if (err instanceof
|
|
314
|
+
if (err instanceof ResourceNotFoundError) {
|
|
330
315
|
return [];
|
|
331
316
|
}
|
|
332
317
|
throw err;
|
|
333
318
|
}
|
|
334
319
|
}
|
|
335
320
|
}
|
|
336
|
-
exports.Auth = Auth;
|
|
337
321
|
//# sourceMappingURL=Auth.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../../src/auth/Auth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Auth.js","sourceRoot":"","sources":["../../../src/auth/Auth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const data_1 = require("../data");
|
|
7
|
-
const ViemUtils_1 = require("../utils/ViemUtils");
|
|
8
|
-
const Auth_1 = require("./Auth");
|
|
1
|
+
import { decodeAbiParameters, pad, toBytes } from 'viem';
|
|
2
|
+
import { ETH_TRANSFER_SELECTOR, WALLET_ABI } from '../common';
|
|
3
|
+
import { encodeWalletSignature, } from '../data';
|
|
4
|
+
import { getSigHash } from '../utils/ViemUtils';
|
|
5
|
+
import { Auth } from './Auth';
|
|
9
6
|
const SELECTOR_LENGTH = 10;
|
|
10
|
-
class SessionKeyAuth extends
|
|
7
|
+
export class SessionKeyAuth extends Auth {
|
|
8
|
+
ruleId;
|
|
9
|
+
roleId;
|
|
10
|
+
targetSelectorMerkleTree;
|
|
11
|
+
feeRecipientMerkleTree;
|
|
11
12
|
constructor(authInput, ruleId, roleId, targetSelectorMerkleTree, feeRecipientMerkleTree) {
|
|
12
13
|
super(authInput);
|
|
13
14
|
this.ruleId = ruleId;
|
|
@@ -24,20 +25,20 @@ class SessionKeyAuth extends Auth_1.Auth {
|
|
|
24
25
|
let signature;
|
|
25
26
|
if (this.signer?.type === 'local') {
|
|
26
27
|
signature = await this.signer.signMessage({
|
|
27
|
-
message: { raw:
|
|
28
|
+
message: { raw: toBytes(opHash) },
|
|
28
29
|
});
|
|
29
30
|
}
|
|
30
31
|
else if (this.client && this.account) {
|
|
31
32
|
signature = await this.client.signMessage({
|
|
32
33
|
account: this.account,
|
|
33
|
-
message: { raw:
|
|
34
|
+
message: { raw: toBytes(opHash) },
|
|
34
35
|
});
|
|
35
36
|
}
|
|
36
37
|
else {
|
|
37
38
|
throw new Error('No signer or client');
|
|
38
39
|
}
|
|
39
|
-
const target =
|
|
40
|
-
const selector =
|
|
40
|
+
const target = getTargetFromCall(operation.userOp.callData);
|
|
41
|
+
const selector = getSelectorFromCall(operation.userOp.callData);
|
|
41
42
|
const walletSignature = {
|
|
42
43
|
userId: await this.getUserId(),
|
|
43
44
|
signature,
|
|
@@ -48,19 +49,19 @@ class SessionKeyAuth extends Auth_1.Auth {
|
|
|
48
49
|
selectorPath: this.targetSelectorMerkleTree.getPathForItem(selector),
|
|
49
50
|
},
|
|
50
51
|
};
|
|
51
|
-
return
|
|
52
|
+
return encodeWalletSignature(walletSignature);
|
|
52
53
|
}
|
|
53
54
|
async getEstimateGasSignature(userId, operation) {
|
|
54
55
|
if (!this.targetSelectorMerkleTree) {
|
|
55
56
|
throw new Error('SessionKeyAuth not connected to wallet');
|
|
56
57
|
}
|
|
57
58
|
await this.init();
|
|
58
|
-
const target =
|
|
59
|
-
const selector =
|
|
59
|
+
const target = getTargetFromCall(operation.userOp.callData);
|
|
60
|
+
const selector = getSelectorFromCall(operation.userOp.callData);
|
|
60
61
|
try {
|
|
61
62
|
const walletSignature = {
|
|
62
|
-
userId:
|
|
63
|
-
signature:
|
|
63
|
+
userId: pad(userId, { size: 32 }),
|
|
64
|
+
signature: pad('0x', { size: 65 }),
|
|
64
65
|
roleId: this.roleId,
|
|
65
66
|
ruleId: this.ruleId,
|
|
66
67
|
extraData: {
|
|
@@ -68,26 +69,23 @@ class SessionKeyAuth extends Auth_1.Auth {
|
|
|
68
69
|
selectorPath: this.targetSelectorMerkleTree.getPathForItem(selector),
|
|
69
70
|
},
|
|
70
71
|
};
|
|
71
|
-
return
|
|
72
|
+
return encodeWalletSignature(walletSignature);
|
|
72
73
|
}
|
|
73
74
|
catch {
|
|
74
75
|
throw new Error('Function or target is not allowed in session key');
|
|
75
76
|
}
|
|
76
77
|
}
|
|
77
78
|
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
return (0, exports.decodeCalldata)(callData).target;
|
|
79
|
+
export const getTargetFromCall = (callData) => {
|
|
80
|
+
return decodeCalldata(callData).target;
|
|
81
81
|
};
|
|
82
|
-
|
|
83
|
-
const
|
|
84
|
-
|
|
85
|
-
return out === '0x' ? common_1.ETH_TRANSFER_SELECTOR : out;
|
|
82
|
+
export const getSelectorFromCall = (callData) => {
|
|
83
|
+
const out = decodeCalldata(callData).calldata.slice(0, SELECTOR_LENGTH);
|
|
84
|
+
return out === '0x' ? ETH_TRANSFER_SELECTOR : out;
|
|
86
85
|
};
|
|
87
|
-
|
|
88
|
-
const
|
|
89
|
-
const
|
|
90
|
-
const execFromEntryPointSelector = (0, ViemUtils_1.getSigHash)(common_1.WALLET_ABI, 'execFromEntryPoint');
|
|
86
|
+
export const decodeCalldata = (callData) => {
|
|
87
|
+
const execFromEntryPointFeeSelector = getSigHash(WALLET_ABI, 'execFromEntryPointWithFee');
|
|
88
|
+
const execFromEntryPointSelector = getSigHash(WALLET_ABI, 'execFromEntryPoint');
|
|
91
89
|
if (callData.includes(execFromEntryPointFeeSelector)) {
|
|
92
90
|
return _decodeExecWithFee(callData);
|
|
93
91
|
}
|
|
@@ -96,10 +94,9 @@ const decodeCalldata = (callData) => {
|
|
|
96
94
|
}
|
|
97
95
|
throw new Error('invalid call data. must be execFromEntryPoint or execFromEntryPointWithFee');
|
|
98
96
|
};
|
|
99
|
-
exports.decodeCalldata = decodeCalldata;
|
|
100
97
|
const _decodeExecWithFee = (callData) => {
|
|
101
98
|
const walletcalldata = ('0x' + callData.slice(SELECTOR_LENGTH));
|
|
102
|
-
const [target, value, calldata] =
|
|
99
|
+
const [target, value, calldata] = decodeAbiParameters([{ type: 'address' }, { type: 'uint256' }, { type: 'bytes' }], walletcalldata);
|
|
103
100
|
return {
|
|
104
101
|
target: target,
|
|
105
102
|
value: value,
|
|
@@ -108,7 +105,7 @@ const _decodeExecWithFee = (callData) => {
|
|
|
108
105
|
};
|
|
109
106
|
const _decodeExec = (callData) => {
|
|
110
107
|
const walletcalldata = ('0x' + callData.slice(SELECTOR_LENGTH));
|
|
111
|
-
const [target, value, calldata] =
|
|
108
|
+
const [target, value, calldata] = decodeAbiParameters([{ type: 'address' }, { type: 'uint256' }, { type: 'bytes' }], walletcalldata);
|
|
112
109
|
return {
|
|
113
110
|
target: target,
|
|
114
111
|
value: value,
|