export interface Activity {
	actor: string;
	type: string;
	id: string;
}

export interface Object {
	type: string;
	id: string;
}

export interface ArticleObject extends Object {
	to: string[];
	cc: string[];
}

export interface CreateActivity extends Activity {
	to: string[];
	cc: string[];
	object: Object;
}

export interface FollowActivity extends Activity {
	object: string;
}

export interface AcceptActivity extends Activity {
	object: FollowActivity;
}

export interface UndoActivity extends Activity {
	object: Activity;
}

export interface NoteObject extends Object {
	to: string[];
	cc: string[];
	directMessage?: boolean;
	attributedTo: string;
	content: string;
	published: string;
	inReplyTo: string;
	conversation: string;
}

export interface DeleteActivity extends Activity {
	object: string;
}

export interface ActorObject {
	id: string;
	url: string;
	name: string;
	preferredUsername: string;
	inbox: string;
	endpoints?: {
		sharedInbox?: string;
	}
	publicKey?: {
		publicKeyPem?: string;
	};
	icon: string | object | (string | object)[];
}
