import { ArrayVariable } from '@arcgis/core/arcade';
import { default as Field } from '@arcgis/core/layers/support/Field';
/** Public configuration options for the arcade assistant */
export type ArcadeAssistantConfig = {
    /** The URL of the portal the arcade editor is loaded for. Typically accessed via `portal.url` */
    portalUrl: string;
    /** A unique key for your application, used to identify the app in the feedback system.
     * Typically you will not need to provide this, granted that you have set `esriConfig.applicationName` in your app.
     */
    appVersion?: string;
};
export type ArcadeAssistantRemoteState = {
    shouldRender: true;
    serviceUrl: string;
    feedbackServiceUrl: string;
    helpBase: string;
    assistantsEnabled: boolean;
} | {
    shouldRender: false;
};
export interface PortalSelfResponse {
    helperServices?: {
        aiAssistantServices?: {
            url?: string;
        };
        [key: string]: unknown;
    };
    helpBase?: string;
    [key: string]: unknown;
}
export interface PortalSettingsResponse {
    aiAssistantsEnabled?: boolean;
    [key: string]: unknown;
}
export interface SignInSettingsResponse {
    blockBetaApps?: boolean;
}
export type FieldsBasedContext = {
    name: string;
    type: "feature" | "featureSet" | "knowledgeGraph";
    fields?: (Pick<Field, "alias" | "name" | "type"> & {
        domain?: Field["domain"];
    })[];
};
export type FeatureSetCollectionContext = {
    name: string;
    type: "featureSetCollection";
    layers: FieldsBasedContext[];
    tables: FieldsBasedContext[];
};
export type DictionaryContext = {
    name: string;
    type: "dictionary";
    attributes: ArcadeAiContextVariable[];
};
export type MembersBasedContext = {
    name: string;
    type: "pixel" | "voxel";
    members?: ArcadeAiContextVariable[];
};
type ArrayContext = {
    name: string;
    type: "array";
    elementType?: ArrayVariable["elementType"]["type"];
};
export type ValueContext = {
    name: string;
    type: "boolean" | "date" | "dateOnly" | "geometry" | "number" | "text" | "time";
};
export type ArcadeAiContextVariable = ArrayContext | DictionaryContext | FeatureSetCollectionContext | FieldsBasedContext | MembersBasedContext | ValueContext;
export interface ArcadeAiProfileContext {
    variables: ArcadeAiContextVariable[];
}
export {};
