<?php

namespace Modules\Bms\Services\Contracts;

/**
 * Fixed-asset boundary (chairs, tables, AV, décor). The ERP's AssetManagement
 * module is registered but not present in this codebase, so the bound
 * implementation is BMS-native (bms_assets, built in Release 2). If the ERP
 * asset module is later confirmed live, swap this binding to an ErpAdapter —
 * a one-line change in Config/config.php. Flowers and similar consumables
 * stay in ERP inventory and go through StockServiceContract instead.
 */
interface AssetServiceContract
{
    /** Register a trackable asset; returns the asset id. */
    public function register(int $businessId, array $attrs): int;

    /** Move an asset to a new location (warehouse/hall) with an audit trail. */
    public function transferLocation(int $businessId, int $assetId, int $toLocationId, array $meta = []): void;

    /** Resolve an asset's current state. */
    public function find(int $businessId, int $assetId): ?array;
}
