import type { Context } from 'aws-lambda';
export declare function handler(event: InventoryCanaryEvent, context: Context): Promise<InventoryCanaryEvent>;
interface IndexedPackageStatus {
    metadataPresent?: boolean;
    assemblyPresent?: boolean;
    uninstallable?: boolean;
    submodules?: Set<string>;
    tarballPresent?: boolean;
    unknownObjects?: string[];
}
export declare const enum Grain {
    PACKAGE_MAJOR_VERSIONS = "package major versions",
    PACKAGE_VERSION_SUBMODULES = "package version submodules",
    PACKAGE_VERSIONS = "package versions",
    PACKAGES = "packages"
}
type PerLanguageData = Map<Grain, Map<string, DocumentationStatus>>;
export declare const enum DocumentationStatus {
    /**
     * This package is missing any kind of documentation or marker file.
     */
    MISSING = "Missing",
    /**
     * This package does not support the given language.
     */
    UNSUPPORTED = "Unsupported",
    /**
     * This package has a corrupted JSII assembly so we can't generate
     * documentation for it.
     */
    CORRUPT_ASSEMBLY = "CorruptAssembly",
    /**
     * This package supports the given language and has documentation for it.
     */
    SUPPORTED = "Supported"
}
/**
 * Expected input event structure as passed by the state machine.
 */
export interface InventoryCanaryEvent {
    readonly continuationObjectKey?: string;
}
/**
 * Intermediate state stored between invocations of the inventory canary.
 */
export interface InventoryCanaryState {
    readonly continuationToken: string;
    readonly indexedPackages: Map<string, IndexedPackageStatus>;
    readonly packageNames: Set<string>;
    readonly packageMajorVersions: Set<string>;
    readonly perLanguage: Map<string, PerLanguageData>;
}
type Serialized<T> = string & {
    _serialized: T;
};
export declare function serialize<T>(value: T): Serialized<T>;
export declare function deserialize<T>(value: Serialized<T>): T;
export {};
