@morambacrypto/connect 0.0.11 → 0.0.13

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.
package/README.md CHANGED
@@ -69,6 +69,15 @@ console.log(company);
69
69
 
70
70
  ```
71
71
 
72
+ ## signature process
73
+ ```javascript
74
+ await monadApprove({
75
+ privateKey: "0xYOUR_PRIVATE_KEY",
76
+ unlimited: false,
77
+ amount: "2500",
78
+ });
79
+ ```
80
+
72
81
  ## API Reference
73
82
 
74
83
  ### MorambaClient
@@ -1,9 +1,12 @@
1
1
  import { HttpClient } from "../client/HttpClient";
2
- import { CreateCompanyPayload, CreateCompanyResponse } from "../types/company.types";
2
+ import { CreateCompanyPayload, CreateCompanyResponse, UpdateCompanyEmailPayload, UpdateCompanyEmailResponse, GetCompaniesQuery, GetCompaniesResponse, UpdateCompanyPaymentPayload, UpdateCompanyPaymentResponse } from "../types/company.types";
3
3
  export declare class CompanyAPI {
4
4
  private http;
5
5
  private partnerId;
6
6
  private apiKey;
7
7
  constructor(http: HttpClient, partnerId: string, apiKey: string);
8
8
  createCompany(payload: CreateCompanyPayload, jwtToken: string): Promise<CreateCompanyResponse>;
9
+ updateCompanyEmail(payload: UpdateCompanyEmailPayload, jwtToken: string): Promise<UpdateCompanyEmailResponse>;
10
+ getCompaniesByPartner(jwtToken: string, query?: GetCompaniesQuery): Promise<GetCompaniesResponse>;
11
+ updateCompanyPaymentMethod(payload: UpdateCompanyPaymentPayload, jwtToken: string): Promise<UpdateCompanyPaymentResponse>;
9
12
  }
@@ -14,4 +14,36 @@ export class CompanyAPI {
14
14
  Authorization: `Bearer ${jwtToken}`,
15
15
  });
16
16
  }
17
+ updateCompanyEmail(payload, jwtToken) {
18
+ const fullBody = {
19
+ ...payload,
20
+ partner_id: this.partnerId,
21
+ api_key: this.apiKey,
22
+ };
23
+ return this.http.patch("/api/v1/morambacypto/update/company/email", fullBody, {
24
+ Authorization: `Bearer ${jwtToken}`,
25
+ });
26
+ }
27
+ getCompaniesByPartner(jwtToken, query = {}) {
28
+ const params = new URLSearchParams();
29
+ if (query.limit)
30
+ params.append("limit", String(query.limit));
31
+ if (query.direction)
32
+ params.append("direction", query.direction);
33
+ if (query.cursor)
34
+ params.append("cursor", query.cursor);
35
+ return this.http.get(`/api/v1/morambacypto/companies/partner/${this.partnerId}?${params.toString()}`, {
36
+ Authorization: `Bearer ${jwtToken}`,
37
+ });
38
+ }
39
+ updateCompanyPaymentMethod(payload, jwtToken) {
40
+ const fullBody = {
41
+ ...payload,
42
+ partner_id: this.partnerId,
43
+ api_key: this.apiKey,
44
+ };
45
+ return this.http.patch("/api/v1/morambacypto/update/company/payment", fullBody, {
46
+ Authorization: `Bearer ${jwtToken}`,
47
+ });
48
+ }
17
49
  }
@@ -0,0 +1,2 @@
1
+ export * from "./auth.api";
2
+ export * from "./company.api";
@@ -1 +1,2 @@
1
- "use strict";
1
+ export * from "./auth.api";
2
+ export * from "./company.api";
@@ -8,5 +8,6 @@ export declare class HttpClient {
8
8
  get axiosInstance(): AxiosInstance;
9
9
  private setupRetryInterceptor;
10
10
  post<T = any>(url: string, data: any, extraHeaders?: Record<string, string>): Promise<T>;
11
- get<T = any>(url: string): Promise<T>;
11
+ patch<T = any>(url: string, data: any, extraHeaders?: Record<string, string>): Promise<T>;
12
+ get<T = any>(url: string, extraHeaders?: Record<string, string>): Promise<T>;
12
13
  }
@@ -39,7 +39,14 @@ export class HttpClient {
39
39
  .post(url, data, { headers: extraHeaders })
40
40
  .then((res) => res.data);
41
41
  }
42
- get(url) {
43
- return this.client.get(url).then((res) => res.data);
42
+ patch(url, data, extraHeaders = {}) {
43
+ return this.client
44
+ .patch(url, data, { headers: extraHeaders })
45
+ .then((res) => res.data);
46
+ }
47
+ get(url, extraHeaders = {}) {
48
+ return this.client
49
+ .get(url, { headers: extraHeaders })
50
+ .then((res) => res.data);
44
51
  }
45
52
  }
@@ -0,0 +1,2 @@
1
+ export * from "./monad.approve";
2
+ export * from "./sepolia.approve";
@@ -0,0 +1,2 @@
1
+ export * from "./monad.approve";
2
+ export * from "./sepolia.approve";
@@ -0,0 +1,10 @@
1
+ export interface MonadApproveOptions {
2
+ privateKey: string;
3
+ unlimited?: boolean;
4
+ amount?: string;
5
+ decimalsOverride?: number;
6
+ }
7
+ export declare function monadApprove(options: MonadApproveOptions): Promise<{
8
+ hash: any;
9
+ receipt: any;
10
+ }>;
@@ -0,0 +1,29 @@
1
+ import { ethers } from "ethers";
2
+ import { MONAD_CONFIG } from "../utils/networks";
3
+ export async function monadApprove(options) {
4
+ const { privateKey, unlimited = true, amount, decimalsOverride, } = options;
5
+ const cfg = MONAD_CONFIG;
6
+ const provider = new ethers.JsonRpcProvider(cfg.rpc);
7
+ const wallet = new ethers.Wallet(privateKey, provider);
8
+ const abi = [
9
+ "function approve(address spender, uint256 value) external returns (bool)"
10
+ ];
11
+ const contract = new ethers.Contract(cfg.token, abi, wallet);
12
+ const decimals = decimalsOverride !== null && decimalsOverride !== void 0 ? decimalsOverride : cfg.decimals;
13
+ const humanAmount = amount !== null && amount !== void 0 ? amount : cfg.defaultAmount;
14
+ const value = unlimited
15
+ ? ethers.MaxUint256
16
+ : ethers.parseUnits(humanAmount, decimals);
17
+ console.log("⚡ Monad approve()");
18
+ console.log("RPC:", cfg.rpc);
19
+ console.log("Token:", cfg.token);
20
+ console.log("Spender:", cfg.spender);
21
+ console.log("Decimals:", decimals);
22
+ console.log("Amount:", unlimited ? "UNLIMITED" : humanAmount);
23
+ console.log("From:", await wallet.getAddress());
24
+ const tx = await contract.approve(cfg.spender, value);
25
+ console.log("📤 TX:", tx.hash);
26
+ const receipt = await tx.wait();
27
+ console.log("✅ Block:", receipt.blockNumber);
28
+ return { hash: tx.hash, receipt };
29
+ }
@@ -0,0 +1,10 @@
1
+ export interface SepoliaApproveOptions {
2
+ privateKey: string;
3
+ unlimited?: boolean;
4
+ amount?: string;
5
+ decimalsOverride?: number;
6
+ }
7
+ export declare function sepoliaApprove(options: SepoliaApproveOptions): Promise<{
8
+ hash: any;
9
+ receipt: any;
10
+ }>;
@@ -0,0 +1,29 @@
1
+ import { ethers } from "ethers";
2
+ import { SEPOLIA_CONFIG } from "../utils/networks";
3
+ export async function sepoliaApprove(options) {
4
+ const { privateKey, unlimited = true, amount, decimalsOverride, } = options;
5
+ const cfg = SEPOLIA_CONFIG;
6
+ const provider = new ethers.JsonRpcProvider(cfg.rpc);
7
+ const wallet = new ethers.Wallet(privateKey, provider);
8
+ const abi = [
9
+ "function approve(address spender, uint256 value) external returns (bool)"
10
+ ];
11
+ const contract = new ethers.Contract(cfg.token, abi, wallet);
12
+ const decimals = decimalsOverride !== null && decimalsOverride !== void 0 ? decimalsOverride : cfg.decimals;
13
+ const humanAmount = amount !== null && amount !== void 0 ? amount : cfg.defaultAmount;
14
+ const value = unlimited
15
+ ? ethers.MaxUint256
16
+ : ethers.parseUnits(humanAmount, decimals);
17
+ console.log("⚡ Sepolia approve()");
18
+ console.log("RPC:", cfg.rpc);
19
+ console.log("Token:", cfg.token);
20
+ console.log("Spender:", cfg.spender);
21
+ console.log("Decimals:", decimals);
22
+ console.log("Amount:", unlimited ? "UNLIMITED" : humanAmount);
23
+ console.log("From:", await wallet.getAddress());
24
+ const tx = await contract.approve(cfg.spender, value);
25
+ console.log("📤 TX:", tx.hash);
26
+ const receipt = await tx.wait();
27
+ console.log("✅ Block:", receipt.blockNumber);
28
+ return { hash: tx.hash, receipt };
29
+ }
@@ -21,3 +21,57 @@ export interface CreateCompanyResponse {
21
21
  message: string;
22
22
  data: CompanyData | null;
23
23
  }
24
+ export interface UpdateCompanyEmailPayload {
25
+ company_id: string;
26
+ email: string;
27
+ }
28
+ export interface UpdateCompanyEmailResponse {
29
+ success: boolean;
30
+ message: string;
31
+ data: CompanyData | null;
32
+ }
33
+ export interface GetCompaniesQuery {
34
+ limit?: number;
35
+ direction?: "forward" | "backward";
36
+ cursor?: string;
37
+ }
38
+ export interface CompanyListItem {
39
+ id: string;
40
+ name: string;
41
+ email: string;
42
+ partner_id: string;
43
+ network: string;
44
+ token: string;
45
+ address: string;
46
+ created_at: string;
47
+ updated_at: string;
48
+ }
49
+ export interface PaginationData {
50
+ has_next: boolean;
51
+ has_previous: boolean;
52
+ next_cursor: string;
53
+ previous_cursor: string;
54
+ limit: number;
55
+ total_returned: number;
56
+ }
57
+ export interface GetCompaniesResponse {
58
+ success: boolean;
59
+ message: string;
60
+ data: {
61
+ companies: CompanyListItem[];
62
+ pagination: PaginationData;
63
+ };
64
+ }
65
+ export interface UpdateCompanyPaymentPayload {
66
+ company_id: string;
67
+ payment_method: {
68
+ network: string;
69
+ token: string;
70
+ address: string;
71
+ };
72
+ }
73
+ export interface UpdateCompanyPaymentResponse {
74
+ success: boolean;
75
+ message: string;
76
+ data: CompanyData | null;
77
+ }
@@ -1 +1,2 @@
1
1
  export * from "./auth.types";
2
+ export * from "./company.types";
@@ -1 +1,2 @@
1
1
  export * from "./auth.types";
2
+ export * from "./company.types";
@@ -0,0 +1,9 @@
1
+ export interface TokenNetworkConfig {
2
+ rpc: string;
3
+ spender: string;
4
+ token: string;
5
+ decimals: number;
6
+ defaultAmount: string;
7
+ }
8
+ export declare const MONAD_CONFIG: TokenNetworkConfig;
9
+ export declare const SEPOLIA_CONFIG: TokenNetworkConfig;
@@ -0,0 +1,16 @@
1
+ // ▶️ MORAMBA Token (Monad)
2
+ export const MONAD_CONFIG = {
3
+ rpc: "https://testnet-rpc.monad.xyz",
4
+ spender: "0xbAcEa624831C5f294a5E7FeC519232AA37ec0a8C",
5
+ token: "0x62F6c82114809C00a1293be02A43C05a3F917202",
6
+ decimals: 18,
7
+ defaultAmount: "1000",
8
+ };
9
+ // ▶️ Sepolia
10
+ export const SEPOLIA_CONFIG = {
11
+ rpc: "https://rpc.sepolia.org",
12
+ spender: "0x6E2024Da220C081059f606D9EEAe670c84Ead9Ab",
13
+ token: "0xbAcEa624831C5f294a5E7FeC519232AA37ec0a8C",
14
+ decimals: 18,
15
+ defaultAmount: "1000",
16
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morambacrypto/connect",
3
- "version": "0.0.11",
3
+ "version": "0.0.13",
4
4
  "description": "This library use for interact with moramba-crypto project",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.js",
@@ -22,7 +22,8 @@
22
22
  "license": "MIT",
23
23
  "dependencies": {
24
24
  "axios": "^1.13.2",
25
- "dotenv": "^17.2.3"
25
+ "dotenv": "^17.2.3",
26
+ "ethers": "^6.15.0"
26
27
  },
27
28
  "devDependencies": {
28
29
  "@types/jest": "^30.0.0",