import type { LokaScriptPlugin, ContextProviderFn } from '../index';
import type { CommandWithParseInput } from '../../runtime/command-adapter';
import type { EventSource } from '../event-source-registry';
export type LanguageCode = 'en' | 'ja' | 'ko' | 'ar' | 'zh' | 'es' | 'pt' | 'fr' | 'de' | 'id' | 'qu' | 'sw' | 'th' | 'tl' | 'tr' | 'vi' | 'bn' | 'hi' | 'it' | 'ms' | 'pl' | 'ru' | 'uk';
export interface MultilingualKeyword {
    primary: string;
    alternatives?: string[];
}
export type MultilingualKeywordMap = Partial<Record<LanguageCode, MultilingualKeyword | string>>;
export interface MultilingualCommand extends CommandWithParseInput {
    keywords?: MultilingualKeywordMap;
    semanticRoles?: {
        primary?: 'patient' | 'destination' | 'content' | 'source';
        optional?: Array<'destination' | 'source' | 'condition' | 'style' | 'quantity'>;
    };
}
export interface MultilingualEventSource extends EventSource {
    patterns?: MultilingualKeywordMap;
}
export interface MultilingualServerPluginOptions {
    languages?: LanguageCode[];
    customKeywords?: {
        respond?: MultilingualKeywordMap;
        redirect?: MultilingualKeywordMap;
        setHeader?: MultilingualKeywordMap;
        request?: MultilingualKeywordMap;
    };
    commands?: MultilingualCommand[];
    eventSources?: MultilingualEventSource[];
    contextProviders?: Array<{
        name: string;
        provide: ContextProviderFn;
        keywords?: MultilingualKeywordMap;
    }>;
}
export declare const respondKeywords: MultilingualKeywordMap;
export declare const redirectKeywords: MultilingualKeywordMap;
export declare const setHeaderKeywords: MultilingualKeywordMap;
export declare const requestKeywords: MultilingualKeywordMap;
export declare class KeywordAliasRegistry {
    private aliases;
    private byCommand;
    register(command: string, keyword: string, language: LanguageCode): void;
    registerFromMap(command: string, keywords: MultilingualKeywordMap): void;
    lookup(keyword: string): {
        command: string;
        language: LanguageCode;
    } | undefined;
    getKeywords(command: string, language: LanguageCode): string[];
    getLanguages(command: string): LanguageCode[];
}
export declare function createMultilingualServerPlugin(options?: MultilingualServerPluginOptions): LokaScriptPlugin & {
    keywordRegistry: KeywordAliasRegistry;
};
export declare function detectLanguage(input: string, keywordRegistry: KeywordAliasRegistry): LanguageCode;
export declare function getWordOrder(language: LanguageCode): 'SVO' | 'SOV' | 'VSO' | 'V2';
export declare function getTextDirection(language: LanguageCode): 'ltr' | 'rtl';
export declare const serverRoles: {
    content: "content";
    destination: "destination";
    status: "status";
    headerName: "headerName";
    headerValue: "headerValue";
    method: "method";
    pattern: "pattern";
};
export declare const roleMarkers: Record<LanguageCode, Partial<Record<string, string[]>>>;
//# sourceMappingURL=index.d.ts.map