> ## 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.

# getOptimalUpgradePath

> Fetch the optimal upgrade path for a channel

<Tip>
  Check out the [sdk quickstart guide](/sdk/quickstart) for help setting up your client.
</Tip>

## Usage

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

  const data = await downlinkClient.getOptimalUpgradePath({
      address: '0x1234567890123456789012345678901234567890'
  })
  ```

  ```typescript config.ts theme={null}
  import { TransmissionsClient } from '@tx-kit/sdk'
  import { BASE_MAINNET_SUBGRAPH_URL } from '@tx-kit/sdk/constants'
  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 { downlinkClient } = new TransmissionsClient({
      publicClient,
      walletClient,
      chain: base,
      apiConfig: {
          serverUrl: BASE_MAINNET_SUBGRAPH_URL
      }
  })
  ```
</CodeGroup>

## Returns

`IUpgradePath | null`

```typescript theme={null}
type IUpgradePath = {
    id: string
    baseImpl: Address
    upgradeImpl: Address
    blockNumber?: bigint
    blockTimestamp?: bigint
}
```

## Parameters

### address

* **type**: `string`

The target channel address.

```typescript theme={null}
const data = await downlinkClient.getOptimalUpgradePath({
    address: '0x1234567890123456789012345678901234567890',
})
```
