///
import type { TAction } from '../constants/action';
import type { Customizations, IConfig } from '../utils/config';
export declare type ContextProps = {
config: IConfig;
customizations?: Customizations;
children?: React.ReactNode;
};
export declare type Dispatch = (action: TAction) => void;
export declare type GlobalState = {
user: {
data: {
id?: string;
email?: string | null;
[key: string]: any;
};
isLoading: boolean;
};
auth: {
access_token: string | null;
refresh_token: string | null;
app_id: string | null;
init_data?: Record;
is_verified_user?: boolean;
};
app: {
id?: string;
icon?: string;
icon_content_type?: string;
config: AppConfig | null;
schema: AppSchema | null;
user_verification_field?: string;
user_verification_fields?: string[];
};
config?: IConfig;
};
declare type AppSchema = Record;
export interface SchemaField {
display_name: string;
type: string;
data_category: string;
required: boolean;
owned_by: string;
user_visible: boolean;
revoke_after: string;
required_retention: string;
collection_justification: string;
opt_out_warning: string;
}
export interface AppConfig {
customizations: {
primary_color: string;
};
default_user_id_format?: string;
hub: {
auth: {
allow_unverified_users?: boolean;
additional_fields: [
{
name: string;
type: string;
label: string;
placeholder?: string;
options: [
{
value: string;
label: string;
}
];
}
];
email: {
from_address: string;
image: string;
};
show_app_icon: boolean;
};
customizations: HubCustomizations;
};
}
export interface HubCustomizations {
rounded_corners: boolean;
primary_color: string;
placement: 'bottom-left' | 'hidden';
offset_x: number;
offset_y: number;
property_overrides: Record;
}
export {};