# KysoqlPlugin (/docs/core/reference/api/interfaces/KysoqlPlugin)



[@kysoql/core](/docs/core/reference/api) / KysoqlPlugin

Hook contract for transforming Kysoql query trees and execution results.

Query transforms run in registration order before compilation. Result
transforms run in the same order after the configured executor resolves.

## Methods [#methods]

<a id="api-transformquery" />

### transformQuery() [#transformquery]

```ts
transformQuery(args): SelectQueryNode;
```

Transforms an operation tree before compilation. Return the original node when no change is needed.

#### Parameters [#parameters]

| Parameter | Type                                                                                       |
| --------- | ------------------------------------------------------------------------------------------ |
| `args`    | [`PluginTransformQueryArgs`](/docs/core/reference/api/interfaces/PluginTransformQueryArgs) |

#### Returns [#returns]

[`SelectQueryNode`](/docs/core/reference/api/type-aliases/SelectQueryNode)

***

<a id="api-transformresult" />

### transformResult()? [#transformresult]

```ts
optional transformResult<Result>(args): Result | Promise<Result>;
```

Transforms an executor result after the query completes.

#### Type Parameters [#type-parameters]

| Type Parameter |
| -------------- |
| `Result`       |

#### Parameters [#parameters-1]

| Parameter | Type                                                                                                    |
| --------- | ------------------------------------------------------------------------------------------------------- |
| `args`    | [`PluginTransformResultArgs`](/docs/core/reference/api/interfaces/PluginTransformResultArgs)\<`Result`> |

#### Returns [#returns-1]

`Result` | `Promise`\<`Result`>
