import type { DatabaseObject } from "../types/notion/database.js";
import type { PageObject } from "../types/notion/page.js";
import type { PropertyItemType, PropertyItemObjectResponse } from "../types/notion/property/properties.js";
import type { TitlePropertyItemObject } from "../types/notion/property/title.js";
import type { RichTextType } from "../types/notion/richText/richText.js";
import type { DatabaseObjectResponse, PageObjectResponse } from "@notionhq/client/build/src/api-endpoints.js";
type PageOrDatabasePropertyItems = PropertyItemObjectResponse | PropertyItemType | DatabaseObject["properties"][string];
type PageOrDatabaseProperties = Record<string, PageOrDatabasePropertyItems>;
type SplittedProperties<T extends PageOrDatabaseProperties> = {
    title: TitlePropertyItemObject;
    other: T;
};
export declare const splitTitleAndOtherProperties: <T extends PageOrDatabaseProperties>(properties: T) => SplittedProperties<T>;
export declare const extractTitle: (pageOrDatabase: PageObject | PageObjectResponse | DatabaseObjectResponse) => RichTextType;
export declare const isTitleProperty: (property: PageOrDatabasePropertyItems) => property is TitlePropertyItemObject;
export declare const selectPropertyById: <T extends PageOrDatabaseProperties>(properties: T, id: string) => T | undefined;
export declare const selectPropertyByName: <T extends PageOrDatabaseProperties>(properties: T, key: string) => T | undefined;
export declare const selectProperties: <T extends PageOrDatabaseProperties>(properties: T, selector: Array<string>) => T;
export {};
//# sourceMappingURL=index.d.ts.map