Skip to content
Alchemy Logo

IPluginAbi

const IPluginAbi: readonly [
  {
    inputs: readonly [
      {
        internalType: "bytes";
        name: "data";
        type: "bytes";
      },
    ];
    name: "onInstall";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
  },
  {
    inputs: readonly [
      {
        internalType: "bytes";
        name: "data";
        type: "bytes";
      },
    ];
    name: "onUninstall";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
  },
  {
    inputs: readonly [];
    name: "pluginManifest";
    outputs: readonly [
      {
        components: readonly [
          {
            internalType: "bytes4[]";
            name: "interfaceIds";
            type: "bytes4[]";
          },
          {
            internalType: "bytes4[]";
            name: "dependencyInterfaceIds";
            type: "bytes4[]";
          },
          {
            internalType: "bytes4[]";
            name: "executionFunctions";
            type: "bytes4[]";
          },
          {
            internalType: "bytes4[]";
            name: "permittedExecutionSelectors";
            type: "bytes4[]";
          },
          {
            internalType: "bool";
            name: "permitAnyExternalAddress";
            type: "bool";
          },
          {
            internalType: "bool";
            name: "canSpendNativeToken";
            type: "bool";
          },
          {
            components: readonly [
              {
                internalType: "address";
                name: "externalAddress";
                type: "address";
              },
              {
                internalType: "bool";
                name: "permitAnySelector";
                type: "bool";
              },
              {
                internalType: "bytes4[]";
                name: "selectors";
                type: "bytes4[]";
              },
            ];
            internalType: "struct ManifestExternalCallPermission[]";
            name: "permittedExternalCalls";
            type: "tuple[]";
          },
          {
            components: readonly [
              {
                internalType: "bytes4";
                name: "executionSelector";
                type: "bytes4";
              },
              {
                components: readonly [
                  {
                    internalType: "enum ManifestAssociatedFunctionType";
                    name: "functionType";
                    type: "uint8";
                  },
                  {
                    internalType: "uint8";
                    name: "functionId";
                    type: "uint8";
                  },
                  {
                    internalType: "uint256";
                    name: "dependencyIndex";
                    type: "uint256";
                  },
                ];
                internalType: "struct ManifestFunction";
                name: "associatedFunction";
                type: "tuple";
              },
            ];
            internalType: "struct ManifestAssociatedFunction[]";
            name: "userOpValidationFunctions";
            type: "tuple[]";
          },
          {
            components: readonly [
              {
                internalType: "bytes4";
                name: "executionSelector";
                type: "bytes4";
              },
              {
                components: readonly [
                  {
                    internalType: "enum ManifestAssociatedFunctionType";
                    name: "functionType";
                    type: "uint8";
                  },
                  {
                    internalType: "uint8";
                    name: "functionId";
                    type: "uint8";
                  },
                  {
                    internalType: "uint256";
                    name: "dependencyIndex";
                    type: "uint256";
                  },
                ];
                internalType: "struct ManifestFunction";
                name: "associatedFunction";
                type: "tuple";
              },
            ];
            internalType: "struct ManifestAssociatedFunction[]";
            name: "runtimeValidationFunctions";
            type: "tuple[]";
          },
          {
            components: readonly [
              {
                internalType: "bytes4";
                name: "executionSelector";
                type: "bytes4";
              },
              {
                components: readonly [
                  {
                    internalType: "enum ManifestAssociatedFunctionType";
                    name: "functionType";
                    type: "uint8";
                  },
                  {
                    internalType: "uint8";
                    name: "functionId";
                    type: "uint8";
                  },
                  {
                    internalType: "uint256";
                    name: "dependencyIndex";
                    type: "uint256";
                  },
                ];
                internalType: "struct ManifestFunction";
                name: "associatedFunction";
                type: "tuple";
              },
            ];
            internalType: "struct ManifestAssociatedFunction[]";
            name: "preUserOpValidationHooks";
            type: "tuple[]";
          },
          {
            components: readonly [
              {
                internalType: "bytes4";
                name: "executionSelector";
                type: "bytes4";
              },
              {
                components: readonly [
                  {
                    internalType: "enum ManifestAssociatedFunctionType";
                    name: "functionType";
                    type: "uint8";
                  },
                  {
                    internalType: "uint8";
                    name: "functionId";
                    type: "uint8";
                  },
                  {
                    internalType: "uint256";
                    name: "dependencyIndex";
                    type: "uint256";
                  },
                ];
                internalType: "struct ManifestFunction";
                name: "associatedFunction";
                type: "tuple";
              },
            ];
            internalType: "struct ManifestAssociatedFunction[]";
            name: "preRuntimeValidationHooks";
            type: "tuple[]";
          },
          {
            components: readonly [
              {
                internalType: "bytes4";
                name: "executionSelector";
                type: "bytes4";
              },
              {
                components: readonly [
                  {
                    internalType: "enum ManifestAssociatedFunctionType";
                    name: "functionType";
                    type: "uint8";
                  },
                  {
                    internalType: "uint8";
                    name: "functionId";
                    type: "uint8";
                  },
                  {
                    internalType: "uint256";
                    name: "dependencyIndex";
                    type: "uint256";
                  },
                ];
                internalType: "struct ManifestFunction";
                name: "preExecHook";
                type: "tuple";
              },
              {
                components: readonly [
                  {
                    internalType: "enum ManifestAssociatedFunctionType";
                    name: "functionType";
                    type: "uint8";
                  },
                  {
                    internalType: "uint8";
                    name: "functionId";
                    type: "uint8";
                  },
                  {
                    internalType: "uint256";
                    name: "dependencyIndex";
                    type: "uint256";
                  },
                ];
                internalType: "struct ManifestFunction";
                name: "postExecHook";
                type: "tuple";
              },
            ];
            internalType: "struct ManifestExecutionHook[]";
            name: "executionHooks";
            type: "tuple[]";
          },
        ];
        internalType: "struct PluginManifest";
        name: "";
        type: "tuple";
      },
    ];
    stateMutability: "pure";
    type: "function";
  },
  {
    inputs: readonly [];
    name: "pluginMetadata";
    outputs: readonly [
      {
        components: readonly [
          {
            internalType: "string";
            name: "name";
            type: "string";
          },
          {
            internalType: "string";
            name: "version";
            type: "string";
          },
          {
            internalType: "string";
            name: "author";
            type: "string";
          },
          {
            components: readonly [
              {
                internalType: "bytes4";
                name: "functionSelector";
                type: "bytes4";
              },
              {
                internalType: "string";
                name: "permissionDescription";
                type: "string";
              },
            ];
            internalType: "struct SelectorPermission[]";
            name: "permissionDescriptors";
            type: "tuple[]";
          },
        ];
        internalType: "struct PluginMetadata";
        name: "";
        type: "tuple";
      },
    ];
    stateMutability: "pure";
    type: "function";
  },
  {
    inputs: readonly [
      {
        internalType: "uint8";
        name: "functionId";
        type: "uint8";
      },
      {
        internalType: "bytes";
        name: "preExecHookData";
        type: "bytes";
      },
    ];
    name: "postExecutionHook";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
  },
  {
    inputs: readonly [
      {
        internalType: "uint8";
        name: "functionId";
        type: "uint8";
      },
      {
        internalType: "address";
        name: "sender";
        type: "address";
      },
      {
        internalType: "uint256";
        name: "value";
        type: "uint256";
      },
      {
        internalType: "bytes";
        name: "data";
        type: "bytes";
      },
    ];
    name: "preExecutionHook";
    outputs: readonly [
      {
        internalType: "bytes";
        name: "";
        type: "bytes";
      },
    ];
    stateMutability: "nonpayable";
    type: "function";
  },
  {
    inputs: readonly [
      {
        internalType: "uint8";
        name: "functionId";
        type: "uint8";
      },
      {
        internalType: "address";
        name: "sender";
        type: "address";
      },
      {
        internalType: "uint256";
        name: "value";
        type: "uint256";
      },
      {
        internalType: "bytes";
        name: "data";
        type: "bytes";
      },
    ];
    name: "preRuntimeValidationHook";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
  },
  {
    inputs: readonly [
      {
        internalType: "uint8";
        name: "functionId";
        type: "uint8";
      },
      {
        components: readonly [
          {
            internalType: "address";
            name: "sender";
            type: "address";
          },
          {
            internalType: "uint256";
            name: "nonce";
            type: "uint256";
          },
          {
            internalType: "bytes";
            name: "initCode";
            type: "bytes";
          },
          {
            internalType: "bytes";
            name: "callData";
            type: "bytes";
          },
          {
            internalType: "uint256";
            name: "callGasLimit";
            type: "uint256";
          },
          {
            internalType: "uint256";
            name: "verificationGasLimit";
            type: "uint256";
          },
          {
            internalType: "uint256";
            name: "preVerificationGas";
            type: "uint256";
          },
          {
            internalType: "uint256";
            name: "maxFeePerGas";
            type: "uint256";
          },
          {
            internalType: "uint256";
            name: "maxPriorityFeePerGas";
            type: "uint256";
          },
          {
            internalType: "bytes";
            name: "paymasterAndData";
            type: "bytes";
          },
          {
            internalType: "bytes";
            name: "signature";
            type: "bytes";
          },
        ];
        internalType: "struct UserOperation";
        name: "userOp";
        type: "tuple";
      },
      {
        internalType: "bytes32";
        name: "userOpHash";
        type: "bytes32";
      },
    ];
    name: "preUserOpValidationHook";
    outputs: readonly [
      {
        internalType: "uint256";
        name: "";
        type: "uint256";
      },
    ];
    stateMutability: "nonpayable";
    type: "function";
  },
  {
    inputs: readonly [
      {
        internalType: "uint8";
        name: "functionId";
        type: "uint8";
      },
      {
        internalType: "address";
        name: "sender";
        type: "address";
      },
      {
        internalType: "uint256";
        name: "value";
        type: "uint256";
      },
      {
        internalType: "bytes";
        name: "data";
        type: "bytes";
      },
    ];
    name: "runtimeValidationFunction";
    outputs: readonly [];
    stateMutability: "nonpayable";
    type: "function";
  },
  {
    inputs: readonly [
      {
        internalType: "uint8";
        name: "functionId";
        type: "uint8";
      },
      {
        components: readonly [
          {
            internalType: "address";
            name: "sender";
            type: "address";
          },
          {
            internalType: "uint256";
            name: "nonce";
            type: "uint256";
          },
          {
            internalType: "bytes";
            name: "initCode";
            type: "bytes";
          },
          {
            internalType: "bytes";
            name: "callData";
            type: "bytes";
          },
          {
            internalType: "uint256";
            name: "callGasLimit";
            type: "uint256";
          },
          {
            internalType: "uint256";
            name: "verificationGasLimit";
            type: "uint256";
          },
          {
            internalType: "uint256";
            name: "preVerificationGas";
            type: "uint256";
          },
          {
            internalType: "uint256";
            name: "maxFeePerGas";
            type: "uint256";
          },
          {
            internalType: "uint256";
            name: "maxPriorityFeePerGas";
            type: "uint256";
          },
          {
            internalType: "bytes";
            name: "paymasterAndData";
            type: "bytes";
          },
          {
            internalType: "bytes";
            name: "signature";
            type: "bytes";
          },
        ];
        internalType: "struct UserOperation";
        name: "userOp";
        type: "tuple";
      },
      {
        internalType: "bytes32";
        name: "userOpHash";
        type: "bytes32";
      },
    ];
    name: "userOpValidationFunction";
    outputs: readonly [
      {
        internalType: "uint256";
        name: "";
        type: "uint256";
      },
    ];
    stateMutability: "nonpayable";
    type: "function";
  },
];

Defined in: account-kit/smart-contracts/src/msca/abis/IPlugin.ts:1

Was this page helpful?