{"version":3,"sources":["/home/runner/work/delegation-toolkit/delegation-toolkit/packages/delegation-toolkit/dist/chunk-CTZHYDS4.cjs","../src/write.ts","../src/delegatorEnvironment.ts"],"names":["SimpleFactory","DelegationManager"],"mappings":"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","file":"/home/runner/work/delegation-toolkit/delegation-toolkit/packages/delegation-toolkit/dist/chunk-CTZHYDS4.cjs","sourcesContent":[null,"import { SimpleFactory, DelegationManager } from '@metamask/delegation-abis';\nimport type { Address, Chain, Hex, PublicClient, WalletClient } from 'viem';\n\nimport { encodePermissionContexts } from './delegation';\nimport type { ExecutionStruct, ExecutionMode } from './executions';\nimport { encodeExecutionCalldatas } from './executions';\nimport type { Delegation, ContractMetaData, Redemption } from './types';\n\n/**\n * Deploys a contract using the SimpleFactory contract.\n * @param walletClient - The wallet client to use for deployment.\n * @param publicClient - The public client to use for simulation.\n * @param simpleFactoryAddress - The address of the SimpleFactory contract.\n * @param creationCode - The creation code for the contract to deploy.\n * @param salt - The salt to use for deterministic deployment.\n * @returns The transaction hash of the deployment.\n */\nexport const deployWithSimpleFactory = async (\n  walletClient: WalletClient,\n  publicClient: PublicClient,\n  simpleFactoryAddress: Address,\n  creationCode: Hex,\n  salt: Hex,\n) => {\n  const { request } = await publicClient.simulateContract({\n    account: walletClient.account,\n    address: simpleFactoryAddress,\n    abi: SimpleFactory.abi,\n    functionName: 'deploy',\n    args: [creationCode, salt],\n  });\n  return await walletClient.writeContract(request);\n};\n\n/**\n * Redeems a delegation to execute the provided executions.\n * @param walletClient - The wallet client to use for redemption.\n * @param publicClient - The public client to use for simulation.\n * @param delegationManagerAddress - The address of the DelegationManager contract.\n * @param redemptions - The redemptions to execute, containing permission contexts, executions, and modes.\n * @returns The transaction hash of the redemption.\n */\nexport const redeemDelegations = async (\n  walletClient: WalletClient,\n  publicClient: PublicClient,\n  delegationManagerAddress: Address,\n  redemptions: Redemption[],\n) => {\n  if (redemptions.length === 0) {\n    throw new Error('RedeemDelegations invalid zero redemptions');\n  }\n\n  const permissionContexts: Delegation[][] = [];\n  const executionsBatch: ExecutionStruct[][] = [];\n  const executionModes: ExecutionMode[] = [];\n\n  redemptions.forEach((redemption) => {\n    permissionContexts.push(redemption.permissionContext);\n    executionsBatch.push(redemption.executions);\n    executionModes.push(redemption.mode);\n  });\n\n  const encodedPermissionContexts =\n    encodePermissionContexts(permissionContexts);\n  const executionCalldatas = encodeExecutionCalldatas(executionsBatch);\n\n  const { request } = await publicClient.simulateContract({\n    account: walletClient.account,\n    address: delegationManagerAddress,\n    abi: DelegationManager.abi,\n    functionName: 'redeemDelegations',\n    args: [encodedPermissionContexts, executionModes, executionCalldatas],\n  });\n  return await walletClient.writeContract(request);\n};\n\n/**\n * Deploys a contract to the blockchain.\n * @param walletClient - The wallet client to use for deployment.\n * @param publicClient - The public client to use for transaction receipt.\n * @param chain - The chain to deploy on.\n * @param contractMetadata - The metadata of the contract to deploy.\n * @param contractMetadata.bytecode - The bytecode of the contract to deploy.\n * @param contractMetadata.abi - The ABI of the contract to deploy.\n * @param args - The constructor arguments for the contract.\n * @returns An object containing the deployed contract address, transaction hash, and receipt.\n */\nexport async function deployContract(\n  walletClient: WalletClient,\n  publicClient: PublicClient,\n  chain: Chain,\n  { bytecode, abi }: ContractMetaData,\n  args: any[] = [],\n) {\n  if (!walletClient.account) {\n    throw new Error('Wallet client account is required');\n  }\n\n  const hash = await walletClient.deployContract({\n    abi,\n    bytecode,\n    args,\n    account: walletClient.account,\n    chain,\n  });\n\n  const receipt = await publicClient.waitForTransactionReceipt({\n    hash,\n  });\n\n  if (!receipt.contractAddress) {\n    throw new Error('No contract address in receipt');\n  }\n\n  return { address: receipt.contractAddress, hash, receipt };\n}\n","import {\n  EntryPoint,\n  SimpleFactory,\n  DelegationManager,\n  MultiSigDeleGator,\n  HybridDeleGator,\n  EIP7702StatelessDeleGator,\n  SCL_RIP7212,\n  AllowedTargetsEnforcer,\n  AllowedMethodsEnforcer,\n  DeployedEnforcer,\n  TimestampEnforcer,\n  NonceEnforcer,\n  AllowedCalldataEnforcer,\n  BlockNumberEnforcer,\n  LimitedCallsEnforcer,\n  ERC20BalanceChangeEnforcer,\n  ERC20StreamingEnforcer,\n  IdEnforcer,\n  ERC20TransferAmountEnforcer,\n  ValueLteEnforcer,\n  NativeTokenTransferAmountEnforcer,\n  NativeBalanceChangeEnforcer,\n  NativeTokenStreamingEnforcer,\n  NativeTokenPaymentEnforcer,\n  RedeemerEnforcer,\n  ArgsEqualityCheckEnforcer,\n  ERC721BalanceChangeEnforcer,\n  ERC721TransferEnforcer,\n  ERC1155BalanceChangeEnforcer,\n  OwnershipTransferEnforcer,\n  SpecificActionERC20TransferBatchEnforcer,\n  ERC20PeriodTransferEnforcer,\n  NativeTokenPeriodTransferEnforcer,\n  ExactCalldataBatchEnforcer,\n  ExactCalldataEnforcer,\n  ExactExecutionEnforcer,\n  ExactExecutionBatchEnforcer,\n  MultiTokenPeriodEnforcer,\n} from '@metamask/delegation-abis';\nimport { DELEGATOR_CONTRACTS } from '@metamask/delegation-deployments';\nimport type { Chain, Hex, PublicClient, WalletClient } from 'viem';\n\nimport type { ContractMetaData, DeleGatorEnvironment } from './types';\nimport { deployContract } from './write';\n\ntype SupportedVersion = '1.0.0' | '1.1.0' | '1.2.0' | '1.3.0';\nexport const PREFERRED_VERSION: SupportedVersion = '1.3.0';\n\nconst contractOverrideMap: Map<string, DeleGatorEnvironment> = new Map();\n\nconst getContractOverrideKey = (chainId: number, version: SupportedVersion) =>\n  `${version}:${chainId}`;\n\n/**\n * Overrides the deployed environment for a specific chain and version.\n * @param chainId - The chain ID to override.\n * @param version - The version of the environment to override.\n * @param environment - The environment to use as override.\n */\nexport function overrideDeployedEnvironment(\n  chainId: number,\n  version: SupportedVersion,\n  environment: DeleGatorEnvironment,\n) {\n  contractOverrideMap.set(\n    getContractOverrideKey(chainId, version),\n    environment,\n  );\n}\n\n/**\n * Gets the DeleGator environment for the specified chain and version.\n * @param chainId - The chain ID to get the environment for.\n * @param version - The version of the environment to get.\n * @returns The DeleGator environment.\n */\nexport function getDeleGatorEnvironment(\n  chainId: number,\n  version: SupportedVersion = PREFERRED_VERSION,\n): DeleGatorEnvironment {\n  const overrideKey = getContractOverrideKey(chainId, version);\n\n  const overriddenContracts = contractOverrideMap.get(overrideKey);\n  if (overriddenContracts) {\n    return overriddenContracts;\n  }\n\n  const contracts = DELEGATOR_CONTRACTS[version]?.[chainId];\n  if (!contracts) {\n    throw new Error(\n      `No contracts found for version ${version} chain ${chainId}`,\n    );\n  }\n  return getDeleGatorEnvironmentV1(contracts);\n}\n\n/**\n * Creates a DeleGator environment from contract addresses.\n * @param contracts - The contract addresses to create the environment from.\n * @returns The created DeleGator environment.\n */\nexport function getDeleGatorEnvironmentV1(contracts: {\n  [contract: string]: Hex;\n}) {\n  return {\n    DelegationManager: contracts.DelegationManager,\n    EntryPoint: contracts.EntryPoint,\n    SimpleFactory: contracts.SimpleFactory,\n    implementations: {\n      MultiSigDeleGatorImpl: contracts.MultiSigDeleGatorImpl,\n      HybridDeleGatorImpl: contracts.HybridDeleGatorImpl,\n      EIP7702StatelessDeleGatorImpl: contracts.EIP7702StatelessDeleGatorImpl,\n    },\n    caveatEnforcers: {\n      AllowedCalldataEnforcer: contracts.AllowedCalldataEnforcer,\n      AllowedMethodsEnforcer: contracts.AllowedMethodsEnforcer,\n      AllowedTargetsEnforcer: contracts.AllowedTargetsEnforcer,\n      ArgsEqualityCheckEnforcer: contracts.ArgsEqualityCheckEnforcer,\n      BlockNumberEnforcer: contracts.BlockNumberEnforcer,\n      DeployedEnforcer: contracts.DeployedEnforcer,\n      ERC20BalanceChangeEnforcer: contracts.ERC20BalanceChangeEnforcer,\n      ERC20TransferAmountEnforcer: contracts.ERC20TransferAmountEnforcer,\n      ERC20StreamingEnforcer: contracts.ERC20StreamingEnforcer,\n      ERC721BalanceChangeEnforcer: contracts.ERC721BalanceChangeEnforcer,\n      ERC721TransferEnforcer: contracts.ERC721TransferEnforcer,\n      ERC1155BalanceChangeEnforcer: contracts.ERC1155BalanceChangeEnforcer,\n      IdEnforcer: contracts.IdEnforcer,\n      LimitedCallsEnforcer: contracts.LimitedCallsEnforcer,\n      NonceEnforcer: contracts.NonceEnforcer,\n      TimestampEnforcer: contracts.TimestampEnforcer,\n      ValueLteEnforcer: contracts.ValueLteEnforcer,\n      NativeTokenTransferAmountEnforcer:\n        contracts.NativeTokenTransferAmountEnforcer,\n      NativeBalanceChangeEnforcer: contracts.NativeBalanceChangeEnforcer,\n      NativeTokenStreamingEnforcer: contracts.NativeTokenStreamingEnforcer,\n      NativeTokenPaymentEnforcer: contracts.NativeTokenPaymentEnforcer,\n      OwnershipTransferEnforcer: contracts.OwnershipTransferEnforcer,\n      RedeemerEnforcer: contracts.RedeemerEnforcer,\n      SpecificActionERC20TransferBatchEnforcer:\n        contracts.SpecificActionERC20TransferBatchEnforcer,\n      ERC20PeriodTransferEnforcer: contracts.ERC20PeriodTransferEnforcer,\n      NativeTokenPeriodTransferEnforcer:\n        contracts.NativeTokenPeriodTransferEnforcer,\n      ExactCalldataBatchEnforcer: contracts.ExactCalldataBatchEnforcer,\n      ExactCalldataEnforcer: contracts.ExactCalldataEnforcer,\n      ExactExecutionEnforcer: contracts.ExactExecutionEnforcer,\n      ExactExecutionBatchEnforcer: contracts.ExactExecutionBatchEnforcer,\n      MultiTokenPeriodEnforcer: contracts.MultiTokenPeriodEnforcer,\n    },\n  } as DeleGatorEnvironment;\n}\n\nexport type DeployedContract = {\n  name: string;\n  address: string;\n};\n\n/**\n * Deploys the contracts needed for the Delegation Framework and DeleGator SCA to be functional as well as all Caveat Enforcers.\n * @param walletClient - The wallet client to use for deployment.\n * @param publicClient - The public client to use for deployment.\n * @param chain - The chain to deploy to.\n * @param deployedContracts - Optional map of already deployed contracts.\n * @returns A promise that resolves when all contracts are deployed.\n */\nexport async function deployDeleGatorEnvironment(\n  walletClient: WalletClient,\n  publicClient: PublicClient,\n  chain: Chain,\n  deployedContracts: { [contract: string]: Hex } = {},\n) {\n  const deployContractCurried = async (\n    name: string,\n    contract: ContractMetaData,\n    params: any[] = [],\n  ) => {\n    const existingAddress = deployedContracts[name];\n    if (existingAddress) {\n      return {\n        address: existingAddress,\n        name,\n      };\n    }\n\n    const deployedContract = await deployContract(\n      walletClient,\n      publicClient,\n      chain,\n      contract,\n      params,\n    );\n\n    const newDeployedContracts = { ...deployedContracts };\n    newDeployedContracts[name] = deployedContract.address;\n    Object.assign(deployedContracts, newDeployedContracts);\n\n    return { ...deployedContract, name };\n  };\n\n  // Deploy v1.3.0 DeleGator contracts\n  // - deploy standalone contracts\n  const standaloneContracts = {\n    SimpleFactory,\n    AllowedCalldataEnforcer,\n    AllowedTargetsEnforcer,\n    AllowedMethodsEnforcer,\n    ArgsEqualityCheckEnforcer,\n    DeployedEnforcer,\n    TimestampEnforcer,\n    BlockNumberEnforcer,\n    LimitedCallsEnforcer,\n    ERC20BalanceChangeEnforcer,\n    ERC20TransferAmountEnforcer,\n    ERC20StreamingEnforcer,\n    ERC721BalanceChangeEnforcer,\n    ERC721TransferEnforcer,\n    ERC1155BalanceChangeEnforcer,\n    IdEnforcer,\n    NonceEnforcer,\n    ValueLteEnforcer,\n    NativeTokenTransferAmountEnforcer,\n    NativeBalanceChangeEnforcer,\n    NativeTokenStreamingEnforcer,\n    OwnershipTransferEnforcer,\n    RedeemerEnforcer,\n    SpecificActionERC20TransferBatchEnforcer,\n    ERC20PeriodTransferEnforcer,\n    NativeTokenPeriodTransferEnforcer,\n    ExactCalldataBatchEnforcer,\n    ExactCalldataEnforcer,\n    ExactExecutionEnforcer,\n    ExactExecutionBatchEnforcer,\n    MultiTokenPeriodEnforcer,\n  };\n  for (const [name, contract] of Object.entries(standaloneContracts)) {\n    await deployContractCurried(name, contract);\n  }\n\n  // - deploy dependencies\n  const delegationManager = await deployContractCurried(\n    'DelegationManager',\n    DelegationManager,\n    [walletClient.account?.address],\n  );\n\n  // - NativeTokenPaymentEnforcer DelegationManager and ArgsEqualityCheckEnforcer as constructor args\n  await deployContractCurried(\n    'NativeTokenPaymentEnforcer',\n    NativeTokenPaymentEnforcer,\n    [delegationManager.address, deployedContracts.ArgsEqualityCheckEnforcer],\n  );\n\n  const entryPoint = await deployContractCurried('EntryPoint', EntryPoint);\n\n  // This is a hack to work around the SCL_RIP7212 being deployed as a library.\n  // Forge handles this gracefully, but in the tests we need to manually link\n  // the library.\n  // We don't use the curried function here because we don't need it added to\n  // the environment.\n  const { address: sclRIP7212 } = await deployContract(\n    walletClient,\n    publicClient,\n    chain,\n    SCL_RIP7212,\n    [],\n  );\n\n  // replace linked library address in bytecode https://docs.soliditylang.org/en/latest/using-the-compiler.html#library-linking\n  const hybridDeleGatorWithLinkedLibrary = {\n    ...HybridDeleGator,\n    bytecode: HybridDeleGator.bytecode.replace(\n      /__\\$b8f96b288d4d0429e38b8ed50fd423070f\\$__/gu,\n      sclRIP7212.slice(2),\n    ) as Hex,\n  };\n\n  // - deploy DeleGator implementations\n  await deployContractCurried(\n    'HybridDeleGatorImpl',\n    hybridDeleGatorWithLinkedLibrary,\n    [delegationManager.address, entryPoint.address],\n  );\n\n  await deployContractCurried('MultiSigDeleGatorImpl', MultiSigDeleGator, [\n    delegationManager.address,\n    entryPoint.address,\n  ]);\n\n  await deployContractCurried(\n    'EIP7702StatelessDeleGatorImpl',\n    EIP7702StatelessDeleGator,\n    [delegationManager.address, entryPoint.address],\n  );\n\n  // Format deployments\n  return getDeleGatorEnvironmentV1(deployedContracts);\n}\n"]}