Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions packages/7715-permission-types/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- Export `AllPermissionKeys` type from `@metamask/7715-permission-types`, a union of all permission schema i18n label keys ([#279](https://github.com/MetaMask/smart-accounts-kit/pull/279))

### Changed

- **BREAKING:** `makePermissionDecoderConfigs` now accepts `EnforcerAddressesByName`, which is keyed with specific contract names ([#278](https://github.com/MetaMask/smart-accounts-kit/pull/278))
- Removes `ChecksumEnforcersByChainId` and `DeployedContractsByName` types

## [0.9.0]

### Added
Expand Down
2 changes: 1 addition & 1 deletion packages/7715-permission-types/src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export {
type NativeTokenStreamEnforcers,
createTokenApprovalRevocationCaveats,
type TokenApprovalRevocationEnforcers,
type DeployedContractsByName,
type EnforcerAddressesByName,
type PermissionDecoderConfig,
} from './permissions';
export {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { erc20PayeeRuleDecoder } from '../rules/payee';
import { redeemerRuleDecoder } from '../rules/redeemer';
import type {
ChecksumCaveat,
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
DecodedPermissionData,
PermissionDecoderConfig,
} from '../types';
Expand All @@ -30,7 +30,7 @@ import {
* @returns The erc20-token-allowance permission decoder configuration.
*/
export function makeErc20TokenAllowanceDecoderConfig(
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): PermissionDecoderConfig {
const {
timestampEnforcer,
Expand Down Expand Up @@ -68,7 +68,7 @@ export function makeErc20TokenAllowanceDecoderConfig(
*/
function validateAndDecodeData(
caveats: ChecksumCaveat[],
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): DecodedPermissionData<Erc20TokenAllowancePermission> {
const { erc20PeriodTransferEnforcer, valueLteEnforcer } = contractAddresses;

Expand Down Expand Up @@ -121,7 +121,7 @@ function validateAndDecodeData(
* Enforcers required to build ERC-20 token allowance caveats.
*/
export type Erc20TokenAllowanceEnforcers = Pick<
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
'erc20PeriodTransferEnforcer' | 'valueLteEnforcer'
>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { erc20PayeeRuleDecoder } from '../rules/payee';
import { redeemerRuleDecoder } from '../rules/redeemer';
import type {
ChecksumCaveat,
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
DecodedPermissionData,
PermissionDecoderConfig,
} from '../types';
Expand All @@ -29,7 +29,7 @@ import {
* @returns The erc20-token-periodic permission decoder configuration.
*/
export function makeErc20TokenPeriodicDecoderConfig(
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): PermissionDecoderConfig {
const {
timestampEnforcer,
Expand Down Expand Up @@ -67,7 +67,7 @@ export function makeErc20TokenPeriodicDecoderConfig(
*/
function validateAndDecodeData(
caveats: ChecksumCaveat[],
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): DecodedPermissionData<Erc20TokenPeriodicPermission> {
const { erc20PeriodTransferEnforcer, valueLteEnforcer } = contractAddresses;

Expand Down Expand Up @@ -127,7 +127,7 @@ function validateAndDecodeData(
* Enforcers required to build ERC-20 token periodic caveats.
*/
export type Erc20TokenPeriodicEnforcers = Pick<
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
'erc20PeriodTransferEnforcer' | 'valueLteEnforcer'
>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import { redeemerRuleDecoder } from '../rules/redeemer';
import type {
ChecksumCaveat,
DecodedPermissionData,
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
PermissionDecoderConfig,
} from '../types';
import { getTermsByEnforcer, ZERO_32_BYTES } from '../utils';
Expand All @@ -25,7 +25,7 @@ import { getTermsByEnforcer, ZERO_32_BYTES } from '../utils';
* @returns The erc20-token-stream permission decoder configuration.
*/
export function makeErc20TokenStreamDecoderConfig(
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): PermissionDecoderConfig {
const {
timestampEnforcer,
Expand Down Expand Up @@ -63,7 +63,7 @@ export function makeErc20TokenStreamDecoderConfig(
*/
function validateAndDecodeData(
caveats: ChecksumCaveat[],
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): DecodedPermissionData<Erc20TokenStreamPermission> {
const { erc20StreamingEnforcer, valueLteEnforcer } = contractAddresses;

Expand Down Expand Up @@ -114,7 +114,7 @@ function validateAndDecodeData(
* Enforcers required to build ERC-20 token stream caveats.
*/
export type Erc20TokenStreamEnforcers = Pick<
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
'erc20StreamingEnforcer' | 'valueLteEnforcer'
>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { nativePayeeRuleDecoder } from '../rules/payee';
import { redeemerRuleDecoder } from '../rules/redeemer';
import type {
ChecksumCaveat,
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
DecodedPermissionData,
PermissionDecoderConfig,
} from '../types';
Expand All @@ -30,7 +30,7 @@ import {
* @returns The native-token-allowance permission decoder configuration.
*/
export function makeNativeTokenAllowanceDecoderConfig(
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): PermissionDecoderConfig {
const {
timestampEnforcer,
Expand Down Expand Up @@ -68,7 +68,7 @@ export function makeNativeTokenAllowanceDecoderConfig(
*/
function validateAndDecodeData(
caveats: ChecksumCaveat[],
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): DecodedPermissionData<NativeTokenAllowancePermission> {
const { nativeTokenPeriodTransferEnforcer, exactCalldataEnforcer } =
contractAddresses;
Expand Down Expand Up @@ -125,7 +125,7 @@ function validateAndDecodeData(
* Enforcers required to build native token allowance caveats.
*/
export type NativeTokenAllowanceEnforcers = Pick<
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
'nativeTokenPeriodTransferEnforcer' | 'exactCalldataEnforcer'
>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { nativePayeeRuleDecoder } from '../rules/payee';
import { redeemerRuleDecoder } from '../rules/redeemer';
import type {
ChecksumCaveat,
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
DecodedPermissionData,
PermissionDecoderConfig,
} from '../types';
Expand All @@ -25,7 +25,7 @@ import { getTermsByEnforcer, MAX_PERIOD_DURATION } from '../utils';
* @returns The native-token-periodic permission decoder configuration.
*/
export function makeNativeTokenPeriodicDecoderConfig(
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): PermissionDecoderConfig {
const {
timestampEnforcer,
Expand Down Expand Up @@ -63,7 +63,7 @@ export function makeNativeTokenPeriodicDecoderConfig(
*/
function validateAndDecodeData(
caveats: ChecksumCaveat[],
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): DecodedPermissionData<NativeTokenPeriodicPermission> {
const { nativeTokenPeriodTransferEnforcer, exactCalldataEnforcer } =
contractAddresses;
Expand Down Expand Up @@ -122,7 +122,7 @@ function validateAndDecodeData(
* Enforcers required to build native token periodic caveats.
*/
export type NativeTokenPeriodicEnforcers = Pick<
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
'nativeTokenPeriodTransferEnforcer' | 'exactCalldataEnforcer'
>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ import { nativePayeeRuleDecoder } from '../rules/payee';
import { redeemerRuleDecoder } from '../rules/redeemer';
import type {
ChecksumCaveat,
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
DecodedPermissionData,
PermissionDecoderConfig,
} from '../types';
Expand All @@ -25,7 +25,7 @@ import { getTermsByEnforcer } from '../utils';
* @returns The native-token-stream permission decoder configuration.
*/
export function makeNativeTokenStreamDecoderConfig(
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): PermissionDecoderConfig {
const {
timestampEnforcer,
Expand Down Expand Up @@ -63,7 +63,7 @@ export function makeNativeTokenStreamDecoderConfig(
*/
function validateAndDecodeData(
caveats: ChecksumCaveat[],
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): DecodedPermissionData<NativeTokenStreamPermission> {
const { nativeTokenStreamingEnforcer, exactCalldataEnforcer } =
contractAddresses;
Expand Down Expand Up @@ -114,7 +114,7 @@ function validateAndDecodeData(
* Enforcers required to build native token stream caveats.
*/
export type NativeTokenStreamEnforcers = Pick<
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
'nativeTokenStreamingEnforcer' | 'exactCalldataEnforcer'
>;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import type { TokenApprovalRevocationPermission, Populated } from '../../types';
import { expiryRuleDecoder } from '../rules/expiry';
import type {
ChecksumCaveat,
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
DecodedPermissionData,
PermissionDecoderConfig,
} from '../types';
Expand All @@ -21,7 +21,7 @@ import { getTermsByEnforcer } from '../utils';
* @returns The token-approval-revocation permission decoder configuration.
*/
export function makeTokenApprovalRevocationDecoderConfig(
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): PermissionDecoderConfig {
const { timestampEnforcer, approvalRevocationEnforcer, nonceEnforcer } =
contractAddresses;
Expand Down Expand Up @@ -50,7 +50,7 @@ export function makeTokenApprovalRevocationDecoderConfig(
*/
function validateAndDecodeData(
caveats: ChecksumCaveat[],
contractAddresses: ChecksumEnforcersByChainId,
contractAddresses: EnforcerAddressesByName,
): DecodedPermissionData<TokenApprovalRevocationPermission> {
const { approvalRevocationEnforcer } = contractAddresses;

Expand Down Expand Up @@ -82,7 +82,7 @@ function validateAndDecodeData(
* Enforcers required to build token approval revocation caveats.
*/
export type TokenApprovalRevocationEnforcers = Pick<
ChecksumEnforcersByChainId,
EnforcerAddressesByName,
'approvalRevocationEnforcer'
>;

Expand Down
25 changes: 13 additions & 12 deletions packages/7715-permission-types/src/permissions/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import { makeNativeTokenAllowanceDecoderConfig } from './caveats/nativeTokenAllo
import { makeNativeTokenPeriodicDecoderConfig } from './caveats/nativeTokenPeriodic';
import { makeNativeTokenStreamDecoderConfig } from './caveats/nativeTokenStream';
import { makeTokenApprovalRevocationDecoderConfig } from './caveats/tokenApprovalRevocation';
import type { DeployedContractsByName, PermissionDecoderConfig } from './types';
import { getChecksumEnforcersByChainId } from './utils';
import type { EnforcerAddressesByName, PermissionDecoderConfig } from './types';
import { checksumEnforcerAddresses } from './utils';

export {
createErc20TokenStreamCaveats,
Expand Down Expand Up @@ -40,7 +40,7 @@ export {
export type { ExpiryRule } from './rules/expiry';
export type { PayeeRule } from './rules/payee';
export type { RedeemerRule } from './rules/redeemer';
export type { DeployedContractsByName, PermissionDecoderConfig };
export type { EnforcerAddressesByName, PermissionDecoderConfig };
export {
DAY,
FORTNIGHT,
Expand Down Expand Up @@ -87,24 +87,25 @@ export type {
TokenResolution,
TokenVariant,
} from './schema';

/**
* Builds the canonical set of permission decoders for a chain.
*
* @param contracts - Deployed delegation framework contracts for one chain.
* @returns The full set of permission decoders for the chain.
*/
export const makePermissionDecoderConfigs = (
contracts: DeployedContractsByName,
contracts: EnforcerAddressesByName,
): PermissionDecoderConfig[] => {
const contractAddresses = getChecksumEnforcersByChainId(contracts);
const enforcerAddresses = checksumEnforcerAddresses(contracts);

return [
makeNativeTokenStreamDecoderConfig(contractAddresses),
makeNativeTokenPeriodicDecoderConfig(contractAddresses),
makeNativeTokenAllowanceDecoderConfig(contractAddresses),
makeErc20TokenStreamDecoderConfig(contractAddresses),
makeErc20TokenPeriodicDecoderConfig(contractAddresses),
makeErc20TokenAllowanceDecoderConfig(contractAddresses),
makeTokenApprovalRevocationDecoderConfig(contractAddresses),
makeNativeTokenStreamDecoderConfig(enforcerAddresses),
makeNativeTokenPeriodicDecoderConfig(enforcerAddresses),
makeNativeTokenAllowanceDecoderConfig(enforcerAddresses),
makeErc20TokenStreamDecoderConfig(enforcerAddresses),
makeErc20TokenPeriodicDecoderConfig(enforcerAddresses),
makeErc20TokenAllowanceDecoderConfig(enforcerAddresses),
makeTokenApprovalRevocationDecoderConfig(enforcerAddresses),
];
};
Loading
Loading