import { AdapterMutationFailure } from '../types/adapter-result.js';
import { DiscoveryOutput } from '../types/discovery.js';
import { TextTarget } from '../types/address.js';
export interface FootnoteAddress {
    kind: 'entity';
    entityType: 'footnote';
    noteId: string;
}
export interface FootnoteNumberingConfig {
    format?: 'decimal' | 'lowerRoman' | 'upperRoman' | 'lowerLetter' | 'upperLetter' | 'symbol';
    start?: number;
    restartPolicy?: 'continuous' | 'eachSection' | 'eachPage';
    /** Footnote position. Maps to w:pos in w:footnotePr. */
    position?: 'pageBottom' | 'beneathText';
}
export interface EndnoteNumberingConfig {
    format?: 'decimal' | 'lowerRoman' | 'upperRoman' | 'lowerLetter' | 'upperLetter' | 'symbol';
    start?: number;
    restartPolicy?: 'continuous' | 'eachSection';
    /** Endnote position. Maps to w:pos in w:endnotePr. */
    position?: 'sectionEnd' | 'documentEnd';
}
export type FootnoteConfigScope = {
    kind: 'document';
} | {
    kind: 'section';
    sectionId: string;
};
export interface FootnoteListInput {
    type?: 'footnote' | 'endnote';
    limit?: number;
    offset?: number;
}
export interface FootnoteGetInput {
    target: FootnoteAddress;
}
export interface FootnoteInsertInput {
    at: TextTarget;
    type: 'footnote' | 'endnote';
    content: string;
}
export interface FootnoteUpdateInput {
    target: FootnoteAddress;
    patch: {
        content?: string;
    };
}
export interface FootnoteRemoveInput {
    target: FootnoteAddress;
}
export interface FootnoteConfigureInput {
    type: 'footnote' | 'endnote';
    scope: FootnoteConfigScope;
    numbering?: FootnoteNumberingConfig | EndnoteNumberingConfig;
}
export interface FootnoteInfo {
    address: FootnoteAddress;
    type: 'footnote' | 'endnote';
    noteId: string;
    displayNumber: string;
    content: string;
}
export interface FootnoteDomain {
    address: FootnoteAddress;
    type: 'footnote' | 'endnote';
    noteId: string;
    displayNumber: string;
    content: string;
}
export interface FootnoteMutationSuccess {
    success: true;
    footnote: FootnoteAddress;
}
export type FootnoteMutationResult = FootnoteMutationSuccess | AdapterMutationFailure;
export interface FootnoteConfigSuccess {
    success: true;
}
export type FootnoteConfigResult = FootnoteConfigSuccess | AdapterMutationFailure;
export type FootnotesListResult = DiscoveryOutput<FootnoteDomain>;
//# sourceMappingURL=footnotes.types.d.ts.map