import { ExtractPropTypes } from 'vue';
import { PropType } from '@opentiny/vue-common';
import { ISharedRenderlessFunctionParams, ISharedRenderlessParamUtils } from './shared.type.js';

type DirectionType = 'horizontal' | 'vertical';
type BorderStyleType = 'dashed' | 'solid' | 'dotted';
type ContentPositionType = 'left' | 'right' | 'center';
declare const dividerProps: {
    _constants: {
        type: ObjectConstructor;
        default: () => {};
    };
    direction: {
        type: PropType<DirectionType>;
        default: string;
    };
    color: {
        type: StringConstructor;
        default: string;
    };
    borderStyle: {
        type: PropType<BorderStyleType>;
        default: string;
    };
    contentPosition: {
        type: PropType<ContentPositionType>;
        default: string;
    };
    contentColor: {
        type: StringConstructor;
        default: string;
    };
    contentBackgroundColor: {
        type: StringConstructor;
        default: string;
    };
    fontSize: {
        type: StringConstructor;
        default: () => string;
    };
    margin: StringConstructor;
    offset: StringConstructor;
    height: StringConstructor;
    status: {
        type: StringConstructor;
        values: string[];
        default: () => string;
    };
    tiny_mode: StringConstructor;
    tiny_mode_root: BooleanConstructor;
    tiny_template: (FunctionConstructor | ObjectConstructor)[];
    tiny_renderless: FunctionConstructor;
    tiny_theme: StringConstructor;
    tiny_chart_theme: ObjectConstructor;
};

declare const computedRootStyle: ({ state, props }: Pick<IDividerRenderlessParams, 'state' | 'props'>) => () => IDividerStyle;
declare const computedLineStyle: ({ props }: Pick<IDividerRenderlessParams, 'props'>) => () => IDividerStyle;
declare const computedTextStyle: ({ props }: Pick<IDividerRenderlessParams, 'props'>) => () => IDividerStyle;
declare const setDividerHeight: ({ state, props, vm, nextTick }: Pick<IDividerRenderlessParams, 'state' | 'props' | 'vm' | 'nextTick'>) => () => void;

interface IDividerState {
    height: string;
    margin: string;
    lineStyle: IDividerStyle;
    textStyle: IDividerStyle;
    rootStyle: IDividerStyle;
}
type IDividerProps = ExtractPropTypes<typeof dividerProps>;
interface IDividerApi {
    state: IDividerState;
    computedLineStyle: ReturnType<typeof computedLineStyle>;
    computedTextStyle: ReturnType<typeof computedTextStyle>;
    computedRootStyle: ReturnType<typeof computedRootStyle>;
    setDividerHeight: ReturnType<typeof setDividerHeight>;
}
type IDividerRenderlessParams = ISharedRenderlessFunctionParams<never> & {
    api: IDividerApi;
    state: IDividerState;
    props: IDividerProps;
};
type IDividerRenderlessParamUtils = ISharedRenderlessParamUtils<never>;
interface IDividerStyle {
    margin?: string | number;
    height?: string | number;
    fontSize?: string | number;
    right?: string | number;
    left?: string | number;
    borderLeftStyle?: string | number;
    borderTopStyle?: string | number;
    borderTopColor?: string | number;
}

export { IDividerApi, IDividerProps, IDividerRenderlessParamUtils, IDividerRenderlessParams, IDividerState, IDividerStyle };
