# Interface: TRPCRouterCallerFactory()<TRoot>

> 

Defined in: [packages/server/src/unstable-core-do-not-import/router.ts:512](https://github.com/trpc/trpc/blob/7c907acfd8b31929214792e3b8c2ad7a8ac72563/packages/server/src/unstable-core-do-not-import/router.ts#L512)

The type of `t.createCallerFactory()`: takes a router and returns its
`createCaller`.

## See

https://trpc.io/docs/server/server-side-calls#create-caller

## Type Parameters

| Type Parameter |
| ------ |
| `TRoot` *extends* [`AnyTRPCRootTypes`](https://trpc.io/docs/typedoc/server/index/type-aliases/AnyTRPCRootTypes.md) |

> **TRPCRouterCallerFactory**\<`TRecord`\>(`router`): `RouterCaller`\<`TRoot`, `TRecord`\>

Defined in: [packages/server/src/unstable-core-do-not-import/router.ts:513](https://github.com/trpc/trpc/blob/7c907acfd8b31929214792e3b8c2ad7a8ac72563/packages/server/src/unstable-core-do-not-import/router.ts#L513)

The type of `t.createCallerFactory()`: takes a router and returns its
`createCaller`.

## Type Parameters

| Type Parameter |
| ------ |
| `TRecord` *extends* [`TRPCRouterRecord`](https://trpc.io/docs/typedoc/server/index/interfaces/TRPCRouterRecord.md) |

## Parameters

| Parameter | Type |
| ------ | ------ |
| `router` | `Pick`\<`Router`\<`TRoot`, `TRecord`\>, `"_def"`\> |

## Returns

`RouterCaller`\<`TRoot`, `TRecord`\>

## See

https://trpc.io/docs/server/server-side-calls#create-caller
