import { PlaywrightTestConfig } from '@playwright/test';
export { VariableStore } from './VariableStore.js';
export { WebAgent } from './agent/webAgent.js';
export { createAgentContext } from './core/agentContext.js';
export { configureSdk } from './config.js';

/**
 * shiplightConfig() — Playwright config helper
 *
 * Called in playwright.config.ts. Transpiles YAML test files and returns
 * a partial config that makes them discoverable by Playwright.
 */

interface ShiplightOptions {
    /** Directory to scan for .test.yaml files (defaults to cwd) */
    scanDir?: string;
    /** Load .env file automatically (default: true). Set to false if you manage env vars yourself. */
    dotenv?: boolean;
}
/** Custom `use` options that Shiplight adds to Playwright projects. */
interface ShiplightUseOptions {
    /** Path to an auth login script (resolved relative to project root). */
    auth?: string;
    /** Arguments passed to the auth login function. */
    args?: Record<string, unknown>;
    /** Variables available to tests via `testContext` / `$`. Maps to cloud environment variables. */
    variables?: Record<string, string | {
        value: string;
        sensitive?: boolean;
    }>;
}
/**
 * Transpile all .test.yaml files and return a partial Playwright config.
 *
 * Generated files use the `.yaml.spec.ts` extension, which is matched by
 * Playwright's default `testMatch` pattern. If you override `testMatch` in
 * your config, make sure it includes `*.yaml.spec.ts` (or `*.spec.ts`).
 *
 * Usage in playwright.config.ts:
 * ```ts
 * import { defineConfig, shiplightConfig } from 'shiplightai';
 *
 * export default defineConfig({
 *   ...shiplightConfig(),
 *   testDir: './tests',
 * });
 * ```
 */
declare function shiplightConfig(options?: ShiplightOptions): PlaywrightTestConfig<ShiplightUseOptions>;
/**
 * Typed wrapper around Playwright's `defineConfig` that understands Shiplight's
 * custom `use` options (`variables`, `auth`, `args`).
 *
 * Usage in playwright.config.ts:
 * ```ts
 * import { defineConfig, shiplightConfig } from 'shiplightai';
 *
 * export default defineConfig({
 *   ...shiplightConfig(),
 *   testDir: './tests',
 *   projects: [{
 *     name: 'default',
 *     use: { variables: { token: 'abc' } },
 *   }],
 * });
 * ```
 */
declare function defineConfig(config: PlaywrightTestConfig<ShiplightUseOptions>, ...configs: PlaywrightTestConfig<ShiplightUseOptions>[]): PlaywrightTestConfig<ShiplightUseOptions>;

export { type ShiplightOptions, type ShiplightUseOptions, defineConfig, shiplightConfig };
