/**
 * Knex mocking utilities for service tests
 * Provides mock knex instances, table builders, and tracker utilities
 */
import knex from 'knex';
import { type Tracker } from 'knex-mock-client';
/**
 * Creates a mocked knex instance with tracker and schema builder support
 *
 * @returns Object containing the mocked db instance, tracker, and mockSchema
 *
 * @example
 * ```typescript
 * const { db, tracker, mockSchema } = createMockKnex();
 *
 * // Use tracker to mock query responses
 * tracker.on.select('users').response([{ id: 1, name: 'John' }]);
 *
 * // Verify schema operations
 * expect(mockSchema.createTable).toHaveBeenCalled();
 * ```
 */
export declare function createMockKnex(): {
    db: import("vitest").MockedFunction<knex.Knex<any, unknown[]>>;
    tracker: Tracker;
    mockSchemaBuilder: {
        createTable: import("vitest").Mock<(_tableName: any, callback: any) => Promise<void>>;
        dropTable: import("vitest").Mock<(...args: any[]) => any>;
        hasTable: import("vitest").Mock<(...args: any[]) => any>;
        table: import("vitest").Mock<(_tableName: any, callback: any) => Promise<void>>;
        alterTable: import("vitest").Mock<(_tableName: any, callback: any) => Promise<void>>;
        dropTableIfExists: import("vitest").Mock<(...args: any[]) => any>;
        renameTable: import("vitest").Mock<(...args: any[]) => any>;
        raw: import("vitest").Mock<(...args: any[]) => any>;
    };
};
/**
 * Creates a mock table builder for schema operations
 * Used for testing column creation and alteration
 *
 * @returns Mock table builder with chainable methods
 *
 * @example
 * ```typescript
 * const table = createMockTableBuilder();
 * table.string('name', 255).notNullable().index();
 * ```
 */
export declare function createMockTableBuilder(): {
    string: import("vitest").Mock<(...args: any[]) => any>;
    text: import("vitest").Mock<(...args: any[]) => any>;
    integer: import("vitest").Mock<(...args: any[]) => any>;
    bigInteger: import("vitest").Mock<(...args: any[]) => any>;
    float: import("vitest").Mock<(...args: any[]) => any>;
    decimal: import("vitest").Mock<(...args: any[]) => any>;
    boolean: import("vitest").Mock<(...args: any[]) => any>;
    date: import("vitest").Mock<(...args: any[]) => any>;
    dateTime: import("vitest").Mock<(...args: any[]) => any>;
    timestamp: import("vitest").Mock<(...args: any[]) => any>;
    json: import("vitest").Mock<(...args: any[]) => any>;
    jsonb: import("vitest").Mock<(...args: any[]) => any>;
    uuid: import("vitest").Mock<(...args: any[]) => any>;
    increments: import("vitest").Mock<(...args: any[]) => any>;
    bigIncrements: import("vitest").Mock<(...args: any[]) => any>;
    defaultTo: import("vitest").Mock<(...args: any[]) => any>;
    notNullable: import("vitest").Mock<(...args: any[]) => any>;
    nullable: import("vitest").Mock<(...args: any[]) => any>;
    primary: import("vitest").Mock<(...args: any[]) => any>;
    unique: import("vitest").Mock<(...args: any[]) => any>;
    index: import("vitest").Mock<(...args: any[]) => any>;
    alter: import("vitest").Mock<(...args: any[]) => any>;
    dropColumn: import("vitest").Mock<(...args: any[]) => any>;
    dropUnique: import("vitest").Mock<(...args: any[]) => any>;
    dropIndex: import("vitest").Mock<(...args: any[]) => any>;
};
/**
 * Sets up common database operation mock handlers for all system collections
 * Automatically mocks CRUD operations (select, insert, update, delete) for all Directus system collections
 *
 * @param tracker The knex-mock-client tracker instance
 *
 * @example
 * ```typescript
 * const { db, tracker, mockSchema } = createMockKnex();
 * setupSystemCollectionMocks(tracker);
 * // Now all CRUD operations on system collections are mocked
 * ```
 */
export declare function setupSystemCollectionMocks(tracker: Tracker): void;
/**
 * Resets all mock states
 * Should be called in afterEach hooks to clean up between tests
 *
 * @param tracker The knex-mock-client tracker instance
 * @param mockSchema The mock schema object from createMockKnex
 *
 * @example
 * ```typescript
 * const { db, tracker, mockSchema } = createMockKnex();
 *
 * afterEach(() => {
 *   resetMocks(tracker, mockSchema);
 * });
 * ```
 */
export declare function resetKnexMocks(tracker: Tracker, mockSchema: ReturnType<typeof createMockKnex>['mockSchemaBuilder']): void;
/**
 * Creates a mock createTable function for testing table creation
 * Returns a vi.fn() that calls the callback with a mock table builder
 *
 * @returns Mock function for db.schema.createTable
 *
 * @example
 * ```typescript
 * const { db } = createMockKnex();
 * const createTableSpy = mockCreateTable();
 * db.schema.createTable = createTableSpy as any;
 *
 * // Now when createTable is called, it will invoke the callback with a mock table builder
 * await db.schema.createTable('users', (table) => {
 *   table.increments('id');
 *   table.string('name');
 * });
 * ```
 */
export declare function mockCreateTable(): import("vitest").Mock<(_tableName: any, callback: any) => Promise<void>>;
/**
 * Creates a mock alterTable function for testing schema alterations
 * Returns a vi.fn() that calls the callback with a mock table builder
 *
 * @returns Mock function for db.schema.alterTable
 *
 * @example
 * ```typescript
 * const { db } = createMockKnex();
 * const alterTableSpy = mockAlterTable();
 * db.schema.alterTable = alterTableSpy as any;
 *
 * // Now when alterTable is called, it will invoke the callback with a mock table builder
 * await db.schema.alterTable('users', (table) => {
 *   table.string('name');
 * });
 * ```
 */
export declare function mockAlterTable(): import("vitest").Mock<(_tableName: any, callback: any) => Promise<void>>;
/**
 * Creates a mock schema.table function for testing schema operations
 * Returns a vi.fn() that calls the callback with a mock table builder
 *
 * @returns Mock function for db.schema.table
 *
 * @example
 * ```typescript
 * const { db } = createMockKnex();
 * const schemaTableSpy = mockSchemaTable();
 * db.schema.table = schemaTableSpy as any;
 *
 * // Now when schema.table is called, it will invoke the callback with a mock table builder
 * await db.schema.table('users', (table) => {
 *   table.dropColumn('name');
 * });
 * ```
 */
export declare function mockSchemaTable(): import("vitest").Mock<(_tableName: any, callback: any) => Promise<void>>;
