# Agent Guidelines Agent guidance for the Wagmi documentation site. > **Communication Style**: Be brief, concise. Maximize information density, minimize tokens. Incomplete sentences acceptable when clear. Remove filler words. Prioritize clarity over grammar. ## Tempo - All Tempo documentation must be added under the `/tempo` sidebar item. ## Wagmi Actions - **All documentation must be based on their corresponding Wagmi actions** from `@wagmi/core/tempo` (`packages/core/src/tempo/`) - Make sure you update `site/tempo/actions/index.md` for new actions ### Query Actions ````md # `namespace.action` description ## Usage ::: code-group ```ts twoslash [example.ts] // @filename: config.ts // @errors: 2322 import type { Config } from 'wagmi' import { tempoTestnet } from 'wagmi/chains' export const config = {} as Config // @filename: example.ts // ---cut--- import { Actions } from 'wagmi/tempo' import { config } from './config' const result = await Actions.amm.action(config, { foo: '0x...', bar: 123n, }) console.log('Result:', result) // @log: Result: 10500000000000000000n ``` <<< @/snippets/react/config-tempo.ts{ts} [config.ts] ::: ## Return Type `bigint` description ## Parameters ### foo - **Type:** `Address` description ### bar - **Type:** `bigint` description ### baz (optional) - **Type:** `Hex` description ## Viem - [`namespace.action`](https://viem.sh/tempo/actions/namespace.action) ```` ### Mutation Actions ````md # `namespace.action` description ## Usage ::: code-group ```ts twoslash [example.ts] // @filename: config.ts // @errors: 2322 import type { Config } from 'wagmi' import { tempoTestnet } from 'wagmi/chains' export const config = {} as Config // ---cut--- // @filename: example.ts import { Actions } from 'wagmi/tempo' import { config } from './config' const result = await Actions.namespace.actionSync(config, { foo: '0x...', bar: 123n, }) console.log('Foo:', result.foo) // @log: Foo: 5250000000000000000n ``` <<< @/snippets/react/config-tempo.ts{ts} [config.ts] ::: ### Asynchronous Usage The example above uses a `*Sync` variant of the action, that will wait for the transaction to be included before returning. If you are optimizing for performance, you should use the non-sync `namespace.action` action and wait for inclusion manually: ```ts import { Actions as viem_Actions } from 'viem/tempo' import { Actions } from 'wagmi/tempo' import { waitForTransactionReceipt } from 'wagmi/actions' const hash = await Actions.namespace.action(config, { foo: '0x...', bar: 123n, }) const receipt = await waitForTransactionReceipt(config, { hash }) const { args: { baz } } = viem_Actions.namespace.action.extractEvent(receipt.logs) ``` ## Return Type description ```ts type ReturnType = { /** description */ baz: bigint } ``` ## Parameters ### foo - **Type:** `Address` description ### bar - **Type:** `bigint` description ## Viem - [`namespace.action`](https://viem.sh/tempo/actions/namespace.action) ```` ### Watch Actions ````md # `namespace.watchAction` description ## Usage ::: code-group ```ts twoslash [example.ts] // @filename: config.ts // @errors: 2322 import type { Config } from 'wagmi' import { tempoTestnet } from 'wagmi/chains' export const config = {} as Config // ---cut--- // @filename: example.ts import { Actions } from 'wagmi/tempo' import { config } from './config' const unwatch = Actions.namespace.watchAction(config, { onAction(args, log) { console.log('args:', args) }, }) // Later, stop watching unwatch() ``` <<< @/snippets/react/config-tempo.ts{ts} [config.ts] ::: ## Return Type `() => void` Returns a function to unsubscribe from the event. ## Parameters ### onAction - **Type:** `function` ```ts declare function onBurn(args: Args, log: Log): void type Args = { /** description */ foo: bigint /** description */ barBaz: bigint } ``` Callback to invoke when action occurs. ### fromBlock (optional) - **Type:** `bigint` Block to start listening from. ### onError (optional) - **Type:** `function` ```ts declare function onError(error: Error): void ``` The callback to call when an error occurred when trying to get for a new block. ### poll (optional) - **Type:** `true` Enable polling mode. ### pollingInterval (optional) - **Type:** `number` Polling frequency (in ms). Defaults to Client's pollingInterval config. ## Viem - [`namespace.action`](https://viem.sh/tempo/actions/namespace.action) ```` ## Wagmi Hooks - **All documentation must be based on their corresponding Wagmi hooks** from `wagmi/tempo` (`packages/react/src/tempo/`) - Make sure you update `site/tempo/hooks/index.md` for new actions ### Query Hooks An example of a generated hook set can be found in `hooks/amm.useLiquidityBalance.ts`. Template example: ````md # `namespace.useHook` description ## Usage ::: code-group ```ts twoslash [example.ts] import { Hooks } from 'wagmi/tempo' const { data: result } = Hooks.namespace.useHook({ foo: '0x...', bar: 123n, }) console.log('Result:', resut) // @log: Result: ... ``` <<< @/snippets/react/config-tempo.ts{ts} [config.ts] ::: ## Return Type See [TanStack Query query docs](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery) for more info hook return types. ### data See [Wagmi Action `namespace.action` Return Type](/tempo/actions/namespace.action#return-type) ## Parameters See [Wagmi Action `namespace.action` Parameters](/tempo/actions/namespace.action#parameters) ### query See the [TanStack Query query docs](https://tanstack.com/query/v5/docs/framework/react/reference/useQuery) for more info hook parameters. ## Action - [`namespace.action`](/tempo/actions/namespace.action) ```` ### Mutation Hooks ````md # `namespace.useHook` description ## Usage ::: code-group ```ts twoslash [example.ts] import { Hooks } from 'wagmi/tempo' const actionNameSync = Hooks.namespace.useHookSync() // Call `mutate` in response to user action (e.g. button click, form submission) actionNameSync.mutate({ foo: '0x...', bar: 123n, }) console.log('Received baz:', actionNameSync.data?.baz) // @log: Received baz: ... ``` <<< @/snippets/react/config-tempo.ts{ts} [config.ts] ::: ### Asynchronous Usage The example above uses a `*Sync` variant of the action, that will wait for the transaction to be included before returning. If you are optimizing for performance, you should use the non-sync `amm.burn` action and wait for inclusion manually: ```ts import { Actions } from 'viem/tempo' import { Hooks } from 'wagmi/tempo' import { useWaitForTransactionReceipt } from 'wagmi' const actionName = Hooks.namespace.useHook() const { data: receipt } = useWaitForTransactionReceipt({ hash: actionName.data }) // Call `mutate` in response to user action (e.g. button click, form submission) actionName.mutate({ foo: '0x...', bar: 123n, }) if (receipt) { const { args: { baz } } = Actions.namespace.action.extractEvent(receipt.logs) } ``` ## Return Type See [TanStack Query mutation docs](https://tanstack.com/query/v5/docs/framework/react/reference/useMutation) for more info hook return types. ### data See [Wagmi Action `namespace.action` Return Type](/tempo/actions/namespace.action#return-type) ### mutate/mutateAsync See [Wagmi Action `namespace.action` Parameters](/tempo/actions/namespace.action#parameters) ## Parameters ### config `Config | undefined` [`Config`](https://wagmi.sh/react/api/createConfig#config) to use instead of retrieving from the nearest [`WagmiProvider`](https://wagmi.sh/react/api/WagmiProvider). ### mutation See the [TanStack Query mutation docs](https://tanstack.com/query/v5/docs/framework/react/reference/useMutation) for more info hook parameters. ## Action - [`namespace.action`](/tempo/actions/namespace.action) ```` ### Watch Hooks ````md # `namespace.useWatchHook` description ## Usage ::: code-group ```ts twoslash [example.ts] import { Hooks } from 'wagmi/tempo' Hooks.amm.useWatchHook({ onAction(args, log) { console.log('args:', args) }, }) ``` <<< @/snippets/react/config-tempo.ts{ts} [config.ts] ::: ## Parameters See [Wagmi Action `namespace.watchAction` Parameters](/tempo/actions/namespace.watchAction#parameters) ### config `Config | undefined` [`Config`](https://wagmi.sh/react/api/createConfig#config) to use instead of retrieving from the nearest [`WagmiProvider`](https://wagmi.sh/react/api/WagmiProvider). ## Action - [`namespace.action`](/tempo/actions/namespace.action) - [`namespace.watchAction`](/tempo/actions/namespace.watchAction) ````