bmap-api-types
Version:
TypeScript type definitions for BMAP API
247 lines (196 loc) • 6.1 kB
Markdown
TypeScript types for the BMAP API - Bitcoin SV transaction processing and analytics platform.
```bash
npm install bmap-api-types
yarn add bmap-api-types
pnpm add bmap-api-types
```
```typescript
import type {
BMAPTransaction,
BAPIdentity,
Post,
Message,
Friend,
Like
} from 'bmap-api-types';
// Use in your client application
const processTransaction = (tx: BMAPTransaction) => {
console.log(`Processing transaction: ${tx.tx.h}`);
if (tx.MAP) {
tx.MAP.forEach(mapData => {
console.log(`MAP type: ${mapData.type}`);
});
}
};
```
```typescript
import type {
NetworkOverviewResponse,
TrendingChannelsResponse,
ContentAnalyticsResponse,
UserMetricsResponse
} from 'bmap-api-types';
// Perfect for client libraries
const fetchNetworkStats = async (): Promise<NetworkOverviewResponse> => {
const response = await fetch('/analytics/network/overview');
return response.json();
};
```
```typescript
import type {
FriendRequest,
LikeResponse,
IdentityData,
PostSearchResponse
} from 'bmap-api-types';
// Type-safe social interactions
const sendFriendRequest = async (friend: FriendRequest) => {
// Your implementation
};
```
```typescript
import type {
QueryRequest,
QueryResponse,
TransactionIngest,
SearchParams,
ChartRequest
} from 'bmap-api-types';
// Type-safe API client
class BMAPClient {
async query<T>(params: QueryRequest): Promise<QueryResponse<T>> {
// Implementation
}
async ingestTransaction(tx: TransactionIngest): Promise<TransactionResponse> {
// Implementation
}
}
```
- **BMAPTransaction** - Base transaction structure with AIP, B, MAP data
- **BAPIdentity** - Bitcoin Attestation Protocol identity
- **Post, Message** - Content types with engagement metrics
- **Friend, Like** - Social interaction types
- **QueryParams, QueryResponse** - Database query interfaces
- **Network Analytics** - Overview, growth, health monitoring
- **User Analytics** - Individual and trending user metrics
- **Content Analytics** - Post, message, and media performance
- **Streaming** - Real-time data streaming interfaces
- **Export & Alerts** - Data export and monitoring types
- **Friend Management** - Friend requests, lists, status
- **Like System** - Reactions, emoji support
- **Identity Search** - User discovery and resolution
- **Post Search** - Content discovery and filtering
- **Notifications** - Social interaction alerts
- **Query API** - MongoDB query interfaces
- **Transaction API** - TX ingestion and processing
- **Search API** - Full-text search with faceting
- **Chart API** - Data visualization requests
- **Health & Rate Limiting** - System monitoring
- **Enums** - Timeframe, ContentType, MetricType, etc.
- **Pagination** - Standard pagination interfaces
- **Utility Types** - Timestamps, caching, responses
✅ **Complete Coverage** - All BMAP API endpoints typed
✅ **Strict Types** - No `any` types, full type safety
✅ **Tree Shakeable** - Import only what you need
✅ **Backwards Compatible** - Semantic versioning
✅ **Well Documented** - JSDoc comments throughout
✅ **Framework Agnostic** - Works with any TypeScript project
```typescript
import type { NetworkOverviewResponse } from '@bmap/types';
const Dashboard: React.FC = () => {
const [stats, setStats] = useState<NetworkOverviewResponse>();
useEffect(() => {
fetch('/analytics/network/overview')
.then(res => res.json())
.then(setStats);
}, []);
return (
<div>
<h1>Network Stats</h1>
<p>Total Users: {stats?.totalUsers}</p>
<p>Active Users (24h): {stats?.activeUsers24h}</p>
</div>
);
};
```
```typescript
import type {
QueryRequest,
BMAPTransaction,
TrendingUsersResponse
} from '@bmap/types';
class BMAPAnalytics {
constructor(private baseUrl: string) {}
async getTrendingUsers(
timeframe: '24h' | '7d' | '30d' = '24h',
limit: number = 20
): Promise<TrendingUsersResponse> {
const response = await fetch(
`${this.baseUrl}/analytics/trending/users?timeframe=${timeframe}&limit=${limit}`
);
return response.json();
}
async searchTransactions(query: QueryRequest): Promise<BMAPTransaction[]> {
const response = await fetch(`${this.baseUrl}/q`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(query)
});
const result = await response.json();
return result.results;
}
}
```
```typescript
import type { IdentityData, PostSearchResponse } from '@bmap/types';
const useIdentitySearch = (query: string) => {
const [results, setResults] = useState<IdentityData[]>([]);
useEffect(() => {
if (query.length < 2) return;
fetch(`/social/identity/search?q=${encodeURIComponent(query)}`)
.then(res => res.json())
.then((data: { identities: IdentityData[] }) => {
setResults(data.identities);
});
}, [query]);
return results;
};
```
| @bmap/types | BMAP API | Features |
|-------------|----------|----------|
| 1.0.x | 1.0.x | Core types, Analytics Phases 1-5 |
| 1.1.x | 1.1.x | Enhanced social features |
| 2.0.x | 2.0.x | Breaking changes, new protocols |
This package is automatically generated from the BMAP API source code.
To update types:
1. Make changes to the API schemas
2. Run `bun run build:types` in the main repository
3. The types package will be automatically updated
MIT License - see LICENSE file for details.
- [BMAP API Documentation](https://github.com/BitcoinSchema/bmap-api)
- [Bitcoin Schema](https://github.com/BitcoinSchema)
- [BSV Blockchain](https://bitcoinsv.com)