# Domains

### Calculate fees

You can calculate the fees for your domain with:

```typescript
sonst domainName = 'supercool.mpc'
const { fees, symbol, feesLabel } = await config.sdk.domainRepository.calculateMintFees(domainName, 'ETH')
console.log(`Fees amount ${feesLabel} for ${symbol} with raw fees as ${fees}`)
```

### Approve fees

To register a domain you need to first approve the fees with:

```typescript
const domainName = 'supercool.mpc'
const { transactionHash, fetchResult } = await config.sdk.domainRepository.approveMintFees(domainName, 'ETH')
const result = await fetchResult
console.log(`Fees approval submitted: ${result}`);
```

### Register a Domain

Minting a domain involves registering a new domain in the Meta Names system. You can also specify a parent domain during the registration. Here's how you can use the `register` function to achieve this:

#### Register a new domain without a parent:

```javascript
const { transactionHash, fetchResult } = await metaNamesSdk.domainRepository.register({
  domain: 'randomName',
  to: 'recipientAddress',
});
console.log(`Transaction hash: ${transactionHash}`);
const result = await fetchResult;
console.log(`Domain registration submitted: ${result}`);
```

#### Register a new domain with a parent domain:

```javascript
const { transactionHash, fetchResult } = await metaNamesSdk.domainRepository.register({
  domain: 'subname',
  to: 'recipientAddress',
  parentDomain: 'parentDomainName',
});
console.log(`Transaction hash: ${transactionHash}`);
const result = await fetchResult;
console.log(`Domain registration submitted: ${result}`);
```

Replace `'randomName'`, `'recipientAddress'`, and `'parentDomainName'` with actual values.

### Finding Domain Information

You can use the `find` function to retrieve information about a specific domain:

```javascript
const data = await metaNamesSdk.domainRepository.find('domainName');
console.log(`Domain data: ${data}`);
```

Replace `'domainName'` with the domain name you want to find information for.
