@coinbase/cdp-sdk
Version:
SDK for interacting with the Coinbase Developer Platform Wallet API
370 lines (346 loc) • 12.7 kB
text/typescript
/**
* Generated by orval v7.6.0 🍺
* Do not edit manually.
* Coinbase Developer Platform APIs
* The Coinbase Developer Platform APIs - leading the world's transition onchain.
* OpenAPI spec version: 2.0.0
*/
import { faker } from "@faker-js/faker";
import { HttpResponse, delay, http } from "msw";
import { PaymentRailAction } from "../coinbaseDeveloperPlatformAPIs.schemas.js";
import type {
CreatePaymentTransferQuote201,
CryptoRail,
CryptoRailAddress,
PaymentMethod,
PaymentMethodRequest,
Transfer,
} from "../coinbaseDeveloperPlatformAPIs.schemas.js";
export const getGetPaymentMethodsResponseMock = (): PaymentMethod[] =>
Array.from({ length: faker.number.int({ min: 1, max: 10 }) }, (_, i) => i + 1).map(() => ({
id: faker.helpers.fromRegExp(
"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
),
type: faker.helpers.arrayElement(["card", "fiat_account"] as const),
currency: faker.string.alpha(20),
actions: faker.helpers.arrayElements(Object.values(PaymentRailAction)),
limits: faker.helpers.arrayElement([
{
sourceLimit: faker.helpers.arrayElement([
{
amount: faker.helpers.arrayElement([faker.string.alpha(20), undefined]),
currency: faker.helpers.arrayElement([faker.string.alpha(20), undefined]),
},
undefined,
]),
targetLimit: faker.helpers.arrayElement([
{
amount: faker.helpers.arrayElement([faker.string.alpha(20), undefined]),
currency: faker.helpers.arrayElement([faker.string.alpha(20), undefined]),
},
undefined,
]),
},
undefined,
]),
}));
export const getGetCryptoRailsResponseMock = (): CryptoRail[] =>
Array.from({ length: faker.number.int({ min: 1, max: 10 }) }, (_, i) => i + 1).map(() => ({
currency: faker.string.alpha(20),
name: faker.string.alpha(20),
networks: Array.from({ length: faker.number.int({ min: 1, max: 10 }) }, (_, i) => i + 1).map(
() => ({
name: faker.helpers.arrayElement([faker.string.alpha(20), undefined]),
chainId: faker.helpers.arrayElement([
faker.number.int({ min: undefined, max: undefined }),
undefined,
]),
contractAddress: faker.helpers.arrayElement([faker.string.alpha(20), undefined]),
}),
),
actions: faker.helpers.arrayElements(Object.values(PaymentRailAction)),
}));
export const getCreatePaymentTransferQuoteResponsePaymentMethodRequestMock = (
overrideResponse: Partial<PaymentMethodRequest> = {},
): PaymentMethodRequest => ({
...{
id: faker.helpers.fromRegExp(
"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
),
},
...overrideResponse,
});
export const getCreatePaymentTransferQuoteResponseCryptoRailAddressMock = (
overrideResponse: Partial<CryptoRailAddress> = {},
): CryptoRailAddress => ({
...{
currency: faker.string.alpha(20),
network: faker.string.alpha(20),
address: faker.string.alpha(20),
},
...overrideResponse,
});
export const getCreatePaymentTransferQuoteResponseMock = (
overrideResponse: Partial<CreatePaymentTransferQuote201> = {},
): CreatePaymentTransferQuote201 => ({
transfer: {
id: faker.helpers.fromRegExp(
"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
),
sourceType: faker.helpers.arrayElement(["payment_method"] as const),
source: faker.helpers.arrayElement([
{ ...getCreatePaymentTransferQuoteResponsePaymentMethodRequestMock() },
]),
targetType: faker.helpers.arrayElement(["crypto_rail"] as const),
target: faker.helpers.arrayElement([
{ ...getCreatePaymentTransferQuoteResponseCryptoRailAddressMock() },
]),
sourceAmount: faker.string.alpha(20),
sourceCurrency: faker.string.alpha(20),
targetAmount: faker.string.alpha(20),
targetCurrency: faker.string.alpha(20),
userAmount: faker.string.alpha(20),
userCurrency: faker.string.alpha(20),
fees: Array.from({ length: faker.number.int({ min: 1, max: 10 }) }, (_, i) => i + 1).map(
() => ({
type: faker.helpers.arrayElement(["exchange_fee", "network_fee"] as const),
amount: faker.string.alpha(20),
currency: faker.string.alpha(20),
description: faker.helpers.arrayElement([faker.string.alpha(20), undefined]),
}),
),
status: faker.helpers.arrayElement([
"created",
"pending",
"started",
"completed",
"failed",
] as const),
createdAt: faker.string.alpha(20),
updatedAt: faker.string.alpha(20),
transactionHash: faker.helpers.arrayElement([faker.string.alpha(20), undefined]),
},
...overrideResponse,
});
export const getExecutePaymentTransferQuoteResponsePaymentMethodRequestMock = (
overrideResponse: Partial<PaymentMethodRequest> = {},
): PaymentMethodRequest => ({
...{
id: faker.helpers.fromRegExp(
"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
),
},
...overrideResponse,
});
export const getExecutePaymentTransferQuoteResponseCryptoRailAddressMock = (
overrideResponse: Partial<CryptoRailAddress> = {},
): CryptoRailAddress => ({
...{
currency: faker.string.alpha(20),
network: faker.string.alpha(20),
address: faker.string.alpha(20),
},
...overrideResponse,
});
export const getExecutePaymentTransferQuoteResponseMock = (
overrideResponse: Partial<Transfer> = {},
): Transfer => ({
id: faker.helpers.fromRegExp(
"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
),
sourceType: faker.helpers.arrayElement(["payment_method"] as const),
source: faker.helpers.arrayElement([
{ ...getExecutePaymentTransferQuoteResponsePaymentMethodRequestMock() },
]),
targetType: faker.helpers.arrayElement(["crypto_rail"] as const),
target: faker.helpers.arrayElement([
{ ...getExecutePaymentTransferQuoteResponseCryptoRailAddressMock() },
]),
sourceAmount: faker.string.alpha(20),
sourceCurrency: faker.string.alpha(20),
targetAmount: faker.string.alpha(20),
targetCurrency: faker.string.alpha(20),
userAmount: faker.string.alpha(20),
userCurrency: faker.string.alpha(20),
fees: Array.from({ length: faker.number.int({ min: 1, max: 10 }) }, (_, i) => i + 1).map(() => ({
type: faker.helpers.arrayElement(["exchange_fee", "network_fee"] as const),
amount: faker.string.alpha(20),
currency: faker.string.alpha(20),
description: faker.helpers.arrayElement([faker.string.alpha(20), undefined]),
})),
status: faker.helpers.arrayElement([
"created",
"pending",
"started",
"completed",
"failed",
] as const),
createdAt: faker.string.alpha(20),
updatedAt: faker.string.alpha(20),
transactionHash: faker.helpers.arrayElement([faker.string.alpha(20), undefined]),
...overrideResponse,
});
export const getGetPaymentTransferResponsePaymentMethodRequestMock = (
overrideResponse: Partial<PaymentMethodRequest> = {},
): PaymentMethodRequest => ({
...{
id: faker.helpers.fromRegExp(
"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
),
},
...overrideResponse,
});
export const getGetPaymentTransferResponseCryptoRailAddressMock = (
overrideResponse: Partial<CryptoRailAddress> = {},
): CryptoRailAddress => ({
...{
currency: faker.string.alpha(20),
network: faker.string.alpha(20),
address: faker.string.alpha(20),
},
...overrideResponse,
});
export const getGetPaymentTransferResponseMock = (
overrideResponse: Partial<Transfer> = {},
): Transfer => ({
id: faker.helpers.fromRegExp(
"^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$",
),
sourceType: faker.helpers.arrayElement(["payment_method"] as const),
source: faker.helpers.arrayElement([
{ ...getGetPaymentTransferResponsePaymentMethodRequestMock() },
]),
targetType: faker.helpers.arrayElement(["crypto_rail"] as const),
target: faker.helpers.arrayElement([{ ...getGetPaymentTransferResponseCryptoRailAddressMock() }]),
sourceAmount: faker.string.alpha(20),
sourceCurrency: faker.string.alpha(20),
targetAmount: faker.string.alpha(20),
targetCurrency: faker.string.alpha(20),
userAmount: faker.string.alpha(20),
userCurrency: faker.string.alpha(20),
fees: Array.from({ length: faker.number.int({ min: 1, max: 10 }) }, (_, i) => i + 1).map(() => ({
type: faker.helpers.arrayElement(["exchange_fee", "network_fee"] as const),
amount: faker.string.alpha(20),
currency: faker.string.alpha(20),
description: faker.helpers.arrayElement([faker.string.alpha(20), undefined]),
})),
status: faker.helpers.arrayElement([
"created",
"pending",
"started",
"completed",
"failed",
] as const),
createdAt: faker.string.alpha(20),
updatedAt: faker.string.alpha(20),
transactionHash: faker.helpers.arrayElement([faker.string.alpha(20), undefined]),
...overrideResponse,
});
export const getGetPaymentMethodsMockHandler = (
overrideResponse?:
| PaymentMethod[]
| ((
info: Parameters<Parameters<typeof http.get>[1]>[0],
) => Promise<PaymentMethod[]> | PaymentMethod[]),
) => {
return http.get("*/v2/payments/rails/payment-methods", async info => {
await delay(0);
return new HttpResponse(
JSON.stringify(
overrideResponse !== undefined
? typeof overrideResponse === "function"
? await overrideResponse(info)
: overrideResponse
: getGetPaymentMethodsResponseMock(),
),
{ status: 200, headers: { "Content-Type": "application/json" } },
);
});
};
export const getGetCryptoRailsMockHandler = (
overrideResponse?:
| CryptoRail[]
| ((
info: Parameters<Parameters<typeof http.get>[1]>[0],
) => Promise<CryptoRail[]> | CryptoRail[]),
) => {
return http.get("*/v2/payments/rails/crypto", async info => {
await delay(0);
return new HttpResponse(
JSON.stringify(
overrideResponse !== undefined
? typeof overrideResponse === "function"
? await overrideResponse(info)
: overrideResponse
: getGetCryptoRailsResponseMock(),
),
{ status: 200, headers: { "Content-Type": "application/json" } },
);
});
};
export const getCreatePaymentTransferQuoteMockHandler = (
overrideResponse?:
| CreatePaymentTransferQuote201
| ((
info: Parameters<Parameters<typeof http.post>[1]>[0],
) => Promise<CreatePaymentTransferQuote201> | CreatePaymentTransferQuote201),
) => {
return http.post("*/v2/payments/transfers", async info => {
await delay(0);
return new HttpResponse(
JSON.stringify(
overrideResponse !== undefined
? typeof overrideResponse === "function"
? await overrideResponse(info)
: overrideResponse
: getCreatePaymentTransferQuoteResponseMock(),
),
{ status: 201, headers: { "Content-Type": "application/json" } },
);
});
};
export const getExecutePaymentTransferQuoteMockHandler = (
overrideResponse?:
| Transfer
| ((info: Parameters<Parameters<typeof http.post>[1]>[0]) => Promise<Transfer> | Transfer),
) => {
return http.post("*/v2/payments/transfers/:transferId/execute", async info => {
await delay(0);
return new HttpResponse(
JSON.stringify(
overrideResponse !== undefined
? typeof overrideResponse === "function"
? await overrideResponse(info)
: overrideResponse
: getExecutePaymentTransferQuoteResponseMock(),
),
{ status: 200, headers: { "Content-Type": "application/json" } },
);
});
};
export const getGetPaymentTransferMockHandler = (
overrideResponse?:
| Transfer
| ((info: Parameters<Parameters<typeof http.get>[1]>[0]) => Promise<Transfer> | Transfer),
) => {
return http.get("*/v2/payments/transfers/:transferId", async info => {
await delay(0);
return new HttpResponse(
JSON.stringify(
overrideResponse !== undefined
? typeof overrideResponse === "function"
? await overrideResponse(info)
: overrideResponse
: getGetPaymentTransferResponseMock(),
),
{ status: 200, headers: { "Content-Type": "application/json" } },
);
});
};
export const getPaymentsAlphaMock = () => [
getGetPaymentMethodsMockHandler(),
getGetCryptoRailsMockHandler(),
getCreatePaymentTransferQuoteMockHandler(),
getExecutePaymentTransferQuoteMockHandler(),
getGetPaymentTransferMockHandler(),
];