from __future__ import annotations
from typing import Any, Protocol, runtime_checkable
from com.sun.star.uno import XInterface

@runtime_checkable
class XBreakIterator(XInterface, Protocol):
    def nextCharacters(self, aText: str, nStartPos: int, aLocale: Locale, nCharacterIteratorMode: int, nCount: int, nDone: int) -> int: ...
    def previousCharacters(self, aText: str, nStartPos: int, aLocale: Locale, nCharacterIteratorMode: int, nCount: int, nDone: int) -> int: ...
    def nextWord(self, aText: str, nStartPos: int, aLocale: Locale, nWordType: int) -> Boundary: ...
    def previousWord(self, aText: str, nStartPos: int, aLocale: Locale, nWordType: int) -> Boundary: ...
    def getWordBoundary(self, aText: str, nPos: int, aLocale: Locale, nWordType: int, bPreferForward: bool) -> Boundary: ...
    def getWordType(self, aText: str, nPos: int, aLocale: Locale) -> int: ...
    def isBeginWord(self, aText: str, nPos: int, aLocale: Locale, nWordType: int) -> bool: ...
    def isEndWord(self, aText: str, nPos: int, aLocale: Locale, nWordType: int) -> bool: ...
    def beginOfSentence(self, aText: str, nStartPos: int, aLocale: Locale) -> int: ...
    def endOfSentence(self, aText: str, nStartPos: int, aLocale: Locale) -> int: ...
    def getLineBreak(self, aText: str, nStartPos: int, aLocale: Locale, nMinBreakPos: int, aHyphOptions: LineBreakHyphenationOptions, aUserOptions: LineBreakUserOptions) -> LineBreakResults: ...
    def beginOfScript(self, aText: str, nStartPos: int, nScriptType: int) -> int: ...
    def endOfScript(self, aText: str, nStartPos: int, nScriptType: int) -> int: ...
    def nextScript(self, aText: str, nStartPos: int, nScriptType: int) -> int: ...
    def previousScript(self, aText: str, nStartPos: int, nScriptType: int) -> int: ...
    def getScriptType(self, aText: str, nPos: int) -> int: ...
    def beginOfCharBlock(self, aText: str, nStartPos: int, aLocale: Locale, nCharType: int) -> int: ...
    def endOfCharBlock(self, aText: str, nStartPos: int, aLocale: Locale, nCharType: int) -> int: ...
    def nextCharBlock(self, aText: str, nStartPos: int, aLocale: Locale, nCharType: int) -> int: ...
    def previousCharBlock(self, aText: str, nStartPos: int, aLocale: Locale, nCharType: int) -> int: ...
