diff --git a/yandex-money-sdk/yandex-money-sdk.d.ts b/yandex-money-sdk/yandex-money-sdk.d.ts new file mode 100644 index 000000000..0fda60f2f --- /dev/null +++ b/yandex-money-sdk/yandex-money-sdk.d.ts @@ -0,0 +1,308 @@ +// Type definitions for NodeJS Yandex.Money API SDK +// Project: https://github.com/yandex-money/yandex-money-sdk-nodejs +// Definitions by: Ilya Mochalov +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +/// + +declare namespace YandexMoneySDK { + namespace Wallet { + interface GetAccessTokenResult { + access_token?: string; + error?: string; + } + + interface SendAuthenticatedRequestParams { + headers?: any; + data?: any; + url: string; + } + + interface AccountInfoResult { + account: string; + balance: number; + currency: string; + account_status: string; + account_type: string; + avatar?: { + url: string; + ts: string; + }; + balance_details?: { + total: number; + available: number; + deposition_pending?: number; + blocked?: number; + debt?: number; + hold?: number; + } + cards_linked?: { + pan_fragment?: string; + type?: string; + }[]; + } + + interface OperationHistoryOptions { + type: string; + label: string; + from?: string|Date; + till?: string|Date; + start_record?: string; + records?: number; + details?: boolean; + } + + interface OperationHistoryResult { + error?: string; + next_record?: string; + operations?: { + operation_id: string; + status: string; + datetime: string; + title: string; + pattern_id?: string; + direction: string; + amount: number; + label?: string; + type?: string; + }[]; + } + + interface OperationDetailsResult { + error?: string; + operation_id?: string; + status?: string; + pattern_id?: string; + direction?: string; + amount?: number; + amount_due?: number; + fee?: number; + datetime?: string; + title?: string; + sender?: string; + recipient?: string; + recipient_type?: string; + message?: string; + comment?: string; + codepro?: boolean; + protection_code?: string; + expires?: string; + answer_datetime?: string; + label?: string; + details?: string; + type?: string; + digital_goods?: { + article: { + merchantArticleId: string; + serial: string; + secret: string; + }[]; + bonus: { + serial: string; + secret: string; + }[]; + }; + } + + interface RequestPaymentOptions { + pattern_id: string; + to?: string; + amount?: number; + amount_due?: number; + comment?: string; + message?: string; + label?: string; + codepro?: boolean; + hold_for_pickup?: boolean; + expire_period?: number; + 'phone-number'?: string; + [key: string]: any + + test_payment?: boolean; + test_card?: string; + test_result?: string; + } + + interface RequestPaymentResult { + status: string; + error?: string; + money_source?: { + wallet?: { + allowed: boolean; + }; + cards?: { + allowed: boolean; + csc_required: boolean; + items: { + id: string; + pan_fragment: string; + type: string; + }[]; + }; + }; + request_id?: string; + contract_amount?: number; + balance?: number; + recipient_account_status?: string; + recipient_account_type?: string; + protection_code?: string; + account_unblock_uri?: string; + ext_action_uri?: string; + } + + interface ProcessPaymentOptions { + request_id: string; + money_source?: string; + csc?: string; + ext_auth_success_uri?: string; + ext_auth_fail_uri?: string; + + test_payment?: boolean; + test_card?: string; + test_result?: string; + } + + interface ProcessPaymentResult { + status: string; + error?: string; + payment_id?: string; + balance?: number; + invoice_id?: string; + payer?: string; + payee?: string; + credit_amount?: number; + account_unblock_uri?: string; + hold_for_pickup_link?: string; + acs_uri?: string; + acs_params?: { + MD: string; + PaReq: string; + [key: string]: any + }; + next_retry?: number; + digital_goods?: { + article: { + merchantArticleId: string; + serial: string; + secret: string; + }[]; + bonus: { + serial: string; + secret: string; + }[]; + }; + } + + interface IncomingTransferAcceptResult { + status: string; + error?: string; + protection_code_attempts_available?: number; + ext_action_uri?: string; + } + + interface IncomingTransferRejectResult { + status: string; + error?: string; + } + } + + namespace ExternalPayment { + interface GetInstanceIdResult { + status: string; + error?: string; + instance_id?: string; + } + + interface RequestOptions { + pattern_id: string; + // instance_id: string; // the method always overwrites this value + to?: string; + amount?: number; + amount_due?: number; + message?: string; + [key: string]: any; + } + + interface RequestResult { + status: string; + error?: string; + request_id?: string; + contract_amount?: number; + title?: string; + } + + interface ProcessOptions { + request_id: string; + // instance_id: string; // the method always overwrites this value + ext_auth_success_uri: string; + ext_auth_fail_uri: string; + request_token?: boolean; + money_source_token?: string; + csc?: string; + } + + interface ProcessResult { + status: string; + error?: string; + acs_uri?: string; + acs_params?: { + MD: string; + PaReq: string; + [key: string]: any + }; + money_source?: { + type: string; + payment_card_type: string; + pan_fragment?: string; + money_source_token?: string; + }; + next_retry?: number; + invoice_id?: string; + } + } +} + +declare module "yandex-money-sdk" { + import * as http from 'http'; + + export interface ResponseCallback { + (err: any, body: TBody, response: http.IncomingMessage): any; + } + + export interface WalletStatic { + new (accessToken: string): Wallet; + buildObtainTokenUrl(clientId: string, redirectURI: string, scope: string[]): string; + getAccessToken(clientId: string, code: string, redirectURI: string, clientSecret: string, callback: ResponseCallback): void; + revokeToken(token: string, revoke_all: any, callback: ResponseCallback): void; // revoke_all missing in documentation + } + + export interface Wallet { + sendAuthenticatedRequest(params: YandexMoneySDK.Wallet.SendAuthenticatedRequestParams, callback: ResponseCallback): void; + accountInfo(callback: ResponseCallback): void; + operationHistory(options: YandexMoneySDK.Wallet.OperationHistoryOptions, callback: ResponseCallback): void; + operationDetails(operation_id: string, callback: ResponseCallback): void; + requestPayment(options: YandexMoneySDK.Wallet.RequestPaymentOptions, callback: ResponseCallback): void; + processPayment(options: YandexMoneySDK.Wallet.ProcessPaymentOptions, callback: ResponseCallback): void; + incomingTransferAccept(operation_id: string, protectionCode: string, callback: ResponseCallback): void; + incomingTransferReject(operation_id: string, callback: ResponseCallback): void; + } + + export interface ExternalPaymentStatic { + new (instanceId: string): ExternalPayment; + getInstanceId(clientId: string, callback: ResponseCallback): void; + } + + export interface ExternalPayment { + request(options: YandexMoneySDK.ExternalPayment.RequestOptions, callback: ResponseCallback): void; + process(options: YandexMoneySDK.ExternalPayment.ProcessOptions, callback: ResponseCallback): void; + } + + export interface Config { + MONEY_URL: string; + SP_MONEY_URL: string; + } + + export var Wallet: WalletStatic; + export var ExternalPayment: ExternalPaymentStatic; + export var Config: Config; +}