# PermissionBuilder

> A builder for constructing a Permission object.

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

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

Defined in: [packages/smart-accounts/src/ma-v2/permissionBuilder.ts:225](https://github.com/alchemyplatform/aa-sdk/blob/v5.x.x/packages/smart-accounts/src/ma-v2/permissionBuilder.ts#L225)

A builder for constructing a Permission object.

## Constructors

### Constructor

```ts
new PermissionBuilder(params): PermissionBuilder;
```

Defined in: [packages/smart-accounts/src/ma-v2/permissionBuilder.ts:247](https://github.com/alchemyplatform/aa-sdk/blob/v5.x.x/packages/smart-accounts/src/ma-v2/permissionBuilder.ts#L247)

Creates a PermissionBuilder instance.

#### Parameters

<table>
  <thead>
    <tr>
      <th align="left">Parameter</th>
      <th align="left">Type</th>
      <th align="left">Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `params`
      </td>

      <td>
        \{ `client`: [`Client`](https://viem.sh)\<[`Transport`](https://viem.sh), [`Chain`](https://viem.sh), [`SmartAccount`](https://viem.sh)>; `deadline?`: `number`; `entityId`: `number`; `hooks?`: `Hook`\[]; `key`: `Key`; `nonce`: `bigint`; `selectors?`: `` `0x${string}` ``\[]; }
      </td>

      <td>
        The parameters for creating a PermissionBuilder instance.
      </td>
    </tr>

    <tr>
      <td>
        `params.client`
      </td>

      <td>
        [`Client`](https://viem.sh)\<[`Transport`](https://viem.sh), [`Chain`](https://viem.sh), [`SmartAccount`](https://viem.sh)>
      </td>

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

    <tr>
      <td>
        `params.deadline?`
      </td>

      <td>
        `number`
      </td>

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

    <tr>
      <td>
        `params.entityId`
      </td>

      <td>
        `number`
      </td>

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

    <tr>
      <td>
        `params.hooks?`
      </td>

      <td>
        `Hook`\[]
      </td>

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

    <tr>
      <td>
        `params.key`
      </td>

      <td>
        `Key`
      </td>

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

    <tr>
      <td>
        `params.nonce`
      </td>

      <td>
        `bigint`
      </td>

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

    <tr>
      <td>
        `params.selectors?`
      </td>

      <td>
        `` `0x${string}` ``\[]
      </td>

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

  </tbody>
</table>

#### Returns

`PermissionBuilder`

## Methods

### addPermission()

```ts
addPermission(permission): this;
```

Defined in: [packages/smart-accounts/src/ma-v2/permissionBuilder.ts:310](https://github.com/alchemyplatform/aa-sdk/blob/v5.x.x/packages/smart-accounts/src/ma-v2/permissionBuilder.ts#L310)

Adds a permission to the permission builder.

#### Parameters

<table>
  <thead>
    <tr>
      <th align="left">Parameter</th>
      <th align="left">Type</th>
      <th align="left">Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `permission`
      </td>

      <td>
        \{ `permission`: [`Permission`](../type-aliases/Permission); }
      </td>

      <td>
        The permission to add.
      </td>
    </tr>

    <tr>
      <td>
        `permission.permission`
      </td>

      <td>
        [`Permission`](../type-aliases/Permission)
      </td>

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

  </tbody>
</table>

#### Returns

`this`

The permission builder instance.

---

### addPermissions()

```ts
addPermissions(permissions): this;
```

Defined in: [packages/smart-accounts/src/ma-v2/permissionBuilder.ts:393](https://github.com/alchemyplatform/aa-sdk/blob/v5.x.x/packages/smart-accounts/src/ma-v2/permissionBuilder.ts#L393)

Adds multiple permissions to the permission builder.

#### Parameters

<table>
  <thead>
    <tr>
      <th align="left">Parameter</th>
      <th align="left">Type</th>
      <th align="left">Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `permissions`
      </td>

      <td>
        \{ `permissions`: [`Permission`](../type-aliases/Permission)\[]; }
      </td>

      <td>
        The permissions to add.
      </td>
    </tr>

    <tr>
      <td>
        `permissions.permissions`
      </td>

      <td>
        [`Permission`](../type-aliases/Permission)\[]
      </td>

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

  </tbody>
</table>

#### Returns

`this`

The permission builder instance.

---

### addSelector()

```ts
addSelector(selector): this;
```

Defined in: [packages/smart-accounts/src/ma-v2/permissionBuilder.ts:293](https://github.com/alchemyplatform/aa-sdk/blob/v5.x.x/packages/smart-accounts/src/ma-v2/permissionBuilder.ts#L293)

Adds a selector to the permission builder.

#### Parameters

<table>
  <thead>
    <tr>
      <th align="left">Parameter</th>
      <th align="left">Type</th>
      <th align="left">Description</th>
    </tr>
  </thead>

  <tbody>
    <tr>
      <td>
        `selector`
      </td>

      <td>
        \{ `selector`: `` `0x${string}` ``; }
      </td>

      <td>
        The selector to add.
      </td>
    </tr>

    <tr>
      <td>
        `selector.selector`
      </td>

      <td>
        `` `0x${string}` ``
      </td>

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

  </tbody>
</table>

#### Returns

`this`

The permission builder instance.

---

### compileDeferred()

```ts
compileDeferred(): Promise<{
  fullPreSignatureDeferredActionPayload: `0x${string}`;
  typedData: MessageDefinition;
}>;
```

Defined in: [packages/smart-accounts/src/ma-v2/permissionBuilder.ts:407](https://github.com/alchemyplatform/aa-sdk/blob/v5.x.x/packages/smart-accounts/src/ma-v2/permissionBuilder.ts#L407)

Compiles the deferred action typed data to sign.

#### Returns

`Promise`\<\{
`fullPreSignatureDeferredActionPayload`: `` `0x${string}` ``;
`typedData`: [`MessageDefinition`](https://viem.sh);
}>

The deferred action typed data and the full pre-signature deferred action payload.

---

### compileInstallArgs()

```ts
compileInstallArgs(): Promise<InstallValidationParams>;
```

Defined in: [packages/smart-accounts/src/ma-v2/permissionBuilder.ts:494](https://github.com/alchemyplatform/aa-sdk/blob/v5.x.x/packages/smart-accounts/src/ma-v2/permissionBuilder.ts#L494)

Compiles the install arguments for the installValidation function.

#### Returns

`Promise`\<[`InstallValidationParams`](../type-aliases/InstallValidationParams)>

The install arguments.

---

### compileRaw()

```ts
compileRaw(): Promise<`0x${string}`>;
```

Defined in: [packages/smart-accounts/src/ma-v2/permissionBuilder.ts:464](https://github.com/alchemyplatform/aa-sdk/blob/v5.x.x/packages/smart-accounts/src/ma-v2/permissionBuilder.ts#L464)

Compiles the raw install arguments for the installValidation function.

#### Returns

`Promise`\<`` `0x${string}` ``>

The raw install arguments.