/**
 * TimeBack configuration and enrollment utilities
 */
import type { ResolvedConfig } from 'vite';
import type { TimebackConfig } from '@playcademy/sandbox/config';
import type { TimebackPluginContext } from '../../types';
import type { PlaycademyTimebackOptions } from '../../types/options';
/**
 * Get the effective Timeback ID - defaults to 'mock' if courses are configured
 */
export declare function getEffectiveTimebackId(timeback?: Pick<PlaycademyTimebackOptions, 'id' | 'courses'>): string | undefined;
/**
 * Auto-detect TimeBack configuration from environment variables
 *
 * Checks for local or remote TimeBack setup and returns appropriate config.
 * Returns undefined if no TimeBack configuration is detected.
 */
export declare function detectTimebackOptions(): Partial<TimebackConfig> | undefined;
/**
 * Check if TimeBack credentials are fully configured
 */
export declare function hasTimebackCredentials(): boolean;
/**
 * Validate TimeBack config and warn if real course IDs are used without credentials
 */
export declare function validateTimebackConfig(viteConfig: ResolvedConfig, timeback?: PlaycademyTimebackOptions): void;
type OrgType = 'school' | 'district' | 'department' | 'local' | 'state' | 'national';
/** SDK-compatible organization shape (includes isPrimary for array format) */
interface SdkOrganization {
    id: string;
    name: string | null;
    type: string;
    isPrimary: boolean;
}
/**
 * Resolve organization config to a normalized object.
 * Used by sandbox config which expects a single organization.
 * Merges provided values with defaults - only override what you need.
 */
export declare function resolveOrganization(orgConfig: PlaycademyTimebackOptions['organization']): {
    id: string;
    name?: string;
    type?: OrgType;
};
/**
 * Resolve organization config into SDK-compatible organizations array.
 * In dev mode we always have one primary org; defaults to Playcademy mock org.
 */
export declare function resolveOrganizations(orgConfig: PlaycademyTimebackOptions['organization']): SdkOrganization[];
/**
 * Generate TimeBack data JSON for the game shell.
 *
 * @param context - TimeBack context with base courses and optional overrides
 * @returns JSON string with { role, enrollments, organizations }, or 'null' if no courses
 */
export declare function generateTimebackJson(context?: TimebackPluginContext): string;
export {};
