/**
 * 店铺平面图 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 时的兜底文案（静态；若需随语言切换请用 getSaveFailedMessage） */
    saveFailedMessage?: string;
    /** 保存失败时按当前运行时语言解析兜底文案（优先于 saveFailedMessage） */
    getSaveFailedMessage?: () => string;
    /**
     * 是否走宿主 shop request 通道（`isShopApi`）。
     * 默认 true：本 client 仅用于 `/shop/schedule/floor-plan`；拓扑单次 GET（无订阅）也需 shop 路由。
     * 仅在极少数非 shop 宿主探测场景传 false。
     */
    useShopApi?: boolean;
};
/** ensure 流程可选：404 时 POST 创建体由调用方注入 */
export declare type EnsureShopFloorPlanByCodeOptions = ShopFloorPlanByCodeRequestOptions & {
    buildDefaultPostBody?: (code: string) => PostShopFloorPlanBody;
};
