Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
159 changes: 159 additions & 0 deletions index.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
import request = require('request-promise');
Copy link
Contributor

@Maxwell2022 Maxwell2022 Nov 9, 2018

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

import ... = require(...)

Is this working? That's the first time I'm seeing this syntax

import Requester from './src/Requester';
Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.


export interface Config {

}

type Response = request.RequestPromise;

export interface ListArgs {
limit: number;
offset: number;
search?: string;
}

export class Requester<Config> {
request(uri, params, method): Response;
post(uri, params): Response;
get(uri, params): Response;
patch(uri, params): Response;
delete(uri): Response;
log(message): void;
}

export interface Http<Requester> {
create(data): Response;
list(data: ListArgs): Response;
get(id: string): Response;
update(data, id: string): Response;
}

export interface User<Requester> extends Http {
getBankAccount(id: string): Response;
getCardAccount(id: string): Response;
getPaypalAccount(id: string): Response;
getWalletAccount(id: string): Response;
setDisbursementAccount(id: string, accountId: string): Response;
listItems(id: string): Response;
};

export interface BankAccount<Requester> extends Http {
getUsers(id: string): Response;
verifyRoutingNumber(number: number): Response;
}

export interface CardAccount<Requester> extends Http {
getUsers(id: string): Response;
}

export interface PaypalAccount<Requester> extends Http {}

export interface DirectDebitAuthority<Requester> extends Http {}

interface FeeArgs {
name: string;
fee_type_id: string;
amount: number;
cap: number;
min: number;
max: number;
to: string;
}
export interface Fee<Requester> extends Http {
create(params: FeeArgs): Response;
list(params: ListArgs): Response;
}

interface ItemUpdateArgs {
name: string;
amount: number;
fee_ids: Array<string>;
description: string;
buyer_id: string;
seller_id: string;
};

interface ItemListArgs extends ListArgs {
disbursement_id: string;
}
export interface Item<Requester> extends Http {
list(params: ItemListArgs): Response;
update(id: string, data: ItemUpdateArgs): Response;
deleteFees(id: string): Response;
status(id: string): Response;
getBuyers(id: string): Response;
getSellers(id: string): Response;
getFees(id: string): Response;
getWireDetails(id: string): Response;
getBPayDetails(id: string): Response;
getTransactions(id: string): Response;
getBatchTransactions(id: string): Response;
}

// Payment
interface MakePaymentArgs {
account_id: string;
ip_address: string;
device_id: string;
}


interface RequestReleaseArgs {
release_amount: number;
}

interface RequestRefundArgs {
refund_amount: number;
refund_message: string;
}

interface RefundArgs {
refund_amount: number;
refund_message: string;
}

interface RaiseDisputeArgs {
user_id: string;
}

export interface ItemAction<Requester> extends Http {
triggerAction(action: string, itemId: string, params: any): Response;
requestPayment(itemId: string): Response;
makePayment(itemId: string, params: MakePaymentArgs): Response;
requestRelease(itemId: string, params: RequestReleaseArgs): Response;
requestRefund(itemId: string, params: RequestRefundArgs): Response;
refund(itemId: string, params: RefundArgs): Response;
declineRefund(itemId: string): Response;
raiseDispute(itemId, params: RaiseDisputeArgs): Response;
requestDisputeResolution(itemId: string): Response;
resolveDispute(itemId: string): Response;
escalateDispute(itemId: string): Response;
acknowledgeWireTransfer(itemId: string): Response;
revertWireTransfer(itemId: string): Response;
cancel(itemId: string): Response;
sendTaxInvoice(itemId: string): Response;
requestTaxInvoice(itemId: string): Response;
}

interface WalletArgs {
account_id: string;
amount: number;
}

export interface WalletAccount<Requester> extends Http {
withdraw(id: string, params: WalletArgs): Response;
deposit(id: string, params: WalletArgs): Response;
getUser(id: string): Response;
}

export interface Company<Requester> extends Http {}

export interface Promisepay {
users: User<request.RequestPromise>;
companies: Company<request.RequestPromise>;
}

declare module 'node-promisepay' {
export default function (config: Config) : Promisepay;
};
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
"request-promise": "^4.1.0"
},
"devDependencies": {
"@types/request-promise": "^4.1.42",
"babel-core": "^6.23.0",
"babel-eslint": "^7.1.0",
"babel-plugin-transform-async-to-module-method": "^6.22.0",
Expand Down
38 changes: 38 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,44 @@
# yarn lockfile v1


"@types/bluebird@*":
version "3.5.24"
resolved "https://registry.yarnpkg.com/@types/bluebird/-/bluebird-3.5.24.tgz#11f76812531c14f793b8ecbf1de96f672905de8a"

"@types/caseless@*":
version "0.12.1"
resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.1.tgz#9794c69c8385d0192acc471a540d1f8e0d16218a"

"@types/form-data@*":
version "2.2.1"
resolved "https://registry.yarnpkg.com/@types/form-data/-/form-data-2.2.1.tgz#ee2b3b8eaa11c0938289953606b745b738c54b1e"
dependencies:
"@types/node" "*"

"@types/node@*":
version "10.12.3"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.3.tgz#3918b73ceed484e58367be5acb79d1775239e393"

"@types/request-promise@^4.1.42":
version "4.1.42"
resolved "https://registry.yarnpkg.com/@types/request-promise/-/request-promise-4.1.42.tgz#a70a6777429531e60ed09faa077ead9b995204cd"
dependencies:
"@types/bluebird" "*"
"@types/request" "*"

"@types/request@*":
version "2.48.1"
resolved "https://registry.yarnpkg.com/@types/request/-/request-2.48.1.tgz#e402d691aa6670fbbff1957b15f1270230ab42fa"
dependencies:
"@types/caseless" "*"
"@types/form-data" "*"
"@types/node" "*"
"@types/tough-cookie" "*"

"@types/tough-cookie@*":
version "2.3.4"
resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-2.3.4.tgz#821878b81bfab971b93a265a561d54ea61f9059f"

abbrev@1, abbrev@1.0.x:
version "1.0.9"
resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135"
Expand Down