type KoliBriComponentsBemSchema = {
    'kol-alert': {
        elements: {
            container: {
                modifiers: null;
            };
            icon: {
                modifiers: null;
            };
            heading: {
                modifiers: Set<'h0' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6'>;
            };
            content: {
                modifiers: null;
            };
            closer: {
                modifiers: null;
            };
        };
        modifiers: Set<'hasCloser' | 'type-default' | 'type-error' | 'type-info' | 'type-success' | 'type-warning' | 'variant-card' | 'variant-msg'>;
    };
    'kol-avatar': {
        elements: {
            image: {
                modifiers: null;
            };
            initials: {
                modifiers: null;
            };
        };
        modifiers: null;
    };
    'kol-icon': {
        elements: {
            icon: {
                modifiers: null;
            };
        };
        modifiers: null;
    };
    'kol-meter': {
        elements: {
            bar: {
                modifiers: null;
            };
            'bar-label': {
                modifiers: null;
            };
            'bar-state': {
                modifiers: Set<'optimum' | 'suboptimal' | 'critical'>;
            };
            'bar-track': {
                modifiers: null;
            };
            'bar-fill': {
                modifiers: Set<'optimum' | 'suboptimal' | 'critical'>;
            };
            'bar-background': {
                modifiers: null;
            };
            'bar-border': {
                modifiers: null;
            };
            'value-unit': {
                modifiers: null;
            };
            value: {
                modifiers: null;
            };
            unit: {
                modifiers: null;
            };
        };
        modifiers: Set<'vertical'>;
    };
    'kol-quote': {
        elements: {
            blockquote: {
                modifiers: null;
            };
            cite: {
                modifiers: null;
            };
            figcaption: {
                modifiers: null;
            };
            quote: {
                modifiers: null;
            };
        };
        modifiers: Set<'block' | 'inline'>;
    };
    'kol-skeleton': {
        elements: {
            container: {
                modifiers: null;
            };
            name: {
                modifiers: null;
            };
            counter: {
                modifiers: null;
            };
            actions: {
                modifiers: null;
            };
        };
        modifiers: Set<'has-name' | 'is-hidden'>;
    };
    'kol-click-button': {
        elements: {
            label: {
                modifiers: null;
            };
        };
        modifiers: null;
    };
    'kol-span': {
        elements: {
            container: {
                modifiers: null;
            };
            icon: {
                modifiers: Set<'bottom' | 'left' | 'right' | 'top'>;
            };
            label: {
                modifiers: null;
            };
            slot: {
                modifiers: null;
            };
        };
        modifiers: Set<'has-badge' | 'hide-label'>;
    };
    'kol-spin': {
        elements: {
            spinner: {
                modifiers: Set<'cycle' | 'dot' | 'none'>;
            };
            'spinner-element': {
                modifiers: Set<'1' | '2' | '3' | 'neutral'>;
            };
            loader: {
                modifiers: null;
            };
        };
        modifiers: null;
    };
};
export declare const bem: {
    <BlockName extends keyof KoliBriComponentsBemSchema, ElementName extends keyof NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>>(blockName: BlockName, blockModifiersOrElementName?: ElementName | ((KoliBriComponentsBemSchema[BlockName]["modifiers"] extends infer T ? T extends KoliBriComponentsBemSchema[BlockName]["modifiers"] ? T extends Set<infer U> ? U : never : never : never) extends never ? undefined : Partial<Record<KoliBriComponentsBemSchema[BlockName]["modifiers"] extends infer T_1 ? T_1 extends KoliBriComponentsBemSchema[BlockName]["modifiers"] ? T_1 extends Set<infer U> ? U : never : never : never, boolean>>) | undefined, elementModifiers?: ((NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] extends infer T_2 ? T_2 extends NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] ? T_2 extends Set<infer U> ? U : never : never : never) extends never ? undefined : Partial<Record<NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] extends infer T_3 ? T_3 extends NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] ? T_3 extends Set<infer U> ? U : never : never : never, boolean>>) | undefined): string;
    forBlock<BlockName extends keyof KoliBriComponentsBemSchema>(blockName: BlockName): {
        <ElementName extends keyof NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>>(elementNameOrBlockModifiers?: ElementName | ((KoliBriComponentsBemSchema[BlockName]["modifiers"] extends infer T ? T extends KoliBriComponentsBemSchema[BlockName]["modifiers"] ? T extends Set<infer U> ? U : never : never : never) extends never ? undefined : Partial<Record<KoliBriComponentsBemSchema[BlockName]["modifiers"] extends infer T_1 ? T_1 extends KoliBriComponentsBemSchema[BlockName]["modifiers"] ? T_1 extends Set<infer U> ? U : never : never : never, boolean>>) | undefined, elementModifiers?: ((NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] extends infer T_2 ? T_2 extends NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] ? T_2 extends Set<infer U> ? U : never : never : never) extends never ? undefined : Partial<Record<NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] extends infer T_3 ? T_3 extends NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] ? T_3 extends Set<infer U> ? U : never : never : never, boolean>>) | undefined): string;
        forElement: <ElementName extends keyof NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>>(elementName: ElementName) => (elementModifiers?: ((NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] extends infer T ? T extends NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] ? T extends Set<infer U> ? U : never : never : never) extends never ? undefined : Partial<Record<NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] extends infer T_1 ? T_1 extends NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] ? T_1 extends Set<infer U> ? U : never : never : never, boolean>>) | undefined) => string;
    };
} & {
    forBlock: <BlockName extends keyof KoliBriComponentsBemSchema>(blockName: BlockName) => {
        <ElementName extends keyof NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>>(elementNameOrBlockModifiers?: ElementName | ((KoliBriComponentsBemSchema[BlockName]["modifiers"] extends infer T ? T extends KoliBriComponentsBemSchema[BlockName]["modifiers"] ? T extends Set<infer U> ? U : never : never : never) extends never ? undefined : Partial<Record<KoliBriComponentsBemSchema[BlockName]["modifiers"] extends infer T_1 ? T_1 extends KoliBriComponentsBemSchema[BlockName]["modifiers"] ? T_1 extends Set<infer U> ? U : never : never : never, boolean>>) | undefined, elementModifiers?: ((NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] extends infer T_2 ? T_2 extends NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] ? T_2 extends Set<infer U> ? U : never : never : never) extends never ? undefined : Partial<Record<NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] extends infer T_3 ? T_3 extends NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] ? T_3 extends Set<infer U> ? U : never : never : never, boolean>>) | undefined): string;
        forElement: <ElementName extends keyof NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>>(elementName: ElementName) => (elementModifiers?: ((NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] extends infer T ? T extends NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] ? T extends Set<infer U> ? U : never : never : never) extends never ? undefined : Partial<Record<NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] extends infer T_1 ? T_1 extends NonNullable<KoliBriComponentsBemSchema[BlockName]["elements"]>[ElementName]["modifiers"] ? T_1 extends Set<infer U> ? U : never : never : never, boolean>>) | undefined) => string;
    };
};
declare const BEM: KoliBriComponentsBemSchema;
export { BEM };
