SpaceNinjaServer/src/types/purchaseTypes.ts
Sainan ebb28d56d5 feat: acquisition of resource extractor drones (#998)
Related to #793

Reviewed-on: OpenWF/SpaceNinjaServer#998
Co-authored-by: Sainan <sainan@calamity.inc>
Co-committed-by: Sainan <sainan@calamity.inc>
2025-02-24 05:28:43 -08:00

88 lines
2.2 KiB
TypeScript

import { IEquipmentClient } from "./inventoryTypes/commonInventoryTypes";
import { IDroneClient, IInfestedFoundryClient, TEquipmentKey } from "./inventoryTypes/inventoryTypes";
export interface IPurchaseRequest {
PurchaseParams: IPurchaseParams;
buildLabel: string;
}
export interface IPurchaseParams {
Source: number;
SourceId?: string; // for Source 7 & 18
StoreItem: string;
StorePage: string;
SearchTerm: string;
CurrentLocation: string;
Quantity: number;
UsePremium: boolean;
ExpectedPrice: number;
SyndicateTag?: string; // for Source 2
UseFreeFavor?: boolean; // for Source 2
ExtraPurchaseInfoJson?: string; // for Source 7
IsWeekly?: boolean; // for Source 7
}
export interface ICurrencyChanges {
RegularCredits?: number;
PremiumCredits?: number;
PremiumCreditsFree?: number;
}
export type IInventoryChanges = {
[_ in SlotNames]?: IBinChanges;
} & {
[_ in TEquipmentKey]?: IEquipmentClient[];
} & ICurrencyChanges & {
InfestedFoundry?: IInfestedFoundryClient;
Drones?: IDroneClient[];
} & Record<string, IBinChanges | number | object[] | IInfestedFoundryClient>;
export interface IAffiliationMods {
Tag: string;
Standing?: number;
Title?: number;
}
export interface IPurchaseResponse {
InventoryChanges: IInventoryChanges;
Standing?: IAffiliationMods[];
FreeFavorsUsed?: IAffiliationMods[];
BoosterPackItems?: string;
}
export type IBinChanges = {
count: number;
platinum: number;
Slots: number;
Extra?: number;
};
export type SlotPurchaseName =
| "SuitSlotItem"
| "TwoSentinelSlotItem"
| "TwoWeaponSlotItem"
| "SpaceSuitSlotItem"
| "TwoSpaceWeaponSlotItem"
| "MechSlotItem"
| "TwoOperatorWeaponSlotItem"
| "RandomModSlotItem"
| "TwoCrewShipSalvageSlotItem"
| "CrewMemberSlotItem";
export type SlotNames =
| "SuitBin"
| "WeaponBin"
| "MechBin"
| "PveBonusLoadoutBin"
| "SentinelBin"
| "SpaceSuitBin"
| "SpaceWeaponBin"
| "OperatorAmpBin"
| "RandomModBin"
| "CrewShipSalvageBin"
| "CrewMemberBin";
export type SlotPurchase = {
[P in SlotPurchaseName]: { name: SlotNames; slotsPerPurchase: number };
};