
import type { OrAssetAttributePickerPickedEvent, OrAssetAttributePicker } from "./lib/asset-attribute-picker.d.ts";
import type { OrAssetTypeAttributePickerPickedEvent, OrAssetTypeAttributePicker } from "./lib/assettype-attribute-picker.d.ts";
import type { AssettypeList } from "./lib/assettype-list.d.ts";
import type { OrAttributePickerPickedEvent, OrAttributePicker, * } from "./lib/index.d.ts";

/**
 * This type can be used to create scoped tags for your components.
 *
 * Usage:
 *
 * ```ts
 * import type { ScopedElements } from "path/to/library/jsx-integration";
 *
 * declare module "my-library" {
 *   namespace JSX {
 *     interface IntrinsicElements
 *       extends ScopedElements<'test-', ''> {}
 *   }
 * }
 * ```
 *
 * @deprecated Runtime scoped elements result in duplicate types and can confusing for developers. It is recommended to use the `prefix` and `suffix` options to generate new types instead.
 */
export type ScopedElements<
  Prefix extends string = "",
  Suffix extends string = ""
> = {
  [Key in keyof CustomElements as `${Prefix}${Key}${Suffix}`]: CustomElements[Key];
};

type BaseProps<T extends HTMLElement> = {

  /** Content added between the opening and closing tags of the element */
  children?: any;
  /** Used for declaratively styling one or more elements using CSS (Cascading Stylesheets) */
  class?: string;
  /** Used for declaratively styling one or more elements using CSS (Cascading Stylesheets) */
  className?: string;
  /** Takes an object where the key is the class name(s) and the value is a boolean expression. When true, the class is applied, and when false, it is removed. */
  classList?: Record<string, boolean | undefined>;
  /** Specifies the text direction of the element. */
  dir?: "ltr" | "rtl";
  /** Contains a space-separated list of the part names of the element that should be exposed on the host element. */
  exportparts?: string;
  /** For <label> and <output>, lets you associate the label with some control. */
  htmlFor?: string;
  /** Specifies whether the element should be hidden. */
  hidden?: boolean | string;
  /** A unique identifier for the element. */
  id?: string;
  /** Keys tell React which array item each component corresponds to */
  key?: string | number;
  /** Specifies the language of the element. */
  lang?: string;
  /** Contains a space-separated list of the part names of the element. Part names allows CSS to select and style specific elements in a shadow tree via the ::part pseudo-element. */
  part?: string;
  /** Use the ref attribute with a variable to assign a DOM element to the variable once the element is rendered. */
  ref?: T | ((e: T) => void);
  /** Adds a reference for a custom element slot */
  slot?: string;
  /** Prop for setting inline styles */
  style?: Record<string, string | number>;
  /** Overrides the default Tab button behavior. Avoid using values other than -1 and 0. */
  tabIndex?: number;
  /** Specifies the tooltip text for the element. */
  title?: string;
  /** Passing 'no' excludes the element content from being translated. */
  translate?: "yes" | "no";
  /** The popover global attribute is used to designate an element as a popover element. */
  popover?: "auto" | "hint" | "manual";
  /** Turns an element element into a popover control button; takes the ID of the popover element to control as its value. */
  popovertarget?: "top" | "bottom" | "left" | "right" | "auto";
  /** Specifies the action to be performed on a popover element being controlled by a control element. */
  popovertargetaction?: "show" | "hide" | "toggle";

} ;

type BaseEvents = {


};



