# 凭证管理器 (Credential Manager)

一个高性能的多平台加密货币交易账户凭证管理库，支持热加载、智能平台识别和安全签名功能。

## ✨ 特性

- 🔐 **多平台支持**: Pacifica、Aster、Binance等主流交易平台
- 🔄 **热加载**: 支持JSON配置文件实时监听和重载
- 🎯 **智能检测**: 自动识别账户所属平台
- ⚡ **高性能**: 签名操作 <50ms，配置加载 <100ms
- 🛡️ **类型安全**: 完整的TypeScript类型定义
- 🧪 **测试驱动**: 全面的契约测试和性能测试

## 🚀 快速开始

### 安装

```bash
npm install @binance-api/credential-manager
```

### 基本使用

```typescript
import { CredentialManagerFactory, Platform } from '@binance-api/credential-manager';

// 创建管理器
const factory = new CredentialManagerFactory();
const manager = await factory.create();

// 添加账户
await manager.addAccount({
  id: 'my-pacifica-account',
  platform: Platform.PACIFICA,
  credentials: {
    type: 'pacifica',
    privateKey: 'your-private-key-here'
  },
  metadata: {
    alias: '我的Pacifica账户'
  }
});

// 执行签名
const message = new TextEncoder().encode('Hello, Pacifica!');
const result = await manager.sign('my-pacifica-account', message);

if (result.success) {
  console.log('签名成功:', result.signature);
  console.log('执行时间:', result.executionTime, 'ms');
}

// 清理资源
await manager.destroy();
```

### 从配置文件加载

```typescript
// 加载JSON配置文件
const loadResult = await manager.loadConfig('./accounts.json');
if (loadResult.success) {
  console.log(`成功加载 ${loadResult.accounts.length} 个账户`);
  console.log(`加载时间: ${loadResult.loadTime}ms`);
}

// 监听配置文件变化
manager.watchConfig('./accounts.json', (accounts) => {
  console.log('配置文件已更新，重新加载账户');
});
```

### 配置文件格式

```json
{
  "version": "1.0.0",
  "accounts": [
    {
      "id": "pacifica-main",
      "platform": "pacifica",
      "credentials": {
        "type": "pacifica",
        "privateKey": "your-64-char-hex-private-key"
      },
      "metadata": {
        "alias": "主交易账户",
        "description": "用于主要交易的Pacifica账户"
      }
    }
  ]
}
```

## 📊 性能指标

凭证管理器经过性能优化，满足高频交易需求：

- ✅ **签名操作**: < 50ms (NFR-002)
- ✅ **配置加载**: < 100ms (NFR-001)
- ✅ **并发支持**: 多账户并发签名
- ✅ **内存效率**: 最小化内存占用

## 🏗️ 架构设计

### 核心组件

- **CredentialManager**: 主要管理器，协调所有功能
- **ConfigLoader**: 配置文件加载和监听
- **PlatformDetector**: 智能平台识别
- **Signer**: 统一签名接口和策略管理
- **PacificaSigner**: Pacifica平台Ed25519签名实现

### 设计模式

- **工厂模式**: CredentialManagerFactory统一创建
- **策略模式**: 多平台签名策略
- **观察者模式**: 配置文件变化监听
- **适配器模式**: 平台特定接口适配

## 🧪 测试

```bash
# 运行所有测试
npm test

# 性能测试
npm run test:performance

# 覆盖率测试
npm run test:coverage
```

## 📖 API 文档

### 主要接口

#### CredentialManager

```typescript
interface ICredentialManager {
  // 配置管理
  loadConfig(configPath: string): Promise<LoadResult>;
  watchConfig(configPath: string, callback?: (accounts: Account[]) => void): void;
  stopWatching(): void;

  // 账户管理
  addAccount(accountConfig: AccountConfig): Promise<boolean>;
  removeAccount(accountId: string): Promise<boolean>;
  getAccount(accountId: string): Account | null;
  listAccounts(): Account[];

  // 签名操作
  sign(accountId: string, message: Uint8Array): Promise<SignResult>;
  verify(accountId: string, message: Uint8Array, signature: string): Promise<boolean>;

  // 统计和管理
  getStats(): Promise<ManagerStats>;
  destroy(): Promise<void>;
}
```

#### 签名结果

```typescript
interface SignResult {
  success: boolean;
  signature?: string;
  algorithm: string;
  timestamp: Date;
  executionTime?: number;
  error?: string;
}
```

## 🛠️ 开发

### 项目结构

```
src/
├── core/                 # 核心组件
│   ├── types.ts         # 类型定义
│   ├── CredentialManager.ts
│   ├── Signer.ts
│   └── PlatformDetector.ts
├── loaders/             # 配置加载器
│   └── ConfigLoader.ts
├── platforms/           # 平台特定实现
│   ├── pacifica/
│   ├── aster/
│   └── binance/
└── index.ts            # 主入口
```

### 开发命令

```bash
# 开发模式
npm run dev

# 类型检查
npm run typecheck

# 代码格式化
npm run format

# 代码检查
npm run lint
```

## 🔒 安全考虑

- ✅ 私钥仅存储在内存中
- ✅ 支持加密凭证存储
- ✅ 签名操作隔离
- ✅ 输入验证和错误处理
- ✅ 无密钥泄露到日志

## 📝 许可证

MIT License

## 🤝 贡献

欢迎提交 Issue 和 Pull Request！

## 📞 支持

如有问题，请通过以下方式联系：

- 提交 [GitHub Issue](https://github.com/your-repo/issues)
- 查看 [文档](https://docs.your-domain.com)