FacepalmConfigModule.java

/*
 * SPDX-License-Identifier: Apache-2.0
 * Copyright 2026 Nikolas Charalambidis
 */

package dev.nichar.facepalm.module;

import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import dev.nichar.facepalm.FacepalmConfig;
import javax.inject.Singleton;
import lombok.RequiredArgsConstructor;

/**
 * Guice module for injecting plugin configuration.
 * Exposes {@link FacepalmConfig} as a singleton to ensure consistent state across all components.
 *
 * @author Nikolas Charalambidis
 * @since 1.0.0
 */
@RequiredArgsConstructor
public class FacepalmConfigModule extends AbstractModule {

    private final FacepalmConfig config;

    /**
     * Provides the pre-assembled configuration instance to the DI container.
     *
     * @return pre-assembled configuration DTO used for the current execution.
     */
    @Provides
    @Singleton
    FacepalmConfig provideConfig() {
        return config;
    }
}