# AllowlistModule

> Overview of AllowlistModule

> For the complete documentation index, see [llms.txt](/docs/llms.txt).

{/* This file is auto-generated by TypeDoc. Do not edit manually. */}

```ts
const AllowlistModule: object;
```

Defined in: [packages/smart-accounts/src/ma-v2/modules/allowlist-module/module.ts:5](https://github.com/alchemyplatform/aa-sdk/blob/v5.x.x/packages/smart-accounts/src/ma-v2/modules/allowlist-module/module.ts#L5)

## Type Declaration

<table>
  <thead>
    <tr>
      <th align="left">Name</th>
      <th align="left">Type</th>
      <th align="left">Default value</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        <a id="abi" /> `abi`
      </td>

      <td>
        readonly \[\{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `internalType`: `"address"`;
        `name`: `"target"`;
        `type`: `"address"`;
        }, \{
        `internalType`: `"address"`;
        `name`: `"account"`;
        `type`: `"address"`;
        }];
        `name`: `"addressAllowlist"`;
        `outputs`: readonly \[\{
        `internalType`: `"bool"`;
        `name`: `"allowed"`;
        `type`: `"bool"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"hasSelectorAllowlist"`;
        `type`: `"bool"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"hasERC20SpendLimit"`;
        `type`: `"bool"`;
        }];
        `stateMutability`: `"view"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `internalType`: `"bytes"`;
        `name`: `"callData"`;
        `type`: `"bytes"`;
        }];
        `name`: `"checkAllowlistCalldata"`;
        `outputs`: readonly \[];
        `stateMutability`: `"view"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `components`: readonly \[\{
        `internalType`: `"address"`;
        `name`: `"target"`;
        `type`: `"address"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"hasSelectorAllowlist"`;
        `type`: `"bool"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"hasERC20SpendLimit"`;
        `type`: `"bool"`;
        }, \{
        `internalType`: `"uint256"`;
        `name`: `"erc20SpendLimit"`;
        `type`: `"uint256"`;
        }, \{
        `internalType`: `"bytes4[]"`;
        `name`: `"selectors"`;
        `type`: `"bytes4[]"`;
        }];
        `internalType`: `"struct AllowlistModule.AllowlistInput[]"`;
        `name`: `"inputs"`;
        `type`: `"tuple[]"`;
        }];
        `name`: `"deleteAllowlist"`;
        `outputs`: readonly \[];
        `stateMutability`: `"nonpayable"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `internalType`: `"address"`;
        `name`: `"target"`;
        `type`: `"address"`;
        }, \{
        `internalType`: `"address"`;
        `name`: `"account"`;
        `type`: `"address"`;
        }];
        `name`: `"erc20SpendLimits"`;
        `outputs`: readonly \[\{
        `internalType`: `"uint256"`;
        `name`: `""`;
        `type`: `"uint256"`;
        }];
        `stateMutability`: `"view"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[];
        `name`: `"moduleId"`;
        `outputs`: readonly \[\{
        `internalType`: `"string"`;
        `name`: `""`;
        `type`: `"string"`;
        }];
        `stateMutability`: `"pure"`;
        `type`: `"function"`;
        }, \{
        `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 \[\{
        `internalType`: `"uint32"`;
        `name`: `""`;
        `type`: `"uint32"`;
        }, \{
        `internalType`: `"bytes"`;
        `name`: `""`;
        `type`: `"bytes"`;
        }];
        `name`: `"postExecutionHook"`;
        `outputs`: readonly \[];
        `stateMutability`: `"pure"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `internalType`: `"address"`;
        `name`: `""`;
        `type`: `"address"`;
        }, \{
        `internalType`: `"uint256"`;
        `name`: `""`;
        `type`: `"uint256"`;
        }, \{
        `internalType`: `"bytes"`;
        `name`: `"data"`;
        `type`: `"bytes"`;
        }];
        `name`: `"preExecutionHook"`;
        `outputs`: readonly \[\{
        `internalType`: `"bytes"`;
        `name`: `""`;
        `type`: `"bytes"`;
        }];
        `stateMutability`: `"nonpayable"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `internalType`: `"address"`;
        `name`: `""`;
        `type`: `"address"`;
        }, \{
        `internalType`: `"uint256"`;
        `name`: `""`;
        `type`: `"uint256"`;
        }, \{
        `internalType`: `"bytes"`;
        `name`: `"data"`;
        `type`: `"bytes"`;
        }, \{
        `internalType`: `"bytes"`;
        `name`: `""`;
        `type`: `"bytes"`;
        }];
        `name`: `"preRuntimeValidationHook"`;
        `outputs`: readonly \[];
        `stateMutability`: `"view"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `""`;
        `type`: `"uint32"`;
        }, \{
        `internalType`: `"address"`;
        `name`: `""`;
        `type`: `"address"`;
        }, \{
        `internalType`: `"bytes32"`;
        `name`: `""`;
        `type`: `"bytes32"`;
        }, \{
        `internalType`: `"bytes"`;
        `name`: `""`;
        `type`: `"bytes"`;
        }];
        `name`: `"preSignatureValidationHook"`;
        `outputs`: readonly \[];
        `stateMutability`: `"pure"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `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`: `"bytes32"`;
        `name`: `"accountGasLimits"`;
        `type`: `"bytes32"`;
        }, \{
        `internalType`: `"uint256"`;
        `name`: `"preVerificationGas"`;
        `type`: `"uint256"`;
        }, \{
        `internalType`: `"bytes32"`;
        `name`: `"gasFees"`;
        `type`: `"bytes32"`;
        }, \{
        `internalType`: `"bytes"`;
        `name`: `"paymasterAndData"`;
        `type`: `"bytes"`;
        }, \{
        `internalType`: `"bytes"`;
        `name`: `"signature"`;
        `type`: `"bytes"`;
        }];
        `internalType`: `"struct PackedUserOperation"`;
        `name`: `"userOp"`;
        `type`: `"tuple"`;
        }, \{
        `internalType`: `"bytes32"`;
        `name`: `""`;
        `type`: `"bytes32"`;
        }];
        `name`: `"preUserOpValidationHook"`;
        `outputs`: readonly \[\{
        `internalType`: `"uint256"`;
        `name`: `""`;
        `type`: `"uint256"`;
        }];
        `stateMutability`: `"view"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `internalType`: `"bytes4"`;
        `name`: `"selector"`;
        `type`: `"bytes4"`;
        }, \{
        `internalType`: `"address"`;
        `name`: `"target"`;
        `type`: `"address"`;
        }, \{
        `internalType`: `"address"`;
        `name`: `"account"`;
        `type`: `"address"`;
        }];
        `name`: `"selectorAllowlist"`;
        `outputs`: readonly \[\{
        `internalType`: `"bool"`;
        `name`: `""`;
        `type`: `"bool"`;
        }];
        `stateMutability`: `"view"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `internalType`: `"address"`;
        `name`: `"target"`;
        `type`: `"address"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"allowed"`;
        `type`: `"bool"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"hasSelectorAllowlist"`;
        `type`: `"bool"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"hasERC20SpendLimit"`;
        `type`: `"bool"`;
        }];
        `name`: `"setAddressAllowlist"`;
        `outputs`: readonly \[];
        `stateMutability`: `"nonpayable"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `internalType`: `"address"`;
        `name`: `"target"`;
        `type`: `"address"`;
        }, \{
        `internalType`: `"bytes4"`;
        `name`: `"selector"`;
        `type`: `"bytes4"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"allowed"`;
        `type`: `"bool"`;
        }];
        `name`: `"setSelectorAllowlist"`;
        `outputs`: readonly \[];
        `stateMutability`: `"nonpayable"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"bytes4"`;
        `name`: `"interfaceId"`;
        `type`: `"bytes4"`;
        }];
        `name`: `"supportsInterface"`;
        `outputs`: readonly \[\{
        `internalType`: `"bool"`;
        `name`: `""`;
        `type`: `"bool"`;
        }];
        `stateMutability`: `"view"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `components`: readonly \[\{
        `internalType`: `"address"`;
        `name`: `"target"`;
        `type`: `"address"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"hasSelectorAllowlist"`;
        `type`: `"bool"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"hasERC20SpendLimit"`;
        `type`: `"bool"`;
        }, \{
        `internalType`: `"uint256"`;
        `name`: `"erc20SpendLimit"`;
        `type`: `"uint256"`;
        }, \{
        `internalType`: `"bytes4[]"`;
        `name`: `"selectors"`;
        `type`: `"bytes4[]"`;
        }];
        `internalType`: `"struct AllowlistModule.AllowlistInput[]"`;
        `name`: `"inputs"`;
        `type`: `"tuple[]"`;
        }];
        `name`: `"updateAllowlist"`;
        `outputs`: readonly \[];
        `stateMutability`: `"nonpayable"`;
        `type`: `"function"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `internalType`: `"address"`;
        `name`: `"token"`;
        `type`: `"address"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"hasERC20SpendLimit"`;
        `type`: `"bool"`;
        }, \{
        `internalType`: `"uint256"`;
        `name`: `"newLimit"`;
        `type`: `"uint256"`;
        }];
        `name`: `"updateLimits"`;
        `outputs`: readonly \[];
        `stateMutability`: `"nonpayable"`;
        `type`: `"function"`;
        }, \{
        `anonymous`: `false`;
        `inputs`: readonly \[\{
        `indexed`: `true`;
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `indexed`: `true`;
        `internalType`: `"address"`;
        `name`: `"account"`;
        `type`: `"address"`;
        }, \{
        `indexed`: `true`;
        `internalType`: `"address"`;
        `name`: `"target"`;
        `type`: `"address"`;
        }, \{
        `components`: readonly \[\{
        `internalType`: `"bool"`;
        `name`: `"allowed"`;
        `type`: `"bool"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"hasSelectorAllowlist"`;
        `type`: `"bool"`;
        }, \{
        `internalType`: `"bool"`;
        `name`: `"hasERC20SpendLimit"`;
        `type`: `"bool"`;
        }];
        `indexed`: `false`;
        `internalType`: `"struct AllowlistModule.AddressAllowlistEntry"`;
        `name`: `"entry"`;
        `type`: `"tuple"`;
        }];
        `name`: `"AddressAllowlistUpdated"`;
        `type`: `"event"`;
        }, \{
        `anonymous`: `false`;
        `inputs`: readonly \[\{
        `indexed`: `true`;
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `indexed`: `true`;
        `internalType`: `"address"`;
        `name`: `"account"`;
        `type`: `"address"`;
        }, \{
        `indexed`: `true`;
        `internalType`: `"address"`;
        `name`: `"token"`;
        `type`: `"address"`;
        }, \{
        `indexed`: `false`;
        `internalType`: `"uint256"`;
        `name`: `"newLimit"`;
        `type`: `"uint256"`;
        }];
        `name`: `"ERC20SpendLimitUpdated"`;
        `type`: `"event"`;
        }, \{
        `anonymous`: `false`;
        `inputs`: readonly \[\{
        `indexed`: `true`;
        `internalType`: `"uint32"`;
        `name`: `"entityId"`;
        `type`: `"uint32"`;
        }, \{
        `indexed`: `true`;
        `internalType`: `"address"`;
        `name`: `"account"`;
        `type`: `"address"`;
        }, \{
        `indexed`: `true`;
        `internalType`: `"bytes24"`;
        `name`: `"targetAndSelector"`;
        `type`: `"bytes24"`;
        }, \{
        `indexed`: `false`;
        `internalType`: `"bool"`;
        `name`: `"allowed"`;
        `type`: `"bool"`;
        }];
        `name`: `"SelectorAllowlistUpdated"`;
        `type`: `"event"`;
        }, \{
        `inputs`: readonly \[];
        `name`: `"AddressNotAllowed"`;
        `type`: `"error"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"address"`;
        `name`: `""`;
        `type`: `"address"`;
        }];
        `name`: `"ERC20NotAllowed"`;
        `type`: `"error"`;
        }, \{
        `inputs`: readonly \[];
        `name`: `"ExceededTokenLimit"`;
        `type`: `"error"`;
        }, \{
        `inputs`: readonly \[];
        `name`: `"InvalidCalldataLength"`;
        `type`: `"error"`;
        }, \{
        `inputs`: readonly \[];
        `name`: `"NoSelectorSpecified"`;
        `type`: `"error"`;
        }, \{
        `inputs`: readonly \[];
        `name`: `"NotImplemented"`;
        `type`: `"error"`;
        }, \{
        `inputs`: readonly \[];
        `name`: `"SelectorNotAllowed"`;
        `type`: `"error"`;
        }, \{
        `inputs`: readonly \[\{
        `internalType`: `"bytes4"`;
        `name`: `""`;
        `type`: `"bytes4"`;
        }];
        `name`: `"SpendingRequestNotAllowed"`;
        `type`: `"error"`;
        }, \{
        `inputs`: readonly \[];
        `name`: `"UnexpectedDataPassed"`;
        `type`: `"error"`;
        }]
      </td>

      <td>
        `allowlistModuleAbi`
      </td>
    </tr>

    <tr>
      <td>
        <a id="buildhook" /> `buildHook()`
      </td>

      <td>
        (`installArgs`, `address`) => `object`
      </td>

      <td>
        ‐
      </td>
    </tr>

    <tr>
      <td>
        <a id="encodeoninstalldata" /> `encodeOnInstallData()`
      </td>

      <td>
        (`args`) => `` `0x${string}` ``
      </td>

      <td>
        ‐
      </td>
    </tr>

    <tr>
      <td>
        <a id="encodeonuninstalldata" /> `encodeOnUninstallData()`
      </td>

      <td>
        (`args`) => `` `0x${string}` ``
      </td>

      <td>
        ‐
      </td>
    </tr>

  </tbody>
</table>