@account-kit/wallet-client 0.1.0-alpha.1 → 0.1.0-alpha.11
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/esm/client/actions/createAccount.d.ts +27 -2
- package/dist/esm/client/actions/createAccount.js +25 -0
- package/dist/esm/client/actions/createAccount.js.map +1 -1
- package/dist/esm/client/actions/formatSign.d.ts +28 -0
- package/dist/esm/client/actions/formatSign.js +30 -0
- package/dist/esm/client/actions/formatSign.js.map +1 -0
- package/dist/esm/client/actions/getCallsStatus.d.ts +22 -4
- package/dist/esm/client/actions/getCallsStatus.js +19 -0
- package/dist/esm/client/actions/getCallsStatus.js.map +1 -1
- package/dist/esm/client/actions/grantPermissions.d.ts +63 -6
- package/dist/esm/client/actions/grantPermissions.js +63 -3
- package/dist/esm/client/actions/grantPermissions.js.map +1 -1
- package/dist/esm/client/actions/listAccounts.d.ts +32 -4
- package/dist/esm/client/actions/listAccounts.js +35 -2
- package/dist/esm/client/actions/listAccounts.js.map +1 -1
- package/dist/esm/client/actions/prepareCalls.d.ts +32 -6
- package/dist/esm/client/actions/prepareCalls.js +39 -5
- package/dist/esm/client/actions/prepareCalls.js.map +1 -1
- package/dist/esm/client/actions/prepareSign.d.ts +25 -0
- package/dist/esm/client/actions/prepareSign.js +28 -0
- package/dist/esm/client/actions/prepareSign.js.map +1 -0
- package/dist/esm/client/actions/requestAccount.d.ts +24 -6
- package/dist/esm/client/actions/requestAccount.js +38 -7
- package/dist/esm/client/actions/requestAccount.js.map +1 -1
- package/dist/esm/client/actions/sendPreparedCalls.d.ts +33 -4
- package/dist/esm/client/actions/sendPreparedCalls.js +37 -1
- package/dist/esm/client/actions/sendPreparedCalls.js.map +1 -1
- package/dist/esm/client/actions/signMessage.d.ts +25 -5
- package/dist/esm/client/actions/signMessage.js +22 -2
- package/dist/esm/client/actions/signMessage.js.map +1 -1
- package/dist/esm/client/actions/signPreparedCalls.d.ts +14 -0
- package/dist/esm/client/actions/signPreparedCalls.js +43 -0
- package/dist/esm/client/actions/signPreparedCalls.js.map +1 -0
- package/dist/esm/client/actions/signSignatureRequest.d.ts +39 -5
- package/dist/esm/client/actions/signSignatureRequest.js +69 -11
- package/dist/esm/client/actions/signSignatureRequest.js.map +1 -1
- package/dist/esm/client/actions/signTypedData.d.ts +37 -4
- package/dist/esm/client/actions/signTypedData.js +34 -1
- package/dist/esm/client/actions/signTypedData.js.map +1 -1
- package/dist/esm/client/client.e2e-test.js +249 -45
- package/dist/esm/client/client.e2e-test.js.map +1 -1
- package/dist/esm/client/decorator.d.ts +12 -8
- package/dist/esm/client/decorator.js +5 -3
- package/dist/esm/client/decorator.js.map +1 -1
- package/dist/esm/client/index.d.ts +38 -12
- package/dist/esm/client/index.js +0 -3
- package/dist/esm/client/index.js.map +1 -1
- package/dist/esm/exports/index.d.ts +5 -6
- package/dist/esm/exports/index.js +4 -6
- package/dist/esm/exports/index.js.map +1 -1
- package/dist/esm/exports/internal.d.ts +1 -10
- package/dist/esm/exports/internal.js +0 -12
- package/dist/esm/exports/internal.js.map +1 -1
- package/dist/esm/internal/decorator.d.ts +2 -0
- package/dist/esm/internal/decorator.js +10 -0
- package/dist/esm/internal/decorator.js.map +1 -0
- package/dist/esm/isomorphic/actions/createSession.d.ts +1 -2
- package/dist/esm/isomorphic/actions/createSession.js +40 -11
- package/dist/esm/isomorphic/actions/createSession.js.map +1 -1
- package/dist/esm/isomorphic/actions/formatSign.d.ts +8 -0
- package/dist/esm/isomorphic/actions/formatSign.js +42 -0
- package/dist/esm/isomorphic/actions/formatSign.js.map +1 -0
- package/dist/esm/isomorphic/actions/getCallsStatus.d.ts +1 -15
- package/dist/esm/isomorphic/actions/getCallsStatus.js +38 -27
- package/dist/esm/isomorphic/actions/getCallsStatus.js.map +1 -1
- package/dist/esm/isomorphic/actions/prepareCalls.d.ts +1 -2
- package/dist/esm/isomorphic/actions/prepareCalls.js +78 -20
- package/dist/esm/isomorphic/actions/prepareCalls.js.map +1 -1
- package/dist/esm/isomorphic/actions/prepareSign.d.ts +7 -0
- package/dist/esm/isomorphic/actions/prepareSign.js +49 -0
- package/dist/esm/isomorphic/actions/prepareSign.js.map +1 -0
- package/dist/esm/isomorphic/actions/sendPreparedCalls.d.ts +3 -4
- package/dist/esm/isomorphic/actions/sendPreparedCalls.js +165 -25
- package/dist/esm/isomorphic/actions/sendPreparedCalls.js.map +1 -1
- package/dist/esm/isomorphic/client.d.ts +204 -27
- package/dist/esm/isomorphic/client.js +6 -2
- package/dist/esm/isomorphic/client.js.map +1 -1
- package/dist/esm/isomorphic/utils/7702.d.ts +19 -0
- package/dist/esm/isomorphic/utils/7702.js +70 -0
- package/dist/esm/isomorphic/utils/7702.js.map +1 -0
- package/dist/esm/isomorphic/utils/createAccount.d.ts +5 -4
- package/dist/esm/isomorphic/utils/createAccount.js +84 -10
- package/dist/esm/isomorphic/utils/createAccount.js.map +1 -1
- package/dist/esm/isomorphic/utils/createDummySigner.js +3 -3
- package/dist/esm/isomorphic/utils/createDummySigner.js.map +1 -1
- package/dist/esm/isomorphic/utils/decodeSignature.d.ts +3 -0
- package/dist/esm/isomorphic/utils/decodeSignature.js +15 -0
- package/dist/esm/isomorphic/utils/decodeSignature.js.map +1 -0
- package/dist/esm/isomorphic/utils/parsePermissionsContext.d.ts +6 -5
- package/dist/esm/isomorphic/utils/parsePermissionsContext.js +19 -6
- package/dist/esm/isomorphic/utils/parsePermissionsContext.js.map +1 -1
- package/dist/esm/isomorphic/utils/supportsFeature.d.ts +4 -0
- package/dist/esm/isomorphic/utils/supportsFeature.js +21 -0
- package/dist/esm/isomorphic/utils/supportsFeature.js.map +1 -0
- package/dist/esm/local/client.d.ts +3 -3
- package/dist/esm/local/client.js +11 -4
- package/dist/esm/local/client.js.map +1 -1
- package/dist/esm/remote/client.d.ts +9 -3
- package/dist/esm/remote/client.js +10 -11
- package/dist/esm/remote/client.js.map +1 -1
- package/dist/esm/types.d.ts +27 -13
- package/dist/esm/types.js.map +1 -1
- package/dist/esm/utils.d.ts +1 -0
- package/dist/esm/utils.js.map +1 -1
- package/dist/types/client/actions/createAccount.d.ts +27 -2
- package/dist/types/client/actions/createAccount.d.ts.map +1 -1
- package/dist/types/client/actions/formatSign.d.ts +29 -0
- package/dist/types/client/actions/formatSign.d.ts.map +1 -0
- package/dist/types/client/actions/getCallsStatus.d.ts +22 -4
- package/dist/types/client/actions/getCallsStatus.d.ts.map +1 -1
- package/dist/types/client/actions/grantPermissions.d.ts +63 -6
- package/dist/types/client/actions/grantPermissions.d.ts.map +1 -1
- package/dist/types/client/actions/listAccounts.d.ts +32 -4
- package/dist/types/client/actions/listAccounts.d.ts.map +1 -1
- package/dist/types/client/actions/prepareCalls.d.ts +32 -6
- package/dist/types/client/actions/prepareCalls.d.ts.map +1 -1
- package/dist/types/client/actions/prepareSign.d.ts +26 -0
- package/dist/types/client/actions/prepareSign.d.ts.map +1 -0
- package/dist/types/client/actions/requestAccount.d.ts +24 -6
- package/dist/types/client/actions/requestAccount.d.ts.map +1 -1
- package/dist/types/client/actions/sendPreparedCalls.d.ts +33 -4
- package/dist/types/client/actions/sendPreparedCalls.d.ts.map +1 -1
- package/dist/types/client/actions/signMessage.d.ts +25 -5
- package/dist/types/client/actions/signMessage.d.ts.map +1 -1
- package/dist/types/client/actions/signPreparedCalls.d.ts +15 -0
- package/dist/types/client/actions/signPreparedCalls.d.ts.map +1 -0
- package/dist/types/client/actions/signSignatureRequest.d.ts +39 -5
- package/dist/types/client/actions/signSignatureRequest.d.ts.map +1 -1
- package/dist/types/client/actions/signTypedData.d.ts +37 -4
- package/dist/types/client/actions/signTypedData.d.ts.map +1 -1
- package/dist/types/client/decorator.d.ts +12 -8
- package/dist/types/client/decorator.d.ts.map +1 -1
- package/dist/types/client/index.d.ts +38 -12
- package/dist/types/client/index.d.ts.map +1 -1
- package/dist/types/exports/index.d.ts +5 -6
- package/dist/types/exports/index.d.ts.map +1 -1
- package/dist/types/exports/internal.d.ts +1 -10
- package/dist/types/exports/internal.d.ts.map +1 -1
- package/dist/types/internal/decorator.d.ts +3 -0
- package/dist/types/internal/decorator.d.ts.map +1 -0
- package/dist/types/isomorphic/actions/createSession.d.ts +1 -2
- package/dist/types/isomorphic/actions/createSession.d.ts.map +1 -1
- package/dist/types/isomorphic/actions/formatSign.d.ts +9 -0
- package/dist/types/isomorphic/actions/formatSign.d.ts.map +1 -0
- package/dist/types/isomorphic/actions/getCallsStatus.d.ts +1 -15
- package/dist/types/isomorphic/actions/getCallsStatus.d.ts.map +1 -1
- package/dist/types/isomorphic/actions/prepareCalls.d.ts +1 -2
- package/dist/types/isomorphic/actions/prepareCalls.d.ts.map +1 -1
- package/dist/types/isomorphic/actions/prepareSign.d.ts +8 -0
- package/dist/types/isomorphic/actions/prepareSign.d.ts.map +1 -0
- package/dist/types/isomorphic/actions/sendPreparedCalls.d.ts +3 -4
- package/dist/types/isomorphic/actions/sendPreparedCalls.d.ts.map +1 -1
- package/dist/types/isomorphic/client.d.ts +204 -27
- package/dist/types/isomorphic/client.d.ts.map +1 -1
- package/dist/types/isomorphic/utils/7702.d.ts +20 -0
- package/dist/types/isomorphic/utils/7702.d.ts.map +1 -0
- package/dist/types/isomorphic/utils/createAccount.d.ts +5 -4
- package/dist/types/isomorphic/utils/createAccount.d.ts.map +1 -1
- package/dist/types/isomorphic/utils/createDummySigner.d.ts.map +1 -1
- package/dist/types/isomorphic/utils/decodeSignature.d.ts +4 -0
- package/dist/types/isomorphic/utils/decodeSignature.d.ts.map +1 -0
- package/dist/types/isomorphic/utils/parsePermissionsContext.d.ts +6 -5
- package/dist/types/isomorphic/utils/parsePermissionsContext.d.ts.map +1 -1
- package/dist/types/isomorphic/utils/supportsFeature.d.ts +5 -0
- package/dist/types/isomorphic/utils/supportsFeature.d.ts.map +1 -0
- package/dist/types/local/client.d.ts +3 -3
- package/dist/types/local/client.d.ts.map +1 -1
- package/dist/types/remote/client.d.ts +9 -3
- package/dist/types/remote/client.d.ts.map +1 -1
- package/dist/types/types.d.ts +27 -13
- package/dist/types/types.d.ts.map +1 -1
- package/dist/types/utils.d.ts +1 -0
- package/dist/types/utils.d.ts.map +1 -1
- package/package.json +9 -6
- package/src/client/actions/createAccount.ts +27 -2
- package/src/client/actions/formatSign.ts +53 -0
- package/src/client/actions/getCallsStatus.ts +21 -12
- package/src/client/actions/grantPermissions.ts +69 -26
- package/src/client/actions/listAccounts.ts +44 -6
- package/src/client/actions/prepareCalls.ts +46 -26
- package/src/client/actions/prepareSign.ts +46 -0
- package/src/client/actions/requestAccount.ts +60 -41
- package/src/client/actions/sendPreparedCalls.ts +44 -7
- package/src/client/actions/signMessage.ts +26 -21
- package/src/client/actions/signPreparedCalls.ts +67 -0
- package/src/client/actions/signSignatureRequest.ts +84 -20
- package/src/client/actions/signTypedData.ts +40 -19
- package/src/client/client.e2e-test.ts +408 -127
- package/src/client/decorator.ts +28 -26
- package/src/client/index.ts +50 -40
- package/src/exports/index.ts +5 -13
- package/src/exports/internal.ts +2 -10
- package/src/internal/decorator.ts +12 -0
- package/src/isomorphic/actions/createSession.ts +56 -13
- package/src/isomorphic/actions/formatSign.ts +76 -0
- package/src/isomorphic/actions/getCallsStatus.ts +47 -33
- package/src/isomorphic/actions/prepareCalls.ts +95 -23
- package/src/isomorphic/actions/prepareSign.ts +88 -0
- package/src/isomorphic/actions/sendPreparedCalls.ts +218 -42
- package/src/isomorphic/client.ts +10 -2
- package/src/isomorphic/utils/7702.ts +135 -0
- package/src/isomorphic/utils/createAccount.ts +101 -13
- package/src/isomorphic/utils/createDummySigner.ts +3 -2
- package/src/isomorphic/utils/decodeSignature.ts +21 -0
- package/src/isomorphic/utils/parsePermissionsContext.ts +29 -11
- package/src/isomorphic/utils/supportsFeature.ts +34 -0
- package/src/local/client.ts +58 -55
- package/src/remote/client.ts +19 -19
- package/src/types.ts +29 -23
- package/src/utils.ts +2 -0
- package/dist/esm/capabilities/index.d.ts +0 -31
- package/dist/esm/capabilities/index.js +0 -10
- package/dist/esm/capabilities/index.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 -138
- package/dist/esm/capabilities/permissions/index.js +0 -71
- 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 -79
- package/dist/esm/capabilities/permissions/mav2.js.map +0 -1
- package/dist/esm/rpc/request.d.ts +0 -352
- package/dist/esm/rpc/request.js +0 -204
- package/dist/esm/rpc/request.js.map +0 -1
- package/dist/esm/rpc/schema.d.ts +0 -342
- package/dist/esm/rpc/schema.js +0 -5
- package/dist/esm/rpc/schema.js.map +0 -1
- package/dist/esm/schemas.d.ts +0 -216
- package/dist/esm/schemas.js +0 -211
- package/dist/esm/schemas.js.map +0 -1
- package/dist/types/capabilities/index.d.ts +0 -32
- package/dist/types/capabilities/index.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 -139
- 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/rpc/request.d.ts +0 -353
- package/dist/types/rpc/request.d.ts.map +0 -1
- package/dist/types/rpc/schema.d.ts +0 -343
- package/dist/types/rpc/schema.d.ts.map +0 -1
- package/dist/types/schemas.d.ts +0 -217
- package/dist/types/schemas.d.ts.map +0 -1
- package/src/capabilities/index.ts +0 -13
- package/src/capabilities/overrides.ts +0 -20
- package/src/capabilities/paymaster.ts +0 -5
- package/src/capabilities/permissions/index.ts +0 -142
- package/src/capabilities/permissions/mav2.ts +0 -127
- package/src/rpc/request.ts +0 -273
- package/src/rpc/schema.ts +0 -40
- package/src/schemas.ts +0 -257
package/src/types.ts
CHANGED
|
@@ -1,47 +1,37 @@
|
|
|
1
|
+
import type { SmartAccountSigner, SmartContractAccount } from "@aa-sdk/core";
|
|
1
2
|
import type { AlchemyTransport } from "@account-kit/infra";
|
|
2
3
|
import type {
|
|
3
4
|
Address,
|
|
4
5
|
Chain,
|
|
5
6
|
Client,
|
|
6
7
|
Hex,
|
|
7
|
-
IsUndefined,
|
|
8
8
|
JsonRpcAccount,
|
|
9
9
|
Transport,
|
|
10
10
|
} from "viem";
|
|
11
|
-
import type { WalletServerViemRpcSchema } from "./rpc/schema";
|
|
12
|
-
import type { SmartAccountSigner } from "@aa-sdk/core";
|
|
13
11
|
import type {
|
|
14
12
|
GrantPermissionsParams,
|
|
15
13
|
GrantPermissionsResult,
|
|
16
|
-
} from "./client/actions/grantPermissions";
|
|
14
|
+
} from "./client/actions/grantPermissions.ts";
|
|
15
|
+
import type { RequestAccountParams } from "./client/actions/requestAccount.ts";
|
|
16
|
+
import type { WalletServerViemRpcSchema } from "@alchemy/wallet-api-types/rpc";
|
|
17
17
|
|
|
18
18
|
export type CreateInnerClientParams<
|
|
19
|
-
TAccount extends
|
|
20
|
-
| JsonRpcAccount<Address>
|
|
21
|
-
| undefined,
|
|
19
|
+
TAccount extends Address | undefined = Address | undefined,
|
|
22
20
|
> = {
|
|
23
21
|
chain: Chain;
|
|
24
22
|
transport: AlchemyTransport;
|
|
25
23
|
policyId?: string;
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
account?: never;
|
|
29
|
-
}
|
|
30
|
-
: {
|
|
31
|
-
account: Address;
|
|
32
|
-
});
|
|
24
|
+
account?: TAccount | Address | undefined;
|
|
25
|
+
};
|
|
33
26
|
|
|
34
27
|
export type InnerWalletApiClientBase<
|
|
35
|
-
TAccount extends JsonRpcAccount<Address> | undefined =
|
|
36
|
-
| JsonRpcAccount<Address>
|
|
37
|
-
| undefined,
|
|
38
28
|
TExtend extends { [key: string]: unknown } | undefined =
|
|
39
29
|
| { [key: string]: unknown }
|
|
40
30
|
| undefined,
|
|
41
31
|
> = Client<
|
|
42
32
|
Transport,
|
|
43
33
|
Chain,
|
|
44
|
-
|
|
34
|
+
JsonRpcAccount<Address> | undefined,
|
|
45
35
|
WalletServerViemRpcSchema,
|
|
46
36
|
{ policyId?: string } & TExtend
|
|
47
37
|
>;
|
|
@@ -53,8 +43,24 @@ export type InnerClientActions = {
|
|
|
53
43
|
) => Promise<GrantPermissionsResult>;
|
|
54
44
|
};
|
|
55
45
|
|
|
56
|
-
export type
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
46
|
+
export type CachedAccount = {
|
|
47
|
+
account: SmartContractAccount;
|
|
48
|
+
requestParams: RequestAccountParams;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
export type InternalState = {
|
|
52
|
+
setAccount: (account: CachedAccount) => void;
|
|
53
|
+
getAccount: () => CachedAccount | undefined;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
export type InnerWalletApiClient = InnerWalletApiClientBase<
|
|
57
|
+
InnerClientActions & { internal: InternalState }
|
|
58
|
+
>;
|
|
59
|
+
|
|
60
|
+
export type WithoutChainId<T> = T extends { chainId: Hex }
|
|
61
|
+
? Omit<T, "chainId">
|
|
62
|
+
: T;
|
|
63
|
+
|
|
64
|
+
export type WithoutRawPayload<T> = T extends { rawPayload: Hex }
|
|
65
|
+
? Omit<T, "rawPayload">
|
|
66
|
+
: T;
|
package/src/utils.ts
CHANGED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
export declare const Capabilities: import("@sinclair/typebox").TObject<{
|
|
2
|
-
permissions: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
3
|
-
context: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
4
|
-
}>>;
|
|
5
|
-
paymasterService: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
6
|
-
policyId: import("@sinclair/typebox").TString;
|
|
7
|
-
}>>;
|
|
8
|
-
gasParamsOverride: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TObject<{
|
|
9
|
-
preVerificationGas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
10
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
11
|
-
}>]>>;
|
|
12
|
-
verificationGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
13
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
14
|
-
}>]>>;
|
|
15
|
-
callGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
16
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
17
|
-
}>]>>;
|
|
18
|
-
paymasterVerificationGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
19
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
20
|
-
}>]>>;
|
|
21
|
-
paymasterPostOpGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
22
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
23
|
-
}>]>>;
|
|
24
|
-
maxFeePerGas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
25
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
26
|
-
}>]>>;
|
|
27
|
-
maxPriorityFeePerGas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
28
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
29
|
-
}>]>>;
|
|
30
|
-
}>>;
|
|
31
|
-
}>;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
import { Type } from "@sinclair/typebox";
|
|
2
|
-
import { GasParamsOverrideCapability } from "./overrides.js";
|
|
3
|
-
import { PaymasterCapability } from "./paymaster.js";
|
|
4
|
-
import { PermissionsCapability } from "./permissions/index.js";
|
|
5
|
-
export const Capabilities = Type.Object({
|
|
6
|
-
permissions: Type.Optional(PermissionsCapability),
|
|
7
|
-
paymasterService: Type.Optional(PaymasterCapability),
|
|
8
|
-
gasParamsOverride: Type.Optional(GasParamsOverrideCapability),
|
|
9
|
-
}, { minProperties: 1 });
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/capabilities/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,CAAC,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CACrC;IACE,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;IACjD,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IACpD,iBAAiB,EAAE,IAAI,CAAC,QAAQ,CAAC,2BAA2B,CAAC;CAC9D,EACD,EAAE,aAAa,EAAE,CAAC,EAAE,CACrB,CAAC","sourcesContent":["import { Type } from \"@sinclair/typebox\";\nimport { GasParamsOverrideCapability } from \"./overrides.js\";\nimport { PaymasterCapability } from \"./paymaster.js\";\nimport { PermissionsCapability } from \"./permissions/index.js\";\n\nexport const Capabilities = Type.Object(\n {\n permissions: Type.Optional(PermissionsCapability),\n paymasterService: Type.Optional(PaymasterCapability),\n gasParamsOverride: Type.Optional(GasParamsOverrideCapability),\n },\n { minProperties: 1 },\n);\n"]}
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
export declare const Mutliplier: import("@sinclair/typebox").TObject<{
|
|
2
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
3
|
-
}>;
|
|
4
|
-
export declare const GasParamsOverrideCapability: import("@sinclair/typebox").TObject<{
|
|
5
|
-
preVerificationGas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
6
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
7
|
-
}>]>>;
|
|
8
|
-
verificationGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
9
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
10
|
-
}>]>>;
|
|
11
|
-
callGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
12
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
13
|
-
}>]>>;
|
|
14
|
-
paymasterVerificationGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
15
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
16
|
-
}>]>>;
|
|
17
|
-
paymasterPostOpGasLimit: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
18
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
19
|
-
}>]>>;
|
|
20
|
-
maxFeePerGas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
21
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
22
|
-
}>]>>;
|
|
23
|
-
maxPriorityFeePerGas: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TUnion<[import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">, import("@sinclair/typebox").TObject<{
|
|
24
|
-
multiplier: import("@sinclair/typebox").TNumber;
|
|
25
|
-
}>]>>;
|
|
26
|
-
}>;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Type } from "@sinclair/typebox";
|
|
2
|
-
import { TypeHex } from "../schemas.js";
|
|
3
|
-
export const Mutliplier = Type.Object({ multiplier: Type.Number() });
|
|
4
|
-
// This is still being defined in https://github.com/ethereum/ERCs/pull/947/files#diff-dab085f963ca621595044bcbc0922705aa38b69f5bf8770dcb3d0496a633efcfR158
|
|
5
|
-
export const GasParamsOverrideCapability = Type.Object({
|
|
6
|
-
preVerificationGas: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
|
|
7
|
-
verificationGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
|
|
8
|
-
callGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
|
|
9
|
-
paymasterVerificationGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
|
|
10
|
-
paymasterPostOpGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
|
|
11
|
-
maxFeePerGas: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
|
|
12
|
-
maxPriorityFeePerGas: Type.Optional(Type.Union([TypeHex(), Mutliplier])),
|
|
13
|
-
}, { minProperties: 1 });
|
|
14
|
-
//# sourceMappingURL=overrides.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"overrides.js","sourceRoot":"","sources":["../../../src/capabilities/overrides.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAErE,2JAA2J;AAC3J,MAAM,CAAC,MAAM,2BAA2B,GAAG,IAAI,CAAC,MAAM,CACpD;IACE,kBAAkB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IACtE,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IACxE,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IAChE,6BAA6B,EAAE,IAAI,CAAC,QAAQ,CAC1C,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CACpC;IACD,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IAC3E,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;IAChE,oBAAoB,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC,CAAC;CACzE,EACD,EAAE,aAAa,EAAE,CAAC,EAAE,CACrB,CAAC","sourcesContent":["import { Type } from \"@sinclair/typebox\";\nimport { TypeHex } from \"../schemas.js\";\n\nexport const Mutliplier = Type.Object({ multiplier: Type.Number() });\n\n// This is still being defined in https://github.com/ethereum/ERCs/pull/947/files#diff-dab085f963ca621595044bcbc0922705aa38b69f5bf8770dcb3d0496a633efcfR158\nexport const GasParamsOverrideCapability = Type.Object(\n {\n preVerificationGas: Type.Optional(Type.Union([TypeHex(), Mutliplier])),\n verificationGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),\n callGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),\n paymasterVerificationGasLimit: Type.Optional(\n Type.Union([TypeHex(), Mutliplier]),\n ),\n paymasterPostOpGasLimit: Type.Optional(Type.Union([TypeHex(), Mutliplier])),\n maxFeePerGas: Type.Optional(Type.Union([TypeHex(), Mutliplier])),\n maxPriorityFeePerGas: Type.Optional(Type.Union([TypeHex(), Mutliplier])),\n },\n { minProperties: 1 },\n);\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"paymaster.js","sourceRoot":"","sources":["../../../src/capabilities/paymaster.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAEzC,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7C,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE;CACxB,CAAC,CAAC","sourcesContent":["import { Type } from \"@sinclair/typebox\";\n\nexport const PaymasterCapability = Type.Object({\n policyId: Type.String(),\n});\n"]}
|
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
import { type TLiteral, type TObject } from "@sinclair/typebox";
|
|
2
|
-
export declare const TypePermission: import("@sinclair/typebox").TUnion<[TObject<{
|
|
3
|
-
type: TLiteral<"native-token-transfer">;
|
|
4
|
-
data: TObject<{
|
|
5
|
-
allowance: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
6
|
-
}>;
|
|
7
|
-
}>, TObject<{
|
|
8
|
-
type: TLiteral<"erc20-token-transfer">;
|
|
9
|
-
data: TObject<{
|
|
10
|
-
allowance: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
11
|
-
address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
12
|
-
}>;
|
|
13
|
-
}>, TObject<{
|
|
14
|
-
type: TLiteral<"gas-limit">;
|
|
15
|
-
data: TObject<{
|
|
16
|
-
limit: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
17
|
-
}>;
|
|
18
|
-
}>, TObject<{
|
|
19
|
-
type: TLiteral<"contract-access">;
|
|
20
|
-
data: TObject<{
|
|
21
|
-
address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
22
|
-
}>;
|
|
23
|
-
}>, TObject<{
|
|
24
|
-
type: TLiteral<"account-functions">;
|
|
25
|
-
data: TObject<{
|
|
26
|
-
functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
|
|
27
|
-
}>;
|
|
28
|
-
}>, TObject<{
|
|
29
|
-
type: TLiteral<"functions-on-all-contracts">;
|
|
30
|
-
data: TObject<{
|
|
31
|
-
functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
|
|
32
|
-
}>;
|
|
33
|
-
}>, TObject<{
|
|
34
|
-
type: TLiteral<"functions-on-contract">;
|
|
35
|
-
data: TObject<{
|
|
36
|
-
address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
37
|
-
functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
|
|
38
|
-
}>;
|
|
39
|
-
}>, TObject<{
|
|
40
|
-
type: TLiteral<"root">;
|
|
41
|
-
data: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNever>;
|
|
42
|
-
}>]>;
|
|
43
|
-
export declare const PermissionsArray: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[TObject<{
|
|
44
|
-
type: TLiteral<"native-token-transfer">;
|
|
45
|
-
data: TObject<{
|
|
46
|
-
allowance: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
47
|
-
}>;
|
|
48
|
-
}>, TObject<{
|
|
49
|
-
type: TLiteral<"erc20-token-transfer">;
|
|
50
|
-
data: TObject<{
|
|
51
|
-
allowance: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
52
|
-
address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
53
|
-
}>;
|
|
54
|
-
}>, TObject<{
|
|
55
|
-
type: TLiteral<"gas-limit">;
|
|
56
|
-
data: TObject<{
|
|
57
|
-
limit: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
58
|
-
}>;
|
|
59
|
-
}>, TObject<{
|
|
60
|
-
type: TLiteral<"contract-access">;
|
|
61
|
-
data: TObject<{
|
|
62
|
-
address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
63
|
-
}>;
|
|
64
|
-
}>, TObject<{
|
|
65
|
-
type: TLiteral<"account-functions">;
|
|
66
|
-
data: TObject<{
|
|
67
|
-
functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
|
|
68
|
-
}>;
|
|
69
|
-
}>, TObject<{
|
|
70
|
-
type: TLiteral<"functions-on-all-contracts">;
|
|
71
|
-
data: TObject<{
|
|
72
|
-
functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
|
|
73
|
-
}>;
|
|
74
|
-
}>, TObject<{
|
|
75
|
-
type: TLiteral<"functions-on-contract">;
|
|
76
|
-
data: TObject<{
|
|
77
|
-
address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
78
|
-
functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
|
|
79
|
-
}>;
|
|
80
|
-
}>, TObject<{
|
|
81
|
-
type: TLiteral<"root">;
|
|
82
|
-
data: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNever>;
|
|
83
|
-
}>]>>;
|
|
84
|
-
export declare const PermissionsContext: TObject<{
|
|
85
|
-
context: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
86
|
-
}>;
|
|
87
|
-
export declare const PermissionsData: TObject<{
|
|
88
|
-
chainId: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
89
|
-
expiry: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
|
|
90
|
-
key: TObject<{
|
|
91
|
-
type: import("@sinclair/typebox").TUnion<[TLiteral<"secp256k1">, TLiteral<"contract">]>;
|
|
92
|
-
publicKey: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
93
|
-
}>;
|
|
94
|
-
permissions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TUnion<[TObject<{
|
|
95
|
-
type: TLiteral<"native-token-transfer">;
|
|
96
|
-
data: TObject<{
|
|
97
|
-
allowance: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
98
|
-
}>;
|
|
99
|
-
}>, TObject<{
|
|
100
|
-
type: TLiteral<"erc20-token-transfer">;
|
|
101
|
-
data: TObject<{
|
|
102
|
-
allowance: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
103
|
-
address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
104
|
-
}>;
|
|
105
|
-
}>, TObject<{
|
|
106
|
-
type: TLiteral<"gas-limit">;
|
|
107
|
-
data: TObject<{
|
|
108
|
-
limit: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
109
|
-
}>;
|
|
110
|
-
}>, TObject<{
|
|
111
|
-
type: TLiteral<"contract-access">;
|
|
112
|
-
data: TObject<{
|
|
113
|
-
address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
114
|
-
}>;
|
|
115
|
-
}>, TObject<{
|
|
116
|
-
type: TLiteral<"account-functions">;
|
|
117
|
-
data: TObject<{
|
|
118
|
-
functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
|
|
119
|
-
}>;
|
|
120
|
-
}>, TObject<{
|
|
121
|
-
type: TLiteral<"functions-on-all-contracts">;
|
|
122
|
-
data: TObject<{
|
|
123
|
-
functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
|
|
124
|
-
}>;
|
|
125
|
-
}>, TObject<{
|
|
126
|
-
type: TLiteral<"functions-on-contract">;
|
|
127
|
-
data: TObject<{
|
|
128
|
-
address: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
129
|
-
functions: import("@sinclair/typebox").TArray<import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">>;
|
|
130
|
-
}>;
|
|
131
|
-
}>, TObject<{
|
|
132
|
-
type: TLiteral<"root">;
|
|
133
|
-
data: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNever>;
|
|
134
|
-
}>]>>;
|
|
135
|
-
}>;
|
|
136
|
-
export declare const PermissionsCapability: TObject<{
|
|
137
|
-
context: import("@sinclair/typebox").TTemplateLiteralSyntax<"0x${string}">;
|
|
138
|
-
}>;
|
|
@@ -1,71 +0,0 @@
|
|
|
1
|
-
import { PermissionType } from "@account-kit/smart-contracts/experimental";
|
|
2
|
-
import { Type, } from "@sinclair/typebox";
|
|
3
|
-
import { KeySigner, TypeAddress, TypeHex } from "../../schemas.js";
|
|
4
|
-
const Permission = (typeString, // e.g., "root"
|
|
5
|
-
typeEnum, // e.g., PermissionType.ROOT
|
|
6
|
-
data, description) => {
|
|
7
|
-
return Type.Transform(Type.Object({
|
|
8
|
-
type: Type.Literal(typeEnum),
|
|
9
|
-
data,
|
|
10
|
-
}, { description }))
|
|
11
|
-
.Decode((value) => ({
|
|
12
|
-
...value,
|
|
13
|
-
type: typeString, // enum → string
|
|
14
|
-
}))
|
|
15
|
-
.Encode((value) => ({
|
|
16
|
-
...value,
|
|
17
|
-
type: typeEnum, // string → enum
|
|
18
|
-
}));
|
|
19
|
-
};
|
|
20
|
-
const NativeTokenTransfer = Permission("native-token-transfer", PermissionType.NATIVE_TOKEN_TRANSFER, Type.Object({
|
|
21
|
-
allowance: TypeHex(),
|
|
22
|
-
}), "allows transfer of native tokens from the account");
|
|
23
|
-
const Erc20TokenTransfer = Permission("erc20-token-transfer", PermissionType.ERC20_TOKEN_TRANSFER, Type.Object({
|
|
24
|
-
allowance: TypeHex(),
|
|
25
|
-
address: TypeAddress,
|
|
26
|
-
}), "allows transfer or approval of erc20 tokens from the account");
|
|
27
|
-
const GasLimit = Permission("gas-limit", PermissionType.GAS_LIMIT, Type.Object({
|
|
28
|
-
limit: TypeHex(),
|
|
29
|
-
}), "allows the key to spend gas for UOs");
|
|
30
|
-
const ContractAccess = Permission("contract-access", PermissionType.CONTRACT_ACCESS, Type.Object({
|
|
31
|
-
address: TypeAddress,
|
|
32
|
-
}), "grants access to all functions in a contract");
|
|
33
|
-
const AccountFunction = Permission("account-functions", PermissionType.ACCOUNT_FUNCTIONS, Type.Object({
|
|
34
|
-
functions: Type.Array(TypeHex(), { minItems: 1 }),
|
|
35
|
-
}), "grants access to functions in the account");
|
|
36
|
-
const AllExternalFunctionAccess = Permission("functions-on-all-contracts", PermissionType.FUNCTIONS_ON_ALL_CONTRACTS, Type.Object({
|
|
37
|
-
functions: Type.Array(TypeHex(), { minItems: 1 }),
|
|
38
|
-
}), "access to a function selector in any address or contract");
|
|
39
|
-
const ContractFunctionAccess = Permission("functions-on-contract", PermissionType.FUNCTIONS_ON_CONTRACT, Type.Object({
|
|
40
|
-
address: TypeAddress,
|
|
41
|
-
functions: Type.Array(TypeHex(), { minItems: 1 }),
|
|
42
|
-
}), "grants access to specified functions on a specific contract");
|
|
43
|
-
const Root = Permission("root", PermissionType.ROOT, Type.Optional(Type.Never()), "grants full access to everything");
|
|
44
|
-
export const TypePermission = Type.Union([
|
|
45
|
-
// 7715 permissions
|
|
46
|
-
NativeTokenTransfer,
|
|
47
|
-
Erc20TokenTransfer,
|
|
48
|
-
GasLimit,
|
|
49
|
-
// additional permissions
|
|
50
|
-
ContractAccess,
|
|
51
|
-
AccountFunction,
|
|
52
|
-
AllExternalFunctionAccess,
|
|
53
|
-
ContractFunctionAccess,
|
|
54
|
-
Root,
|
|
55
|
-
]);
|
|
56
|
-
export const PermissionsArray = Type.Array(TypePermission, { minItems: 1 });
|
|
57
|
-
export const PermissionsContext = Type.Object({
|
|
58
|
-
context: TypeHex(),
|
|
59
|
-
});
|
|
60
|
-
export const PermissionsData = Type.Object({
|
|
61
|
-
chainId: TypeHex(),
|
|
62
|
-
expiry: Type.Optional(Type.Number()),
|
|
63
|
-
key: KeySigner,
|
|
64
|
-
permissions: PermissionsArray,
|
|
65
|
-
});
|
|
66
|
-
export const PermissionsCapability = Type.Union([
|
|
67
|
-
PermissionsContext,
|
|
68
|
-
// TODO: support permissions object here instead of only context-encoded permissions
|
|
69
|
-
// PermissionsData,
|
|
70
|
-
]);
|
|
71
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/capabilities/permissions/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { PermissionType } from \"@account-kit/smart-contracts/experimental\";\nimport {\n Type,\n type TLiteral,\n type TLiteralValue,\n type TObject,\n type TSchema,\n} from \"@sinclair/typebox\";\nimport { KeySigner, TypeAddress, TypeHex } from \"../../schemas.js\";\n\nconst Permission = <\n TData extends TSchema,\n TLiteralVal extends TLiteralValue,\n TType extends TLiteral<TLiteralVal>,\n>(\n typeString: TLiteralVal, // e.g., \"root\"\n typeEnum: TLiteralVal, // e.g., PermissionType.ROOT\n data: TData,\n description: string,\n): TObject<{ type: TType; data: TData }> => {\n return Type.Transform(\n Type.Object(\n {\n type: Type.Literal(typeEnum),\n data,\n },\n { description },\n ),\n )\n .Decode((value) => ({\n ...value,\n type: typeString, // enum → string\n }))\n .Encode((value) => ({\n ...value,\n type: typeEnum, // string → enum\n })) as never;\n};\n\nconst NativeTokenTransfer = Permission(\n \"native-token-transfer\",\n PermissionType.NATIVE_TOKEN_TRANSFER,\n Type.Object({\n allowance: TypeHex(),\n }),\n \"allows transfer of native tokens from the account\",\n);\n\nconst Erc20TokenTransfer = Permission(\n \"erc20-token-transfer\",\n PermissionType.ERC20_TOKEN_TRANSFER,\n Type.Object({\n allowance: TypeHex(),\n address: TypeAddress,\n }),\n \"allows transfer or approval of erc20 tokens from the account\",\n);\n\nconst GasLimit = Permission(\n \"gas-limit\",\n PermissionType.GAS_LIMIT,\n Type.Object({\n limit: TypeHex(),\n }),\n \"allows the key to spend gas for UOs\",\n);\n\nconst ContractAccess = Permission(\n \"contract-access\",\n PermissionType.CONTRACT_ACCESS,\n Type.Object({\n address: TypeAddress,\n }),\n \"grants access to all functions in a contract\",\n);\n\nconst AccountFunction = Permission(\n \"account-functions\",\n PermissionType.ACCOUNT_FUNCTIONS,\n Type.Object({\n functions: Type.Array(TypeHex(), { minItems: 1 }),\n }),\n \"grants access to functions in the account\",\n);\n\nconst AllExternalFunctionAccess = Permission(\n \"functions-on-all-contracts\",\n PermissionType.FUNCTIONS_ON_ALL_CONTRACTS,\n Type.Object({\n functions: Type.Array(TypeHex(), { minItems: 1 }),\n }),\n \"access to a function selector in any address or contract\",\n);\n\nconst ContractFunctionAccess = Permission(\n \"functions-on-contract\",\n PermissionType.FUNCTIONS_ON_CONTRACT,\n Type.Object({\n address: TypeAddress,\n functions: Type.Array(TypeHex(), { minItems: 1 }),\n }),\n \"grants access to specified functions on a specific contract\",\n);\n\nconst Root = Permission(\n \"root\",\n PermissionType.ROOT,\n Type.Optional(Type.Never()),\n \"grants full access to everything\",\n);\n\nexport const TypePermission = Type.Union([\n // 7715 permissions\n NativeTokenTransfer,\n Erc20TokenTransfer,\n GasLimit,\n // additional permissions\n ContractAccess,\n AccountFunction,\n AllExternalFunctionAccess,\n ContractFunctionAccess,\n Root,\n]);\n\nexport const PermissionsArray = Type.Array(TypePermission, { minItems: 1 });\n\nexport const PermissionsContext = Type.Object({\n context: TypeHex(),\n});\n\nexport const PermissionsData = Type.Object({\n chainId: TypeHex(),\n expiry: Type.Optional(Type.Number()),\n key: KeySigner,\n permissions: PermissionsArray,\n});\n\nexport const PermissionsCapability = Type.Union([\n PermissionsContext,\n // TODO: support permissions object here instead of only context-encoded permissions\n // PermissionsData,\n]);\n"]}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import type { Static } from "@sinclair/typebox";
|
|
2
|
-
import { type Hex } from "viem";
|
|
3
|
-
import type { PermissionsData } from ".";
|
|
4
|
-
import type { KeySigner } from "../../schemas";
|
|
5
|
-
export declare const SESSION_ID_LENGTH_BYTES = 16;
|
|
6
|
-
export declare const ENTITY_ID_LENGTH_BYTES = 4;
|
|
7
|
-
export declare const PermissionsContextVersion: {
|
|
8
|
-
readonly REMOTE_MODE_DEFERRED_ACTION: "0x00";
|
|
9
|
-
readonly LOCAL_MODE_DEFERRED_ACTION: "0x01";
|
|
10
|
-
readonly NON_DEFERRED_ACTION: "0x02";
|
|
11
|
-
};
|
|
12
|
-
type DecodedPermissionsContext = {
|
|
13
|
-
contextVersion: keyof typeof PermissionsContextVersion;
|
|
14
|
-
} & ({
|
|
15
|
-
contextVersion: "REMOTE_MODE_DEFERRED_ACTION";
|
|
16
|
-
sessionId: Hex;
|
|
17
|
-
signature: Hex;
|
|
18
|
-
deferredAction?: never;
|
|
19
|
-
} | {
|
|
20
|
-
contextVersion: "LOCAL_MODE_DEFERRED_ACTION";
|
|
21
|
-
deferredAction: Hex;
|
|
22
|
-
sessionId?: never;
|
|
23
|
-
signature?: never;
|
|
24
|
-
} | {
|
|
25
|
-
contextVersion: "NON_DEFERRED_ACTION";
|
|
26
|
-
deferredAction?: never;
|
|
27
|
-
sessionId?: never;
|
|
28
|
-
signature?: never;
|
|
29
|
-
entityId: Hex;
|
|
30
|
-
isGlobalValidation: boolean;
|
|
31
|
-
});
|
|
32
|
-
export declare const encodePermissionsContext: (context: DecodedPermissionsContext) => Hex;
|
|
33
|
-
export declare const decodePermissionsContext: (input: Hex) => DecodedPermissionsContext;
|
|
34
|
-
export declare const prefixSignatureKeyType: (sig: Hex, type: KeySigner["type"]) => Hex;
|
|
35
|
-
export declare const isGlobalValidation: (data: Pick<Static<typeof PermissionsData>, "permissions">) => boolean;
|
|
36
|
-
export {};
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import { PermissionType } from "@account-kit/smart-contracts/experimental";
|
|
2
|
-
import { concatHex, sliceHex } from "viem";
|
|
3
|
-
import { assertNever } from "../../utils.js";
|
|
4
|
-
export const SESSION_ID_LENGTH_BYTES = 16;
|
|
5
|
-
export const ENTITY_ID_LENGTH_BYTES = 4;
|
|
6
|
-
export const PermissionsContextVersion = {
|
|
7
|
-
REMOTE_MODE_DEFERRED_ACTION: "0x00",
|
|
8
|
-
LOCAL_MODE_DEFERRED_ACTION: "0x01",
|
|
9
|
-
NON_DEFERRED_ACTION: "0x02",
|
|
10
|
-
};
|
|
11
|
-
export const encodePermissionsContext = (context) => {
|
|
12
|
-
switch (context.contextVersion) {
|
|
13
|
-
case "REMOTE_MODE_DEFERRED_ACTION":
|
|
14
|
-
return concatHex([
|
|
15
|
-
PermissionsContextVersion.REMOTE_MODE_DEFERRED_ACTION,
|
|
16
|
-
context.sessionId,
|
|
17
|
-
context.signature,
|
|
18
|
-
]);
|
|
19
|
-
case "LOCAL_MODE_DEFERRED_ACTION":
|
|
20
|
-
return concatHex([
|
|
21
|
-
PermissionsContextVersion.LOCAL_MODE_DEFERRED_ACTION,
|
|
22
|
-
context.deferredAction,
|
|
23
|
-
]);
|
|
24
|
-
case "NON_DEFERRED_ACTION":
|
|
25
|
-
return concatHex([
|
|
26
|
-
PermissionsContextVersion.NON_DEFERRED_ACTION,
|
|
27
|
-
context.isGlobalValidation ? "0x01" : "0x00",
|
|
28
|
-
context.entityId,
|
|
29
|
-
]);
|
|
30
|
-
default:
|
|
31
|
-
return assertNever(context, "Unexpected context version");
|
|
32
|
-
}
|
|
33
|
-
};
|
|
34
|
-
export const decodePermissionsContext = (input) => {
|
|
35
|
-
const contextVersion = sliceHex(input, 0, 1);
|
|
36
|
-
switch (contextVersion) {
|
|
37
|
-
case "0x00": {
|
|
38
|
-
const sessionId = sliceHex(input, 1, SESSION_ID_LENGTH_BYTES + 1);
|
|
39
|
-
const signature = sliceHex(input, SESSION_ID_LENGTH_BYTES + 1);
|
|
40
|
-
return {
|
|
41
|
-
contextVersion: "REMOTE_MODE_DEFERRED_ACTION",
|
|
42
|
-
sessionId,
|
|
43
|
-
signature,
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
case "0x01": {
|
|
47
|
-
const deferredAction = sliceHex(input, 1);
|
|
48
|
-
return {
|
|
49
|
-
contextVersion: "LOCAL_MODE_DEFERRED_ACTION",
|
|
50
|
-
deferredAction,
|
|
51
|
-
};
|
|
52
|
-
}
|
|
53
|
-
case "0x02": {
|
|
54
|
-
const isGlobalValidation = sliceHex(input, 1, 2) === "0x01";
|
|
55
|
-
const entityId = sliceHex(input, 2, ENTITY_ID_LENGTH_BYTES + 2);
|
|
56
|
-
return {
|
|
57
|
-
contextVersion: "NON_DEFERRED_ACTION",
|
|
58
|
-
isGlobalValidation,
|
|
59
|
-
entityId,
|
|
60
|
-
};
|
|
61
|
-
}
|
|
62
|
-
default:
|
|
63
|
-
return assertNever(contextVersion, `Unexpected context version: ${contextVersion}`);
|
|
64
|
-
}
|
|
65
|
-
};
|
|
66
|
-
export const prefixSignatureKeyType = (sig, type) => {
|
|
67
|
-
switch (type) {
|
|
68
|
-
case "secp256k1":
|
|
69
|
-
return concatHex(["0x00", sig]);
|
|
70
|
-
case "contract":
|
|
71
|
-
return concatHex(["0x01", sig]);
|
|
72
|
-
default:
|
|
73
|
-
return assertNever(type, "Unexpected session key type");
|
|
74
|
-
}
|
|
75
|
-
};
|
|
76
|
-
export const isGlobalValidation = (data) => {
|
|
77
|
-
return data.permissions.some((p) => p.type === PermissionType.ROOT);
|
|
78
|
-
};
|
|
79
|
-
//# sourceMappingURL=mav2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mav2.js","sourceRoot":"","sources":["../../../../src/capabilities/permissions/mav2.ts"],"names":[],"mappings":"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","sourcesContent":["import { PermissionType } from \"@account-kit/smart-contracts/experimental\";\nimport type { Static } from \"@sinclair/typebox\";\nimport { concatHex, sliceHex, type Hex } from \"viem\";\nimport type { PermissionsData } from \".\";\nimport type { KeySigner } from \"../../schemas\";\nimport { assertNever } from \"../../utils.js\";\n\nexport const SESSION_ID_LENGTH_BYTES = 16;\nexport const ENTITY_ID_LENGTH_BYTES = 4;\n\nexport const PermissionsContextVersion = {\n REMOTE_MODE_DEFERRED_ACTION: \"0x00\",\n LOCAL_MODE_DEFERRED_ACTION: \"0x01\",\n NON_DEFERRED_ACTION: \"0x02\",\n} as const;\n\ntype ContextVersionHex =\n (typeof PermissionsContextVersion)[keyof typeof PermissionsContextVersion];\n\ntype DecodedPermissionsContext = {\n contextVersion: keyof typeof PermissionsContextVersion;\n} & (\n | {\n contextVersion: \"REMOTE_MODE_DEFERRED_ACTION\";\n sessionId: Hex;\n signature: Hex;\n deferredAction?: never;\n }\n | {\n contextVersion: \"LOCAL_MODE_DEFERRED_ACTION\";\n deferredAction: Hex;\n sessionId?: never;\n signature?: never;\n }\n | {\n contextVersion: \"NON_DEFERRED_ACTION\";\n deferredAction?: never;\n sessionId?: never;\n signature?: never;\n entityId: Hex;\n isGlobalValidation: boolean;\n }\n);\n\nexport const encodePermissionsContext = (\n context: DecodedPermissionsContext,\n): Hex => {\n switch (context.contextVersion) {\n case \"REMOTE_MODE_DEFERRED_ACTION\":\n return concatHex([\n PermissionsContextVersion.REMOTE_MODE_DEFERRED_ACTION,\n context.sessionId,\n context.signature,\n ]);\n case \"LOCAL_MODE_DEFERRED_ACTION\":\n return concatHex([\n PermissionsContextVersion.LOCAL_MODE_DEFERRED_ACTION,\n context.deferredAction,\n ]);\n case \"NON_DEFERRED_ACTION\":\n return concatHex([\n PermissionsContextVersion.NON_DEFERRED_ACTION,\n context.isGlobalValidation ? \"0x01\" : \"0x00\",\n context.entityId,\n ]);\n default:\n return assertNever(context, \"Unexpected context version\");\n }\n};\n\nexport const decodePermissionsContext = (\n input: Hex,\n): DecodedPermissionsContext => {\n const contextVersion = sliceHex(input, 0, 1) as ContextVersionHex;\n switch (contextVersion) {\n case \"0x00\": {\n const sessionId = sliceHex(input, 1, SESSION_ID_LENGTH_BYTES + 1);\n const signature = sliceHex(input, SESSION_ID_LENGTH_BYTES + 1);\n return {\n contextVersion: \"REMOTE_MODE_DEFERRED_ACTION\",\n sessionId,\n signature,\n };\n }\n case \"0x01\": {\n const deferredAction = sliceHex(input, 1);\n return {\n contextVersion: \"LOCAL_MODE_DEFERRED_ACTION\",\n deferredAction,\n };\n }\n case \"0x02\": {\n const isGlobalValidation = sliceHex(input, 1, 2) === \"0x01\";\n const entityId = sliceHex(input, 2, ENTITY_ID_LENGTH_BYTES + 2);\n return {\n contextVersion: \"NON_DEFERRED_ACTION\",\n isGlobalValidation,\n entityId,\n };\n }\n default:\n return assertNever(\n contextVersion,\n `Unexpected context version: ${contextVersion}`,\n );\n }\n};\n\nexport const prefixSignatureKeyType = (\n sig: Hex,\n type: KeySigner[\"type\"],\n): Hex => {\n switch (type) {\n case \"secp256k1\":\n return concatHex([\"0x00\", sig]);\n case \"contract\":\n return concatHex([\"0x01\", sig]);\n default:\n return assertNever(type, \"Unexpected session key type\");\n }\n};\n\nexport const isGlobalValidation = (\n data: Pick<Static<typeof PermissionsData>, \"permissions\">,\n): boolean => {\n return data.permissions.some((p) => p.type === PermissionType.ROOT);\n};\n"]}
|