import { z } from 'zod';
import { Datasource } from '../datasource';
import type { GetReleasesConfig, Release, ReleaseResult } from '../types';
declare const GemsInfo: z.ZodEffects<z.ZodObject<{
    name: z.ZodEffects<z.ZodString, string, string>;
    version: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
    changelog_uri: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
    homepage_uri: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
    source_code_uri: z.ZodCatch<z.ZodOptional<z.ZodNullable<z.ZodString>>>;
}, "strip", z.ZodTypeAny, {
    name: string;
    version?: string | null | undefined;
    changelog_uri?: string | null | undefined;
    homepage_uri?: string | null | undefined;
    source_code_uri?: string | null | undefined;
}, {
    name: string;
    version?: unknown;
    changelog_uri?: unknown;
    homepage_uri?: unknown;
    source_code_uri?: unknown;
}>, {
    packageName: string;
    version: string | null | undefined;
    changelogUrl: string | null | undefined;
    homepage: string | null | undefined;
    sourceUrl: string | null | undefined;
}, {
    name: string;
    version?: unknown;
    changelog_uri?: unknown;
    homepage_uri?: unknown;
    source_code_uri?: unknown;
}>;
type GemsInfo = z.infer<typeof GemsInfo>;
declare const GemVersions: z.ZodEffects<z.ZodArray<z.ZodAny, "many">, Release[], any[]>;
type GemVersions = z.infer<typeof GemVersions>;
export declare class InternalRubyGemsDatasource extends Datasource {
    readonly id: string;
    constructor(id: string);
    getReleases(config: GetReleasesConfig): Promise<ReleaseResult | null>;
    getDependencyFallback(registryUrl: string, packageName: string): Promise<ReleaseResult | null>;
    fetchGemsInfo(registryUrl: string, packageName: string): Promise<GemsInfo | null>;
    fetchGemVersions(registryUrl: string, packageName: string): Promise<GemVersions | null>;
    getDependency(registryUrl: string, packageName: string): Promise<ReleaseResult | null>;
}
export {};