export type OrAssetAttributePickerProps = {
  /** Callback method for consumers to filter the attribute list shown. Returning true will make the attribute visible, returning false hides it. */
  "attributeFilter"?: OrAssetAttributePicker['attributeFilter'];
  /** Whether selecting multiple attributes is allowed or not. */
  "multiSelect"?: OrAssetAttributePicker['multiSelect'];
  /** Whether only attributes with the 'STORE_DATAPOINT' meta item should be shown. */
  "showOnlyDatapointAttrs"?: OrAssetAttributePicker['showOnlyDatapointAttrs'];
  /** Whether only attributes with the 'RULE_STATE' meta item should be shown. */
  "showOnlyRuleStateAttrs"?: OrAssetAttributePicker['showOnlyRuleStateAttrs'];
  /**  */
  "selectedAssets"?: OrAssetAttributePicker['selectedAssets'];
  /**  */
  "selectedAttributes"?: OrAssetAttributePicker['selectedAttributes'];

  /**  */
  "onundefined"?: (e: CustomEvent<OrAssetAttributePickerPickedEvent>) => void;
}


export type OrAssetTypeAttributePickerProps = {
  /** -Callback method for consumers to filter the asset type list shown. Returning true will make the asset type visible, returning false hides it. */
  "assetTypeFilter"?: OrAssetTypeAttributePicker['assetTypeFilter'];
  /** Callback method for consumers to filter the attribute list shown. Returning true will make the attribute visible, returning false hides it. */
  "attributeFilter"?: OrAssetTypeAttributePicker['attributeFilter'];
  /** Whether selecting multiple attributes is allowed or not. */
  "multiSelect"?: OrAssetTypeAttributePicker['multiSelect'];
  /** Whether only attributes with the 'STORE_DATAPOINT' meta item should be shown. */
  "showOnlyDatapointAttrs"?: OrAssetTypeAttributePicker['showOnlyDatapointAttrs'];
  /** Whether only attributes with the 'RULE_STATE' meta item should be shown. */
  "showOnlyRuleStateAttrs"?: OrAssetTypeAttributePicker['showOnlyRuleStateAttrs'];
  /**  */
  "selectedAttributes"?: OrAssetTypeAttributePicker['selectedAttributes'];

  /**  */
  "onundefined"?: (e: CustomEvent<OrAssetTypeAttributePickerPickedEvent>) => void;
}


export type AssettypeListProps = {


}


