@t-0/provider-sdk 1.0.25 → 1.0.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/lib/cjs/client/client.js +46 -0
  2. package/lib/cjs/client/signer.js +69 -0
  3. package/lib/cjs/common/gen/tzero/v1/common/common_pb.js +56 -0
  4. package/lib/cjs/common/gen/tzero/v1/common/payment_method_pb.js +60 -0
  5. package/lib/cjs/common/gen/tzero/v1/payment/network_pb.js +147 -0
  6. package/lib/cjs/common/gen/tzero/v1/payment/provider_pb.js +206 -0
  7. package/lib/cjs/common/gen/tzero/v1/payment_intent/provider/provider_pb.js +87 -0
  8. package/lib/cjs/common/gen/tzero/v1/payment_intent/recipient/recipient_pb.js +62 -0
  9. package/lib/cjs/common/gen/tzero/v1/public/public_pb.js +88 -0
  10. package/lib/cjs/common/headers.js +10 -0
  11. package/lib/cjs/examples/payment_intent/pay-in-provider-flow.d.ts +4 -0
  12. package/lib/cjs/examples/payment_intent/pay-in-provider-flow.js +56 -0
  13. package/lib/cjs/examples/payment_intent/service.d.ts +1 -0
  14. package/lib/cjs/examples/payment_intent/service.js +68 -0
  15. package/lib/cjs/examples/server.d.ts +4 -0
  16. package/lib/cjs/examples/server.js +93 -0
  17. package/lib/cjs/examples/update-quote.d.ts +4 -0
  18. package/lib/cjs/examples/update-quote.js +42 -0
  19. package/lib/cjs/index.js +50 -0
  20. package/lib/cjs/package.json +1 -0
  21. package/lib/cjs/payment_intent/provider/index.js +17 -0
  22. package/lib/cjs/payment_intent/recipient/index.js +17 -0
  23. package/lib/cjs/service/node.js +15 -0
  24. package/lib/cjs/service/service.js +112 -0
  25. package/lib/esm/client/client.d.ts +16 -0
  26. package/lib/esm/client/signer.d.ts +3 -0
  27. package/lib/esm/common/gen/tzero/v1/common/common_pb.d.ts +64 -0
  28. package/lib/esm/common/gen/tzero/v1/common/payment_method_pb.d.ts +122 -0
  29. package/lib/esm/common/gen/tzero/v1/payment/network_pb.d.ts +567 -0
  30. package/lib/esm/common/gen/tzero/v1/payment/provider_pb.d.ts +641 -0
  31. package/lib/esm/common/gen/tzero/v1/payment_intent/provider/provider_pb.d.ts +296 -0
  32. package/lib/esm/common/gen/tzero/v1/payment_intent/recipient/recipient_pb.d.ts +214 -0
  33. package/lib/esm/common/gen/tzero/v1/public/public_pb.d.ts +234 -0
  34. package/lib/esm/common/headers.d.ts +6 -0
  35. package/lib/esm/examples/payment_intent/pay-in-provider-flow.d.ts +4 -0
  36. package/lib/esm/examples/payment_intent/pay-in-provider-flow.js +51 -0
  37. package/lib/esm/examples/payment_intent/service.d.ts +1 -0
  38. package/lib/esm/examples/payment_intent/service.js +30 -0
  39. package/lib/esm/examples/server.d.ts +4 -0
  40. package/lib/esm/examples/server.js +55 -0
  41. package/lib/esm/examples/update-quote.d.ts +4 -0
  42. package/lib/esm/examples/update-quote.js +37 -0
  43. package/lib/esm/index.d.ts +11 -0
  44. package/lib/esm/payment_intent/provider/index.js +1 -0
  45. package/lib/esm/payment_intent/recipient/index.js +1 -0
  46. package/lib/esm/service/node.d.ts +3 -0
  47. package/lib/esm/service/service.d.ts +15 -0
  48. package/lib/{service → esm/service}/service.js +2 -2
  49. package/lib/tsconfig.cjs.tsbuildinfo +1 -0
  50. package/lib/tsconfig.esm.tsbuildinfo +1 -0
  51. package/package.json +16 -7
  52. /package/lib/{client → cjs/client}/client.d.ts +0 -0
  53. /package/lib/{client → cjs/client}/signer.d.ts +0 -0
  54. /package/lib/{common → cjs/common}/gen/tzero/v1/common/common_pb.d.ts +0 -0
  55. /package/lib/{common → cjs/common}/gen/tzero/v1/common/payment_method_pb.d.ts +0 -0
  56. /package/lib/{common → cjs/common}/gen/tzero/v1/payment/network_pb.d.ts +0 -0
  57. /package/lib/{common → cjs/common}/gen/tzero/v1/payment/provider_pb.d.ts +0 -0
  58. /package/lib/{common → cjs/common}/gen/tzero/v1/payment_intent/provider/provider_pb.d.ts +0 -0
  59. /package/lib/{common → cjs/common}/gen/tzero/v1/payment_intent/recipient/recipient_pb.d.ts +0 -0
  60. /package/lib/{common → cjs/common}/gen/tzero/v1/public/public_pb.d.ts +0 -0
  61. /package/lib/{common → cjs/common}/headers.d.ts +0 -0
  62. /package/lib/{index.d.ts → cjs/index.d.ts} +0 -0
  63. /package/lib/{payment_intent → cjs/payment_intent}/provider/index.d.ts +0 -0
  64. /package/lib/{payment_intent → cjs/payment_intent}/recipient/index.d.ts +0 -0
  65. /package/lib/{service → cjs/service}/node.d.ts +0 -0
  66. /package/lib/{service → cjs/service}/service.d.ts +0 -0
  67. /package/lib/{client → esm/client}/client.js +0 -0
  68. /package/lib/{client → esm/client}/signer.js +0 -0
  69. /package/lib/{common → esm/common}/gen/tzero/v1/common/common_pb.js +0 -0
  70. /package/lib/{common → esm/common}/gen/tzero/v1/common/payment_method_pb.js +0 -0
  71. /package/lib/{common → esm/common}/gen/tzero/v1/payment/network_pb.js +0 -0
  72. /package/lib/{common → esm/common}/gen/tzero/v1/payment/provider_pb.js +0 -0
  73. /package/lib/{common → esm/common}/gen/tzero/v1/payment_intent/provider/provider_pb.js +0 -0
  74. /package/lib/{common → esm/common}/gen/tzero/v1/payment_intent/recipient/recipient_pb.js +0 -0
  75. /package/lib/{common → esm/common}/gen/tzero/v1/public/public_pb.js +0 -0
  76. /package/lib/{common → esm/common}/headers.js +0 -0
  77. /package/lib/{index.js → esm/index.js} +0 -0
  78. /package/lib/{payment_intent/provider/index.js → esm/payment_intent/provider/index.d.ts} +0 -0
  79. /package/lib/{payment_intent/recipient/index.js → esm/payment_intent/recipient/index.d.ts} +0 -0
  80. /package/lib/{service → esm/service}/node.js +0 -0
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.signatureValidation = void 0;
4
+ const sha3_1 = require("@noble/hashes/sha3");
5
+ const signatureValidation = (next) => (req, resp) => {
6
+ const hasher = sha3_1.keccak_256.create();
7
+ req.hasher = hasher;
8
+ req.on("data", (chunk) => {
9
+ if (chunk instanceof Buffer) {
10
+ hasher.update(chunk);
11
+ }
12
+ });
13
+ next(req, resp);
14
+ };
15
+ exports.signatureValidation = signatureValidation;
@@ -0,0 +1,112 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.createService = exports.REQUEST_VALIDITY_MILLIS = void 0;
40
+ const connect_1 = require("@connectrpc/connect");
41
+ const headers_js_1 = __importDefault(require("../common/headers.js"));
42
+ const secp = __importStar(require("@noble/secp256k1"));
43
+ exports.REQUEST_VALIDITY_MILLIS = 60000;
44
+ const createSignatureVerification = (networkPublicKey) => (next) => async (req) => {
45
+ const ts = decodeNum(getHeader(req, headers_js_1.default.SignatureTimestamp));
46
+ if (Date.now() - ts > 60000) {
47
+ throw new connect_1.ConnectError(`${headers_js_1.default.SignatureTimestamp} must be within ${exports.REQUEST_VALIDITY_MILLIS} milliseconds from now`, connect_1.Code.InvalidArgument);
48
+ }
49
+ const publicKey = decodeHex(getHeader(req, headers_js_1.default.PublicKey));
50
+ if (networkPublicKey.compare(publicKey) !== 0) {
51
+ throw new connect_1.ConnectError(`${headers_js_1.default.PublicKey} value is not network public key`, connect_1.Code.Unauthenticated);
52
+ }
53
+ const signature = decodeHex(getHeader(req, headers_js_1.default.Signature));
54
+ const hasher = req.contextValues.get(kHash);
55
+ const tsBuf = Buffer.alloc(8);
56
+ tsBuf.writeBigUInt64LE(BigInt(ts)); // 64‑bit little‑endian timestamp
57
+ const hash = hasher
58
+ .update(tsBuf)
59
+ .digest();
60
+ let signatureValid = false;
61
+ try {
62
+ signatureValid = secp.verify(signature, hash, publicKey);
63
+ }
64
+ catch (e) {
65
+ throw new connect_1.ConnectError(`${headers_js_1.default.Signature} has invalid signature or public key format`, connect_1.Code.Unauthenticated);
66
+ }
67
+ if (!signatureValid) {
68
+ throw new connect_1.ConnectError(`${headers_js_1.default.Signature} has invalid signature`, connect_1.Code.Unauthenticated);
69
+ }
70
+ return await next(req);
71
+ };
72
+ const createService = (networkPublicKey, registerRoutes) => {
73
+ if (typeof networkPublicKey == "string") {
74
+ networkPublicKey = decodeHex(networkPublicKey);
75
+ }
76
+ return {
77
+ routes: (router) => {
78
+ registerRoutes(router);
79
+ },
80
+ interceptors: [createSignatureVerification(networkPublicKey)],
81
+ grpcWeb: false,
82
+ contextValues: (req) => {
83
+ return (0, connect_1.createContextValues)().set(kHash, req.hasher);
84
+ }
85
+ };
86
+ };
87
+ exports.createService = createService;
88
+ const kHash = (0, connect_1.createContextKey)(undefined);
89
+ function getHeader(req, header) {
90
+ const raw = req.header.get(header);
91
+ if (!raw) {
92
+ throw new connect_1.ConnectError(`missing required header '${header}'`, connect_1.Code.InvalidArgument);
93
+ }
94
+ return raw;
95
+ }
96
+ function decodeHex(value) {
97
+ value = value.startsWith('0x') ? value.slice(2) : value;
98
+ try {
99
+ return Buffer.from(value, "hex");
100
+ }
101
+ catch (e) {
102
+ throw new connect_1.ConnectError(`invalid header format. '${value}' must be hex encoded`, connect_1.Code.InvalidArgument);
103
+ }
104
+ }
105
+ function decodeNum(value) {
106
+ try {
107
+ return parseInt(value);
108
+ }
109
+ catch (e) {
110
+ throw new connect_1.ConnectError(`invalid header format. '${value}' must be a number`, connect_1.Code.InvalidArgument);
111
+ }
112
+ }
@@ -0,0 +1,16 @@
1
+ import { DescService } from "@bufbuild/protobuf";
2
+ export declare const DEFAULT_ENDPOINT = "https://api.t-0.network";
3
+ export declare function createClient<T extends DescService>(signer: string | Buffer | ((data: Buffer) => Promise<Signature>) | Buffer<ArrayBufferLike>, endpoint: string | undefined, svc: T): import("@connectrpc/connect").Client<T>;
4
+ /**
5
+ * Signature with metadata for particular request
6
+ */
7
+ export interface Signature {
8
+ signature: Buffer;
9
+ publicKey: Buffer;
10
+ }
11
+ /**
12
+ * Signature function for signing requests to T-0 API. Accepts any data in string format and return signature
13
+ * with metadata
14
+ */
15
+ export type SignerFunction = (data: Buffer) => Promise<Signature>;
16
+ export default createClient;
@@ -0,0 +1,3 @@
1
+ import { Signature } from "./client.js";
2
+ export declare const CreateSigner: (privateKey: string | Buffer) => (data: Buffer) => Promise<Signature>;
3
+ export default CreateSigner;
@@ -0,0 +1,64 @@
1
+ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
2
+ import type { Message } from "@bufbuild/protobuf";
3
+ /**
4
+ * Describes the file tzero/v1/common/common.proto.
5
+ */
6
+ export declare const file_tzero_v1_common_common: GenFile;
7
+ /**
8
+ * Decimal 123.45 equals to unscaled=12345 and exponent=-2 (e.g. unscaled * 10^exponent, 123.45 = 12345 * 10^-2)
9
+ *
10
+ * @generated from message tzero.v1.common.Decimal
11
+ */
12
+ export type Decimal = Message<"tzero.v1.common.Decimal"> & {
13
+ /**
14
+ * @generated from field: int64 unscaled = 10;
15
+ */
16
+ unscaled: bigint;
17
+ /**
18
+ * @generated from field: int32 exponent = 20;
19
+ */
20
+ exponent: number;
21
+ };
22
+ /**
23
+ * Describes the message tzero.v1.common.Decimal.
24
+ * Use `create(DecimalSchema)` to create a new message.
25
+ */
26
+ export declare const DecimalSchema: GenMessage<Decimal>;
27
+ /**
28
+ * @generated from enum tzero.v1.common.Blockchain
29
+ */
30
+ export declare enum Blockchain {
31
+ /**
32
+ * @generated from enum value: BLOCKCHAIN_UNSPECIFIED = 0;
33
+ */
34
+ UNSPECIFIED = 0,
35
+ /**
36
+ * @generated from enum value: BLOCKCHAIN_BSC = 10;
37
+ */
38
+ BSC = 10,
39
+ /**
40
+ * @generated from enum value: BLOCKCHAIN_TRON = 100;
41
+ */
42
+ TRON = 100
43
+ }
44
+ /**
45
+ * Describes the enum tzero.v1.common.Blockchain.
46
+ */
47
+ export declare const BlockchainSchema: GenEnum<Blockchain>;
48
+ /**
49
+ * @generated from enum tzero.v1.common.Stablecoin
50
+ */
51
+ export declare enum Stablecoin {
52
+ /**
53
+ * @generated from enum value: STABLECOIN_UNSPECIFIED = 0;
54
+ */
55
+ UNSPECIFIED = 0,
56
+ /**
57
+ * @generated from enum value: STABLECOIN_USDT = 10;
58
+ */
59
+ USDT = 10
60
+ }
61
+ /**
62
+ * Describes the enum tzero.v1.common.Stablecoin.
63
+ */
64
+ export declare const StablecoinSchema: GenEnum<Stablecoin>;
@@ -0,0 +1,122 @@
1
+ import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
2
+ import type { Blockchain, Stablecoin } from "./common_pb.js";
3
+ import type { Message } from "@bufbuild/protobuf";
4
+ /**
5
+ * Describes the file tzero/v1/common/payment_method.proto.
6
+ */
7
+ export declare const file_tzero_v1_common_payment_method: GenFile;
8
+ /**
9
+ * @generated from message tzero.v1.common.PaymentMethod
10
+ */
11
+ export type PaymentMethod = Message<"tzero.v1.common.PaymentMethod"> & {
12
+ /**
13
+ * @generated from oneof tzero.v1.common.PaymentMethod.details
14
+ */
15
+ details: {
16
+ /**
17
+ * @generated from field: tzero.v1.common.SepaPaymentMethod sepa = 10;
18
+ */
19
+ value: SepaPaymentMethod;
20
+ case: "sepa";
21
+ } | {
22
+ /**
23
+ * @generated from field: tzero.v1.common.SwiftPaymentMethod swift = 30;
24
+ */
25
+ value: SwiftPaymentMethod;
26
+ case: "swift";
27
+ } | {
28
+ /**
29
+ * @generated from field: tzero.v1.common.StablecoinPaymentMethod stablecoin = 40;
30
+ */
31
+ value: StablecoinPaymentMethod;
32
+ case: "stablecoin";
33
+ } | {
34
+ case: undefined;
35
+ value?: undefined;
36
+ };
37
+ };
38
+ /**
39
+ * Describes the message tzero.v1.common.PaymentMethod.
40
+ * Use `create(PaymentMethodSchema)` to create a new message.
41
+ */
42
+ export declare const PaymentMethodSchema: GenMessage<PaymentMethod>;
43
+ /**
44
+ * @generated from message tzero.v1.common.SepaPaymentMethod
45
+ */
46
+ export type SepaPaymentMethod = Message<"tzero.v1.common.SepaPaymentMethod"> & {
47
+ /**
48
+ * @generated from field: string iban = 20;
49
+ */
50
+ iban: string;
51
+ /**
52
+ * @generated from field: string beneficiary_name = 30;
53
+ */
54
+ beneficiaryName: string;
55
+ /**
56
+ * @generated from field: string payment_reference = 40;
57
+ */
58
+ paymentReference: string;
59
+ };
60
+ /**
61
+ * Describes the message tzero.v1.common.SepaPaymentMethod.
62
+ * Use `create(SepaPaymentMethodSchema)` to create a new message.
63
+ */
64
+ export declare const SepaPaymentMethodSchema: GenMessage<SepaPaymentMethod>;
65
+ /**
66
+ * @generated from message tzero.v1.common.SwiftPaymentMethod
67
+ */
68
+ export type SwiftPaymentMethod = Message<"tzero.v1.common.SwiftPaymentMethod"> & {};
69
+ /**
70
+ * Describes the message tzero.v1.common.SwiftPaymentMethod.
71
+ * Use `create(SwiftPaymentMethodSchema)` to create a new message.
72
+ */
73
+ export declare const SwiftPaymentMethodSchema: GenMessage<SwiftPaymentMethod>;
74
+ /**
75
+ * @generated from message tzero.v1.common.StablecoinPaymentMethod
76
+ */
77
+ export type StablecoinPaymentMethod = Message<"tzero.v1.common.StablecoinPaymentMethod"> & {
78
+ /**
79
+ * @generated from field: tzero.v1.common.Blockchain blockchain = 10;
80
+ */
81
+ blockchain: Blockchain;
82
+ /**
83
+ * @generated from field: tzero.v1.common.Stablecoin stablecoin = 20;
84
+ */
85
+ stablecoin: Stablecoin;
86
+ /**
87
+ * @generated from field: string address = 30;
88
+ */
89
+ address: string;
90
+ };
91
+ /**
92
+ * Describes the message tzero.v1.common.StablecoinPaymentMethod.
93
+ * Use `create(StablecoinPaymentMethodSchema)` to create a new message.
94
+ */
95
+ export declare const StablecoinPaymentMethodSchema: GenMessage<StablecoinPaymentMethod>;
96
+ /**
97
+ * @generated from enum tzero.v1.common.PaymentMethodType
98
+ */
99
+ export declare enum PaymentMethodType {
100
+ /**
101
+ * @generated from enum value: PAYMENT_METHOD_TYPE_UNSPECIFIED = 0;
102
+ */
103
+ UNSPECIFIED = 0,
104
+ /**
105
+ * @generated from enum value: PAYMENT_METHOD_TYPE_SEPA = 10;
106
+ */
107
+ SEPA = 10,
108
+ /**
109
+ * @generated from enum value: PAYMENT_METHOD_TYPE_SWIFT = 20;
110
+ */
111
+ SWIFT = 20,
112
+ /**
113
+ * only pay in
114
+ *
115
+ * @generated from enum value: PAYMENT_METHOD_TYPE_CARD = 30;
116
+ */
117
+ CARD = 30
118
+ }
119
+ /**
120
+ * Describes the enum tzero.v1.common.PaymentMethodType.
121
+ */
122
+ export declare const PaymentMethodTypeSchema: GenEnum<PaymentMethodType>;