import { type Logger } from '@restorecommerce/logger';
import type { Server as GRPCServer, ServiceImplementation, CompatServiceDefinition } from 'nice-grpc';
import { WithRequestID } from './middlewares.js';
/**
 * Name of the transport
 */
export declare const NAME = "grpc";
export interface BindConfig<Service extends CompatServiceDefinition> {
    service: Service;
    implementation: ServiceImplementation<Service>;
}
/**
 * Server transport provider.
 * @class
 */
export declare class Server {
    config: any;
    logger: Logger;
    server: GRPCServer<WithRequestID>;
    name: string;
    isBound: boolean;
    /**
     * Server is a gRPC transport provider for serving.
     *
     * @param {Object} config Configuration object.
     * Requires properties: addr
     * Optional properties: credentials.ssl.certs
     * @param {Logger} logger Logger.
     */
    constructor(config: any, logger: Logger);
    /**
     * bind maps the service to gRPC methods and binds the address.
     *
     * @param {BindConfig} config Service bind config.
     */
    bind(config: BindConfig<any>): void;
    /**
     * start launches the gRPC server and provides the service endpoints.
     */
    start(): Promise<void>;
    /**
     * end stops the gRPC server and no longer provides the service endpoints.
     */
    end(): Promise<any>;
}
export { Server as grpcServer };
//# sourceMappingURL=index.d.ts.map