import { SecurityProviderTypes, SecurityRoleScopes, RuleLogicalOperator } from "./index";
export interface OmniaServiceMetadata {
    title?: string;
    description?: string;
}
export interface OmniaServiceMetadataExtended extends OmniaServiceMetadata {
    id?: string;
}
export interface SecurityProviderIdentity {
    providerId: string;
}
export interface SecurityProvider extends SecurityProviderIdentity {
    type: SecurityProviderTypes;
}
export interface SecurityRoleIdentity {
    roleName: string;
    scope: SecurityRoleScopes;
}
export interface RoleBasedSecurityProviderOptions extends SecurityProviderIdentity, SecurityRoleIdentity {
}
export interface CombinedSecurityProviderOptions extends SecurityProviderIdentity {
}
export interface RoleBasedSecurityProvider extends RoleBasedSecurityProviderOptions, SecurityProvider {
}
export interface SecurityProviderRule extends SecurityProviderIdentity {
    logicalOperator: RuleLogicalOperator;
}
export interface CombinedSecurityProviders extends SecurityProvider {
    securityProviderRules: Array<SecurityProviderRule>;
}
export interface BuildOptions {
    /**
    * enable tree shaking for dead-code elimination.
    */
    enableTreeShaking?: boolean;
    /**
    * it will disable auto add manifest dependencies.
    */
    disableAutoAddManifestDependency?: boolean;
    /**
    * it will disable detect modules with circular dependencies.
    */
    disableDetectCircularDependency?: boolean;
    /**
    * Set options to bundle process.
    * Usage: bundleOptions:{...}
    */
    bundleOptions?: BundleOptions;
    /**
    * Set options to module process.
    * Usage: moduleOptions:{...}
    */
    moduleOptions?: ModuleOptions;
}
export interface BundleOptions {
    /**
    * Generate an extra chunk, which contains common modules shared between entry points.
    * Usage: commonsChunk:{...}
    */
    commonsChunk?: {
        /**
        * The chunk name of the commons chunk. If set to manifest id, will append content to that manifest.
        */
        name: string;
        /**
        * The minimum number of chunks which need to contain a module before it's moved into the commons chunk. Default value is 2.
        */
        minChunks?: number;
    };
}
export interface ModuleOptions {
    /**
    * Generate an extra chunk, which contains common modules shared between entry points.
    * Usage: commonsChunk:{...}
    */
    omitPath?: {
        /**
        * The value that will be replaced by the new value
        */
        searchValue: string;
        /**
        * The value to replace the search value with. Default value is empty
        */
        replaceValue?: number;
    };
    /**
    * enable to use the path in coomment into a file like //! <omnia-transform-resource path="b483ca53-efb8-4d9f-98d4-1e48b74cd324" /> instead of file path structure .
    */
    enableTransformResourcePath?: boolean;
}
