hyperliquid-sdk
Version:
<<< Typescript SDK for the Hyperliquid API >>>
127 lines (115 loc) • 3.31 kB
text/typescript
import {
Meta,
MetaAndAssetCtxs,
ClearinghouseState,
UserFunding,
UserNonFundingLedgerUpdates,
FundingHistory,
} from '../../types';
import { HttpApi, validatePublicKey } from '../../utils/helpers';
import { InfoType } from '../../types/constants';
import { SymbolConversion } from '../../utils/symbolConversion';
export class PerpetualsInfoAPI {
private httpApi: HttpApi;
private symbolConversion: SymbolConversion;
constructor(httpApi: HttpApi, symbolConversion: SymbolConversion) {
this.httpApi = httpApi;
this.symbolConversion = symbolConversion;
}
async getMeta(rawResponse: boolean = false): Promise<Meta> {
const response = await this.httpApi.makeRequest({ type: InfoType.META });
return rawResponse
? response
: await this.symbolConversion.convertResponse(
response,
['name', 'coin', 'symbol'],
'PERP',
);
}
async getMetaAndAssetCtxs(
rawResponse: boolean = false,
): Promise<MetaAndAssetCtxs> {
const response = await this.httpApi.makeRequest({
type: InfoType.PERPS_META_AND_ASSET_CTXS,
});
return rawResponse
? response
: await this.symbolConversion.convertResponse(
response,
['name', 'coin', 'symbol'],
'PERP',
);
}
async getClearinghouseState(
userPublicKey: string,
rawResponse: boolean = false,
): Promise<ClearinghouseState> {
validatePublicKey(userPublicKey);
const response = await this.httpApi.makeRequest({
type: InfoType.PERPS_CLEARINGHOUSE_STATE,
user: userPublicKey,
});
return rawResponse
? response
: await this.symbolConversion.convertResponse(response);
}
async getUserFunding(
userPublicKey: string,
startTime: number,
endTime?: number,
rawResponse: boolean = false,
): Promise<UserFunding> {
validatePublicKey(userPublicKey);
const response = await this.httpApi.makeRequest(
{
type: InfoType.USER_FUNDING,
user: userPublicKey,
startTime: startTime,
endTime: endTime,
},
20,
);
return rawResponse
? response
: await this.symbolConversion.convertResponse(response);
}
async getUserNonFundingLedgerUpdates(
userPublicKey: string,
startTime: number,
endTime?: number,
rawResponse: boolean = false,
): Promise<UserNonFundingLedgerUpdates> {
validatePublicKey(userPublicKey);
const response = await this.httpApi.makeRequest(
{
type: InfoType.USER_NON_FUNDING_LEDGER_UPDATES,
user: userPublicKey,
startTime: startTime,
endTime: endTime,
},
20,
);
return rawResponse
? response
: await this.symbolConversion.convertResponse(response);
}
async getFundingHistory(
coin: string,
startTime: number,
endTime?: number,
rawResponse: boolean = false,
): Promise<FundingHistory> {
const response = await this.httpApi.makeRequest(
{
type: InfoType.FUNDING_HISTORY,
coin: await this.symbolConversion.convertSymbol(coin, 'reverse'),
startTime: startTime,
endTime: endTime,
},
20,
);
return rawResponse
? response
: await this.symbolConversion.convertResponse(response);
}
}