interface DisambiguatedOrg {
    id: string;
    source: string;
}
interface Org {
    name: string;
    address: {
        city: string | null;
        region: string | null;
        country?: string;
    };
    disambiguatedOrg: DisambiguatedOrg | null;
}
interface SourceOrcid {
    uri: string;
    path: string;
    host: string;
}
interface Source {
    orcid?: SourceOrcid;
    clientId: string | null;
    name: string;
}
/**
 * Affiliation group object, which can be either employment or education
 */
export interface AffiliationGroup {
    putCode: number;
    departmentName?: string;
    roleTitle?: string;
    startDate?: Date;
    endDate?: Date;
    path: string;
    visibility: string;
    org?: Org;
    url?: string;
    source: Source;
    createdDate: Date;
    modifiedDate: Date;
}
/**
 * Employment summary object
 */
export interface Employment extends AffiliationGroup {
}
/**
 * Education summary object
 */
export interface Education extends AffiliationGroup {
}
export type Result<T, E = Error> = [T, undefined] | [undefined, E];
export declare function tryCatch<T>(promise: Promise<T>): Promise<Result<T>>;
export declare function parseEmploymentResp(obj: unknown): Result<Employment[]>;
export declare function parseEducationResp(obj: unknown): Result<Education[]>;
export {};
//# sourceMappingURL=types.d.ts.map