export type OrAttributePickerProps = {
  /** Callback method for consumers to filter the attribute list shown. Returning true will make the attribute visible, returning false hides it. */
  "attributeFilter"?: OrAttributePicker['attributeFilter'];
  /** Whether selecting multiple attributes is allowed or not. */
  "multiSelect"?: OrAttributePicker['multiSelect'];
  /** Whether only attributes with the 'STORE_DATAPOINT' meta item should be shown. */
  "showOnlyDatapointAttrs"?: OrAttributePicker['showOnlyDatapointAttrs'];
  /** Whether only attributes with the 'RULE_STATE' meta item should be shown. */
  "showOnlyRuleStateAttrs"?: OrAttributePicker['showOnlyRuleStateAttrs'];
  /**  */
  "selectedAssets"?: OrAttributePicker['selectedAssets'];
  /**  */
  "selectedAttributes"?: OrAttributePicker['selectedAttributes'];

  /**  */
  "onundefined"?: (e: CustomEvent<OrAssetAttributePickerPickedEvent>) => void;
}

  export type CustomElements = {


  /**
     * The "Attribute Picker" component using the OrAssetTree component for selecting assets and its attributes.
 * 
 * ## Attributes & Properties
 * 
 * Component attributes and properties that can be applied to the element or by using JavaScript.
 * 
 * - `attributeFilter`: Callback method for consumers to filter the attribute list shown. Returning true will make the attribute visible, returning false hides it. 
 * - `multiSelect`: Whether selecting multiple attributes is allowed or not. 
 * - `showOnlyDatapointAttrs`: Whether only attributes with the 'STORE_DATAPOINT' meta item should be shown. 
 * - `showOnlyRuleStateAttrs`: Whether only attributes with the 'RULE_STATE' meta item should be shown. 
 * - `selectedAssets`: undefined (property only)
 * - `selectedAttributes`: undefined (property only)
 * 
 * ## Events
 * 
 * Events that will be emitted by the component.
 * 
 * - `undefined`: undefined
 * 
 * ## Methods
 * 
 * Methods that can be called to access component functionality.
 * 
 * - `setAttributeFilter(attributeFilter: ((attribute: Attribute<any>) => boolean) | undefined) => this`: undefined
 * - `setSelectedAssets(selectedAssets: string[]) => this`: undefined
 * - `setSelectedAttributes(selectedAttributes: AttributeRef[]) => this`: undefined
 * - `setShowOnlyDatapointAttrs(showOnlyDatapointAttrs: boolean | undefined) => this`: undefined
 * - `setShowOnlyRuleStateAttrs(showOnlyRuleStateAttrs: boolean | undefined) => this`: undefined
 * - `setMultiSelect(multiSelect: boolean | undefined) => this`: undefined
 * - `setOpen(isOpen: boolean) => this`: undefined
 * - `setHeading(heading: TemplateResult | string | undefined) => this`: undefined
 * - `setContent(_content: TemplateResult | (() => TemplateResult) | undefined) => this`: undefined
 * - `setActions(_actions: DialogAction[] | undefined) => this`: undefined
 * - `setDismissAction(_action: DialogActionBase | null | undefined) => this`: undefined
 * - `setStyles(_styles: string | TemplateResult | undefined) => this`: undefined
 * - `setAvatar(_avatar: boolean | undefined) => this`: undefined
  */
    "or-asset-attribute-picker": Partial<OrAssetAttributePickerProps & BaseProps<OrAssetAttributePicker> & BaseEvents>;


  /**
     * The "Attribute Picker" component using the OrAssetTree component for selecting assets and its attributes.
 * 
 * ## Attributes & Properties
 * 
 * Component attributes and properties that can be applied to the element or by using JavaScript.
 * 
 * - `assetTypeFilter`: -Callback method for consumers to filter the asset type list shown. Returning true will make the asset type visible, returning false hides it. 
 * - `attributeFilter`: Callback method for consumers to filter the attribute list shown. Returning true will make the attribute visible, returning false hides it. 
 * - `multiSelect`: Whether selecting multiple attributes is allowed or not. 
 * - `showOnlyDatapointAttrs`: Whether only attributes with the 'STORE_DATAPOINT' meta item should be shown. 
 * - `showOnlyRuleStateAttrs`: Whether only attributes with the 'RULE_STATE' meta item should be shown. 
 * - `selectedAttributes`: undefined (property only)
 * 
 * ## Events
 * 
 * Events that will be emitted by the component.
 * 
 * - `undefined`: undefined
 * 
 * ## Methods
 * 
 * Methods that can be called to access component functionality.
 * 
 * - `setSelectedAttributes(selectedAttributes: Map<string, AttributeDescriptor[]>) => void`: undefined
 * - `setShowOnlyDatapointAttrs(showOnlyDatapointAttrs: boolean | undefined) => this`: undefined
 * - `setShowOnlyRuleStateAttrs(showOnlyRuleStateAttrs: boolean | undefined) => this`: undefined
 * - `setMultiSelect(multiSelect: boolean | undefined) => this`: undefined
 * - `setOpen(isOpen: boolean) => this`: undefined
 * - `setHeading(heading: TemplateResult | string | undefined) => this`: undefined
 * - `setContent(_content: TemplateResult | (() => TemplateResult) | undefined) => this`: undefined
 * - `setActions(_actions: DialogAction[] | undefined) => this`: undefined
 * - `setDismissAction(_action: DialogActionBase | null | undefined) => this`: undefined
 * - `setStyles(_styles: string | TemplateResult | undefined) => this`: undefined
 * - `setAvatar(_avatar: boolean | undefined) => this`: undefined
  */
    "or-assettype-attribute-picker": Partial<OrAssetTypeAttributePickerProps & BaseProps<OrAssetTypeAttributePicker> & BaseEvents>;


  /**
     * 
  */
    "asset-type-list": Partial<AssettypeListProps & BaseProps<AssettypeList> & BaseEvents>;


  /**
     * @deprecated Replaced this class with {@link OrAssetAttributePicker}.
 * 
 * Dialog to pick attributes of supplied asset(s).
 * 
 * ## Attributes & Properties
 * 
 * Component attributes and properties that can be applied to the element or by using JavaScript.
 * 
 * - `attributeFilter`: Callback method for consumers to filter the attribute list shown. Returning true will make the attribute visible, returning false hides it. 
 * - `multiSelect`: Whether selecting multiple attributes is allowed or not. 
 * - `showOnlyDatapointAttrs`: Whether only attributes with the 'STORE_DATAPOINT' meta item should be shown. 
 * - `showOnlyRuleStateAttrs`: Whether only attributes with the 'RULE_STATE' meta item should be shown. 
 * - `selectedAssets`: undefined (property only)
 * - `selectedAttributes`: undefined (property only)
 * 
 * ## Events
 * 
 * Events that will be emitted by the component.
 * 
 * - `undefined`: undefined
 * 
 * ## Methods
 * 
 * Methods that can be called to access component functionality.
 * 
 * - `setAttributeFilter(attributeFilter: ((attribute: Attribute<any>) => boolean) | undefined) => this`: undefined
 * - `setSelectedAssets(selectedAssets: string[]) => this`: undefined
 * - `setSelectedAttributes(selectedAttributes: AttributeRef[]) => this`: undefined
 * - `setShowOnlyDatapointAttrs(showOnlyDatapointAttrs: boolean | undefined) => this`: undefined
 * - `setShowOnlyRuleStateAttrs(showOnlyRuleStateAttrs: boolean | undefined) => this`: undefined
 * - `setMultiSelect(multiSelect: boolean | undefined) => this`: undefined
 * - `setOpen(isOpen: boolean) => this`: undefined
 * - `setHeading(heading: TemplateResult | string | undefined) => this`: undefined
 * - `setContent(_content: TemplateResult | (() => TemplateResult) | undefined) => this`: undefined
 * - `setActions(_actions: DialogAction[] | undefined) => this`: undefined
 * - `setDismissAction(_action: DialogActionBase | null | undefined) => this`: undefined
 * - `setStyles(_styles: string | TemplateResult | undefined) => this`: undefined
 * - `setAvatar(_avatar: boolean | undefined) => this`: undefined
  */
    "or-attribute-picker": Partial<OrAttributePickerProps & BaseProps<OrAttributePicker> & BaseEvents>;
  }

export type CustomCssProperties = {

}


declare module 'react' {
  namespace JSX {
    interface IntrinsicElements extends CustomElements {}
  }
  export interface CSSProperties extends CustomCssProperties {}
}

declare module 'preact' {
  namespace JSX {
    interface IntrinsicElements extends CustomElements {}
  }
  export interface CSSProperties extends CustomCssProperties {}
}

declare module '@builder.io/qwik' {
  namespace JSX {
    interface IntrinsicElements extends CustomElements {}
  }
  export interface CSSProperties extends CustomCssProperties {}
}

declare module '@stencil/core' {
  namespace JSX {
    interface IntrinsicElements extends CustomElements {}
  }
  export interface CSSProperties extends CustomCssProperties {}
}

declare module 'hono/jsx' {
  namespace JSX {
    interface IntrinsicElements extends CustomElements {}
  }
  export interface CSSProperties extends CustomCssProperties {}
}

declare module 'react-native' {
  namespace JSX {
    interface IntrinsicElements extends CustomElements {}
  }
  export interface CSSProperties extends CustomCssProperties {}
}

declare global {
  namespace JSX {
    interface IntrinsicElements extends CustomElements {}
  }
  export interface CSSProperties extends CustomCssProperties {}
}
