yc-types
Version:
TypeScript types and interfaces for YellowCard protobuf definitions
302 lines (301 loc) • 9.86 kB
TypeScript
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 {};