import type { Block, BlockAlignment, BlockBorder, BlockColor, BlockConfig_Text, BlockSizes } from '@devvit/protos';
import { BlockAvatarFacing, BlockAvatarSize, BlockButtonAppearance, BlockButtonSize, BlockGap, BlockIconSize, BlockImageResizeMode, BlockPadding, BlockRadius, BlockSpacerShape, BlockSpacerSize, BlockStackDirection, BlockTextOutline, BlockTextSize, BlockTextWeight } from '@devvit/protos';
import type { ButtonAppearance } from '@reddit/faceplate-ui/templates/button.js';
import { ButtonSize } from '@reddit/faceplate-ui/templates/button.js';
import type { ClassInfo } from 'lit/directives/class-map.js';
import type { ref as clientRef } from 'lit/directives/ref.js';
import type { StyleInfo } from 'lit/directives/style-map.js';
import type { RenderContext } from './templates/renderContext.js';
export type AttributeOverrides = {
    styles?: StyleInfo | undefined;
    classes?: ClassInfo | undefined;
};
export declare function defaultClasses(block: Block, ctx: RenderContext): ClassInfo;
export declare function defaultStyles(block: Block, ctx: RenderContext, reverse?: boolean): StyleInfo;
export declare function stackDirectionClass(direction: BlockStackDirection, reverse: boolean | undefined): ClassInfo;
export declare function stackChildClass(parentDirection: BlockStackDirection): ClassInfo;
export declare function sizingClass(sizing: BlockSizes | undefined): ClassInfo;
export declare function sizingStyle(sizing: BlockSizes | undefined): StyleInfo;
export declare function growWrapperSizingStyle(block: Block): StyleInfo;
export declare function paddingClass(padding: BlockPadding | undefined): ClassInfo;
export declare function alignmentClass(direction: BlockStackDirection, align: BlockAlignment | undefined, block: Block): ClassInfo;
export declare function zstackAlignmentClass(align: BlockAlignment | undefined, sizes: BlockSizes): ClassInfo;
export declare function backgroundClass(hasBgColor: boolean): ClassInfo;
export declare function backgroundStyle(colors: BlockColor | undefined, legacyColor: string | undefined): StyleInfo;
export declare function borderClass(border: BlockBorder | undefined): ClassInfo;
export declare function borderStyle(border: BlockBorder | undefined): StyleInfo;
export declare function radiusClass(radius: BlockRadius | undefined): ClassInfo;
export declare function textSizeClass(size: BlockTextSize | undefined): ClassInfo;
export declare function textAlignClass(alignment: BlockAlignment | undefined): ClassInfo;
export declare function textWeightClass(weight: BlockTextWeight | undefined): ClassInfo;
export declare function textSelectClass(selection: boolean | undefined): ClassInfo;
export declare function textColorClass(): ClassInfo;
export declare function textColorStyle(colors: BlockColor | undefined, legacyColor: string | undefined): StyleInfo;
export declare function spacerSizeClass(size: BlockSpacerSize | undefined, shape: BlockSpacerShape | undefined, stackDirection: BlockStackDirection): ClassInfo;
export declare function iconSizeClass(size: BlockIconSize | undefined): ClassInfo;
export declare function avatarSizeClass(size: BlockAvatarSize | undefined): ClassInfo;
export declare function facingClass(facing: BlockAvatarFacing | undefined): ClassInfo;
export declare function buttonAppearance(appearance: BlockButtonAppearance | undefined): ButtonAppearance;
export declare function buttonSize(size: BlockButtonSize | undefined): ButtonSize;
export declare function cursorClass(block: Block): ClassInfo;
export declare function pointerEventsClass(actionable: boolean): ClassInfo;
export declare function onClickAction(block: Block, ctx: RenderContext): (() => void) | undefined;
export declare function onWebViewAction(block: Block, ctx: RenderContext): ((ev: CustomEvent) => void) | undefined;
export declare function setTextOutline(thickness: BlockTextOutline | undefined): ReturnType<typeof clientRef>;
export declare function textOverflowClass(config: BlockConfig_Text): ClassInfo;
/**
 * Converts the BlockGap enum values to pixels
 */
export declare function gapSize(gap: BlockGap | undefined): number;
/**
 * Applies the necessary styles for a stack to appropriately
 * measure available space for relatively sized child blocks
 */
export declare function stackGapStyle(stackDirection: BlockStackDirection, gap: BlockGap | undefined, padding: BlockPadding | undefined, childCount: number, reverse: boolean | undefined): StyleInfo;
/**
 * Applies a relative offset in order to properly space a
 * child block within a stack that has gap.
 * If reverse, the offset is applied in the opposite direction.
 */
export declare function childGapStyle(ctx: RenderContext, reverse: boolean): StyleInfo;
export declare function imageClasses(resizeMode: BlockImageResizeMode | undefined): ClassInfo;
export declare function imageStyle(url: string, resizeMode: BlockImageResizeMode | undefined, imageWidth: number, imageHeight: number, canvasSize: BlockSizes | undefined): StyleInfo;
//# sourceMappingURL=attributes.d.ts.map