import { Logger } from "@decaf-ts/logging";
import { BCCSPConfig, ChaincodeConfig, DeliveryClientConfig, DiscoveryConfig, GatewayConfig, GeneralConfig, GossipConfig, HandlersConfig, KeepAliveConfig, LedgerStateConfig, LimitsConfig, MSGSizeConfig, MSPConfig, PrivateDataStoreConfig, ProfileConfig, TLSConfig, VMConfig } from "../interfaces/fabric/peer-config";
import { MetricsConfig, OperationsConfig } from "../interfaces/fabric/general-configs";
export declare class FabricPeerConfigBuilder {
    private log;
    private config;
    constructor(logger?: Logger);
    setGossip(gossip?: GossipConfig): this;
    setTLS(tls?: TLSConfig): this;
    setAuthentication(authentication?: string): this;
    setKeepAlice(keepAlice?: KeepAliveConfig): this;
    setGateway(gateway?: GatewayConfig): this;
    setGeneral(general?: GeneralConfig): this;
    setBCCSP(bccsp?: BCCSPConfig): this;
    setMspConfig(mspConfig?: MSPConfig): this;
    setConnTimeoutClient(connTimeoutClient?: string): this;
    setDeliveryClient(deliveryClient?: DeliveryClientConfig): this;
    setProfile(profile?: ProfileConfig): this;
    setHandlers(handlers?: HandlersConfig): this;
    setDiscovery(discovery?: DiscoveryConfig): this;
    setLimits(limits?: LimitsConfig): this;
    setMessageSize(size?: MSGSizeConfig): this;
    setChaincode(chaincode?: ChaincodeConfig): this;
    setVMOptions(options?: VMConfig): this;
    setLedgerState(state?: LedgerStateConfig): this;
    setLegerBlockchain(blockchain?: any): this;
    enableLedgerHistoryDatabase(enable?: boolean): this;
    setLedgerPvtDataStore(pvtData?: PrivateDataStoreConfig): this;
    setLedgerSnapshotsRootDir(rootDir?: string): this;
    setOperations(operations?: OperationsConfig): this;
    setMetrics(metrics?: MetricsConfig): this;
    /**
     * @description Saves the current configuration to a file.
     * @summary Writes the current Fabric CA Server configuration to a YAML file at the specified path. If the directory doesn't exist, it will be created.
     * @param {string} cpath - The path where the configuration file should be saved.
     * @return {this} The current instance of the builder for method chaining.
     * @example
     * const builder = new FabricCAServerCommandBuilder();
     * builder.save('/path/to/config/fabric-ca-server.yaml');
     *
     * @mermaid
     * sequenceDiagram
     *   participant Client
     *   participant Builder as FabricCAServerCommandBuilder
     *   participant FileSystem as File System
     *   Client->>Builder: saveConfig('/path/to/config/fabric-ca-server.yaml')
     *   Builder->>Builder: Check if cpath is defined
     *   alt cpath is defined
     *     Builder->>FileSystem: Check if directory exists
     *     alt Directory doesn't exist
     *       Builder->>FileSystem: Create directory
     *     end
     *     Builder->>Builder: Log debug message
     *     Builder->>FileSystem: Write YAML configuration to file
     *   end
     *   Builder-->>Client: Return this
     */
    save(cpath?: string): this;
}
