@ 0xmonaco/ 类型
摩纳哥议定书的核心类型定义。 这个软件包提供整个摩纳哥生态系统使用的TypeScript类型和接口,侧重于SDK配置,金库操作,交易操作,市场数据,以及合同管理.
安装
npm install @0xmonaco/types
说明: 这个软件包一般是安装于 @0xmonaco/core 或者说 @0xmonaco/react,但您可以在您的 TypeScript 项目中直接安装类型定义.
类型
SDK 类型
核心 SDK 配置和主接口类型 :
import { MonacoSDK, SDKConfig } from "@0xmonaco/types";
// SDK configuration
interface SDKConfig {
walletClient?: WalletClient; // Wallet client for signing operations
network: Network; // Use "mainnet" (Sei mainnet, production API)
seiRpcUrl: string; // RPC URL for Sei blockchain interactions
}
// Main SDK interface
interface MonacoSDK {
applications: ApplicationsAPI; // Applications operations API
auth: AuthAPI; // Auth operations API
vault: VaultAPI; // Vault operations API
trading: TradingAPI; // Trading operations API
market: MarketAPI; // Market metadata API
profile: ProfileAPI; // Profile operations API
websocket: {
orders: OrdersWebSocketClient; // WebSocket client for real-time order events
ohlcv: OHLCVWebSocketClient; // WebSocket client for real-time OHLCV data
orderbook: OrderbookWebSocketClient; // WebSocket client for real-time orderbook updates
};
walletClient: WalletClient; // Wallet client for blockchain operations
publicClient: PublicClient; // Public client for read-only operations
// Authentication
login(clientId: string, options?: { connectWebSocket?: boolean }): Promise<AuthState>;
logout(): Promise<void>;
refreshAuth(): Promise<AuthState>;
getAuthState(): AuthState | undefined;
// Account management
isAuthenticated(): boolean;
isConnected(): boolean;
getAccountAddress(): string;
getNetwork(): Network;
getChainId(): number;
waitForTransaction(
hash: string,
confirmations?: number,
timeout?: number
): Promise<TransactionReceipt>;
}
默认类型
包括存款、提款、结余管理在内的金库业务类型:
import { VaultAPI, Balance, TransactionResult } from "@0xmonaco/types";
// Vault operations
interface VaultAPI extends BaseAPI {
approve(
assetId: string,
amount: bigint,
autoWait?: boolean
): Promise<TransactionResult>;
deposit(
assetId: string,
amount: bigint,
autoWait?: boolean
): Promise<TransactionResult>;
withdraw(
assetId: string,
amount: bigint,
autoWait?: boolean
): Promise<TransactionResult>;
getAllowance(assetId: string): Promise<bigint>;
needsApproval(assetId: string, amount: bigint): Promise<boolean>;
getVaultAddress(): Promise<string>;
}
// Vault response types
interface Balance {
token: string;
amount: bigint;
formatted: string;
symbol: string;
decimals: number;
}
interface TransactionResult {
hash: string;
status: "pending" | "confirmed" | "failed";
nonce: bigint;
receipt?: TransactionReceipt;
}
贸易类型
交易业务的类型,包括订单的放置和管理:
import {
TradingAPI,
OrderSide,
OrderType,
CreateOrderResponse,
CancelOrderResponse,
ReplaceOrderResponse,
GetPaginatedOrdersResponse,
GetOrderResponse,
} from "@0xmonaco/types";
// Trading operations
interface TradingAPI extends BaseAPI {
placeLimitOrder(
tradingPairId: string,
side: OrderSide,
quantity: string,
price: string,
options?: {
tradingMode?: TradingMode;
useMasterBalance?: boolean;
expirationDate?: string;
timeInForce?: TimeInForce;
}
): Promise<CreateOrderResponse>;
placeMarketOrder(
tradingPairId: string,
side: OrderSide,
quantity: string,
options?: {
tradingMode?: TradingMode;
slippageTolerance?: number;
}
): Promise<CreateOrderResponse>;
cancelOrder(orderId: string): Promise<CancelOrderResponse>;
replaceOrder(
orderId: string,
newOrder: {
price?: string;
quantity: string;
useMasterBalance?: boolean;
}
): Promise<ReplaceOrderResponse>;
getPaginatedOrders(
params?: GetPaginatedOrdersParams
): Promise<GetPaginatedOrdersResponse>;
getOrder(orderId: string): Promise<GetOrderResponse>;
}
// Trading types
type OrderSide = "BUY" | "SELL";
type OrderType = "LIMIT" | "MARKET";
type OrderStatus = "SUBMITTED" | "PARTIALLY_FILLED" | "FILLED" | "SETTLED_ON_CHAIN" | "SETTLED" | "CANCELLED" | "REJECTED" | "EXPIRED";
type TradingMode = "SPOT" | "MARGIN";
type TimeInForce = "GTC" | "IOC" | "FOK"; // GTC: Good Till Cancel, IOC: Immediate or Cancel, FOK: Fill or Kill
// Trading response types
interface CreateOrderResponse {
order_id: string;
status: "SUCCESS" | "FAILED";
match_result?: {
remaining_quantity: string;
status: string;
};
}
interface CancelOrderResponse {
order_id: string;
status: "SUCCESS" | "FAILED";
}
interface ReplaceOrderResponse {
order_id: string;
status: "SUCCESS" | "FAILED";
}
市场类型
市场数据操作的类型,包括交易对元数据:
import {
MarketAPI,
TradingPair,
GetTradingPairsParams,
GetTradingPairsResponse,
GetTradingPairResponse,
TradingMode,
} from "@0xmonaco/types";
// Market operations
interface MarketAPI extends BaseAPI {
getPaginatedTradingPairs(
params?: GetTradingPairsParams,
): Promise<GetTradingPairsResponse>;
getTradingPair(tradingPairId: string): Promise<TradingPair>;
getTradingPairBySymbol(
symbol: string,
marketType?: TradingMode,
): Promise<TradingPair | undefined>;
}
// Market data types
interface TradingPair {
id: string;
symbol: string;
baseToken: string;
quoteToken: string;
baseAssetId: string;
quoteAssetId: string;
baseTokenContract: string;
quoteTokenContract: string;
baseDecimals: number;
baseIconUrl: string;
quoteDecimals: number;
quoteIconUrl: string;
marketType: TradingMode;
category: string;
isActive: boolean;
minOrderSize: string;
maxOrderSize: string;
quantityStepSize: string;
tickSize: string;
minLeverage?: string | null;
maxLeverage?: string | null;
}
// Market response types
interface GetTradingPairsResponse {
tradingPairs: TradingPair[];
page: number;
pageSize: number;
total: number;
totalPages: number;
}
interface GetTradingPairResponse {
tradingPair: TradingPair;
}
合同类型
合同地址、实例和与合同有关的业务的类型:
import {
ContractAddresses,
ContractInstances,
Token,
UserBalance,
} from "@0xmonaco/types";
// Contract addresses
interface ContractAddresses {
VAULT: string; // Vault contract address for managing user balances
}
// Contract instances
type ContractInstances = {
vault: GetContractReturnType<typeof CONTRACT_ABIS.vault>;
};
// Contract-related types
interface Token {
address: string;
decimals: number;
symbol: string;
name: string;
}
interface UserBalance {
token: Token;
amount: bigint;
formatted: string;
}
网络类型
网络配置类型 :
import { Network, NetworkEndpoints } from "@0xmonaco/types";
const publicNetwork: Network = "mainnet";
interface NetworkEndpoints {
rpcUrl: string;
apiUrl: string;
}
用于公共融合,使用 "mainnet"。 。 。 .
类型参考
SDK 类型
MonacoSDK: 所有API 模块的主要 SDK 接口SDKConfig: 摩纳哥 SDK 配置选项Network: SDK网络预设类型. 公共一体化应当使用"mainnet"。 。 。 .AuthState: 认证状态信息
默认类型
VaultAPI: 保险库操作接口(存款、提取和余额)Balance: 调试平衡信息TransactionResult: 区块链交易的结果
贸易类型
TradingAPI: 交易业务接口(订单、位置)OrderSide: 排序侧式 ("BUY" Q"SEL")OrderType:顺序类型 ("LIMIT""MARKET")TimeInForce: 有效时间类型 ("GTC""IOC""FOK")CreateOrderResponse: 订单放置回复CancelOrderResponse: 取消订单的答复ReplaceOrderResponse: 更换订单的答复
市场类型
MarketAPI: 市场数据操作接口TradingPair: 交易配对元数据及所有市场信息GetTradingPairsResponse: 交易配对列表的响应包装GetTradingPairResponse单对交易的响应包装
合同类型
ContractAddresses: 合同地址测绘ContractInstances: 类型合同实例Token: 与元数据连接接口UserBalance: 用户的代号余额信息
项目结构
类型包被组织成特定域模块:
src/
├── api/ # Base API types
│ └── index.ts # Common API interfaces
├── applications/ # Applications types
├── auth/ # Authentication types
├── contracts/ # Contract types
│ ├── index.ts # Contract interfaces
│ └── balances.ts # Balance-related types
├── market/ # Market data types
│ └── index.ts # Market API interface and types
├── profile/ # Profile types
├── sdk/ # SDK types
│ ├── index.ts # Main SDK interfaces and configuration
│ └── network.ts # Network-related types
├── trading/ # Trading types
│ ├── index.ts # Trading API interface
│ ├── orders.ts # Order-related types
│ └── responses.ts # Trading response types
├── vault/ # Vault types
│ ├── index.ts # Vault API interface
│ └── responses.ts # Vault response types
├── websocket/ # WebSocket types
└── index.ts # Package exports
依赖关系
此软件包使用 viem 与区块链有关的类型:
Address, (中文(简体) ),Hex, (中文(简体) ),Account, (中文(简体) ),WalletClient, (中文(简体) ),PublicClient从viemGetContractReturnType合同实例打字
最佳做法
- 保持类型重点和单一目的
- 使用反映域名的描述性名称
- 带有 JSDoc 注释的文档复合类型
- 使用 TypeScript 的严格模式
- 保持后向兼容性
- 遵守既定的命名公约
- 同一文件中的分组相关类型
- 杠杆
viem类型,而不是定义自定义的