quria
Version:
A user-friendly Destiny 2 API Wrapper written with TypeScript and approved by -Axis Minds- Oryx.
1,529 lines • 163 kB
TypeScript
import { OAuthApplicationType, ApplicationStatus, DeveloperRole, BungieMembershipType, IgnoreStatus, BungieCredentialType, ContentPropertyDataTypeEnum, ForumMediaType, ForumPostPopularity, GroupAllianceStatus, GroupType, ChatSecuritySetting, GroupHomepage, MembershipOption, GroupPostPublicity, Capabilities, HostGuidedGamesPermissionLevel, RuntimeGroupMemberType, DestinyProgressionRewardItemState, ItemState, DestinyStatAggregationType, DestinyStatCategory, DestinyProgressionScope, DestinyProgressionStepDisplayEffect, SpecialItemType, DestinyItemType, DestinyItemSubType, DestinyClass, DestinyBreakerType, DamageType, DestinySocketVisibility, SocketTypeActionType, DestinySocketCategoryStyle, TierType, BucketScope, BucketCategory, ItemLocation, EquippingItemBlockAttributes, DestinyAmmunitionType, DestinyGender, DestinyVendorProgressionType, VendorDisplayCategorySortOrder, VendorInteractionType, DestinyVendorInteractionRewardSelection, DestinyVendorReplyType, DestinyItemSortType, DestinyVendorItemRefundPolicy, DestinyGatingScope, ActivityGraphNodeHighlightType, DestinyActivityModeType, DestinyUnlockValueUIStyle, DestinyObjectiveUiStyle, DestinyObjectiveGrantStyle, DestinyActivityNavPointType, DestinyActivityModeCategory, DestinyActivityDifficultyTierType, DestinyActivitySkullDynamicUse, DestinyActivityModifierDisplayCategory, DestinyActivityModifierConnotation, DestinyActivityDifficultyId, DestinyGraphNodeState, DestinyRewardSourceCategory, DestinyPresentationNodeType, DestinyScope, DestinyPresentationDisplayStyle, DestinyPresentationScreenStyle, DestinyRecordValueStyle, DestinyRecordToastStyle, PlugUiStyles, PlugAvailabilityMode, DestinyEnergyType, SocketPlugSources, DestinyTalentNodeStepWeaponPerformances, DestinyTalentNodeStepImpactEffects, DestinyTalentNodeStepGuardianAttributes, DestinyTalentNodeStepLightAbilities, DestinyTalentNodeStepDamageTypes, ItemPerkVisibility, DestinyProgressionRewardItemAcquisitionBehavior, GroupPotentialMemberStatus, ForumRecruitmentIntensityLabel, ForumRecruitmentToneLabel, GroupDateRange, GroupSortBy, IgnoreLength, GroupApplicationResolveState, PlatformErrorCodes, ItemBindStatus, TransferStatuses, ComponentPrivacySetting, DestinyGameVersions, DestinyPresentationNodeState, DestinyRecordState, DestinyCollectibleState, DestinyPartyMemberStates, DestinyGamePrivacySetting, DestinyJoinClosedReasons, DestinyRace, DestinyMilestoneDisplayPreference, DestinyMilestoneType, DestinyActivityDifficultyTier, DestinyActivityRewardDisplayMode, EquipFailureReason, DestinyTalentNodeState, VendorItemStatus, DestinyVendorItemState, DestinySocketArrayType, DestinyStatsGroupType, PeriodType, DestinyStatsCategoryType, UnitType, AwaType, AwaUserSelection, AwaResponseReason, TrendingEntryType, FireteamPlatform, FireteamPlatformInviteResult, PresenceStatus, PresenceOnlineStateFlags, FriendRelationshipState, PlatformFriendType, DestinyActivityTreeType, DestinyActivityTreeChildSortMode, FireteamFinderCodeOptionType, FireteamFinderOptionAvailability, FireteamFinderOptionVisibility, FireteamFinderOptionControlType, FireteamFinderOptionSearchFilterType, FireteamFinderOptionDisplayFormat, FireteamFinderOptionValueProviderType, FireteamFinderOptionValueFlags, FireteamFinderLabelFieldType, OptInFlags, GlobalAlertLevel, GlobalAlertType } from "./enum";
export interface ApiUsage {
apiCalls: Series[];
throttledRequests: Series[];
}
export interface Series {
datapoints: Datapoint[];
target: string;
}
export interface Datapoint {
time: string;
count: number | null;
}
export interface Application {
applicationType: OAuthApplicationType;
applicationId: number;
name: string;
redirectUrl: string;
link: string;
scope: string;
origin: string;
status: ApplicationStatus;
creationDate: string;
statusChanged: string;
firstPublished: string;
team: ApplicationDeveloper[];
overrideAuthorizeViewName: string;
}
export interface ApplicationDeveloper {
role: DeveloperRole;
apiEulaVersion: number;
user: UserInfoCard;
}
export interface UserMembership {
membershipType: BungieMembershipType;
membershipId: string;
displayName: string;
bungieGlobalDisplayName: string;
bungieGlobalDisplayNameCode: number | null;
}
export interface CrossSaveUserMembership {
crossSaveOverride: BungieMembershipType;
applicableMembershipTypes: BungieMembershipType[];
isPublic: boolean;
membershipType: BungieMembershipType;
membershipId: string;
displayName: string;
bungieGlobalDisplayName: string;
bungieGlobalDisplayNameCode: number | null;
}
export interface UserInfoCard {
supplementalDisplayName: string;
iconPath: string;
crossSaveOverride: BungieMembershipType;
applicableMembershipTypes: BungieMembershipType[];
isPublic: boolean;
membershipType: BungieMembershipType;
membershipId: string;
displayName: string;
bungieGlobalDisplayName: string;
bungieGlobalDisplayNameCode: number | null;
}
export interface GeneralUser {
membershipId: string;
uniqueName: string;
normalizedName: string;
displayName: string;
profilePicture: number;
profileTheme: number;
userTitle: number;
successMessageFlags: string;
isDeleted: boolean;
about: string;
firstAccess: string | null;
lastUpdate: string | null;
legacyPortalUID: string | null;
context: UserToUserContext;
psnDisplayName: string;
xboxDisplayName: string;
fbDisplayName: string;
showActivity: boolean | null;
locale: string;
localeInheritDefault: boolean;
lastBanReportId: string | null;
showGroupMessaging: boolean;
profilePicturePath: string;
profilePictureWidePath: string;
profileThemeName: string;
userTitleDisplay: string;
statusText: string;
statusDate: string;
profileBanExpire: string | null;
blizzardDisplayName: string;
steamDisplayName: string;
stadiaDisplayName: string;
twitchDisplayName: string;
cachedBungieGlobalDisplayName: string;
cachedBungieGlobalDisplayNameCode: number | null;
egsDisplayName: string;
}
export interface UserToUserContext {
isFollowing: boolean;
ignoreStatus: IgnoreResponse;
globalIgnoreEndDate: string | null;
}
export interface GetCredentialTypesForAccountResponse {
credentialType: BungieCredentialType;
credentialDisplayName: string;
isPublic: boolean;
credentialAsString: string;
}
export interface UserMembershipData {
destinyMemberships: GroupUserInfoCard[];
primaryMembershipId: string | null;
marathonMembershipId: string | null;
bungieNetUser: GeneralUser;
}
export interface HardLinkedUserMembership {
membershipType: BungieMembershipType;
membershipId: string;
CrossSaveOverriddenType: BungieMembershipType;
CrossSaveOverriddenMembershipId: string | null;
}
export interface UserSearchResponse {
searchResults: UserSearchResponseDetail[];
page: number;
hasMore: boolean;
}
export interface UserSearchResponseDetail {
bungieGlobalDisplayName: string;
bungieGlobalDisplayNameCode: number | null;
bungieNetMembershipId: string | null;
destinyMemberships: UserInfoCard[];
}
export interface UserSearchPrefixRequest {
displayNamePrefix: string;
}
export interface ExactSearchRequest {
displayName: string;
displayNameCode: number;
}
export interface EmailSettings {
optInDefinitions: Record<string, EmailOptInDefinition>;
subscriptionDefinitions: Record<string, EmailSubscriptionDefinition>;
views: Record<string, EmailViewDefinition>;
}
export interface EmailOptInDefinition {
name: string;
value: OptInFlags;
setByDefault: boolean;
dependentSubscriptions: EmailSubscriptionDefinition[];
}
export interface EmailSubscriptionDefinition {
name: string;
localization: Record<string, EMailSettingSubscriptionLocalization>;
value: string;
}
export interface EMailSettingLocalization {
title: string;
description: string;
}
export interface EMailSettingSubscriptionLocalization {
unknownUserDescription: string;
registeredUserDescription: string;
unregisteredUserDescription: string;
unknownUserActionText: string;
knownUserActionText: string;
title: string;
description: string;
}
export interface EmailViewDefinition {
name: string;
viewSettings: EmailViewDefinitionSetting[];
}
export interface EmailViewDefinitionSetting {
name: string;
localization: Record<string, EMailSettingLocalization>;
setByDefault: boolean;
optInAggregateValue: OptInFlags;
subscriptions: EmailSubscriptionDefinition[];
}
export interface IgnoreResponse {
isIgnored: boolean;
ignoreFlags: IgnoreStatus;
}
export interface UserTheme {
userThemeId: number;
userThemeName: string;
userThemeDescription: string;
}
export interface GroupTheme {
name: string;
folder: string;
description: string;
}
export interface ClanBannerSource {
}
export interface ClanBannerDecal {
identifier: string;
foregroundPath: string;
backgroundPath: string;
}
export interface GroupUserInfoCard {
LastSeenDisplayName: string;
LastSeenDisplayNameType: BungieMembershipType;
supplementalDisplayName: string;
iconPath: string;
crossSaveOverride: BungieMembershipType;
applicableMembershipTypes: BungieMembershipType[];
isPublic: boolean;
membershipType: BungieMembershipType;
membershipId: string;
displayName: string;
bungieGlobalDisplayName: string;
bungieGlobalDisplayNameCode: number | null;
}
export interface GroupResponse {
detail: GroupV2;
founder: GroupMember;
alliedIds: string[];
parentGroup: GroupV2;
allianceStatus: GroupAllianceStatus;
groupJoinInviteCount: number;
currentUserMembershipsInactiveForDestiny: boolean;
currentUserMemberMap: Record<string, GroupMember>;
currentUserPotentialMemberMap: Record<string, GroupPotentialMember>;
}
export interface GroupV2 {
groupId: string;
name: string;
groupType: GroupType;
membershipIdCreated: string;
creationDate: string;
modificationDate: string;
about: string;
tags: string[];
memberCount: number;
isPublic: boolean;
isPublicTopicAdminOnly: boolean;
motto: string;
allowChat: boolean;
isDefaultPostPublic: boolean;
chatSecurity: ChatSecuritySetting;
locale: string;
avatarImageIndex: number;
homepage: GroupHomepage;
membershipOption: MembershipOption;
defaultPublicity: GroupPostPublicity;
theme: string;
bannerPath: string;
avatarPath: string;
conversationId: string;
enableInvitationMessagingForAdmins: boolean;
banExpireDate: string | null;
features: GroupFeatures;
remoteGroupId: string | null;
clanInfo: GroupV2ClanInfoAndInvestment;
}
export interface GroupFeatures {
maximumMembers: number;
maximumMembershipsOfGroupType: number;
capabilities: Capabilities;
membershipTypes: BungieMembershipType[];
invitePermissionOverride: boolean;
updateCulturePermissionOverride: boolean;
hostGuidedGamePermissionOverride: HostGuidedGamesPermissionLevel;
updateBannerPermissionOverride: boolean;
joinLevel: RuntimeGroupMemberType;
}
export interface GroupV2ClanInfo {
clanCallsign: string;
clanBannerData: ClanBanner;
}
export interface ClanBanner {
decalId: number;
decalColorId: number;
decalBackgroundColorId: number;
gonfalonId: number;
gonfalonColorId: number;
gonfalonDetailId: number;
gonfalonDetailColorId: number;
}
export interface GroupV2ClanInfoAndInvestment {
d2ClanProgressions: Record<string, DestinyProgression>;
clanCallsign: string;
clanBannerData: ClanBanner;
}
export interface GroupUserBase {
groupId: string;
destinyUserInfo: GroupUserInfoCard;
bungieNetUserInfo: UserInfoCard;
joinDate: string;
}
export interface GroupMember {
memberType: RuntimeGroupMemberType;
isOnline: boolean;
lastOnlineStatusChange: string;
groupId: string;
destinyUserInfo: GroupUserInfoCard;
bungieNetUserInfo: UserInfoCard;
joinDate: string;
}
export interface GroupPotentialMember {
potentialStatus: GroupPotentialMemberStatus;
groupId: string;
destinyUserInfo: GroupUserInfoCard;
bungieNetUserInfo: UserInfoCard;
joinDate: string;
}
export interface GroupV2Card {
groupId: string;
name: string;
groupType: GroupType;
creationDate: string;
about: string;
motto: string;
memberCount: number;
locale: string;
membershipOption: MembershipOption;
capabilities: Capabilities;
remoteGroupId: string | null;
clanInfo: GroupV2ClanInfo;
avatarPath: string;
theme: string;
}
export interface GroupSearchResponse {
results: GroupV2Card[];
totalResults: number;
hasMore: boolean;
query: PagedQuery;
replacementContinuationToken: string;
useTotalResults: boolean;
}
export interface GroupQuery {
name: string;
groupType: GroupType;
creationDate: GroupDateRange;
sortBy: GroupSortBy;
groupMemberCountFilter: number | null;
localeFilter: string;
tagText: string;
itemsPerPage: number;
currentPage: number;
requestContinuationToken: string;
}
export interface GroupNameSearchRequest {
groupName: string;
groupType: GroupType;
}
export interface GroupOptionalConversation {
groupId: string;
conversationId: string;
chatEnabled: boolean;
chatName: string;
chatSecurity: ChatSecuritySetting;
}
export interface GroupEditAction {
name: string;
about: string;
motto: string;
theme: string;
avatarImageIndex: number | null;
tags: string;
isPublic: boolean | null;
membershipOption: number | null;
isPublicTopicAdminOnly: boolean | null;
allowChat: boolean | null;
chatSecurity: number | null;
callsign: string;
locale: string;
homepage: number | null;
enableInvitationMessagingForAdmins: boolean | null;
defaultPublicity: number | null;
}
export interface GroupOptionsEditAction {
InvitePermissionOverride: boolean | null;
UpdateCulturePermissionOverride: boolean | null;
HostGuidedGamePermissionOverride: number | null;
UpdateBannerPermissionOverride: boolean | null;
JoinLevel: number | null;
}
export interface GroupOptionalConversationAddRequest {
chatName: string;
chatSecurity: ChatSecuritySetting;
}
export interface GroupOptionalConversationEditRequest {
chatEnabled: boolean | null;
chatName: string;
chatSecurity: number | null;
}
export interface GroupMemberLeaveResult {
group: GroupV2;
groupDeleted: boolean;
}
export interface GroupBanRequest {
comment: string;
length: IgnoreLength;
}
export interface GroupBan {
groupId: string;
lastModifiedBy: UserInfoCard;
createdBy: UserInfoCard;
dateBanned: string;
dateExpires: string;
comment: string;
bungieNetUserInfo: UserInfoCard;
destinyUserInfo: GroupUserInfoCard;
}
export interface GroupEditHistory {
groupId: string;
name: string;
nameEditors: string | null;
about: string;
aboutEditors: string | null;
motto: string;
mottoEditors: string | null;
clanCallsign: string;
clanCallsignEditors: string | null;
editDate: string | null;
groupEditors: UserInfoCard[];
}
export interface GroupMemberApplication {
groupId: string;
creationDate: string;
resolveState: GroupApplicationResolveState;
resolveDate: string | null;
resolvedByMembershipId: string | null;
requestMessage: string;
resolveMessage: string;
destinyUserInfo: GroupUserInfoCard;
bungieNetUserInfo: UserInfoCard;
}
export interface GroupApplicationRequest {
message: string;
}
export interface GroupApplicationListRequest {
memberships: UserMembership[];
message: string;
}
export interface GroupMembershipBase {
group: GroupV2;
}
export interface GroupMembership {
member: GroupMember;
group: GroupV2;
}
export interface GroupMembershipSearchResponse {
results: GroupMembership[];
totalResults: number;
hasMore: boolean;
query: PagedQuery;
replacementContinuationToken: string;
useTotalResults: boolean;
}
export interface GetGroupsForMemberResponse {
areAllMembershipsInactive: Record<string, boolean>;
results: GroupMembership[];
totalResults: number;
hasMore: boolean;
query: PagedQuery;
replacementContinuationToken: string;
useTotalResults: boolean;
}
export interface GroupPotentialMembership {
member: GroupPotentialMember;
group: GroupV2;
}
export interface GroupPotentialMembershipSearchResponse {
results: GroupPotentialMembership[];
totalResults: number;
hasMore: boolean;
query: PagedQuery;
replacementContinuationToken: string;
useTotalResults: boolean;
}
export interface GroupApplicationResponse {
resolution: GroupApplicationResolveState;
}
export interface ContentTypeDescription {
cType: string;
name: string;
contentDescription: string;
previewImage: string;
priority: number;
reminder: string;
properties: ContentTypeProperty[];
tagMetadata: TagMetadataDefinition[];
tagMetadataItems: Record<string, TagMetadataItem>;
usageExamples: string[];
showInContentEditor: boolean;
typeOf: string;
bindIdentifierToProperty: string;
boundRegex: string;
forceIdentifierBinding: boolean;
allowComments: boolean;
autoEnglishPropertyFallback: boolean;
bulkUploadable: boolean;
previews: ContentPreview[];
suppressCmsPath: boolean;
propertySections: ContentTypePropertySection[];
}
export interface ContentTypeProperty {
name: string;
rootPropertyName: string;
readableName: string;
value: string;
propertyDescription: string;
localizable: boolean;
fallback: boolean;
enabled: boolean;
order: number;
visible: boolean;
isTitle: boolean;
required: boolean;
maxLength: number;
maxByteLength: number;
maxFileSize: number;
regexp: string;
validateAs: string;
rssAttribute: string;
visibleDependency: string;
visibleOn: string;
datatype: ContentPropertyDataTypeEnum;
attributes: Record<string, string>;
childProperties: ContentTypeProperty[];
contentTypeAllowed: string;
bindToProperty: string;
boundRegex: string;
representationSelection: Record<string, string>;
defaultValues: ContentTypeDefaultValue[];
isExternalAllowed: boolean;
propertySection: string;
weight: number;
entitytype: string;
isCombo: boolean;
suppressProperty: boolean;
legalContentTypes: string[];
representationValidationString: string;
minWidth: number;
maxWidth: number;
minHeight: number;
maxHeight: number;
isVideo: boolean;
isImage: boolean;
}
export interface ContentTypeDefaultValue {
whenClause: string;
whenValue: string;
defaultValue: string;
}
export interface TagMetadataDefinition {
description: string;
order: number;
items: TagMetadataItem[];
datatype: string;
name: string;
isRequired: boolean;
}
export interface TagMetadataItem {
description: string;
tagText: string;
groups: string[];
isDefault: boolean;
name: string;
}
export interface ContentPreview {
name: string;
path: string;
itemInSet: boolean;
setTag: string;
setNesting: number;
useSetId: number;
}
export interface ContentTypePropertySection {
name: string;
readableName: string;
collapsed: boolean;
}
export interface ContentItemPublicContract {
contentId: string;
cType: string;
cmsPath: string;
creationDate: string;
modifyDate: string;
allowComments: boolean;
hasAgeGate: boolean;
minimumAge: number;
ratingImagePath: string;
author: GeneralUser;
autoEnglishPropertyFallback: boolean;
properties: Record<string, object>;
representations: ContentRepresentation[];
tags: string[];
commentSummary: CommentSummary;
}
export interface ContentRepresentation {
name: string;
path: string;
validationString: string;
}
export interface CommentSummary {
topicId: string;
commentCount: number;
}
export interface NewsArticleRssResponse {
CurrentPaginationToken: number;
NextPaginationToken: number | null;
ResultCountThisPage: number;
NewsArticles: NewsArticleRssItem[];
CategoryFilter: string;
PagerAction: string;
}
export interface NewsArticleRssItem {
Title: string;
Link: string;
PubDate: string;
UniqueIdentifier: string;
Description: string;
HtmlContent: string;
ImagePath: string;
OptionalMobileImagePath: string;
}
export interface SearchResult {
totalResults: number;
hasMore: boolean;
query: PagedQuery;
replacementContinuationToken: string;
useTotalResults: boolean;
}
export interface PagedQuery {
itemsPerPage: number;
currentPage: number;
requestContinuationToken: string;
}
export interface SearchResultOfContentItemPublicContract {
results: ContentItemPublicContract[];
totalResults: number;
hasMore: boolean;
query: PagedQuery;
replacementContinuationToken: string;
useTotalResults: boolean;
}
export interface PostResponse {
lastReplyTimestamp: string;
IsPinned: boolean;
urlMediaType: ForumMediaType;
thumbnail: string;
popularity: ForumPostPopularity;
isActive: boolean;
isAnnouncement: boolean;
userRating: number;
userHasRated: boolean;
userHasMutedPost: boolean;
latestReplyPostId: string;
latestReplyAuthorId: string;
ignoreStatus: IgnoreResponse;
locale: string;
}
export interface PostSearchResponse {
relatedPosts: PostResponse[];
authors: GeneralUser[];
groups: GroupResponse[];
searchedTags: TagResponse[];
polls: PollResponse[];
recruitmentDetails: ForumRecruitmentDetail[];
availablePages: number | null;
results: PostResponse[];
totalResults: number;
hasMore: boolean;
query: PagedQuery;
replacementContinuationToken: string;
useTotalResults: boolean;
}
export interface PollResponse {
topicId: string;
results: PollResult[];
totalVotes: number;
}
export interface PollResult {
answerText: string;
answerSlot: number;
lastVoteDate: string;
votes: number;
requestingUserVoted: boolean;
}
export interface ForumRecruitmentDetail {
topicId: string;
microphoneRequired: boolean;
intensity: ForumRecruitmentIntensityLabel;
tone: ForumRecruitmentToneLabel;
approved: boolean;
conversationId: string | null;
playerSlotsTotal: number;
playerSlotsRemaining: number;
Fireteam: GeneralUser[];
kickedPlayerIds: string[];
}
export interface SearchResultOfPostResponse {
results: PostResponse[];
totalResults: number;
hasMore: boolean;
query: PagedQuery;
replacementContinuationToken: string;
useTotalResults: boolean;
}
export interface DestinyProgression {
progressionHash: number;
dailyProgress: number;
dailyLimit: number;
weeklyProgress: number;
weeklyLimit: number;
currentProgress: number;
level: number;
levelCap: number;
stepIndex: number;
progressToNextLevel: number;
nextLevelAt: number;
currentResetCount: number | null;
seasonResets: DestinyProgressionResetEntry[];
rewardItemStates: DestinyProgressionRewardItemState[];
rewardItemSocketOverrideStates: Record<string, DestinyProgressionRewardItemSocketOverrideState>;
}
export interface DestinyProgressionResetEntry {
season: number;
resets: number;
}
export interface DestinyProgressionRewardItemSocketOverrideState {
rewardItemStats: Record<string, DestinyStat>;
itemState: ItemState;
}
export interface DestinyStat {
statHash: number;
value: number;
}
export interface DestinyDefinition {
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyStatDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
aggregationType: DestinyStatAggregationType;
hasComputedBlock: boolean;
statCategory: DestinyStatCategory;
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyDisplayPropertiesDefinition {
description: string;
name: string;
icon: string;
iconSequences: DestinyIconSequenceDefinition[];
highResIcon: string;
hasIcon: boolean;
}
export interface DestinyIconSequenceDefinition {
frames: string[];
}
export interface DestinyProgressionDefinition {
displayProperties: DestinyProgressionDisplayPropertiesDefinition;
scope: DestinyProgressionScope;
repeatLastStep: boolean;
source: string;
steps: DestinyProgressionStepDefinition[];
visible: boolean;
factionHash: number | null;
color: DestinyColor;
rankIcon: string;
rewardItems: DestinyProgressionRewardItemQuantity[];
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyProgressionDisplayPropertiesDefinition {
displayUnitsName: string;
description: string;
name: string;
icon: string;
iconSequences: DestinyIconSequenceDefinition[];
highResIcon: string;
hasIcon: boolean;
}
export interface DestinyProgressionStepDefinition {
stepName: string;
displayEffectType: DestinyProgressionStepDisplayEffect;
progressTotal: number;
rewardItems: DestinyItemQuantity[];
icon: string;
}
export interface DestinyItemQuantity {
itemHash: number;
itemInstanceId: string | null;
quantity: number;
hasConditionalVisibility: boolean;
}
export interface DestinyInventoryItemDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
tooltipNotifications: DestinyItemTooltipNotification[];
collectibleHash: number | null;
iconWatermark: string;
iconWatermarkShelved: string;
iconWatermarkFeatured: string;
secondaryIcon: string;
secondaryOverlay: string;
secondarySpecial: string;
backgroundColor: DestinyColor;
isFeaturedItem: boolean;
isHolofoil: boolean;
isAdept: boolean;
screenshot: string;
itemTypeDisplayName: string;
flavorText: string;
uiItemDisplayStyle: string;
itemTypeAndTierDisplayName: string;
displaySource: string;
tooltipStyle: string;
action: DestinyItemActionBlockDefinition;
crafting: DestinyItemCraftingBlockDefinition;
inventory: DestinyItemInventoryBlockDefinition;
setData: DestinyItemSetBlockDefinition;
stats: DestinyItemStatBlockDefinition;
emblemObjectiveHash: number | null;
equippingBlock: DestinyEquippingBlockDefinition;
translationBlock: DestinyItemTranslationBlockDefinition;
preview: DestinyItemPreviewBlockDefinition;
quality: DestinyItemQualityBlockDefinition;
value: DestinyItemValueBlockDefinition;
sourceData: DestinyItemSourceBlockDefinition;
objectives: DestinyItemObjectiveBlockDefinition;
metrics: DestinyItemMetricBlockDefinition;
plug: DestinyItemPlugDefinition;
gearset: DestinyItemGearsetBlockDefinition;
sack: DestinyItemSackBlockDefinition;
sockets: DestinyItemSocketBlockDefinition;
summary: DestinyItemSummaryBlockDefinition;
talentGrid: DestinyItemTalentGridBlockDefinition;
investmentStats: DestinyItemInvestmentStatDefinition[];
perks: DestinyItemPerkEntryDefinition[];
loreHash: number | null;
summaryItemHash: number | null;
animations: DestinyAnimationReference[];
allowActions: boolean;
links: HyperlinkReference[];
doesPostmasterPullHaveSideEffects: boolean;
nonTransferrable: boolean;
itemCategoryHashes: number[];
specialItemType: SpecialItemType;
itemType: DestinyItemType;
itemSubType: DestinyItemSubType;
classType: DestinyClass;
breakerType: DestinyBreakerType;
breakerTypeHash: number | null;
equippable: boolean;
damageTypeHashes: number[];
damageTypes: DamageType[];
defaultDamageType: DamageType;
defaultDamageTypeHash: number | null;
seasonHash: number | null;
isWrapper: boolean;
traitIds: string[];
traitHashes: number[];
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyItemTooltipNotification {
displayString: string;
displayStyle: string;
}
export interface DestinyColor {
red: string;
green: string;
blue: string;
alpha: string;
}
export interface DestinyItemActionBlockDefinition {
verbName: string;
verbDescription: string;
isPositive: boolean;
overlayScreenName: string;
overlayIcon: string;
requiredCooldownSeconds: number;
requiredItems: DestinyItemActionRequiredItemDefinition[];
progressionRewards: DestinyProgressionRewardDefinition[];
actionTypeLabel: string;
requiredLocation: string;
requiredCooldownHash: number;
deleteOnAction: boolean;
consumeEntireStack: boolean;
useOnAcquire: boolean;
}
export interface DestinyItemActionRequiredItemDefinition {
count: number;
itemHash: number;
deleteOnAction: boolean;
}
export interface DestinyProgressionRewardDefinition {
progressionMappingHash: number;
amount: number;
applyThrottles: boolean;
}
export interface DestinyProgressionMappingDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
displayUnits: string;
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyItemCraftingBlockDefinition {
outputItemHash: number;
requiredSocketTypeHashes: number[];
failedRequirementStrings: string[];
baseMaterialRequirements: number | null;
bonusPlugs: DestinyItemCraftingBlockBonusPlugDefinition[];
}
export interface DestinyItemCraftingBlockBonusPlugDefinition {
socketTypeHash: number;
plugItemHash: number;
}
export interface DestinySocketTypeDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
insertAction: DestinyInsertPlugActionDefinition;
plugWhitelist: DestinyPlugWhitelistEntryDefinition[];
socketCategoryHash: number;
visibility: DestinySocketVisibility;
alwaysRandomizeSockets: boolean;
isPreviewEnabled: boolean;
hideDuplicateReusablePlugs: boolean;
overridesUiAppearance: boolean;
avoidDuplicatesOnInitialization: boolean;
currencyScalars: DestinySocketTypeScalarMaterialRequirementEntry[];
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyInsertPlugActionDefinition {
actionExecuteSeconds: number;
actionType: SocketTypeActionType;
}
export interface DestinyPlugWhitelistEntryDefinition {
categoryHash: number;
categoryIdentifier: string;
reinitializationPossiblePlugHashes: number[];
}
export interface DestinySocketTypeScalarMaterialRequirementEntry {
currencyItemHash: number;
scalarValue: number;
}
export interface DestinySocketCategoryDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
uiCategoryStyle: number;
categoryStyle: DestinySocketCategoryStyle;
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyMaterialRequirementSetDefinition {
materials: DestinyMaterialRequirement[];
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyMaterialRequirement {
itemHash: number;
deleteOnAction: boolean;
count: number;
countIsConstant: boolean;
omitFromRequirements: boolean;
hasVirtualStackSize: boolean;
}
export interface DestinyItemInventoryBlockDefinition {
stackUniqueLabel: string;
maxStackSize: number;
bucketTypeHash: number;
recoveryBucketTypeHash: number;
tierTypeHash: number;
isInstanceItem: boolean;
tierTypeName: string;
tierType: TierType;
expirationTooltip: string;
expiredInActivityMessage: string;
expiredInOrbitMessage: string;
suppressExpirationWhenObjectivesComplete: boolean;
recipeItemHash: number | null;
}
export interface DestinyInventoryBucketDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
scope: BucketScope;
category: BucketCategory;
bucketOrder: number;
itemCount: number;
location: ItemLocation;
hasTransferDestination: boolean;
enabled: boolean;
fifo: boolean;
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyItemTierTypeDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
infusionProcess: DestinyItemTierTypeInfusionBlock;
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyItemTierTypeInfusionBlock {
baseQualityTransferRatio: number;
minimumQualityIncrement: number;
}
export interface DestinyItemSetBlockDefinition {
itemList: DestinyItemSetBlockEntryDefinition[];
requireOrderedSetItemAdd: boolean;
setIsFeatured: boolean;
setType: string;
questLineName: string;
questLineDescription: string;
questStepSummary: string;
}
export interface DestinyItemSetBlockEntryDefinition {
trackingValue: number;
itemHash: number;
}
export interface DestinyItemStatBlockDefinition {
disablePrimaryStatDisplay: boolean;
statGroupHash: number | null;
stats: Record<string, DestinyInventoryItemStatDefinition>;
hasDisplayableStats: boolean;
primaryBaseStatHash: number;
}
export interface DestinyInventoryItemStatDefinition {
statHash: number;
value: number;
minimum: number;
maximum: number;
displayMaximum: number | null;
}
export interface DestinyStatGroupDefinition {
maximumValue: number;
uiPosition: number;
scaledStats: DestinyStatDisplayDefinition[];
overrides: Record<string, DestinyStatOverrideDefinition>;
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyStatDisplayDefinition {
statHash: number;
maximumValue: number;
displayAsNumeric: boolean;
displayInterpolation: InterpolationPoint[];
}
export interface DestinyStatOverrideDefinition {
statHash: number;
displayProperties: DestinyDisplayPropertiesDefinition;
}
export interface DestinyEquippingBlockDefinition {
gearsetItemHash: number | null;
uniqueLabel: string;
uniqueLabelHash: number;
equipmentSlotTypeHash: number;
attributes: EquippingItemBlockAttributes;
ammoType: DestinyAmmunitionType;
displayStrings: string[];
equipableItemSetHash: number | null;
}
export interface DestinyEquipmentSlotDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
equipmentCategoryHash: number;
bucketTypeHash: number;
applyCustomArtDyes: boolean;
artDyeChannels: DestinyArtDyeReference[];
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyArtDyeReference {
artDyeChannelHash: number;
}
export interface DestinyEquipableItemSetDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
setItems: number[];
setPerks: DestinyItemSetPerkDefinition[];
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyItemSetPerkDefinition {
requiredSetCount: number;
sandboxPerkHash: number;
}
export interface DestinySandboxPerkDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
perkIdentifier: string;
isDisplayable: boolean;
damageType: DamageType;
damageTypeHash: number | null;
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyDamageTypeDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
transparentIconPath: string;
showIcon: boolean;
enumValue: DamageType;
color: DestinyColor;
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyItemTranslationBlockDefinition {
weaponPatternIdentifier: string;
weaponPatternHash: number;
defaultDyes: DyeReference[];
lockedDyes: DyeReference[];
customDyes: DyeReference[];
arrangements: DestinyGearArtArrangementReference[];
hasGeometry: boolean;
}
export interface DyeReference {
channelHash: number;
dyeHash: number;
}
export interface DestinyGearArtArrangementReference {
classHash: number;
artArrangementHash: number;
}
export interface DestinyClassDefinition {
classType: DestinyClass;
displayProperties: DestinyDisplayPropertiesDefinition;
genderedClassNames: Record<string, string>;
genderedClassNamesByGenderHash: Record<string, string>;
mentorVendorHash: number | null;
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyGenderDefinition {
genderType: DestinyGender;
displayProperties: DestinyDisplayPropertiesDefinition;
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyVendorDefinition {
displayProperties: DestinyVendorDisplayPropertiesDefinition;
vendorProgressionType: DestinyVendorProgressionType;
buyString: string;
sellString: string;
displayItemHash: number;
inhibitBuying: boolean;
inhibitSelling: boolean;
factionHash: number;
resetIntervalMinutes: number;
resetOffsetMinutes: number;
failureStrings: string[];
unlockRanges: DateRange[];
vendorIdentifier: string;
vendorPortrait: string;
vendorBanner: string;
enabled: boolean;
visible: boolean;
vendorSubcategoryIdentifier: string;
consolidateCategories: boolean;
actions: DestinyVendorActionDefinition[];
categories: DestinyVendorCategoryEntryDefinition[];
originalCategories: DestinyVendorCategoryEntryDefinition[];
displayCategories: DestinyDisplayCategoryDefinition[];
interactions: DestinyVendorInteractionDefinition[];
inventoryFlyouts: DestinyVendorInventoryFlyoutDefinition[];
itemList: DestinyVendorItemDefinition[];
services: DestinyVendorServiceDefinition[];
acceptedItems: DestinyVendorAcceptedItemDefinition[];
returnWithVendorRequest: boolean;
locations: DestinyVendorLocationDefinition[];
groups: DestinyVendorGroupReference[];
ignoreSaleItemHashes: number[];
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyVendorDisplayPropertiesDefinition {
largeIcon: string;
subtitle: string;
originalIcon: string;
requirementsDisplay: DestinyVendorRequirementDisplayEntryDefinition[];
smallTransparentIcon: string;
mapIcon: string;
largeTransparentIcon: string;
description: string;
name: string;
icon: string;
iconSequences: DestinyIconSequenceDefinition[];
highResIcon: string;
hasIcon: boolean;
}
export interface DestinyVendorRequirementDisplayEntryDefinition {
icon: string;
name: string;
source: string;
type: string;
}
export interface DestinyVendorActionDefinition {
description: string;
executeSeconds: number;
icon: string;
name: string;
verb: string;
isPositive: boolean;
actionId: string;
actionHash: number;
autoPerformAction: boolean;
}
export interface DestinyVendorCategoryEntryDefinition {
categoryIndex: number;
sortValue: number;
categoryHash: number;
quantityAvailable: number;
showUnavailableItems: boolean;
hideIfNoCurrency: boolean;
hideFromRegularPurchase: boolean;
buyStringOverride: string;
disabledDescription: string;
displayTitle: string;
overlay: DestinyVendorCategoryOverlayDefinition;
vendorItemIndexes: number[];
isPreview: boolean;
isDisplayOnly: boolean;
resetIntervalMinutesOverride: number;
resetOffsetMinutesOverride: number;
}
export interface DestinyVendorCategoryOverlayDefinition {
choiceDescription: string;
description: string;
icon: string;
title: string;
currencyItemHash: number | null;
}
export interface DestinyDisplayCategoryDefinition {
index: number;
identifier: string;
displayCategoryHash: number;
displayProperties: DestinyDisplayPropertiesDefinition;
displayInBanner: boolean;
progressionHash: number | null;
sortOrder: VendorDisplayCategorySortOrder;
displayStyleHash: number | null;
displayStyleIdentifier: string;
}
export interface DestinyVendorInteractionDefinition {
interactionIndex: number;
replies: DestinyVendorInteractionReplyDefinition[];
vendorCategoryIndex: number;
questlineItemHash: number;
sackInteractionList: DestinyVendorInteractionSackEntryDefinition[];
uiInteractionType: number;
interactionType: VendorInteractionType;
rewardBlockLabel: string;
rewardVendorCategoryIndex: number;
flavorLineOne: string;
flavorLineTwo: string;
headerDisplayProperties: DestinyDisplayPropertiesDefinition;
instructions: string;
}
export interface DestinyVendorInteractionReplyDefinition {
itemRewardsSelection: DestinyVendorInteractionRewardSelection;
reply: string;
replyType: DestinyVendorReplyType;
}
export interface DestinyVendorInteractionSackEntryDefinition {
sackType: number;
}
export interface DestinyVendorInventoryFlyoutDefinition {
lockedDescription: string;
displayProperties: DestinyDisplayPropertiesDefinition;
buckets: DestinyVendorInventoryFlyoutBucketDefinition[];
flyoutId: number;
suppressNewness: boolean;
equipmentSlotHash: number | null;
}
export interface DestinyVendorInventoryFlyoutBucketDefinition {
collapsible: boolean;
inventoryBucketHash: number;
sortItemsBy: DestinyItemSortType;
}
export interface DestinyVendorItemDefinition {
vendorItemIndex: number;
itemHash: number;
quantity: number;
failureIndexes: number[];
currencies: DestinyVendorItemQuantity[];
refundPolicy: DestinyVendorItemRefundPolicy;
refundTimeLimit: number;
creationLevels: DestinyItemCreationEntryLevelDefinition[];
displayCategoryIndex: number;
categoryIndex: number;
originalCategoryIndex: number;
minimumLevel: number;
maximumLevel: number;
action: DestinyVendorSaleItemActionBlockDefinition;
displayCategory: string;
inventoryBucketHash: number;
visibilityScope: DestinyGatingScope;
purchasableScope: DestinyGatingScope;
exclusivity: BungieMembershipType;
isOffer: boolean | null;
isCrm: boolean | null;
sortValue: number;
expirationTooltip: string;
redirectToSaleIndexes: number[];
socketOverrides: DestinyVendorItemSocketOverride[];
unpurchasable: boolean | null;
}
export interface DestinyVendorItemQuantity {
itemHash: number;
itemInstanceId: string | null;
quantity: number;
hasConditionalVisibility: boolean;
}
export interface DestinyItemCreationEntryLevelDefinition {
level: number;
}
export interface DestinyVendorSaleItemActionBlockDefinition {
executeSeconds: number;
isPositive: boolean;
}
export interface DestinyVendorItemSocketOverride {
singleItemHash: number | null;
randomizedOptionsCount: number;
socketTypeHash: number;
}
export interface DestinyVendorServiceDefinition {
name: string;
}
export interface DestinyVendorAcceptedItemDefinition {
acceptedInventoryBucketHash: number;
destinationInventoryBucketHash: number;
}
export interface DestinyVendorLocationDefinition {
destinationHash: number;
backgroundImagePath: string;
}
export interface DestinyDestinationDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
placeHash: number;
defaultFreeroamActivityHash: number;
activityGraphEntries: DestinyActivityGraphListEntryDefinition[];
bubbleSettings: DestinyDestinationBubbleSettingDefinition[];
bubbles: DestinyBubbleDefinition[];
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyActivityGraphListEntryDefinition {
activityGraphHash: number;
}
export interface DestinyActivityGraphDefinition {
nodes: DestinyActivityGraphNodeDefinition[];
artElements: DestinyActivityGraphArtElementDefinition[];
connections: DestinyActivityGraphConnectionDefinition[];
displayObjectives: DestinyActivityGraphDisplayObjectiveDefinition[];
displayProgressions: DestinyActivityGraphDisplayProgressionDefinition[];
linkedGraphs: DestinyLinkedGraphDefinition[];
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyActivityGraphNodeDefinition {
nodeId: number;
overrideDisplay: DestinyDisplayPropertiesDefinition;
position: DestinyPositionDefinition;
featuringStates: DestinyActivityGraphNodeFeaturingStateDefinition[];
activities: DestinyActivityGraphNodeActivityDefinition[];
states: DestinyActivityGraphNodeStateEntry[];
}
export interface DestinyPositionDefinition {
x: number;
y: number;
z: number;
}
export interface DestinyActivityGraphNodeFeaturingStateDefinition {
highlightType: ActivityGraphNodeHighlightType;
}
export interface DestinyActivityGraphNodeActivityDefinition {
nodeActivityId: number;
activityHash: number;
}
export interface DestinyActivityDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
originalDisplayProperties: DestinyDisplayPropertiesDefinition;
selectionScreenDisplayProperties: DestinyDisplayPropertiesDefinition;
releaseIcon: string;
releaseTime: number;
activityLightLevel: number;
destinationHash: number;
placeHash: number;
activityTypeHash: number;
tier: number;
pgcrImage: string;
rewards: DestinyActivityRewardDefinition[];
modifiers: DestinyActivityModifierReferenceDefinition[];
isPlaylist: boolean;
challenges: DestinyActivityChallengeDefinition[];
optionalUnlockStrings: DestinyActivityUnlockStringDefinition[];
activityFamilyHashes: number[];
traitHashes: number[];
requirements: DestinyActivityRequirementsBlock;
difficultyTierCollectionHash: number | null;
selectableSkullCollectionHashes: number[];
playlistItems: DestinyActivityPlaylistItemDefinition[];
activityGraphList: DestinyActivityGraphListEntryDefinition[];
matchmaking: DestinyActivityMatchmakingBlockDefinition;
guidedGame: DestinyActivityGuidedBlockDefinition;
directActivityModeHash: number | null;
directActivityModeType: number | null;
loadouts: DestinyActivityLoadoutRequirementSet[];
activityModeHashes: number[];
activityModeTypes: DestinyActivityModeType[];
isPvP: boolean;
insertionPoints: DestinyActivityInsertionPointDefinition[];
activityLocationMappings: DestinyEnvironmentLocationMapping[];
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyActivityRewardDefinition {
rewardText: string;
rewardItems: DestinyItemQuantity[];
}
export interface DestinyActivityModifierReferenceDefinition {
activityModifierHash: number;
}
export interface DestinyActivityModifierDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
displayInNavMode: boolean;
displayInActivitySelection: boolean;
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyActivityChallengeDefinition {
objectiveHash: number;
dummyRewards: DestinyItemQuantity[];
}
export interface DestinyObjectiveDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
completionValue: number;
scope: DestinyGatingScope;
locationHash: number;
allowNegativeValue: boolean;
allowValueChangeWhenCompleted: boolean;
isCountingDownward: boolean;
valueStyle: DestinyUnlockValueUIStyle;
progressDescription: string;
perks: DestinyObjectivePerkEntryDefinition;
stats: DestinyObjectiveStatEntryDefinition;
minimumVisibilityThreshold: number;
allowOvercompletion: boolean;
showValueOnComplete: boolean;
completedValueStyle: DestinyUnlockValueUIStyle;
inProgressValueStyle: DestinyUnlockValueUIStyle;
uiLabel: string;
uiStyle: DestinyObjectiveUiStyle;
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyObjectivePerkEntryDefinition {
perkHash: number;
style: DestinyObjectiveGrantStyle;
}
export interface DestinyObjectiveStatEntryDefinition {
stat: DestinyItemInvestmentStatDefinition;
style: DestinyObjectiveGrantStyle;
}
export interface DestinyItemInvestmentStatDefinition {
statTypeHash: number;
value: number;
isConditionallyActive: boolean;
}
export interface DestinyLocationDefinition {
vendorHash: number;
locationReleases: DestinyLocationReleaseDefinition[];
hash: number;
index: number;
redacted: boolean;
}
export interface DestinyLocationReleaseDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
smallTransparentIcon: string;
mapIcon: string;
largeTransparentIcon: string;
spawnPoint: number;
destinationHash: number;
activityHash: number;
activityGraphHash: number;
activityGraphNodeHash: number;
activityBubbleName: number;
activityPathBundle: number;
activityPathDestination: number;
navPointType: DestinyActivityNavPointType;
worldPosition: number[];
}
export interface DestinyActivityUnlockStringDefinition {
displayString: string;
}
export interface DestinyActivityRequirementsBlock {
leaderRequirementLabels: DestinyActivityRequirementLabel[];
fireteamRequirementLabels: DestinyActivityRequirementLabel[];
}
export interface DestinyActivityRequirementLabel {
displayString: string;
}
export interface DestinyActivityPlaylistItemDefinition {
activityHash: number;
directActivityModeHash: number | null;
directActivityModeType: number | null;
activityModeHashes: number[];
activityModeTypes: DestinyActivityModeType[];
}
export interface DestinyActivityModeDefinition {
displayProperties: DestinyDisplayPropertiesDefinition;
pgcrImage: string;
modeType: DestinyActivityModeType;
activityModeCategory: DestinyActivityModeCategory;
isTeamBased: boolean;
isAggregateMode: bo