export interface AiImageResult {
    images: Image[];
    usage: Usage;
    usageTracking: UsageTracking;
}
export interface Image {
    url: string;
}
export interface Usage {
    input_tokens: number;
    input_text_tokens: number;
    input_image_tokens: number;
    output_tokens: number;
    total_tokens: number;
}
export interface UsageTracking {
    organizationId: string;
    userId: string;
    provider: string;
    model: string;
    tokensUsed: number;
    costUsd: number;
    requestId: string;
    usageLimits: UsageLimits;
}
export interface UsageLimitInfo {
    used: number;
    remaining: number;
    limit: number;
}
export interface FullUsageLimits {
    daily: {
        organization: UsageLimitInfo;
        user: UsageLimitInfo;
    };
    weekly: {
        organization: UsageLimitInfo;
        user: UsageLimitInfo;
    };
    monthly: {
        organization: UsageLimitInfo;
        user: UsageLimitInfo;
    };
    ipLimit?: {
        used: number;
        limit: number;
        remaining: number;
        allowed: boolean;
        resetTime: Date;
        leadKeyValid?: boolean;
    };
    violations?: LimitViolation[];
    hasViolations?: boolean;
}
export interface LimitViolation {
    period: 'daily' | 'weekly' | 'monthly';
    entity: 'organization' | 'user' | 'anonymousIp';
    used: number;
    limit: number;
    exceeded: number;
}
export interface SimplifiedUsageLimits {
    budget: {
        total: number;
        used: number;
        remaining: number;
    };
    resetTime?: Date;
    hasViolations?: boolean;
    isIpLimitOnly?: boolean;
    isOrganizationLimitReached?: boolean;
    leadKeyActive?: boolean;
}
export type UsageLimits = FullUsageLimits | SimplifiedUsageLimits;
export interface PromptPublicView {
    image: string;
    name: string;
    key: string;
    description?: string;
}
//# sourceMappingURL=AiImageResult.d.ts.map