import { CreateSubscriptionOptions, PubSub, Subscription } from "@google-cloud/pubsub";
import { CancelablePromise, PubSubService, ServiceParameters } from "@webda/core";
export declare class GCPPubSubParameters extends ServiceParameters {
    /**
     * Topic to use on GCP
     */
    topic: string;
    /**
     * Subscription options to pass to GCP
     */
    subscriptionOptions?: CreateSubscriptionOptions;
}
/***
 * Implement GCP Pub/Sub
 *
 * Can also act as queue
 *
 * @WebdaModda GoogleCloudPubSub
 */
export default class GCPPubSubService<T = any, K extends GCPPubSubParameters = GCPPubSubParameters> extends PubSubService<T, K> {
    pubsub: PubSub;
    /**
     * @override
     */
    resolve(): this;
    /**
     * @override
     */
    sendMessage(event: T): Promise<void>;
    size(): Promise<number>;
    /**
     * Get the subscription name
     * @returns
     */
    getSubscriptionName(): string;
    /**
     * @override
     */
    consume(callback: (event: T) => Promise<void>, eventPrototype?: new () => T, onBind?: (subscription: Subscription) => void): CancelablePromise<void>;
}
export { GCPPubSubService };
