import React from "react";
import type { EventEmit } from "@almadar/core";
export type VoteStackSize = "sm" | "md" | "lg";
export type VoteStackVariant = "vertical" | "horizontal";
/**
 * Current vote state. Both `null` (typical "cleared" sentinel for direct
 * consumers) and the string `"none"` (the .lolo enum spelling — `direction:
 * "up" | "down" | "none"`) are accepted; the component treats them
 * identically. Keeping both accommodates render-ui bindings without forcing
 * std atoms to drop their string sentinel.
 */
export type VoteValue = "up" | "down" | "none" | null;
export interface VoteStackProps {
    /** Current tally */
    count: number;
    /** Current user's vote (null = no vote cast) */
    userVote?: VoteValue;
    /** Toggle handler. Clicking the same arrow clears (emits null). */
    onVote?: (next: VoteValue) => void;
    /** Event name dispatched on the bus when a vote is cast. Payload: { next: VoteValue }. */
    voteEvent?: EventEmit<{
        next: VoteValue;
    }>;
    /** Disabled state */
    disabled?: boolean;
    /** Size variant */
    size?: VoteStackSize;
    /** Layout orientation. `vertical` = forum/Q&A column; `horizontal` = compact row. */
    variant?: VoteStackVariant;
    /** Additional CSS classes */
    className?: string;
    /** Accessible label for the group */
    label?: string;
}
export declare const VoteStack: React.FC<VoteStackProps>;
