Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
105 commits
Select commit Hold shift + click to select a range
7f92947
declaration files
Daimywil Aug 10, 2025
e9595e4
Merge branch 'main' into typescript-declaration-files
Daimywil Aug 10, 2025
2820347
declarations
Daimywil Aug 10, 2025
24f3fca
more types
Daimywil Aug 11, 2025
6871bb8
typings
Daimywil Aug 11, 2025
3b3a66c
more typings
Daimywil Aug 13, 2025
58cc402
added more types
Daimywil Aug 14, 2025
4d5a15a
even more types
Daimywil Aug 19, 2025
621683e
updated observable pipe typing
Daimywil Aug 20, 2025
1ef1c33
created index fiels
Daimywil Aug 20, 2025
d6a71d8
added missing index.d.ts files
Daimywil Aug 20, 2025
d7fa6b8
added missing index.d.ts files
Daimywil Aug 20, 2025
f70ff3c
more types
Daimywil Aug 20, 2025
d1428dc
more types
Daimywil Aug 21, 2025
04f15b3
more types
Daimywil Aug 21, 2025
216d2d8
more typings
Daimywil Aug 22, 2025
f8628c7
more typings
Daimywil Aug 22, 2025
d8adfa7
update
Daimywil Aug 22, 2025
720ff3f
more types
Daimywil Aug 22, 2025
42064c8
more typings
Daimywil Aug 22, 2025
5f34ff4
more typings
Daimywil Aug 22, 2025
f63cfda
more types
Daimywil Aug 22, 2025
2a4dfe5
more types
Daimywil Aug 24, 2025
bc66d19
more typings and added missing dependencies
Daimywil Aug 25, 2025
bdb10d3
more types
Daimywil Aug 31, 2025
8cfe7ad
more types
Daimywil Sep 1, 2025
e158305
a bunch of fixes and additions
Daimywil Sep 2, 2025
39beab6
more types!!
Daimywil Sep 3, 2025
903b4d0
more typings
Daimywil Sep 4, 2025
236f6fb
crazy amount of extra types
Daimywil Sep 8, 2025
daecdbf
files
Daimywil Sep 8, 2025
d2ed2cd
more types
Daimywil Sep 10, 2025
30a4328
a week of typing types
Daimywil Sep 14, 2025
345f34f
more types
Daimywil Sep 14, 2025
ecdd272
updates
Daimywil Sep 15, 2025
471f2e8
type fixes
Daimywil Sep 17, 2025
4d01f4f
fixed a function type
Daimywil Sep 17, 2025
c26f8db
rogue properties and other types
Daimywil Sep 19, 2025
2ae015c
more typings
Daimywil Sep 19, 2025
58141cb
even more types
Daimywil Sep 20, 2025
52a3e01
added more types
Daimywil Sep 20, 2025
de638f7
finished all types
Daimywil Sep 25, 2025
7f23d21
reverted extra changes
Daimywil Sep 25, 2025
23fe35a
fixed service bag typings
Daimywil Sep 25, 2025
2cac1b5
fixed binder typings
Daimywil Sep 25, 2025
98544ca
fixed adorneedata typings
Daimywil Sep 26, 2025
eb88e5e
fixed observable typings using unresolved generics
Daimywil Sep 26, 2025
c742e7e
exported missing brio utils
Daimywil Sep 27, 2025
2afcce9
fixed valueobject types
Daimywil Sep 28, 2025
0f05755
fixed baseobject typings
Daimywil Sep 29, 2025
240ef0e
fix observable types
Daimywil Sep 29, 2025
8653a76
rx where operator can now refine to non undefined or undefined
Daimywil Sep 29, 2025
164643c
fixed playerutils types
Daimywil Sep 29, 2025
a728471
added missing maid method
Daimywil Sep 29, 2025
69db7b4
improved binder typings
Daimywil Sep 30, 2025
f2b607a
improved binder and brioutils types
Daimywil Sep 30, 2025
d0daee3
improved signal typings
Daimywil Oct 1, 2025
150dc31
fixed RxBrioUtils.flatMapBrio
Daimywil Oct 1, 2025
abcf62c
improved valueobject typings
Daimywil Oct 1, 2025
43a46b0
improved rx types
Daimywil Oct 1, 2025
841d7dd
improved rxbrioutils
Daimywil Oct 1, 2025
7326111
improved rxbrioutils
Daimywil Oct 1, 2025
9883354
improved rxbrioutils
Daimywil Oct 1, 2025
b21b5de
fixed rxbrioutils
Daimywil Oct 1, 2025
50f66b5
improved brio types
Daimywil Oct 1, 2025
1da0073
added missing observablelist tuple argument
Daimywil Oct 1, 2025
5786fb7
observablelist fix
Daimywil Oct 1, 2025
956c92f
fix
Daimywil Oct 1, 2025
7cc1983
altered subscription types
Daimywil Oct 2, 2025
c43b7b0
improved signal types
Daimywil Oct 3, 2025
c5fe463
added missing isBrio method
Daimywil Oct 4, 2025
4be4cfc
fixed rxcharacterutils type
Daimywil Oct 4, 2025
f737311
fixed flatmap brio
Daimywil Oct 4, 2025
ed53108
fixed a type
Daimywil Oct 4, 2025
0252731
added helper type
Daimywil Oct 4, 2025
1e483ba
improved rxbrioutils types
Daimywil Oct 4, 2025
55cf68a
fixed tuple check
Daimywil Oct 4, 2025
dfb5bef
allowed usage of tap without providing arguments
Daimywil Oct 4, 2025
3796b41
improved rxbrioutils.of
Daimywil Oct 5, 2025
873069a
improved rx map type
Daimywil Oct 5, 2025
5afc912
updated adornee data entry typings
Daimywil Oct 6, 2025
c93deaf
improved types
Daimywil Oct 6, 2025
c8415c3
fixes
Daimywil Oct 6, 2025
fb81687
added valueobject constructor overload
Daimywil Oct 6, 2025
aef5d9c
improved adorneedatavalue types
Daimywil Oct 6, 2025
7148200
fixed type
Daimywil Oct 6, 2025
1da6399
improved rx.merge typings
Daimywil Oct 6, 2025
09911c1
fixed Rx.interval
Daimywil Oct 6, 2025
16dc711
improved observable luatuple type
Daimywil Oct 6, 2025
00319d4
improved rxinstanceutils types
Daimywil Oct 8, 2025
e33f807
improved rxattributeutils
Daimywil Oct 8, 2025
8127f8a
fixed mapbriobrio
Daimywil Oct 10, 2025
97fcb29
fixed mapbriobrio
Daimywil Oct 10, 2025
f010e04
improves types
Daimywil Oct 10, 2025
7db7357
fixed mapbriobrio
Daimywil Oct 11, 2025
a658114
fixed cmdr type
Daimywil Oct 12, 2025
b290846
fixed wrong binder method return type
Daimywil Oct 15, 2025
f90ab3b
improved attributevalue typings
Daimywil Oct 16, 2025
397d72b
improved Rx.defaultsTo
Daimywil Oct 18, 2025
b5cb55a
fixed binder promise type
Daimywil Oct 19, 2025
72facb1
fixed ValueObjectLike
Daimywil Oct 20, 2025
67de039
improved attributevalue types
Daimywil Oct 20, 2025
5227446
added missing observable map list methods
Daimywil Oct 21, 2025
a6573f5
fixed observable map list push method typings
Daimywil Oct 21, 2025
d1c2e0f
fixed observable map list push type
Daimywil Oct 21, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
1 change: 1 addition & 0 deletions src/acceltween/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './src/Shared/AccelTween';
15 changes: 15 additions & 0 deletions src/acceltween/src/Shared/AccelTween.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
type AccelTween = {
p: number;
v: number;
a: number;
t: number;
rtime: number;
pt: number;
};

