UNPKG

yc-types

Version:

TypeScript types and interfaces for YellowCard protobuf definitions

302 lines (301 loc) 9.86 kB
import { BinaryReader, BinaryWriter } from "@bufbuild/protobuf/wire"; import { Citizen } from "./citizen"; import { Metadata } from "./common"; import { Duration } from "./google/protobuf/duration"; import { Issuer } from "./issuer"; export declare const protobufPackage = "pb"; /** Core blockchain card structure */ export interface ChainCard { id: string; issuer: Issuer | undefined; citizen: Citizen | undefined; status: string; qrCode: string; isRevoked: boolean; bcTxHash: string; bcNetwork: string; issuedAt: Date | undefined; lastScanned: Date | undefined; lastScannedLocation: Uint8Array; scanInterval: Duration | undefined; revocationReason: string; cardNumber: string; snapshotHash: string; proof: ChainProof | undefined; } /** Blockchain proof for card verification */ export interface ChainProof { id: string; cardId: string; dataHash: string; txHash: string; blockNumber: number; network: string; anchoredAt: Date | undefined; } /** Request to create a new blockchain card */ export interface CreateChainCardRequest { citizenId: string; issuerId: string; scanInterval: Duration | undefined; metadata: { [key: string]: string; }; } export interface CreateChainCardRequest_MetadataEntry { key: string; value: string; } /** Enhanced card details for API responses */ export interface CardDetails { cardId: string; cardNumber: string; citizenFirstName: string; citizenLastName: string; citizenEmail: string; citizenNin: string; status: string; isRevoked: boolean; issuedAt: Date | undefined; vaccinationCount: number; snapshotHash: string; qrCode: string; issuer: Issuer | undefined; proof: ChainProof | undefined; revocationReason: string; } /** Vaccination data structure */ export interface VaccinationInput { vaccineId: string; diseaseId: string; batchId: string; vaccinationDate: string; validUntil: Date | undefined; doseNumber: number; administeredBy: string; notes: string; } /** Vaccination details for API responses */ export interface VaccinationDetails { id: string; vaccineName: string; diseaseName: string; batchNumber: string; vaccinationDate: Date | undefined; validUntil: Date | undefined; doseNumber: number; status: string; administeredBy: string; notes: string; } /** Vaccine information */ export interface VaccineInfo { id: string; vaccineName: string; manufacturer: string; dosesRequired: number; targetDiseases: string[]; } /** Disease information */ export interface DiseaseInfo { id: string; diseaseName: string; description: string; isActive: boolean; } /** Vaccination batch information */ export interface VaccinationBatchInfo { id: string; batchNumber: string; vaccineName: string; manufacturer: string; expiryDate: string; quantity: number; remainingQuantity: number; isActive: boolean; } /** Issue a new yellow card */ export interface IssueYellowCardRequest { firstName: string; lastName: string; email: string; nin: string; phoneNumber: string; passportNumber: string; vaccination: VaccinationInput | undefined; /** If provided, treat as OTP issuance flow */ otpCode?: string | undefined; /** Required when otp_code is set */ paymentReference?: string | undefined; } export interface IssueYellowCardResponse { status: number; message: string; citizenId: string; cardId: string; cardNumber: string; qrCode: string; blockchainTxId: string; snapshotHash: string; } export interface BulkIssueYellowCardRequest { items: IssueYellowCardRequest[]; } export interface BulkIssueYellowCardResponse { status: number; message: string; results: IssueYellowCardResponse[]; } /** Get card by number */ export interface APIGetCardRequest { cardNumber: string; } export interface APIGetCardResponse { status: number; message: string; card: CardDetails | undefined; } /** List cards with pagination */ export interface APIListCardsResponse { status: number; cards: CardDetails[]; meta: Metadata | undefined; } /** Add vaccination to existing card */ export interface APIAddVaccinationRequest { cardNumber: string; vaccineId: string; diseaseId: string; batchId: string; vaccinationDate: string; validUntil: string; doseNumber: number; administeredBy: string; notes: string; } export interface APIAddVaccinationResponse { status: number; message: string; vaccinationId: string; blockchainTxId: string; } /** Get vaccinations for a card */ export interface APIGetVaccinationsResponse { status: number; vaccinations: VaccinationDetails[]; meta: Metadata | undefined; } /** Verify card authenticity */ export interface APIVerifyCardRequest { cardNumber: string; snapshotHash: string; } export interface APIVerifyCardResponse { status: number; message: string; isValid: boolean; isRevoked: boolean; card: CardDetails | undefined; } /** Revoke a card */ export interface APIRevokeCardRequest { cardNumber: string; reason: string; } export interface APIRevokeCardResponse { status: number; message: string; } /** List vaccines */ export interface APIListVaccinesResponse { status: number; vaccines: VaccineInfo[]; meta: Metadata | undefined; } /** List diseases */ export interface APIListDiseasesResponse { status: number; diseases: DiseaseInfo[]; meta: Metadata | undefined; } /** List vaccination batches */ export interface APIListVaccinationBatchesResponse { status: number; batches: VaccinationBatchInfo[]; meta: Metadata | undefined; } /** Verification result details */ export interface VerificationResult { verificationStatus: string; hashMatch: boolean; proofFound: boolean; onChainVerified: boolean; reason: string; card: CardDetails | undefined; } /** Blockchain card verification */ export interface VerifyChainCardRequest { cardId: string; dataHash: string; cardNumber: string; } export interface VerifyChainCardResponse { status: number; result: VerificationResult | undefined; } /** List blockchain cards */ export interface ListChainCardsResponse { status: number; chainCards: ChainCard[]; meta: Metadata | undefined; } export declare const ChainCard: MessageFns<ChainCard>; export declare const ChainProof: MessageFns<ChainProof>; export declare const CreateChainCardRequest: MessageFns<CreateChainCardRequest>; export declare const CreateChainCardRequest_MetadataEntry: MessageFns<CreateChainCardRequest_MetadataEntry>; export declare const CardDetails: MessageFns<CardDetails>; export declare const VaccinationInput: MessageFns<VaccinationInput>; export declare const VaccinationDetails: MessageFns<VaccinationDetails>; export declare const VaccineInfo: MessageFns<VaccineInfo>; export declare const DiseaseInfo: MessageFns<DiseaseInfo>; export declare const VaccinationBatchInfo: MessageFns<VaccinationBatchInfo>; export declare const IssueYellowCardRequest: MessageFns<IssueYellowCardRequest>; export declare const IssueYellowCardResponse: MessageFns<IssueYellowCardResponse>; export declare const BulkIssueYellowCardRequest: MessageFns<BulkIssueYellowCardRequest>; export declare const BulkIssueYellowCardResponse: MessageFns<BulkIssueYellowCardResponse>; export declare const APIGetCardRequest: MessageFns<APIGetCardRequest>; export declare const APIGetCardResponse: MessageFns<APIGetCardResponse>; export declare const APIListCardsResponse: MessageFns<APIListCardsResponse>; export declare const APIAddVaccinationRequest: MessageFns<APIAddVaccinationRequest>; export declare const APIAddVaccinationResponse: MessageFns<APIAddVaccinationResponse>; export declare const APIGetVaccinationsResponse: MessageFns<APIGetVaccinationsResponse>; export declare const APIVerifyCardRequest: MessageFns<APIVerifyCardRequest>; export declare const APIVerifyCardResponse: MessageFns<APIVerifyCardResponse>; export declare const APIRevokeCardRequest: MessageFns<APIRevokeCardRequest>; export declare const APIRevokeCardResponse: MessageFns<APIRevokeCardResponse>; export declare const APIListVaccinesResponse: MessageFns<APIListVaccinesResponse>; export declare const APIListDiseasesResponse: MessageFns<APIListDiseasesResponse>; export declare const APIListVaccinationBatchesResponse: MessageFns<APIListVaccinationBatchesResponse>; export declare const VerificationResult: MessageFns<VerificationResult>; export declare const VerifyChainCardRequest: MessageFns<VerifyChainCardRequest>; export declare const VerifyChainCardResponse: MessageFns<VerifyChainCardResponse>; export declare const ListChainCardsResponse: MessageFns<ListChainCardsResponse>; type Builtin = Date | Function | Uint8Array | string | number | boolean | undefined; export type DeepPartial<T> = T extends Builtin ? T : T extends globalThis.Array<infer U> ? globalThis.Array<DeepPartial<U>> : T extends ReadonlyArray<infer U> ? ReadonlyArray<DeepPartial<U>> : T extends {} ? { [K in keyof T]?: DeepPartial<T[K]>; } : Partial<T>; type KeysOfUnion<T> = T extends T ? keyof T : never; export type Exact<P, I extends P> = P extends Builtin ? P : P & { [K in keyof P]: Exact<P[K], I[K]>; } & { [K in Exclude<keyof I, KeysOfUnion<P>>]: never; }; export interface MessageFns<T> { encode(message: T, writer?: BinaryWriter): BinaryWriter; decode(input: BinaryReader | Uint8Array, length?: number): T; fromJSON(object: any): T; toJSON(message: T): unknown; create<I extends Exact<DeepPartial<T>, I>>(base?: I): T; fromPartial<I extends Exact<DeepPartial<T>, I>>(object: I): T; } export {};