# DelegationWalletRegistry

The DelegationWalletRegistry contract keeps track of all the deployed Delegation Wallets and their associated components. It provides a way to retrieve information about a specific wallet, such as its address and the addresses of its components.&#x20;

## Key Functions:

```solidity
function setFactory(address _delegationWalletFactory) external
```

Sets the address of the DelegationWalletFactory contract.

### Parameters:

`_delegationWalletFactory` (address): The address of the DelegationWalletFactory contract.

***

```solidity
function setWallet(
    address _wallet, 
    address _owner, 
    address _guard, 
    address _guardOwner, 
    address _delegationOwner, 
    address _protocolOwner
) external
```

Registers a new Delegation Wallet and its components in the registry.

### Parameters:

`_wallet` (address): The address of the GnosisSafe contract.

`_owner` (address): The address of the wallet owner.

`_guard` (address): The address of the TransactionGuard contract.

`_guardOwner` (address): The address of the GuardOwner contract.

`_delegationOwner` (address): The address of the DelegationOwner contract.

`_protocolOwner` (address): The address of the ProtocolOwner contract.

***

```solidity
function getWallet(address _wallet) 
external 
view 
returns (IDelegationWalletRegistry.Wallet memory)
```

Retrieves the information of a specific Delegation Wallet.

### Parameters:

`_wallet` (address): The address of the GnosisSafe contract.

### Returns:

The Wallet struct containing the addresses of the wallet components.

***

```solidity
function getOwnerWalletAddresses(
    address _owner
) external view returns (address[] memory);
```

Returns the entire set of wallet addresses for a given owner.

### Parameters:

`_owner` (address): The address of the wallet owner.&#x20;

### Returns:

An array of wallet addresses owned by the specified owner.

***

```solidity
function getOwnerWalletAt(
    address _owner, 
    uint256 _index
) 
external 
view 
returns (IDelegationWalletRegistry.Wallet memory);
```

Returns the wallet information at a specific index for a given owner.

### Parameters:

`_owner` (address): The address of the wallet owner.

`_index` (uint256): The index of the wallet in the owner's wallet set. &#x20;

### Returns:

The Wallet struct containing the addresses of the wallet components.

***

## Interactions:

* Receives wallet information from the DelegationWalletFactory during the deployment process.
* Provides functions for retrieving wallet information and component addresses.
