import { SE, DK, FI, NO, sv, en, da, fi, no } from './helpers';
import * as colors from 'pn-design-assets/pn-assets/colors.js';
export interface PnUploadFileItem {
    uuid: string;
    filename: string;
    filesize: number;
    progress: number;
    status: 'queue' | 'start' | 'completed' | 'error';
    base64: string;
    contentType: string;
    error: any;
    errorMessage: string;
    file: File;
    xhr: XMLHttpRequest;
    xhrPromise?: () => Promise<any>;
}
export type PnMarkets = '' | typeof SE | typeof DK | typeof FI | typeof NO;
export type PnLanguages = '' | typeof sv | typeof en | typeof da | typeof fi | typeof no;
export type PnButtonAppearance = '' | 'light' | 'warning';
export type PnButtonVariant = '' | 'outlined' | 'borderless';
export type PnColors = keyof typeof colors;
/** @deprecated Its just numbers now. */
export type PnSteps = number;
export type PnStepProps = 'totalSteps' | 'currentStep';
export interface PnTopbar {
    hasLoaded: boolean;
    market: PnMarkets;
    language: PnLanguages;
}
export interface PnMultiselectSubOption {
    /** Set the label for the option, **required**. */
    label: string;
    /** Set the value for the option, **required**. */
    value: string;
    /** Set the status of the option, **required**. */
    checked: boolean;
    /** Display a helpertext for the option, optional. */
    helpertext?: string;
    /** Display an icon for the option. optional. */
    icon?: string;
    /** Use a custom HTML id, optional. */
    id?: string;
    /** Invalid */
    invalid?: boolean;
    /** Set the option as disabled, optional. */
    disabled?: boolean;
    /** Internal use for the search feature. Do not use manually. */
    hide?: boolean;
}
export interface PnMultiselectOption extends PnMultiselectSubOption {
    /** The list of items that will be nested under this option. */
    group?: PnMultiselectSubOption[];
}
/** This is the default option. A `label` and `value` is required. */
export interface PnActionMenuOption {
    /** The label of the button. */
    label: string;
    /**
     * Used as a unique identifier when toggling the menus.
     * Also acts as the value for the checkbox/radio if the `input` prop is used.
     **/
    value: string;
    /** Set a custom SVG icon for the option. */
    icon?: string;
    /** Set a custom SVG icon that appears as a suffix. */
    trailingIcon?: string;
    /** Set a short `string` suffix for the option. */
    suffix?: string;
    /** Disable the button. @see Requires {@link PnActionMenuInput.input input} or default button. */
    disabled?: boolean;
    /** Display a helpertext for the option. Has no effect on {@link PnActionMenuLink}. */
    helpertext?: string;
}
/** Create a link inside the action menu. */
export interface PnActionMenuLink extends PnActionMenuOption {
    /** Setting a `href` will turn the option into a link option. **/
    href?: string;
    /** Set the `href` target. The value `_blank` will add the `open_in_new` icon automatically.  @see **Requires** {@link href} */
    target?: string;
}
/** Allow the user to toggle the option with the {@link PnActionMenuInput.input input} prop. */
export interface PnActionMenuInput extends PnActionMenuOption {
    /** Turn the option into a `checkbox` or `radio` button. */
    input?: 'checkbox' | 'radio';
    /** Pre-check the option. @see **Requires** {@link input} */
    checked?: boolean;
    /** The `name` property used for the input. @see **Requires** {@link input} */
    name?: string;
}
/** Create a group of options.  */
export interface PnActionMenuGroup extends PnActionMenuOption {
    /**
     * Create a collection of `PnActionMenuOption`s. This group will be visible without the need to toggle.
     * @see {@link label} will act as the label for this collection. Not a separate button.
     */
    group?: PnActionMenuItem[];
}
/** Create a nested sub menu that you must explicitly toggle to view. */
export interface PnActionMenuSubMenu extends PnActionMenuOption {
    /** Assign the array of {@link PnActionMenuItem} objects. */
    options?: PnActionMenuItem[];
}
/**
 * The label and value property are required for every `pn-action-menu` option.
 *
 * See individual items for exact type:
 * - {@link PnActionMenuOption}
 * - {@link PnActionMenuLink}
 * - {@link PnActionMenuInput}
 *
 * Group multiple items inside one of the following:
 * - {@link PnActionMenuGroup}
 * - {@link PnActionMenuSubMenu}
 */
export interface PnActionMenuItem extends PnActionMenuOption, PnActionMenuLink, PnActionMenuInput, PnActionMenuGroup, PnActionMenuSubMenu {
}
export interface PnPaginationItem {
    page: number;
    index: number;
}
export type PnZipCodeSearchLanguages = '' | typeof sv | typeof en;
export type PnMeasurements = {
    /** The elements height upwards. */
    hUp: number;
    /** The elements height downwards. */
    hDown: number;
    /** Space available upwards */
    sUp: number;
    /** Space available downwards */
    sDown: number;
};
/** @deprecated Use the {@link PnSearchFieldSimple simple} option instead. */
export type PnSearchFieldIcon = 'icon';
/** @deprecated Use the {@link PnSearchFieldAuto auto} option instead. */
export type PnSearchFieldNone = 'none';
/** @deprecated Use the {@link PnSearchFieldAuto auto} option instead. */
export type PnSearchFieldIconInline = 'icon-inline';
/** Similar to the default variant, but the button is now an icon-only with light color. @since v7.18.0 */
export type PnSearchFieldSimple = 'simple';
/** This variant will inline the search button inside the search field. @since v7.18.0 */
export type PnSearchFieldAuto = 'auto';
/** This variant will increase the size of the search field. @since v7.18.0 */
export type PnSearchFieldJumbo = 'jumbo';
/** All pn-search-field variants. */
export type PnSearchFieldButton = '' | PnSearchFieldSimple | PnSearchFieldAuto | PnSearchFieldJumbo | PnSearchFieldNone | PnSearchFieldIcon | PnSearchFieldIconInline;
