import type { Block, BlockColor, BlockSizes, BlockSizes_Dimension_Value } from '@devvit/protos';
import { BlockSizeUnit, BlockStackDirection } from '@devvit/protos';
import type { UnsafeString } from '@reddit/baseplate/html/html.js';
import type { nothing, TemplateResult } from 'lit';
import type { DirectiveClass, DirectiveResult } from 'lit/directive.js';
import type { ClassInfo } from 'lit/directives/class-map.js';
import { classMap as clientClassMap } from 'lit/directives/class-map.js';
import type { RefOrCallback } from 'lit/directives/ref.js';
import { ref as clientRef } from 'lit/directives/ref.js';
import type { StyleInfo } from 'lit/directives/style-map.js';
export type TemplateLike = TemplateResult | typeof nothing;
export declare function classMap(classInfo: ClassInfo, forceString?: boolean): string | ReturnType<typeof clientClassMap>;
export declare function unsafeHTML(input: string): DirectiveResult<DirectiveClass> | UnsafeString;
export declare function ref(ref: RefOrCallback): ReturnType<typeof clientRef> | string;
export declare function isHTMLElement(el: HTMLElement | Element | undefined): el is HTMLElement;
export declare function resolveIcon(name: string): TemplateResult;
/**
 * Strip semicolons from style values and remove null/undefined values
 * @param styleInfo
 */
export declare function sanitizeStyleInfo(styleInfo: StyleInfo): StyleInfo;
/**
 * Returns a BlockSizes object either directly from the block or constructs
 * one from the legacy `size` field
 * @param block
 */
export declare function getSizes(block: Block): BlockSizes | undefined;
export declare function parseDimension(value: BlockSizes_Dimension_Value | undefined, onlyType?: BlockSizeUnit | undefined): string | undefined;
export declare function getSizeUnits(unit: BlockSizeUnit | undefined): string;
/**
 * Extracts the light and dark colors from a BlockColor object with an optional
 * fallback on the original single color parameter.
 * Priority:
 *  - Use the split light/dark colors if available
 *  - If dark color is not available but light is, use light color for both
 *  - If light and dark colors are not available try the legacy color (old apps)
 * @param colors BlockColor object
 * @param legacyColor Original color attribute before it was split into light/dark colors
 */
export declare function resolveColors(colors: BlockColor | undefined, legacyColor?: string | undefined): [light?: string | undefined, dark?: string | undefined];
export declare function getBlockStackType(direction: BlockStackDirection | undefined): string;
//# sourceMappingURL=util.d.ts.map