export type DocItemKind = "function" | "struct" | "object" | "atomic object" | "enum" | "newtype" | "union" | "trait" | "module" | "constant" | "type-alias" | "type-function";
export interface DocParam {
    name: string;
    type: string;
    isComptime: boolean;
    defaultValue?: string;
    doc?: string;
}
export interface DocField {
    name: string;
    type: string;
    doc?: string;
    defaultValue?: string;
}
export interface DocVariant {
    name: string;
    fields?: DocField[];
    doc?: string;
    discriminant?: string;
}
export interface DocAssociatedType {
    name: string;
    doc?: string;
    constraint?: string;
}
export interface DocImplAssocType {
    name: string;
    type: string;
    doc?: string;
}
export interface DocImpl {
    signature: string;
    traitName?: string;
    methodNames: string[];
    associatedTypes?: DocImplAssocType[];
}
export interface DocFunction {
    name: string;
    doc?: string;
    signature: string;
    parameters: DocParam[];
    returnType: string;
    typeParams?: DocParam[];
    effects?: DocParam[];
    isMethod: boolean;
    selfType?: string;
    returns?: string;
    errors?: string;
    deprecated?: string;
    examples?: string;
}
export interface DocType {
    name: string;
    doc?: string;
    kind: DocItemKind;
    signature: string;
    typeParams?: DocParam[];
    fields?: DocField[];
    variants?: DocVariant[];
    methods: DocFunction[];
    traitImpls: string[];
    impls?: DocImpl[];
    deprecated?: string;
    examples?: string;
}
export interface DocTrait {
    name: string;
    doc?: string;
    kind: "trait" | "module" | "trait-function" | "module-function";
    signature: string;
    typeParams?: DocParam[];
    associatedTypes?: DocAssociatedType[];
    methods: DocFunction[];
    implementors: string[];
    deprecated?: string;
    examples?: string;
}
export interface DocConstant {
    name: string;
    doc?: string;
    type: string;
    value?: string;
    deprecated?: string;
}
export interface DocModule {
    name: string;
    path: string;
    doc?: string;
    functions: DocFunction[];
    types: DocType[];
    traits: DocTrait[];
    constants: DocConstant[];
    submodules: DocModule[];
}
export interface DocModel {
    name: string;
    modules: DocModule[];
    version?: string;
}
