import type { components } from './schema'; import type { ViewResponse as BuildingViewResponse } from './building'; /** * Alliance metadata. Present on `embassy/view` as `alliance_status` (only while * the empire is in an alliance) and, alongside `status`, as the whole * `get_alliance_status` response. */ export interface AllianceStatus { id?: number; name?: string; members?: Array<{ empire_id?: number; name?: string }>; leader_id?: number; forum_uri?: string; description?: string; announcements?: string; date_created?: string; } export interface ViewParams { building_id: number; } export interface ViewResponse extends BuildingViewResponse { alliance_status?: AllianceStatus; } export interface CreateAllianceParams { building_id: number; name: string; } export interface CreateAllianceResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface GetAllianceStatusParams { building_id: number; } export interface GetAllianceStatusResponse extends AllianceStatus { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface DissolveAllianceParams { building_id: number; } export interface DissolveAllianceResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface UpdateAllianceParams { building_id: number; params: { forum_uri?: string; description?: string; announcements?: string }; } export interface UpdateAllianceResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface SendInviteParams { building_id: number; message?: string; invitee_id: number; } export interface SendInviteResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface WithdrawInviteParams { building_id: number; message?: string; invite_id: number; } export interface WithdrawInviteResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface GetPendingInvitesParams { building_id: number; } export interface GetPendingInvitesResponse { invites: Array<{ id?: number; name?: string; empire_id?: number }>; status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface AcceptInviteParams { building_id: number; message?: string; invite_id: number; } export interface AcceptInviteResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface RejectInviteParams { building_id: number; message?: string; invite_id: number; } export interface RejectInviteResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface GetMyInvitesParams { building_id: number; } export interface GetMyInvitesResponse { invites: Array<{ id?: number; name?: string; alliance_id?: number }>; status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface LeaveAllianceParams { building_id: number; message?: string; } export interface LeaveAllianceResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface ExpelMemberParams { building_id: number; message?: string; empire_id: number; } export interface ExpelMemberResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface AssignAllianceLeaderParams { building_id: number; new_leader_id: number; } export interface AssignAllianceLeaderResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface ViewStashParams { building_id: number; } export interface ViewStashResponse { /** The alliance stash, keyed by resource name. `{}` when nothing is stashed. */ stash: Record; /** * The calling planet's own storable resources (water, energy, every food * type, every ore type - no waste), keyed by resource name. */ stored: Record; max_exchange_size: number; exchanges_remaining_today: number; status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface DonateToStashParams { building_id: number; donation: Record; } export interface DonateToStashResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface ExchangeWithStashParams { building_id: number; donation: Record; request: Record; } export interface ExchangeWithStashResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface ViewPropositionsParams { building_id: number; } export interface ViewPropositionsResponse { propositions: Array<{ id?: number; name?: string; description?: string; votes_needed?: number; votes_yes?: number; votes_no?: number; status?: string; date_ends?: string; proposed_by?: { id?: number; name?: string }; my_vote?: 1 | 0; }>; status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; } export interface CastVoteParams { building_id: number; proposition_id: number; vote: 1 | 0; } export interface CastVoteResponse { status: { server: components['schemas']['server_status']; empire?: components['schemas']['empire_status']; body?: components['schemas']['body_status']; }; }