import type { SkillQuery } from '@learncard/types';
import { BoostRecipientInfo, LCNProfileQuery } from '@learncard/types';
import { BoostInstance, CredentialInstance, SkillFrameworkInstance, SkillInstance } from '../../.././models/index';
import { FlatSkillFrameworkType } from '../../../types/skill-framework';
import { FlatSkillType } from '../../../types/skill';
import { ProfileType } from '../../../types/profile';
import { BoostType, BoostWithClaimPermissionsType, BoostOwner } from '../../../types/boost';
export declare const getBoostOwner: (boost: BoostInstance) => Promise<BoostOwner | undefined>;
export declare const getFrameworkUsedByBoost: (boost: BoostInstance) => Promise<SkillFrameworkInstance | undefined>;
export declare const getFrameworksForBoost: (boost: BoostInstance) => Promise<SkillFrameworkInstance[]>;
export declare const getFrameworksForBoostPaged: (boost: BoostInstance, searchQuery: Record<string, any> | null, limit: number, cursor?: string | null) => Promise<{
    records: FlatSkillFrameworkType[];
    hasMore: boolean;
    cursor: string | null;
}>;
export declare const getAlignedSkillsForBoost: (boost: BoostInstance) => Promise<SkillInstance[]>;
export declare const getBoostSkillsWithProficiency: (boost: BoostInstance) => Promise<Array<FlatSkillType & {
    proficiencyLevel?: number;
}>>;
export declare const getFrameworkSkillsAvailableForBoost: (boost: BoostInstance) => Promise<{
    framework: FlatSkillFrameworkType;
    skills: FlatSkillType[];
}[]>;
export declare const searchSkillsAvailableForBoost: (boost: BoostInstance, searchQuery: SkillQuery, limit: number, cursorId?: string | null) => Promise<{
    records: FlatSkillType[];
    hasMore: boolean;
    cursor: string | null;
}>;
export declare const getCredentialInstancesOfBoost: (boost: BoostInstance) => Promise<CredentialInstance[] | undefined>;
export declare const getBoostByUriWithDefaultClaimPermissions: (uri: string) => Promise<BoostWithClaimPermissionsType | null>;
export declare const getBoostRecipients: (boost: BoostInstance, { limit, cursor, includeUnacceptedBoosts, query: matchQuery, domain, from, }: {
    limit: number;
    cursor?: string;
    includeUnacceptedBoosts?: boolean;
    query?: LCNProfileQuery;
    domain: string;
    from?: string;
}) => Promise<Array<BoostRecipientInfo & {
    sent: string;
}>>;
export declare const getBoostRecipientsSkipLimit: (boost: BoostInstance, { limit, skip, includeUnacceptedBoosts, domain, }: {
    limit: number;
    skip?: number;
    includeUnacceptedBoosts?: boolean;
    domain: string;
}) => Promise<BoostRecipientInfo[]>;
export declare const countBoostRecipients: (boost: BoostInstance, { includeUnacceptedBoosts }: {
    includeUnacceptedBoosts?: boolean;
}) => Promise<number>;
export declare const getBoostAdmins: (boost: BoostInstance, { limit, cursor, blacklist }: {
    limit: number;
    cursor?: string;
    blacklist?: string[];
}) => Promise<ProfileType[]>;
export declare const isProfileBoostAdmin: (profile: ProfileType, boost: BoostInstance) => Promise<boolean>;
export declare const doesProfileHaveRoleForBoost: (profile: ProfileType, boost: BoostInstance) => Promise<boolean>;
export declare const canProfileViewBoost: (profile: ProfileType, boost: BoostInstance | BoostType) => Promise<boolean>;
export declare const canProfileCreateChildBoost: (profile: ProfileType, parentBoost: BoostInstance, childBoost: Omit<BoostType, "boost" | "id">) => Promise<boolean>;
export declare const canProfileEditBoost: (profile: ProfileType, boost: BoostInstance) => Promise<boolean>;
export declare const canProfileIssueBoost: (profile: ProfileType, boost: BoostInstance) => Promise<boolean>;
export declare const getBoostPermissions: (boost: BoostInstance, profile: ProfileType, ensure?: boolean) => Promise<{
    role: string;
    canView: boolean;
    canEdit: boolean;
    canIssue: boolean;
    canRevoke: boolean;
    canManagePermissions: boolean;
    canIssueChildren: string;
    canCreateChildren: string;
    canEditChildren: string;
    canRevokeChildren: string;
    canManageChildrenPermissions: string;
    canViewAnalytics: boolean;
    canManageChildrenProfiles?: boolean | undefined;
}>;
export declare const canManageBoostPermissions: (boost: BoostInstance, profile: ProfileType) => Promise<boolean>;
export declare const isBoostParent: (parentBoost: BoostInstance, childBoost: BoostInstance, { numberOfGenerations, direction, }?: {
    numberOfGenerations?: number;
    direction?: "out" | "in" | "none";
}) => Promise<boolean>;
export declare const getConnectedBoostRecipients: (requestingProfile: ProfileType, boost: BoostInstance, { limit, cursor, includeUnacceptedBoosts, query: matchQuery, domain, }: {
    limit: number;
    cursor?: string;
    includeUnacceptedBoosts?: boolean;
    query?: LCNProfileQuery;
    domain: string;
}) => Promise<Array<BoostRecipientInfo & {
    sent: string;
}>>;
export declare const countConnectedBoostRecipients: (requestingProfile: ProfileType, boost: BoostInstance, { includeUnacceptedBoosts, query: matchQuery, }: {
    includeUnacceptedBoosts?: boolean;
    query?: LCNProfileQuery;
}) => Promise<number>;
export declare const getBoostRecipientsWithChildren: (boost: BoostInstance, { limit, cursor, includeUnacceptedBoosts, numberOfGenerations, boostQuery, profileQuery, domain, }: {
    limit: number;
    cursor?: string;
    includeUnacceptedBoosts?: boolean;
    numberOfGenerations?: number;
    boostQuery?: any;
    profileQuery?: LCNProfileQuery;
    domain: string;
}) => Promise<Array<Omit<BoostRecipientInfo, "uri"> & {
    boostUris: string[];
}>>;
export declare const countBoostRecipientsWithChildren: (boost: BoostInstance, { includeUnacceptedBoosts, numberOfGenerations, boostQuery, profileQuery, }: {
    includeUnacceptedBoosts?: boolean;
    numberOfGenerations?: number;
    boostQuery?: any;
    profileQuery?: LCNProfileQuery;
}) => Promise<number>;
//# sourceMappingURL=read.d.ts.map