/**
 * WordPress dependencies
 */
import type { ThunkArgs } from '@wordpress/data';
/**
 * Internal dependencies
 */
import type { BlockType, BlockCategory, BlockCollection, BlockStyle, BlockVariation, BlockBindingsSource, Icon } from '../types';
import type { store } from '.';
import type * as privateSelectors from './private-selectors';
import type * as privateActions from './private-actions';
/**
 * The state of the `core/blocks` redux store.
 */
export interface BlockStoreState {
    /**
     * Bootstrapped block types from server-side definitions.
     */
    bootstrappedBlockTypes: Record<string, Partial<BlockType>>;
    /**
     * Unprocessed block types pending filter application.
     */
    unprocessedBlockTypes: Record<string, Partial<BlockType>>;
    /**
     * Block types by name.
     */
    blockTypes: Record<string, BlockType>;
    /**
     * Block styles by block name.
     */
    blockStyles: Record<string, BlockStyle[]>;
    /**
     * Block variations by block name.
     */
    blockVariations: Record<string, BlockVariation[]>;
    /**
     * Name of the default block.
     */
    defaultBlockName: string | null;
    /**
     * Name of the block for handling non-block content.
     */
    freeformFallbackBlockName: string | null;
    /**
     * Name of the block for handling unregistered blocks.
     */
    unregisteredFallbackBlockName: string | null;
    /**
     * Name of the block for handling the grouping of blocks.
     */
    groupingBlockName: string | null;
    /**
     * The available block categories.
     */
    categories: BlockCategory[];
    /**
     * The available collections.
     */
    collections: Record<string, BlockCollection>;
    /**
     * Block bindings sources by name.
     * The stored form omits `name` since it's the record key.
     */
    blockBindingsSources: Record<string, Omit<BlockBindingsSource, 'name'>>;
}
/**
 * Store action types.
 */
export type Action = {
    type: 'ADD_BOOTSTRAPPED_BLOCK_TYPE';
    name: string;
    blockType: Record<string, unknown>;
} | {
    type: 'ADD_UNPROCESSED_BLOCK_TYPE';
    name: string;
    blockType: Partial<BlockType>;
} | {
    type: 'ADD_BLOCK_TYPES';
    blockTypes: BlockType[];
} | {
    type: 'REMOVE_BLOCK_TYPES';
    names: string[];
} | {
    type: 'ADD_BLOCK_STYLES';
    blockNames: string[];
    styles: BlockStyle[];
} | {
    type: 'REMOVE_BLOCK_STYLES';
    blockName: string;
    styleNames: string[];
} | {
    type: 'ADD_BLOCK_VARIATIONS';
    blockName: string;
    variations: BlockVariation[];
} | {
    type: 'REMOVE_BLOCK_VARIATIONS';
    blockName: string;
    variationNames: string[];
} | {
    type: 'SET_DEFAULT_BLOCK_NAME';
    name: string;
} | {
    type: 'SET_FREEFORM_FALLBACK_BLOCK_NAME';
    name: string;
} | {
    type: 'SET_UNREGISTERED_FALLBACK_BLOCK_NAME';
    name: string;
} | {
    type: 'SET_GROUPING_BLOCK_NAME';
    name: string;
} | {
    type: 'SET_CATEGORIES';
    categories: BlockCategory[];
} | {
    type: 'UPDATE_CATEGORY';
    slug: string;
    category: Partial<BlockCategory>;
} | {
    type: 'ADD_BLOCK_COLLECTION';
    namespace: string;
    title: string;
    icon?: Icon;
} | {
    type: 'REMOVE_BLOCK_COLLECTION';
    namespace: string;
} | {
    type: 'ADD_BLOCK_BINDINGS_SOURCE';
    name: string;
    label?: string;
    usesContext?: string[];
    getValues?: Function;
    setValues?: Function;
    canUserEditValue?: Function;
    getFieldsList?: Function;
} | {
    type: 'REMOVE_BLOCK_BINDINGS_SOURCE';
    name: string;
};
/**
 * Thunk arguments for the blocks store, including private selectors and actions.
 */
export type BlocksStoreThunkArgs = ThunkArgs<typeof store, typeof privateSelectors, typeof privateActions>;
//# sourceMappingURL=types.d.ts.map