import { AIMetadata } from "../ai/types";
/**
 * Subscriptions / payments
 */
export interface GeneratePaymentLinkResponse {
    url: string;
}
export interface ExtendTrialRequest {
    extensionReasonType: "havent-used" | "no-value" | "too-expensive" | "need-buy-in" | "other";
    extensionCustomReason?: string;
}
/**
 * Images
 */
export interface UploadImageRequest {
    folder: string;
}
export interface UploadImageResponse {
    timestamp: number;
    signature: string;
}
/**
 * Fonts
 */
export declare const MimeTypeToFontFormatMap: {
    readonly "font/woff": "woff";
    readonly "application/font-woff": "woff";
    readonly "font/woff2": "woff2";
    readonly "font/ttf": "ttf";
    readonly "font/otf": "otf";
};
export type StaticFontMetadata = {
    type: "static";
    fontFamily: string;
    weight: FontWeightType;
};
export type VariableFontMetadata = {
    type: "variable";
    fontFamily: string;
    supportedWeights: FontWeightType[];
};
export type ParseFontResponse = StaticFontMetadata | VariableFontMetadata;
export interface UploadFontRequest {
    path: string;
}
/**
 * Team management
 */
export interface InviteTeamRequest {
    toEmail: string;
}
export interface InvitesResponse {
    invites: Array<{
        email: string;
    }>;
}
export interface UpdateTeamMemberRequest {
    id: string;
    active: boolean;
}
export interface TeamMemberInfo {
    id: string;
    name: string;
    avatarSrc: string;
    email: string;
    active: boolean;
}
export interface TeamMembersResponse {
    members: TeamMemberInfo[];
}
export interface Invitation {
    id: number;
    invitedByEmail: string;
    members: TeamMemberInfo[];
    teamId: number;
}
export interface InvitationsResponse {
    invitations: Invitation[];
}
export interface UpdateInvitationRequest {
    id: number;
    action: "accept" | "decline";
}
export interface GetPublicPageRequest {
    truncatedProjectId: string;
    definitionId: string;
}
export interface GetPublicPageResponse {
    project: SupabaseProject;
}
/**
 * AI
 */
import { FontWeightType, PageSuggestion, ThemeStyleType } from "../data/types";
import { SupabaseProject } from "../supabase-client/supabase-types";
export interface IconsSuggestionsRequest {
    iconPrompt: string;
    allIconNames: string[];
}
export interface IconsSuggestionsResponse {
    suggestions: string[];
}
export interface RefactorCodeRequest {
    linesWithNumbers: string[];
}
interface UpdatePropertyAction {
    type: "UPDATE_PROPERTY";
    nodeId: string;
    name: string;
    value: string;
}
interface DeleteNodeAction {
    type: "DELETE_NODE";
    nodeId: string;
    deleteDescendents: boolean;
}
interface ReplaceNodeAction {
    type: "REPLACE_NODE";
    nodeId: string;
    code: string;
}
interface InsertBeforeNodeAction {
    type: "INSERT_BEFORE_NODE";
    nodeId: string;
    code: string;
}
interface InsertAfterNodeAction {
    type: "INSERT_AFTER_NODE";
    nodeId: string;
    code: string;
}
export type AIUpdateItem = UpdatePropertyAction | DeleteNodeAction | ReplaceNodeAction | InsertBeforeNodeAction | InsertAfterNodeAction;
export interface EditComponentRequest {
    componentName: string;
    code: string;
    prompt: string;
}
export interface EditComponentResponse {
    updates: AIUpdateItem[];
    messages: any;
    descriptionData: any;
}
export interface GeneratePageRequest {
    context: string;
    nameOrDescription: string;
    themeStyle: ThemeStyleType;
}
export interface GeneratePageSuggestionsRequest {
    companyContext: string;
}
export interface GeneratePageSuggestionsResponse {
    pageSuggestions: PageSuggestion[];
}
export interface ReplaceContentRequest {
    aiMetadata: AIMetadata;
    companyContext: string | null;
    instructions: string;
}
export interface ReplaceContentResponse {
    newData: AIMetadata;
}
export declare const STREAMED_JSON_DELIMITER = "\n";
export declare const AI_PAGE_GENERATION_COUNT = 4;
export {};
//# sourceMappingURL=types.d.ts.map