@metamask-previews/gator-permissions-controller 5.0.2-preview-4f4c98e → 5.0.2-preview-eb263b0ee
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/CHANGELOG.md +0 -4
- package/dist/GatorPermissionsController-method-action-types.cjs +7 -0
- package/dist/GatorPermissionsController-method-action-types.cjs.map +1 -0
- package/dist/{GatorPermissionsController-method-action-types.d.ts → GatorPermissionsController-method-action-types.d.cts} +2 -2
- package/dist/GatorPermissionsController-method-action-types.d.cts.map +1 -0
- package/dist/GatorPermissionsController-method-action-types.d.mts +118 -0
- package/dist/GatorPermissionsController-method-action-types.d.mts.map +1 -0
- package/dist/{GatorPermissionsController-method-action-types.js → GatorPermissionsController-method-action-types.mjs} +1 -1
- package/dist/GatorPermissionsController-method-action-types.mjs.map +1 -0
- package/dist/GatorPermissionsController.cjs +589 -0
- package/dist/GatorPermissionsController.cjs.map +1 -0
- package/dist/{GatorPermissionsController.d.ts → GatorPermissionsController.d.cts} +12 -12
- package/dist/GatorPermissionsController.d.cts.map +1 -0
- package/dist/GatorPermissionsController.d.mts +219 -0
- package/dist/GatorPermissionsController.d.mts.map +1 -0
- package/dist/{GatorPermissionsController.js → GatorPermissionsController.mjs} +12 -12
- package/dist/GatorPermissionsController.mjs.map +1 -0
- package/dist/constants.cjs +29 -0
- package/dist/constants.cjs.map +1 -0
- package/dist/{constants.d.ts → constants.d.cts} +4 -4
- package/dist/constants.d.cts.map +1 -0
- package/dist/constants.d.mts +26 -0
- package/dist/constants.d.mts.map +1 -0
- package/dist/{constants.js → constants.mjs} +1 -1
- package/dist/constants.mjs.map +1 -0
- package/dist/decodePermission/decodePermission.cjs +110 -0
- package/dist/decodePermission/decodePermission.cjs.map +1 -0
- package/dist/decodePermission/{decodePermission.d.ts → decodePermission.d.cts} +3 -3
- package/dist/decodePermission/decodePermission.d.cts.map +1 -0
- package/dist/decodePermission/decodePermission.d.mts +72 -0
- package/dist/decodePermission/decodePermission.d.mts.map +1 -0
- package/dist/decodePermission/{decodePermission.js → decodePermission.mjs} +3 -3
- package/dist/decodePermission/decodePermission.mjs.map +1 -0
- package/dist/decodePermission/decoders/index.cjs +26 -0
- package/dist/decodePermission/decoders/index.cjs.map +1 -0
- package/dist/decodePermission/decoders/{index.d.ts → index.d.cts} +3 -3
- package/dist/decodePermission/decoders/index.d.cts.map +1 -0
- package/dist/decodePermission/decoders/index.d.mts +20 -0
- package/dist/decodePermission/decoders/index.d.mts.map +1 -0
- package/dist/decodePermission/decoders/{index.js → index.mjs} +3 -3
- package/dist/decodePermission/decoders/index.mjs.map +1 -0
- package/dist/decodePermission/decoders/makePermissionDecoder.cjs +108 -0
- package/dist/decodePermission/decoders/makePermissionDecoder.cjs.map +1 -0
- package/dist/decodePermission/decoders/{makePermissionDecoder.d.ts → makePermissionDecoder.d.cts} +3 -3
- package/dist/decodePermission/decoders/makePermissionDecoder.d.cts.map +1 -0
- package/dist/decodePermission/decoders/makePermissionDecoder.d.mts +46 -0
- package/dist/decodePermission/decoders/makePermissionDecoder.d.mts.map +1 -0
- package/dist/decodePermission/decoders/{makePermissionDecoder.js → makePermissionDecoder.mjs} +4 -4
- package/dist/decodePermission/decoders/makePermissionDecoder.mjs.map +1 -0
- package/dist/decodePermission/enforcerAddresses.cjs +39 -0
- package/dist/decodePermission/enforcerAddresses.cjs.map +1 -0
- package/dist/decodePermission/{enforcerAddresses.d.ts → enforcerAddresses.d.cts} +3 -3
- package/dist/decodePermission/enforcerAddresses.d.cts.map +1 -0
- package/dist/decodePermission/enforcerAddresses.d.mts +13 -0
- package/dist/decodePermission/enforcerAddresses.d.mts.map +1 -0
- package/dist/decodePermission/{enforcerAddresses.js → enforcerAddresses.mjs} +4 -4
- package/dist/decodePermission/enforcerAddresses.mjs.map +1 -0
- package/dist/decodePermission/index.cjs +10 -0
- package/dist/decodePermission/index.cjs.map +1 -0
- package/dist/decodePermission/{index.d.ts → index.d.cts} +4 -4
- package/dist/decodePermission/index.d.cts.map +1 -0
- package/dist/decodePermission/index.d.mts +4 -0
- package/dist/decodePermission/index.d.mts.map +1 -0
- package/dist/decodePermission/index.mjs +3 -0
- package/dist/decodePermission/index.mjs.map +1 -0
- package/dist/decodePermission/types.cjs +3 -0
- package/dist/decodePermission/types.cjs.map +1 -0
- package/dist/decodePermission/{types.d.ts → types.d.cts} +4 -4
- package/dist/decodePermission/types.d.cts.map +1 -0
- package/dist/decodePermission/types.d.mts +64 -0
- package/dist/decodePermission/types.d.mts.map +1 -0
- package/dist/decodePermission/types.mjs +2 -0
- package/dist/decodePermission/types.mjs.map +1 -0
- package/dist/decodePermission/utils.cjs +125 -0
- package/dist/decodePermission/utils.cjs.map +1 -0
- package/dist/decodePermission/{utils.d.ts → utils.d.cts} +3 -3
- package/dist/decodePermission/utils.d.cts.map +1 -0
- package/dist/decodePermission/utils.d.mts +68 -0
- package/dist/decodePermission/utils.d.mts.map +1 -0
- package/dist/decodePermission/{utils.js → utils.mjs} +2 -2
- package/dist/decodePermission/utils.mjs.map +1 -0
- package/dist/errors.cjs +54 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/{errors.d.ts → errors.d.cts} +3 -3
- package/dist/errors.d.cts.map +1 -0
- package/dist/errors.d.mts +39 -0
- package/dist/errors.d.mts.map +1 -0
- package/dist/{errors.js → errors.mjs} +2 -2
- package/dist/errors.mjs.map +1 -0
- package/dist/index.cjs +14 -0
- package/dist/index.cjs.map +1 -0
- package/dist/{index.d.ts → index.d.cts} +10 -10
- package/dist/index.d.cts.map +1 -0
- package/dist/index.d.mts +10 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +3 -0
- package/dist/index.mjs.map +1 -0
- package/dist/logger.cjs +10 -0
- package/dist/logger.cjs.map +1 -0
- package/dist/{logger.d.ts → logger.d.cts} +3 -2
- package/dist/logger.d.cts.map +1 -0
- package/dist/logger.d.mts +7 -0
- package/dist/logger.d.mts.map +1 -0
- package/dist/{logger.js → logger.mjs} +2 -2
- package/dist/logger.mjs.map +1 -0
- package/dist/payeeRule.cjs +3 -0
- package/dist/payeeRule.cjs.map +1 -0
- package/dist/{payeeRule.d.ts → payeeRule.d.cts} +2 -2
- package/dist/payeeRule.d.cts.map +1 -0
- package/dist/payeeRule.d.mts +12 -0
- package/dist/payeeRule.d.mts.map +1 -0
- package/dist/payeeRule.mjs +2 -0
- package/dist/payeeRule.mjs.map +1 -0
- package/dist/permissionOnChainStatus.cjs +140 -0
- package/dist/permissionOnChainStatus.cjs.map +1 -0
- package/dist/{permissionOnChainStatus.d.ts → permissionOnChainStatus.d.cts} +5 -5
- package/dist/permissionOnChainStatus.d.cts.map +1 -0
- package/dist/permissionOnChainStatus.d.mts +73 -0
- package/dist/permissionOnChainStatus.d.mts.map +1 -0
- package/dist/{permissionOnChainStatus.js → permissionOnChainStatus.mjs} +7 -7
- package/dist/permissionOnChainStatus.mjs.map +1 -0
- package/dist/redeemerRule.cjs +3 -0
- package/dist/redeemerRule.cjs.map +1 -0
- package/dist/{redeemerRule.d.ts → redeemerRule.d.cts} +2 -2
- package/dist/redeemerRule.d.cts.map +1 -0
- package/dist/redeemerRule.d.mts +12 -0
- package/dist/redeemerRule.d.mts.map +1 -0
- package/dist/redeemerRule.mjs +2 -0
- package/dist/redeemerRule.mjs.map +1 -0
- package/dist/types.cjs +28 -0
- package/dist/types.cjs.map +1 -0
- package/dist/{types.d.ts → types.d.cts} +4 -4
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +161 -0
- package/dist/types.d.mts.map +1 -0
- package/dist/{types.js → types.mjs} +1 -1
- package/dist/types.mjs.map +1 -0
- package/dist/utils.cjs +41 -0
- package/dist/utils.cjs.map +1 -0
- package/dist/{utils.d.ts → utils.d.cts} +5 -5
- package/dist/utils.d.cts.map +1 -0
- package/dist/utils.d.mts +22 -0
- package/dist/utils.d.mts.map +1 -0
- package/dist/{utils.js → utils.mjs} +4 -4
- package/dist/utils.mjs.map +1 -0
- package/package.json +16 -12
- package/dist/GatorPermissionsController-method-action-types.d.ts.map +0 -1
- package/dist/GatorPermissionsController-method-action-types.js.map +0 -1
- package/dist/GatorPermissionsController.d.ts.map +0 -1
- package/dist/GatorPermissionsController.js.map +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js.map +0 -1
- package/dist/decodePermission/decodePermission.d.ts.map +0 -1
- package/dist/decodePermission/decodePermission.js.map +0 -1
- package/dist/decodePermission/decoders/index.d.ts.map +0 -1
- package/dist/decodePermission/decoders/index.js.map +0 -1
- package/dist/decodePermission/decoders/makePermissionDecoder.d.ts.map +0 -1
- package/dist/decodePermission/decoders/makePermissionDecoder.js.map +0 -1
- package/dist/decodePermission/enforcerAddresses.d.ts.map +0 -1
- package/dist/decodePermission/enforcerAddresses.js.map +0 -1
- package/dist/decodePermission/index.d.ts.map +0 -1
- package/dist/decodePermission/index.js +0 -3
- package/dist/decodePermission/index.js.map +0 -1
- package/dist/decodePermission/types.d.ts.map +0 -1
- package/dist/decodePermission/types.js +0 -2
- package/dist/decodePermission/types.js.map +0 -1
- package/dist/decodePermission/utils.d.ts.map +0 -1
- package/dist/decodePermission/utils.js.map +0 -1
- package/dist/errors.d.ts.map +0 -1
- package/dist/errors.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -3
- package/dist/index.js.map +0 -1
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js.map +0 -1
- package/dist/payeeRule.d.ts.map +0 -1
- package/dist/payeeRule.js +0 -2
- package/dist/payeeRule.js.map +0 -1
- package/dist/permissionOnChainStatus.d.ts.map +0 -1
- package/dist/permissionOnChainStatus.js.map +0 -1
- package/dist/redeemerRule.d.ts.map +0 -1
- package/dist/redeemerRule.js +0 -2
- package/dist/redeemerRule.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/utils.d.ts.map +0 -1
- package/dist/utils.js.map +0 -1
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { encodeSingle, decodeSingle } from
|
|
2
|
-
import { decodeDelegations, hashDelegation } from
|
|
3
|
-
import { bytesToHex, getChecksumAddress, hexToNumber } from
|
|
4
|
-
import { delegationContractsByChainId, toEnforcerAddressesByName
|
|
5
|
-
import { extractExpiryFromCaveatTerms } from
|
|
6
|
-
import { controllerLog } from
|
|
1
|
+
import { encodeSingle, decodeSingle } from "@metamask/abi-utils";
|
|
2
|
+
import { decodeDelegations, hashDelegation } from "@metamask/delegation-core";
|
|
3
|
+
import { bytesToHex, getChecksumAddress, hexToNumber } from "@metamask/utils";
|
|
4
|
+
import { delegationContractsByChainId, toEnforcerAddressesByName } from "./decodePermission/enforcerAddresses.mjs";
|
|
5
|
+
import { extractExpiryFromCaveatTerms } from "./decodePermission/utils.mjs";
|
|
6
|
+
import { controllerLog } from "./logger.mjs";
|
|
7
7
|
/** Function selector for `DelegationManager.disabledDelegations(bytes32)`. */
|
|
8
8
|
const DISABLED_DELEGATIONS_SELECTOR = '0x2d40d052';
|
|
9
9
|
/**
|
|
@@ -128,4 +128,4 @@ export async function resolveGrantedPermissionOnChainStatus(entry, options) {
|
|
|
128
128
|
export async function updateGrantedPermissionsStatus(grantedPermissions, options) {
|
|
129
129
|
return Promise.all(grantedPermissions.map((row) => resolveGrantedPermissionOnChainStatus(row, options)));
|
|
130
130
|
}
|
|
131
|
-
//# sourceMappingURL=permissionOnChainStatus.
|
|
131
|
+
//# sourceMappingURL=permissionOnChainStatus.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissionOnChainStatus.mjs","sourceRoot":"","sources":["../src/permissionOnChainStatus.ts"],"names":[],"mappings":"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","sourcesContent":["import type { EnforcerAddressesByName } from '@metamask/7715-permission-types';\nimport { encodeSingle, decodeSingle } from '@metamask/abi-utils';\nimport { decodeDelegations, hashDelegation } from '@metamask/delegation-core';\nimport type { Delegation } from '@metamask/delegation-core';\nimport { bytesToHex, getChecksumAddress, hexToNumber } from '@metamask/utils';\nimport type { Hex } from '@metamask/utils';\n\nimport {\n delegationContractsByChainId,\n toEnforcerAddressesByName,\n} from './decodePermission/enforcerAddresses.js';\nimport { extractExpiryFromCaveatTerms } from './decodePermission/utils.js';\nimport { controllerLog } from './logger.js';\nimport type {\n PermissionInfoWithMetadata,\n GatorPermissionStatus,\n} from './types.js';\n\n/** Function selector for `DelegationManager.disabledDelegations(bytes32)`. */\nconst DISABLED_DELEGATIONS_SELECTOR = '0x2d40d052';\n\n/**\n * Minimal EIP-1193 provider used for permission status RPCs.\n */\nexport type PermissionStatusEip1193Provider = {\n request(args: { method: string; params?: unknown[] }): Promise<unknown>;\n};\n\n/**\n * Resolves an RPC provider for the given EIP-155 `chainId` (hex).\n */\nexport type GetProviderForChainId = (\n chainId: Hex,\n) => Promise<PermissionStatusEip1193Provider>;\n\nexport type PermissionOnChainStatusOptions = {\n getProviderForChainId: GetProviderForChainId;\n};\n\n/**\n * ABI-encodes a call to `DelegationManager.disabledDelegations(bytes32)`.\n *\n * @param delegationHash - Delegation struct hash (bytes32).\n * @returns Calldata hex string (selector + encoded argument).\n */\nexport function encodeDisabledDelegationsCalldata(delegationHash: Hex): Hex {\n const encodedArgs = bytesToHex(encodeSingle('bytes32', delegationHash));\n return `${DISABLED_DELEGATIONS_SELECTOR}${encodedArgs.slice(2)}`;\n}\n\n/**\n * Reads `disabledDelegations(delegationHash)` from the delegation manager.\n *\n * @param args - Arguments.\n * @param args.provider - JSON-RPC provider for the permission's chain.\n * @param args.delegationManager - DelegationManager contract address.\n * @param args.delegationHash - Hash of the leaf delegation.\n * @returns Whether the delegation is disabled on-chain.\n */\nexport async function readDelegationDisabledOnChain({\n provider,\n delegationManager,\n delegationHash,\n}: {\n provider: PermissionStatusEip1193Provider;\n delegationManager: Hex;\n delegationHash: Hex;\n}): Promise<boolean> {\n const data = encodeDisabledDelegationsCalldata(delegationHash);\n const raw = (await provider.request({\n method: 'eth_call',\n params: [{ to: delegationManager, data }, 'latest'],\n })) as Hex;\n return decodeSingle('bool', raw);\n}\n\n/**\n * Returns the latest block's timestamp in seconds.\n *\n * @param provider - JSON-RPC provider for the chain.\n * @returns Unix timestamp in seconds.\n */\nexport async function readLatestBlockTimestampSeconds(\n provider: PermissionStatusEip1193Provider,\n): Promise<number> {\n const block = (await provider.request({\n method: 'eth_getBlockByNumber',\n params: ['latest', false],\n })) as { timestamp?: Hex };\n if (!block?.timestamp) {\n throw new Error('Latest block missing timestamp');\n }\n return hexToNumber(block.timestamp);\n}\n\n/**\n * Reads TimestampEnforcer expiry (unix seconds) from the leaf delegation's caveats.\n *\n * @param leaf - Leaf delegation (index 0 when decoded from permission context).\n * @param contracts - enforcer addresses for the chain.\n * @returns Expiry timestamp in seconds, or `null` if no valid timestamp caveat.\n */\nexport function getExpiryFromDelegation(\n leaf: Delegation<Hex>,\n contracts: EnforcerAddressesByName,\n): number | null {\n const targetEnforcer = getChecksumAddress(contracts.timestampEnforcer);\n const timestampCaveat = leaf.caveats.find(\n (caveat) => getChecksumAddress(caveat.enforcer) === targetEnforcer,\n );\n if (!timestampCaveat?.terms) {\n return null;\n }\n try {\n return extractExpiryFromCaveatTerms(timestampCaveat.terms);\n } catch {\n return null;\n }\n}\n\n/**\n * Recomputes {@link PermissionStatus} for one granted permission using chain state.\n *\n * @param entry - Granted permission row (including merged `status` from the prior sync).\n * @param options - `getProviderForChainId` and deployment map for the framework version.\n * @returns The same entry with an updated `status`.\n */\nexport async function resolveGrantedPermissionOnChainStatus(\n entry: PermissionInfoWithMetadata,\n options: PermissionOnChainStatusOptions,\n): Promise<PermissionInfoWithMetadata> {\n if (entry.revocationMetadata) {\n return { ...entry, status: 'Revoked' };\n }\n\n const originalStatus: GatorPermissionStatus = entry.status ?? 'Active';\n\n try {\n const delegations = decodeDelegations(entry.permissionResponse.context);\n\n if (delegations.length !== 1) {\n throw new Error(\n 'Unexpected delegations length in decoded permission context',\n );\n }\n const delegation = delegations[0];\n const delegationHash = hashDelegation(delegation);\n\n const provider = await options.getProviderForChainId(\n entry.permissionResponse.chainId,\n );\n\n const isDisabled = await readDelegationDisabledOnChain({\n provider,\n delegationManager: entry.permissionResponse.delegationManager,\n delegationHash,\n });\n\n if (isDisabled) {\n return { ...entry, status: 'Revoked' };\n }\n\n const chainId = hexToNumber(entry.permissionResponse.chainId);\n const deploymentContracts = delegationContractsByChainId[chainId];\n if (!deploymentContracts) {\n return { ...entry, status: originalStatus };\n }\n const contracts = toEnforcerAddressesByName(deploymentContracts);\n const expiry = getExpiryFromDelegation(delegation, contracts);\n if (expiry === null) {\n return { ...entry, status: 'Active' };\n }\n const blockTimestamp = await readLatestBlockTimestampSeconds(provider);\n if (blockTimestamp >= expiry) {\n return { ...entry, status: 'Expired' };\n }\n return { ...entry, status: 'Active' };\n } catch (error) {\n controllerLog('Failed to resolve permission status', error);\n return { ...entry, status: originalStatus };\n }\n}\n\n/**\n * Recomputes status for all granted permissions in parallel.\n *\n * @param grantedPermissions - Rows returned from the permissions provider snap.\n * @param options - Provider factory and deployment map.\n * @returns Same rows with updated `status` fields.\n */\nexport async function updateGrantedPermissionsStatus(\n grantedPermissions: PermissionInfoWithMetadata[],\n options: PermissionOnChainStatusOptions,\n): Promise<PermissionInfoWithMetadata[]> {\n return Promise.all(\n grantedPermissions.map((row) =>\n resolveGrantedPermissionOnChainStatus(row, options),\n ),\n );\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redeemerRule.cjs","sourceRoot":"","sources":["../src/redeemerRule.ts"],"names":[],"mappings":"","sourcesContent":["import type { Hex } from '@metamask/utils';\n\n/**\n * Execution permission rule restricting which addresses may redeem the delegation\n * (on-chain RedeemerEnforcer caveat).\n */\nexport type RedeemerRule = {\n type: 'redeemer';\n data: {\n addresses: Hex[];\n };\n};\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { Hex } from
|
|
1
|
+
import type { Hex } from "@metamask/utils";
|
|
2
2
|
/**
|
|
3
3
|
* Execution permission rule restricting which addresses may redeem the delegation
|
|
4
4
|
* (on-chain RedeemerEnforcer caveat).
|
|
@@ -9,4 +9,4 @@ export type RedeemerRule = {
|
|
|
9
9
|
addresses: Hex[];
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
-
//# sourceMappingURL=redeemerRule.d.
|
|
12
|
+
//# sourceMappingURL=redeemerRule.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redeemerRule.d.cts","sourceRoot":"","sources":["../src/redeemerRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE;QACJ,SAAS,EAAE,GAAG,EAAE,CAAC;KAClB,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Hex } from "@metamask/utils";
|
|
2
|
+
/**
|
|
3
|
+
* Execution permission rule restricting which addresses may redeem the delegation
|
|
4
|
+
* (on-chain RedeemerEnforcer caveat).
|
|
5
|
+
*/
|
|
6
|
+
export type RedeemerRule = {
|
|
7
|
+
type: 'redeemer';
|
|
8
|
+
data: {
|
|
9
|
+
addresses: Hex[];
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=redeemerRule.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redeemerRule.d.mts","sourceRoot":"","sources":["../src/redeemerRule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE;QACJ,SAAS,EAAE,GAAG,EAAE,CAAC;KAClB,CAAC;CACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redeemerRule.mjs","sourceRoot":"","sources":["../src/redeemerRule.ts"],"names":[],"mappings":"","sourcesContent":["import type { Hex } from '@metamask/utils';\n\n/**\n * Execution permission rule restricting which addresses may redeem the delegation\n * (on-chain RedeemerEnforcer caveat).\n */\nexport type RedeemerRule = {\n type: 'redeemer';\n data: {\n addresses: Hex[];\n };\n};\n"]}
|
package/dist/types.cjs
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.GatorPermissionsSnapRpcMethod = exports.GatorPermissionsControllerErrorCode = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Enum for the error codes of the gator permissions controller.
|
|
6
|
+
*/
|
|
7
|
+
var GatorPermissionsControllerErrorCode;
|
|
8
|
+
(function (GatorPermissionsControllerErrorCode) {
|
|
9
|
+
GatorPermissionsControllerErrorCode["GatorPermissionsFetchError"] = "gator-permissions-fetch-error";
|
|
10
|
+
GatorPermissionsControllerErrorCode["GatorPermissionsProviderError"] = "gator-permissions-provider-error";
|
|
11
|
+
GatorPermissionsControllerErrorCode["PermissionDecodingError"] = "permission-decoding-error";
|
|
12
|
+
GatorPermissionsControllerErrorCode["OriginNotAllowedError"] = "origin-not-allowed-error";
|
|
13
|
+
})(GatorPermissionsControllerErrorCode || (exports.GatorPermissionsControllerErrorCode = GatorPermissionsControllerErrorCode = {}));
|
|
14
|
+
/**
|
|
15
|
+
* Enum for the RPC methods of the gator permissions provider snap.
|
|
16
|
+
*/
|
|
17
|
+
var GatorPermissionsSnapRpcMethod;
|
|
18
|
+
(function (GatorPermissionsSnapRpcMethod) {
|
|
19
|
+
/**
|
|
20
|
+
* This method is used by the metamask to request a permissions provider to get granted permissions for all sites.
|
|
21
|
+
*/
|
|
22
|
+
GatorPermissionsSnapRpcMethod["PermissionProviderGetGrantedPermissions"] = "permissionsProvider_getGrantedPermissions";
|
|
23
|
+
/**
|
|
24
|
+
* This method is used by the metamask to submit a revocation to the permissions provider.
|
|
25
|
+
*/
|
|
26
|
+
GatorPermissionsSnapRpcMethod["PermissionProviderSubmitRevocation"] = "permissionsProvider_submitRevocation";
|
|
27
|
+
})(GatorPermissionsSnapRpcMethod || (exports.GatorPermissionsSnapRpcMethod = GatorPermissionsSnapRpcMethod = {}));
|
|
28
|
+
//# sourceMappingURL=types.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.cjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";;;AAIA;;GAEG;AACH,IAAY,mCAKX;AALD,WAAY,mCAAmC;IAC7C,mGAA4D,CAAA;IAC5D,yGAAkE,CAAA;IAClE,4FAAqD,CAAA;IACrD,yFAAkD,CAAA;AACpD,CAAC,EALW,mCAAmC,mDAAnC,mCAAmC,QAK9C;AAED;;GAEG;AACH,IAAY,6BASX;AATD,WAAY,6BAA6B;IACvC;;OAEG;IACH,sHAAqF,CAAA;IACrF;;OAEG;IACH,4GAA2E,CAAA;AAC7E,CAAC,EATW,6BAA6B,6CAA7B,6BAA6B,QASxC","sourcesContent":["import type { PermissionTypes, Rule } from '@metamask/7715-permission-types';\nimport type { Delegation } from '@metamask/delegation-core';\nimport type { Hex } from '@metamask/utils';\n\n/**\n * Enum for the error codes of the gator permissions controller.\n */\nexport enum GatorPermissionsControllerErrorCode {\n GatorPermissionsFetchError = 'gator-permissions-fetch-error',\n GatorPermissionsProviderError = 'gator-permissions-provider-error',\n PermissionDecodingError = 'permission-decoding-error',\n OriginNotAllowedError = 'origin-not-allowed-error',\n}\n\n/**\n * Enum for the RPC methods of the gator permissions provider snap.\n */\nexport enum GatorPermissionsSnapRpcMethod {\n /**\n * This method is used by the metamask to request a permissions provider to get granted permissions for all sites.\n */\n PermissionProviderGetGrantedPermissions = 'permissionsProvider_getGrantedPermissions',\n /**\n * This method is used by the metamask to submit a revocation to the permissions provider.\n */\n PermissionProviderSubmitRevocation = 'permissionsProvider_submitRevocation',\n}\n\n/**\n * Represents an ERC-7715 permission request.\n *\n * @template TPermission - The type of the permission provided.\n */\nexport type PermissionRequest<TPermission extends PermissionTypes> = {\n /**\n * hex-encoding of uint256 defined the chain with EIP-155\n */\n chainId: Hex;\n\n /**\n *\n * The account being targeted for this permission request.\n * It is optional to let the user choose which account to grant permission from.\n */\n from?: Hex;\n\n /**\n * A field that identifies the DApp session account associated with the permission\n */\n to: Hex;\n\n /**\n * Defines the allowed behavior the `to` account can do on behalf of the `from` account.\n */\n permission: TPermission;\n\n rules?: Rule[] | null;\n};\n\n/**\n * Represents an ERC-7715 permission response.\n *\n * @template TPermission - The type of the permission provided.\n */\nexport type PermissionResponse<TPermission extends PermissionTypes> =\n PermissionRequest<TPermission> & {\n /**\n * Is a catch-all to identify a permission for revoking permissions or submitting\n * Defined in ERC-7710.\n */\n context: Hex;\n\n /**\n * The dependencyInfo field is required and contains information needed to deploy accounts.\n * Each entry specifies a factory contract and its associated deployment data.\n * If no account deployment is needed when redeeming the permission, this array must be empty.\n * When non-empty, DApps MUST deploy the accounts by calling the factory contract with factoryData as the calldata.\n * Defined in ERC-4337.\n */\n dependencies: {\n factory: Hex;\n factoryData: Hex;\n }[];\n\n /**\n * Is required as defined in ERC-7710.\n */\n delegationManager: Hex;\n };\n\n/**\n * Represents a gator ERC-7715 permission entry retrieved from gator permissions snap.\n *\n * @template TPermission - The type of the permission provided.\n */\nexport type StoredGatorPermission<\n TPermission extends PermissionTypes = PermissionTypes,\n> = {\n permissionResponse: PermissionResponse<TPermission>;\n siteOrigin: string;\n revocationMetadata?: RevocationMetadata;\n};\n\n/**\n * Permission response with internal fields (dependencies, to) removed.\n * Used when exposing permission data to the client/UI.\n *\n * @template TPermission - The type of the permission provided.\n */\nexport type PermissionInfo<TPermission extends PermissionTypes> = Omit<\n PermissionResponse<TPermission>,\n 'dependencies' | 'to'\n>;\n\n/**\n * Lifecycle status of a granted permission for UI and sync.\n */\nexport type GatorPermissionStatus = 'Active' | 'Revoked' | 'Expired';\n\n/**\n * Granted permission with metadata (siteOrigin, optional revocationMetadata).\n *\n * @template TPermission - The type of the permission provided.\n */\nexport type PermissionInfoWithMetadata<\n TPermission extends PermissionTypes = PermissionTypes,\n> = {\n permissionResponse: PermissionInfo<TPermission>;\n siteOrigin: string;\n /**\n * Whether the permission is active, revoked (off-chain and/or on-chain), or expired by time rule.\n */\n status: GatorPermissionStatus;\n revocationMetadata?: RevocationMetadata;\n};\n\n/**\n * Delegation fields required to decode a permission (caveats, delegator, delegate, authority).\n */\nexport type DelegationDetails = Pick<\n Delegation<Hex>,\n 'caveats' | 'delegator' | 'delegate' | 'authority'\n>;\n\n/**\n * Metadata for a confirmed revocation (e.g. when and how it was recorded).\n */\nexport type RevocationMetadata = {\n /** Timestamp when the revocation was recorded in storage. */\n recordedAt: number;\n /** Hash of the revocation transaction, if we submitted it. */\n txHash?: Hex | undefined;\n};\n\n/**\n * Parameters for the permissions provider Snap's submitRevocation RPC.\n */\nexport type RevocationParams = {\n /**\n * The permission context as a hex string that identifies the permission to revoke.\n */\n permissionContext: Hex;\n\n /**\n * The hash of the transaction that was used to revoke the permission. Optional because we might not have submitted the transaction ourselves.\n */\n txHash: Hex | undefined;\n};\n\n/**\n * Parameters for adding a pending revocation (tracked until the revocation tx is confirmed).\n */\nexport type PendingRevocationParams = {\n /**\n * The transaction metadata ID to monitor.\n */\n txId: string;\n /**\n * The permission context as a hex string that identifies the permission to revoke.\n */\n permissionContext: Hex;\n};\n\n/**\n * Permission type identifier: the `type` field of standard ERC-7715 permissions.\n */\nexport type SupportedPermissionType = PermissionTypes['type'];\n\n/**\n * Narrower typing for the delegator contract address mapping exported from @metamask/delegation-deployments.\n */\nexport type DelegationDeploymentsEnforcerAddressesByName = Record<\n | 'ERC20StreamingEnforcer'\n | 'ERC20PeriodTransferEnforcer'\n | 'NativeTokenStreamingEnforcer'\n | 'NativeTokenPeriodTransferEnforcer'\n | 'ApprovalRevocationEnforcer'\n | 'ExactCalldataEnforcer'\n | 'ValueLteEnforcer'\n | 'TimestampEnforcer'\n | 'NonceEnforcer'\n | 'AllowedCalldataEnforcer'\n | 'AllowedTargetsEnforcer'\n | 'RedeemerEnforcer',\n Hex\n>;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { PermissionTypes, Rule } from
|
|
2
|
-
import type { Delegation } from
|
|
3
|
-
import type { Hex } from
|
|
1
|
+
import type { PermissionTypes, Rule } from "@metamask/7715-permission-types";
|
|
2
|
+
import type { Delegation } from "@metamask/delegation-core";
|
|
3
|
+
import type { Hex } from "@metamask/utils";
|
|
4
4
|
/**
|
|
5
5
|
* Enum for the error codes of the gator permissions controller.
|
|
6
6
|
*/
|
|
@@ -158,4 +158,4 @@ export type SupportedPermissionType = PermissionTypes['type'];
|
|
|
158
158
|
* Narrower typing for the delegator contract address mapping exported from @metamask/delegation-deployments.
|
|
159
159
|
*/
|
|
160
160
|
export type DelegationDeploymentsEnforcerAddressesByName = Record<'ERC20StreamingEnforcer' | 'ERC20PeriodTransferEnforcer' | 'NativeTokenStreamingEnforcer' | 'NativeTokenPeriodTransferEnforcer' | 'ApprovalRevocationEnforcer' | 'ExactCalldataEnforcer' | 'ValueLteEnforcer' | 'TimestampEnforcer' | 'NonceEnforcer' | 'AllowedCalldataEnforcer' | 'AllowedTargetsEnforcer' | 'RedeemerEnforcer', Hex>;
|
|
161
|
-
//# sourceMappingURL=types.d.
|
|
161
|
+
//# sourceMappingURL=types.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.cts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.mts
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
import type { PermissionTypes, Rule } from "@metamask/7715-permission-types";
|
|
2
|
+
import type { Delegation } from "@metamask/delegation-core";
|
|
3
|
+
import type { Hex } from "@metamask/utils";
|
|
4
|
+
/**
|
|
5
|
+
* Enum for the error codes of the gator permissions controller.
|
|
6
|
+
*/
|
|
7
|
+
export declare enum GatorPermissionsControllerErrorCode {
|
|
8
|
+
GatorPermissionsFetchError = "gator-permissions-fetch-error",
|
|
9
|
+
GatorPermissionsProviderError = "gator-permissions-provider-error",
|
|
10
|
+
PermissionDecodingError = "permission-decoding-error",
|
|
11
|
+
OriginNotAllowedError = "origin-not-allowed-error"
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Enum for the RPC methods of the gator permissions provider snap.
|
|
15
|
+
*/
|
|
16
|
+
export declare enum GatorPermissionsSnapRpcMethod {
|
|
17
|
+
/**
|
|
18
|
+
* This method is used by the metamask to request a permissions provider to get granted permissions for all sites.
|
|
19
|
+
*/
|
|
20
|
+
PermissionProviderGetGrantedPermissions = "permissionsProvider_getGrantedPermissions",
|
|
21
|
+
/**
|
|
22
|
+
* This method is used by the metamask to submit a revocation to the permissions provider.
|
|
23
|
+
*/
|
|
24
|
+
PermissionProviderSubmitRevocation = "permissionsProvider_submitRevocation"
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Represents an ERC-7715 permission request.
|
|
28
|
+
*
|
|
29
|
+
* @template TPermission - The type of the permission provided.
|
|
30
|
+
*/
|
|
31
|
+
export type PermissionRequest<TPermission extends PermissionTypes> = {
|
|
32
|
+
/**
|
|
33
|
+
* hex-encoding of uint256 defined the chain with EIP-155
|
|
34
|
+
*/
|
|
35
|
+
chainId: Hex;
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* The account being targeted for this permission request.
|
|
39
|
+
* It is optional to let the user choose which account to grant permission from.
|
|
40
|
+
*/
|
|
41
|
+
from?: Hex;
|
|
42
|
+
/**
|
|
43
|
+
* A field that identifies the DApp session account associated with the permission
|
|
44
|
+
*/
|
|
45
|
+
to: Hex;
|
|
46
|
+
/**
|
|
47
|
+
* Defines the allowed behavior the `to` account can do on behalf of the `from` account.
|
|
48
|
+
*/
|
|
49
|
+
permission: TPermission;
|
|
50
|
+
rules?: Rule[] | null;
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Represents an ERC-7715 permission response.
|
|
54
|
+
*
|
|
55
|
+
* @template TPermission - The type of the permission provided.
|
|
56
|
+
*/
|
|
57
|
+
export type PermissionResponse<TPermission extends PermissionTypes> = PermissionRequest<TPermission> & {
|
|
58
|
+
/**
|
|
59
|
+
* Is a catch-all to identify a permission for revoking permissions or submitting
|
|
60
|
+
* Defined in ERC-7710.
|
|
61
|
+
*/
|
|
62
|
+
context: Hex;
|
|
63
|
+
/**
|
|
64
|
+
* The dependencyInfo field is required and contains information needed to deploy accounts.
|
|
65
|
+
* Each entry specifies a factory contract and its associated deployment data.
|
|
66
|
+
* If no account deployment is needed when redeeming the permission, this array must be empty.
|
|
67
|
+
* When non-empty, DApps MUST deploy the accounts by calling the factory contract with factoryData as the calldata.
|
|
68
|
+
* Defined in ERC-4337.
|
|
69
|
+
*/
|
|
70
|
+
dependencies: {
|
|
71
|
+
factory: Hex;
|
|
72
|
+
factoryData: Hex;
|
|
73
|
+
}[];
|
|
74
|
+
/**
|
|
75
|
+
* Is required as defined in ERC-7710.
|
|
76
|
+
*/
|
|
77
|
+
delegationManager: Hex;
|
|
78
|
+
};
|
|
79
|
+
/**
|
|
80
|
+
* Represents a gator ERC-7715 permission entry retrieved from gator permissions snap.
|
|
81
|
+
*
|
|
82
|
+
* @template TPermission - The type of the permission provided.
|
|
83
|
+
*/
|
|
84
|
+
export type StoredGatorPermission<TPermission extends PermissionTypes = PermissionTypes> = {
|
|
85
|
+
permissionResponse: PermissionResponse<TPermission>;
|
|
86
|
+
siteOrigin: string;
|
|
87
|
+
revocationMetadata?: RevocationMetadata;
|
|
88
|
+
};
|
|
89
|
+
/**
|
|
90
|
+
* Permission response with internal fields (dependencies, to) removed.
|
|
91
|
+
* Used when exposing permission data to the client/UI.
|
|
92
|
+
*
|
|
93
|
+
* @template TPermission - The type of the permission provided.
|
|
94
|
+
*/
|
|
95
|
+
export type PermissionInfo<TPermission extends PermissionTypes> = Omit<PermissionResponse<TPermission>, 'dependencies' | 'to'>;
|
|
96
|
+
/**
|
|
97
|
+
* Lifecycle status of a granted permission for UI and sync.
|
|
98
|
+
*/
|
|
99
|
+
export type GatorPermissionStatus = 'Active' | 'Revoked' | 'Expired';
|
|
100
|
+
/**
|
|
101
|
+
* Granted permission with metadata (siteOrigin, optional revocationMetadata).
|
|
102
|
+
*
|
|
103
|
+
* @template TPermission - The type of the permission provided.
|
|
104
|
+
*/
|
|
105
|
+
export type PermissionInfoWithMetadata<TPermission extends PermissionTypes = PermissionTypes> = {
|
|
106
|
+
permissionResponse: PermissionInfo<TPermission>;
|
|
107
|
+
siteOrigin: string;
|
|
108
|
+
/**
|
|
109
|
+
* Whether the permission is active, revoked (off-chain and/or on-chain), or expired by time rule.
|
|
110
|
+
*/
|
|
111
|
+
status: GatorPermissionStatus;
|
|
112
|
+
revocationMetadata?: RevocationMetadata;
|
|
113
|
+
};
|
|
114
|
+
/**
|
|
115
|
+
* Delegation fields required to decode a permission (caveats, delegator, delegate, authority).
|
|
116
|
+
*/
|
|
117
|
+
export type DelegationDetails = Pick<Delegation<Hex>, 'caveats' | 'delegator' | 'delegate' | 'authority'>;
|
|
118
|
+
/**
|
|
119
|
+
* Metadata for a confirmed revocation (e.g. when and how it was recorded).
|
|
120
|
+
*/
|
|
121
|
+
export type RevocationMetadata = {
|
|
122
|
+
/** Timestamp when the revocation was recorded in storage. */
|
|
123
|
+
recordedAt: number;
|
|
124
|
+
/** Hash of the revocation transaction, if we submitted it. */
|
|
125
|
+
txHash?: Hex | undefined;
|
|
126
|
+
};
|
|
127
|
+
/**
|
|
128
|
+
* Parameters for the permissions provider Snap's submitRevocation RPC.
|
|
129
|
+
*/
|
|
130
|
+
export type RevocationParams = {
|
|
131
|
+
/**
|
|
132
|
+
* The permission context as a hex string that identifies the permission to revoke.
|
|
133
|
+
*/
|
|
134
|
+
permissionContext: Hex;
|
|
135
|
+
/**
|
|
136
|
+
* The hash of the transaction that was used to revoke the permission. Optional because we might not have submitted the transaction ourselves.
|
|
137
|
+
*/
|
|
138
|
+
txHash: Hex | undefined;
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* Parameters for adding a pending revocation (tracked until the revocation tx is confirmed).
|
|
142
|
+
*/
|
|
143
|
+
export type PendingRevocationParams = {
|
|
144
|
+
/**
|
|
145
|
+
* The transaction metadata ID to monitor.
|
|
146
|
+
*/
|
|
147
|
+
txId: string;
|
|
148
|
+
/**
|
|
149
|
+
* The permission context as a hex string that identifies the permission to revoke.
|
|
150
|
+
*/
|
|
151
|
+
permissionContext: Hex;
|
|
152
|
+
};
|
|
153
|
+
/**
|
|
154
|
+
* Permission type identifier: the `type` field of standard ERC-7715 permissions.
|
|
155
|
+
*/
|
|
156
|
+
export type SupportedPermissionType = PermissionTypes['type'];
|
|
157
|
+
/**
|
|
158
|
+
* Narrower typing for the delegator contract address mapping exported from @metamask/delegation-deployments.
|
|
159
|
+
*/
|
|
160
|
+
export type DelegationDeploymentsEnforcerAddressesByName = Record<'ERC20StreamingEnforcer' | 'ERC20PeriodTransferEnforcer' | 'NativeTokenStreamingEnforcer' | 'NativeTokenPeriodTransferEnforcer' | 'ApprovalRevocationEnforcer' | 'ExactCalldataEnforcer' | 'ValueLteEnforcer' | 'TimestampEnforcer' | 'NonceEnforcer' | 'AllowedCalldataEnforcer' | 'AllowedTargetsEnforcer' | 'RedeemerEnforcer', Hex>;
|
|
161
|
+
//# sourceMappingURL=types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.mts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,wCAAwC;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAE,kCAAkC;AAC5D,OAAO,KAAK,EAAE,GAAG,EAAE,wBAAwB;AAE3C;;GAEG;AACH,oBAAY,mCAAmC;IAC7C,0BAA0B,kCAAkC;IAC5D,6BAA6B,qCAAqC;IAClE,uBAAuB,8BAA8B;IACrD,qBAAqB,6BAA6B;CACnD;AAED;;GAEG;AACH,oBAAY,6BAA6B;IACvC;;OAEG;IACH,uCAAuC,8CAA8C;IACrF;;OAEG;IACH,kCAAkC,yCAAyC;CAC5E;AAED;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,CAAC,WAAW,SAAS,eAAe,IAAI;IACnE;;OAEG;IACH,OAAO,EAAE,GAAG,CAAC;IAEb;;;;OAIG;IACH,IAAI,CAAC,EAAE,GAAG,CAAC;IAEX;;OAEG;IACH,EAAE,EAAE,GAAG,CAAC;IAER;;OAEG;IACH,UAAU,EAAE,WAAW,CAAC;IAExB,KAAK,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;CACvB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,CAAC,WAAW,SAAS,eAAe,IAChE,iBAAiB,CAAC,WAAW,CAAC,GAAG;IAC/B;;;OAGG;IACH,OAAO,EAAE,GAAG,CAAC;IAEb;;;;;;OAMG;IACH,YAAY,EAAE;QACZ,OAAO,EAAE,GAAG,CAAC;QACb,WAAW,EAAE,GAAG,CAAC;KAClB,EAAE,CAAC;IAEJ;;OAEG;IACH,iBAAiB,EAAE,GAAG,CAAC;CACxB,CAAC;AAEJ;;;;GAIG;AACH,MAAM,MAAM,qBAAqB,CAC/B,WAAW,SAAS,eAAe,GAAG,eAAe,IACnD;IACF,kBAAkB,EAAE,kBAAkB,CAAC,WAAW,CAAC,CAAC;IACpD,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,cAAc,CAAC,WAAW,SAAS,eAAe,IAAI,IAAI,CACpE,kBAAkB,CAAC,WAAW,CAAC,EAC/B,cAAc,GAAG,IAAI,CACtB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;AAErE;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,CACpC,WAAW,SAAS,eAAe,GAAG,eAAe,IACnD;IACF,kBAAkB,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,MAAM,EAAE,qBAAqB,CAAC;IAC9B,kBAAkB,CAAC,EAAE,kBAAkB,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAClC,UAAU,CAAC,GAAG,CAAC,EACf,SAAS,GAAG,WAAW,GAAG,UAAU,GAAG,WAAW,CACnD,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC/B,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,GAAG,GAAG,SAAS,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;OAEG;IACH,iBAAiB,EAAE,GAAG,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE,GAAG,GAAG,SAAS,CAAC;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG;IACpC;;OAEG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,iBAAiB,EAAE,GAAG,CAAC;CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AAE9D;;GAEG;AACH,MAAM,MAAM,4CAA4C,GAAG,MAAM,CAC7D,wBAAwB,GACxB,6BAA6B,GAC7B,8BAA8B,GAC9B,mCAAmC,GACnC,4BAA4B,GAC5B,uBAAuB,GACvB,kBAAkB,GAClB,mBAAmB,GACnB,eAAe,GACf,yBAAyB,GACzB,wBAAwB,GACxB,kBAAkB,EACpB,GAAG,CACJ,CAAC"}
|
|
@@ -22,4 +22,4 @@ export var GatorPermissionsSnapRpcMethod;
|
|
|
22
22
|
*/
|
|
23
23
|
GatorPermissionsSnapRpcMethod["PermissionProviderSubmitRevocation"] = "permissionsProvider_submitRevocation";
|
|
24
24
|
})(GatorPermissionsSnapRpcMethod || (GatorPermissionsSnapRpcMethod = {}));
|
|
25
|
-
//# sourceMappingURL=types.
|
|
25
|
+
//# sourceMappingURL=types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.mjs","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,CAAN,IAAY,mCAKX;AALD,WAAY,mCAAmC;IAC7C,mGAA4D,CAAA;IAC5D,yGAAkE,CAAA;IAClE,4FAAqD,CAAA;IACrD,yFAAkD,CAAA;AACpD,CAAC,EALW,mCAAmC,KAAnC,mCAAmC,QAK9C;AAED;;GAEG;AACH,MAAM,CAAN,IAAY,6BASX;AATD,WAAY,6BAA6B;IACvC;;OAEG;IACH,sHAAqF,CAAA;IACrF;;OAEG;IACH,4GAA2E,CAAA;AAC7E,CAAC,EATW,6BAA6B,KAA7B,6BAA6B,QASxC","sourcesContent":["import type { PermissionTypes, Rule } from '@metamask/7715-permission-types';\nimport type { Delegation } from '@metamask/delegation-core';\nimport type { Hex } from '@metamask/utils';\n\n/**\n * Enum for the error codes of the gator permissions controller.\n */\nexport enum GatorPermissionsControllerErrorCode {\n GatorPermissionsFetchError = 'gator-permissions-fetch-error',\n GatorPermissionsProviderError = 'gator-permissions-provider-error',\n PermissionDecodingError = 'permission-decoding-error',\n OriginNotAllowedError = 'origin-not-allowed-error',\n}\n\n/**\n * Enum for the RPC methods of the gator permissions provider snap.\n */\nexport enum GatorPermissionsSnapRpcMethod {\n /**\n * This method is used by the metamask to request a permissions provider to get granted permissions for all sites.\n */\n PermissionProviderGetGrantedPermissions = 'permissionsProvider_getGrantedPermissions',\n /**\n * This method is used by the metamask to submit a revocation to the permissions provider.\n */\n PermissionProviderSubmitRevocation = 'permissionsProvider_submitRevocation',\n}\n\n/**\n * Represents an ERC-7715 permission request.\n *\n * @template TPermission - The type of the permission provided.\n */\nexport type PermissionRequest<TPermission extends PermissionTypes> = {\n /**\n * hex-encoding of uint256 defined the chain with EIP-155\n */\n chainId: Hex;\n\n /**\n *\n * The account being targeted for this permission request.\n * It is optional to let the user choose which account to grant permission from.\n */\n from?: Hex;\n\n /**\n * A field that identifies the DApp session account associated with the permission\n */\n to: Hex;\n\n /**\n * Defines the allowed behavior the `to` account can do on behalf of the `from` account.\n */\n permission: TPermission;\n\n rules?: Rule[] | null;\n};\n\n/**\n * Represents an ERC-7715 permission response.\n *\n * @template TPermission - The type of the permission provided.\n */\nexport type PermissionResponse<TPermission extends PermissionTypes> =\n PermissionRequest<TPermission> & {\n /**\n * Is a catch-all to identify a permission for revoking permissions or submitting\n * Defined in ERC-7710.\n */\n context: Hex;\n\n /**\n * The dependencyInfo field is required and contains information needed to deploy accounts.\n * Each entry specifies a factory contract and its associated deployment data.\n * If no account deployment is needed when redeeming the permission, this array must be empty.\n * When non-empty, DApps MUST deploy the accounts by calling the factory contract with factoryData as the calldata.\n * Defined in ERC-4337.\n */\n dependencies: {\n factory: Hex;\n factoryData: Hex;\n }[];\n\n /**\n * Is required as defined in ERC-7710.\n */\n delegationManager: Hex;\n };\n\n/**\n * Represents a gator ERC-7715 permission entry retrieved from gator permissions snap.\n *\n * @template TPermission - The type of the permission provided.\n */\nexport type StoredGatorPermission<\n TPermission extends PermissionTypes = PermissionTypes,\n> = {\n permissionResponse: PermissionResponse<TPermission>;\n siteOrigin: string;\n revocationMetadata?: RevocationMetadata;\n};\n\n/**\n * Permission response with internal fields (dependencies, to) removed.\n * Used when exposing permission data to the client/UI.\n *\n * @template TPermission - The type of the permission provided.\n */\nexport type PermissionInfo<TPermission extends PermissionTypes> = Omit<\n PermissionResponse<TPermission>,\n 'dependencies' | 'to'\n>;\n\n/**\n * Lifecycle status of a granted permission for UI and sync.\n */\nexport type GatorPermissionStatus = 'Active' | 'Revoked' | 'Expired';\n\n/**\n * Granted permission with metadata (siteOrigin, optional revocationMetadata).\n *\n * @template TPermission - The type of the permission provided.\n */\nexport type PermissionInfoWithMetadata<\n TPermission extends PermissionTypes = PermissionTypes,\n> = {\n permissionResponse: PermissionInfo<TPermission>;\n siteOrigin: string;\n /**\n * Whether the permission is active, revoked (off-chain and/or on-chain), or expired by time rule.\n */\n status: GatorPermissionStatus;\n revocationMetadata?: RevocationMetadata;\n};\n\n/**\n * Delegation fields required to decode a permission (caveats, delegator, delegate, authority).\n */\nexport type DelegationDetails = Pick<\n Delegation<Hex>,\n 'caveats' | 'delegator' | 'delegate' | 'authority'\n>;\n\n/**\n * Metadata for a confirmed revocation (e.g. when and how it was recorded).\n */\nexport type RevocationMetadata = {\n /** Timestamp when the revocation was recorded in storage. */\n recordedAt: number;\n /** Hash of the revocation transaction, if we submitted it. */\n txHash?: Hex | undefined;\n};\n\n/**\n * Parameters for the permissions provider Snap's submitRevocation RPC.\n */\nexport type RevocationParams = {\n /**\n * The permission context as a hex string that identifies the permission to revoke.\n */\n permissionContext: Hex;\n\n /**\n * The hash of the transaction that was used to revoke the permission. Optional because we might not have submitted the transaction ourselves.\n */\n txHash: Hex | undefined;\n};\n\n/**\n * Parameters for adding a pending revocation (tracked until the revocation tx is confirmed).\n */\nexport type PendingRevocationParams = {\n /**\n * The transaction metadata ID to monitor.\n */\n txId: string;\n /**\n * The permission context as a hex string that identifies the permission to revoke.\n */\n permissionContext: Hex;\n};\n\n/**\n * Permission type identifier: the `type` field of standard ERC-7715 permissions.\n */\nexport type SupportedPermissionType = PermissionTypes['type'];\n\n/**\n * Narrower typing for the delegator contract address mapping exported from @metamask/delegation-deployments.\n */\nexport type DelegationDeploymentsEnforcerAddressesByName = Record<\n | 'ERC20StreamingEnforcer'\n | 'ERC20PeriodTransferEnforcer'\n | 'NativeTokenStreamingEnforcer'\n | 'NativeTokenPeriodTransferEnforcer'\n | 'ApprovalRevocationEnforcer'\n | 'ExactCalldataEnforcer'\n | 'ValueLteEnforcer'\n | 'TimestampEnforcer'\n | 'NonceEnforcer'\n | 'AllowedCalldataEnforcer'\n | 'AllowedTargetsEnforcer'\n | 'RedeemerEnforcer',\n Hex\n>;\n"]}
|
package/dist/utils.cjs
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.executeSnapRpc = void 0;
|
|
4
|
+
const snaps_utils_1 = require("@metamask/snaps-utils");
|
|
5
|
+
const errors_js_1 = require("./errors.cjs");
|
|
6
|
+
const logger_js_1 = require("./logger.cjs");
|
|
7
|
+
/**
|
|
8
|
+
* Executes an RPC request against a Snap and returns the typed response.
|
|
9
|
+
*
|
|
10
|
+
* @param params - The parameters for the request.
|
|
11
|
+
* @param params.messenger - Messenger that supports SnapController:handleRequest.
|
|
12
|
+
* @param params.snapId - The Snap ID to target.
|
|
13
|
+
* @param params.method - The RPC method name (e.g. permissionsProvider_getGrantedPermissions).
|
|
14
|
+
* @param params.params - Optional JSON-serializable params for the method.
|
|
15
|
+
* @returns A promise that resolves with the Snap's response (typed by caller).
|
|
16
|
+
* @throws {GatorPermissionsProviderError} If the Snap request fails.
|
|
17
|
+
*/
|
|
18
|
+
async function executeSnapRpc({ messenger, snapId, method, params, }) {
|
|
19
|
+
try {
|
|
20
|
+
const response = await messenger.call('SnapController:handleRequest', {
|
|
21
|
+
snapId,
|
|
22
|
+
origin: 'metamask',
|
|
23
|
+
handler: snaps_utils_1.HandlerType.OnRpcRequest,
|
|
24
|
+
request: {
|
|
25
|
+
jsonrpc: '2.0',
|
|
26
|
+
method,
|
|
27
|
+
...(params !== undefined && { params }),
|
|
28
|
+
},
|
|
29
|
+
});
|
|
30
|
+
return response;
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
(0, logger_js_1.utilsLog)('Snap RPC request failed', { method, error });
|
|
34
|
+
throw new errors_js_1.GatorPermissionsProviderError({
|
|
35
|
+
method: method,
|
|
36
|
+
cause: error,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
exports.executeSnapRpc = executeSnapRpc;
|
|
41
|
+
//# sourceMappingURL=utils.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.cjs","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;AACA,uDAAoD;AAGpD,4CAA4D;AAE5D,4CAAuC;AAGvC;;;;;;;;;;GAUG;AACI,KAAK,UAAU,cAAc,CAAoB,EACtD,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,GAMP;IACC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,8BAA8B,EAAE;YACpE,MAAM;YACN,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,yBAAW,CAAC,YAAY;YACjC,OAAO,EAAE;gBACP,OAAO,EAAE,KAAK;gBACd,MAAM;gBACN,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;aACxC;SACF,CAAC,CAAC;QACH,OAAO,QAAmB,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAA,oBAAQ,EAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,yCAA6B,CAAC;YACtC,MAAM,EAAE,MAAuC;YAC/C,KAAK,EAAE,KAAc;SACtB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AA9BD,wCA8BC","sourcesContent":["import type { SnapId } from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Json } from '@metamask/utils';\n\nimport { GatorPermissionsProviderError } from './errors.js';\nimport { GatorPermissionsControllerMessenger } from './GatorPermissionsController.js';\nimport { utilsLog } from './logger.js';\nimport type { GatorPermissionsSnapRpcMethod } from './types.js';\n\n/**\n * Executes an RPC request against a Snap and returns the typed response.\n *\n * @param params - The parameters for the request.\n * @param params.messenger - Messenger that supports SnapController:handleRequest.\n * @param params.snapId - The Snap ID to target.\n * @param params.method - The RPC method name (e.g. permissionsProvider_getGrantedPermissions).\n * @param params.params - Optional JSON-serializable params for the method.\n * @returns A promise that resolves with the Snap's response (typed by caller).\n * @throws {GatorPermissionsProviderError} If the Snap request fails.\n */\nexport async function executeSnapRpc<TReturn = unknown>({\n messenger,\n snapId,\n method,\n params,\n}: {\n messenger: GatorPermissionsControllerMessenger;\n snapId: SnapId;\n method: GatorPermissionsSnapRpcMethod | string;\n params?: Json;\n}): Promise<TReturn> {\n try {\n const response = await messenger.call('SnapController:handleRequest', {\n snapId,\n origin: 'metamask',\n handler: HandlerType.OnRpcRequest,\n request: {\n jsonrpc: '2.0',\n method,\n ...(params !== undefined && { params }),\n },\n });\n return response as TReturn;\n } catch (error) {\n utilsLog('Snap RPC request failed', { method, error });\n throw new GatorPermissionsProviderError({\n method: method as GatorPermissionsSnapRpcMethod,\n cause: error as Error,\n });\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import type { SnapId } from
|
|
2
|
-
import type { Json } from
|
|
3
|
-
import { GatorPermissionsControllerMessenger } from
|
|
4
|
-
import type { GatorPermissionsSnapRpcMethod } from
|
|
1
|
+
import type { SnapId } from "@metamask/snaps-sdk";
|
|
2
|
+
import type { Json } from "@metamask/utils";
|
|
3
|
+
import { GatorPermissionsControllerMessenger } from "./GatorPermissionsController.cjs";
|
|
4
|
+
import type { GatorPermissionsSnapRpcMethod } from "./types.cjs";
|
|
5
5
|
/**
|
|
6
6
|
* Executes an RPC request against a Snap and returns the typed response.
|
|
7
7
|
*
|
|
@@ -19,4 +19,4 @@ export declare function executeSnapRpc<TReturn = unknown>({ messenger, snapId, m
|
|
|
19
19
|
method: GatorPermissionsSnapRpcMethod | string;
|
|
20
20
|
params?: Json;
|
|
21
21
|
}): Promise<TReturn>;
|
|
22
|
-
//# sourceMappingURL=utils.d.
|
|
22
|
+
//# sourceMappingURL=utils.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.cts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAElD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAG5C,OAAO,EAAE,mCAAmC,EAAE,yCAAwC;AAEtF,OAAO,KAAK,EAAE,6BAA6B,EAAE,oBAAmB;AAEhE;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAG,OAAO,EAAE,EACtD,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,GACP,EAAE;IACD,SAAS,EAAE,mCAAmC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,6BAA6B,GAAG,MAAM,CAAC;IAC/C,MAAM,CAAC,EAAE,IAAI,CAAC;CACf,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBnB"}
|
package/dist/utils.d.mts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { SnapId } from "@metamask/snaps-sdk";
|
|
2
|
+
import type { Json } from "@metamask/utils";
|
|
3
|
+
import { GatorPermissionsControllerMessenger } from "./GatorPermissionsController.mjs";
|
|
4
|
+
import type { GatorPermissionsSnapRpcMethod } from "./types.mjs";
|
|
5
|
+
/**
|
|
6
|
+
* Executes an RPC request against a Snap and returns the typed response.
|
|
7
|
+
*
|
|
8
|
+
* @param params - The parameters for the request.
|
|
9
|
+
* @param params.messenger - Messenger that supports SnapController:handleRequest.
|
|
10
|
+
* @param params.snapId - The Snap ID to target.
|
|
11
|
+
* @param params.method - The RPC method name (e.g. permissionsProvider_getGrantedPermissions).
|
|
12
|
+
* @param params.params - Optional JSON-serializable params for the method.
|
|
13
|
+
* @returns A promise that resolves with the Snap's response (typed by caller).
|
|
14
|
+
* @throws {GatorPermissionsProviderError} If the Snap request fails.
|
|
15
|
+
*/
|
|
16
|
+
export declare function executeSnapRpc<TReturn = unknown>({ messenger, snapId, method, params, }: {
|
|
17
|
+
messenger: GatorPermissionsControllerMessenger;
|
|
18
|
+
snapId: SnapId;
|
|
19
|
+
method: GatorPermissionsSnapRpcMethod | string;
|
|
20
|
+
params?: Json;
|
|
21
|
+
}): Promise<TReturn>;
|
|
22
|
+
//# sourceMappingURL=utils.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.mts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,4BAA4B;AAElD,OAAO,KAAK,EAAE,IAAI,EAAE,wBAAwB;AAG5C,OAAO,EAAE,mCAAmC,EAAE,yCAAwC;AAEtF,OAAO,KAAK,EAAE,6BAA6B,EAAE,oBAAmB;AAEhE;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,OAAO,GAAG,OAAO,EAAE,EACtD,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,GACP,EAAE;IACD,SAAS,EAAE,mCAAmC,CAAC;IAC/C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,6BAA6B,GAAG,MAAM,CAAC;IAC/C,MAAM,CAAC,EAAE,IAAI,CAAC;CACf,GAAG,OAAO,CAAC,OAAO,CAAC,CAoBnB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { HandlerType } from
|
|
2
|
-
import { GatorPermissionsProviderError } from
|
|
3
|
-
import { utilsLog } from
|
|
1
|
+
import { HandlerType } from "@metamask/snaps-utils";
|
|
2
|
+
import { GatorPermissionsProviderError } from "./errors.mjs";
|
|
3
|
+
import { utilsLog } from "./logger.mjs";
|
|
4
4
|
/**
|
|
5
5
|
* Executes an RPC request against a Snap and returns the typed response.
|
|
6
6
|
*
|
|
@@ -34,4 +34,4 @@ export async function executeSnapRpc({ messenger, snapId, method, params, }) {
|
|
|
34
34
|
});
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
-
//# sourceMappingURL=utils.
|
|
37
|
+
//# sourceMappingURL=utils.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.mjs","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,8BAA8B;AAGpD,OAAO,EAAE,6BAA6B,EAAE,qBAAoB;AAE5D,OAAO,EAAE,QAAQ,EAAE,qBAAoB;AAGvC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAoB,EACtD,SAAS,EACT,MAAM,EACN,MAAM,EACN,MAAM,GAMP;IACC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC,8BAA8B,EAAE;YACpE,MAAM;YACN,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,WAAW,CAAC,YAAY;YACjC,OAAO,EAAE;gBACP,OAAO,EAAE,KAAK;gBACd,MAAM;gBACN,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,CAAC;aACxC;SACF,CAAC,CAAC;QACH,OAAO,QAAmB,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,QAAQ,CAAC,yBAAyB,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACvD,MAAM,IAAI,6BAA6B,CAAC;YACtC,MAAM,EAAE,MAAuC;YAC/C,KAAK,EAAE,KAAc;SACtB,CAAC,CAAC;IACL,CAAC;AACH,CAAC","sourcesContent":["import type { SnapId } from '@metamask/snaps-sdk';\nimport { HandlerType } from '@metamask/snaps-utils';\nimport type { Json } from '@metamask/utils';\n\nimport { GatorPermissionsProviderError } from './errors.js';\nimport { GatorPermissionsControllerMessenger } from './GatorPermissionsController.js';\nimport { utilsLog } from './logger.js';\nimport type { GatorPermissionsSnapRpcMethod } from './types.js';\n\n/**\n * Executes an RPC request against a Snap and returns the typed response.\n *\n * @param params - The parameters for the request.\n * @param params.messenger - Messenger that supports SnapController:handleRequest.\n * @param params.snapId - The Snap ID to target.\n * @param params.method - The RPC method name (e.g. permissionsProvider_getGrantedPermissions).\n * @param params.params - Optional JSON-serializable params for the method.\n * @returns A promise that resolves with the Snap's response (typed by caller).\n * @throws {GatorPermissionsProviderError} If the Snap request fails.\n */\nexport async function executeSnapRpc<TReturn = unknown>({\n messenger,\n snapId,\n method,\n params,\n}: {\n messenger: GatorPermissionsControllerMessenger;\n snapId: SnapId;\n method: GatorPermissionsSnapRpcMethod | string;\n params?: Json;\n}): Promise<TReturn> {\n try {\n const response = await messenger.call('SnapController:handleRequest', {\n snapId,\n origin: 'metamask',\n handler: HandlerType.OnRpcRequest,\n request: {\n jsonrpc: '2.0',\n method,\n ...(params !== undefined && { params }),\n },\n });\n return response as TReturn;\n } catch (error) {\n utilsLog('Snap RPC request failed', { method, error });\n throw new GatorPermissionsProviderError({\n method: method as GatorPermissionsSnapRpcMethod,\n cause: error as Error,\n });\n }\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@metamask-previews/gator-permissions-controller",
|
|
3
|
-
"version": "5.0.2-preview-
|
|
3
|
+
"version": "5.0.2-preview-eb263b0ee",
|
|
4
4
|
"description": "Controller for managing gator permissions with profile sync integration",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"Ethereum",
|
|
@@ -18,12 +18,19 @@
|
|
|
18
18
|
"files": [
|
|
19
19
|
"dist/"
|
|
20
20
|
],
|
|
21
|
-
"type": "module",
|
|
22
21
|
"sideEffects": false,
|
|
22
|
+
"main": "./dist/index.cjs",
|
|
23
|
+
"types": "./dist/index.d.cts",
|
|
23
24
|
"exports": {
|
|
24
25
|
".": {
|
|
25
|
-
"
|
|
26
|
-
|
|
26
|
+
"import": {
|
|
27
|
+
"types": "./dist/index.d.mts",
|
|
28
|
+
"default": "./dist/index.mjs"
|
|
29
|
+
},
|
|
30
|
+
"require": {
|
|
31
|
+
"types": "./dist/index.d.cts",
|
|
32
|
+
"default": "./dist/index.cjs"
|
|
33
|
+
}
|
|
27
34
|
},
|
|
28
35
|
"./package.json": "./package.json"
|
|
29
36
|
},
|
|
@@ -32,11 +39,9 @@
|
|
|
32
39
|
"registry": "https://registry.npmjs.org/"
|
|
33
40
|
},
|
|
34
41
|
"scripts": {
|
|
35
|
-
"build": "
|
|
36
|
-
"build:all": "
|
|
37
|
-
"build:clean": "yarn build:only-clean && yarn build",
|
|
42
|
+
"build": "ts-bridge --project tsconfig.build.json --verbose --clean --no-references",
|
|
43
|
+
"build:all": "ts-bridge --project tsconfig.build.json --verbose --clean",
|
|
38
44
|
"build:docs": "typedoc",
|
|
39
|
-
"build:only-clean": "rimraf './dist' './tsconfig.build.tsbuildinfo'",
|
|
40
45
|
"changelog:update": "../../scripts/update-changelog.sh @metamask/gator-permissions-controller",
|
|
41
46
|
"changelog:validate": "../../scripts/validate-changelog.sh @metamask/gator-permissions-controller",
|
|
42
47
|
"lint:tsconfigs": "tsx ../../scripts/lint-tsconfigs/lint-tsconfigs.mts",
|
|
@@ -67,19 +72,18 @@
|
|
|
67
72
|
"@lavamoat/allow-scripts": "^3.0.4",
|
|
68
73
|
"@lavamoat/preinstall-always-fail": "^2.1.0",
|
|
69
74
|
"@metamask/auto-changelog": "^6.1.0",
|
|
75
|
+
"@ts-bridge/cli": "^0.6.4",
|
|
70
76
|
"@types/jest": "^30.0.0",
|
|
71
|
-
"@typescript/native": "npm:typescript@^7.0.2",
|
|
72
77
|
"deepmerge": "^4.2.2",
|
|
73
78
|
"jest": "^30.4.2",
|
|
74
|
-
"rimraf": "^5.0.5",
|
|
75
79
|
"ts-jest": "^29.4.11",
|
|
76
80
|
"tsx": "^4.20.5",
|
|
77
81
|
"typedoc": "^0.25.13",
|
|
78
82
|
"typedoc-plugin-missing-exports": "^2.0.0",
|
|
79
|
-
"typescript": "
|
|
83
|
+
"typescript": "~5.3.3"
|
|
80
84
|
},
|
|
81
85
|
"engines": {
|
|
82
|
-
"node": "^
|
|
86
|
+
"node": "^18.18 || >=20"
|
|
83
87
|
},
|
|
84
88
|
"lavamoat": {
|
|
85
89
|
"allowScripts": {
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GatorPermissionsController-method-action-types.d.ts","sourceRoot":"","sources":["../src/GatorPermissionsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAElF;;;;;;;GAOG;AACH,MAAM,MAAM,8DAA8D,GAAG;IAC3E,IAAI,EAAE,2DAA2D,CAAC;IAClE,OAAO,EAAE,0BAA0B,CAAC,gCAAgC,CAAC,CAAC;CACvE,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,0CAA0C,GAAG;IACvD,IAAI,EAAE,uCAAuC,CAAC;IAC9C,OAAO,EAAE,0BAA0B,CAAC,YAAY,CAAC,CAAC;CACnD,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,MAAM,8EAA8E,GACxF;IACE,IAAI,EAAE,2EAA2E,CAAC;IAClF,OAAO,EAAE,0BAA0B,CAAC,gDAAgD,CAAC,CAAC;CACvF,CAAC;AAEJ;;;;;;GAMG;AACH,MAAM,MAAM,gDAAgD,GAAG;IAC7D,IAAI,EAAE,6CAA6C,CAAC;IACpD,OAAO,EAAE,0BAA0B,CAAC,kBAAkB,CAAC,CAAC;CACzD,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,MAAM,oDAAoD,GAAG;IACjE,IAAI,EAAE,iDAAiD,CAAC;IACxD,OAAO,EAAE,0BAA0B,CAAC,sBAAsB,CAAC,CAAC;CAC7D,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,sDAAsD,GAAG;IACnE,IAAI,EAAE,mDAAmD,CAAC;IAC1D,OAAO,EAAE,0BAA0B,CAAC,wBAAwB,CAAC,CAAC;CAC/D,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,mDAAmD,GAAG;IAChE,IAAI,EAAE,gDAAgD,CAAC;IACvD,OAAO,EAAE,0BAA0B,CAAC,qBAAqB,CAAC,CAAC;CAC5D,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uCAAuC,GAC/C,8DAA8D,GAC9D,0CAA0C,GAC1C,8EAA8E,GAC9E,gDAAgD,GAChD,oDAAoD,GACpD,sDAAsD,GACtD,mDAAmD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GatorPermissionsController-method-action-types.js","sourceRoot":"","sources":["../src/GatorPermissionsController-method-action-types.ts"],"names":[],"mappings":"AAAA;;;GAGG","sourcesContent":["/**\n * This file is auto generated.\n * Do not edit manually.\n */\n\nimport type { GatorPermissionsController } from './GatorPermissionsController.js';\n\n/**\n * Fetches granted permissions from the gator permissions provider Snap and updates state.\n * If a sync is already in progress, returns the same promise. After the sync completes,\n * the next call will perform a new sync.\n *\n * @returns A promise that resolves when the sync completes. All data is available via the controller's state.\n * @throws {GatorPermissionsFetchError} If the gator permissions fetch fails.\n */\nexport type GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction = {\n type: `GatorPermissionsController:fetchAndUpdateGatorPermissions`;\n handler: GatorPermissionsController['fetchAndUpdateGatorPermissions'];\n};\n\n/**\n * Initializes the controller. Call once after construction to ensure the\n * controller is ready for use.\n *\n * @returns A promise that resolves when initialization is complete.\n */\nexport type GatorPermissionsControllerInitializeAction = {\n type: `GatorPermissionsController:initialize`;\n handler: GatorPermissionsController['initialize'];\n};\n\n/**\n * Decodes a permission context into a structured permission for a specific origin.\n *\n * This method validates the caller origin, decodes the provided `permissionContext`\n * into delegations, identifies the permission type from the caveat enforcers,\n * extracts the permission-specific data and expiry, and reconstructs a\n * {@link DecodedPermission} containing chainId, account addresses, to, type and data.\n *\n * @param args - The arguments to this function.\n * @param args.origin - The caller's origin; must match the configured permissions provider Snap id.\n * @param args.chainId - Numeric EIP-155 chain id used for resolving enforcer contracts and encoding.\n * @param args.delegation - delegation representing the permission.\n * @param args.metadata - metadata included in the request.\n * @param args.metadata.justification - the justification as specified in the request metadata.\n * @param args.metadata.origin - the origin as specified in the request metadata.\n *\n * @returns A decoded permission object suitable for UI consumption and follow-up actions.\n * @throws If the origin is not allowed, the context cannot be decoded into exactly one delegation,\n * the enforcers do not match any supported permission type, no candidate type validates\n * the caveat terms, or more than one permission type successfully validates\n * (ambiguous delegation).\n */\nexport type GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction =\n {\n type: `GatorPermissionsController:decodePermissionFromPermissionContextForOrigin`;\n handler: GatorPermissionsController['decodePermissionFromPermissionContextForOrigin'];\n };\n\n/**\n * Submits a revocation to the gator permissions provider snap.\n *\n * @param revocationParams - The revocation parameters containing the permission context.\n * @returns A promise that resolves when the revocation is submitted successfully.\n * @throws {GatorPermissionsProviderError} If the snap request fails.\n */\nexport type GatorPermissionsControllerSubmitRevocationAction = {\n type: `GatorPermissionsController:submitRevocation`;\n handler: GatorPermissionsController['submitRevocation'];\n};\n\n/**\n * Adds a pending revocation that will be submitted once the transaction is confirmed.\n *\n * This method sets up listeners for the user's approval/rejection decision and\n * terminal transaction states (confirmed, failed, dropped). The flow is:\n * 1. Wait for user to approve or reject the transaction\n * 2. If approved, add to pending revocations state\n * 3. If rejected, cleanup without adding to state\n * 4. If confirmed, submit the revocation\n * 5. If failed or dropped, cleanup\n *\n * Includes a timeout safety net to prevent memory leaks if the transaction never\n * reaches a terminal state.\n *\n * @param params - The pending revocation parameters.\n * @returns A promise that resolves when the listener is set up.\n */\nexport type GatorPermissionsControllerAddPendingRevocationAction = {\n type: `GatorPermissionsController:addPendingRevocation`;\n handler: GatorPermissionsController['addPendingRevocation'];\n};\n\n/**\n * Submits a revocation directly without requiring an on-chain transaction.\n * Used for already-disabled delegations that don't require an on-chain transaction.\n *\n * This method:\n * 1. Adds the permission context to pending revocations state (disables UI button)\n * 2. Immediately calls submitRevocation to remove from snap storage\n * 3. On success, removes from pending revocations state (re-enables UI button)\n * 4. On failure, keeps in pending revocations so UI can show error/retry state\n *\n * @param params - The revocation parameters containing the permission context.\n * @returns A promise that resolves when the revocation is submitted successfully.\n * @throws {GatorPermissionsProviderError} If the snap request fails.\n */\nexport type GatorPermissionsControllerSubmitDirectRevocationAction = {\n type: `GatorPermissionsController:submitDirectRevocation`;\n handler: GatorPermissionsController['submitDirectRevocation'];\n};\n\n/**\n * Checks if a permission context is in the pending revocations list.\n *\n * @param permissionContext - The permission context to check.\n * @returns `true` if the permission context is pending revocation, `false` otherwise.\n */\nexport type GatorPermissionsControllerIsPendingRevocationAction = {\n type: `GatorPermissionsController:isPendingRevocation`;\n handler: GatorPermissionsController['isPendingRevocation'];\n};\n\n/**\n * Union of all GatorPermissionsController action types.\n */\nexport type GatorPermissionsControllerMethodActions =\n | GatorPermissionsControllerFetchAndUpdateGatorPermissionsAction\n | GatorPermissionsControllerInitializeAction\n | GatorPermissionsControllerDecodePermissionFromPermissionContextForOriginAction\n | GatorPermissionsControllerSubmitRevocationAction\n | GatorPermissionsControllerAddPendingRevocationAction\n | GatorPermissionsControllerSubmitDirectRevocationAction\n | GatorPermissionsControllerIsPendingRevocationAction;\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"GatorPermissionsController.d.ts","sourceRoot":"","sources":["../src/GatorPermissionsController.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,0BAA0B,EAE3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,KAAK,EACV,mDAAmD,EACnD,2CAA2C,EAE5C,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,iCAAiC,EACjC,2BAA2B,EAC5B,MAAM,6BAA6B,CAAC;AACrC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAGlD,OAAO,KAAK,EACV,6CAA6C,EAC7C,8CAA8C,EAC9C,4CAA4C,EAC5C,2CAA2C,EAC3C,6CAA6C,EAC9C,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAO3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAYrE,OAAO,KAAK,EAAE,uCAAuC,EAAE,MAAM,qDAAqD,CAAC;AAKnH,OAAO,KAAK,EAEV,0BAA0B,EAE1B,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAMpB,QAAA,MAAM,cAAc,+BAA+B,CAAC;AA0BpD;;GAEG;AACH,MAAM,MAAM,gCAAgC,GAAG;IAC7C;;OAEG;IACH,wBAAwB,EAAE,uBAAuB,EAAE,CAAC;IACpD;;OAEG;IACH,8BAA8B,CAAC,EAAE,MAAM,CAAC;IACxC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAIF;;GAEG;AACH,MAAM,MAAM,+BAA+B,GAAG;IAC5C;;OAEG;IACH,kBAAkB,EAAE,0BAA0B,EAAE,CAAC;IAEjD;;;OAGG;IACH,0BAA0B,EAAE,OAAO,CAAC;IAEpC;;OAEG;IACH,kBAAkB,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,iBAAiB,EAAE,GAAG,CAAC;KACxB,EAAE,CAAC;IAEJ;;;OAGG;IACH,mBAAmB,EAAE,MAAM,CAAC;CAC7B,CAAC;AAoDF;;;GAGG;AACH,MAAM,MAAM,wCAAwC,GAAG,wBAAwB,CAC7E,OAAO,cAAc,EACrB,+BAA+B,CAChC,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,iCAAiC,GACzC,wCAAwC,GACxC,uCAAuC,CAAC;AAE5C;;;;;;GAMG;AACH,KAAK,cAAc,GACf,iCAAiC,GACjC,2BAA2B,GAC3B,mDAAmD,GACnD,2CAA2C,CAAC;AAEhD;;GAEG;AACH,MAAM,MAAM,0CAA0C,GACpD,0BAA0B,CACxB,OAAO,cAAc,EACrB,+BAA+B,CAChC,CAAC;AAEJ;;;GAGG;AACH,MAAM,MAAM,gCAAgC,GAC1C,0CAA0C,CAAC;AAE7C;;GAEG;AACH,KAAK,aAAa,GACd,0CAA0C,GAC1C,6CAA6C,GAC7C,6CAA6C,GAC7C,8CAA8C,GAC9C,2CAA2C,GAC3C,4CAA4C,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,mCAAmC,GAAG,SAAS,CACzD,OAAO,cAAc,EACrB,iCAAiC,GAAG,cAAc,EAClD,gCAAgC,GAAG,aAAa,CACjD,CAAC;AAEF;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,cAAc,CAC5D,OAAO,cAAc,EACrB,+BAA+B,EAC/B,mCAAmC,CACpC;;IAGC;;;;OAIG;IACH,IAAI,8BAA8B,IAAI,MAAM,CAE3C;IAYD;;;;;;;OAOG;IACH,YAAY,EACV,SAAS,EACT,MAAM,EACN,KAAK,GACN,EAAE;QACD,SAAS,EAAE,mCAAmC,CAAC;QAC/C,MAAM,EAAE,gCAAgC,CAAC;QACzC,KAAK,CAAC,EAAE,OAAO,CAAC,+BAA+B,CAAC,CAAC;KAClD,EAqBA;IAED;;;;OAIG;IACH,IAAI,wBAAwB,IAAI,SAAS,uBAAuB,EAAE,CAEjE;IAiID;;;;;;;OAOG;IACI,8BAA8B,IAAI,OAAO,CAAC,IAAI,CAAC,CAqDrD;IAED;;;;;OAKG;IACU,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAavC;IAED;;;;;;;;;;;;;;;;;;;;;OAqBG;IACI,8CAA8C,CAAC,EACpD,MAAM,EACN,OAAO,EACP,UAAU,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,EACvD,QAAQ,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,EAAE,GACrD,EAAE;QACD,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE;YACR,aAAa,EAAE,MAAM,CAAC;YACtB,MAAM,EAAE,MAAM,CAAC;SAChB,CAAC;QACF,UAAU,EAAE,iBAAiB,CAAC;KAC/B,GAAG,iBAAiB,CAsDpB;IAED;;;;;;OAMG;IACU,gBAAgB,CAC3B,gBAAgB,EAAE,gBAAgB,GACjC,OAAO,CAAC,IAAI,CAAC,CAgEf;IAED;;;;;;;;;;;;;;;;OAgBG;IACU,oBAAoB,CAC/B,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAiPf;IAED;;;;;;;;;;;;;OAaG;IACU,sBAAsB,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY3E;IAED;;;;;OAKG;IACI,mBAAmB,CAAC,iBAAiB,EAAE,GAAG,GAAG,OAAO,CAQ1D;CACF;eAEc,0BAA0B"}
|