interface AccelTweenConstructor {
readonly ClassName: 'AccelTween';
new (maxAcceleration?: number): AccelTween;
}

export const AccelTween: AccelTweenConstructor;
1 change: 1 addition & 0 deletions src/accessorytypeutils/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './src/Shared/AccessoryTypeUtils';
12 changes: 12 additions & 0 deletions src/accessorytypeutils/src/Shared/AccessoryTypeUtils.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
export namespace AccessoryTypeUtils {
function tryGetAccessoryType(
avatarAssetType: Enum.AvatarAssetType
): LuaTuple<[accessoryType?: Enum.AccessoryType, err?: string]>;
function getAccessoryTypeFromName(accessoryType: string): Enum.AccessoryType;
function convertAssetTypeIdToAssetType(
assetTypeId: number
): Enum.AssetType | undefined;
function convertAssetTypeIdToAvatarAssetType(
avatarAssetTypeId: number
): Enum.AvatarAssetType | undefined;
}
2 changes: 2 additions & 0 deletions src/actionmanager/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './src/Client/ActionManager';
export * from './src/Client/BaseAction';
23 changes: 23 additions & 0 deletions src/actionmanager/src/Client/ActionManager.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import { Signal } from '@quenty/signal';
import { ValueObject } from '@quenty/valueobject';
import { BaseAction } from './BaseAction';

