import { FunctionProperties, PickWith, PickWithOpt } from '../../../../shared/typescript-utils';
import { ActorModel } from '../../../models/actor/actor';
import { MAccount, MAccountDefault, MAccountId, MAccountIdActor } from '../account';
import { MServer, MServerHost, MServerHostBlocks, MServerRedundancyAllowed } from '../server';
import { MChannel, MChannelAccountActor, MChannelAccountDefault, MChannelId, MChannelIdActor } from '../video';
import { MActorImage, MActorImageFormattable } from './actor-image';
declare type Use<K extends keyof ActorModel, M> = PickWith<ActorModel, K, M>;
declare type UseOpt<K extends keyof ActorModel, M> = PickWithOpt<ActorModel, K, M>;
export declare type MActor = Omit<ActorModel, 'Account' | 'VideoChannel' | 'ActorFollowing' | 'ActorFollowers' | 'Server' | 'Banners'>;
export declare type MActorUrl = Pick<MActor, 'url'>;
export declare type MActorId = Pick<MActor, 'id'>;
export declare type MActorUsername = Pick<MActor, 'preferredUsername'>;
export declare type MActorFollowersUrl = Pick<MActor, 'followersUrl'>;
export declare type MActorAudience = MActorUrl & MActorFollowersUrl;
export declare type MActorWithInboxes = Pick<ActorModel, 'sharedInboxUrl' | 'inboxUrl' | 'getSharedInbox'>;
export declare type MActorSignature = MActorAccountChannelId;
export declare type MActorLight = Omit<MActor, 'privateKey' | 'privateKey'>;
export declare type MActorHost = Use<'Server', MServerHost>;
export declare type MActorRedundancyAllowedOpt = PickWithOpt<ActorModel, 'Server', MServerRedundancyAllowed>;
export declare type MActorDefaultLight = MActorLight & Use<'Server', MServerHost> & Use<'Avatars', MActorImage[]>;
export declare type MActorAccountId = MActor & Use<'Account', MAccountId>;
export declare type MActorAccountIdActor = MActor & Use<'Account', MAccountIdActor>;
export declare type MActorChannelId = MActor & Use<'VideoChannel', MChannelId>;
export declare type MActorChannelIdActor = MActor & Use<'VideoChannel', MChannelIdActor>;
export declare type MActorAccountChannelId = MActorAccountId & MActorChannelId;
export declare type MActorAccountChannelIdActor = MActorAccountIdActor & MActorChannelIdActor;
export declare type MActorAccount = MActor & Use<'Account', MAccount>;
export declare type MActorChannel = MActor & Use<'VideoChannel', MChannel>;
export declare type MActorDefaultAccountChannel = MActorDefault & MActorAccount & MActorChannel;
export declare type MActorServer = MActor & Use<'Server', MServer>;
export declare type MActorImages = MActor & Use<'Avatars', MActorImage[]> & UseOpt<'Banners', MActorImage[]>;
export declare type MActorDefault = MActor & Use<'Server', MServer> & Use<'Avatars', MActorImage[]>;
export declare type MActorDefaultChannelId = MActorDefault & Use<'VideoChannel', MChannelId>;
export declare type MActorDefaultBanner = MActor & Use<'Server', MServer> & Use<'Avatars', MActorImage[]> & Use<'Banners', MActorImage[]>;
export declare type MActorChannelAccountActor = MActor & Use<'VideoChannel', MChannelAccountActor>;
export declare type MActorFull = MActor & Use<'Server', MServer> & Use<'Avatars', MActorImage[]> & Use<'Banners', MActorImage[]> & Use<'Account', MAccount> & Use<'VideoChannel', MChannelAccountActor>;
export declare type MActorFullActor = MActor & Use<'Server', MServer> & Use<'Avatars', MActorImage[]> & Use<'Banners', MActorImage[]> & Use<'Account', MAccountDefault> & Use<'VideoChannel', MChannelAccountDefault>;
export declare type MActorSummary = FunctionProperties<MActor> & Pick<MActor, 'id' | 'preferredUsername' | 'url' | 'serverId'> & Use<'Server', MServerHost> & Use<'Avatars', MActorImage[]>;
export declare type MActorSummaryBlocks = MActorSummary & Use<'Server', MServerHostBlocks>;
export declare type MActorAPI = Omit<MActorDefault, 'publicKey' | 'privateKey' | 'inboxUrl' | 'outboxUrl' | 'sharedInboxUrl' | 'followersUrl' | 'followingUrl' | 'url' | 'createdAt' | 'updatedAt'>;
export declare type MActorSummaryFormattable = FunctionProperties<MActor> & Pick<MActor, 'url' | 'preferredUsername'> & Use<'Server', MServerHost> & Use<'Avatars', MActorImageFormattable[]>;
export declare type MActorFormattable = MActorSummaryFormattable & Pick<MActor, 'id' | 'followingCount' | 'followersCount' | 'createdAt' | 'updatedAt' | 'remoteCreatedAt'> & Use<'Server', MServerHost & Partial<Pick<MServer, 'redundancyAllowed'>>> & UseOpt<'Banners', MActorImageFormattable[]> & UseOpt<'Avatars', MActorImageFormattable[]>;
declare type MActorAPBase = MActor & Use<'Avatars', MActorImage[]>;
export declare type MActorAPAccount = MActorAPBase;
export declare type MActorAPChannel = MActorAPBase & Use<'Banners', MActorImage[]>;
export {};
//# sourceMappingURL=actor.d.ts.map