guildwars2-ts 1.0.1 → 1.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +1 -1
- package/README.md +24 -8
- package/dist/index.d.mts +2 -8
- package/dist/index.d.ts +2 -8
- package/dist/index.js +667 -972
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +667 -972
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/base/apiBase.ts","../src/base/apiParams.ts","../src/base/errors/apiNotFoundError.ts","../src/base/errors/apiRetryFailedError.ts","../src/base/errors/apiTokenError.ts","../src/base/errors/apiGenericError.ts","../src/base/errors/apiPermissionsError.ts","../src/base/errors/apiTimeoutError.ts","../src/base/logger.ts","../src/base/requestBase.ts","../src/apis/endpoints.ts","../src/apis/account/account.ts","../src/apis/achievements/achievements.ts","../src/apis/characters/characters.ts","../src/apis/commerce/commerce.ts","../src/apis/emblem/emblem.ts","../src/apis/guild/guild.ts","../src/apis/home/home.ts","../src/apis/misc/colors.ts","../src/apis/misc/continents.ts","../src/apis/misc/currencies.ts","../src/apis/misc/emotes.ts","../src/apis/misc/gliders.ts","../src/apis/misc/items.ts","../src/apis/misc/itemstats.ts","../src/apis/misc/legendaryarmory.ts","../src/apis/misc/legends.ts","../src/apis/misc/mailCarriers.ts","../src/apis/misc/mapChests.ts","../src/apis/misc/maps.ts","../src/apis/misc/masteries.ts","../src/apis/misc/materials.ts","../src/apis/misc/minis.ts","../src/apis/misc/mounts.ts","../src/apis/misc/novelties.ts","../src/apis/misc/outfits.ts","../src/apis/misc/pets.ts","../src/apis/misc/quaggans.ts","../src/apis/misc/quests.ts","../src/apis/misc/races.ts","../src/apis/misc/raids.ts","../src/apis/misc/recipes.ts","../src/apis/misc/skills.ts","../src/apis/misc/skins.ts","../src/apis/misc/specializations.ts","../src/apis/misc/stories.ts","../src/apis/misc/subtoken.ts","../src/apis/misc/titles.ts","../src/apis/misc/tokeninfo.ts","../src/apis/misc/traits.ts","../src/apis/misc/worldbosses.ts","../src/apis/misc/worlds.ts","../src/apis/pvp/pvp.ts","../src/apis/wvw/wvw.ts","../src/api.ts"],"names":["ApiLanguage","LogLevel"],"mappings":"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","sourcesContent":["import { AxiosError, AxiosHeaders, type AxiosResponse, type RawAxiosRequestConfig } from 'axios';\nimport type { Endpoint } from '../apis/endpoints';\nimport { type ApiParams, type UrlParams, ApiLanguage } from './apiParams';\nimport {\n\tApiGenericError,\n\tApiNotFoundError,\n\tApiPermissionsError,\n\tApiRetryFailedError,\n\tApiTimeoutError,\n\tApiTokenError\n} from './errors';\nimport { logger } from './logger';\nimport { enqueueRequest } from './requestBase';\n\n/**\n * Base Api object. Implements anything needed for the requests to all endpoints\n */\nexport class ApiBase {\n\tprivate readonly _baseUrl: string = 'https://api.guildwars2.com';\n\tprivate readonly _apiToken?: string;\n\tprivate readonly _language: ApiLanguage;\n\tprivate readonly _rateLimitRetry: boolean;\n\tprivate readonly _rateLimitRetryAttempts: number;\n\n\tconstructor(apiParams?: ApiParams) {\n\t\t// Set core Api parameters\n\t\tthis._apiToken = apiParams?.token;\n\t\tthis._language = apiParams?.language ?? ApiLanguage.English;\n\n\t\t// Set rate-limiting parameters\n\t\tthis._rateLimitRetry = apiParams?.rateLimit?.retry ?? true;\n\t\tthis._rateLimitRetryAttempts = apiParams?.rateLimit?.retry ? apiParams.rateLimit.attempts : 0;\n\t}\n\n\t/**\n\t * Parameters for the api response, at top level\n\t *\n\t * @returns Api parameters\n\t */\n\tprotected getParams(): ApiParams {\n\t\treturn {\n\t\t\ttoken: this._apiToken,\n\t\t\tlanguage: this._language,\n\t\t\trateLimit: {\n\t\t\t\tretry: this._rateLimitRetry,\n\t\t\t\tattempts: this._rateLimitRetryAttempts\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Generic request builder. Adds a finalized request to the concurrency queue\n\t *\n\t * @param endpoint - API Endpoint\n\t * @param apiParams - Query string\n\t * @param schemaVersion - Schema version\n\t */\n\tprotected async buildRequest<T>(endpoint: Endpoint, apiParams?: UrlParams, schemaVersion?: string): Promise<T> {\n\t\t// Check authentication. Most endpoints will not work without it\n\t\tconst { tokenRequired } = endpoint;\n\n\t\t// Build params for the specific endpoint\n\t\tconst url = this._getApiUrl(endpoint, apiParams ?? {});\n\t\tconst headers = new AxiosHeaders();\n\t\theaders['Accept-Language'] = this._language;\n\t\tif (tokenRequired) {\n\t\t\tif (!this._apiToken) throw new ApiTokenError();\n\t\t\theaders.Authorization = `Bearer ${this._apiToken}`;\n\t\t}\n\t\tif (schemaVersion) headers['X-Schema-Version'] = schemaVersion;\n\n\t\tconst options: RawAxiosRequestConfig = {\n\t\t\turl,\n\t\t\tmethod: 'GET',\n\t\t\theaders\n\t\t};\n\n\t\t// Make a request based on provided data\n\t\ttry {\n\t\t\tlogger.info(`Requesting ${options.url!}`);\n\t\t\tconst response = await enqueueRequest<AxiosResponse<T>>(options);\n\t\t\tconst { data } = response;\n\t\t\treturn data;\n\t\t} catch (error: unknown) {\n\t\t\treturn await this.retryRequest<T>(endpoint, options, apiParams, error);\n\t\t}\n\t}\n\n\t/**\n\t * Retries failed requests\n\t * TODO: Fix logic. Rate-limits are almost impossible hit, but other generic requests will fail and loop forever\n\t *\n\t * @param endpoint - Endpoint to which a request was originally made\n\t * @param prevOptions - Axios request options\n\t * @param apiParams - Query string\n\t * @param prevError - Error that caused a retry\n\t * @returns Successful request, or error\n\t */\n\tprotected async retryRequest<T>(\n\t\tendpoint: Endpoint,\n\t\tprevOptions: RawAxiosRequestConfig,\n\t\tapiParams?: UrlParams,\n\t\tprevError?: unknown\n\t): Promise<T> {\n\t\t// Check if a retry is needed, is the request is bad\n\t\tif (prevError instanceof AxiosError) {\n\t\t\tif (prevError.response) {\n\t\t\t\tconst { status } = prevError.response;\n\t\t\t\tif (status === 401) {\n\t\t\t\t\tlogger.warn(`Request to ${prevOptions.url!} failed.`);\n\t\t\t\t\tthrow new ApiTokenError();\n\t\t\t\t}\n\t\t\t\tif (status === 403) {\n\t\t\t\t\t// Axios doesn't know what type this can be, but the api always returns the same object\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\tconst requiredScope: string =\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/restrict-plus-operands\n\t\t\t\t\t\tprevError.response.data.text.slice(0, 1).toUpperCase() + prevError.response.data.text.slice(1);\n\t\t\t\t\tlogger.warn(`Request to ${prevOptions.url!} failed. ${requiredScope}.`);\n\t\t\t\t\tthrow new ApiPermissionsError(requiredScope);\n\t\t\t\t}\n\t\t\t\tif (status === 404) {\n\t\t\t\t\tlogger.warn(`Request to ${prevOptions.url!} returned no data.`);\n\t\t\t\t\tthrow new ApiNotFoundError();\n\t\t\t\t}\n\t\t\t\tif (status === 504) {\n\t\t\t\t\tlogger.warn(`Request to ${prevOptions.url!} timed out.`);\n\t\t\t\t\tthrow new ApiTimeoutError();\n\t\t\t\t}\n\t\t\t}\n\t\t\tlogger.warn(`Request to ${prevOptions.url!} failed. ${(prevError as Error).message}`);\n\t\t} else if (this._rateLimitRetry) {\n\t\t\t// Attempt to retry\n\t\t\tfor (let attempt = 0; attempt < this._rateLimitRetryAttempts; attempt++) {\n\t\t\t\ttry {\n\t\t\t\t\treturn await this.buildRequest<T>(endpoint, apiParams);\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t// Hit the rate-limit again\n\t\t\t\t\tif (error instanceof AxiosError && error.code === 'ERR_TOO_MANY_REQUESTS') {\n\t\t\t\t\t\t// Rate-limit is 600 (supposedly really 300) per minute\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tlogger.warn('Request timed out. Waiting to retry...');\n\t\t\t\t\t\t}, 1000);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlogger.info(`Rate-limit retries failed. Aborting request to ${prevOptions.url!}`);\n\t\t\tthrow new ApiRetryFailedError();\n\t\t}\n\t\t// TODO: Determine what actually happens\n\t\t// Probably something stupid in the request itself\n\t\tthrow new ApiGenericError();\n\t}\n\n\t/**\n\t * Builds final Api url from the endpoint and provided parameters\n\t *\n\t * @param endpoint - Api endpoint\n\t * @param urlParams - Parameters\n\t * @returns Finalized endpoint Url\n\t */\n\tprivate _getApiUrl(endpoint: Endpoint, urlParams: UrlParams) {\n\t\t// Build the endpoint base\n\t\tconst { path } = endpoint;\n\t\tconst regex = /\\$\\(([^)]+)?\\)/g;\n\t\tlet fullUrl = `${this._baseUrl}/${path}`;\n\n\t\t// Build any arguments needed for the endpoint\n\t\t// eslint-disable-next-line @typescript-eslint/init-declarations\n\t\tlet match;\n\t\twhile ((match = regex.exec(fullUrl))) {\n\t\t\tconst [key, param] = match;\n\t\t\tif (!param) continue;\n\t\t\tconst value = encodeURI(String(urlParams[param]));\n\t\t\tfullUrl = fullUrl.replace(key, value);\n\t\t\tregex.lastIndex = 0;\n\t\t}\n\t\treturn fullUrl;\n\t}\n}\n","/**\n * Available language options\n */\nexport enum ApiLanguage {\n\tEnglish = 'en',\n\tFrench = 'fr',\n\tGerman = 'de',\n\tSpanish = 'es',\n\tChinese = 'zh'\n}\n\n/**\n * Parameters passed into the endpoint, to make a specific request\n */\nexport type UrlParams = Record<string, string | number | string[] | number[]>;\n\n/**\n * Parameters required by the Api for any call\n */\nexport interface ApiParams {\n\ttoken?: string;\n\tlanguage?: ApiLanguage;\n\trateLimit?: RatelimitParams;\n}\n\n/**\n * Ratelimiting parameters\n */\nexport type RatelimitParams =\n\t| {\n\t\t\tretry: true;\n\t\t\tattempts: number;\n\t }\n\t| {\n\t\t\tretry: false;\n\t };\n","/**\n * Api error thrown when a request fails to obtain any data.\n */\nexport class ApiNotFoundError extends Error {\n\tconstructor() {\n\t\tsuper('The Api did not return any data with the provided arguments');\n\t\tObject.setPrototypeOf(this, ApiNotFoundError.prototype);\n\t}\n}\n","/**\n * Api error thrown when a request retry fails, or is canceled\n */\nexport class ApiRetryFailedError extends Error {\n\tconstructor() {\n\t\tsuper('The Api failed to return data after several attempts');\n\t\tObject.setPrototypeOf(this, ApiRetryFailedError.prototype);\n\t}\n}\n","/**\n * Api token error. Thrown when the token is missing or incorrect\n */\nexport class ApiTokenError extends Error {\n\tconstructor() {\n\t\tsuper('Api token was required, but was either missing or incorrect');\n\t\tObject.setPrototypeOf(this, ApiTokenError.prototype);\n\t}\n}\n","/**\n * Api error thrown when an unhandled error occurs.\n */\nexport class ApiGenericError extends Error {\n\tconstructor() {\n\t\tsuper('The Api request failed with an unknown error');\n\t\tObject.setPrototypeOf(this, ApiGenericError.prototype);\n\t}\n}\n","/**\n * Token permission error. Thrown when the token is correct,\n * but does not have permissions required for the request.\n */\nexport class ApiPermissionsError extends Error {\n\tconstructor(scope: string) {\n\t\tsuper(`The Api token does not have sufficient permissions for this request. ${scope}`);\n\t\tObject.setPrototypeOf(this, ApiPermissionsError.prototype);\n\t}\n}\n","/**\n * Api error thrown when a request is timed out.\n */\nexport class ApiTimeoutError extends Error {\n\tconstructor() {\n\t\tsuper('The Api request timed out');\n\t\tObject.setPrototypeOf(this, ApiTimeoutError.prototype);\n\t}\n}\n","import { Logger } from 'tslog';\n\n/**\n * TSlog log level\n */\nexport enum LogLevel {\n\tsilly = 0,\n\ttrace = 1,\n\tdebug = 2,\n\tinfo = 3,\n\twarn = 4,\n\terror = 5,\n\tfatal = 6\n}\n\n/**\n * Global logger object\n */\nexport const logger = new Logger({\n\tminLevel: LogLevel.info,\n\thideLogPositionForProduction: true\n});\n\n/**\n * Set logger level\n *\n * @param minLevel - Minimum logging level\n */\nexport const setLogLevel = (minLevel: LogLevel): void => {\n\tlogger.settings.minLevel = minLevel;\n};\n\n/**\n * Set whether the logger will display file paths\n *\n * @param displayFilePath - Filepath status\n */\nexport const setPathLogging = (displayFilePath: boolean): void => {\n\tlogger.settings.hideLogPositionForProduction = !displayFilePath;\n};\n","import axios, { type AxiosRequestConfig } from 'axios';\nimport Queue from 'promise-queue';\nimport type { ApiResponseDTO } from '../models';\n\n/**\n * Global request queue\n */\nexport const queue: Queue = new Queue(Infinity, Infinity);\n\n/**\n * Adds a promise request to the global queue\n *\n * @param options - Axios request options\n * @returns Request promise\n */\nasync function sendRequest<T>(options: AxiosRequestConfig): Promise<ApiResponseDTO<T>> {\n\treturn await new Promise((resolve, reject) => {\n\t\taxios\n\t\t\t.get(options.url!, { ...options })\n\t\t\t.then(resolve)\n\t\t\t.catch(reject);\n\t});\n}\n\n/**\n * Enqueue incoming Axios request\n *\n * @param options - Axios request options\n * @returns Request result\n */\nexport async function enqueueRequest<T>(options: AxiosRequestConfig): Promise<T> {\n\treturn await queue.add(async () => (await sendRequest(options)) as T);\n}\n","export interface Endpoint {\n\tpath: `v2/${string}`;\n\ttokenRequired: boolean;\n}\n\ntype SubEndpoint = Record<string, Endpoint>;\n\nexport const endpoints = {\n\taccount: {\n\t\tbase: {\n\t\t\tpath: 'v2/account',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tachievements: {\n\t\t\tpath: 'v2/account/achievements',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tbank: {\n\t\t\tpath: 'v2/account/bank',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tbuildStorage: {\n\t\t\tpath: 'v2/account/buildstorage?ids=all',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tdailyCrafting: {\n\t\t\tpath: 'v2/account/dailycrafting',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tdungeons: {\n\t\t\tpath: 'v2/account/dungeons',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tdyes: {\n\t\t\tpath: 'v2/account/dyes',\n\t\t\ttokenRequired: true\n\t\t},\n\t\temotes: {\n\t\t\tpath: 'v2/account/emotes',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tfinishers: {\n\t\t\tpath: 'v2/account/finishers',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tgliders: {\n\t\t\tpath: 'v2/account/gliders',\n\t\t\ttokenRequired: true\n\t\t},\n\t\thomeCats: {\n\t\t\tpath: 'v2/account/home/cats',\n\t\t\ttokenRequired: true\n\t\t},\n\t\thomeNodes: {\n\t\t\tpath: 'v2/account/home/nodes',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tsharedInventory: {\n\t\t\tpath: 'v2/account/inventory',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tlegendaryArmory: {\n\t\t\tpath: 'v2/account/legendaryarmory',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tluck: {\n\t\t\tpath: 'v2/account/luck',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmailCarriers: {\n\t\t\tpath: 'v2/account/mailcarriers',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmapChests: {\n\t\t\tpath: 'v2/account/mapchests',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmasteries: {\n\t\t\tpath: 'v2/account/masteries',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmasteryPoints: {\n\t\t\tpath: 'v2/account/mastery/points',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmaterials: {\n\t\t\tpath: 'v2/account/materials',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tminis: {\n\t\t\tpath: 'v2/account/minis',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmountsSkins: {\n\t\t\tpath: 'v2/account/mounts/skins',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmountsTypes: {\n\t\t\tpath: 'v2/account/mounts/types',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tnovelties: {\n\t\t\tpath: 'v2/account/novelties',\n\t\t\ttokenRequired: true\n\t\t},\n\t\toutfits: {\n\t\t\tpath: 'v2/account/outfits',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tprogression: {\n\t\t\tpath: 'v2/account/progression',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tpvpHeroes: {\n\t\t\tpath: 'v2/account/pvp/heroes',\n\t\t\ttokenRequired: true\n\t\t},\n\t\traids: {\n\t\t\tpath: 'v2/account/raids',\n\t\t\ttokenRequired: true\n\t\t},\n\t\trecipes: {\n\t\t\tpath: 'v2/account/recipes',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tskins: {\n\t\t\tpath: 'v2/account/skins',\n\t\t\ttokenRequired: true\n\t\t},\n\t\ttitles: {\n\t\t\tpath: 'v2/account/titles',\n\t\t\ttokenRequired: true\n\t\t},\n\t\twallet: {\n\t\t\tpath: 'v2/account/wallet',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tworldBosses: {\n\t\t\tpath: 'v2/account/worldbosses',\n\t\t\ttokenRequired: true\n\t\t}\n\t},\n\tachievements: {\n\t\tcategoryIds: {\n\t\t\tpath: 'v2/achievements/categories',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tcategories: {\n\t\t\tpath: 'v2/achievements/categories?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tdaily: {\n\t\t\tpath: 'v2/achievements/daily',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tdailyTomorrow: {\n\t\t\tpath: 'v2/achievements/daily/tomorrow',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tgroups: {\n\t\t\tpath: 'v2/achievements/groups/$(id)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tcharacters: {\n\t\tbase: {\n\t\t\tpath: 'v2/characters',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tbackstory: {\n\t\t\tpath: 'v2/characters/$(id)/backstory',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tbuildTabs: {\n\t\t\tpath: 'v2/characters/$(id)/buildtabs?tabs=$(tabs)',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tcore: {\n\t\t\tpath: 'v2/characters/$(id)/core',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tcrafting: {\n\t\t\tpath: 'v2/characters/$(id)/crafting',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tequipment: {\n\t\t\tpath: 'v2/characters/$(id)/equipment',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tequipmentTabsById: {\n\t\t\tpath: 'v2/characters/$(id)/equipmenttabs?tabs=$(tabs)',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tequipmentTabActive: {\n\t\t\tpath: 'v2/characters/$(id)/equipmenttabs/active',\n\t\t\ttokenRequired: true\n\t\t},\n\t\theroPoints: {\n\t\t\tpath: 'v2/characters/$(id)/heropoints',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tinventory: {\n\t\t\tpath: 'v2/characters/$(id)/inventory',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tquests: {\n\t\t\tpath: 'v2/characters/$(id)/quests',\n\t\t\ttokenRequired: true\n\t\t},\n\t\trecipes: {\n\t\t\tpath: 'v2/characters/$(id)/recipes',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tsab: {\n\t\t\tpath: 'v2/characters/$(id)/sab',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tskills: {\n\t\t\tpath: 'v2/characters/$(id)/skills',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tspecializations: {\n\t\t\tpath: 'v2/characters/$(id)/specializations',\n\t\t\ttokenRequired: true\n\t\t},\n\t\ttraining: {\n\t\t\tpath: 'v2/character/$(id)/training',\n\t\t\ttokenRequired: true\n\t\t}\n\t},\n\tcolors: {\n\t\tall: {\n\t\t\tpath: 'v2/colors',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/colors?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tcommerce: {\n\t\tdelivery: {\n\t\t\tpath: 'v2/commerce/delivery',\n\t\t\ttokenRequired: true\n\t\t},\n\t\texchangeCoins: {\n\t\t\tpath: 'v2/commerce/exchange/coins?quantity=$(quantity)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\texchangeGems: {\n\t\t\tpath: 'v2/commerce/exchange/gems?quantity=$(quantity)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tlistings: {\n\t\t\tpath: 'v2/commerce/listings?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tprices: {\n\t\t\tpath: 'v2/commerce/prices?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\ttransactionsCurrentBuys: {\n\t\t\tpath: 'v2/commerce/transactions/current/buys',\n\t\t\ttokenRequired: true\n\t\t},\n\t\ttransactionsCurrentSells: {\n\t\t\tpath: 'v2/commerce/transactions/current/sells',\n\t\t\ttokenRequired: true\n\t\t},\n\t\ttransactionsHistoryBuys: {\n\t\t\tpath: 'v2/commerce/transactions/history/buys',\n\t\t\ttokenRequired: true\n\t\t},\n\t\ttransactionsHistorySells: {\n\t\t\tpath: 'v2/commerce/transactions/history/sells',\n\t\t\ttokenRequired: true\n\t\t}\n\t},\n\tcontinents: {\n\t\tcore: {\n\t\t\tpath: 'v2/continents',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tcontinents: {\n\t\t\tpath: 'v2/continents?ids=$(continents)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tfloors: {\n\t\t\tpath: 'v2/continents/$(continent)/floors?ids=$(floors)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tregions: {\n\t\t\tpath: 'v2/continents/$(continent)/floors/$(floor)/regions?ids=$(regions)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tmaps: {\n\t\t\tpath: 'v2/continents/$(continent)/floors/$(floor)/regions/$(region)/maps?ids=$(maps)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tcreateSubtoken: {\n\t\tnoUrl: {\n\t\t\tpath: 'v2/createsubtoken?expire=$(expire)&permissions=$(permissions)',\n\t\t\ttokenRequired: true\n\t\t},\n\t\turl: {\n\t\t\tpath: 'v2/createsubtoken?expire=$(expire)&permissions=$(permissions)&urls=$(urls)',\n\t\t\ttokenRequired: true\n\t\t}\n\t},\n\tcurrencies: {\n\t\tall: {\n\t\t\tpath: 'v2/currencies',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/currencies?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\temblem: {\n\t\tpath: 'v2/emblem/$(type)?ids=$(ids)',\n\t\ttokenRequired: false\n\t},\n\temotes: {\n\t\tall: {\n\t\t\tpath: 'v2/emotes',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/emotes?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tgliders: {\n\t\tall: {\n\t\t\tpath: 'v2/gliders',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/gliders?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tpaginated: {\n\t\t\tpath: 'v2/gliders?ids=$(ids)&page=$(page)&page_size=$(page_size)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tguild: {\n\t\tcore: {\n\t\t\tpath: 'v2/guild/$(id)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tlog: {\n\t\t\tpath: 'v2/guild/$(id)/log?since=$(since)',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmembers: {\n\t\t\tpath: 'v2/guild/$(id)/members',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tranks: {\n\t\t\tpath: 'v2/guild/$(id)/ranks',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tstash: {\n\t\t\tpath: 'v2/guild/$(id)/stash',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tstorage: {\n\t\t\tpath: 'v2/guild/$(id)/storage',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tteams: {\n\t\t\tpath: 'v2/guild/$(id)/teams',\n\t\t\ttokenRequired: true\n\t\t},\n\t\ttreasury: {\n\t\t\tpath: 'v2/guild/$(id)/treasury',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tupgrades: {\n\t\t\tpath: 'v2/guild/$(id)/upgrades',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tupgradesInfo: {\n\t\t\tpath: 'v2/guild/upgrades?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tpermissions: {\n\t\t\tpath: 'v2/guild/permissions',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tsearch: {\n\t\t\tpath: 'v2/guild/search?name=$(name)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\thome: {\n\t\tcats: {\n\t\t\tpath: 'v2/home/cats?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tnodes: {\n\t\t\tpath: 'v2/home/nodes?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\titems: {\n\t\tall: {\n\t\t\tpath: 'v2/items',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/items?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\titemstats: {\n\t\tall: {\n\t\t\tpath: 'v2/itemstats',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/itemstats?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tlegendaryArmory: {\n\t\tall: {\n\t\t\tpath: 'v2/legendaryarmory',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/legendaryarmory?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tlegends: {\n\t\tall: {\n\t\t\tpath: 'v2/legends',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/legends?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tmailCarriers: {\n\t\tall: {\n\t\t\tpath: 'v2/mailcarriers',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/mailcarriers?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tmapChests: {\n\t\tpath: 'v2/mapchests',\n\t\ttokenRequired: false\n\t},\n\tmaps: {\n\t\tall: {\n\t\t\tpath: 'v2/maps',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/maps?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tmasteries: {\n\t\tall: {\n\t\t\tpath: 'v2/masteries',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/masteries?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tmaterials: {\n\t\tall: {\n\t\t\tpath: 'v2/materials',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/materials?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tminis: {\n\t\tall: {\n\t\t\tpath: 'v2/minis',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/minis?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tmountsSkins: {\n\t\tall: {\n\t\t\tpath: 'v2/mounts/skins',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/mounts/skins?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tmountsTypes: {\n\t\tall: {\n\t\t\tpath: 'v2/mounts/types',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/mounts/types?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tnovelties: {\n\t\tall: {\n\t\t\tpath: 'v2/novelties',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/novelties?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\toutfits: {\n\t\tall: {\n\t\t\tpath: 'v2/outfits',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/outfits?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tpets: {\n\t\tall: {\n\t\t\tpath: 'v2/pets',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/pets?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tpvp: {\n\t\tamuletsAll: {\n\t\t\tpath: 'v2/pvp/amulets',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tamuletsById: {\n\t\t\tpath: `v2/pvp/amulets?ids=$(ids)`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tgamesAll: {\n\t\t\tpath: `v2/pvp/games`,\n\t\t\ttokenRequired: true\n\t\t},\n\t\tgamesById: {\n\t\t\tpath: `v2/pvp/games?ids=$(ids)`,\n\t\t\ttokenRequired: true\n\t\t},\n\t\theroesAll: {\n\t\t\tpath: `v2/pvp/heroes`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\theroesById: {\n\t\t\tpath: `v2/pvp/heroes?ids=$(ids)`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tranksAll: {\n\t\t\tpath: `v2/pvp/ranks`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tranksById: {\n\t\t\tpath: `v2/pvp/ranks?ids=$(ids)`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tseasonsAll: {\n\t\t\tpath: `v2/pvp/seasons`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tseasonsById: {\n\t\t\tpath: `v2/pvp/seasons?ids=$(ids)`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tleaderboards: {\n\t\t\tpath: `v2/pvp/seasons/$(id)/leaderboards/$(type)/$(region)`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tstandings: {\n\t\t\tpath: `v2/pvp/standings`,\n\t\t\ttokenRequired: true\n\t\t},\n\t\tstats: {\n\t\t\tpath: `v2/pvp/stats`,\n\t\t\ttokenRequired: true\n\t\t}\n\t},\n\tquaggans: {\n\t\tall: {\n\t\t\tpath: 'v2/quaggans',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/quaggans?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tquests: {\n\t\tall: {\n\t\t\tpath: 'v2/quests',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/quests?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\traces: {\n\t\tall: {\n\t\t\tpath: 'v2/races',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/races?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\traids: {\n\t\tall: {\n\t\t\tpath: 'v2/raids',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/raids?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\trecipes: {\n\t\tbyId: {\n\t\t\tpath: 'v2/recipes?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tsearch: {\n\t\t\tpath: 'v2/recipes/search?$(type)=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tskills: {\n\t\tpath: 'v2/skills?ids=$(ids)',\n\t\ttokenRequired: false\n\t},\n\tskins: {\n\t\tall: {\n\t\t\tpath: 'v2/skins',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/skins?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tspecializations: {\n\t\tall: {\n\t\t\tpath: 'v2/specializations',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/specializations?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tstories: {\n\t\tall: {\n\t\t\tpath: 'v2/stories',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/stories?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tseasons: {\n\t\tall: {\n\t\t\tpath: 'v2/stories/seasons',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/stories/seasons?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\ttitles: {\n\t\tall: {\n\t\t\tpath: 'v2/titles',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/titles?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\ttokenInfo: {\n\t\tpath: 'v2/tokeninfo',\n\t\ttokenRequired: true\n\t},\n\ttraits: {\n\t\tall: {\n\t\t\tpath: 'v2/traits',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/traits?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tworldBosses: {\n\t\tpath: 'v2/worldbosses',\n\t\ttokenRequired: false\n\t},\n\tworlds: {\n\t\tall: {\n\t\t\tpath: 'v2/worlds',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/worlds?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\twvw: {\n\t\tabilities: {\n\t\t\tpath: 'v2/wvw/abilities',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tabilitiesById: {\n\t\t\tpath: 'v2/wvw/abilities?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tmatches: {\n\t\t\tpath: 'v2/wvw/matches',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tmatchesById: {\n\t\t\tpath: 'v2/wvw/matches?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tmatchesByWorld: {\n\t\t\tpath: 'v2/wvw/matches/$(type)?world=$(world)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tobjectives: {\n\t\t\tpath: 'v2/wvw/objectives',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tobjectivesById: {\n\t\t\tpath: 'v2/wvw/objectives?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tranks: {\n\t\t\tpath: 'v2/wvw/ranks',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tranksById: {\n\t\t\tpath: 'v2/wvw/ranks?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t}\n} satisfies Record<string, Endpoint | SubEndpoint>;\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport type {\n\tAccountAchievementsDTO,\n\tAccountBankDTO,\n\tAccountBuildStorageDTO,\n\tAccountDailyCraftingDTO,\n\tAccountDTO,\n\tAccountDungeonsDTO,\n\tAccountDyesDTO,\n\tAccountEmotesDTO,\n\tAccountFinishersDTO,\n\tAccountGlidersDTO,\n\tAccountHomeCatsDTO,\n\tAccountHomeNodesDTO,\n\tAccountInventoryDTO,\n\tAccountLegendaryArmoryDTO,\n\tAccountLuckDTO,\n\tAccountMailCarriersDTO,\n\tAccountMapChestsDTO,\n\tAccountMasteriesDTO,\n\tAccountMasteryPointsDTO,\n\tAccountMaterialsDTO,\n\tAccountMinisDTO,\n\tAccountMountSkinsDTO,\n\tAccountMountTypesDTO,\n\tAccountNoveltiesDTO,\n\tAccountOutfitsDTO,\n\tAccountProgressionDTO,\n\tAccountPvpHeroesDTO,\n\tAccountRaidsDTO,\n\tAccountRecipesDTO,\n\tAccountSkinsDTO,\n\tAccountTitlesDTO,\n\tAccountWorldBossesDTO\n} from '../../models';\n\n/**\n * /v2/account Api\n */\nexport class AccountApi extends ApiBase {\n\t/**\n\t * Get all account information\n\t *\n\t * @returns Account information\n\t */\n\tasync get(): Promise<AccountDTO> {\n\t\treturn await this.buildRequest<AccountDTO>(endpoints.account.base, {});\n\t}\n\n\t/**\n\t * Get account achievement information\n\t *\n\t * @returns Account achievements\n\t */\n\tasync getAchievements(): Promise<AccountAchievementsDTO[]> {\n\t\treturn await this.buildRequest<AccountAchievementsDTO[]>(endpoints.account.achievements, {});\n\t}\n\n\t/**\n\t * Get the items stored in a player's vault (not including material storage)\n\t * If null, the slot is empty\n\t *\n\t * @returns Account bank contents\n\t */\n\tasync getBankContents(): Promise<Array<AccountBankDTO | null>> {\n\t\treturn await this.buildRequest<Array<AccountBankDTO | null>>(endpoints.account.bank, {});\n\t}\n\n\t/**\n\t * Get templates stored in the account build storage\n\t *\n\t * @returns Account build storage\n\t */\n\tasync getBuildStorage(): Promise<AccountBuildStorageDTO[]> {\n\t\treturn await this.buildRequest<AccountBuildStorageDTO[]>(endpoints.account.buildStorage, {});\n\t}\n\n\t/**\n\t * Get completed daily crafts\n\t *\n\t * @returns Crafts completed since last daily reset\n\t */\n\tasync getDailyCrafts(): Promise<AccountDailyCraftingDTO[]> {\n\t\treturn await this.buildRequest<AccountDailyCraftingDTO[]>(endpoints.account.dailyCrafting, {});\n\t}\n\n\t/**\n\t * Get completed dungeons\n\t *\n\t * @returns Dungeons completed since last daily reset\n\t */\n\tasync getDungeons(): Promise<AccountDungeonsDTO[]> {\n\t\treturn await this.buildRequest<AccountDungeonsDTO[]>(endpoints.account.dungeons, {});\n\t}\n\n\t/**\n\t * Get dyes unlocked on the account\n\t *\n\t * @returns Dyes unlocked on the account\n\t */\n\tasync getDyes(): Promise<AccountDyesDTO[]> {\n\t\treturn await this.buildRequest<AccountDyesDTO[]>(endpoints.account.dyes, {});\n\t}\n\n\t/**\n\t * Get emotes unlocked on the account\n\t *\n\t * @returns Emotes unlocked on the account\n\t */\n\tasync getEmotes(): Promise<AccountEmotesDTO[]> {\n\t\treturn await this.buildRequest<AccountEmotesDTO[]>(endpoints.account.emotes, {});\n\t}\n\n\t/**\n\t * Get finishers unlocked on the account\n\t *\n\t * @returns Finishers unlocked on the account\n\t */\n\tasync getFinishers(): Promise<AccountFinishersDTO[]> {\n\t\treturn await this.buildRequest<AccountFinishersDTO[]>(endpoints.account.finishers, {});\n\t}\n\n\t/**\n\t * Get gliders unlocked on the account\n\t *\n\t * @returns Gliders unlocked on the account\n\t */\n\tasync getGliders(): Promise<AccountGlidersDTO[]> {\n\t\treturn await this.buildRequest<AccountGlidersDTO[]>(endpoints.account.gliders, {});\n\t}\n\n\t/**\n\t * Get nodes unlocked on the account home instance\n\t *\n\t * @returns Nodes unlocked on the account\n\t */\n\tasync getHomeNodes(): Promise<AccountHomeNodesDTO[]> {\n\t\treturn await this.buildRequest<AccountHomeNodesDTO[]>(endpoints.account.homeNodes, {});\n\t}\n\n\t/**\n\t * Get cats unlocked on the account home instance\n\t *\n\t * @returns Gliders unlocked on the account\n\t */\n\tasync getHomeCats(): Promise<AccountHomeCatsDTO[]> {\n\t\treturn await this.buildRequest<AccountHomeCatsDTO[]>(endpoints.account.homeCats, {});\n\t}\n\n\t/**\n\t * Get the items stored in the account shared inventory\n\t * If null, the slot is empty\n\t *\n\t * @returns Account shared inventory contents\n\t */\n\tasync getSharedInventory(): Promise<Array<AccountInventoryDTO | null>> {\n\t\treturn await this.buildRequest<Array<AccountInventoryDTO | null>>(endpoints.account.sharedInventory, {});\n\t}\n\n\t/**\n\t * Get legendary items stored in the account armory\n\t *\n\t * @returns Legendary armory\n\t */\n\tasync getLegendaryArmory(): Promise<AccountLegendaryArmoryDTO[]> {\n\t\treturn await this.buildRequest<AccountLegendaryArmoryDTO[]>(endpoints.account.legendaryArmory, {});\n\t}\n\n\t/**\n\t * Get account luck\n\t *\n\t * @returns Account luck\n\t */\n\tasync getLuck(): Promise<AccountLuckDTO[] | []> {\n\t\treturn await this.buildRequest<AccountLuckDTO[] | []>(endpoints.account.luck, {});\n\t}\n\n\t/**\n\t * Get mail carriers unlocked on the account\n\t *\n\t * @returns Account mail carriers\n\t */\n\tasync getMailCarriers(): Promise<AccountMailCarriersDTO[]> {\n\t\treturn await this.buildRequest<AccountMailCarriersDTO[]>(endpoints.account.mailCarriers, {});\n\t}\n\n\t/**\n\t * Get map chests opened on this account today\n\t *\n\t * @returns Unlocked map chests\n\t */\n\tasync getMapChests(): Promise<AccountMapChestsDTO[]> {\n\t\treturn await this.buildRequest<AccountMapChestsDTO[]>(endpoints.account.mapChests, {});\n\t}\n\n\t/**\n\t * Get masteries unlocked on the account\n\t *\n\t * @returns Account masteries\n\t */\n\tasync getMasteries(): Promise<AccountMasteriesDTO[] | []> {\n\t\treturn await this.buildRequest<AccountMasteriesDTO[] | []>(endpoints.account.masteries, {});\n\t}\n\n\t/**\n\t * Get account mastery points\n\t *\n\t * @returns account mastery points\n\t */\n\tasync getMasteryPoints(): Promise<AccountMasteryPointsDTO> {\n\t\treturn await this.buildRequest<AccountMasteryPointsDTO>(endpoints.account.masteryPoints, {});\n\t}\n\n\t/**\n\t * Get materials in the account vault\n\t *\n\t * @returns Account materials\n\t */\n\tasync getMaterials(): Promise<AccountMaterialsDTO[]> {\n\t\treturn await this.buildRequest<AccountMaterialsDTO[]>(endpoints.account.materials, {});\n\t}\n\n\t/**\n\t * Get minis unlocked on the account\n\t *\n\t * @returns Account minis\n\t */\n\tasync getAccountMinis(): Promise<AccountMinisDTO> {\n\t\treturn await this.buildRequest<AccountMinisDTO>(endpoints.account.minis, {});\n\t}\n\n\t/**\n\t * Get account mount skins\n\t *\n\t * @returns Account mount skins\n\t */\n\tasync getMountSkins(): Promise<AccountMountSkinsDTO[]> {\n\t\treturn await this.buildRequest<AccountMountSkinsDTO[]>(endpoints.account.mountsSkins, {});\n\t}\n\n\t/**\n\t * Get account mount skins\n\t *\n\t * @returns Account mount types\n\t */\n\tasync getMountTypes(): Promise<AccountMountTypesDTO[]> {\n\t\treturn await this.buildRequest<AccountMountTypesDTO[]>(endpoints.account.mountsTypes, {});\n\t}\n\n\t/**\n\t * Get novelties unlocked on the account\n\t *\n\t * @returns Account novelties\n\t */\n\tasync getNovelties(): Promise<AccountNoveltiesDTO[]> {\n\t\treturn await this.buildRequest<AccountNoveltiesDTO[]>(endpoints.account.novelties, {});\n\t}\n\n\t/**\n\t * Get outfits unlocked on the account\n\t *\n\t * @returns Account outfits\n\t */\n\tasync getOutfits(): Promise<AccountOutfitsDTO[]> {\n\t\treturn await this.buildRequest<AccountOutfitsDTO[]>(endpoints.account.outfits, {});\n\t}\n\n\t/**\n\t * Get account progression\n\t *\n\t * @returns Account progression\n\t */\n\tasync getProgression(): Promise<AccountProgressionDTO[]> {\n\t\treturn await this.buildRequest<AccountProgressionDTO[]>(endpoints.account.progression, {});\n\t}\n\n\t/**\n\t * Get pvp heroes unlocked on the account\n\t *\n\t * @returns Account Pvp heroes\n\t */\n\tasync getPvpHeroes(): Promise<AccountPvpHeroesDTO[]> {\n\t\treturn await this.buildRequest<AccountPvpHeroesDTO[]>(endpoints.account.pvpHeroes, {});\n\t}\n\n\t/**\n\t * Get weekly raid boss progression\n\t *\n\t * @returns Account raid boss progression\n\t */\n\tasync getRaids(): Promise<AccountRaidsDTO[]> {\n\t\treturn await this.buildRequest<AccountRaidsDTO[]>(endpoints.account.raids, {});\n\t}\n\n\t/**\n\t * Get recipes unlocked on the account\n\t *\n\t * @returns Account recipes\n\t */\n\tasync getRecipes(): Promise<AccountRecipesDTO[]> {\n\t\treturn await this.buildRequest<AccountRecipesDTO[]>(endpoints.account.recipes, {});\n\t}\n\n\t/**\n\t * Get skins unlocked on the account\n\t *\n\t * @returns Account skins\n\t */\n\tasync getSkins(): Promise<AccountSkinsDTO[]> {\n\t\treturn await this.buildRequest<AccountSkinsDTO[]>(endpoints.account.skins, {});\n\t}\n\n\t/**\n\t * Get titles unlocked on the account\n\t *\n\t * @returns Account titles\n\t */\n\tasync getTitles(): Promise<AccountTitlesDTO[]> {\n\t\treturn await this.buildRequest<AccountTitlesDTO[]>(endpoints.account.titles, {});\n\t}\n\n\t/**\n\t * Get world bosses killed today\n\t */\n\tasync getWorldBosses(): Promise<AccountWorldBossesDTO[]> {\n\t\treturn await this.buildRequest<AccountWorldBossesDTO[]>(endpoints.account.worldBosses, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport type {\n\tAchievementCategoriesByIdDTO,\n\tAchievementCategoriesDTO,\n\tAchievementGroupsByIdDTO,\n\tAchievementGroupsDTO,\n\tAchievementsDailyDTO\n} from '../../models/';\n\n/**\n * /v2/achievements api\n */\nexport class AchievementsApi extends ApiBase {\n\t/**\n\t * Get all achievement categories\n\t */\n\tasync getCategoryIds(): Promise<AchievementCategoriesDTO[]> {\n\t\treturn await this.buildRequest<AchievementCategoriesDTO[]>(endpoints.achievements.categoryIds, {});\n\t}\n\n\t/**\n\t * Get achievement category details.\n\t *\n\t * @param ids - (optional) List of category ids\n\t * @param schemaVersion - Schema version\n\t */\n\tasync getCategories(ids?: number[], schemaVersion?: string): Promise<AchievementCategoriesByIdDTO[]> {\n\t\treturn await this.buildRequest<AchievementCategoriesByIdDTO[]>(\n\t\t\tendpoints.achievements.categories,\n\t\t\t{ ids: ids ?? 'all' },\n\t\t\tschemaVersion\n\t\t);\n\t}\n\n\t/**\n\t * Get daily achievements.\n\t */\n\tasync getDailyAchievements(): Promise<AchievementsDailyDTO> {\n\t\treturn await this.buildRequest<AchievementsDailyDTO>(endpoints.achievements.daily, {});\n\t}\n\n\t/**\n\t * Get daily achievements for tomorrow.\n\t */\n\tasync getDailyAchievementsTomorrow(): Promise<AchievementsDailyDTO> {\n\t\treturn await this.buildRequest<AchievementsDailyDTO>(endpoints.achievements.dailyTomorrow, {});\n\t}\n\n\t/**\n\t * Get achievement groups.\n\t */\n\tasync getGroups(): Promise<AchievementGroupsDTO[]> {\n\t\treturn await this.buildRequest<AchievementGroupsDTO[]>(endpoints.achievements.groups, { id: '' });\n\t}\n\n\t/**\n\t * Get achievement group by id.\n\t *\n\t * @param id - Group id\n\t */\n\tasync getGroupById(id: string): Promise<AchievementGroupsByIdDTO> {\n\t\treturn await this.buildRequest<AchievementGroupsByIdDTO>(endpoints.achievements.groups, { id });\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { ApiGenericError } from '../../base/errors';\nimport { logger } from '../../base/logger';\nimport { endpoints } from '../endpoints';\nimport type {\n\tCharacterBackstoryDTO,\n\tCharacterBuildTabsDTO,\n\tCharacterCoreDTO,\n\tCharacterCraftingDTO,\n\tCharacterEquipmentDTO,\n\tCharacterEquipmentTabsDTO,\n\tCharacterHeroPointsDTO,\n\tCharacterInventoryDTO,\n\tCharacterQuestsDTO,\n\tCharacterRecipesDTO,\n\tCharactersDTO,\n\tCharacterSkillsDTO,\n\tCharacterSuperAdventureBoxDTO,\n\tCharacterSpecializationsDTO,\n\tCharacterTrainingDTO\n} from '../../models';\n\n/**\n * /v2/characters Api\n */\nexport class CharactersApi extends ApiBase {\n\t/**\n\t * Get names of all characters on the account\n\t *\n\t * @returns Character names\n\t */\n\tasync get(): Promise<CharactersDTO[]> {\n\t\treturn await this.buildRequest<CharactersDTO[]>(endpoints.characters.base, {});\n\t}\n\n\t/**\n\t * Get backstory of a selected character\n\t *\n\t * @param id - Character name\n\t * @returns Character backstory\n\t */\n\tasync getBackstory(id: string): Promise<CharacterBackstoryDTO> {\n\t\treturn await this.buildRequest<CharacterBackstoryDTO>(endpoints.characters.backstory, { id });\n\t}\n\n\t/**\n\t * Get build tabs of a selected character\n\t *\n\t * @param id - Character name\n\t * @param tabs - Optional tab index. If the index is invalid, all tabs will be returned\n\t * @returns Character build tabs\n\t */\n\tasync getBuildTabs(id: string, tabs?: number[]): Promise<CharacterBuildTabsDTO[]> {\n\t\tif (tabs) {\n\t\t\ttabs.forEach((tab: number) => {\n\t\t\t\tif (tab < 1 || tab > 8) {\n\t\t\t\t\tlogger.warn('Build tab ids must be between 1 and 8');\n\t\t\t\t\tthrow new ApiGenericError();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn await this.buildRequest<CharacterBuildTabsDTO[]>(endpoints.characters.buildTabs, {\n\t\t\tid,\n\t\t\ttabs: tabs ?? 'all'\n\t\t});\n\t}\n\n\t/**\n\t * Returns core information about a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Core character information\n\t */\n\tasync getCore(id: string): Promise<CharacterCoreDTO> {\n\t\treturn await this.buildRequest<CharacterCoreDTO>(endpoints.characters.core, { id });\n\t}\n\n\t/**\n\t * Returns crafting disciplines available to a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Character crafting disciplines\n\t */\n\tasync getCrafting(id: string): Promise<CharacterCraftingDTO> {\n\t\treturn await this.buildRequest<CharacterCraftingDTO>(endpoints.characters.crafting, { id });\n\t}\n\n\t/**\n\t * Returns equipment of a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @param schemaVersion - Schema version\n\t * @returns Character equipment\n\t */\n\tasync getEquipment(id: string, schemaVersion?: string): Promise<CharacterEquipmentDTO> {\n\t\treturn await this.buildRequest<CharacterEquipmentDTO>(endpoints.characters.equipment, { id }, schemaVersion);\n\t}\n\n\t/**\n\t * Returns equipment tabs of a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @param tabs - Optional equipment tab number.\n\t */\n\tasync getEquipmentTabs(id: string, tabs?: number[]): Promise<CharacterEquipmentTabsDTO[]> {\n\t\tif (tabs) {\n\t\t\ttabs.forEach((tab: number) => {\n\t\t\t\tif (tab < 1 || tab > 8) {\n\t\t\t\t\tlogger.warn('Equipment tab ids must be between 1 and 8');\n\t\t\t\t\tthrow new ApiGenericError();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn await this.buildRequest<CharacterEquipmentTabsDTO[]>(endpoints.characters.equipmentTabsById, {\n\t\t\tid,\n\t\t\ttabs: tabs ?? 'all'\n\t\t});\n\t}\n\n\t/**\n\t * Returns the active equipment tab of a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t */\n\tasync getActiveEquipmentTab(id: string): Promise<CharacterEquipmentTabsDTO> {\n\t\treturn await this.buildRequest<CharacterEquipmentTabsDTO>(endpoints.characters.equipmentTabActive, { id });\n\t}\n\n\t/**\n\t * Returns hero points obtained by a character attached to a specific account.\n\t * NOTE: This api does not currently return a lot of hero point values.\n\t * Check the list here for details https://wiki.guildwars2.com/wiki/API:2/characters/:id/heropoints#Notes\n\t *\n\t * @param id - Character name\n\t * @returns Character hero points\n\t */\n\tasync getHeroPoints(id: string): Promise<CharacterHeroPointsDTO[]> {\n\t\treturn await this.buildRequest<CharacterHeroPointsDTO[]>(endpoints.characters.heroPoints, { id });\n\t}\n\n\t/**\n\t * Returns inventory of a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Character inventory\n\t */\n\tasync getInventory(id: string): Promise<CharacterInventoryDTO> {\n\t\treturn await this.buildRequest<CharacterInventoryDTO>(endpoints.characters.inventory, { id });\n\t}\n\n\t/**\n\t * Returns quests that are selected by a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Character quest selections\n\t */\n\tasync getQuests(id: string): Promise<CharacterQuestsDTO[]> {\n\t\treturn await this.buildRequest<CharacterQuestsDTO[]>(endpoints.characters.quests, { id });\n\t}\n\n\t/**\n\t * Returns recipes that the given character can use.\n\t *\n\t * @param id - Character name\n\t * @returns Character recipes\n\t */\n\tasync getRecipes(id: string): Promise<CharacterRecipesDTO> {\n\t\treturn await this.buildRequest<CharacterRecipesDTO>(endpoints.characters.recipes, { id });\n\t}\n\n\t/**\n\t * Returns information about Super Adventure Box on a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Character SAB\n\t */\n\tasync getSAB(id: string): Promise<CharacterSuperAdventureBoxDTO> {\n\t\treturn await this.buildRequest<CharacterSuperAdventureBoxDTO>(endpoints.characters.sab, { id });\n\t}\n\n\t/**\n\t * Returns skill information of a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Character skills\n\t */\n\tasync getSkills(id: string): Promise<CharacterSkillsDTO> {\n\t\treturn await this.buildRequest<CharacterSkillsDTO>(endpoints.characters.skills, { id });\n\t}\n\n\t/**\n\t * Returns specialization information of a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Character specialization information\n\t */\n\tasync getSpecializations(id: string): Promise<CharacterSpecializationsDTO> {\n\t\treturn await this.buildRequest<CharacterSpecializationsDTO>(endpoints.characters.specializations, {\n\t\t\tid\n\t\t});\n\t}\n\n\t/**\n\t * Returns training details of a character attached to a specific account\n\t *\n\t * @param id - Character name\n\t * @returns Character training information\n\t */\n\tasync getTraining(id: string): Promise<CharacterTrainingDTO> {\n\t\treturn await this.buildRequest<CharacterTrainingDTO>(endpoints.characters.training, { id });\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport type {\n\tCommerceDeliveryDTO,\n\tCommerceExchangeDTO,\n\tCommerceListingsDTO,\n\tCommercePricesDTO,\n\tCommerceTransactionDTO\n} from '../../models';\n\n/**\n * /v2/commerce Api\n */\nexport class CommerceApi extends ApiBase {\n\t/**\n\t * Get deliveries from Black Lion Trading Company\n\t *\n\t * @returns Deliveries awaiting pickup\n\t */\n\tasync getDeliveries(): Promise<CommerceDeliveryDTO> {\n\t\treturn await this.buildRequest<CommerceDeliveryDTO>(endpoints.commerce.delivery, {});\n\t}\n\n\t/**\n\t * Get the current coins to gems exchange rate.\n\t *\n\t * @param quantity - Quantity of coins to be exchanged (in copper coins)\n\t * @returns Coins to gems exchange rate\n\t */\n\tasync getExchangeCoins(quantity: number): Promise<CommerceExchangeDTO> {\n\t\treturn await this.buildRequest<CommerceExchangeDTO>(endpoints.commerce.exchangeCoins, {\n\t\t\tquantity\n\t\t});\n\t}\n\n\t/**\n\t * Get the current gem to coin exchange rate.\n\t *\n\t * @param quantity - Quantity of gems to be exhanged\n\t * @returns Gems to coins exchnage rate\n\t */\n\tasync getExchangeGems(quantity: number): Promise<CommerceExchangeDTO> {\n\t\treturn await this.buildRequest<CommerceExchangeDTO>(endpoints.commerce.exchangeGems, { quantity });\n\t}\n\n\t/**\n\t * Get current buy and sell listings from the trading post.\n\t *\n\t * TODO: Functionality to return a complete list of every listing is currently unsupported\n\t *\n\t * @param ids - Listing ids\n\t * @returns Buy and sell listings from the trading post\n\t */\n\tasync getListings(ids: number[]): Promise<CommerceListingsDTO[]> {\n\t\treturn await this.buildRequest<CommerceListingsDTO[]>(endpoints.commerce.listings, { ids });\n\t}\n\n\t/**\n\t * Get current aggregated buy and sell listing information from the trading post.\n\t *\n\t * TODO: Functionality to return a complete list of every listing is currently unsupported\n\t *\n\t * @param ids - Item ids\n\t * @returns Buy and sell details from the trading point\n\t */\n\tasync getPrices(ids: number[]): Promise<CommercePricesDTO[]> {\n\t\treturn await this.buildRequest<CommercePricesDTO[]>(endpoints.commerce.prices, { ids });\n\t}\n\n\t/**\n\t * Get current or past transactions of the account.\n\t *\n\t * Results are cached for 5 minutes.\n\t *\n\t * @param status - Current or historical transactions\n\t * @param type - Buy or sell transactions\n\t * @returns Transactions\n\t */\n\tasync getTransactions(status: 'current' | 'history', type: 'buys' | 'sells'): Promise<CommerceTransactionDTO[]> {\n\t\tif (status === 'current') {\n\t\t\tif (type === 'buys') {\n\t\t\t\treturn await this.buildRequest<CommerceTransactionDTO[]>(\n\t\t\t\t\tendpoints.commerce.transactionsCurrentBuys,\n\t\t\t\t\t{}\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await this.buildRequest<CommerceTransactionDTO[]>(endpoints.commerce.transactionsCurrentSells, {});\n\t\t}\n\t\tif (type === 'buys') {\n\t\t\treturn await this.buildRequest<CommerceTransactionDTO[]>(endpoints.commerce.transactionsHistoryBuys, {});\n\t\t}\n\t\treturn await this.buildRequest<CommerceTransactionDTO[]>(endpoints.commerce.transactionsHistorySells, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport type { EmblemDTO } from '../../models';\n\n/**\n * /v2/emblem Api\n */\nexport class EmblemApi extends ApiBase {\n\t/**\n\t * Get Emblem by type and id\n\t *\n\t * @param type - Background or foreground\n\t * @param ids - Ids of the requested emblem foregrounds\n\t * @returns Emblem foreground information\n\t */\n\tasync getEmblem(type: 'foregrounds' | 'backgrounds', ids?: number[]): Promise<EmblemDTO[]> {\n\t\treturn await this.buildRequest<EmblemDTO[]>(endpoints.emblem, {\n\t\t\ttype,\n\t\t\tids: ids ?? 'all'\n\t\t});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport {\n\ttype GuildDTO,\n\ttype GuildLogDTO,\n\ttype GuildMembersDTO,\n\ttype GuildPermissionsDTO,\n\ttype GuildRanksDTO,\n\ttype GuildSearchDTO,\n\ttype GuildStashDTO,\n\ttype GuildStorageDTO,\n\ttype GuildTeamsDTO,\n\ttype GuildTreasuryDTO,\n\ttype GuildUpgradesDTO,\n\ttype GuildUpgradesInfoDTO\n} from '../../models';\n\n/**\n * /v2/guild Api\n */\nexport class GuildApi extends ApiBase {\n\t/**\n\t * Returns core details about a given guild.\n\t * The end point will include more or less fields depend on whether\n\t * an API Key of a Leader or Member of the Guild with the guilds scope\n\t * is included in the Request.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync get(id: string): Promise<GuildDTO> {\n\t\treturn await this.buildRequest<GuildDTO>(endpoints.guild.core, { id });\n\t}\n\n\t/**\n\t * Returns information about certain events in a guild's log.\n\t * The endpoint requires the scope guilds, and will only work if\n\t * the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t * @param since - Starting point for the log, by log id\n\t */\n\tasync getLog(id: string, since?: number): Promise<GuildLogDTO[]> {\n\t\treturn await this.buildRequest<GuildLogDTO[]>(endpoints.guild.log, { id, since: since ?? 0 });\n\t}\n\n\t/**\n\t * Returns information about the members of a specified guild.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getMembers(id: string): Promise<GuildMembersDTO[]> {\n\t\treturn await this.buildRequest<GuildMembersDTO[]>(endpoints.guild.members, { id });\n\t}\n\n\t/**\n\t * Returns information about the ranks of a specified guild.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getRanks(id: string): Promise<GuildRanksDTO[]> {\n\t\treturn await this.buildRequest<GuildRanksDTO[]>(endpoints.guild.ranks, { id });\n\t}\n\n\t/**\n\t * Returns information about the items in a guild's vault.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getStash(id: string): Promise<GuildStashDTO[]> {\n\t\treturn await this.buildRequest<GuildStashDTO[]>(endpoints.guild.stash, { id });\n\t}\n\n\t/**\n\t * Returns information about the items in a guild's storage.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getStorage(id: string): Promise<GuildStorageDTO[]> {\n\t\treturn await this.buildRequest<GuildStorageDTO[]>(endpoints.guild.storage, { id });\n\t}\n\n\t/**\n\t * Returns information about the teams in a guild.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getTeams(id: string): Promise<GuildTeamsDTO[]> {\n\t\treturn await this.buildRequest<GuildTeamsDTO[]>(endpoints.guild.teams, { id });\n\t}\n\n\t/**\n\t * Returns information about the items in a guild's treasury.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getTreasury(id: string): Promise<GuildTreasuryDTO[]> {\n\t\treturn await this.buildRequest<GuildTreasuryDTO[]>(endpoints.guild.treasury, { id });\n\t}\n\n\t/**\n\t * Returns information about the guild's upgrades.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getUpgrades(id: string): Promise<GuildUpgradesDTO> {\n\t\treturn await this.buildRequest<GuildUpgradesDTO>(endpoints.guild.upgrades, { id });\n\t}\n\n\t/**\n\t * Returns information about all guild permissions.\n\t */\n\tasync getPermissions(): Promise<GuildPermissionsDTO[]> {\n\t\treturn await this.buildRequest<GuildPermissionsDTO[]>(endpoints.guild.permissions, {});\n\t}\n\n\t/**\n\t * Returns information on guild ids to be used for other API queries.\n\t *\n\t * @param name - Guild name\n\t */\n\tasync find(name: string): Promise<GuildSearchDTO> {\n\t\treturn await this.buildRequest<GuildSearchDTO>(endpoints.guild.search, { name });\n\t}\n\n\t/**\n\t * Returns information about all available Guild Hall upgrades, including scribe decorations.\n\t *\n\t * @param ids - Guild upgrade ids\n\t */\n\tasync upgrades(ids: number[]): Promise<GuildUpgradesInfoDTO[]> {\n\t\treturn await this.buildRequest<GuildUpgradesInfoDTO[]>(endpoints.guild.upgradesInfo, { ids });\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { type HomeCatsDTO, type HomeNodesDTO } from '../../models';\nimport { endpoints } from '../endpoints';\n\n/**\n * /v2/home Api\n */\nexport class HomeApi extends ApiBase {\n\t/**\n\t * Returns information about cats.\n\t * Identical to /v2/cats\n\t *\n\t * @param ids - Cat ids\n\t */\n\tasync getCats(ids?: number[]): Promise<HomeCatsDTO[]> {\n\t\treturn await this.buildRequest<HomeCatsDTO[]>(endpoints.home.cats, { ids: ids ?? 'all' });\n\t}\n\n\t/**\n\t * Returns a list of all currently available home instance nodes.\n\t * Can be resolved against /v2/account/home/nodes to identify an account's unlocked nodes.\n\t *\n\t * @param ids - Node ids\n\t */\n\tasync getNodes(ids?: string[]): Promise<HomeNodesDTO[]> {\n\t\treturn await this.buildRequest<HomeNodesDTO[]>(endpoints.home.nodes, { ids: ids ?? 'all' });\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport type { ColorsDTO } from '../../models';\n\n/**\n * /v2/colors Api\n */\nexport class ColorsApi extends ApiBase {\n\t/**\n\t * Returns all dye colors in the game, including localized names and their color component information.\n\t *\n\t * @param ids - Ids of the requested colors, or \"all\"\n\t * @returns Color ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<ColorsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | ColorsDTO[]> {\n\t\tif (ids) return await this.buildRequest<ColorsDTO[]>(endpoints.colors.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.colors.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport type {\n\tContinentDTO,\n\tContinentRegionDTO,\n\tContinentsDTO,\n\tContinentsFloorsDTO,\n\tContinentsMapDTO\n} from '../../models';\n\n/**\n * /v2/continents api\n */\nexport class ContinentsApi extends ApiBase {\n\t/**\n\t * Get all continent ids\n\t *\n\t * @returns Continent ids\n\t */\n\tasync getAllContinents(): Promise<ContinentDTO[]> {\n\t\treturn await this.buildRequest<ContinentDTO[]>(endpoints.continents.core, {});\n\t}\n\n\t/**\n\t * Get continents by id\n\t *\n\t * @param continents Continent ids. If not present, returns all continents\n\t * @returns Continent details\n\t */\n\tasync getContinents(continents?: number[]): Promise<ContinentsDTO[]> {\n\t\treturn await this.buildRequest<ContinentsDTO[]>(endpoints.continents.continents, {\n\t\t\tcontinents: continents ?? 'all'\n\t\t});\n\t}\n\n\t/**\n\t * Get continent floors\n\t *\n\t * @param continent Continent id\n\t * @param floors Floor id\n\t * @returns Continent floor details\n\t */\n\tasync getContinentFloors(continent: number, floors?: number[]): Promise<ContinentsFloorsDTO[]> {\n\t\treturn await this.buildRequest<ContinentsFloorsDTO[]>(endpoints.continents.floors, {\n\t\t\tcontinent,\n\t\t\tfloors: floors ?? 'all'\n\t\t});\n\t}\n\n\t/**\n\t * Get regions in a continent floor\n\t *\n\t * @param continent Continent id\n\t * @param floor Floor id\n\t * @param regions Region ids\n\t * @returns Regions in a continent floor\n\t */\n\tasync getContinentFloorRegions(\n\t\tcontinent: number,\n\t\tfloor: number,\n\t\tregions?: number[]\n\t): Promise<ContinentRegionDTO[]> {\n\t\treturn await this.buildRequest<ContinentRegionDTO[]>(endpoints.continents.regions, {\n\t\t\tcontinent,\n\t\t\tfloor,\n\t\t\tregions: regions ?? 'all'\n\t\t});\n\t}\n\n\t/**\n\t * Get maps in a continent region\n\t *\n\t * @param continent Continent id\n\t * @param floor Floor id\n\t * @param region Region id\n\t * @param maps Map ids\n\t * @returns Maps in a continent region\n\t */\n\tasync getContinentFloorRegionMaps(\n\t\tcontinent: number,\n\t\tfloor: number,\n\t\tregion: number,\n\t\tmaps?: number[]\n\t): Promise<ContinentsMapDTO[]> {\n\t\t// Return requested maps with broad details\n\t\treturn await this.buildRequest<ContinentsMapDTO[]>(endpoints.continents.maps, {\n\t\t\tcontinent,\n\t\t\tfloor,\n\t\t\tregion,\n\t\t\tmaps: maps ?? 'all'\n\t\t});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type CurrenciesDTO } from '../../models';\n\n/**\n * /v2/currencies Api\n */\nexport class CurrenciesApi extends ApiBase {\n\t/**\n\t * Get the list of the currencies contained in the account wallet.\n\t *\n\t * @param ids Currency ids, or \"all\"\n\t * @returns In-game currency ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<CurrenciesDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | CurrenciesDTO[]> {\n\t\tif (ids) return await this.buildRequest<CurrenciesDTO[]>(endpoints.currencies.byId, { ids });\n\t\treturn await this.buildRequest<CurrenciesDTO[]>(endpoints.currencies.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type EmotesDTO } from '../../models';\n\n/**\n * /v2/emotes Api\n */\nexport class EmotesApi extends ApiBase {\n\t/**\n\t * Get information about unlockable emotes.\n\t *\n\t * @param ids Emote names, or \"all\"\n\t * @returns Emote names, or details\n\t */\n\tasync get(): Promise<string[]>;\n\tasync get(ids: string[] | 'all'): Promise<EmotesDTO[]>;\n\tasync get(ids?: string[] | 'all'): Promise<string[] | EmotesDTO[]> {\n\t\tif (ids && Array.isArray(ids)) {\n\t\t\t// For some reason, emote names are case-sensitive, and only some of them are capitalized =_=\n\t\t\tids = ids.map((id: string) => {\n\t\t\t\tif (['shiverplus', 'stretch'].includes(id.toLocaleLowerCase()))\n\t\t\t\t\treturn id[0]!.toLocaleUpperCase() + id.substring(1);\n\t\t\t\treturn id.toLocaleLowerCase();\n\t\t\t});\n\t\t\treturn await this.buildRequest<EmotesDTO[]>(endpoints.emotes.byId, { ids });\n\t\t}\n\t\treturn await this.buildRequest<string[]>(endpoints.emotes.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { type GlidersDTO } from '../../models';\nimport { endpoints } from '../endpoints';\n\n/**\n * /v2/gliders Api.\n * TODO: Pagination\n */\nexport class GlidersApi extends ApiBase {\n\t/**\n\t * Returns information about gliders that are available in-game.\n\t *\n\t * @param ids (optional) Glider ids. If not present, all will be requested\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<GlidersDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | GlidersDTO[]> {\n\t\tif (ids) return await this.buildRequest<GlidersDTO[]>(endpoints.gliders.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.gliders.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type ItemsDTO } from '../../models';\n\n/**\n * /v2/items Api\n */\nexport class ItemsApi extends ApiBase {\n\t/**\n\t * Returns information about items that were discovered by players in the game.\n\t *\n\t * @param ids - Item ids, of \"all\"\n\t * @returns Item ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<ItemsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | ItemsDTO[]> {\n\t\tif (ids) return await this.buildRequest<ItemsDTO[]>(endpoints.items.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.items.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type ItemStatsDTO } from '../../models';\n\n/**\n * /v2/itemstats Api\n */\nexport class ItemStatsApi extends ApiBase {\n\t/**\n\t * Returns information about itemstats for items that are in the game.\n\t *\n\t * @param ids - Itemstat ids, or \"all\"\n\t * @returns Item stats, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<ItemStatsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | ItemStatsDTO[]> {\n\t\tif (ids) return await this.buildRequest<ItemStatsDTO[]>(endpoints.itemstats.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.itemstats.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type LegendaryArmoryDTO } from '../../models';\n\n/**\n * /v2/legendaryarmory Api\n */\nexport class LegendaryArmoryApi extends ApiBase {\n\t/**\n\t * Returns information about Legendary Armory items that are available in-game\n\t *\n\t * @param ids - Legendary armory item ids\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<LegendaryArmoryDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | LegendaryArmoryDTO[]> {\n\t\tif (ids) return await this.buildRequest<LegendaryArmoryDTO[]>(endpoints.legendaryArmory.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.legendaryArmory.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type LegendsDTO } from '../../models';\n\n/**\n * /v2/legends Api\n */\nexport class LegendsApi extends ApiBase {\n\t/**\n\t * Returns information about the Revenant Legends that are in the game.\n\t * TODO: Implement schema choice.\n\t *\n\t * @param ids Legend ids, or \"all\"\n\t * @returns Legend ids, or details\n\t */\n\tasync get(): Promise<string[]>;\n\tasync get(ids: string[] | 'all'): Promise<LegendsDTO[]>;\n\tasync get(ids?: string[] | 'all'): Promise<string[] | LegendsDTO[]> {\n\t\tif (ids) return await this.buildRequest<LegendsDTO[]>(endpoints.legends.byId, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.legends.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MailCarriersDTO } from '../../models';\n\n/**\n * /v2/mailcarriers Api\n */\nexport class MailCarriersApi extends ApiBase {\n\t/**\n\t * Returns information about the mail carriers that are in the game.\n\t *\n\t * @param ids Map carrier ids, or \"all\"\n\t * @returns Map carrier ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<MailCarriersDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | MailCarriersDTO[]> {\n\t\tif (ids) return await this.buildRequest<MailCarriersDTO[]>(endpoints.mailCarriers.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.mailCarriers.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MapChestsDTO } from '../../models';\n\n/**\n * /v2/mapchests Api\n */\nexport class MapChestsApi extends ApiBase {\n\tasync get(): Promise<MapChestsDTO> {\n\t\t/**\n\t\t * Returns information about Hero's Choice Chests that can be be acquired once a day in-game.\n\t\t */\n\t\treturn await this.buildRequest<MapChestsDTO>(endpoints.mapChests, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MapsDTO } from '../../models';\n\n/**\n * /v2/maps Api\n *\n * NOTE: This endpoint is frequently out of sync.\n * Visit https://wiki.guildwars2.com/wiki/API:2/maps for more info\n */\nexport class MapsApi extends ApiBase {\n\t/**\n\t * Returns details about maps in the game, including details about\n\t * floor and translation data on how to translate between world coordinates and map coordinates.\n\t *\n\t * @param ids Map ids, la \"all\"\n\t * @returns Map details, or map ids\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<MapsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | MapsDTO[]> {\n\t\tif (ids) return await this.buildRequest<MapsDTO[]>(endpoints.maps.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.maps.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MasteriesDTO } from '../../models';\n\n/**\n * /v2/masteries Api\n * NOTE: This endpoint is known to have missing or incomplete data\n */\nexport class MasteriesApi extends ApiBase {\n\t/**\n\t * Returns information about masteries that are available in-game.\n\t *\n\t * @param ids Mastery ids\n\t * @returns Mastery details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<MasteriesDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | MasteriesDTO[]> {\n\t\tif (ids) return await this.buildRequest<MasteriesDTO[]>(endpoints.masteries.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.masteries.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MaterialsDTO } from '../../models';\n\n/**\n * /v2/materials Api.\n */\nexport class MaterialsApi extends ApiBase {\n\t/**\n\t * Returns information about the categories in material storage.\n\t *\n\t * @param ids Material ids, or \"all\"\n\t * @returns Material ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<MaterialsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | MaterialsDTO[]> {\n\t\tif (ids) return await this.buildRequest<MaterialsDTO[]>(endpoints.materials.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.materials.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MinisDTO } from '../../models';\n\n/**\n * /v2/minis Api\n */\nexport class MinisApi extends ApiBase {\n\t/**\n\t * Returns details about minis in the game.\n\t *\n\t * @param ids Mini ids, or \"all\"\n\t * @returns Mini ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<MinisDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | MinisDTO[]> {\n\t\tif (ids) return await this.buildRequest<MinisDTO[]>(endpoints.minis.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.minis.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MountsTypesDTO, type MountsSkinsDTO } from '../../models';\n\n/**\n * /v2/mounts Api\n * TODO: Pagination\n */\nexport class MountsApi extends ApiBase {\n\t/**\n\t * Returns information about mount skins that are available in-game.\n\t *\n\t * @param ids Mount skin ids, or \"all\"\n\t * @returns Mount skin ids, or details\n\t */\n\tasync getSkins(): Promise<number[]>;\n\tasync getSkins(ids: number[] | 'all'): Promise<MountsSkinsDTO[]>;\n\tasync getSkins(ids?: number[] | 'all'): Promise<number[] | MountsSkinsDTO[]> {\n\t\tif (ids) return await this.buildRequest<MountsSkinsDTO[]>(endpoints.mountsSkins.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.mountsSkins.all, {});\n\t}\n\n\t/**\n\t * Returns information about mount types that are available in-game.\n\t *\n\t * @param ids Mount type ids, or \"all\"\n\t * @returns Mount type ids, or details\n\t */\n\tasync getTypes(): Promise<number[]>;\n\tasync getTypes(ids: number[] | 'all'): Promise<MountsTypesDTO[]>;\n\tasync getTypes(ids?: number[] | 'all'): Promise<number[] | MountsTypesDTO[]> {\n\t\tif (ids) return await this.buildRequest<MountsTypesDTO[]>(endpoints.mountsTypes.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.mountsTypes.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type NoveltiesDTO } from '../../models';\n\n/**\n * /v2/novelties Api\n */\nexport class NoveltiesApi extends ApiBase {\n\t/**\n\t * Returns details about novelties in the game.\n\t *\n\t * @param ids Novelty ids, or \"all\"\n\t * @returns Novelty ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<NoveltiesDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | NoveltiesDTO[]> {\n\t\tif (ids) return await this.buildRequest<NoveltiesDTO[]>(endpoints.novelties.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.novelties.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type OutfitsDTO } from '../../models';\n\n/**\n * /v2/outfits Api\n */\nexport class OutfitsApi extends ApiBase {\n\t/**\n\t * Returns information about the outfits that are in the game.\n\t *\n\t * @param ids Outfit ids, or \"all\"\n\t * @returns Outfit ids, or outfit details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<OutfitsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | OutfitsDTO[]> {\n\t\tif (ids) return await this.buildRequest<OutfitsDTO[]>(endpoints.outfits.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.outfits.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type PetsDTO } from '../../models';\n\n/**\n * /v2/pets Api\n */\nexport class PetsApi extends ApiBase {\n\t/**\n\t * Returns information about the Ranger pets that are in the game.\n\t *\n\t * @param ids - Pet ids, or \"all\"\n\t * @returns Ranger pet ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<PetsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | PetsDTO[]> {\n\t\tif (ids) return await this.buildRequest<PetsDTO[]>(endpoints.pets.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.pets.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type QuaggansDTO } from '../../models';\n\n/**\n * /v2/quaggans Api\n */\nexport class QuaggansApi extends ApiBase {\n\t/**\n\t * Returns quaggan images.\n\t *\n\t * @param ids - List of quaggan ids, or \"all\"\n\t * @returns Quaggan ids, or details\n\t */\n\tasync get(): Promise<string[]>;\n\tasync get(ids: string[] | 'all'): Promise<QuaggansDTO[]>;\n\tasync get(ids?: string[] | 'all'): Promise<string[] | QuaggansDTO[]> {\n\t\tif (ids) return await this.buildRequest<string[]>(endpoints.quaggans.byId, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.quaggans.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type QuestsDTO } from '../../models';\n\n/**\n * /v2/quests Api\n */\nexport class QuestsApi extends ApiBase {\n\t/**\n\t * Returns information about Story Journal missions within the personal story and Living World.\n\t *\n\t * @param ids - Quests ids, or \"all\"\n\t * @returns List of quest ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<QuestsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | QuestsDTO[]> {\n\t\tif (ids) return await this.buildRequest<QuestsDTO[]>(endpoints.quests.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.quests.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type RacesDTO } from '../../models';\n\n/**\n * /v2/races Api\n */\nexport class RacesApi extends ApiBase {\n\t/**\n\t * Returns information on in-game playable races.\n\t *\n\t * @param ids - Race ids, or \"all\"\n\t * @returns List of playable race ids, or details\n\t */\n\tasync get(): Promise<string[]>;\n\tasync get(ids: string[] | 'all'): Promise<RacesDTO[]>;\n\tasync get(ids?: string[] | 'all'): Promise<string[] | RacesDTO[]> {\n\t\tif (ids) return await this.buildRequest<RacesDTO[]>(endpoints.races.byId, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.races.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type RaidsDTO } from '../../models';\n\n/**\n * /v2/raids Api\n */\nexport class RaidsApi extends ApiBase {\n\t/**\n\t * Returns information on in-game raids.\n\t *\n\t * @param ids - Raid ids, or \"all\"\n\t * @returns List of raid ids, or details\n\t */\n\tasync get(): Promise<string[]>;\n\tasync get(ids: string[] | 'all'): Promise<RaidsDTO[]>;\n\tasync get(ids?: string[] | 'all'): Promise<string[] | RaidsDTO[]> {\n\t\tif (ids) return await this.buildRequest<RaidsDTO[]>(endpoints.raids.byId, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.raids.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type RecipesDTO } from '../../models';\n\n/**\n * /v2/recipes Api\n */\nexport class RecipesApi extends ApiBase {\n\t/**\n\t * TODO: Schema management\n\t * NOTE: The Api sometimes returns incorrect item ids in \"output_id\" fields\n\t * Returns information about recipes that were discovered by players in the game.\n\t *\n\t * @param ids - Recipe ids\n\t * @returns Recipe details\n\t */\n\tasync get(ids: number[]): Promise<RecipesDTO[]> {\n\t\treturn await this.buildRequest<RecipesDTO[]>(endpoints.recipes.byId, { ids });\n\t}\n\n\t/**\n\t * Allows searching for recipe.\n\t *\n\t * @param type - Either \"input\" or \"output\"\n\t * @param ids - Item ids to be searched for\n\t * @returns List of item ids where these items are used\n\t */\n\tasync search(type: 'input' | 'output', ids: number[]): Promise<number[]> {\n\t\treturn await this.buildRequest<number[]>(endpoints.recipes.search, { type, ids });\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type SkillsDTO } from '../../models';\n\n/**\n * /v2/skills Api\n */\nexport class SkillsApi extends ApiBase {\n\t/**\n\t * Returns information about skills usable by players in the game.\n\t *\n\t * @param ids - Skill ids\n\t * @returns Complete skill information\n\t */\n\tasync get(ids: number[]): Promise<SkillsDTO[]> {\n\t\treturn await this.buildRequest<SkillsDTO[]>(endpoints.skills, { ids });\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type SkinsDTO } from '../../models';\n\n/**\n * /v2/skins Api\n */\nexport class SkinsApi extends ApiBase {\n\t/**\n\t * Returns information about skins that were discovered by players in the game.\n\t *\n\t * @param ids - List of skin ids, or \"all\"\n\t * @returns List of skin ids, or details.\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<SkinsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | SkinsDTO[]> {\n\t\tif (ids) return await this.buildRequest<SkinsDTO[]>(endpoints.skins.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.skins.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type SpecializationsDTO } from '../../models';\n\n/**\n * /v2/specializations Api\n */\nexport class SpecializationsApi extends ApiBase {\n\t/**\n\t * Returns information on currently released specializations.\n\t *\n\t * @param ids - List of specialization ids, or \"all\"\n\t * @returns List of specialization ids, or details.\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<SpecializationsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | SpecializationsDTO[]> {\n\t\tif (ids) return await this.buildRequest<SpecializationsDTO[]>(endpoints.specializations.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.specializations.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type StoriesSeasonsDTO, type StoriesDTO } from '../../models';\n\nexport class StoriesApi extends ApiBase {\n\t/**\n\t * Returns information about the Story Journal stories; including the personal story and Living World.\n\t *\n\t * @param ids - List of story ids, or \"all\"\n\t * @returns List of story ids, or details.\n\t */\n\tasync getStories(): Promise<number[]>;\n\tasync getStories(ids: number[] | 'all'): Promise<StoriesDTO[]>;\n\tasync getStories(ids?: number[] | 'all'): Promise<number[] | StoriesDTO[]> {\n\t\tif (ids) return await this.buildRequest<StoriesDTO[]>(endpoints.stories.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.stories.all, {});\n\t}\n\n\t/**\n\t * Returns information about the Story Journal story seasons; including the personal story and Living World.\n\t *\n\t * @param ids - List of season ids, or \"all\"\n\t * @returns List of season ids, or details.\n\t */\n\tasync getSeasons(): Promise<string[]>;\n\tasync getSeasons(ids: string[] | 'all'): Promise<StoriesSeasonsDTO[]>;\n\tasync getSeasons(ids?: string[] | 'all'): Promise<string[] | StoriesSeasonsDTO[]> {\n\t\tif (ids) return await this.buildRequest<StoriesSeasonsDTO[]>(endpoints.seasons.byId, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.seasons.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { logger } from '../../base/logger';\nimport { endpoints } from '../endpoints';\nimport type { SubtokenDTO } from '../../models';\nimport type { ApiPermissions, EndpointUrls } from '../v2apiUtils';\n\nexport class SubtokenApi extends ApiBase {\n\t/**\n\t * /v2/createsubtoken Api\n\t *\n\t * @param expire Expiration date. Either valid date format, or ISO-8601\n\t * @param permissions Api token permissions\n\t * @param urls Specific /v2/ api urls to allow access to\n\t */\n\tasync get(expire: string, permissions: ApiPermissions[], urls?: EndpointUrls[]): Promise<SubtokenDTO> {\n\t\ttry {\n\t\t\texpire = new Date(expire).toISOString();\n\t\t} catch (e: unknown) {\n\t\t\tif (e instanceof RangeError) {\n\t\t\t\tlogger.error('Date must be of valid, or of ISO-8601 format.');\n\t\t\t\tthrow new RangeError();\n\t\t\t}\n\t\t}\n\n\t\tif (urls) {\n\t\t\treturn await this.buildRequest<SubtokenDTO>(endpoints.createSubtoken.url, {\n\t\t\t\texpire,\n\t\t\t\tpermissions,\n\t\t\t\turls\n\t\t\t});\n\t\t}\n\t\treturn await this.buildRequest<SubtokenDTO>(endpoints.createSubtoken.noUrl, {\n\t\t\texpire,\n\t\t\tpermissions\n\t\t});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type TitlesDTO } from '../../models';\n\nexport class TitlesApi extends ApiBase {\n\t/**\n\t * Returns information about the titles that are in the game.\n\t *\n\t * @param ids - List of title ids, or \"all\"\n\t * @returns List of title ids, or details.\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<TitlesDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | TitlesDTO[]> {\n\t\tif (ids) return await this.buildRequest<TitlesDTO[]>(endpoints.titles.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.titles.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type TokenInfoDTO } from '../../models';\n\n/**\n * /v2/tokeninfo Api\n */\nexport class TokenInfoApi extends ApiBase {\n\t/**\n\t * Returns information about the supplied API key.\n\t *\n\t * @returns Token details\n\t */\n\tasync get(): Promise<TokenInfoDTO> {\n\t\treturn await this.buildRequest<TokenInfoDTO>(endpoints.tokenInfo, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type TraitsDTO } from '../../models';\n\n/**\n * /v2/traits Api\n */\nexport class TraitsApi extends ApiBase {\n\t/**\n\t * Returns information about specific traits which are contained within specializations.\n\t *\n\t * @param ids - List of trait ids, or \"all\"\n\t * @returns List of trait ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<TraitsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | TraitsDTO[]> {\n\t\tif (ids) return await this.buildRequest<TraitsDTO[]>(endpoints.traits.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.traits.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\n\n/**\n * /v2/worldbosses Api\n */\nexport class WorldBossesApi extends ApiBase {\n\t/**\n\t * Returns information about scheduled World bosses in Core Tyria that reward boss chests that can be be opened once a day in-game.\n\t *\n\t * @returns List of available world bosses\n\t */\n\tasync get(): Promise<string[]> {\n\t\treturn await this.buildRequest<string[]>(endpoints.worldBosses, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type WorldsDTO } from '../../models';\n\n/**\n * /v2/worlds Api\n */\nexport class WorldsApi extends ApiBase {\n\t/**\n\t * Returns information about the available worlds, or servers.\n\t *\n\t * @param ids - List of realm ids, or \"all\"\n\t * @returns List of realm ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<WorldsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | WorldsDTO[]> {\n\t\tif (ids) return await this.buildRequest<WorldsDTO[]>(endpoints.worlds.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.worlds.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport {\n\ttype GamesDTO,\n\ttype AmuletsDTO,\n\ttype HeroesDTO,\n\ttype RanksDTO,\n\ttype SeasonDTO,\n\ttype SeasonLeaderboardsDTO,\n\ttype StandingsDTO,\n\ttype StatsDTO\n} from '../../models';\n\n/**\n * /v2/pvp Api\n */\nexport class PvPApi extends ApiBase {\n\t/**\n\t * Returns information about the PvP amulets that are in the game.\n\t *\n\t * @param ids - Amulet ids, or \"all\"\n\t * @returns Amulet ids, or details\n\t */\n\tasync getAmulets(): Promise<number[]>;\n\tasync getAmulets(ids: number[] | 'all'): Promise<AmuletsDTO[]>;\n\tasync getAmulets(ids?: number[] | 'all'): Promise<number[] | AmuletsDTO[]> {\n\t\tif (ids) return await this.buildRequest<AmuletsDTO[]>(endpoints.pvp.amuletsById, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.pvp.amuletsAll, {});\n\t}\n\n\t/**\n\t * Returns information about past PvP matches the player has participated in.\n\t *\n\t * @param ids - Game ids, or \"all\"\n\t * @returns Game ids, or details\n\t */\n\tasync getGames(): Promise<string[]>;\n\tasync getGames(ids: string[] | 'all'): Promise<GamesDTO[]>;\n\tasync getGames(ids?: string[] | 'all'): Promise<string[] | GamesDTO[]> {\n\t\tif (ids) return await this.buildRequest<GamesDTO[]>(endpoints.pvp.gamesById, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.pvp.gamesAll, {});\n\t}\n\n\t/**\n\t * Returns information about pvp heroess that are available in-game.\n\t *\n\t * @param ids - Hero ids, or \"all\"\n\t * @returns Hero ids, or details\n\t */\n\tasync getHeroes(): Promise<string[]>;\n\tasync getHeroes(ids: string[] | 'all'): Promise<HeroesDTO[]>;\n\tasync getHeroes(ids?: string[] | 'all'): Promise<string[] | HeroesDTO[]> {\n\t\tif (ids) return await this.buildRequest<HeroesDTO[]>(endpoints.pvp.heroesById, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.pvp.heroesAll, {});\n\t}\n\n\t/**\n\t * Returns information about the available ranks in the Player versus Player game mode.\n\t *\n\t * @param ids - Rank ids, or \"all\"\n\t * @returns Rank ids, or details\n\t */\n\tasync getRanks(): Promise<number[]>;\n\tasync getRanks(ids: number[] | 'all'): Promise<RanksDTO[]>;\n\tasync getRanks(ids?: number[] | 'all'): Promise<number[] | RanksDTO[]> {\n\t\tif (ids) return await this.buildRequest<RanksDTO[]>(endpoints.pvp.ranksById, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.pvp.ranksAll, {});\n\t}\n\n\t/**\n\t * Returns information about League seasons.\n\t *\n\t * @param ids - Season ids, or \"all\"\n\t * @returns Season ids, or details\n\t */\n\tasync getSeasons(): Promise<string[]>;\n\tasync getSeasons(ids: string[] | 'all'): Promise<SeasonDTO[]>;\n\tasync getSeasons(ids?: string[] | 'all'): Promise<string[] | SeasonDTO[]> {\n\t\tif (ids) return await this.buildRequest<SeasonDTO[]>(endpoints.pvp.seasonsById, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.pvp.seasonsAll, {});\n\t}\n\n\t/**\n\t * Returns information about League season leaderboards for either NA or EU.\n\t *\n\t * @param id - PvP season id\n\t * @param type - For season 1-4, legendary or guild type. For season 5+, \"ladder\"\n\t * @param region - EU or NA region\n\t * @returns - Season laderboards\n\t */\n\tasync getLeaderboards(\n\t\tid: string,\n\t\ttype: 'legendary' | 'guild' | 'ladder',\n\t\tregion: 'na' | 'eu'\n\t): Promise<SeasonLeaderboardsDTO[]> {\n\t\treturn await this.buildRequest<SeasonLeaderboardsDTO[]>(endpoints.pvp.leaderboards, { id, type, region });\n\t}\n\n\t/**\n\t * Returns information about player pips.\n\t *\n\t * @returns Information about player's historical pvp standings\n\t */\n\tasync getStandings(): Promise<StandingsDTO[]> {\n\t\treturn await this.buildRequest<StandingsDTO[]>(endpoints.pvp.standings, {});\n\t}\n\n\t/**\n\t * Resource returns information about wins and losses in the account's PvP matches.\n\t *\n\t * @returns Information about player's PvP stats\n\t */\n\tasync getStats(): Promise<StatsDTO> {\n\t\treturn await this.buildRequest<StatsDTO>(endpoints.pvp.stats, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport {\n\ttype WvWMatchesDTO,\n\ttype WvWAbilitiesDTO,\n\ttype WvWMatchesOverviewDTO,\n\ttype WvWMatchesScoresDTO,\n\ttype WvWMatchesStatsDTO,\n\ttype WvWObjectivesDTO,\n\ttype WvWRanksDTO\n} from '../../models';\n\nexport class WorldVsWorldApi extends ApiBase {\n\t/**\n\t * Returns information about the available abilities in the World versus World game mode.\n\t *\n\t * @param ids - List of WvW ability ids\n\t * @returns List of WvW ability ids, or details\n\t */\n\tasync getAbilities(): Promise<number[]>;\n\tasync getAbilities(ids: number[] | 'all'): Promise<WvWAbilitiesDTO[]>;\n\tasync getAbilities(ids?: number[] | 'all'): Promise<number[] | WvWAbilitiesDTO[]> {\n\t\tif (ids) return await this.buildRequest<WvWAbilitiesDTO[]>(endpoints.wvw.abilitiesById, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.wvw.abilities, {});\n\t}\n\n\t/**\n\t * Returns further details about the specified match, including the total score, kills and deaths, and further details for each map.\n\t *\n\t * @param ids - List of match ids, or \"all\"\n\t */\n\tasync getMatches(): Promise<Array<`${number}-${number}`>>;\n\tasync getMatches(ids: Array<`${number}-${number}`> | 'all'): Promise<WvWMatchesDTO[]>;\n\tasync getMatches(\n\t\tids?: Array<`${number}-${number}`> | 'all'\n\t): Promise<Array<`${number}-${number}`> | WvWMatchesDTO[]> {\n\t\tif (ids) {\n\t\t\treturn await this.buildRequest<WvWMatchesDTO[]>(endpoints.wvw.matchesById, { ids });\n\t\t}\n\t\treturn await this.buildRequest<Array<`${number}-${number}`>>(endpoints.wvw.matches, {});\n\t}\n\n\t/**\n\t * Returns further details about the specified match, including the total score, kills and deaths, and further details for each map.\n\t * The same information as getMatches(), however more limited.\n\t *\n\t * @param type - Overview, Scores, or Stats for the matches\n\t * @param world - World id\n\t * @returns Match description\n\t */\n\tasync getMatchesByWorld(\n\t\ttype: 'overview' | 'scores' | 'stats',\n\t\tworld: number\n\t): Promise<WvWMatchesOverviewDTO | WvWMatchesScoresDTO | WvWMatchesStatsDTO> {\n\t\tif (type === 'overview') {\n\t\t\treturn await this.buildRequest<WvWMatchesOverviewDTO>(endpoints.wvw.matchesByWorld, {\n\t\t\t\ttype,\n\t\t\t\tworld\n\t\t\t});\n\t\t}\n\t\tif (type === 'scores') {\n\t\t\treturn await this.buildRequest<WvWMatchesScoresDTO>(endpoints.wvw.matchesByWorld, {\n\t\t\t\ttype,\n\t\t\t\tworld\n\t\t\t});\n\t\t}\n\t\treturn await this.buildRequest<WvWMatchesStatsDTO>(endpoints.wvw.matchesByWorld, {\n\t\t\ttype,\n\t\t\tworld\n\t\t});\n\t}\n\n\t/**\n\t * Returns details about World vs. World objectives such as camps, towers, and keeps.\n\t *\n\t * @param ids - Objective ids, or \"all\"\n\t * @returns List of objective ids, or details\n\t */\n\tasync getObjectives(): Promise<Array<`${number}-${number}`>>;\n\tasync getObjectives(ids: Array<`${number}-${number}`>): Promise<WvWObjectivesDTO[]>;\n\tasync getObjectives(\n\t\tids?: Array<`${number}-${number}`>\n\t): Promise<Array<`${number}-${number}`> | WvWObjectivesDTO[]> {\n\t\tif (ids) return await this.buildRequest<WvWObjectivesDTO[]>(endpoints.wvw.objectivesById, { ids });\n\t\treturn await this.buildRequest<Array<`${number}-${number}`>>(endpoints.wvw.objectives, {});\n\t}\n\n\t/**\n\t * Returns information about the available ranks in the World versus World game mode.\n\t *\n\t * @param ids - List of WvW rank ids, or \"all\"\n\t * @returns List of WvW rank ids, or details\n\t */\n\tasync getRanks(): Promise<number[]>;\n\tasync getRanks(ids: number[] | 'all'): Promise<WvWRanksDTO[]>;\n\tasync getRanks(ids?: number[] | 'all'): Promise<number[] | WvWRanksDTO[]> {\n\t\tif (ids) return await this.buildRequest<WvWRanksDTO[]>(endpoints.wvw.ranksById, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.wvw.ranks, {});\n\t}\n\n\t/**\n\t * Returns details about available World vs. World upgrades for objectives such as camps, towers, and keeps.\n\t *\n\t * @param ids - List of WvW upgrades, or \"all\"\n\t * @returns List of WvW upgrades, or details\n\t */\n\tasync getUpgrades(): Promise<number[]>;\n\tasync getUpgrades(ids: number[] | 'all'): Promise<WvWRanksDTO[]>;\n\tasync getUpgrades(ids?: number[] | 'all'): Promise<number[] | WvWRanksDTO[]> {\n\t\tif (ids) return await this.buildRequest<WvWRanksDTO[]>(endpoints.wvw.ranksById, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.wvw.ranks, {});\n\t}\n}\n","import { ApiBase } from './base/apiBase';\nimport {\n\tAccountApi,\n\tAchievementsApi,\n\tCharactersApi,\n\tColorsApi,\n\tCommerceApi,\n\tContinentsApi,\n\tCurrenciesApi,\n\tEmblemApi,\n\tEmotesApi,\n\tGlidersApi,\n\tGuildApi,\n\tHomeApi,\n\tItemsApi,\n\tItemStatsApi,\n\tLegendaryArmoryApi,\n\tLegendsApi,\n\tMailCarriersApi,\n\tMapChestsApi,\n\tMapsApi,\n\tMasteriesApi,\n\tMaterialsApi,\n\tMinisApi,\n\tMountsApi,\n\tNoveltiesApi,\n\tOutfitsApi,\n\tPetsApi,\n\tPvPApi,\n\tQuaggansApi,\n\tQuestsApi,\n\tRacesApi,\n\tRaidsApi,\n\tRecipesApi,\n\tSkillsApi,\n\tSkinsApi,\n\tSpecializationsApi,\n\tStoriesApi,\n\tSubtokenApi,\n\tTitlesApi,\n\tTokenInfoApi,\n\tTraitsApi,\n\tWorldBossesApi,\n\tWorldsApi,\n\tWorldVsWorldApi\n} from './apis';\n\nexport class GW2Api extends ApiBase {\n\t/**\n\t * /v2/account Api\n\t */\n\treadonly account = new AccountApi(this.getParams());\n\n\t/**\n\t * /v2/achievements Api\n\t */\n\treadonly achievements = new AchievementsApi(this.getParams());\n\n\t/**\n\t * /v2/characters Api\n\t */\n\treadonly characters = new CharactersApi(this.getParams());\n\n\t/**\n\t * /v2/colors Api\n\t */\n\treadonly colors = new ColorsApi(this.getParams());\n\n\t/**\n\t * /v2/commerce Api\n\t */\n\treadonly commerce = new CommerceApi(this.getParams());\n\n\t/**\n\t * /v2/continents Api\n\t */\n\treadonly continents = new ContinentsApi(this.getParams());\n\n\t/**\n\t * /v2/currencies Api\n\t */\n\treadonly currencies = new CurrenciesApi(this.getParams());\n\n\t/**\n\t * /v2/emblem Api\n\t */\n\treadonly emblem = new EmblemApi(this.getParams());\n\n\t/**\n\t * /v2/emotes Api\n\t */\n\treadonly emotes = new EmotesApi(this.getParams());\n\n\t/**\n\t * /v2/gliders Api\n\t */\n\treadonly gliders = new GlidersApi(this.getParams());\n\n\t/**\n\t * /v2/guild Api\n\t */\n\treadonly guild = new GuildApi(this.getParams());\n\n\t/**\n\t * /v2/home Api\n\t */\n\treadonly home = new HomeApi(this.getParams());\n\n\t/**\n\t * /v2/items Api\n\t */\n\treadonly items = new ItemsApi(this.getParams());\n\n\t/**\n\t * /v2/itemstats Api\n\t */\n\treadonly itemstats = new ItemStatsApi(this.getParams());\n\n\t/**\n\t * /v2/legendaryarmory Api\n\t */\n\treadonly legendaryArmory = new LegendaryArmoryApi(this.getParams());\n\n\t/**\n\t * /v2/legends Api\n\t */\n\treadonly legends = new LegendsApi(this.getParams());\n\n\t/**\n\t * /v2/mailcarriers Api\n\t */\n\treadonly mailCarriers = new MailCarriersApi(this.getParams());\n\n\t/**\n\t * /v2/mapchests Api\n\t */\n\treadonly mapChests = new MapChestsApi(this.getParams());\n\n\t/**\n\t * /v2/maps Api\n\t */\n\treadonly maps = new MapsApi(this.getParams());\n\n\t/**\n\t * /v2/masteries Api\n\t */\n\treadonly masteries = new MasteriesApi(this.getParams());\n\n\t/**\n\t * /v2/materials Api\n\t */\n\treadonly materials = new MaterialsApi(this.getParams());\n\n\t/**\n\t * /v2/minis Api\n\t */\n\treadonly minis = new MinisApi(this.getParams());\n\n\t/**\n\t * /v2/mounts Api\n\t */\n\treadonly mounts = new MountsApi(this.getParams());\n\n\t/**\n\t * /v2/novelties Api\n\t */\n\treadonly novelties = new NoveltiesApi(this.getParams());\n\n\t/**\n\t * /v2/outfits Api\n\t */\n\treadonly outfits = new OutfitsApi(this.getParams());\n\n\t/**\n\t * /v2/pets Api\n\t */\n\treadonly pets = new PetsApi(this.getParams());\n\n\t/**\n\t * /v2/pvp Api\n\t */\n\treadonly pvp = new PvPApi(this.getParams());\n\n\t/**\n\t * /v2/quaggans Api\n\t */\n\treadonly quaggans = new QuaggansApi(this.getParams());\n\n\t/**\n\t * /v2/quests Api\n\t */\n\treadonly quests = new QuestsApi(this.getParams());\n\n\t/**\n\t * /v2/races Api\n\t */\n\treadonly races = new RacesApi(this.getParams());\n\n\t/**\n\t * /v2/raids Api\n\t */\n\treadonly raids = new RaidsApi(this.getParams());\n\n\t/**\n\t * /v2/recipes Api\n\t */\n\treadonly recipes = new RecipesApi(this.getParams());\n\n\t/**\n\t * /v2/skills Api\n\t */\n\treadonly skills = new SkillsApi(this.getParams());\n\n\t/**\n\t * /v2/skins Api\n\t */\n\treadonly skins = new SkinsApi(this.getParams());\n\n\t/**\n\t * /v2/specializations Api\n\t */\n\treadonly specializations = new SpecializationsApi(this.getParams());\n\n\t/**\n\t * /v2/stories Api\n\t */\n\treadonly stories = new StoriesApi(this.getParams());\n\n\t/**\n\t * /v2/subtoken Api\n\t */\n\treadonly subtoken = new SubtokenApi(this.getParams());\n\n\t/**\n\t * /v2/titles Api\n\t */\n\treadonly titles = new TitlesApi(this.getParams());\n\n\t/**\n\t * /v2/tokeninfo Api\n\t */\n\treadonly tokenInfo = new TokenInfoApi(this.getParams());\n\n\t/**\n\t * /v2/traits Api\n\t */\n\treadonly traits = new TraitsApi(this.getParams());\n\n\t/**\n\t * /v2/worldbosses Api\n\t */\n\treadonly worldBosses = new WorldBossesApi(this.getParams());\n\n\t/**\n\t * /v2/worlds Api\n\t */\n\treadonly worlds = new WorldsApi(this.getParams());\n\n\t/**\n\t * /v2/wvw Api\n\t */\n\treadonly wvw = new WorldVsWorldApi(this.getParams());\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/base/apiBase.ts","../src/base/apiParams.ts","../src/base/errors/apiNotFoundError.ts","../src/base/errors/apiRetryFailedError.ts","../src/base/errors/apiTokenError.ts","../src/base/errors/apiGenericError.ts","../src/base/errors/apiPermissionsError.ts","../src/base/errors/apiTimeoutError.ts","../src/base/logger.ts","../src/base/requestBase.ts","../src/apis/endpoints.ts","../src/apis/account/account.ts","../src/apis/achievements/achievements.ts","../src/apis/characters/characters.ts","../src/apis/commerce/commerce.ts","../src/apis/emblem/emblem.ts","../src/apis/guild/guild.ts","../src/apis/home/home.ts","../src/apis/misc/colors.ts","../src/apis/misc/continents.ts","../src/apis/misc/currencies.ts","../src/apis/misc/emotes.ts","../src/apis/misc/gliders.ts","../src/apis/misc/items.ts","../src/apis/misc/itemstats.ts","../src/apis/misc/legendaryarmory.ts","../src/apis/misc/legends.ts","../src/apis/misc/mailCarriers.ts","../src/apis/misc/mapChests.ts","../src/apis/misc/maps.ts","../src/apis/misc/masteries.ts","../src/apis/misc/materials.ts","../src/apis/misc/minis.ts","../src/apis/misc/mounts.ts","../src/apis/misc/novelties.ts","../src/apis/misc/outfits.ts","../src/apis/misc/pets.ts","../src/apis/misc/quaggans.ts","../src/apis/misc/quests.ts","../src/apis/misc/races.ts","../src/apis/misc/raids.ts","../src/apis/misc/recipes.ts","../src/apis/misc/skills.ts","../src/apis/misc/skins.ts","../src/apis/misc/specializations.ts","../src/apis/misc/stories.ts","../src/apis/misc/subtoken.ts","../src/apis/misc/titles.ts","../src/apis/misc/tokeninfo.ts","../src/apis/misc/traits.ts","../src/apis/misc/worldbosses.ts","../src/apis/misc/worlds.ts","../src/apis/pvp/pvp.ts","../src/apis/wvw/wvw.ts","../src/api.ts"],"names":["ApiLanguage","LogLevel"],"mappings":"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","sourcesContent":["import { AxiosError, AxiosHeaders, type AxiosResponse, type RawAxiosRequestConfig } from 'axios';\nimport type { Endpoint } from '../apis/endpoints';\nimport { type ApiParams, type UrlParams, ApiLanguage } from './apiParams';\nimport {\n\tApiGenericError,\n\tApiNotFoundError,\n\tApiPermissionsError,\n\tApiRetryFailedError,\n\tApiTimeoutError,\n\tApiTokenError\n} from './errors';\nimport { logger } from './logger';\nimport { enqueueRequest } from './requestBase';\n\n/**\n * Base Api object. Implements anything needed for the requests to all endpoints\n */\nexport class ApiBase {\n\tprivate readonly _baseUrl: string = 'https://api.guildwars2.com';\n\tprivate readonly _apiToken?: string;\n\tprivate readonly _language: ApiLanguage;\n\tprivate readonly _rateLimitRetry: boolean;\n\tprivate readonly _rateLimitRetryAttempts: number;\n\n\tconstructor(apiParams?: ApiParams) {\n\t\t// Set core Api parameters\n\t\tthis._apiToken = apiParams?.token;\n\t\tthis._language = apiParams?.language ?? ApiLanguage.English;\n\n\t\t// Set rate-limiting parameters\n\t\tthis._rateLimitRetry = apiParams?.rateLimit?.retry ?? true;\n\t\tthis._rateLimitRetryAttempts = apiParams?.rateLimit?.retry ? apiParams.rateLimit.attempts : 0;\n\t}\n\n\t/**\n\t * Parameters for the api response, at top level\n\t *\n\t * @returns Api parameters\n\t */\n\tprotected getParams(): ApiParams {\n\t\treturn {\n\t\t\ttoken: this._apiToken,\n\t\t\tlanguage: this._language,\n\t\t\trateLimit: {\n\t\t\t\tretry: this._rateLimitRetry,\n\t\t\t\tattempts: this._rateLimitRetryAttempts\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Generic request builder. Adds a finalized request to the concurrency queue\n\t *\n\t * @param endpoint - API Endpoint\n\t * @param apiParams - Query string\n\t * @param schemaVersion - Schema version\n\t */\n\tprotected async buildRequest<T>(endpoint: Endpoint, apiParams?: UrlParams, schemaVersion?: string): Promise<T> {\n\t\t// Check authentication. Most endpoints will not work without it\n\t\tconst { tokenRequired } = endpoint;\n\n\t\t// Build params for the specific endpoint\n\t\tconst url = this._getApiUrl(endpoint, apiParams ?? {});\n\t\tconst headers = new AxiosHeaders();\n\t\theaders['Accept-Language'] = this._language;\n\t\tif (tokenRequired) {\n\t\t\tif (!this._apiToken) throw new ApiTokenError();\n\t\t\theaders.Authorization = `Bearer ${this._apiToken}`;\n\t\t}\n\t\tif (schemaVersion) headers['X-Schema-Version'] = schemaVersion;\n\n\t\tconst options: RawAxiosRequestConfig = {\n\t\t\turl,\n\t\t\tmethod: 'GET',\n\t\t\theaders\n\t\t};\n\n\t\t// Make a request based on provided data\n\t\ttry {\n\t\t\tlogger.info(`Requesting ${options.url!}`);\n\t\t\tconst response = await enqueueRequest<AxiosResponse<T>>(options);\n\t\t\tconst { data } = response;\n\t\t\treturn data;\n\t\t} catch (error: unknown) {\n\t\t\treturn await this.retryRequest<T>(endpoint, options, apiParams, error);\n\t\t}\n\t}\n\n\t/**\n\t * Retries failed requests\n\t * TODO: Fix logic. Rate-limits are almost impossible hit, but other generic requests will fail and loop forever\n\t *\n\t * @param endpoint - Endpoint to which a request was originally made\n\t * @param prevOptions - Axios request options\n\t * @param apiParams - Query string\n\t * @param prevError - Error that caused a retry\n\t * @returns Successful request, or error\n\t */\n\tprotected async retryRequest<T>(\n\t\tendpoint: Endpoint,\n\t\tprevOptions: RawAxiosRequestConfig,\n\t\tapiParams?: UrlParams,\n\t\tprevError?: unknown\n\t): Promise<T> {\n\t\t// Check if a retry is needed, is the request is bad\n\t\tif (prevError instanceof AxiosError) {\n\t\t\tif (prevError.response) {\n\t\t\t\tconst { status } = prevError.response;\n\t\t\t\tif (status === 401) {\n\t\t\t\t\tlogger.warn(`Request to ${prevOptions.url!} failed.`);\n\t\t\t\t\tthrow new ApiTokenError();\n\t\t\t\t}\n\t\t\t\tif (status === 403) {\n\t\t\t\t\t// Axios doesn't know what type this can be, but the api always returns the same object\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\n\t\t\t\t\tconst requiredScope: string =\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/restrict-plus-operands\n\t\t\t\t\t\tprevError.response.data.text.slice(0, 1).toUpperCase() + prevError.response.data.text.slice(1);\n\t\t\t\t\tlogger.warn(`Request to ${prevOptions.url!} failed. ${requiredScope}.`);\n\t\t\t\t\tthrow new ApiPermissionsError(requiredScope);\n\t\t\t\t}\n\t\t\t\tif (status === 404) {\n\t\t\t\t\tlogger.warn(`Request to ${prevOptions.url!} returned no data.`);\n\t\t\t\t\tthrow new ApiNotFoundError();\n\t\t\t\t}\n\t\t\t\tif (status === 504) {\n\t\t\t\t\tlogger.warn(`Request to ${prevOptions.url!} timed out.`);\n\t\t\t\t\tthrow new ApiTimeoutError();\n\t\t\t\t}\n\t\t\t}\n\t\t\tlogger.warn(`Request to ${prevOptions.url!} failed. ${(prevError as Error).message}`);\n\t\t} else if (this._rateLimitRetry) {\n\t\t\t// Attempt to retry\n\t\t\tfor (let attempt = 0; attempt < this._rateLimitRetryAttempts; attempt++) {\n\t\t\t\ttry {\n\t\t\t\t\treturn await this.buildRequest<T>(endpoint, apiParams);\n\t\t\t\t} catch (error: unknown) {\n\t\t\t\t\t// Hit the rate-limit again\n\t\t\t\t\tif (error instanceof AxiosError && error.code === 'ERR_TOO_MANY_REQUESTS') {\n\t\t\t\t\t\t// Rate-limit is 600 (supposedly really 300) per minute\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-empty-function\n\t\t\t\t\t\tsetTimeout(() => {\n\t\t\t\t\t\t\tlogger.warn('Request timed out. Waiting to retry...');\n\t\t\t\t\t\t}, 1000);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tlogger.info(`Rate-limit retries failed. Aborting request to ${prevOptions.url!}`);\n\t\t\tthrow new ApiRetryFailedError();\n\t\t}\n\t\t// TODO: Determine what actually happens\n\t\t// Probably something stupid in the request itself\n\t\tthrow new ApiGenericError();\n\t}\n\n\t/**\n\t * Builds final Api url from the endpoint and provided parameters\n\t *\n\t * @param endpoint - Api endpoint\n\t * @param urlParams - Parameters\n\t * @returns Finalized endpoint Url\n\t */\n\tprivate _getApiUrl(endpoint: Endpoint, urlParams: UrlParams) {\n\t\t// Build the endpoint base\n\t\tconst { path } = endpoint;\n\t\tconst regex = /\\$\\(([^)]+)?\\)/g;\n\t\tlet fullUrl = `${this._baseUrl}/${path}`;\n\n\t\t// Build any arguments needed for the endpoint\n\t\t// eslint-disable-next-line @typescript-eslint/init-declarations\n\t\tlet match;\n\t\twhile ((match = regex.exec(fullUrl))) {\n\t\t\tconst [key, param] = match;\n\t\t\tif (!param) continue;\n\t\t\tconst value = encodeURI(String(urlParams[param]));\n\t\t\tfullUrl = fullUrl.replace(key, value);\n\t\t\tregex.lastIndex = 0;\n\t\t}\n\t\treturn fullUrl;\n\t}\n}\n","/**\n * Available language options\n */\nexport enum ApiLanguage {\n\tEnglish = 'en',\n\tFrench = 'fr',\n\tGerman = 'de',\n\tSpanish = 'es',\n\tChinese = 'zh'\n}\n\n/**\n * Parameters passed into the endpoint, to make a specific request\n */\nexport type UrlParams = Record<string, string | number | string[] | number[]>;\n\n/**\n * Parameters required by the Api for any call\n */\nexport interface ApiParams {\n\ttoken?: string;\n\tlanguage?: ApiLanguage;\n\trateLimit?: RatelimitParams;\n}\n\n/**\n * Ratelimiting parameters\n */\nexport type RatelimitParams =\n\t| {\n\t\t\tretry: true;\n\t\t\tattempts: number;\n\t }\n\t| {\n\t\t\tretry: false;\n\t };\n","/**\n * Api error thrown when a request fails to obtain any data.\n */\nexport class ApiNotFoundError extends Error {\n\tconstructor() {\n\t\tsuper('The Api did not return any data with the provided arguments');\n\t\tObject.setPrototypeOf(this, ApiNotFoundError.prototype);\n\t}\n}\n","/**\n * Api error thrown when a request retry fails, or is canceled\n */\nexport class ApiRetryFailedError extends Error {\n\tconstructor() {\n\t\tsuper('The Api failed to return data after several attempts');\n\t\tObject.setPrototypeOf(this, ApiRetryFailedError.prototype);\n\t}\n}\n","/**\n * Api token error. Thrown when the token is missing or incorrect\n */\nexport class ApiTokenError extends Error {\n\tconstructor() {\n\t\tsuper('Api token was required, but was either missing or incorrect');\n\t\tObject.setPrototypeOf(this, ApiTokenError.prototype);\n\t}\n}\n","/**\n * Api error thrown when an unhandled error occurs.\n */\nexport class ApiGenericError extends Error {\n\tconstructor() {\n\t\tsuper('The Api request failed with an unknown error');\n\t\tObject.setPrototypeOf(this, ApiGenericError.prototype);\n\t}\n}\n","/**\n * Token permission error. Thrown when the token is correct,\n * but does not have permissions required for the request.\n */\nexport class ApiPermissionsError extends Error {\n\tconstructor(scope: string) {\n\t\tsuper(`The Api token does not have sufficient permissions for this request. ${scope}`);\n\t\tObject.setPrototypeOf(this, ApiPermissionsError.prototype);\n\t}\n}\n","/**\n * Api error thrown when a request is timed out.\n */\nexport class ApiTimeoutError extends Error {\n\tconstructor() {\n\t\tsuper('The Api request timed out');\n\t\tObject.setPrototypeOf(this, ApiTimeoutError.prototype);\n\t}\n}\n","import { Logger } from 'tslog';\n\n/**\n * TSlog log level\n */\nexport enum LogLevel {\n\tsilly = 0,\n\ttrace = 1,\n\tdebug = 2,\n\tinfo = 3,\n\twarn = 4,\n\terror = 5,\n\tfatal = 6\n}\n\n/**\n * Global logger object\n */\nexport const logger = new Logger({\n\tminLevel: LogLevel.info,\n\thideLogPositionForProduction: true\n});\n\n/**\n * Set logger level\n *\n * @param minLevel - Minimum logging level\n */\nexport const setLogLevel = (minLevel: LogLevel): void => {\n\tlogger.settings.minLevel = minLevel;\n};\n\n/**\n * Set whether the logger will display file paths\n *\n * @param displayFilePath - Filepath status\n */\nexport const setPathLogging = (displayFilePath: boolean): void => {\n\tlogger.settings.hideLogPositionForProduction = !displayFilePath;\n};\n","import axios, { type AxiosRequestConfig } from 'axios';\nimport Queue from 'promise-queue';\nimport type { ApiResponseDTO } from '../models';\n\n/**\n * Global request queue\n */\nexport const queue: Queue = new Queue(Infinity, Infinity);\n\n/**\n * Adds a promise request to the global queue\n *\n * @param options - Axios request options\n * @returns Request promise\n */\nasync function sendRequest<T>(options: AxiosRequestConfig): Promise<ApiResponseDTO<T>> {\n\treturn await new Promise((resolve, reject) => {\n\t\taxios\n\t\t\t.get(options.url!, { ...options })\n\t\t\t.then(resolve)\n\t\t\t.catch(reject);\n\t});\n}\n\n/**\n * Enqueue incoming Axios request\n *\n * @param options - Axios request options\n * @returns Request result\n */\nexport async function enqueueRequest<T>(options: AxiosRequestConfig): Promise<T> {\n\treturn await queue.add(async () => (await sendRequest(options)) as T);\n}\n","export interface Endpoint {\n\tpath: `v2/${string}`;\n\ttokenRequired: boolean;\n}\n\ntype SubEndpoint = Record<string, Endpoint>;\n\nexport const endpoints = {\n\taccount: {\n\t\tbase: {\n\t\t\tpath: 'v2/account',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tachievements: {\n\t\t\tpath: 'v2/account/achievements',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tbank: {\n\t\t\tpath: 'v2/account/bank',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tbuildStorage: {\n\t\t\tpath: 'v2/account/buildstorage?ids=all',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tdailyCrafting: {\n\t\t\tpath: 'v2/account/dailycrafting',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tdungeons: {\n\t\t\tpath: 'v2/account/dungeons',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tdyes: {\n\t\t\tpath: 'v2/account/dyes',\n\t\t\ttokenRequired: true\n\t\t},\n\t\temotes: {\n\t\t\tpath: 'v2/account/emotes',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tfinishers: {\n\t\t\tpath: 'v2/account/finishers',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tgliders: {\n\t\t\tpath: 'v2/account/gliders',\n\t\t\ttokenRequired: true\n\t\t},\n\t\thomeCats: {\n\t\t\tpath: 'v2/account/home/cats',\n\t\t\ttokenRequired: true\n\t\t},\n\t\thomeNodes: {\n\t\t\tpath: 'v2/account/home/nodes',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tsharedInventory: {\n\t\t\tpath: 'v2/account/inventory',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tlegendaryArmory: {\n\t\t\tpath: 'v2/account/legendaryarmory',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tluck: {\n\t\t\tpath: 'v2/account/luck',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmailCarriers: {\n\t\t\tpath: 'v2/account/mailcarriers',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmapChests: {\n\t\t\tpath: 'v2/account/mapchests',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmasteries: {\n\t\t\tpath: 'v2/account/masteries',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmasteryPoints: {\n\t\t\tpath: 'v2/account/mastery/points',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmaterials: {\n\t\t\tpath: 'v2/account/materials',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tminis: {\n\t\t\tpath: 'v2/account/minis',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmountsSkins: {\n\t\t\tpath: 'v2/account/mounts/skins',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmountsTypes: {\n\t\t\tpath: 'v2/account/mounts/types',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tnovelties: {\n\t\t\tpath: 'v2/account/novelties',\n\t\t\ttokenRequired: true\n\t\t},\n\t\toutfits: {\n\t\t\tpath: 'v2/account/outfits',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tprogression: {\n\t\t\tpath: 'v2/account/progression',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tpvpHeroes: {\n\t\t\tpath: 'v2/account/pvp/heroes',\n\t\t\ttokenRequired: true\n\t\t},\n\t\traids: {\n\t\t\tpath: 'v2/account/raids',\n\t\t\ttokenRequired: true\n\t\t},\n\t\trecipes: {\n\t\t\tpath: 'v2/account/recipes',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tskins: {\n\t\t\tpath: 'v2/account/skins',\n\t\t\ttokenRequired: true\n\t\t},\n\t\ttitles: {\n\t\t\tpath: 'v2/account/titles',\n\t\t\ttokenRequired: true\n\t\t},\n\t\twallet: {\n\t\t\tpath: 'v2/account/wallet',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tworldBosses: {\n\t\t\tpath: 'v2/account/worldbosses',\n\t\t\ttokenRequired: true\n\t\t}\n\t},\n\tachievements: {\n\t\tcategoryIds: {\n\t\t\tpath: 'v2/achievements/categories',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tcategories: {\n\t\t\tpath: 'v2/achievements/categories?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tdaily: {\n\t\t\tpath: 'v2/achievements/daily',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tdailyTomorrow: {\n\t\t\tpath: 'v2/achievements/daily/tomorrow',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tgroups: {\n\t\t\tpath: 'v2/achievements/groups/$(id)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tcharacters: {\n\t\tbase: {\n\t\t\tpath: 'v2/characters',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tbackstory: {\n\t\t\tpath: 'v2/characters/$(id)/backstory',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tbuildTabs: {\n\t\t\tpath: 'v2/characters/$(id)/buildtabs?tabs=$(tabs)',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tcore: {\n\t\t\tpath: 'v2/characters/$(id)/core',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tcrafting: {\n\t\t\tpath: 'v2/characters/$(id)/crafting',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tequipment: {\n\t\t\tpath: 'v2/characters/$(id)/equipment',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tequipmentTabsById: {\n\t\t\tpath: 'v2/characters/$(id)/equipmenttabs?tabs=$(tabs)',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tequipmentTabActive: {\n\t\t\tpath: 'v2/characters/$(id)/equipmenttabs/active',\n\t\t\ttokenRequired: true\n\t\t},\n\t\theroPoints: {\n\t\t\tpath: 'v2/characters/$(id)/heropoints',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tinventory: {\n\t\t\tpath: 'v2/characters/$(id)/inventory',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tquests: {\n\t\t\tpath: 'v2/characters/$(id)/quests',\n\t\t\ttokenRequired: true\n\t\t},\n\t\trecipes: {\n\t\t\tpath: 'v2/characters/$(id)/recipes',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tsab: {\n\t\t\tpath: 'v2/characters/$(id)/sab',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tskills: {\n\t\t\tpath: 'v2/characters/$(id)/skills',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tspecializations: {\n\t\t\tpath: 'v2/characters/$(id)/specializations',\n\t\t\ttokenRequired: true\n\t\t},\n\t\ttraining: {\n\t\t\tpath: 'v2/character/$(id)/training',\n\t\t\ttokenRequired: true\n\t\t}\n\t},\n\tcolors: {\n\t\tall: {\n\t\t\tpath: 'v2/colors',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/colors?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tcommerce: {\n\t\tdelivery: {\n\t\t\tpath: 'v2/commerce/delivery',\n\t\t\ttokenRequired: true\n\t\t},\n\t\texchangeCoins: {\n\t\t\tpath: 'v2/commerce/exchange/coins?quantity=$(quantity)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\texchangeGems: {\n\t\t\tpath: 'v2/commerce/exchange/gems?quantity=$(quantity)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tlistings: {\n\t\t\tpath: 'v2/commerce/listings?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tprices: {\n\t\t\tpath: 'v2/commerce/prices?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\ttransactionsCurrentBuys: {\n\t\t\tpath: 'v2/commerce/transactions/current/buys',\n\t\t\ttokenRequired: true\n\t\t},\n\t\ttransactionsCurrentSells: {\n\t\t\tpath: 'v2/commerce/transactions/current/sells',\n\t\t\ttokenRequired: true\n\t\t},\n\t\ttransactionsHistoryBuys: {\n\t\t\tpath: 'v2/commerce/transactions/history/buys',\n\t\t\ttokenRequired: true\n\t\t},\n\t\ttransactionsHistorySells: {\n\t\t\tpath: 'v2/commerce/transactions/history/sells',\n\t\t\ttokenRequired: true\n\t\t}\n\t},\n\tcontinents: {\n\t\tcore: {\n\t\t\tpath: 'v2/continents',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tcontinents: {\n\t\t\tpath: 'v2/continents?ids=$(continents)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tfloors: {\n\t\t\tpath: 'v2/continents/$(continent)/floors?ids=$(floors)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tregions: {\n\t\t\tpath: 'v2/continents/$(continent)/floors/$(floor)/regions?ids=$(regions)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tmaps: {\n\t\t\tpath: 'v2/continents/$(continent)/floors/$(floor)/regions/$(region)/maps?ids=$(maps)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tcreateSubtoken: {\n\t\tnoUrl: {\n\t\t\tpath: 'v2/createsubtoken?expire=$(expire)&permissions=$(permissions)',\n\t\t\ttokenRequired: true\n\t\t},\n\t\turl: {\n\t\t\tpath: 'v2/createsubtoken?expire=$(expire)&permissions=$(permissions)&urls=$(urls)',\n\t\t\ttokenRequired: true\n\t\t}\n\t},\n\tcurrencies: {\n\t\tall: {\n\t\t\tpath: 'v2/currencies',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/currencies?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\temblem: {\n\t\tpath: 'v2/emblem/$(type)?ids=$(ids)',\n\t\ttokenRequired: false\n\t},\n\temotes: {\n\t\tall: {\n\t\t\tpath: 'v2/emotes',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/emotes?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tgliders: {\n\t\tall: {\n\t\t\tpath: 'v2/gliders',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/gliders?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tpaginated: {\n\t\t\tpath: 'v2/gliders?ids=$(ids)&page=$(page)&page_size=$(page_size)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tguild: {\n\t\tcore: {\n\t\t\tpath: 'v2/guild/$(id)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tlog: {\n\t\t\tpath: 'v2/guild/$(id)/log?since=$(since)',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tmembers: {\n\t\t\tpath: 'v2/guild/$(id)/members',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tranks: {\n\t\t\tpath: 'v2/guild/$(id)/ranks',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tstash: {\n\t\t\tpath: 'v2/guild/$(id)/stash',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tstorage: {\n\t\t\tpath: 'v2/guild/$(id)/storage',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tteams: {\n\t\t\tpath: 'v2/guild/$(id)/teams',\n\t\t\ttokenRequired: true\n\t\t},\n\t\ttreasury: {\n\t\t\tpath: 'v2/guild/$(id)/treasury',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tupgrades: {\n\t\t\tpath: 'v2/guild/$(id)/upgrades',\n\t\t\ttokenRequired: true\n\t\t},\n\t\tupgradesInfo: {\n\t\t\tpath: 'v2/guild/upgrades?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tpermissions: {\n\t\t\tpath: 'v2/guild/permissions',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tsearch: {\n\t\t\tpath: 'v2/guild/search?name=$(name)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\thome: {\n\t\tcats: {\n\t\t\tpath: 'v2/home/cats?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tnodes: {\n\t\t\tpath: 'v2/home/nodes?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\titems: {\n\t\tall: {\n\t\t\tpath: 'v2/items',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/items?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\titemstats: {\n\t\tall: {\n\t\t\tpath: 'v2/itemstats',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/itemstats?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tlegendaryArmory: {\n\t\tall: {\n\t\t\tpath: 'v2/legendaryarmory',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/legendaryarmory?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tlegends: {\n\t\tall: {\n\t\t\tpath: 'v2/legends',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/legends?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tmailCarriers: {\n\t\tall: {\n\t\t\tpath: 'v2/mailcarriers',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/mailcarriers?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tmapChests: {\n\t\tpath: 'v2/mapchests',\n\t\ttokenRequired: false\n\t},\n\tmaps: {\n\t\tall: {\n\t\t\tpath: 'v2/maps',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/maps?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tmasteries: {\n\t\tall: {\n\t\t\tpath: 'v2/masteries',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/masteries?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tmaterials: {\n\t\tall: {\n\t\t\tpath: 'v2/materials',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/materials?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tminis: {\n\t\tall: {\n\t\t\tpath: 'v2/minis',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/minis?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tmountsSkins: {\n\t\tall: {\n\t\t\tpath: 'v2/mounts/skins',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/mounts/skins?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tmountsTypes: {\n\t\tall: {\n\t\t\tpath: 'v2/mounts/types',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/mounts/types?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tnovelties: {\n\t\tall: {\n\t\t\tpath: 'v2/novelties',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/novelties?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\toutfits: {\n\t\tall: {\n\t\t\tpath: 'v2/outfits',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/outfits?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tpets: {\n\t\tall: {\n\t\t\tpath: 'v2/pets',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/pets?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tpvp: {\n\t\tamuletsAll: {\n\t\t\tpath: 'v2/pvp/amulets',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tamuletsById: {\n\t\t\tpath: `v2/pvp/amulets?ids=$(ids)`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tgamesAll: {\n\t\t\tpath: `v2/pvp/games`,\n\t\t\ttokenRequired: true\n\t\t},\n\t\tgamesById: {\n\t\t\tpath: `v2/pvp/games?ids=$(ids)`,\n\t\t\ttokenRequired: true\n\t\t},\n\t\theroesAll: {\n\t\t\tpath: `v2/pvp/heroes`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\theroesById: {\n\t\t\tpath: `v2/pvp/heroes?ids=$(ids)`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tranksAll: {\n\t\t\tpath: `v2/pvp/ranks`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tranksById: {\n\t\t\tpath: `v2/pvp/ranks?ids=$(ids)`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tseasonsAll: {\n\t\t\tpath: `v2/pvp/seasons`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tseasonsById: {\n\t\t\tpath: `v2/pvp/seasons?ids=$(ids)`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tleaderboards: {\n\t\t\tpath: `v2/pvp/seasons/$(id)/leaderboards/$(type)/$(region)`,\n\t\t\ttokenRequired: false\n\t\t},\n\t\tstandings: {\n\t\t\tpath: `v2/pvp/standings`,\n\t\t\ttokenRequired: true\n\t\t},\n\t\tstats: {\n\t\t\tpath: `v2/pvp/stats`,\n\t\t\ttokenRequired: true\n\t\t}\n\t},\n\tquaggans: {\n\t\tall: {\n\t\t\tpath: 'v2/quaggans',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/quaggans?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tquests: {\n\t\tall: {\n\t\t\tpath: 'v2/quests',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/quests?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\traces: {\n\t\tall: {\n\t\t\tpath: 'v2/races',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/races?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\traids: {\n\t\tall: {\n\t\t\tpath: 'v2/raids',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/raids?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\trecipes: {\n\t\tbyId: {\n\t\t\tpath: 'v2/recipes?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tsearch: {\n\t\t\tpath: 'v2/recipes/search?$(type)=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tskills: {\n\t\tpath: 'v2/skills?ids=$(ids)',\n\t\ttokenRequired: false\n\t},\n\tskins: {\n\t\tall: {\n\t\t\tpath: 'v2/skins',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/skins?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tspecializations: {\n\t\tall: {\n\t\t\tpath: 'v2/specializations',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/specializations?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tstories: {\n\t\tall: {\n\t\t\tpath: 'v2/stories',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/stories?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tseasons: {\n\t\tall: {\n\t\t\tpath: 'v2/stories/seasons',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/stories/seasons?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\ttitles: {\n\t\tall: {\n\t\t\tpath: 'v2/titles',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/titles?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\ttokenInfo: {\n\t\tpath: 'v2/tokeninfo',\n\t\ttokenRequired: true\n\t},\n\ttraits: {\n\t\tall: {\n\t\t\tpath: 'v2/traits',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/traits?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\tworldBosses: {\n\t\tpath: 'v2/worldbosses',\n\t\ttokenRequired: false\n\t},\n\tworlds: {\n\t\tall: {\n\t\t\tpath: 'v2/worlds',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tbyId: {\n\t\t\tpath: 'v2/worlds?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t},\n\twvw: {\n\t\tabilities: {\n\t\t\tpath: 'v2/wvw/abilities',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tabilitiesById: {\n\t\t\tpath: 'v2/wvw/abilities?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tmatches: {\n\t\t\tpath: 'v2/wvw/matches',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tmatchesById: {\n\t\t\tpath: 'v2/wvw/matches?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tmatchesByWorld: {\n\t\t\tpath: 'v2/wvw/matches/$(type)?world=$(world)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tobjectives: {\n\t\t\tpath: 'v2/wvw/objectives',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tobjectivesById: {\n\t\t\tpath: 'v2/wvw/objectives?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tranks: {\n\t\t\tpath: 'v2/wvw/ranks',\n\t\t\ttokenRequired: false\n\t\t},\n\t\tranksById: {\n\t\t\tpath: 'v2/wvw/ranks?ids=$(ids)',\n\t\t\ttokenRequired: false\n\t\t}\n\t}\n} satisfies Record<string, Endpoint | SubEndpoint>;\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport type {\n\tAccountAchievementsDTO,\n\tAccountBankDTO,\n\tAccountBuildStorageDTO,\n\tAccountDailyCraftingDTO,\n\tAccountDTO,\n\tAccountDungeonsDTO,\n\tAccountDyesDTO,\n\tAccountEmotesDTO,\n\tAccountFinishersDTO,\n\tAccountGlidersDTO,\n\tAccountHomeCatsDTO,\n\tAccountHomeNodesDTO,\n\tAccountInventoryDTO,\n\tAccountLegendaryArmoryDTO,\n\tAccountLuckDTO,\n\tAccountMailCarriersDTO,\n\tAccountMapChestsDTO,\n\tAccountMasteriesDTO,\n\tAccountMasteryPointsDTO,\n\tAccountMaterialsDTO,\n\tAccountMinisDTO,\n\tAccountMountSkinsDTO,\n\tAccountMountTypesDTO,\n\tAccountNoveltiesDTO,\n\tAccountOutfitsDTO,\n\tAccountProgressionDTO,\n\tAccountPvpHeroesDTO,\n\tAccountRaidsDTO,\n\tAccountRecipesDTO,\n\tAccountSkinsDTO,\n\tAccountTitlesDTO,\n\tAccountWorldBossesDTO\n} from '../../models';\n\n/**\n * /v2/account Api\n */\nexport class AccountApi extends ApiBase {\n\t/**\n\t * Get all account information\n\t *\n\t * @returns Account information\n\t */\n\tasync get(): Promise<AccountDTO> {\n\t\treturn await this.buildRequest<AccountDTO>(endpoints.account.base, {});\n\t}\n\n\t/**\n\t * Get account achievement information\n\t *\n\t * @returns Account achievements\n\t */\n\tasync getAchievements(): Promise<AccountAchievementsDTO[]> {\n\t\treturn await this.buildRequest<AccountAchievementsDTO[]>(endpoints.account.achievements, {});\n\t}\n\n\t/**\n\t * Get the items stored in a player's vault (not including material storage)\n\t * If null, the slot is empty\n\t *\n\t * @returns Account bank contents\n\t */\n\tasync getBankContents(): Promise<Array<AccountBankDTO | null>> {\n\t\treturn await this.buildRequest<Array<AccountBankDTO | null>>(endpoints.account.bank, {});\n\t}\n\n\t/**\n\t * Get templates stored in the account build storage\n\t *\n\t * @returns Account build storage\n\t */\n\tasync getBuildStorage(): Promise<AccountBuildStorageDTO[]> {\n\t\treturn await this.buildRequest<AccountBuildStorageDTO[]>(endpoints.account.buildStorage, {});\n\t}\n\n\t/**\n\t * Get completed daily crafts\n\t *\n\t * @returns Crafts completed since last daily reset\n\t */\n\tasync getDailyCrafts(): Promise<AccountDailyCraftingDTO[]> {\n\t\treturn await this.buildRequest<AccountDailyCraftingDTO[]>(endpoints.account.dailyCrafting, {});\n\t}\n\n\t/**\n\t * Get completed dungeons\n\t *\n\t * @returns Dungeons completed since last daily reset\n\t */\n\tasync getDungeons(): Promise<AccountDungeonsDTO[]> {\n\t\treturn await this.buildRequest<AccountDungeonsDTO[]>(endpoints.account.dungeons, {});\n\t}\n\n\t/**\n\t * Get dyes unlocked on the account\n\t *\n\t * @returns Dyes unlocked on the account\n\t */\n\tasync getDyes(): Promise<AccountDyesDTO[]> {\n\t\treturn await this.buildRequest<AccountDyesDTO[]>(endpoints.account.dyes, {});\n\t}\n\n\t/**\n\t * Get emotes unlocked on the account\n\t *\n\t * @returns Emotes unlocked on the account\n\t */\n\tasync getEmotes(): Promise<AccountEmotesDTO[]> {\n\t\treturn await this.buildRequest<AccountEmotesDTO[]>(endpoints.account.emotes, {});\n\t}\n\n\t/**\n\t * Get finishers unlocked on the account\n\t *\n\t * @returns Finishers unlocked on the account\n\t */\n\tasync getFinishers(): Promise<AccountFinishersDTO[]> {\n\t\treturn await this.buildRequest<AccountFinishersDTO[]>(endpoints.account.finishers, {});\n\t}\n\n\t/**\n\t * Get gliders unlocked on the account\n\t *\n\t * @returns Gliders unlocked on the account\n\t */\n\tasync getGliders(): Promise<AccountGlidersDTO[]> {\n\t\treturn await this.buildRequest<AccountGlidersDTO[]>(endpoints.account.gliders, {});\n\t}\n\n\t/**\n\t * Get nodes unlocked on the account home instance\n\t *\n\t * @returns Nodes unlocked on the account\n\t */\n\tasync getHomeNodes(): Promise<AccountHomeNodesDTO[]> {\n\t\treturn await this.buildRequest<AccountHomeNodesDTO[]>(endpoints.account.homeNodes, {});\n\t}\n\n\t/**\n\t * Get cats unlocked on the account home instance\n\t *\n\t * @returns Gliders unlocked on the account\n\t */\n\tasync getHomeCats(): Promise<AccountHomeCatsDTO[]> {\n\t\treturn await this.buildRequest<AccountHomeCatsDTO[]>(endpoints.account.homeCats, {});\n\t}\n\n\t/**\n\t * Get the items stored in the account shared inventory\n\t * If null, the slot is empty\n\t *\n\t * @returns Account shared inventory contents\n\t */\n\tasync getSharedInventory(): Promise<Array<AccountInventoryDTO | null>> {\n\t\treturn await this.buildRequest<Array<AccountInventoryDTO | null>>(endpoints.account.sharedInventory, {});\n\t}\n\n\t/**\n\t * Get legendary items stored in the account armory\n\t *\n\t * @returns Legendary armory\n\t */\n\tasync getLegendaryArmory(): Promise<AccountLegendaryArmoryDTO[]> {\n\t\treturn await this.buildRequest<AccountLegendaryArmoryDTO[]>(endpoints.account.legendaryArmory, {});\n\t}\n\n\t/**\n\t * Get account luck\n\t *\n\t * @returns Account luck\n\t */\n\tasync getLuck(): Promise<AccountLuckDTO[] | []> {\n\t\treturn await this.buildRequest<AccountLuckDTO[] | []>(endpoints.account.luck, {});\n\t}\n\n\t/**\n\t * Get mail carriers unlocked on the account\n\t *\n\t * @returns Account mail carriers\n\t */\n\tasync getMailCarriers(): Promise<AccountMailCarriersDTO[]> {\n\t\treturn await this.buildRequest<AccountMailCarriersDTO[]>(endpoints.account.mailCarriers, {});\n\t}\n\n\t/**\n\t * Get map chests opened on this account today\n\t *\n\t * @returns Unlocked map chests\n\t */\n\tasync getMapChests(): Promise<AccountMapChestsDTO[]> {\n\t\treturn await this.buildRequest<AccountMapChestsDTO[]>(endpoints.account.mapChests, {});\n\t}\n\n\t/**\n\t * Get masteries unlocked on the account\n\t *\n\t * @returns Account masteries\n\t */\n\tasync getMasteries(): Promise<AccountMasteriesDTO[] | []> {\n\t\treturn await this.buildRequest<AccountMasteriesDTO[] | []>(endpoints.account.masteries, {});\n\t}\n\n\t/**\n\t * Get account mastery points\n\t *\n\t * @returns account mastery points\n\t */\n\tasync getMasteryPoints(): Promise<AccountMasteryPointsDTO> {\n\t\treturn await this.buildRequest<AccountMasteryPointsDTO>(endpoints.account.masteryPoints, {});\n\t}\n\n\t/**\n\t * Get materials in the account vault\n\t *\n\t * @returns Account materials\n\t */\n\tasync getMaterials(): Promise<AccountMaterialsDTO[]> {\n\t\treturn await this.buildRequest<AccountMaterialsDTO[]>(endpoints.account.materials, {});\n\t}\n\n\t/**\n\t * Get minis unlocked on the account\n\t *\n\t * @returns Account minis\n\t */\n\tasync getAccountMinis(): Promise<AccountMinisDTO> {\n\t\treturn await this.buildRequest<AccountMinisDTO>(endpoints.account.minis, {});\n\t}\n\n\t/**\n\t * Get account mount skins\n\t *\n\t * @returns Account mount skins\n\t */\n\tasync getMountSkins(): Promise<AccountMountSkinsDTO[]> {\n\t\treturn await this.buildRequest<AccountMountSkinsDTO[]>(endpoints.account.mountsSkins, {});\n\t}\n\n\t/**\n\t * Get account mount skins\n\t *\n\t * @returns Account mount types\n\t */\n\tasync getMountTypes(): Promise<AccountMountTypesDTO[]> {\n\t\treturn await this.buildRequest<AccountMountTypesDTO[]>(endpoints.account.mountsTypes, {});\n\t}\n\n\t/**\n\t * Get novelties unlocked on the account\n\t *\n\t * @returns Account novelties\n\t */\n\tasync getNovelties(): Promise<AccountNoveltiesDTO[]> {\n\t\treturn await this.buildRequest<AccountNoveltiesDTO[]>(endpoints.account.novelties, {});\n\t}\n\n\t/**\n\t * Get outfits unlocked on the account\n\t *\n\t * @returns Account outfits\n\t */\n\tasync getOutfits(): Promise<AccountOutfitsDTO[]> {\n\t\treturn await this.buildRequest<AccountOutfitsDTO[]>(endpoints.account.outfits, {});\n\t}\n\n\t/**\n\t * Get account progression\n\t *\n\t * @returns Account progression\n\t */\n\tasync getProgression(): Promise<AccountProgressionDTO[]> {\n\t\treturn await this.buildRequest<AccountProgressionDTO[]>(endpoints.account.progression, {});\n\t}\n\n\t/**\n\t * Get pvp heroes unlocked on the account\n\t *\n\t * @returns Account Pvp heroes\n\t */\n\tasync getPvpHeroes(): Promise<AccountPvpHeroesDTO[]> {\n\t\treturn await this.buildRequest<AccountPvpHeroesDTO[]>(endpoints.account.pvpHeroes, {});\n\t}\n\n\t/**\n\t * Get weekly raid boss progression\n\t *\n\t * @returns Account raid boss progression\n\t */\n\tasync getRaids(): Promise<AccountRaidsDTO[]> {\n\t\treturn await this.buildRequest<AccountRaidsDTO[]>(endpoints.account.raids, {});\n\t}\n\n\t/**\n\t * Get recipes unlocked on the account\n\t *\n\t * @returns Account recipes\n\t */\n\tasync getRecipes(): Promise<AccountRecipesDTO[]> {\n\t\treturn await this.buildRequest<AccountRecipesDTO[]>(endpoints.account.recipes, {});\n\t}\n\n\t/**\n\t * Get skins unlocked on the account\n\t *\n\t * @returns Account skins\n\t */\n\tasync getSkins(): Promise<AccountSkinsDTO[]> {\n\t\treturn await this.buildRequest<AccountSkinsDTO[]>(endpoints.account.skins, {});\n\t}\n\n\t/**\n\t * Get titles unlocked on the account\n\t *\n\t * @returns Account titles\n\t */\n\tasync getTitles(): Promise<AccountTitlesDTO[]> {\n\t\treturn await this.buildRequest<AccountTitlesDTO[]>(endpoints.account.titles, {});\n\t}\n\n\t/**\n\t * Get world bosses killed today\n\t */\n\tasync getWorldBosses(): Promise<AccountWorldBossesDTO[]> {\n\t\treturn await this.buildRequest<AccountWorldBossesDTO[]>(endpoints.account.worldBosses, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport type {\n\tAchievementCategoriesByIdDTO,\n\tAchievementCategoriesDTO,\n\tAchievementGroupsByIdDTO,\n\tAchievementGroupsDTO,\n\tAchievementsDailyDTO\n} from '../../models/';\n\n/**\n * /v2/achievements api\n */\nexport class AchievementsApi extends ApiBase {\n\t/**\n\t * Get all achievement categories\n\t */\n\tasync getCategoryIds(): Promise<AchievementCategoriesDTO[]> {\n\t\treturn await this.buildRequest<AchievementCategoriesDTO[]>(endpoints.achievements.categoryIds, {});\n\t}\n\n\t/**\n\t * Get achievement category details.\n\t *\n\t * @param ids - (optional) List of category ids\n\t * @param schemaVersion - Schema version\n\t */\n\tasync getCategories(ids?: number[], schemaVersion?: string): Promise<AchievementCategoriesByIdDTO[]> {\n\t\treturn await this.buildRequest<AchievementCategoriesByIdDTO[]>(\n\t\t\tendpoints.achievements.categories,\n\t\t\t{ ids: ids ?? 'all' },\n\t\t\tschemaVersion\n\t\t);\n\t}\n\n\t/**\n\t * Get daily achievements.\n\t */\n\tasync getDailyAchievements(): Promise<AchievementsDailyDTO> {\n\t\treturn await this.buildRequest<AchievementsDailyDTO>(endpoints.achievements.daily, {});\n\t}\n\n\t/**\n\t * Get daily achievements for tomorrow.\n\t */\n\tasync getDailyAchievementsTomorrow(): Promise<AchievementsDailyDTO> {\n\t\treturn await this.buildRequest<AchievementsDailyDTO>(endpoints.achievements.dailyTomorrow, {});\n\t}\n\n\t/**\n\t * Get achievement groups.\n\t */\n\tasync getGroups(): Promise<AchievementGroupsDTO[]> {\n\t\treturn await this.buildRequest<AchievementGroupsDTO[]>(endpoints.achievements.groups, { id: '' });\n\t}\n\n\t/**\n\t * Get achievement group by id.\n\t *\n\t * @param id - Group id\n\t */\n\tasync getGroupById(id: string): Promise<AchievementGroupsByIdDTO> {\n\t\treturn await this.buildRequest<AchievementGroupsByIdDTO>(endpoints.achievements.groups, { id });\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { ApiGenericError } from '../../base/errors';\nimport { logger } from '../../base/logger';\nimport { endpoints } from '../endpoints';\nimport type {\n\tCharacterBackstoryDTO,\n\tCharacterBuildTabsDTO,\n\tCharacterCoreDTO,\n\tCharacterCraftingDTO,\n\tCharacterEquipmentDTO,\n\tCharacterEquipmentTabsDTO,\n\tCharacterHeroPointsDTO,\n\tCharacterInventoryDTO,\n\tCharacterQuestsDTO,\n\tCharacterRecipesDTO,\n\tCharactersDTO,\n\tCharacterSkillsDTO,\n\tCharacterSuperAdventureBoxDTO,\n\tCharacterSpecializationsDTO,\n\tCharacterTrainingDTO\n} from '../../models';\n\n/**\n * /v2/characters Api\n */\nexport class CharactersApi extends ApiBase {\n\t/**\n\t * Get names of all characters on the account\n\t *\n\t * @returns Character names\n\t */\n\tasync get(): Promise<CharactersDTO[]> {\n\t\treturn await this.buildRequest<CharactersDTO[]>(endpoints.characters.base, {});\n\t}\n\n\t/**\n\t * Get backstory of a selected character\n\t *\n\t * @param id - Character name\n\t * @returns Character backstory\n\t */\n\tasync getBackstory(id: string): Promise<CharacterBackstoryDTO> {\n\t\treturn await this.buildRequest<CharacterBackstoryDTO>(endpoints.characters.backstory, { id });\n\t}\n\n\t/**\n\t * Get build tabs of a selected character\n\t *\n\t * @param id - Character name\n\t * @param tabs - Optional tab index. If the index is invalid, all tabs will be returned\n\t * @returns Character build tabs\n\t */\n\tasync getBuildTabs(id: string, tabs?: number[]): Promise<CharacterBuildTabsDTO[]> {\n\t\tif (tabs) {\n\t\t\ttabs.forEach((tab: number) => {\n\t\t\t\tif (tab < 1 || tab > 8) {\n\t\t\t\t\tlogger.warn('Build tab ids must be between 1 and 8');\n\t\t\t\t\tthrow new ApiGenericError();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn await this.buildRequest<CharacterBuildTabsDTO[]>(endpoints.characters.buildTabs, {\n\t\t\tid,\n\t\t\ttabs: tabs ?? 'all'\n\t\t});\n\t}\n\n\t/**\n\t * Returns core information about a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Core character information\n\t */\n\tasync getCore(id: string): Promise<CharacterCoreDTO> {\n\t\treturn await this.buildRequest<CharacterCoreDTO>(endpoints.characters.core, { id });\n\t}\n\n\t/**\n\t * Returns crafting disciplines available to a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Character crafting disciplines\n\t */\n\tasync getCrafting(id: string): Promise<CharacterCraftingDTO> {\n\t\treturn await this.buildRequest<CharacterCraftingDTO>(endpoints.characters.crafting, { id });\n\t}\n\n\t/**\n\t * Returns equipment of a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @param schemaVersion - Schema version\n\t * @returns Character equipment\n\t */\n\tasync getEquipment(id: string, schemaVersion?: string): Promise<CharacterEquipmentDTO> {\n\t\treturn await this.buildRequest<CharacterEquipmentDTO>(endpoints.characters.equipment, { id }, schemaVersion);\n\t}\n\n\t/**\n\t * Returns equipment tabs of a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @param tabs - Optional equipment tab number.\n\t */\n\tasync getEquipmentTabs(id: string, tabs?: number[]): Promise<CharacterEquipmentTabsDTO[]> {\n\t\tif (tabs) {\n\t\t\ttabs.forEach((tab: number) => {\n\t\t\t\tif (tab < 1 || tab > 8) {\n\t\t\t\t\tlogger.warn('Equipment tab ids must be between 1 and 8');\n\t\t\t\t\tthrow new ApiGenericError();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn await this.buildRequest<CharacterEquipmentTabsDTO[]>(endpoints.characters.equipmentTabsById, {\n\t\t\tid,\n\t\t\ttabs: tabs ?? 'all'\n\t\t});\n\t}\n\n\t/**\n\t * Returns the active equipment tab of a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t */\n\tasync getActiveEquipmentTab(id: string): Promise<CharacterEquipmentTabsDTO> {\n\t\treturn await this.buildRequest<CharacterEquipmentTabsDTO>(endpoints.characters.equipmentTabActive, { id });\n\t}\n\n\t/**\n\t * Returns hero points obtained by a character attached to a specific account.\n\t * NOTE: This api does not currently return a lot of hero point values.\n\t * Check the list here for details https://wiki.guildwars2.com/wiki/API:2/characters/:id/heropoints#Notes\n\t *\n\t * @param id - Character name\n\t * @returns Character hero points\n\t */\n\tasync getHeroPoints(id: string): Promise<CharacterHeroPointsDTO[]> {\n\t\treturn await this.buildRequest<CharacterHeroPointsDTO[]>(endpoints.characters.heroPoints, { id });\n\t}\n\n\t/**\n\t * Returns inventory of a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Character inventory\n\t */\n\tasync getInventory(id: string): Promise<CharacterInventoryDTO> {\n\t\treturn await this.buildRequest<CharacterInventoryDTO>(endpoints.characters.inventory, { id });\n\t}\n\n\t/**\n\t * Returns quests that are selected by a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Character quest selections\n\t */\n\tasync getQuests(id: string): Promise<CharacterQuestsDTO[]> {\n\t\treturn await this.buildRequest<CharacterQuestsDTO[]>(endpoints.characters.quests, { id });\n\t}\n\n\t/**\n\t * Returns recipes that the given character can use.\n\t *\n\t * @param id - Character name\n\t * @returns Character recipes\n\t */\n\tasync getRecipes(id: string): Promise<CharacterRecipesDTO> {\n\t\treturn await this.buildRequest<CharacterRecipesDTO>(endpoints.characters.recipes, { id });\n\t}\n\n\t/**\n\t * Returns information about Super Adventure Box on a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Character SAB\n\t */\n\tasync getSAB(id: string): Promise<CharacterSuperAdventureBoxDTO> {\n\t\treturn await this.buildRequest<CharacterSuperAdventureBoxDTO>(endpoints.characters.sab, { id });\n\t}\n\n\t/**\n\t * Returns skill information of a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Character skills\n\t */\n\tasync getSkills(id: string): Promise<CharacterSkillsDTO> {\n\t\treturn await this.buildRequest<CharacterSkillsDTO>(endpoints.characters.skills, { id });\n\t}\n\n\t/**\n\t * Returns specialization information of a character attached to a specific account.\n\t *\n\t * @param id - Character name\n\t * @returns Character specialization information\n\t */\n\tasync getSpecializations(id: string): Promise<CharacterSpecializationsDTO> {\n\t\treturn await this.buildRequest<CharacterSpecializationsDTO>(endpoints.characters.specializations, {\n\t\t\tid\n\t\t});\n\t}\n\n\t/**\n\t * Returns training details of a character attached to a specific account\n\t *\n\t * @param id - Character name\n\t * @returns Character training information\n\t */\n\tasync getTraining(id: string): Promise<CharacterTrainingDTO> {\n\t\treturn await this.buildRequest<CharacterTrainingDTO>(endpoints.characters.training, { id });\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport type {\n\tCommerceDeliveryDTO,\n\tCommerceExchangeDTO,\n\tCommerceListingsDTO,\n\tCommercePricesDTO,\n\tCommerceTransactionDTO\n} from '../../models';\n\n/**\n * /v2/commerce Api\n */\nexport class CommerceApi extends ApiBase {\n\t/**\n\t * Get deliveries from Black Lion Trading Company\n\t *\n\t * @returns Deliveries awaiting pickup\n\t */\n\tasync getDeliveries(): Promise<CommerceDeliveryDTO> {\n\t\treturn await this.buildRequest<CommerceDeliveryDTO>(endpoints.commerce.delivery, {});\n\t}\n\n\t/**\n\t * Get the current coins to gems exchange rate.\n\t *\n\t * @param quantity - Quantity of coins to be exchanged (in copper coins)\n\t * @returns Coins to gems exchange rate\n\t */\n\tasync getExchangeCoins(quantity: number): Promise<CommerceExchangeDTO> {\n\t\treturn await this.buildRequest<CommerceExchangeDTO>(endpoints.commerce.exchangeCoins, {\n\t\t\tquantity\n\t\t});\n\t}\n\n\t/**\n\t * Get the current gem to coin exchange rate.\n\t *\n\t * @param quantity - Quantity of gems to be exhanged\n\t * @returns Gems to coins exchnage rate\n\t */\n\tasync getExchangeGems(quantity: number): Promise<CommerceExchangeDTO> {\n\t\treturn await this.buildRequest<CommerceExchangeDTO>(endpoints.commerce.exchangeGems, { quantity });\n\t}\n\n\t/**\n\t * Get current buy and sell listings from the trading post.\n\t *\n\t * TODO: Functionality to return a complete list of every listing is currently unsupported\n\t *\n\t * @param ids - Listing ids\n\t * @returns Buy and sell listings from the trading post\n\t */\n\tasync getListings(ids: number[]): Promise<CommerceListingsDTO[]> {\n\t\treturn await this.buildRequest<CommerceListingsDTO[]>(endpoints.commerce.listings, { ids });\n\t}\n\n\t/**\n\t * Get current aggregated buy and sell listing information from the trading post.\n\t *\n\t * TODO: Functionality to return a complete list of every listing is currently unsupported\n\t *\n\t * @param ids - Item ids\n\t * @returns Buy and sell details from the trading point\n\t */\n\tasync getPrices(ids: number[]): Promise<CommercePricesDTO[]> {\n\t\treturn await this.buildRequest<CommercePricesDTO[]>(endpoints.commerce.prices, { ids });\n\t}\n\n\t/**\n\t * Get current or past transactions of the account.\n\t *\n\t * Results are cached for 5 minutes.\n\t *\n\t * @param status - Current or historical transactions\n\t * @param type - Buy or sell transactions\n\t * @returns Transactions\n\t */\n\tasync getTransactions(status: 'current' | 'history', type: 'buys' | 'sells'): Promise<CommerceTransactionDTO[]> {\n\t\tif (status === 'current') {\n\t\t\tif (type === 'buys') {\n\t\t\t\treturn await this.buildRequest<CommerceTransactionDTO[]>(\n\t\t\t\t\tendpoints.commerce.transactionsCurrentBuys,\n\t\t\t\t\t{}\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn await this.buildRequest<CommerceTransactionDTO[]>(endpoints.commerce.transactionsCurrentSells, {});\n\t\t}\n\t\tif (type === 'buys') {\n\t\t\treturn await this.buildRequest<CommerceTransactionDTO[]>(endpoints.commerce.transactionsHistoryBuys, {});\n\t\t}\n\t\treturn await this.buildRequest<CommerceTransactionDTO[]>(endpoints.commerce.transactionsHistorySells, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport type { EmblemDTO } from '../../models';\n\n/**\n * /v2/emblem Api\n */\nexport class EmblemApi extends ApiBase {\n\t/**\n\t * Get Emblem by type and id\n\t *\n\t * @param type - Background or foreground\n\t * @param ids - Ids of the requested emblem foregrounds\n\t * @returns Emblem foreground information\n\t */\n\tasync getEmblem(type: 'foregrounds' | 'backgrounds', ids?: number[]): Promise<EmblemDTO[]> {\n\t\treturn await this.buildRequest<EmblemDTO[]>(endpoints.emblem, {\n\t\t\ttype,\n\t\t\tids: ids ?? 'all'\n\t\t});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport {\n\ttype GuildDTO,\n\ttype GuildLogDTO,\n\ttype GuildMembersDTO,\n\ttype GuildPermissionsDTO,\n\ttype GuildRanksDTO,\n\ttype GuildSearchDTO,\n\ttype GuildStashDTO,\n\ttype GuildStorageDTO,\n\ttype GuildTeamsDTO,\n\ttype GuildTreasuryDTO,\n\ttype GuildUpgradesDTO,\n\ttype GuildUpgradesInfoDTO\n} from '../../models';\n\n/**\n * /v2/guild Api\n */\nexport class GuildApi extends ApiBase {\n\t/**\n\t * Returns core details about a given guild.\n\t * The end point will include more or less fields depend on whether\n\t * an API Key of a Leader or Member of the Guild with the guilds scope\n\t * is included in the Request.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync get(id: string): Promise<GuildDTO> {\n\t\treturn await this.buildRequest<GuildDTO>(endpoints.guild.core, { id });\n\t}\n\n\t/**\n\t * Returns information about certain events in a guild's log.\n\t * The endpoint requires the scope guilds, and will only work if\n\t * the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t * @param since - Starting point for the log, by log id\n\t */\n\tasync getLog(id: string, since?: number): Promise<GuildLogDTO[]> {\n\t\treturn await this.buildRequest<GuildLogDTO[]>(endpoints.guild.log, { id, since: since ?? 0 });\n\t}\n\n\t/**\n\t * Returns information about the members of a specified guild.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getMembers(id: string): Promise<GuildMembersDTO[]> {\n\t\treturn await this.buildRequest<GuildMembersDTO[]>(endpoints.guild.members, { id });\n\t}\n\n\t/**\n\t * Returns information about the ranks of a specified guild.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getRanks(id: string): Promise<GuildRanksDTO[]> {\n\t\treturn await this.buildRequest<GuildRanksDTO[]>(endpoints.guild.ranks, { id });\n\t}\n\n\t/**\n\t * Returns information about the items in a guild's vault.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getStash(id: string): Promise<GuildStashDTO[]> {\n\t\treturn await this.buildRequest<GuildStashDTO[]>(endpoints.guild.stash, { id });\n\t}\n\n\t/**\n\t * Returns information about the items in a guild's storage.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getStorage(id: string): Promise<GuildStorageDTO[]> {\n\t\treturn await this.buildRequest<GuildStorageDTO[]>(endpoints.guild.storage, { id });\n\t}\n\n\t/**\n\t * Returns information about the teams in a guild.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getTeams(id: string): Promise<GuildTeamsDTO[]> {\n\t\treturn await this.buildRequest<GuildTeamsDTO[]>(endpoints.guild.teams, { id });\n\t}\n\n\t/**\n\t * Returns information about the items in a guild's treasury.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getTreasury(id: string): Promise<GuildTreasuryDTO[]> {\n\t\treturn await this.buildRequest<GuildTreasuryDTO[]>(endpoints.guild.treasury, { id });\n\t}\n\n\t/**\n\t * Returns information about the guild's upgrades.\n\t * The endpoint requires the scope guilds, and will only work\n\t * if the API key is from the guild leader's account.\n\t *\n\t * @param id - Unique guild id\n\t */\n\tasync getUpgrades(id: string): Promise<GuildUpgradesDTO> {\n\t\treturn await this.buildRequest<GuildUpgradesDTO>(endpoints.guild.upgrades, { id });\n\t}\n\n\t/**\n\t * Returns information about all guild permissions.\n\t */\n\tasync getPermissions(): Promise<GuildPermissionsDTO[]> {\n\t\treturn await this.buildRequest<GuildPermissionsDTO[]>(endpoints.guild.permissions, {});\n\t}\n\n\t/**\n\t * Returns information on guild ids to be used for other API queries.\n\t *\n\t * @param name - Guild name\n\t */\n\tasync find(name: string): Promise<GuildSearchDTO> {\n\t\treturn await this.buildRequest<GuildSearchDTO>(endpoints.guild.search, { name });\n\t}\n\n\t/**\n\t * Returns information about all available Guild Hall upgrades, including scribe decorations.\n\t *\n\t * @param ids - Guild upgrade ids\n\t */\n\tasync upgrades(ids: number[]): Promise<GuildUpgradesInfoDTO[]> {\n\t\treturn await this.buildRequest<GuildUpgradesInfoDTO[]>(endpoints.guild.upgradesInfo, { ids });\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { type HomeCatsDTO, type HomeNodesDTO } from '../../models';\nimport { endpoints } from '../endpoints';\n\n/**\n * /v2/home Api\n */\nexport class HomeApi extends ApiBase {\n\t/**\n\t * Returns information about cats.\n\t * Identical to /v2/cats\n\t *\n\t * @param ids - Cat ids\n\t */\n\tasync getCats(ids?: number[]): Promise<HomeCatsDTO[]> {\n\t\treturn await this.buildRequest<HomeCatsDTO[]>(endpoints.home.cats, { ids: ids ?? 'all' });\n\t}\n\n\t/**\n\t * Returns a list of all currently available home instance nodes.\n\t * Can be resolved against /v2/account/home/nodes to identify an account's unlocked nodes.\n\t *\n\t * @param ids - Node ids\n\t */\n\tasync getNodes(ids?: string[]): Promise<HomeNodesDTO[]> {\n\t\treturn await this.buildRequest<HomeNodesDTO[]>(endpoints.home.nodes, { ids: ids ?? 'all' });\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport type { ColorsDTO } from '../../models';\n\n/**\n * /v2/colors Api\n */\nexport class ColorsApi extends ApiBase {\n\t/**\n\t * Returns all dye colors in the game, including localized names and their color component information.\n\t *\n\t * @param ids - Ids of the requested colors, or \"all\"\n\t * @returns Color ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<ColorsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | ColorsDTO[]> {\n\t\tif (ids) return await this.buildRequest<ColorsDTO[]>(endpoints.colors.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.colors.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport type {\n\tContinentDTO,\n\tContinentRegionDTO,\n\tContinentsDTO,\n\tContinentsFloorsDTO,\n\tContinentsMapDTO\n} from '../../models';\n\n/**\n * /v2/continents api\n */\nexport class ContinentsApi extends ApiBase {\n\t/**\n\t * Get all continent ids\n\t *\n\t * @returns Continent ids\n\t */\n\tasync getAllContinents(): Promise<ContinentDTO[]> {\n\t\treturn await this.buildRequest<ContinentDTO[]>(endpoints.continents.core, {});\n\t}\n\n\t/**\n\t * Get continents by id\n\t *\n\t * @param continents Continent ids. If not present, returns all continents\n\t * @returns Continent details\n\t */\n\tasync getContinents(continents?: number[]): Promise<ContinentsDTO[]> {\n\t\treturn await this.buildRequest<ContinentsDTO[]>(endpoints.continents.continents, {\n\t\t\tcontinents: continents ?? 'all'\n\t\t});\n\t}\n\n\t/**\n\t * Get continent floors\n\t *\n\t * @param continent Continent id\n\t * @param floors Floor id\n\t * @returns Continent floor details\n\t */\n\tasync getContinentFloors(continent: number, floors?: number[]): Promise<ContinentsFloorsDTO[]> {\n\t\treturn await this.buildRequest<ContinentsFloorsDTO[]>(endpoints.continents.floors, {\n\t\t\tcontinent,\n\t\t\tfloors: floors ?? 'all'\n\t\t});\n\t}\n\n\t/**\n\t * Get regions in a continent floor\n\t *\n\t * @param continent Continent id\n\t * @param floor Floor id\n\t * @param regions Region ids\n\t * @returns Regions in a continent floor\n\t */\n\tasync getContinentFloorRegions(\n\t\tcontinent: number,\n\t\tfloor: number,\n\t\tregions?: number[]\n\t): Promise<ContinentRegionDTO[]> {\n\t\treturn await this.buildRequest<ContinentRegionDTO[]>(endpoints.continents.regions, {\n\t\t\tcontinent,\n\t\t\tfloor,\n\t\t\tregions: regions ?? 'all'\n\t\t});\n\t}\n\n\t/**\n\t * Get maps in a continent region\n\t *\n\t * @param continent Continent id\n\t * @param floor Floor id\n\t * @param region Region id\n\t * @param maps Map ids\n\t * @returns Maps in a continent region\n\t */\n\tasync getContinentFloorRegionMaps(\n\t\tcontinent: number,\n\t\tfloor: number,\n\t\tregion: number,\n\t\tmaps?: number[]\n\t): Promise<ContinentsMapDTO[]> {\n\t\t// Return requested maps with broad details\n\t\treturn await this.buildRequest<ContinentsMapDTO[]>(endpoints.continents.maps, {\n\t\t\tcontinent,\n\t\t\tfloor,\n\t\t\tregion,\n\t\t\tmaps: maps ?? 'all'\n\t\t});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type CurrenciesDTO } from '../../models';\n\n/**\n * /v2/currencies Api\n */\nexport class CurrenciesApi extends ApiBase {\n\t/**\n\t * Get the list of the currencies contained in the account wallet.\n\t *\n\t * @param ids Currency ids, or \"all\"\n\t * @returns In-game currency ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<CurrenciesDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | CurrenciesDTO[]> {\n\t\tif (ids) return await this.buildRequest<CurrenciesDTO[]>(endpoints.currencies.byId, { ids });\n\t\treturn await this.buildRequest<CurrenciesDTO[]>(endpoints.currencies.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type EmotesDTO } from '../../models';\n\n/**\n * /v2/emotes Api\n */\nexport class EmotesApi extends ApiBase {\n\t/**\n\t * Get information about unlockable emotes.\n\t *\n\t * @param ids Emote names, or \"all\"\n\t * @returns Emote names, or details\n\t */\n\tasync get(): Promise<string[]>;\n\tasync get(ids: string[] | 'all'): Promise<EmotesDTO[]>;\n\tasync get(ids?: string[] | 'all'): Promise<string[] | EmotesDTO[]> {\n\t\tif (ids && Array.isArray(ids)) {\n\t\t\t// For some reason, emote names are case-sensitive, and only some of them are capitalized =_=\n\t\t\tids = ids.map((id: string) => {\n\t\t\t\tif (['shiverplus', 'stretch'].includes(id.toLocaleLowerCase()))\n\t\t\t\t\treturn id[0]!.toLocaleUpperCase() + id.substring(1);\n\t\t\t\treturn id.toLocaleLowerCase();\n\t\t\t});\n\t\t\treturn await this.buildRequest<EmotesDTO[]>(endpoints.emotes.byId, { ids });\n\t\t}\n\t\treturn await this.buildRequest<string[]>(endpoints.emotes.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { type GlidersDTO } from '../../models';\nimport { endpoints } from '../endpoints';\n\n/**\n * /v2/gliders Api.\n * TODO: Pagination\n */\nexport class GlidersApi extends ApiBase {\n\t/**\n\t * Returns information about gliders that are available in-game.\n\t *\n\t * @param ids (optional) Glider ids. If not present, all will be requested\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<GlidersDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | GlidersDTO[]> {\n\t\tif (ids) return await this.buildRequest<GlidersDTO[]>(endpoints.gliders.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.gliders.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type ItemsDTO } from '../../models';\n\n/**\n * /v2/items Api\n */\nexport class ItemsApi extends ApiBase {\n\t/**\n\t * Returns information about items that were discovered by players in the game.\n\t *\n\t * @param ids - Item ids, of \"all\"\n\t * @returns Item ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<ItemsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | ItemsDTO[]> {\n\t\tif (ids) return await this.buildRequest<ItemsDTO[]>(endpoints.items.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.items.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type ItemStatsDTO } from '../../models';\n\n/**\n * /v2/itemstats Api\n */\nexport class ItemStatsApi extends ApiBase {\n\t/**\n\t * Returns information about itemstats for items that are in the game.\n\t *\n\t * @param ids - Itemstat ids, or \"all\"\n\t * @returns Item stats, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<ItemStatsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | ItemStatsDTO[]> {\n\t\tif (ids) return await this.buildRequest<ItemStatsDTO[]>(endpoints.itemstats.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.itemstats.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type LegendaryArmoryDTO } from '../../models';\n\n/**\n * /v2/legendaryarmory Api\n */\nexport class LegendaryArmoryApi extends ApiBase {\n\t/**\n\t * Returns information about Legendary Armory items that are available in-game\n\t *\n\t * @param ids - Legendary armory item ids\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<LegendaryArmoryDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | LegendaryArmoryDTO[]> {\n\t\tif (ids) return await this.buildRequest<LegendaryArmoryDTO[]>(endpoints.legendaryArmory.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.legendaryArmory.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type LegendsDTO } from '../../models';\n\n/**\n * /v2/legends Api\n */\nexport class LegendsApi extends ApiBase {\n\t/**\n\t * Returns information about the Revenant Legends that are in the game.\n\t * TODO: Implement schema choice.\n\t *\n\t * @param ids Legend ids, or \"all\"\n\t * @returns Legend ids, or details\n\t */\n\tasync get(): Promise<string[]>;\n\tasync get(ids: string[] | 'all'): Promise<LegendsDTO[]>;\n\tasync get(ids?: string[] | 'all'): Promise<string[] | LegendsDTO[]> {\n\t\tif (ids) return await this.buildRequest<LegendsDTO[]>(endpoints.legends.byId, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.legends.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MailCarriersDTO } from '../../models';\n\n/**\n * /v2/mailcarriers Api\n */\nexport class MailCarriersApi extends ApiBase {\n\t/**\n\t * Returns information about the mail carriers that are in the game.\n\t *\n\t * @param ids Map carrier ids, or \"all\"\n\t * @returns Map carrier ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<MailCarriersDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | MailCarriersDTO[]> {\n\t\tif (ids) return await this.buildRequest<MailCarriersDTO[]>(endpoints.mailCarriers.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.mailCarriers.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MapChestsDTO } from '../../models';\n\n/**\n * /v2/mapchests Api\n */\nexport class MapChestsApi extends ApiBase {\n\tasync get(): Promise<MapChestsDTO> {\n\t\t/**\n\t\t * Returns information about Hero's Choice Chests that can be be acquired once a day in-game.\n\t\t */\n\t\treturn await this.buildRequest<MapChestsDTO>(endpoints.mapChests, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MapsDTO } from '../../models';\n\n/**\n * /v2/maps Api\n *\n * NOTE: This endpoint is frequently out of sync.\n * Visit https://wiki.guildwars2.com/wiki/API:2/maps for more info\n */\nexport class MapsApi extends ApiBase {\n\t/**\n\t * Returns details about maps in the game, including details about\n\t * floor and translation data on how to translate between world coordinates and map coordinates.\n\t *\n\t * @param ids Map ids, la \"all\"\n\t * @returns Map details, or map ids\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<MapsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | MapsDTO[]> {\n\t\tif (ids) return await this.buildRequest<MapsDTO[]>(endpoints.maps.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.maps.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MasteriesDTO } from '../../models';\n\n/**\n * /v2/masteries Api\n * NOTE: This endpoint is known to have missing or incomplete data\n */\nexport class MasteriesApi extends ApiBase {\n\t/**\n\t * Returns information about masteries that are available in-game.\n\t *\n\t * @param ids Mastery ids\n\t * @returns Mastery details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<MasteriesDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | MasteriesDTO[]> {\n\t\tif (ids) return await this.buildRequest<MasteriesDTO[]>(endpoints.masteries.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.masteries.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MaterialsDTO } from '../../models';\n\n/**\n * /v2/materials Api.\n */\nexport class MaterialsApi extends ApiBase {\n\t/**\n\t * Returns information about the categories in material storage.\n\t *\n\t * @param ids Material ids, or \"all\"\n\t * @returns Material ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<MaterialsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | MaterialsDTO[]> {\n\t\tif (ids) return await this.buildRequest<MaterialsDTO[]>(endpoints.materials.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.materials.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MinisDTO } from '../../models';\n\n/**\n * /v2/minis Api\n */\nexport class MinisApi extends ApiBase {\n\t/**\n\t * Returns details about minis in the game.\n\t *\n\t * @param ids Mini ids, or \"all\"\n\t * @returns Mini ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<MinisDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | MinisDTO[]> {\n\t\tif (ids) return await this.buildRequest<MinisDTO[]>(endpoints.minis.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.minis.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type MountsTypesDTO, type MountsSkinsDTO } from '../../models';\n\n/**\n * /v2/mounts Api\n * TODO: Pagination\n */\nexport class MountsApi extends ApiBase {\n\t/**\n\t * Returns information about mount skins that are available in-game.\n\t *\n\t * @param ids Mount skin ids, or \"all\"\n\t * @returns Mount skin ids, or details\n\t */\n\tasync getSkins(): Promise<number[]>;\n\tasync getSkins(ids: number[] | 'all'): Promise<MountsSkinsDTO[]>;\n\tasync getSkins(ids?: number[] | 'all'): Promise<number[] | MountsSkinsDTO[]> {\n\t\tif (ids) return await this.buildRequest<MountsSkinsDTO[]>(endpoints.mountsSkins.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.mountsSkins.all, {});\n\t}\n\n\t/**\n\t * Returns information about mount types that are available in-game.\n\t *\n\t * @param ids Mount type ids, or \"all\"\n\t * @returns Mount type ids, or details\n\t */\n\tasync getTypes(): Promise<number[]>;\n\tasync getTypes(ids: number[] | 'all'): Promise<MountsTypesDTO[]>;\n\tasync getTypes(ids?: number[] | 'all'): Promise<number[] | MountsTypesDTO[]> {\n\t\tif (ids) return await this.buildRequest<MountsTypesDTO[]>(endpoints.mountsTypes.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.mountsTypes.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type NoveltiesDTO } from '../../models';\n\n/**\n * /v2/novelties Api\n */\nexport class NoveltiesApi extends ApiBase {\n\t/**\n\t * Returns details about novelties in the game.\n\t *\n\t * @param ids Novelty ids, or \"all\"\n\t * @returns Novelty ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<NoveltiesDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | NoveltiesDTO[]> {\n\t\tif (ids) return await this.buildRequest<NoveltiesDTO[]>(endpoints.novelties.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.novelties.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type OutfitsDTO } from '../../models';\n\n/**\n * /v2/outfits Api\n */\nexport class OutfitsApi extends ApiBase {\n\t/**\n\t * Returns information about the outfits that are in the game.\n\t *\n\t * @param ids Outfit ids, or \"all\"\n\t * @returns Outfit ids, or outfit details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<OutfitsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | OutfitsDTO[]> {\n\t\tif (ids) return await this.buildRequest<OutfitsDTO[]>(endpoints.outfits.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.outfits.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type PetsDTO } from '../../models';\n\n/**\n * /v2/pets Api\n */\nexport class PetsApi extends ApiBase {\n\t/**\n\t * Returns information about the Ranger pets that are in the game.\n\t *\n\t * @param ids - Pet ids, or \"all\"\n\t * @returns Ranger pet ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<PetsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | PetsDTO[]> {\n\t\tif (ids) return await this.buildRequest<PetsDTO[]>(endpoints.pets.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.pets.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type QuaggansDTO } from '../../models';\n\n/**\n * /v2/quaggans Api\n */\nexport class QuaggansApi extends ApiBase {\n\t/**\n\t * Returns quaggan images.\n\t *\n\t * @param ids - List of quaggan ids, or \"all\"\n\t * @returns Quaggan ids, or details\n\t */\n\tasync get(): Promise<string[]>;\n\tasync get(ids: string[] | 'all'): Promise<QuaggansDTO[]>;\n\tasync get(ids?: string[] | 'all'): Promise<string[] | QuaggansDTO[]> {\n\t\tif (ids) return await this.buildRequest<string[]>(endpoints.quaggans.byId, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.quaggans.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type QuestsDTO } from '../../models';\n\n/**\n * /v2/quests Api\n */\nexport class QuestsApi extends ApiBase {\n\t/**\n\t * Returns information about Story Journal missions within the personal story and Living World.\n\t *\n\t * @param ids - Quests ids, or \"all\"\n\t * @returns List of quest ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<QuestsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | QuestsDTO[]> {\n\t\tif (ids) return await this.buildRequest<QuestsDTO[]>(endpoints.quests.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.quests.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type RacesDTO } from '../../models';\n\n/**\n * /v2/races Api\n */\nexport class RacesApi extends ApiBase {\n\t/**\n\t * Returns information on in-game playable races.\n\t *\n\t * @param ids - Race ids, or \"all\"\n\t * @returns List of playable race ids, or details\n\t */\n\tasync get(): Promise<string[]>;\n\tasync get(ids: string[] | 'all'): Promise<RacesDTO[]>;\n\tasync get(ids?: string[] | 'all'): Promise<string[] | RacesDTO[]> {\n\t\tif (ids) return await this.buildRequest<RacesDTO[]>(endpoints.races.byId, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.races.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type RaidsDTO } from '../../models';\n\n/**\n * /v2/raids Api\n */\nexport class RaidsApi extends ApiBase {\n\t/**\n\t * Returns information on in-game raids.\n\t *\n\t * @param ids - Raid ids, or \"all\"\n\t * @returns List of raid ids, or details\n\t */\n\tasync get(): Promise<string[]>;\n\tasync get(ids: string[] | 'all'): Promise<RaidsDTO[]>;\n\tasync get(ids?: string[] | 'all'): Promise<string[] | RaidsDTO[]> {\n\t\tif (ids) return await this.buildRequest<RaidsDTO[]>(endpoints.raids.byId, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.raids.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type RecipesDTO } from '../../models';\n\n/**\n * /v2/recipes Api\n */\nexport class RecipesApi extends ApiBase {\n\t/**\n\t * TODO: Schema management\n\t * NOTE: The Api sometimes returns incorrect item ids in \"output_id\" fields\n\t * Returns information about recipes that were discovered by players in the game.\n\t *\n\t * @param ids - Recipe ids\n\t * @returns Recipe details\n\t */\n\tasync get(ids: number[]): Promise<RecipesDTO[]> {\n\t\treturn await this.buildRequest<RecipesDTO[]>(endpoints.recipes.byId, { ids });\n\t}\n\n\t/**\n\t * Allows searching for recipe.\n\t *\n\t * @param type - Either \"input\" or \"output\"\n\t * @param ids - Item ids to be searched for\n\t * @returns List of item ids where these items are used\n\t */\n\tasync search(type: 'input' | 'output', ids: number[]): Promise<number[]> {\n\t\treturn await this.buildRequest<number[]>(endpoints.recipes.search, { type, ids });\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type SkillsDTO } from '../../models';\n\n/**\n * /v2/skills Api\n */\nexport class SkillsApi extends ApiBase {\n\t/**\n\t * Returns information about skills usable by players in the game.\n\t *\n\t * @param ids - Skill ids\n\t * @returns Complete skill information\n\t */\n\tasync get(ids: number[]): Promise<SkillsDTO[]> {\n\t\treturn await this.buildRequest<SkillsDTO[]>(endpoints.skills, { ids });\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type SkinsDTO } from '../../models';\n\n/**\n * /v2/skins Api\n */\nexport class SkinsApi extends ApiBase {\n\t/**\n\t * Returns information about skins that were discovered by players in the game.\n\t *\n\t * @param ids - List of skin ids, or \"all\"\n\t * @returns List of skin ids, or details.\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<SkinsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | SkinsDTO[]> {\n\t\tif (ids) return await this.buildRequest<SkinsDTO[]>(endpoints.skins.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.skins.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type SpecializationsDTO } from '../../models';\n\n/**\n * /v2/specializations Api\n */\nexport class SpecializationsApi extends ApiBase {\n\t/**\n\t * Returns information on currently released specializations.\n\t *\n\t * @param ids - List of specialization ids, or \"all\"\n\t * @returns List of specialization ids, or details.\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<SpecializationsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | SpecializationsDTO[]> {\n\t\tif (ids) return await this.buildRequest<SpecializationsDTO[]>(endpoints.specializations.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.specializations.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type StoriesSeasonsDTO, type StoriesDTO } from '../../models';\n\nexport class StoriesApi extends ApiBase {\n\t/**\n\t * Returns information about the Story Journal stories; including the personal story and Living World.\n\t *\n\t * @param ids - List of story ids, or \"all\"\n\t * @returns List of story ids, or details.\n\t */\n\tasync getStories(): Promise<number[]>;\n\tasync getStories(ids: number[] | 'all'): Promise<StoriesDTO[]>;\n\tasync getStories(ids?: number[] | 'all'): Promise<number[] | StoriesDTO[]> {\n\t\tif (ids) return await this.buildRequest<StoriesDTO[]>(endpoints.stories.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.stories.all, {});\n\t}\n\n\t/**\n\t * Returns information about the Story Journal story seasons; including the personal story and Living World.\n\t *\n\t * @param ids - List of season ids, or \"all\"\n\t * @returns List of season ids, or details.\n\t */\n\tasync getSeasons(): Promise<string[]>;\n\tasync getSeasons(ids: string[] | 'all'): Promise<StoriesSeasonsDTO[]>;\n\tasync getSeasons(ids?: string[] | 'all'): Promise<string[] | StoriesSeasonsDTO[]> {\n\t\tif (ids) return await this.buildRequest<StoriesSeasonsDTO[]>(endpoints.seasons.byId, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.seasons.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { logger } from '../../base/logger';\nimport { endpoints } from '../endpoints';\nimport type { SubtokenDTO } from '../../models';\nimport type { ApiPermissions, EndpointUrls } from '../v2apiUtils';\n\nexport class SubtokenApi extends ApiBase {\n\t/**\n\t * /v2/createsubtoken Api\n\t *\n\t * @param expire Expiration date. Either valid date format, or ISO-8601\n\t * @param permissions Api token permissions\n\t * @param urls Specific /v2/ api urls to allow access to\n\t */\n\tasync get(expire: string, permissions: ApiPermissions[], urls?: EndpointUrls[]): Promise<SubtokenDTO> {\n\t\ttry {\n\t\t\texpire = new Date(expire).toISOString();\n\t\t} catch (e: unknown) {\n\t\t\tif (e instanceof RangeError) {\n\t\t\t\tlogger.error('Date must be of valid, or of ISO-8601 format.');\n\t\t\t\tthrow new RangeError();\n\t\t\t}\n\t\t}\n\n\t\tif (urls) {\n\t\t\treturn await this.buildRequest<SubtokenDTO>(endpoints.createSubtoken.url, {\n\t\t\t\texpire,\n\t\t\t\tpermissions,\n\t\t\t\turls\n\t\t\t});\n\t\t}\n\t\treturn await this.buildRequest<SubtokenDTO>(endpoints.createSubtoken.noUrl, {\n\t\t\texpire,\n\t\t\tpermissions\n\t\t});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type TitlesDTO } from '../../models';\n\nexport class TitlesApi extends ApiBase {\n\t/**\n\t * Returns information about the titles that are in the game.\n\t *\n\t * @param ids - List of title ids, or \"all\"\n\t * @returns List of title ids, or details.\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<TitlesDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | TitlesDTO[]> {\n\t\tif (ids) return await this.buildRequest<TitlesDTO[]>(endpoints.titles.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.titles.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type TokenInfoDTO } from '../../models';\n\n/**\n * /v2/tokeninfo Api\n */\nexport class TokenInfoApi extends ApiBase {\n\t/**\n\t * Returns information about the supplied API key.\n\t *\n\t * @returns Token details\n\t */\n\tasync get(): Promise<TokenInfoDTO> {\n\t\treturn await this.buildRequest<TokenInfoDTO>(endpoints.tokenInfo, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type TraitsDTO } from '../../models';\n\n/**\n * /v2/traits Api\n */\nexport class TraitsApi extends ApiBase {\n\t/**\n\t * Returns information about specific traits which are contained within specializations.\n\t *\n\t * @param ids - List of trait ids, or \"all\"\n\t * @returns List of trait ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<TraitsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | TraitsDTO[]> {\n\t\tif (ids) return await this.buildRequest<TraitsDTO[]>(endpoints.traits.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.traits.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\n\n/**\n * /v2/worldbosses Api\n */\nexport class WorldBossesApi extends ApiBase {\n\t/**\n\t * Returns information about scheduled World bosses in Core Tyria that reward boss chests that can be be opened once a day in-game.\n\t *\n\t * @returns List of available world bosses\n\t */\n\tasync get(): Promise<string[]> {\n\t\treturn await this.buildRequest<string[]>(endpoints.worldBosses, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport { type WorldsDTO } from '../../models';\n\n/**\n * /v2/worlds Api\n */\nexport class WorldsApi extends ApiBase {\n\t/**\n\t * Returns information about the available worlds, or servers.\n\t *\n\t * @param ids - List of realm ids, or \"all\"\n\t * @returns List of realm ids, or details\n\t */\n\tasync get(): Promise<number[]>;\n\tasync get(ids: number[] | 'all'): Promise<WorldsDTO[]>;\n\tasync get(ids?: number[] | 'all'): Promise<number[] | WorldsDTO[]> {\n\t\tif (ids) return await this.buildRequest<WorldsDTO[]>(endpoints.worlds.byId, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.worlds.all, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport {\n\ttype GamesDTO,\n\ttype AmuletsDTO,\n\ttype HeroesDTO,\n\ttype RanksDTO,\n\ttype SeasonDTO,\n\ttype SeasonLeaderboardsDTO,\n\ttype StandingsDTO,\n\ttype StatsDTO\n} from '../../models';\n\n/**\n * /v2/pvp Api\n */\nexport class PvPApi extends ApiBase {\n\t/**\n\t * Returns information about the PvP amulets that are in the game.\n\t *\n\t * @param ids - Amulet ids, or \"all\"\n\t * @returns Amulet ids, or details\n\t */\n\tasync getAmulets(): Promise<number[]>;\n\tasync getAmulets(ids: number[] | 'all'): Promise<AmuletsDTO[]>;\n\tasync getAmulets(ids?: number[] | 'all'): Promise<number[] | AmuletsDTO[]> {\n\t\tif (ids) return await this.buildRequest<AmuletsDTO[]>(endpoints.pvp.amuletsById, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.pvp.amuletsAll, {});\n\t}\n\n\t/**\n\t * Returns information about past PvP matches the player has participated in.\n\t *\n\t * @param ids - Game ids, or \"all\"\n\t * @returns Game ids, or details\n\t */\n\tasync getGames(): Promise<string[]>;\n\tasync getGames(ids: string[] | 'all'): Promise<GamesDTO[]>;\n\tasync getGames(ids?: string[] | 'all'): Promise<string[] | GamesDTO[]> {\n\t\tif (ids) return await this.buildRequest<GamesDTO[]>(endpoints.pvp.gamesById, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.pvp.gamesAll, {});\n\t}\n\n\t/**\n\t * Returns information about pvp heroess that are available in-game.\n\t *\n\t * @param ids - Hero ids, or \"all\"\n\t * @returns Hero ids, or details\n\t */\n\tasync getHeroes(): Promise<string[]>;\n\tasync getHeroes(ids: string[] | 'all'): Promise<HeroesDTO[]>;\n\tasync getHeroes(ids?: string[] | 'all'): Promise<string[] | HeroesDTO[]> {\n\t\tif (ids) return await this.buildRequest<HeroesDTO[]>(endpoints.pvp.heroesById, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.pvp.heroesAll, {});\n\t}\n\n\t/**\n\t * Returns information about the available ranks in the Player versus Player game mode.\n\t *\n\t * @param ids - Rank ids, or \"all\"\n\t * @returns Rank ids, or details\n\t */\n\tasync getRanks(): Promise<number[]>;\n\tasync getRanks(ids: number[] | 'all'): Promise<RanksDTO[]>;\n\tasync getRanks(ids?: number[] | 'all'): Promise<number[] | RanksDTO[]> {\n\t\tif (ids) return await this.buildRequest<RanksDTO[]>(endpoints.pvp.ranksById, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.pvp.ranksAll, {});\n\t}\n\n\t/**\n\t * Returns information about League seasons.\n\t *\n\t * @param ids - Season ids, or \"all\"\n\t * @returns Season ids, or details\n\t */\n\tasync getSeasons(): Promise<string[]>;\n\tasync getSeasons(ids: string[] | 'all'): Promise<SeasonDTO[]>;\n\tasync getSeasons(ids?: string[] | 'all'): Promise<string[] | SeasonDTO[]> {\n\t\tif (ids) return await this.buildRequest<SeasonDTO[]>(endpoints.pvp.seasonsById, { ids });\n\t\treturn await this.buildRequest<string[]>(endpoints.pvp.seasonsAll, {});\n\t}\n\n\t/**\n\t * Returns information about League season leaderboards for either NA or EU.\n\t *\n\t * @param id - PvP season id\n\t * @param type - For season 1-4, legendary or guild type. For season 5+, \"ladder\"\n\t * @param region - EU or NA region\n\t * @returns - Season laderboards\n\t */\n\tasync getLeaderboards(\n\t\tid: string,\n\t\ttype: 'legendary' | 'guild' | 'ladder',\n\t\tregion: 'na' | 'eu'\n\t): Promise<SeasonLeaderboardsDTO[]> {\n\t\treturn await this.buildRequest<SeasonLeaderboardsDTO[]>(endpoints.pvp.leaderboards, { id, type, region });\n\t}\n\n\t/**\n\t * Returns information about player pips.\n\t *\n\t * @returns Information about player's historical pvp standings\n\t */\n\tasync getStandings(): Promise<StandingsDTO[]> {\n\t\treturn await this.buildRequest<StandingsDTO[]>(endpoints.pvp.standings, {});\n\t}\n\n\t/**\n\t * Resource returns information about wins and losses in the account's PvP matches.\n\t *\n\t * @returns Information about player's PvP stats\n\t */\n\tasync getStats(): Promise<StatsDTO> {\n\t\treturn await this.buildRequest<StatsDTO>(endpoints.pvp.stats, {});\n\t}\n}\n","import { ApiBase } from '../../base/apiBase';\nimport { endpoints } from '../endpoints';\nimport {\n\ttype WvWMatchesDTO,\n\ttype WvWAbilitiesDTO,\n\ttype WvWMatchesOverviewDTO,\n\ttype WvWMatchesScoresDTO,\n\ttype WvWMatchesStatsDTO,\n\ttype WvWObjectivesDTO,\n\ttype WvWRanksDTO\n} from '../../models';\n\nexport class WorldVsWorldApi extends ApiBase {\n\t/**\n\t * Returns information about the available abilities in the World versus World game mode.\n\t *\n\t * @param ids - List of WvW ability ids\n\t * @returns List of WvW ability ids, or details\n\t */\n\tasync getAbilities(): Promise<number[]>;\n\tasync getAbilities(ids: number[] | 'all'): Promise<WvWAbilitiesDTO[]>;\n\tasync getAbilities(ids?: number[] | 'all'): Promise<number[] | WvWAbilitiesDTO[]> {\n\t\tif (ids) return await this.buildRequest<WvWAbilitiesDTO[]>(endpoints.wvw.abilitiesById, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.wvw.abilities, {});\n\t}\n\n\t/**\n\t * Returns further details about the specified match, including the total score, kills and deaths, and further details for each map.\n\t *\n\t * @param ids - List of match ids, or \"all\"\n\t */\n\tasync getMatches(): Promise<Array<`${number}-${number}`>>;\n\tasync getMatches(ids: Array<`${number}-${number}`> | 'all'): Promise<WvWMatchesDTO[]>;\n\tasync getMatches(\n\t\tids?: Array<`${number}-${number}`> | 'all'\n\t): Promise<Array<`${number}-${number}`> | WvWMatchesDTO[]> {\n\t\tif (ids) {\n\t\t\treturn await this.buildRequest<WvWMatchesDTO[]>(endpoints.wvw.matchesById, { ids });\n\t\t}\n\t\treturn await this.buildRequest<Array<`${number}-${number}`>>(endpoints.wvw.matches, {});\n\t}\n\n\t/**\n\t * Returns further details about the specified match, including the total score, kills and deaths, and further details for each map.\n\t * The same information as getMatches(), however more limited.\n\t *\n\t * @param type - Overview, Scores, or Stats for the matches\n\t * @param world - World id\n\t * @returns Match description\n\t */\n\tasync getMatchesByWorld(\n\t\ttype: 'overview' | 'scores' | 'stats',\n\t\tworld: number\n\t): Promise<WvWMatchesOverviewDTO | WvWMatchesScoresDTO | WvWMatchesStatsDTO> {\n\t\tif (type === 'overview') {\n\t\t\treturn await this.buildRequest<WvWMatchesOverviewDTO>(endpoints.wvw.matchesByWorld, {\n\t\t\t\ttype,\n\t\t\t\tworld\n\t\t\t});\n\t\t}\n\t\tif (type === 'scores') {\n\t\t\treturn await this.buildRequest<WvWMatchesScoresDTO>(endpoints.wvw.matchesByWorld, {\n\t\t\t\ttype,\n\t\t\t\tworld\n\t\t\t});\n\t\t}\n\t\treturn await this.buildRequest<WvWMatchesStatsDTO>(endpoints.wvw.matchesByWorld, {\n\t\t\ttype,\n\t\t\tworld\n\t\t});\n\t}\n\n\t/**\n\t * Returns details about World vs. World objectives such as camps, towers, and keeps.\n\t *\n\t * @param ids - Objective ids, or \"all\"\n\t * @returns List of objective ids, or details\n\t */\n\tasync getObjectives(): Promise<Array<`${number}-${number}`>>;\n\tasync getObjectives(ids: Array<`${number}-${number}`>): Promise<WvWObjectivesDTO[]>;\n\tasync getObjectives(\n\t\tids?: Array<`${number}-${number}`>\n\t): Promise<Array<`${number}-${number}`> | WvWObjectivesDTO[]> {\n\t\tif (ids) return await this.buildRequest<WvWObjectivesDTO[]>(endpoints.wvw.objectivesById, { ids });\n\t\treturn await this.buildRequest<Array<`${number}-${number}`>>(endpoints.wvw.objectives, {});\n\t}\n\n\t/**\n\t * Returns information about the available ranks in the World versus World game mode.\n\t *\n\t * @param ids - List of WvW rank ids, or \"all\"\n\t * @returns List of WvW rank ids, or details\n\t */\n\tasync getRanks(): Promise<number[]>;\n\tasync getRanks(ids: number[] | 'all'): Promise<WvWRanksDTO[]>;\n\tasync getRanks(ids?: number[] | 'all'): Promise<number[] | WvWRanksDTO[]> {\n\t\tif (ids) return await this.buildRequest<WvWRanksDTO[]>(endpoints.wvw.ranksById, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.wvw.ranks, {});\n\t}\n\n\t/**\n\t * Returns details about available World vs. World upgrades for objectives such as camps, towers, and keeps.\n\t *\n\t * @param ids - List of WvW upgrades, or \"all\"\n\t * @returns List of WvW upgrades, or details\n\t */\n\tasync getUpgrades(): Promise<number[]>;\n\tasync getUpgrades(ids: number[] | 'all'): Promise<WvWRanksDTO[]>;\n\tasync getUpgrades(ids?: number[] | 'all'): Promise<number[] | WvWRanksDTO[]> {\n\t\tif (ids) return await this.buildRequest<WvWRanksDTO[]>(endpoints.wvw.ranksById, { ids });\n\t\treturn await this.buildRequest<number[]>(endpoints.wvw.ranks, {});\n\t}\n}\n","import { ApiBase } from './base/apiBase';\nimport {\n\tAccountApi,\n\tAchievementsApi,\n\tCharactersApi,\n\tColorsApi,\n\tCommerceApi,\n\tContinentsApi,\n\tCurrenciesApi,\n\tEmblemApi,\n\tEmotesApi,\n\tGlidersApi,\n\tGuildApi,\n\tHomeApi,\n\tItemsApi,\n\tItemStatsApi,\n\tLegendaryArmoryApi,\n\tLegendsApi,\n\tMailCarriersApi,\n\tMapChestsApi,\n\tMapsApi,\n\tMasteriesApi,\n\tMaterialsApi,\n\tMinisApi,\n\tMountsApi,\n\tNoveltiesApi,\n\tOutfitsApi,\n\tPetsApi,\n\tPvPApi,\n\tQuaggansApi,\n\tQuestsApi,\n\tRacesApi,\n\tRaidsApi,\n\tRecipesApi,\n\tSkillsApi,\n\tSkinsApi,\n\tSpecializationsApi,\n\tStoriesApi,\n\tSubtokenApi,\n\tTitlesApi,\n\tTokenInfoApi,\n\tTraitsApi,\n\tWorldBossesApi,\n\tWorldsApi,\n\tWorldVsWorldApi\n} from './apis';\n\nexport class GW2Api extends ApiBase {\n\t/**\n\t * /v2/account Api\n\t */\n\treadonly account = new AccountApi(this.getParams());\n\n\t/**\n\t * /v2/achievements Api\n\t */\n\treadonly achievements = new AchievementsApi(this.getParams());\n\n\t/**\n\t * /v2/characters Api\n\t */\n\treadonly characters = new CharactersApi(this.getParams());\n\n\t/**\n\t * /v2/colors Api\n\t */\n\treadonly colors = new ColorsApi(this.getParams());\n\n\t/**\n\t * /v2/commerce Api\n\t */\n\treadonly commerce = new CommerceApi(this.getParams());\n\n\t/**\n\t * /v2/continents Api\n\t */\n\treadonly continents = new ContinentsApi(this.getParams());\n\n\t/**\n\t * /v2/currencies Api\n\t */\n\treadonly currencies = new CurrenciesApi(this.getParams());\n\n\t/**\n\t * /v2/emblem Api\n\t */\n\treadonly emblem = new EmblemApi(this.getParams());\n\n\t/**\n\t * /v2/emotes Api\n\t */\n\treadonly emotes = new EmotesApi(this.getParams());\n\n\t/**\n\t * /v2/gliders Api\n\t */\n\treadonly gliders = new GlidersApi(this.getParams());\n\n\t/**\n\t * /v2/guild Api\n\t */\n\treadonly guild = new GuildApi(this.getParams());\n\n\t/**\n\t * /v2/home Api\n\t */\n\treadonly home = new HomeApi(this.getParams());\n\n\t/**\n\t * /v2/items Api\n\t */\n\treadonly items = new ItemsApi(this.getParams());\n\n\t/**\n\t * /v2/itemstats Api\n\t */\n\treadonly itemstats = new ItemStatsApi(this.getParams());\n\n\t/**\n\t * /v2/legendaryarmory Api\n\t */\n\treadonly legendaryArmory = new LegendaryArmoryApi(this.getParams());\n\n\t/**\n\t * /v2/legends Api\n\t */\n\treadonly legends = new LegendsApi(this.getParams());\n\n\t/**\n\t * /v2/mailcarriers Api\n\t */\n\treadonly mailCarriers = new MailCarriersApi(this.getParams());\n\n\t/**\n\t * /v2/mapchests Api\n\t */\n\treadonly mapChests = new MapChestsApi(this.getParams());\n\n\t/**\n\t * /v2/maps Api\n\t */\n\treadonly maps = new MapsApi(this.getParams());\n\n\t/**\n\t * /v2/masteries Api\n\t */\n\treadonly masteries = new MasteriesApi(this.getParams());\n\n\t/**\n\t * /v2/materials Api\n\t */\n\treadonly materials = new MaterialsApi(this.getParams());\n\n\t/**\n\t * /v2/minis Api\n\t */\n\treadonly minis = new MinisApi(this.getParams());\n\n\t/**\n\t * /v2/mounts Api\n\t */\n\treadonly mounts = new MountsApi(this.getParams());\n\n\t/**\n\t * /v2/novelties Api\n\t */\n\treadonly novelties = new NoveltiesApi(this.getParams());\n\n\t/**\n\t * /v2/outfits Api\n\t */\n\treadonly outfits = new OutfitsApi(this.getParams());\n\n\t/**\n\t * /v2/pets Api\n\t */\n\treadonly pets = new PetsApi(this.getParams());\n\n\t/**\n\t * /v2/pvp Api\n\t */\n\treadonly pvp = new PvPApi(this.getParams());\n\n\t/**\n\t * /v2/quaggans Api\n\t */\n\treadonly quaggans = new QuaggansApi(this.getParams());\n\n\t/**\n\t * /v2/quests Api\n\t */\n\treadonly quests = new QuestsApi(this.getParams());\n\n\t/**\n\t * /v2/races Api\n\t */\n\treadonly races = new RacesApi(this.getParams());\n\n\t/**\n\t * /v2/raids Api\n\t */\n\treadonly raids = new RaidsApi(this.getParams());\n\n\t/**\n\t * /v2/recipes Api\n\t */\n\treadonly recipes = new RecipesApi(this.getParams());\n\n\t/**\n\t * /v2/skills Api\n\t */\n\treadonly skills = new SkillsApi(this.getParams());\n\n\t/**\n\t * /v2/skins Api\n\t */\n\treadonly skins = new SkinsApi(this.getParams());\n\n\t/**\n\t * /v2/specializations Api\n\t */\n\treadonly specializations = new SpecializationsApi(this.getParams());\n\n\t/**\n\t * /v2/stories Api\n\t */\n\treadonly stories = new StoriesApi(this.getParams());\n\n\t/**\n\t * /v2/subtoken Api\n\t */\n\treadonly subtoken = new SubtokenApi(this.getParams());\n\n\t/**\n\t * /v2/titles Api\n\t */\n\treadonly titles = new TitlesApi(this.getParams());\n\n\t/**\n\t * /v2/tokeninfo Api\n\t */\n\treadonly tokenInfo = new TokenInfoApi(this.getParams());\n\n\t/**\n\t * /v2/traits Api\n\t */\n\treadonly traits = new TraitsApi(this.getParams());\n\n\t/**\n\t * /v2/worldbosses Api\n\t */\n\treadonly worldBosses = new WorldBossesApi(this.getParams());\n\n\t/**\n\t * /v2/worlds Api\n\t */\n\treadonly worlds = new WorldsApi(this.getParams());\n\n\t/**\n\t * /v2/wvw Api\n\t */\n\treadonly wvw = new WorldVsWorldApi(this.getParams());\n}\n"]}
|