npm package: @fundkit/types
Description: Type-only package for Unipay SDK
Latest version: 1.8.0

# 🔷 @fundkit/types

TypeScript type definitions for FundKit ecosystem

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![npm](https://img.shields.io/npm/v/@fundkit/types)](https://www.npmjs.com/package/@fundkit/types)

## 📦 Installation

```bash
npm install @fundkit/types
# or
yarn add @fundkit/types
# or
pnpm add @fundkit/types
```

## Purpose

This package provides shared TypeScript type definitions used across the FundKit ecosystem. It ensures type safety and consistency across all FundKit packages.

## Usage

```typescript
import type {
  Transaction,
  CollectionResponse,
  TransactionStatus,
  PaymentProvider,
  Currency,
  Operator,
} from '@fundkit/types';

// Use types in your application
const transaction: Transaction = {
  amount: 5000,
  currency: 'UGX',
  operator: 'mtn',
  accountNumber: '256779280949',
  externalId: 'tx_123456',
};

const response: CollectionResponse = {
  transactionId: 'txn_abc123',
  status: 'pending',
  amount: 5000,
  currency: 'UGX',
};
```

## 📋 Exported Types

### Core Types

```typescript
// Transaction object for payment requests
interface Transaction {
  amount: number;
  currency: Currency;
  operator: Operator;
  accountNumber: string;
  externalId: string;
  reason?: string;
}

// Response from collection requests
interface CollectionResponse {
  transactionId: string;
  status: TransactionStatus;
  amount: number;
  currency: Currency;
  externalId?: string;
  reason?: string;
}

// Transaction status enumeration
type TransactionStatus = 
  | 'pending' 
  | 'processing' 
  | 'completed' 
  | 'failed' 
  | 'cancelled';
```

### Provider Types

```typescript
// Supported payment providers
type PaymentProvider = 'honeycoin' | 'easypay' | 'tola';

// Mobile network operators
type Operator = 'mtn' | 'airtel' | 'telecom';

// Supported currencies
type Currency = 'UGX' | 'KES' | 'TZS' | 'RWF';
```

### Configuration Types

```typescript
// Base provider configuration
interface BaseProviderConfig {
  apiKey: string;
  environment?: 'sandbox' | 'production';
}

// Payment client configuration
interface PaymentClientConfig {
  apiKey: string;
  providers: BaseProvider[];
  environment?: 'sandbox' | 'production';
}
```

### Error Types

```typescript
// Structured error response
interface FundKitError {
  name: string;
  code: string;
  message: string;
  details?: any;
  context?: Record<string, any>;
}
```

## Related Packages

This types package is used by:

- [@fundkit/core](https://www.npmjs.com/package/@fundkit/core) - Core SDK functionality
- [@fundkit/honeycoin](https://www.npmjs.com/package/@fundkit/honeycoin) - HoneyCoin provider
- [@fundkit/easypay](https://www.npmjs.com/package/@fundkit/easypay) - EasyPay provider
- [@fundkit/tola](https://www.npmjs.com/package/@fundkit/tola) - Tola provider

## Development

This package is part of the FundKit monorepo. For development setup:

1. Clone the FundKit repository
2. Install dependencies: `bun install`
3. Build types: `bun run types:build`
4. Run tests: `bun test`

## License

MIT License - see the [LICENSE](LICENSE) file for details.

---

**Keywords:** typescript, types, definitions, fundkit, payment, sdk