# SessionKeyPermissionsBuilder | @account-kit/smart-contracts

> A builder for creating the hex-encoded data for updating session key permissions.

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

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

Defined in: [account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts:62](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts#L62)

A builder for creating the hex-encoded data for updating session key permissions.

## Constructors

### Constructor

```ts
new SessionKeyPermissionsBuilder(): SessionKeyPermissionsBuilder;
```

#### Returns

`SessionKeyPermissionsBuilder`

## Methods

### addContractAddressAccessEntry()

```ts
addContractAddressAccessEntry(entry): SessionKeyPermissionsBuilder;
```

Defined in: [account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts:110](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts#L110)

Adds a contract access entry to the internal list of contract address access entries.

#### Example

```ts
import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";

const builder = new SessionKeyPermissionsBuilder();
builder.addContractAddressAccessEntry({
  contractAddress: "0x1234",
  isOnList: true,
  checkSelectors: true,
});
```

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `entry`
      </td>

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

      <td>
        the contract access entry to be added
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`SessionKeyPermissionsBuilder`

the instance of the current class for chaining

---

### addContractFunctionAccessEntry()

```ts
addContractFunctionAccessEntry(entry): SessionKeyPermissionsBuilder;
```

Defined in: [account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts:133](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts#L133)

Adds a contract method entry to the `_contractMethodAccessEntrys` array.

#### Example

```ts
import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";

const builder = new SessionKeyPermissionsBuilder();
builder.addContractAddressAccessEntry({
  contractAddress: "0x1234",
  methodSelector: "0x45678",
  isOnList: true,
});
```

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `entry`
      </td>

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

      <td>
        The contract method entry to be added
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`SessionKeyPermissionsBuilder`

The instance of the class for method chaining

---

### addErc20TokenSpendLimit()

```ts
addErc20TokenSpendLimit(limit): SessionKeyPermissionsBuilder;
```

Defined in: [account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts:200](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts#L200)

Adds an ERC20 token spend limit to the list of limits and returns the updated object.

#### Example

```ts
import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";

const builder = new SessionKeyPermissionsBuilder();
builder.addErc20TokenSpendLimit({
  tokenAddress: "0x1234",
  spendLimit: 1000000000000000000n,
  refreshInterval: 3600,
});
```

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `limit`
      </td>

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

      <td>
        The ERC20 token spend limit to be added
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`SessionKeyPermissionsBuilder`

The updated object with the new ERC20 token spend limit

---

### encode()

```ts
encode(): `0x${string}`[];
```

Defined in: [account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts:259](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts#L259)

Encodes various function calls into an array of hexadecimal strings based on the provided permissions and limits.

#### Example

```ts
import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";

const builder = new SessionKeyPermissionsBuilder();
builder.setRequiredPaymaster("0x1234");
const encoded = builder.encode();
```

#### Returns

`` `0x${string}` ``\[]

An array of encoded hexadecimal strings representing the function calls for setting access control, permissions, and limits.

---

### setContractAccessControlType()

```ts
setContractAccessControlType(aclType): SessionKeyPermissionsBuilder;
```

Defined in: [account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts:87](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts#L87)

Sets the access control type for the contract and returns the current instance for method chaining.

#### Example

```ts
import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";

const builder = new SessionKeyPermissionsBuilder();
builder.setContractAccessControlType(SessionKeyAccessListType.ALLOWLIST);
```

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `aclType`
      </td>

      <td>
        [`SessionKeyAccessListType`](../enumerations/SessionKeyAccessListType)
      </td>

      <td>
        The access control type for the session key
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`SessionKeyPermissionsBuilder`

The current instance for method chaining

---

### setGasSpendLimit()

```ts
setGasSpendLimit(limit): SessionKeyPermissionsBuilder;
```

Defined in: [account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts:221](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts#L221)

Sets the gas spend limit and returns the current instance for method chaining.

#### Example

```ts
import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";

const builder = new SessionKeyPermissionsBuilder();
builder.setGasSpendLimit({
  spendLimit: 1000000000000000000n,
  refreshInterval: 3600,
});
```

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `limit`
      </td>

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

      <td>
        The gas spend limit to be set
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`SessionKeyPermissionsBuilder`

The current instance for chaining

---

### setNativeTokenSpendLimit()

```ts
setNativeTokenSpendLimit(limit): SessionKeyPermissionsBuilder;
```

Defined in: [account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts:177](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts#L177)

Sets the native token spend limit and returns the instance for chaining.

#### Example

```ts
import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";

const builder = new SessionKeyPermissionsBuilder();
builder.setNativeTokenSpendLimit({
  spendLimit: 1000000000000000000n,
  refreshInterval: 3600,
});
```

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `limit`
      </td>

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

      <td>
        The limit to set for native token spending
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`SessionKeyPermissionsBuilder`

The instance for chaining

---

### setRequiredPaymaster()

```ts
setRequiredPaymaster(paymaster): SessionKeyPermissionsBuilder;
```

Defined in: [account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts:240](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts#L240)

Sets the required paymaster address.

#### Example

```ts
import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";

const builder = new SessionKeyPermissionsBuilder();
builder.setRequiredPaymaster("0x1234");
```

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `paymaster`
      </td>

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

      <td>
        the address of the paymaster to be set
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`SessionKeyPermissionsBuilder`

the current instance for method chaining

---

### setTimeRange()

```ts
setTimeRange(timeRange): SessionKeyPermissionsBuilder;
```

Defined in: [account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts:155](https://github.com/alchemyplatform/aa-sdk/blob/main/account-kit/smart-contracts/src/msca/plugins/session-key/permissions.ts#L155)

Sets the time range for an object and returns the object itself for chaining.

#### Example

```ts
import { SessionKeyPermissionsBuilder } from "@account-kit/smart-contracts";

const builder = new SessionKeyPermissionsBuilder();
builder.setTimeRange({
  validFrom: Date.now(),
  validUntil: Date.now() + 15 * 60 * 1000,
});
```

#### Parameters

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

  <tbody>
    <tr>
      <td>
        `timeRange`
      </td>

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

      <td>
        The time range to be set
      </td>
    </tr>

  </tbody>
</table>

#### Returns

`SessionKeyPermissionsBuilder`

The current object for method chaining