/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import { SerializationFactory, type PlainObject } from '@finos/legend-shared';
export declare enum ServiceOwnershipType {
    DEPLOYMENT_OWNERSHIP = "deploymentOwnership",
    USER_LIST_OWNERSHIP = "userListOwnership"
}
export declare abstract class ServiceOwnershipDetail {
    abstract readonly _type: ServiceOwnershipType;
}
export declare class UserListOwnershipDetail extends ServiceOwnershipDetail {
    readonly _type = ServiceOwnershipType.USER_LIST_OWNERSHIP;
    users: string[];
}
export declare class DeploymentOwnershipDetail extends ServiceOwnershipDetail {
    readonly _type = ServiceOwnershipType.DEPLOYMENT_OWNERSHIP;
    identifier: string;
}
/**
 * Lightweight representation of a service returned by the
 * engine `/service/list/detailsFromCache` endpoint.
 *
 * Only the fields consumed by the marketplace UI are modelled here
 * to avoid coupling to the full protocol model.
 */
export declare class ServiceDetail {
    name: string;
    title: string | undefined;
    pattern: string;
    documentation: string;
    ownership: ServiceOwnershipDetail | undefined;
    private static readonly _schema;
    static readonly serialization: SerializationFactory<ServiceDetail>;
    /**
     * Deserialize a plain JSON object into a ServiceDetail, normalizing
     * the legacy `owners: string[]` field into a `UserListOwnershipDetail`
     * when no structured `ownership` is present.
     */
    static fromJson(json: PlainObject<ServiceDetail>): ServiceDetail;
}
//# sourceMappingURL=ServiceDetail.d.ts.map