import type { BlockModel, Page } from '@blockeditor/store';
import type { AttachmentBlockModel, AttachmentBlockSchema, BookmarkBlockModel, BookmarkBlockSchema, CodeBlockModel, CodeBlockSchema, DatabaseBlockModel, DatabaseBlockSchema, DataViewBlockModel, DataViewBlockSchema, DividerBlockModel, DividerBlockSchema, FrameBlockModel, FrameBlockSchema, ImageBlockModel, ImageBlockSchema, ListBlockModel, ListBlockSchema, NoteBlockModel, NoteBlockSchema, PageBlockModel, PageBlockSchema, ParagraphBlockModel, ParagraphBlockSchema, SurfaceBlockModel, SurfaceBlockSchema, SurfaceRefBlockModel } from '../../index.js';
export type BlockModels = {
    'affine:paragraph': ParagraphBlockModel;
    'affine:page': PageBlockModel;
    'affine:list': ListBlockModel;
    'affine:note': NoteBlockModel;
    'affine:code': CodeBlockModel;
    'affine:divider': DividerBlockModel;
    'affine:image': ImageBlockModel;
    'affine:surface': SurfaceBlockModel;
    'affine:frame': FrameBlockModel;
    'affine:database': DatabaseBlockModel;
    'affine:data-view': DataViewBlockModel;
    'affine:bookmark': BookmarkBlockModel;
    'affine:attachment': AttachmentBlockModel;
    'affine:surface-ref': SurfaceRefBlockModel;
};
export type BlockSchemas = {
    'affine:paragraph': typeof ParagraphBlockSchema;
    'affine:page': typeof PageBlockSchema;
    'affine:list': typeof ListBlockSchema;
    'affine:note': typeof NoteBlockSchema;
    'affine:code': typeof CodeBlockSchema;
    'affine:divider': typeof DividerBlockSchema;
    'affine:image': typeof ImageBlockSchema;
    'affine:surface': typeof SurfaceBlockSchema;
    'affine:frame': typeof FrameBlockSchema;
    'affine:database': typeof DatabaseBlockSchema;
    'affine:data-view': typeof DataViewBlockSchema;
    'affine:bookmark': typeof BookmarkBlockSchema;
    'affine:attachment': typeof AttachmentBlockSchema;
};
export type BlockModelProps = {
    [K in keyof BlockSchemas]: ReturnType<BlockSchemas[K]['model']['props']>;
};
export declare function assertFlavours(model: {
    flavour: string;
}, allowed: string[]): void;
export declare function matchFlavours<Key extends (keyof BlockModels)[]>(model: BlockModel | null, expected: Key): model is BlockModels[Key[number]];
export declare function isInsideBlockByFlavour(page: Page, block: BlockModel | string, flavour: string): boolean;
//# sourceMappingURL=model.d.ts.map