/**
 * 店铺平面图 HTTP 契约（/shop/schedule/floor-plan）与 {@link FloorMapViewConfig} 映射所用类型。
 * 具体请求由 {@link ShopFloorPlanHttpAdapter} 注入，便于 materials 不依赖宿主 request 实现。
 */
/** 遇 code 重复（接口 5001）时，{@link isFloorPlanDuplicateCodeError} 依赖此字段 */
export declare const SHOP_FLOOR_PLAN_DUPLICATE_CODE = "floorPlanDuplicateCode";
export interface ShopFloorPlanDetail {
    id: number;
    shop_id?: number;
    code?: string;
    name?: string | Record<string, string>;
    layout: unknown;
    canvas_width?: number;
    canvas_height?: number;
    sort?: number;
    status?: number;
    created_at?: string;
    updated_at?: string;
    [key: string]: unknown;
}
export interface ShopFloorPlanLayoutItem {
    id: string;
    type: 'rect' | 'circle';
    label: string;
    x: number;
    y: number;
    rotation: number;
    color: string;
    border_color: string;
    resource_id: number | null;
    width?: number;
    height?: number;
    radius?: number;
    [key: string]: unknown;
}
export interface PostShopFloorPlanBody {
    code: string;
    name: Record<string, string>;
    layout?: unknown;
    canvas_width?: number;
    canvas_height?: number;
    sort?: number;
    status?: number;
}
export interface PutShopFloorPlanBody {
    code?: string;
    name?: Record<string, string>;
    layout?: unknown;
    canvas_width?: number;
    canvas_height?: number;
    sort?: number;
    status?: number;
}
export interface ShopFloorPlanByCodeRequestOptions {
    osServer?: boolean;
    subscriberId?: string;
    callback?: (res: unknown) => void;
}
export declare type ShopFloorPlanHttpAdapter = {
    get: (url: string, params?: unknown, config?: Record<string, unknown>) => Promise<unknown>;
    post: (url: string, body?: unknown, config?: Record<string, unknown>) => Promise<unknown>;
    put: (url: string, body?: unknown, config?: Record<string, unknown>) => Promise<unknown>;
};
export declare type CreateShopFloorPlanClientOptions = {
    http: ShopFloorPlanHttpAdapter;
    /** POST/PUT 失败且无更具体 message 时的兜底文案 */
    saveFailedMessage?: string;
};
/** ensure 流程可选：404 时 POST 创建体由调用方注入 */
export declare type EnsureShopFloorPlanByCodeOptions = ShopFloorPlanByCodeRequestOptions & {
    buildDefaultPostBody?: (code: string) => PostShopFloorPlanBody;
};
