import { Context } from "@medusajs/framework/types";
import { ProductReviewStats } from "./types";
interface CalculatedProductReviewStats {
    product_id: string;
    review_count: number;
    average_rating: number;
    rating_count_1: number;
    rating_count_2: number;
    rating_count_3: number;
    rating_count_4: number;
    rating_count_5: number;
}
declare const ProductReviewService_base: import("@medusajs/framework/utils").MedusaServiceReturnType<import("@medusajs/framework/utils").ModelConfigurationsToConfigTemplate<{
    readonly ProductReview: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
        id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
        name: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
        email: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
        phone: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
        rating: import("@medusajs/framework/utils").NumberProperty;
        title: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
        description: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
        product_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
        associated_medias: import("@medusajs/framework/utils").HasMany<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
            id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
            url: import("@medusajs/framework/utils").TextProperty;
            type: import("@medusajs/framework/utils").EnumProperty<["IMAGE", "VIDEO"]>;
            product_review: import("@medusajs/framework/utils").BelongsTo<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "product_review">, undefined>;
        }>, "review_associated_media">>;
        response: import("@medusajs/framework/utils").RelationNullableModifier<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
            id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
            content: import("@medusajs/framework/utils").TextProperty;
            admin_user_id: import("@medusajs/framework/utils").TextProperty;
            product_review: import("@medusajs/framework/utils").BelongsTo<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "product_review">, undefined>;
        }>, "product_review_response">, import("@medusajs/framework/utils").HasOne<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
            id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
            content: import("@medusajs/framework/utils").TextProperty;
            admin_user_id: import("@medusajs/framework/utils").TextProperty;
            product_review: import("@medusajs/framework/utils").BelongsTo<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "product_review">, undefined>;
        }>, "product_review_response">>, false>;
        is_verified_purchase: import("@medusajs/framework/utils").BooleanProperty;
        is_admin_verified: import("@medusajs/framework/utils").BooleanProperty;
    }>, "product_review">;
    readonly ProductReviewResponse: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
        id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
        content: import("@medusajs/framework/utils").TextProperty;
        admin_user_id: import("@medusajs/framework/utils").TextProperty;
        product_review: import("@medusajs/framework/utils").BelongsTo<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
            id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
            name: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
            email: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
            phone: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
            rating: import("@medusajs/framework/utils").NumberProperty;
            title: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
            description: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
            product_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
            associated_medias: import("@medusajs/framework/utils").HasMany<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
                id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
                url: import("@medusajs/framework/utils").TextProperty;
                type: import("@medusajs/framework/utils").EnumProperty<["IMAGE", "VIDEO"]>;
                product_review: import("@medusajs/framework/utils").BelongsTo<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "product_review">, undefined>;
            }>, "review_associated_media">>;
            response: import("@medusajs/framework/utils").RelationNullableModifier<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "product_review_response">, import("@medusajs/framework/utils").HasOne<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "product_review_response">>, false>;
            is_verified_purchase: import("@medusajs/framework/utils").BooleanProperty;
            is_admin_verified: import("@medusajs/framework/utils").BooleanProperty;
        }>, "product_review">, undefined>;
    }>, "product_review_response">;
    readonly ProductReviewStats: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
        id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
        product_id: import("@medusajs/framework/utils").TextProperty;
        average_rating: import("@medusajs/framework/utils").NullableModifier<number, import("@medusajs/framework/utils").NumberProperty>;
        review_count: import("@medusajs/framework/utils").NumberProperty;
        rating_count_1: import("@medusajs/framework/utils").NumberProperty;
        rating_count_2: import("@medusajs/framework/utils").NumberProperty;
        rating_count_3: import("@medusajs/framework/utils").NumberProperty;
        rating_count_4: import("@medusajs/framework/utils").NumberProperty;
        rating_count_5: import("@medusajs/framework/utils").NumberProperty;
    }>, "product_review_stats">;
    readonly ReviewAssociatedMedia: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
        id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
        url: import("@medusajs/framework/utils").TextProperty;
        type: import("@medusajs/framework/utils").EnumProperty<["IMAGE", "VIDEO"]>;
        product_review: import("@medusajs/framework/utils").BelongsTo<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
            id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
            name: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
            email: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
            phone: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
            rating: import("@medusajs/framework/utils").NumberProperty;
            title: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
            description: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
            product_id: import("@medusajs/framework/utils").NullableModifier<string, import("@medusajs/framework/utils").TextProperty>;
            associated_medias: import("@medusajs/framework/utils").HasMany<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "review_associated_media">>;
            response: import("@medusajs/framework/utils").RelationNullableModifier<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
                id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
                content: import("@medusajs/framework/utils").TextProperty;
                admin_user_id: import("@medusajs/framework/utils").TextProperty;
                product_review: import("@medusajs/framework/utils").BelongsTo<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "product_review">, undefined>;
            }>, "product_review_response">, import("@medusajs/framework/utils").HasOne<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
                id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
                content: import("@medusajs/framework/utils").TextProperty;
                admin_user_id: import("@medusajs/framework/utils").TextProperty;
                product_review: import("@medusajs/framework/utils").BelongsTo<() => import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder</*elided*/ any>, "product_review">, undefined>;
            }>, "product_review_response">>, false>;
            is_verified_purchase: import("@medusajs/framework/utils").BooleanProperty;
            is_admin_verified: import("@medusajs/framework/utils").BooleanProperty;
        }>, "product_review">, undefined>;
    }>, "review_associated_media">;
    readonly ProductReviewConfig: import("@medusajs/framework/utils").DmlEntity<import("@medusajs/framework/utils").DMLEntitySchemaBuilder<{
        id: import("@medusajs/framework/utils").PrimaryKeyModifier<string, import("@medusajs/framework/utils").IdProperty>;
        key: import("@medusajs/framework/utils").TextProperty;
        value: import("@medusajs/framework/utils").BooleanProperty;
    }>, "product_review_config">;
}>>;
declare class ProductReviewService extends ProductReviewService_base {
    constructor(container: any);
    protected ensureDefaultConfigs(): Promise<void>;
    refreshProductReviewStats(productIds: string[], sharedContext?: Context): Promise<ProductReviewStats[]>;
    calculateProductReviewStats(productIds: string[], sharedContext?: Context): Promise<CalculatedProductReviewStats[]>;
}
export default ProductReviewService;
