import * as jspb from 'google-protobuf'



export class TrackStatistics extends jspb.Message {
  getTrackId(): number;
  setTrackId(value: number): TrackStatistics;

  getTotalPlays(): number;
  setTotalPlays(value: number): TrackStatistics;

  getUniqueListeners(): number;
  setUniqueListeners(value: number): TrackStatistics;

  getTotalListeningSeconds(): number;
  setTotalListeningSeconds(value: number): TrackStatistics;

  getAverageListeningDuration(): number;
  setAverageListeningDuration(value: number): TrackStatistics;

  getTotalFavorites(): number;
  setTotalFavorites(value: number): TrackStatistics;

  getTotalPlaylistAdds(): number;
  setTotalPlaylistAdds(value: number): TrackStatistics;

  getCompletionRate(): number;
  setCompletionRate(value: number): TrackStatistics;

  getSkipRate(): number;
  setSkipRate(value: number): TrackStatistics;

  getUpdatedAt(): number;
  setUpdatedAt(value: number): TrackStatistics;

  getCreatedAt(): number;
  setCreatedAt(value: number): TrackStatistics;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TrackStatistics.AsObject;
  static toObject(includeInstance: boolean, msg: TrackStatistics): TrackStatistics.AsObject;
  static serializeBinaryToWriter(message: TrackStatistics, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): TrackStatistics;
  static deserializeBinaryFromReader(message: TrackStatistics, reader: jspb.BinaryReader): TrackStatistics;
}

export namespace TrackStatistics {
  export type AsObject = {
    trackId: number,
    totalPlays: number,
    uniqueListeners: number,
    totalListeningSeconds: number,
    averageListeningDuration: number,
    totalFavorites: number,
    totalPlaylistAdds: number,
    completionRate: number,
    skipRate: number,
    updatedAt: number,
    createdAt: number,
  }
}

export class ArtistStatistics extends jspb.Message {
  getArtistId(): number;
  setArtistId(value: number): ArtistStatistics;

  getTotalPlays(): number;
  setTotalPlays(value: number): ArtistStatistics;

  getUniqueListeners(): number;
  setUniqueListeners(value: number): ArtistStatistics;

  getTotalListeningSeconds(): number;
  setTotalListeningSeconds(value: number): ArtistStatistics;

  getFollowersCount(): number;
  setFollowersCount(value: number): ArtistStatistics;

  getTotalTracks(): number;
  setTotalTracks(value: number): ArtistStatistics;

  getTotalFavorites(): number;
  setTotalFavorites(value: number): ArtistStatistics;

  getTotalPlaylistAdds(): number;
  setTotalPlaylistAdds(value: number): ArtistStatistics;

  getAverageCompletionRate(): number;
  setAverageCompletionRate(value: number): ArtistStatistics;

  getUpdatedAt(): number;
  setUpdatedAt(value: number): ArtistStatistics;

  getCreatedAt(): number;
  setCreatedAt(value: number): ArtistStatistics;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): ArtistStatistics.AsObject;
  static toObject(includeInstance: boolean, msg: ArtistStatistics): ArtistStatistics.AsObject;
  static serializeBinaryToWriter(message: ArtistStatistics, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): ArtistStatistics;
  static deserializeBinaryFromReader(message: ArtistStatistics, reader: jspb.BinaryReader): ArtistStatistics;
}

export namespace ArtistStatistics {
  export type AsObject = {
    artistId: number,
    totalPlays: number,
    uniqueListeners: number,
    totalListeningSeconds: number,
    followersCount: number,
    totalTracks: number,
    totalFavorites: number,
    totalPlaylistAdds: number,
    averageCompletionRate: number,
    updatedAt: number,
    createdAt: number,
  }
}

export class TimeBasedStats extends jspb.Message {
  getTrackId(): number;
  setTrackId(value: number): TimeBasedStats;

  getDate(): string;
  setDate(value: string): TimeBasedStats;

  getPeriodType(): string;
  setPeriodType(value: string): TimeBasedStats;

  getPlays(): number;
  setPlays(value: number): TimeBasedStats;

  getUniqueListeners(): number;
  setUniqueListeners(value: number): TimeBasedStats;

  getListeningSeconds(): number;
  setListeningSeconds(value: number): TimeBasedStats;

  getFavorites(): number;
  setFavorites(value: number): TimeBasedStats;

  getPlaylistAdds(): number;
  setPlaylistAdds(value: number): TimeBasedStats;

  getTrendingScore(): number;
  setTrendingScore(value: number): TimeBasedStats;

  getCreatedAt(): number;
  setCreatedAt(value: number): TimeBasedStats;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TimeBasedStats.AsObject;
  static toObject(includeInstance: boolean, msg: TimeBasedStats): TimeBasedStats.AsObject;
  static serializeBinaryToWriter(message: TimeBasedStats, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): TimeBasedStats;
  static deserializeBinaryFromReader(message: TimeBasedStats, reader: jspb.BinaryReader): TimeBasedStats;
}

export namespace TimeBasedStats {
  export type AsObject = {
    trackId: number,
    date: string,
    periodType: string,
    plays: number,
    uniqueListeners: number,
    listeningSeconds: number,
    favorites: number,
    playlistAdds: number,
    trendingScore: number,
    createdAt: number,
  }
}

export class TrendingTrack extends jspb.Message {
  getTrackId(): number;
  setTrackId(value: number): TrendingTrack;

  getPeriodType(): string;
  setPeriodType(value: string): TrendingTrack;

  getRank(): number;
  setRank(value: number): TrendingTrack;

  getTrendingScore(): number;
  setTrendingScore(value: number): TrendingTrack;

  getRankChange(): number;
  setRankChange(value: number): TrendingTrack;

  getPlaysChangePercent(): number;
  setPlaysChangePercent(value: number): TrendingTrack;

  getPeriodDate(): string;
  setPeriodDate(value: string): TrendingTrack;

  getUpdatedAt(): number;
  setUpdatedAt(value: number): TrendingTrack;

  getCreatedAt(): number;
  setCreatedAt(value: number): TrendingTrack;

  serializeBinary(): Uint8Array;
  toObject(includeInstance?: boolean): TrendingTrack.AsObject;
  static toObject(includeInstance: boolean, msg: TrendingTrack): TrendingTrack.AsObject;
  static serializeBinaryToWriter(message: TrendingTrack, writer: jspb.BinaryWriter): void;
  static deserializeBinary(bytes: Uint8Array): TrendingTrack;
  static deserializeBinaryFromReader(message: TrendingTrack, reader: jspb.BinaryReader): TrendingTrack;
}

export namespace TrendingTrack {
  export type AsObject = {
    trackId: number,
    periodType: string,
    rank: number,
    trendingScore: number,
    rankChange: number,
    playsChangePercent: number,
    periodDate: string,
    updatedAt: number,
    createdAt: number,
  }
}

