diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 00000000..db7e90f2 --- /dev/null +++ b/index.d.ts @@ -0,0 +1,92 @@ +import { EventEmitter } from "events"; + +type ConnectOptions = { + share_mode?: number; + protocol?: number; +}; + +type Status = { + atr?: Buffer; + state: number; +}; + +type AnyOrNothing = any | undefined | null; + +interface PCSCLite extends EventEmitter { + on(type: "error", listener: (error: any) => void): this; + once(type: "error", listener: (error: any) => void): this; + on(type: "reader", listener: (reader: CardReader) => void): this; + once(type: "reader", listener: (reader: CardReader) => void): this; + close(): void; +} + +interface CardReader extends EventEmitter { + // Share Mode + SCARD_SHARE_SHARED: number; + SCARD_SHARE_EXCLUSIVE: number; + SCARD_SHARE_DIRECT: number; + // Protocol + SCARD_PROTOCOL_T0: number; + SCARD_PROTOCOL_T1: number; + SCARD_PROTOCOL_RAW: number; + // State + SCARD_STATE_UNAWARE: number; + SCARD_STATE_IGNORE: number; + SCARD_STATE_CHANGED: number; + SCARD_STATE_UNKNOWN: number; + SCARD_STATE_UNAVAILABLE: number; + SCARD_STATE_EMPTY: number; + SCARD_STATE_PRESENT: number; + SCARD_STATE_ATRMATCH: number; + SCARD_STATE_EXCLUSIVE: number; + SCARD_STATE_INUSE: number; + SCARD_STATE_MUTE: number; + // Disconnect disposition + SCARD_LEAVE_CARD: number; + SCARD_RESET_CARD: number; + SCARD_UNPOWER_CARD: number; + SCARD_EJECT_CARD: number; + name: string; + state: number; + connected: boolean; + on(type: "error", listener: (this: CardReader, error: any) => void): this; + once(type: "error", listener: (this: CardReader, error: any) => void): this; + on(type: "end", listener: (this: CardReader) => void): this; + once(type: "end", listener: (this: CardReader) => void): this; + on( + type: "status", + listener: (this: CardReader, status: Status) => void + ): this; + once( + type: "status", + listener: (this: CardReader, status: Status) => void + ): this; + SCARD_CTL_CODE(code: number): number; + get_status( + cb: (err: AnyOrNothing, state: number, atr?: Buffer) => void + ): void; + connect(callback: (err: AnyOrNothing, protocol: number) => void): void; + connect( + options: ConnectOptions, + callback: (err: AnyOrNothing, protocol: number) => void + ): void; + disconnect(callback: (err: AnyOrNothing) => void): void; + disconnect(disposition: number, callback: (err: AnyOrNothing) => void): void; + transmit( + data: Buffer, + res_len: number, + protocol: number, + cb: (err: AnyOrNothing, response: Buffer) => void + ): void; + control( + data: Buffer, + control_code: number, + res_len: number, + cb: (err: AnyOrNothing, response: Buffer) => void + ): void; + close(): void; +} + +declare function pcsc(): PCSCLite; + +export = pcsc;