UNPKG

@translated/lara

Version:

Official Lara SDK for JavaScript and Node.js

162 lines (161 loc) • 5.66 kB
import { AudioTranslator } from "./audioTranslator"; import type { AccessKey, AuthToken } from "./credentials"; import { Documents } from "./documents"; import { Glossaries } from "./glossaries"; import { ImageTranslator } from "./imageTranslator"; import { Memories } from "./memories"; import { type LaraClient } from "./net/lara"; import { Styleguides } from "./styleguides"; export type TranslatorOptions = { serverUrl?: string; connectionTimeoutMs?: number; keepAlive?: boolean; sessionId?: string; }; export interface NGMemoryMatch { memory: string; tuid?: string; language: [string, string]; sentence: string; translation: string; score: number; } export interface NGGlossaryMatch { glossary: string; language: [string, string]; term: string; translation: string; } export interface ProfanityDetectResult { maskedText: string; profanities: { text: string; startCharIndex: number; endCharIndex: number; score: number; }[]; error?: string; } export interface ProfanitiesResult { target: ProfanityDetectResult | ProfanityDetectResult[]; source?: ProfanityDetectResult | ProfanityDetectResult[]; } export interface TextBlock { readonly text: string; readonly translatable?: boolean; } export type StyleguideChange = { id?: string; originalTranslation: string; refinedTranslation: string; explanation: string; }; export type StyleguideResults<T extends string | string[] | TextBlock[]> = { originalTranslation: T; changes: StyleguideChange[]; }; export type ImageContext = { /** HTTPS URL or base64 data URL containing a PNG, JPEG or WebP image. */ url: string; }; export type IntelligenceFailure = { applied: false; error: { statusCode: number; message: string; }; }; export type ReferenceRetrievalFailure = { applied: false | "partial"; error: IntelligenceFailure["error"]; }; export type ReasoningWarning = { code: "image_context_unavailable"; message: string; }; export type ReasoningFeedback = (IntelligenceFailure | { applied: true; }) & { warnings?: ReasoningWarning[]; }; export interface TextResult<T extends string | string[] | TextBlock[]> { readonly contentType: string; readonly sourceLanguage: string; readonly translation: T; readonly adaptedTo?: string[]; readonly glossaries?: string[]; readonly adaptedToMatches?: NGMemoryMatch[] | NGMemoryMatch[][]; readonly glossariesMatches?: NGGlossaryMatch[] | NGGlossaryMatch[][]; readonly profanities?: ProfanitiesResult; readonly styleguideResults?: StyleguideResults<T>; readonly warnings?: { /** Reasoning failed or completed without the requested image context. */ reasoning?: ReasoningFeedback; references?: ReferenceRetrievalFailure; prosa?: IntelligenceFailure; }; } export type ReasoningEffort = "low" | "medium" | "high"; export type TranslateOptions = { sourceHint?: string; adaptTo?: string[]; instructions?: string[]; glossaries?: string[]; contentType?: string; /** @deprecated This parameter is deprecated. */ multiline?: boolean; timeoutInMillis?: number; priority?: "normal" | "background"; useCache?: boolean | "overwrite"; cacheTTLSeconds?: number; noTrace?: boolean; verbose?: boolean; headers?: Record<string, string>; style?: TranslationStyle; reasoning?: boolean; /** Requires reasoning: true. Omit to use the server default. */ reasoningEffort?: ReasoningEffort; /** * Visual context for text translation: one image, supplied as an object or array. * Requires reasoning: true when non-empty. Inline images are limited * to 5 MiB of decoded data. Omit or pass [] for text-only translation. */ imageContext?: ImageContext | ImageContext[]; metadata?: string | Record<string, unknown>; profanitiesDetect?: ProfanitiesDetect; profanitiesHandling?: ProfanitiesHandling; styleguideId?: string; styleguideReasoning?: boolean; styleguideExplanationLanguage?: string; }; export type TranslationStyle = "faithful" | "fluid" | "creative"; export type ProfanitiesDetect = "target" | "source_target"; export type ProfanitiesHandling = "hide" | "avoid" | "detect"; export interface QualityEstimationResult { score: number; } export interface DetectResult { language: string; contentType: string; predictions: { language: string; confidence: number; }[]; } export declare class Translator { protected readonly client: LaraClient; readonly memories: Memories; readonly documents: Documents; readonly glossaries: Glossaries; readonly styleguides: Styleguides; readonly audio: AudioTranslator; readonly images: ImageTranslator; constructor(auth: AccessKey | AuthToken, options?: TranslatorOptions); get version(): string; getLanguages(): Promise<string[]>; translate<T extends string | string[] | TextBlock[]>(text: T, source: string | null, target: string, options?: TranslateOptions, callback?: (partialResult: TextResult<T>) => void): Promise<TextResult<T>>; detect(text: string | string[], hint?: string, passlist?: string[]): Promise<DetectResult>; detectProfanities(text: string, language: string, contentType: string): Promise<ProfanityDetectResult>; qualityEstimation(source: string, target: string, sentence: string | string[], translation: string | string[]): Promise<QualityEstimationResult | QualityEstimationResult[]>; static getLoginUrl(serverUrl?: string): Promise<string>; }