import { ChangeTranslationInterface, KeyPosition } from '@tolgee/core'; import { KeyInScreenshot } from './useGallery'; import { LiveCredentials } from '../../../tools/auth'; import type { TolgeeFormat } from '@tginternal/editor'; import type { Disposition } from './usePermissions'; import { StateInType, StateType } from '../State/translationStates'; import type { components } from '../../client/apiSchema.generated'; type TranslationState = components['schemas']['TranslationModel']['state']; export declare const SUGGESTIONS_URL = "/v2/projects/languages/{languageId}/key/{keyId}/suggestion"; export declare function permissionsQueryProjectId(credentials: LiveCredentials): number | undefined; export declare function getPreferredLanguages(): string[]; export declare function setPreferredLanguages(languages: string[]): void; export declare function getInitialLanguages(available: string[], base?: string): string[]; export declare const changeInTolgeeCache: (key: string, ns: string | undefined, values: [language: string, value: string][], changeTranslation: ChangeTranslationInterface) => { revert: () => void; }; export declare function mapPosition({ position }: KeyInScreenshot): { x: number; y: number; width: number; height: number; }; export declare function scalePositionsToImg(windowSize: Size, imgSize: Size, positions: KeyPosition[]): { position: { x: number; y: number; width: number; height: number; }; keyName: string; keyNamespace: string; }[]; export type Size = { width: number; height: number; }; export declare function getImgSize(url: string): Promise; export type SubmitKind = 'save' | 'suggest' | 'saveAndSuggest'; type SubmitField = { language: string; disposition: Disposition; changed: boolean; isEmpty: boolean; }; export declare function editedLanguages(fields: { language: string; changed: boolean; stateChanged: boolean; }[], pluralChanged: boolean): string[]; export declare function planSubmit({ fields, suggestOnly, pluralChanged, otherKeyChanges, }: { fields: SubmitField[]; suggestOnly: boolean; pluralChanged?: boolean; otherKeyChanges?: boolean; }): { toSuggest: string[]; toSave: string[]; cleared: string[]; kind: SubmitKind; }; export declare function statesToUpdate(fields: { language: string; state: StateType; stateChanged: boolean; }[], canEditState: (language: string) => boolean): Record; export declare function keyUpdateCarriesOtherChanges({ tags, serverTags, screenshotsAdded, screenshotsRemoved, maxCharLimit, serverMaxCharLimit, pluralChanged, states, }: { tags: string[] | undefined; serverTags: string[]; screenshotsAdded: number; screenshotsRemoved: number; maxCharLimit: number | null | undefined; serverMaxCharLimit: number | null | undefined; pluralChanged: boolean; states: Record; }): boolean; type EditCapabilities = { canEditTags: boolean; canUploadScreenshots: boolean; canDeleteScreenshots: boolean; canEditTranslation: (language: string) => boolean; canEditState: (language: string) => boolean; canSuggestTranslation: (language: string) => boolean; }; export declare function isSuggestOnly(permissions: EditCapabilities, languages: string[]): boolean; export declare function keepFormFields(fetched: Record, current: Record, keep: string[]): { [x: string]: T; }; export declare function sameTranslation(a: TolgeeFormat | undefined, b: TolgeeFormat | undefined): boolean; export declare function deriveFieldStates({ languages, states, formDisabled, getDisposition, credentialBlocksTranslation, }: { languages: string[]; states: Record; formDisabled: boolean; getDisposition: (language: string, state: TranslationState | undefined) => Disposition; credentialBlocksTranslation: (language: string, state: TranslationState | undefined) => boolean | undefined; }): { dispositions: Record; credentialBlocksField: Record; }; export {};