interface ActionManager {
ActiveAction: ValueObject<BaseAction | undefined>;
ActionAdded: Signal<BaseAction>;
StopCurrentAction(): void;
ActivateAction<T extends BaseAction>(action: T, ...args: unknown[]): void;
GetAction(name: string): BaseAction | undefined;
GetActions(): BaseAction[];
AddAction(action: BaseAction): void;
Destroy(): void;
}

interface ActionManagerConstructor {
readonly ClassName: 'ActionManager';
new (parent?: Instance): ActionManager;

ExtraPixels: 2;
}

export const ActionManager: ActionManagerConstructor;
40 changes: 40 additions & 0 deletions src/actionmanager/src/Client/BaseAction.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { EnabledMixin } from '@quenty/enabledmixin';
import { Maid } from '@quenty/maid';
import { Signal } from '@quenty/signal';
import { ValueObject } from '@quenty/valueobject';

export interface ActionData {
Name: string;
Shortcuts?: (Enum.KeyCode | Enum.UserInputType)[];
}

interface BaseAction<T = void> extends EnabledMixin {
Activated: Signal<
[
actionMaid: Maid,
...activateData: T extends void ? [] : T extends unknown[] ? T : [T]
]
>;
Deactivated: Signal;
IsActivatedValue: ValueObject<boolean>;
GetName(): string;
GetData(): ActionData;
ToggleActivate(
...activateData: T extends void ? [] : T extends unknown[] ? T : [T]
): void;
IsActive(): boolean;
Deactivate(): void;
Activate(
...activateData: T extends void ? [] : T extends unknown[] ? T : [T]
): void;
Destroy(): void;
}

interface BaseActionConstructor {
readonly ClassName: 'BaseAction';
new <T extends unknown[] | void = void>(
actionData: ActionData
): BaseAction<T>;
}

export const BaseAction: BaseActionConstructor;
4 changes: 4 additions & 0 deletions src/adorneeboundingbox/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export * from './src/Shared/AdorneeBoundingBox';
export * from './src/Shared/AdorneeModelBoundingBox';
export * from './src/Shared/AdorneePartBoundingBox';
export * from './src/Shared/RxPartBoundingBoxUtils';
24 changes: 24 additions & 0 deletions src/adorneeboundingbox/src/Shared/AdorneeBoundingBox.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { BaseObject } from '@quenty/baseobject';
import { Observable } from '@quenty/rx';

interface BoundingBoxData {
CFrame: CFrame;
Size: Vector3;
}

