RockPaperScissors/node_modules/node-osu/index.d.ts
2021-12-02 17:22:41 +01:00

487 lines
14 KiB
TypeScript

/** Declaration file generated by dts-gen */
export class Api {
/**
* Creates a new node-osu object
* @param {String} apiKey your osu api key
* @param {Object} [options]
* @param {String} [options.baseUrl="https://osu.ppy.sh/api"] Sets the base api url
* @param {Boolean} [options.notFoundAsError=true] Throw an error on not found instead of returning nothing
* @param {Boolean} [options.completeScores=false] When fetching scores also fetch the beatmap they are for (Allows getting accuracy)
* @param {Boolean} [options.parseNumeric=false] Parse numeric properties into numbers. May have overflow
*/
constructor(apiKey: string, options: constructorOptions);
/**
* Makes an api call
* @param {String} endpoint
* @param {Object} options
* @param {Date} [options.since] Return all beatmaps ranked or loved since this date
* @param {String} [options.s] Specify a beatmapSetId to return metadata from
* @param {String} [options.b] Specify a beatmapId to return metadata from
* @param {String} [options.u] Specify a userId or a username to return metadata from
* @param {"string"|"id"} [options.type] Specify if `u` is a userId or a username
* @param {0|1|2|3} [options.m] Mode (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania)
* @param {0|1} [options.a] Specify whether converted beatmaps are included
* @param {String} [options.h] The beatmap hash
* @param {Number} [options.limit] Amount of results. Default and maximum are 500
* @param {Number} [options.mods] Mods that apply to the beatmap requested. Default is 0
* @param {Number} [options.event_days] Max number of days between now and last event date. Range of 1-31. Default value is 1
* @param {String} [options.mp] Match id to get information from
* @returns {Promise<Object>} The response body
*/
apiCall(endpoint, options: apiCallOptions): Promise<Object>;
/**
* Returns an array of Beatmap objects
* @param {Object} options
* @param {String} options.b Specify a beatmapId to return metadata from
* @param {Date} [options.since] Return all beatmaps ranked or loved since this date
* @param {String} [options.s] Specify a beatmapSetId to return metadata from
* @param {String} [options.u] Specify a userId or a username to return metadata from
* @param {"string"|"id"} [options.type] Specify if `u` is a userId or a username
* @param {0|1|2|3} [options.m] Mode (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania)
* @param {0|1} [options.a] Specify whether converted beatmaps are included
* @param {String} [options.h] The beatmap hash
* @param {Number} [options.limit] Amount of results. Default and maximum are 500
* @param {Number} [options.mods] Mods that apply to the beatmap requested. Default is 0
* @returns {Promise<Beatmap[]>}
*/
getBeatmaps(options: getBeatmapsOptions): Promise<Beatmap[]>;
/**
* Returns a Match object.
* @param {Object} options
* @param {String} options.mp Match id to get information from
* @returns {Promise<Match>}
*/
getMatch(options: getMatchOptions): Promise<Match>;
/**
* Returns a replay object. **Do not spam this endpoint.**
* @param {Object} options
* @param {0|1|2|3} options.m Mode (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania)
* @param {String} options.b The beatmapId in which the replay was played
* @param {String} options.u The user that has played the beatmap (required)
* @param {"string"|"id"} [options.type] Specify if u is a userId or a username
* @param {Number} [options.mods] Specify a mod or mod combination
*
*/
getReplay(options: getReplayOptions): Promise<any>;
/**
* Returns an array of Score objects
* @param {Object} options
* @param {String} options.b Specify a beatmapId to return score information from
* @param {String} [options.u] Specify a userId or a username to return information for
* @param {0|1|2|3} [options.m] Mode (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania)
* @param {"string"|"id"} [options.type] Specify if u is a user_id or a username
* @param {Number} [options.limit] Amount of results from the top (range between 1 and 100 - defaults to 50)
* @returns {Promise<Score[]>}
*/
getScores(options: getScoresOptions): Promise<Score[]>;
/**
* Returns a User object
* @param {Object} options
* @param {String} options.u Specify a userId or a username to return metadata from
* @param {0|1|2|3} [options.m] Mode (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania)
* @param {"string"|"id"} [options.type] Specify if u is a user_id or a username
* @param {Number} [options.event_days] Max number of days between now and last event date. Range of 1-31. Default value is 1
* @returns {Promise<User>}
*/
getUser(options: getUserOptions): Promise<User>;
/**
* Returns an array of Score objects
* @param {Object} options
* @param {String} options.u Specify a userId or a username to return best scores from
* @param {0|1|2|3} [options.m] Mode (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania)
* @param {"string"|"id"} [options.type] Specify if u is a user_id or a username
* @param {Number} [options.limit] Amount of results (range between 1 and 100 - defaults to 10)
* @returns {Promise<Score[]>}
*/
getUserBest(options: getUserBestOptions): Promise<Score[]>;
/**
* Returns an array of Score objects.
* Will return not found if the user has not submitted any scores in the past 24 hours
* @param {Object} options
* @param {String} options.u Specify a userId or a username to return recent plays from
* @param {0|1|2|3} [options.m] Mode (0 = osu!, 1 = Taiko, 2 = CtB, 3 = osu!mania)
* @param {"string"|"id"} [options.type] Specify if `u` is a user_id or a username
* @param {Number} [options.limit] Amount of results (range between 1 and 50 - defaults to 10)
* @returns {Promise<Score[]>}
*/
getUserRecent(options: getUserRecentOptions): Promise<Score[]>;
/**
* Returns a not found error or the response, depending on the config
* @param {Object} response
* @returns {Object}
*/
notFound(response: notFoundResponse): any;
}
export class Beatmap {
id: string;
beatmapSetId: string;
hash: string;
title: string;
creator: string;
version: string;
source: string;
artist: string;
genre: Constants['Beatmaps']['genre'];
language: Constants['Beatmaps']['language'];
rating: number;
bpm: number;
mode: Constants['Beatmaps']['mode'];
tags: string[];
approvalStatus: Constants['Beatmaps']['approved'];
raw_submitDate: string;
raw_approvedDate: string;
raw_lastUpdate: string;
maxCombo: number;
objects: {
normal: number,
slider: number,
spinner: number
};
difficulty: {
rating: number,
aim: number,
speed: number,
size: number,
overall: number,
approach: number,
drain: number
};
length: {
total: number,
drain: number
};
counts: {
favorites: number,
favourites: number,
plays: number,
passes: number
};
hasDownload: boolean;
hasAudio: boolean;
}
export class Event {
html: string;
beatmapId: string;
beatmapsetId: string;
raw_date: string;
epicFactor: number;
}
export class Match {
id: string;
name: string;
raw_start: string;
raw_end: string;
games: Game[];
// Getters
start: Date;
end: Date
}
export class Game {
id: string;
raw_start: string;
raw_end: string;
beatmapId: string;
mode: string;
matchType: string; // Unknown purpose
scoringType: string;
teamType: string;
raw_mods: number;
scores: MultiplayerScore[] // Will be empty if in progress
// Getters
start: Date;
end: Date;
mods: Constants['Mods'][] // Array of `Constants.Mods` required for all players
}
export class MultiplayerScore {
constructor(...args: any[]);
}
export class Score {
score: number;
user: {
'name': string | null,
'id': string
};
beatmapId: string | Beatmap;
counts: {
'300': number,
'100': number,
'50': number,
'geki': number,
'katu': number,
'miss': number
};
maxCombo: number;
perfect: boolean;
raw_date: string;
rank: string;
pp: number;
hasReplay: boolean;
raw_mods: number;
beatmap: Beatmap;
date: Date | string;
mods: string[] | string;
accuracy: undefined | string | number;
}
export class User {
id: number;
name: string;
counts: {
'300': number,
'100': number,
'50': number,
'SSH': number,
'SS': number,
'SH': number,
'S': number,
'A': number,
'plays': number
};
scores: {
ranked: number;
total: number;
};
pp: {
raw: Number,
rank: Number,
countryRank: Number
};
country: string;
level: number;
accuracy: number;
secondsPlayed: number;
raw_joinDate: string;
events;
joinDate: Date | string;
accuracyFormatted: string
}
export class Constants {
AccuracyMethods: {
"Catch the Beat": any;
Mania: any;
Standard: any;
Taiko: any;
};
Beatmaps: {
approved: {
"-1": string;
"-2": string;
"0": string;
"1": string;
"2": string;
"3": string;
"4": string;
};
genre: {
"0": string;
"1": string;
"10": string;
"2": string;
"3": string;
"4": string;
"5": string;
"6": string;
"7": string;
"9": string;
};
language: {
"0": string;
"1": string;
"10": string;
"11": string;
"2": string;
"3": string;
"4": string;
"5": string;
"6": string;
"7": string;
"8": string;
"9": string;
};
mode: {
"0": string;
"1": string;
"2": string;
"3": string;
};
};
Mods: {
Autoplay: number;
Cinema: number;
DoubleTime: number;
Easy: number;
FadeIn: number;
Flashlight: number;
FreeModAllowed: number;
HalfTime: number;
HardRock: number;
Hidden: number;
Key1: number;
Key2: number;
Key3: number;
Key4: number;
Key5: number;
Key6: number;
Key7: number;
Key8: number;
Key9: number;
KeyCoop: number;
KeyMod: number;
Mirror: number;
Nightcore: number;
NoFail: number;
None: number;
Perfect: number;
Random: number;
Relax: number;
Relax2: number;
ScoreIncreaseMods: number;
ScoreV2: number;
SpunOut: number;
SuddenDeath: number;
Target: number;
TouchDevice: number;
};
Multiplayer: {
scoringType: {
"0": string;
"1": string;
"2": string;
"3": string;
};
team: {
"0": string;
"1": string;
"2": string;
};
teamType: {
"0": string;
"1": string;
"2": string;
"3": string;
};
};
URLSchemas: {
channel: any;
download: any;
edit: any;
multiplayerMatch: any;
spectate: any;
};
}
//Options
declare class constructorOptions {
baseUrl?: boolean;
notFoundAsError?: boolean;
completeScores?: boolean;
parseNumeric?: boolean;
}
declare class apiCallOptions {
since?: Date
s?: string;
b?: string
u?: string;
type?: 'string' | 'id';
m?: 0 | 1 | 2 | 3;
a?: 0 | 1;
h?: string;
limit?: number;
mods?: number;
event_days?: number;
mp?: string;
}
declare class getBeatmapsOptions {
b?: string;
since?: Date;
s?: string;
u?: string;
type?: 'string' | 'id';
m?: 0 | 1 | 2 | 3;
a?: 0 | 1;
h?: string;
limit?: number;
mods?: number;
}
declare class getMatchOptions {
mp?: string;
}
declare class getReplayOptions {
m?: 0 | 1 | 2 | 3;
b?: string;
u?: string;
type?: 'string' | 'id';
mods?: number;
}
declare class getScoresOptions {
b?: string;
u?: string;
m?: 0 | 1 | 2 | 3;
type?: 'string' | 'id';
limit?: number;
}
declare class getUserOptions {
u?: string;
m?: 0 | 1 | 2 | 3;
type?: 'string' | 'id';
event_days?: number;
}
declare class getUserBestOptions {
u?: string;
m?: 0 | 1 | 2 | 3;
type?: 'string' | 'id';
limit?: number;
}
declare class getUserRecentOptions {
u?: string;
m?: 0 | 1 | 2 | 3;
type?: 'string' | 'id';
limit?: number;
}
declare class notFoundResponse {
response?: object;
}