import { SqlResourceOption, SqlElasticPoolResourceOption, PersistentDiskResourceOption } from './models/index';
import { AzureAdAppPermissionOption } from './AzureAdAppPermissionHelper';
export interface IServiceManifestComposer<T> {
    /**
    *   Request an Sql Db when the service is instantiated
    *   A connection string to a Sql db will be injected upon instantiation.
    */
    requestSqlDatabase: (options: SqlResourceOption) => T;
    /**
    *   Request an Sql Db using shared Elastic Pool when the service is instantiated
    *   A connection string to a Sql db will be injected upon instantiation.
    */
    requestSqlElasticPoolDatabase: (options: SqlElasticPoolResourceOption) => T;
    /**
      *   Request a Persistent Disk for storing files
      */
    requestPersistentDisk: (options: PersistentDiskResourceOption) => T;
    /**
    *   Require an Azure Ad App permissions
    */
    requireAzureAdAppPermissions: (options: AzureAdAppPermissionOption) => T;
    /**
     * This service is not deployed by default. It is able to be deployed via an extension feature activation
     * */
    isOnTheFlyService: () => T;
}
export declare class ServiceManifestComposer<T> implements IServiceManifestComposer<T> {
    private getInitInstance;
    constructor(getInitInstance: (() => T));
    requestSqlDatabase: (options: SqlResourceOption) => T;
    requestSqlElasticPoolDatabase: (options: SqlElasticPoolResourceOption) => T;
    requestPersistentDisk: (options: PersistentDiskResourceOption) => T;
    requireAzureAdAppPermissions(options: AzureAdAppPermissionOption): T;
    isOnTheFlyService(): T;
}