interface AdorneeBoundingBox extends BaseObject {
SetAdornee(adornee: Instance | undefined): () => void;
ObserveBoundingBox(): Observable<BoundingBoxData>;
GetBoundingBox(): BoundingBoxData | undefined;
ObserveCFrame(): Observable<CFrame | undefined>;
GetCFrame(): CFrame | undefined;
ObserveSize(): Observable<Vector3 | undefined>;
GetSize(): Vector3 | undefined;
}

interface AdorneeBoundingBoxConstructor {
readonly ClassName: 'AdorneeBoundingBox';
new (initialAdornee?: Instance): AdorneeBoundingBox;
}

export const AdorneeBoundingBox: AdorneeBoundingBoxConstructor;
14 changes: 14 additions & 0 deletions src/adorneeboundingbox/src/Shared/AdorneeModelBoundingBox.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { BaseObject } from '@quenty/baseobject';
import { Observable } from '@quenty/rx';

interface AdorneeModelBoundingBox extends BaseObject {
ObserveCFrame(): Observable<CFrame>;
ObserveSize(): Observable<Vector3>;
}

interface AdorneeModelBoundingBoxConstructor {
readonly ClassName: 'AdorneeModelBoundingBox';
new (model: Model): AdorneeModelBoundingBox;
}

export const AdorneeModelBoundingBox: AdorneeModelBoundingBoxConstructor;
14 changes: 14 additions & 0 deletions src/adorneeboundingbox/src/Shared/AdorneePartBoundingBox.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { BaseObject } from '@quenty/baseobject';
import { Observable } from '@quenty/rx';

interface AdorneePartBoundingBox extends BaseObject {
ObserveCFrame(): Observable<CFrame>;
ObserveSize(): Observable<Vector3>;
}

interface AdorneePartBoundingBoxConstructor {
readonly ClassName: 'AdorneePartBoundingBox';
new (part: BasePart): AdorneePartBoundingBox;
}

export const AdorneePartBoundingBox: AdorneePartBoundingBoxConstructor;
5 changes: 5 additions & 0 deletions src/adorneeboundingbox/src/Shared/RxPartBoundingBoxUtils.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { Observable } from '@quenty/rx';

export namespace RxPartBoundingBoxUtils {
function observePartCFrame(part: BasePart): Observable<CFrame>;
}
3 changes: 3 additions & 0 deletions src/adorneedata/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
export * from './src/Shared/AdorneeData';
export * from './src/Shared/AdorneeDataEntry';
export * from './src/Shared/AdorneeDataValue';
44 changes: 44 additions & 0 deletions src/adorneedata/src/Shared/AdorneeData.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import { AttributeValue } from '@quenty/attributeutils';
import { Observable } from '@quenty/rx';
import { AdorneeDataValue } from './AdorneeDataValue';
import { AdorneeDataEntry } from './AdorneeDataEntry';

export type ToAdorneeEntries<T extends Record<PropertyKey, unknown> | unknown> =
T extends unknown
? {}
: {
[K in keyof T]: Readonly<
T[K] extends AdorneeDataEntry<infer V>
? AdorneeDataEntry<V>
: T[K] extends Record<PropertyKey, unknown>
? never
: AdorneeDataEntry<T[K]>
>;
};

type AdorneeData<T extends Record<PropertyKey, unknown>> =
ToAdorneeEntries<T> & {
IsStrictData(
data: unknown
): LuaTuple<[success: boolean, errorMessage: string]>;
CreateStrictData<Y extends T>(data: Y): Readonly<Y>;
CreateFullData(data: Partial<T>): Readonly<T>;
CreateData<Y extends Partial<T>>(data: Y): Readonly<Y>;
Observe(adornee: Instance): Observable<T>;
Create(adornee: Instance): AdorneeDataValue<T>;
Get(adornee: Instance): Readonly<T>;
Set(adornee: Instance, data: Partial<T>): void;
Unset(adornee: Instance): void;
SetStrict(adornee: Instance, data: T): void;
InitAttributes(adornee: Instance, data: Partial<T> | undefined): void;
GetStrictTInterface(): (data: unknown) => data is T;
GetTInterface(): (data: unknown) => data is Partial<T>;
IsData(data: unknown): data is Partial<T>;
};

