feat: prebuild dist for ESM + CJS
This commit is contained in:
Vendored
+107
@@ -0,0 +1,107 @@
|
||||
/**
|
||||
* @qbirr/sdk — Node.js client for the qbirr payment verification API.
|
||||
*
|
||||
* import { Qbirr } from '@qbirr/sdk';
|
||||
* const qb = new Qbirr({ apiKey: process.env.QBIRR_API_KEY! });
|
||||
* const r = await qb.verify({
|
||||
* provider: 'cbe',
|
||||
* ref: 'FT23001234ABC',
|
||||
* amount: 500,
|
||||
* receiverName: 'YOUR NAME',
|
||||
* receiverAccount: '1000017692643',
|
||||
* });
|
||||
* console.log(r.verified, r.payer);
|
||||
*
|
||||
* Works on Node 18+ (uses the built-in fetch). No dependencies.
|
||||
*/
|
||||
export type Provider = 'cbe' | 'telebirr' | 'abyssinia' | 'dashen' | 'mpesa' | 'awash' | 'ebirr' | 'zamzam';
|
||||
export interface VerifyRequest {
|
||||
provider: Provider;
|
||||
/** Transaction reference (or, for Awash/eBirr, the SMS URL / URL token). */
|
||||
ref: string;
|
||||
/** Expected payment amount in ETB. */
|
||||
amount: number;
|
||||
/** Exact receiver name (case-insensitive, whitespace-normalised match). */
|
||||
receiverName: string;
|
||||
/** Required for CBE and Bank of Abyssinia. Ignored for other providers. */
|
||||
receiverAccount?: string;
|
||||
}
|
||||
export interface VerifyResult {
|
||||
/** True if the receipt is real, the amount matches, and the receiver matches. */
|
||||
verified: boolean;
|
||||
/** Payer name as extracted from the receipt. */
|
||||
payer: string;
|
||||
/** Amount that was actually paid (per the receipt). */
|
||||
amount: number;
|
||||
/** Human-readable failure reason, empty on success. */
|
||||
error: string;
|
||||
}
|
||||
export interface UsageStatus {
|
||||
used: number;
|
||||
limit: number;
|
||||
remaining: number;
|
||||
plan: string;
|
||||
/** ISO date — first instant of the current monthly window. */
|
||||
period_start: string;
|
||||
/** ISO date — first instant of the next monthly window. */
|
||||
period_end: string;
|
||||
}
|
||||
export interface QbirrOptions {
|
||||
/** Your API key from the qbirr dashboard. */
|
||||
apiKey: string;
|
||||
/** Override base URL. Defaults to https://verify.qbirr.com */
|
||||
baseUrl?: string;
|
||||
/** Per-request timeout (ms). Defaults to 30 000. */
|
||||
timeoutMs?: number;
|
||||
/** Optional fetch override (for tests). */
|
||||
fetch?: typeof fetch;
|
||||
}
|
||||
/** Thrown for network failures, HTTP errors, or non-JSON responses. */
|
||||
export declare class QbirrError extends Error {
|
||||
readonly status?: number | undefined;
|
||||
readonly body?: unknown | undefined;
|
||||
constructor(message: string, status?: number | undefined, body?: unknown | undefined);
|
||||
}
|
||||
export declare class Qbirr {
|
||||
private readonly apiKey;
|
||||
private readonly baseUrl;
|
||||
private readonly timeoutMs;
|
||||
private readonly fetchFn;
|
||||
constructor(opts: QbirrOptions);
|
||||
/**
|
||||
* Verify a single transaction. Returns `{ verified: false, error: '...' }`
|
||||
* on a real verification failure (wrong amount, wrong receiver, expired
|
||||
* receipt). Throws QbirrError for network/auth problems.
|
||||
*/
|
||||
verify(req: VerifyRequest): Promise<VerifyResult>;
|
||||
/**
|
||||
* Verify by uploading the receipt itself — PDF or an image (PNG/JPEG).
|
||||
* Images with a QR code (most bank receipts have one) are decoded and
|
||||
* routed through the URL-based flow automatically.
|
||||
*
|
||||
* const buf = await fs.readFile('receipt.pdf');
|
||||
* await qb.verifyUpload({
|
||||
* provider: 'cbe',
|
||||
* amount: 999,
|
||||
* receiverName: 'YOUR NAME',
|
||||
* receiverAccount: '1000017692643',
|
||||
* file: buf,
|
||||
* filename: 'receipt.pdf',
|
||||
* contentType: 'application/pdf',
|
||||
* });
|
||||
*/
|
||||
verifyUpload(opts: {
|
||||
provider: Provider;
|
||||
amount: number;
|
||||
receiverName: string;
|
||||
receiverAccount?: string;
|
||||
file: Buffer | Uint8Array | Blob;
|
||||
filename?: string;
|
||||
contentType?: string;
|
||||
}): Promise<VerifyResult>;
|
||||
/** Returns the current month's quota usage for this API key. */
|
||||
usage(): Promise<UsageStatus>;
|
||||
private requestForm;
|
||||
private request;
|
||||
}
|
||||
export default Qbirr;
|
||||
Reference in New Issue
Block a user