UNPKG

@renegade-fi/node

Version:
157 lines (143 loc) 4.18 kB
import { type Config, createConfig, getSDKConfig, type Logger, type SDKConfig, } from "@renegade-fi/core"; import type { AssignOrderParameters, CreateMatchingPoolParameters, DestroyMatchingPoolParameters, GetOpenOrdersParameters, GetOrderMatchingPoolParameters, GetOrderMetadataParameters, GetWalletMatchableOrderIdsParameters, } from "@renegade-fi/core/actions"; import { assignOrder, createMatchingPool, destroyMatchingPool, getOpenOrders, getOrderMatchingPool, getOrderMetadata, getWalletMatchableOrderIds, triggerRelayerSnapshot, } from "@renegade-fi/core/actions"; import * as rustUtils from "../../../renegade-utils/index.js"; /** * The client for interacting with the Renegade relayer's admin API with an API key. */ export class AdminRelayerClient { readonly config: Config; readonly configv2: SDKConfig; /** * @internal */ private constructor(params: { apiKey: string; chainId: number; overrides?: Partial<SDKConfig>; logger?: Logger; }) { const defaultConfig = getSDKConfig(params.chainId); const configv2 = params.overrides ? { ...defaultConfig, ...params.overrides } : defaultConfig; this.configv2 = configv2; this.config = createConfig({ adminKey: params.apiKey, darkPoolAddress: configv2.darkpoolAddress, priceReporterUrl: configv2.priceReporterUrl, relayerUrl: configv2.relayerUrl, chainId: configv2.id, utils: rustUtils, logging: params.logger ? { logger: params.logger, namespace: "node:clients:relayer" } : undefined, }); } /** * Create a new AdminRelayerClient * * @param params.apiKey your API key * @param params.chainId the chain ID * @param params.overrides any SDKConfig field can be passed directly as an override */ static new({ apiKey, chainId, overrides, logger, }: { apiKey: string; chainId: number; overrides?: Partial<SDKConfig>; logger?: Logger; }) { return new AdminRelayerClient({ apiKey, chainId, overrides, logger }); } /** * Assign an order to a matching pool * * @param params.orderId the order ID * @param params.matchingPool name of the matching pool */ async assignOrder(params: AssignOrderParameters) { return assignOrder(this.config, params); } /** * Create a matching pool * * @param params.matchingPool name of the matching pool */ async createMatchingPool(params: CreateMatchingPoolParameters) { return createMatchingPool(this.config, params); } /** * Destroy a matching pool * * @param params.matchingPool name of the matching pool */ async destroyMatchingPool(params: DestroyMatchingPoolParameters) { return destroyMatchingPool(this.config, params); } /** * Get open orders managed by the relayer */ async getOpenOrders(params: GetOpenOrdersParameters) { return getOpenOrders(this.config, params); } /** * Get the matching pool for an order */ async getOrderMatchingPool(params: GetOrderMatchingPoolParameters) { return getOrderMatchingPool(this.config, params); } /** * Get the metadata for an order */ async getOrderMetadata(params: GetOrderMetadataParameters) { return getOrderMetadata(this.config, params); } /** * Get the matchable order IDs for a wallet */ async getWalletMatchableOrderIds(params: GetWalletMatchableOrderIdsParameters) { return getWalletMatchableOrderIds(this.config, params); } /** * Trigger a relayer raft snapshot */ async triggerSnapshot() { return triggerRelayerSnapshot(this.config); } /** * Get the config * * TODO: Remove once we migrate to the SDK config */ public getConfig() { return this.config; } }