interface AdorneeDataConstructor {
readonly ClassName: 'AdorneeData';
new <T extends Record<PropertyKey, unknown>>(prototype: T): AdorneeData<T>;
}

export const AdorneeData: AdorneeDataConstructor;
39 changes: 39 additions & 0 deletions src/adorneedata/src/Shared/AdorneeDataEntry.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
import { AttributeValue } from '@quenty/attributeutils';
import { Observable } from '@quenty/rx';
import { ValueObjectLike } from '@quenty/valueobject';

type ValueInterface = (
value: unknown
) =>
| boolean
| (
| LuaTuple<[success: true, errorMessage: undefined]>
| LuaTuple<[success: false, errorMessage: string]>
);

type AdorneeDataEntry<T> = {
Create(adornee: Instance): AttributeValue<T>;
Observe(adornee: Instance): Observable<T>;
Get(adornee: Instance): T;
Set(adornee: Instance, value: T): void;
GetDefaultValue(): T | undefined;
GetStrictInterface(): ValueInterface;
IsValid(value: unknown): value is T;
};

interface AdorneeDataEntryConstructor {
readonly ClassName: 'AdorneeDataEntry';
new <T extends keyof CheckableTypes | ValueInterface>(
interface: T,
createValueObject: (adornee: Instance) => ValueObjectLike<T extends (value: unknown) => value is infer V ? V : CheckableTypes[T]>,
defaultValue?: T extends (value: unknown) => value is infer V ? NonNullable<V> : CheckableTypes[T]
): AdorneeDataEntry<T extends (value: unknown) => value is infer V ? V : CheckableTypes[T]>;

isAdorneeDataEntry: (value: unknown) => value is AdorneeDataEntry<unknown>;
optionalAttribute: (
interface: string | ValueInterface,
name: string
) => AdorneeDataEntry<unknown>;
}

export const AdorneeDataEntry: AdorneeDataEntryConstructor;
35 changes: 35 additions & 0 deletions src/adorneedata/src/Shared/AdorneeDataValue.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
import { AdorneeData, AdorneeDataEntry } from '@quenty/adorneedata';
import { AttributeValue } from '@quenty/attributeutils';
import { Observable } from '@quenty/rx';
import { Signal } from '@quenty/signal';
import { ValueObjectLike } from '@quenty/valueobject';

type MapToValues<T extends Record<PropertyKey, unknown> | unknown> =
T extends Record<PropertyKey, unknown>
? Readonly<{
[K in keyof T]: T[K] extends AdorneeDataEntry<infer V>
? ValueObjectLike<V>
: AttributeValue<T[K]>;
}>
: {};

export type FromAdorneeData<T extends AdorneeData<unknown>> =
T extends AdorneeData<infer U> ? AdorneeDataValue<U> : never;

type AdorneeDataValue<T> = MapToValues<T> & {
Value: T;
readonly Changed: Signal<T>;
Observe(): Observable<T>;
};

interface AdorneeDataValueConstructor {
readonly ClassName: 'AdorneeDataValue';
new <T>(
adornee: Instance,
prototype: Record<PropertyKey, unknown>
): AdorneeDataValue<T>;

isAdorneeDataValue: (value: unknown) => value is AdorneeDataValue<unknown>;
}

