diff --git a/core/src/exchanges/interfaces.ts b/core/src/exchanges/interfaces.ts index 6d079346..b32d4695 100644 --- a/core/src/exchanges/interfaces.ts +++ b/core/src/exchanges/interfaces.ts @@ -9,7 +9,7 @@ import { UnifiedMarket, UnifiedEvent, PriceCandle, OrderBook, Trade, UserTrade, export interface FetcherContext { readonly http: AxiosInstance; - callApi(operationId: string, params?: Record): Promise; + callApi(operationId: string, params?: Record): Promise; getHeaders(): Record; } diff --git a/core/src/feeds/types.ts b/core/src/feeds/types.ts index fa3a8bda..4ac2137b 100644 --- a/core/src/feeds/types.ts +++ b/core/src/feeds/types.ts @@ -14,7 +14,7 @@ export interface Dictionary { */ export interface Ticker { symbol: string; - info: any; + info: Record; timestamp: number | undefined; datetime: string | undefined; high: number | undefined; @@ -79,7 +79,7 @@ export interface Market { cost?: { min: number | undefined; max: number | undefined }; price?: { min: number | undefined; max: number | undefined }; }; - info: any; + info: Record; } /** @@ -87,7 +87,7 @@ export interface Market { */ export interface FundingRate { symbol: string; - info: any; + info: Record; timestamp?: number; datetime?: string; fundingRate?: number; diff --git a/sdks/typescript/pmxt/args.ts b/sdks/typescript/pmxt/args.ts index cd56982c..73882ef4 100644 --- a/sdks/typescript/pmxt/args.ts +++ b/sdks/typescript/pmxt/args.ts @@ -1,3 +1,3 @@ -export function buildArgsWithOptionalOptions(primary?: any): any[] { +export function buildArgsWithOptionalOptions(primary?: T): T[] { return primary !== undefined ? [primary] : []; } diff --git a/sdks/typescript/pmxt/errors.ts b/sdks/typescript/pmxt/errors.ts index af0043ed..4d508505 100644 --- a/sdks/typescript/pmxt/errors.ts +++ b/sdks/typescript/pmxt/errors.ts @@ -49,29 +49,26 @@ export class PermissionDenied extends PmxtError { } export class NotFoundError extends PmxtError { - constructor(message: string, exchange?: string) { - super(message, "NOT_FOUND", false, exchange); + constructor(message: string, exchange?: string, code: string = "NOT_FOUND") { + super(message, code, false, exchange); } } export class OrderNotFound extends NotFoundError { constructor(orderId: string, exchange?: string) { - super(`Order not found: ${orderId}`, exchange); - (this as any).code = "ORDER_NOT_FOUND"; + super(`Order not found: ${orderId}`, exchange, "ORDER_NOT_FOUND"); } } export class MarketNotFound extends NotFoundError { constructor(marketId: string, exchange?: string) { - super(`Market not found: ${marketId}`, exchange); - (this as any).code = "MARKET_NOT_FOUND"; + super(`Market not found: ${marketId}`, exchange, "MARKET_NOT_FOUND"); } } export class EventNotFound extends NotFoundError { constructor(identifier: string, exchange?: string) { - super(`Event not found: ${identifier}`, exchange); - (this as any).code = "EVENT_NOT_FOUND"; + super(`Event not found: ${identifier}`, exchange, "EVENT_NOT_FOUND"); } } @@ -120,7 +117,7 @@ export class ExchangeNotAvailable extends PmxtError { } // Error code to class mapping -const ERROR_CODE_MAP: Record PmxtError> = { +const ERROR_CODE_MAP: Record PmxtError> = { BAD_REQUEST: BadRequest, AUTHENTICATION_ERROR: AuthenticationError, PERMISSION_DENIED: PermissionDenied, @@ -137,23 +134,27 @@ const ERROR_CODE_MAP: Record PmxtError> = { }; /** Convert a server error response object into a typed PmxtError. */ -export function fromServerError(errorData: any): PmxtError { +export function fromServerError(errorData: unknown): PmxtError { if (typeof errorData === "string") { return new PmxtError(errorData); } - const message = errorData.message || "Unknown error"; - const code = errorData.code || "UNKNOWN_ERROR"; - const retryable = errorData.retryable || false; - const exchange = errorData.exchange; + const data = errorData as Record; + + const message = (typeof data.message === "string" ? data.message : undefined) || "Unknown error"; + const code = (typeof data.code === "string" ? data.code : undefined) || "UNKNOWN_ERROR"; + const retryable = typeof data.retryable === "boolean" ? data.retryable : false; + const exchange = typeof data.exchange === "string" ? data.exchange : undefined; const ErrorClass = ERROR_CODE_MAP[code]; if (ErrorClass === RateLimitExceeded) { - return new RateLimitExceeded(message, errorData.retryAfter, exchange); + const retryAfter = typeof data.retryAfter === "number" ? data.retryAfter : undefined; + return new RateLimitExceeded(message, retryAfter, exchange); } if (ErrorClass === ValidationError) { - return new ValidationError(message, errorData.field, exchange); + const field = typeof data.field === "string" ? data.field : undefined; + return new ValidationError(message, field, exchange); } if (ErrorClass) { return new ErrorClass(message, exchange); diff --git a/sdks/typescript/pmxt/models.ts b/sdks/typescript/pmxt/models.ts index 8d7bbaee..5923cbe8 100644 --- a/sdks/typescript/pmxt/models.ts +++ b/sdks/typescript/pmxt/models.ts @@ -28,7 +28,7 @@ export interface MarketOutcome { priceChange24h?: number; /** Exchange-specific metadata */ - metadata?: Record; + metadata?: Record; /** Best bid price from the order book (when includePrices=True) */ bestBid?: number;