> ## Documentation Index
> Fetch the complete documentation index at: https://docs.transmissions.wtf/llms.txt
> Use this file to discover all available pages before exploring further.

# signDeferredTokenIntent

> Create a signed EIP-712 token intent. This intent can later be sponsored onchain by another user to create a new token in the channel.

## Usage

<CodeGroup>
  ```typescript app.ts theme={null}
  import { uplinkClient } from './config'

  // create the EIP-712 token intent
  const intent = uplinkClient.createDeferredTokenIntent({
      channelAddress: '0x1234567890123456789012345678901234567890',
      uri: 'new token uri',
      maxSupply: 100n
  })

  // sign the intent
  const signedIntent = await uplinkClient.signDeferredTokenIntent(intent)
  ```

  ```typescript config.ts theme={null}
  import { TransmissionsClient } from '@tx-kit/sdk'
  import { CreatePublicClient, CreateWalletClient } from 'viem'
  import { base } from 'viem/chains'

  const publicClient = createPublicClient({
      chain: base,
      transport: http()
  })

  const walletClient = createWalletClient({
      account, // from local private key or browser wallet
      chain: base,
      transport: http()
  })

  export const { uplinkClient } = new TransmissionsClient({
      publicClient,
      walletClient,
      chain: base
  })
  ```
</CodeGroup>

## Returns

`DeferredTokenIntentWithSignature`

```typescript theme={null}
{ 
 author: Address,
 signature: Hex,
  intent: {
    domain: {
      name: 'Transmissions'
      version: '1'
      chainId: number
      verifyingContract: Address
    }
    types: {
      DeferredTokenPermission: [
        { name: 'uri'; type: 'string' },
        { name: 'maxSupply'; type: 'uint256' },
        { name: 'deadline'; type: 'uint256' },
        { name: 'nonce'; type: 'bytes32' },
      ]
    }
    primaryType: 'DeferredTokenPermission'
    message: {
      uri: string
      maxSupply: bigint
      deadline: bigint
      nonce: Hex
    }
  }
}
```

## Parameters

### channelAddress (intent creation)

* **type**: `string`

The target channel address

```typescript theme={null}
const intent = uplinkClient.createDeferredTokenIntent({
  channelAddress: '0x1234567890123456789012345678901234567890',
  ...
})
```

### uri (intent creation)

* **type**: `string`

The metadata URI of the token

```typescript theme={null}
const intent = uplinkClient.createDeferredTokenIntent({
  uri: 'new token uri',
  ...
})
```

### maxSupply (intent creation)

* **type**: `bigint`

The maximum supply of the token

```typescript theme={null}
const intent = uplinkClient.createDeferredTokenIntent({
  maxSupply: 100n,
  ...
})
```

### intent (signing)

* **type**: `DeferredTokenIntent`

The unsigned token intent

```typescript theme={null}
const signedIntent = uplinkClient.signDeferredTokenIntent(intent)
```