export const AdorneeDataValue: AdorneeDataValueConstructor;
1 change: 1 addition & 0 deletions src/adorneeutils/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './src/Shared/AdorneeUtils';
14 changes: 14 additions & 0 deletions src/adorneeutils/src/Shared/AdorneeUtils.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
export namespace AdorneeUtils {
function getCenter(adornee: Instance): Vector3 | undefined;
function getBoundingBox(
adornee: Instance
): LuaTuple<[cframe?: CFrame, size?: Vector3]>;
function isPartOfAdornee(adornee: Instance, part: BasePart): boolean;
function getParts(adornee: Instance): BasePart[];
function getAlignedSize(adornee: Instance): Vector3 | undefined;
function getPartCFrame(adornee: Instance): CFrame | undefined;
function getPartPosition(adornee: Instance): Vector3 | undefined;
function getPartVelocity(adornee: Instance): Vector3 | undefined;
function getPart(adornee: Instance): BasePart | undefined;
function getRenderAdornee(adornee: Instance): Instance | undefined;
}
1 change: 1 addition & 0 deletions src/adorneevalue/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export * from './src/Shared/AdorneeValue';
1 change: 1 addition & 0 deletions src/adorneevalue/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
"@quenty/blend": "file:../blend",
"@quenty/loader": "file:../loader",
"@quenty/maid": "file:../maid",
"@quenty/rx": "file:../rx",
"@quenty/signal": "file:../signal",
"@quenty/valueobject": "file:../valueobject"
},
Expand Down
40 changes: 40 additions & 0 deletions src/adorneevalue/src/Shared/AdorneeValue.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { Signal } from '@quenty/signal';
import { BaseObject } from '@quenty/baseobject';
import { Observable } from '@quenty/rx';

type AdorneeValueOption = Instance | CFrame | Vector3;

interface AdorneeValue extends BaseObject {
Value: AdorneeValueOption | undefined;
readonly Changed: Signal<
[new: AdorneeValueOption | undefined, old: AdorneeValueOption | undefined]
>;
GetAdornee(): AdorneeValueOption | undefined;
Observe(): Observable<AdorneeValueOption | undefined>;
ObserveBottomCFrame(): Observable<CFrame | undefined>;
ObserveCenterPosition(): Observable<Vector3 | undefined>;
GetCenterPosition(): Vector3 | undefined;
ObserveRadius(): Observable<number | undefined>;
GetRadius(): number | undefined;
ObservePositionTowards(
observeTargetPosition: Observable<Vector3>,
observeRadius?: Observable<number>
): Observable<Vector3 | undefined>;
GetPositionTowards(
target: Vector3,
radius?: number,
center?: Vector3
): Vector3 | undefined;
ObserveAttachmentParent(): Observable<BasePart | Terrain | undefined>;
RenderPositionAttachment(props?: {
WorldPosition?: Vector3;
Name?: string;
}): Observable<Instance | undefined>;
}

interface AdorneeValueConstructor {
readonly ClassName: 'AdorneeValue';
new (): AdorneeValue;
}

export const AdorneeValue: AdorneeValueConstructor;
2 changes: 2 additions & 0 deletions src/aggregator/index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './src/Shared/Aggregator';
export * from './src/Shared/RateAggregator';
19 changes: 19 additions & 0 deletions src/aggregator/src/Shared/Aggregator.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
import { BaseObject } from '@quenty/baseobject';
import { Promise } from '@quenty/promise';
import { Observable } from '@quenty/rx';

interface Aggregator<T> extends BaseObject {
SetMaxBatchSize(maxBatchSize: number): void;
Promise(id: number): Promise<T>;
Observe(id: number): Observable<T>;
}

interface AggregatorConstructor {
readonly ClassName: 'Aggregator';
new <T>(
debugName: string,
promiseBulkQuery: (idList: number[]) => Promise<T>
): Aggregator<T>;
}

export const Aggregator: AggregatorConstructor;
16 changes: 16 additions & 0 deletions src/aggregator/src/Shared/RateAggregator.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { BaseObject } from '@quenty/baseobject';
import { Promise } from '@quenty/promise';

interface RateAggregator<A extends unknown[], R> extends BaseObject {
SetMaxRequestsPerSecond(maxRequestsPerSecond: number): void;
Promise(...args: A): Promise<R>;
}

interface RateAggregatorConstructor {
readonly ClassName: 'RateAggregator';
new <A extends unknown[], R>(
promiseQuery: (...args: A) => Promise<R>
): RateAggregator<A, R>;
}

export const RateAggregator: RateAggregatorConstructor;
Loading
Loading