/*
 * Copyright (C) 2020 The Android Open Source Project
 *
 * 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.
 */
package com.android.car.internal;

import static com.android.car.internal.testing.ExcludeFromCodeCoverageGeneratedReport.BOILERPLATE_CODE;

import com.android.car.internal.testing.ExcludeFromCodeCoverageGeneratedReport;

/**
 * Provides common constants for CarService, CarServiceHelperService and other packages.
 */
public final class SystemConstants {

    public static final String ICAR_SYSTEM_SERVER_CLIENT = "ICarSystemServerClient";

    @ExcludeFromCodeCoverageGeneratedReport(reason = BOILERPLATE_CODE,
            details = "private constructor")
    private SystemConstants() {
        throw new UnsupportedOperationException("contains only static constants");
    }
}
