@chipi-stack/backend 0.1.0
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/dist/client-3HAMR0rB.d.mts +24 -0
- package/dist/client-3HAMR0rB.d.ts +24 -0
- package/dist/index.d.mts +52 -0
- package/dist/index.d.ts +52 -0
- package/dist/index.js +722 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +710 -0
- package/dist/index.mjs.map +1 -0
- package/dist/skus.d.mts +52 -0
- package/dist/skus.d.ts +52 -0
- package/dist/skus.js +87 -0
- package/dist/skus.js.map +1 -0
- package/dist/skus.mjs +85 -0
- package/dist/skus.mjs.map +1 -0
- package/dist/transactions.d.mts +50 -0
- package/dist/transactions.d.ts +50 -0
- package/dist/transactions.js +174 -0
- package/dist/transactions.js.map +1 -0
- package/dist/transactions.mjs +168 -0
- package/dist/transactions.mjs.map +1 -0
- package/dist/wallets.d.mts +38 -0
- package/dist/wallets.d.ts +38 -0
- package/dist/wallets.js +190 -0
- package/dist/wallets.js.map +1 -0
- package/dist/wallets.mjs +184 -0
- package/dist/wallets.mjs.map +1 -0
- package/package.json +99 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/wallets.ts"],"names":["CryptoJS","RpcProvider","stark","ec","CairoCustomEnum","CairoOption","CairoOptionVariant","CallData","hash","Account","num","ChipiTransactionError","API_ENDPOINTS"],"mappings":"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","file":"wallets.js","sourcesContent":["import type {\n CreateWalletParams,\n CreateWalletResponse,\n PrepareWalletCreationParams,\n PrepareWalletCreationResponse,\n CreateCustodialWalletParams,\n GetMerchantWalletParams,\n PaginationQuery,\n PaginatedResponse,\n WalletData,\n} from '@chipi-stack/types';\nimport { API_ENDPOINTS } from '@chipi-stack/shared';\nimport { ChipiClient } from './client';\n\nimport { ChipiTransactionError } from '@chipi-stack/shared';\nimport { Account, CairoCustomEnum, CairoOption, CairoOptionVariant, CallData, ec, hash, num, RpcProvider, stark } from 'starknet';\nimport CryptoJS from \"crypto-js\";\nimport { DeploymentData } from '@avnu/gasless-sdk';\n\n/**\n * Wallet management utilities\n */\nexport class ChipiWallets {\n constructor(private client: ChipiClient) {}\n\n /**\n * Prepare wallet creation data\n */\n // async prepareWalletCreation(\n // params: Omit<PrepareWalletCreationParams, 'apiPublicKey'>\n // ): Promise<PrepareWalletCreationResponse> {\n // const response = await this.client.post<PrepareWalletCreationResponse>(\n // `${API_ENDPOINTS.CHIPI_WALLETS}/prepare-creation`,\n // params\n // );\n\n // return response.data!;\n // }\n\n /**\n * Create a new wallet\n */\n // async createWallet(\n // params: Omit<CreateWalletParams, 'apiPublicKey' | 'nodeUrl'>,\n // nodeUrl?: string\n // ): Promise<CreateWalletResponse> {\n // const response = await this.client.post<CreateWalletResponse>(\n // API_ENDPOINTS.CHIPI_WALLETS,\n // {\n // ...params,\n // nodeUrl,\n // },\n // params.bearerToken\n // );\n\n // return response.data!;\n // }\n\n async createWallet(params: CreateWalletParams & { backendUrl: string }): Promise<CreateWalletResponse> {\n try {\n const { encryptKey, apiPublicKey, bearerToken, nodeUrl, backendUrl } = params;\n \n const provider = new RpcProvider({ nodeUrl: nodeUrl });\n // Generating the private key with Stark Curve\n const privateKeyAX = stark.randomAddress();\n const starkKeyPubAX = ec.starkCurve.getStarkKey(privateKeyAX);\n \n // Using Argent X Account v0.4.0 class hash\n const accountClassHash = \"0x036078334509b514626504edc9fb252328d1a240e4e948bef8d0c08dff45927f\" //params.argentClassHash;\n \n // Calculate future address of the ArgentX account\n const axSigner = new CairoCustomEnum({\n Starknet: { pubkey: starkKeyPubAX },\n });\n // Set the dApp Guardian address\n const axGuardian = new CairoOption<unknown>(CairoOptionVariant.None);\n \n const AXConstructorCallData = CallData.compile({\n owner: axSigner,\n guardian: axGuardian,\n });\n \n const publicKey = hash.calculateContractAddressFromHash(\n starkKeyPubAX,\n accountClassHash,\n AXConstructorCallData,\n 0\n );\n // console.log(\"Contract address: \", contractAddress);\n \n // Initiating Account\n const account = new Account(provider, publicKey, privateKeyAX);\n // console.log(\"Account \", { ...account });\n \n // Backend Call API to create the wallet\n console.log(\"apiPublicKey\", apiPublicKey);\n const typeDataResponse = await fetch(`${backendUrl}/chipi-wallets/prepare-creation`, {\n method: \"POST\",\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${bearerToken}`,\n 'x-api-key': apiPublicKey,\n },\n body: JSON.stringify({\n publicKey,\n }),\n });\n const { typeData, accountClassHash: accountClassHashResponse } = await typeDataResponse.json() as PrepareWalletCreationResponse;\n \n // console.log(\"Type data: \", typeData);\n // Sign the message\n const userSignature = await account.signMessage(typeData);\n \n // console.log(\"User signature: \", userSignature);\n const deploymentData: DeploymentData = {\n class_hash: accountClassHashResponse,\n salt: starkKeyPubAX,\n unique: `${num.toHex(0)}`,\n calldata: AXConstructorCallData.map((value) => num.toHex(value)),\n };\n \n // console.log(\"Deployment data: ------ \", deploymentData);\n const encryptedPrivateKey = this.encryptPrivateKey(privateKeyAX, encryptKey);\n // console.log(\"Encrypted private key: \", encryptedPrivateKey);\n \n // Llamar a la API para guardar la wallet en dashboard\n const executeTransactionResponse = await fetch(`${backendUrl}/chipi-wallets`, {\n method: \"POST\",\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${bearerToken}`,\n 'x-api-key': apiPublicKey,\n },\n body: JSON.stringify({\n apiPublicKey,\n publicKey,\n userSignature: {\n r: (userSignature as any).r.toString(),\n s: (userSignature as any).s.toString(),\n recovery: (userSignature as any).recovery\n },\n typeData,\n encryptedPrivateKey,\n deploymentData: {\n ...deploymentData,\n salt: `${deploymentData.salt}`,\n calldata: deploymentData.calldata.map(data => `${data}`),\n }\n }),\n });\n const executeTransaction = await executeTransactionResponse.json() as CreateWalletResponse;\n if (executeTransaction.success) {\n return {\n success: true,\n txHash: executeTransaction.txHash,\n walletPublicKey: executeTransaction.walletPublicKey,\n wallet: executeTransaction.wallet,\n };\n } else {\n return {\n success: false,\n txHash: \"\",\n walletPublicKey: \"\",\n wallet: {\n publicKey: \"\",\n encryptedPrivateKey: \"\",\n }\n }\n }\n } catch (error: unknown) {\n console.error(\"Error detallado:\", error);\n \n if (error instanceof Error && error.message.includes(\"SSL\")) {\n throw new Error(\n \"Error de conexión SSL. Intenta usando NODE_TLS_REJECT_UNAUTHORIZED=0 o verifica la URL del RPC\"\n );\n }\n throw new ChipiTransactionError(\n `Failed to create wallet: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n 'WALLET_CREATION_FAILED'\n );\n }\n }\n \n \n encryptPrivateKey = (\n privateKey: string,\n password: string,\n ): string => {\n if (!privateKey || !password) {\n throw new Error(\"Private key and password are required\");\n }\n \n return CryptoJS.AES.encrypt(privateKey, password).toString();\n };\n\n\n /**\n * Create a custodial merchant wallet\n */\n async createCustodialWallet(\n params: Omit<CreateCustodialWalletParams, 'orgId'>,\n orgId: string\n ): Promise<WalletData> {\n const response = await this.client.post<WalletData>(\n `${API_ENDPOINTS.CHIPI_WALLETS}/merchant`,\n {\n ...params,\n orgId,\n }\n );\n\n return response.data!;\n }\n\n /**\n * Get merchant wallet by API key and chain\n */\n async getMerchantWallet(\n params: GetMerchantWalletParams\n ): Promise<WalletData> {\n const response = await this.client.get<WalletData>(\n `${API_ENDPOINTS.CHIPI_WALLETS}/merchant`,\n {\n apiKeyId: params.apiKeyId,\n chain: params.chain,\n }\n );\n\n return response.data!;\n }\n\n /**\n * Get wallets for an organization\n */\n async getWallets(\n query: PaginationQuery & {\n apiKeyId: string;\n orgId: string;\n }\n ): Promise<PaginatedResponse<WalletData>> {\n const response = await this.client.get<PaginatedResponse<WalletData>>(\n API_ENDPOINTS.CHIPI_WALLETS,\n query\n );\n\n return response.data!;\n }\n}\n"]}
|
package/dist/wallets.mjs
ADDED
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { ChipiTransactionError, API_ENDPOINTS } from '@chipi-stack/shared';
|
|
2
|
+
import { RpcProvider, stark, ec, CairoCustomEnum, CairoOption, CairoOptionVariant, CallData, hash, Account, num } from 'starknet';
|
|
3
|
+
import CryptoJS from 'crypto-js';
|
|
4
|
+
|
|
5
|
+
// src/wallets.ts
|
|
6
|
+
var ChipiWallets = class {
|
|
7
|
+
constructor(client) {
|
|
8
|
+
this.client = client;
|
|
9
|
+
this.encryptPrivateKey = (privateKey, password) => {
|
|
10
|
+
if (!privateKey || !password) {
|
|
11
|
+
throw new Error("Private key and password are required");
|
|
12
|
+
}
|
|
13
|
+
return CryptoJS.AES.encrypt(privateKey, password).toString();
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Prepare wallet creation data
|
|
18
|
+
*/
|
|
19
|
+
// async prepareWalletCreation(
|
|
20
|
+
// params: Omit<PrepareWalletCreationParams, 'apiPublicKey'>
|
|
21
|
+
// ): Promise<PrepareWalletCreationResponse> {
|
|
22
|
+
// const response = await this.client.post<PrepareWalletCreationResponse>(
|
|
23
|
+
// `${API_ENDPOINTS.CHIPI_WALLETS}/prepare-creation`,
|
|
24
|
+
// params
|
|
25
|
+
// );
|
|
26
|
+
// return response.data!;
|
|
27
|
+
// }
|
|
28
|
+
/**
|
|
29
|
+
* Create a new wallet
|
|
30
|
+
*/
|
|
31
|
+
// async createWallet(
|
|
32
|
+
// params: Omit<CreateWalletParams, 'apiPublicKey' | 'nodeUrl'>,
|
|
33
|
+
// nodeUrl?: string
|
|
34
|
+
// ): Promise<CreateWalletResponse> {
|
|
35
|
+
// const response = await this.client.post<CreateWalletResponse>(
|
|
36
|
+
// API_ENDPOINTS.CHIPI_WALLETS,
|
|
37
|
+
// {
|
|
38
|
+
// ...params,
|
|
39
|
+
// nodeUrl,
|
|
40
|
+
// },
|
|
41
|
+
// params.bearerToken
|
|
42
|
+
// );
|
|
43
|
+
// return response.data!;
|
|
44
|
+
// }
|
|
45
|
+
async createWallet(params) {
|
|
46
|
+
try {
|
|
47
|
+
const { encryptKey, apiPublicKey, bearerToken, nodeUrl, backendUrl } = params;
|
|
48
|
+
const provider = new RpcProvider({ nodeUrl });
|
|
49
|
+
const privateKeyAX = stark.randomAddress();
|
|
50
|
+
const starkKeyPubAX = ec.starkCurve.getStarkKey(privateKeyAX);
|
|
51
|
+
const accountClassHash = "0x036078334509b514626504edc9fb252328d1a240e4e948bef8d0c08dff45927f";
|
|
52
|
+
const axSigner = new CairoCustomEnum({
|
|
53
|
+
Starknet: { pubkey: starkKeyPubAX }
|
|
54
|
+
});
|
|
55
|
+
const axGuardian = new CairoOption(CairoOptionVariant.None);
|
|
56
|
+
const AXConstructorCallData = CallData.compile({
|
|
57
|
+
owner: axSigner,
|
|
58
|
+
guardian: axGuardian
|
|
59
|
+
});
|
|
60
|
+
const publicKey = hash.calculateContractAddressFromHash(
|
|
61
|
+
starkKeyPubAX,
|
|
62
|
+
accountClassHash,
|
|
63
|
+
AXConstructorCallData,
|
|
64
|
+
0
|
|
65
|
+
);
|
|
66
|
+
const account = new Account(provider, publicKey, privateKeyAX);
|
|
67
|
+
console.log("apiPublicKey", apiPublicKey);
|
|
68
|
+
const typeDataResponse = await fetch(`${backendUrl}/chipi-wallets/prepare-creation`, {
|
|
69
|
+
method: "POST",
|
|
70
|
+
headers: {
|
|
71
|
+
"Content-Type": "application/json",
|
|
72
|
+
"Authorization": `Bearer ${bearerToken}`,
|
|
73
|
+
"x-api-key": apiPublicKey
|
|
74
|
+
},
|
|
75
|
+
body: JSON.stringify({
|
|
76
|
+
publicKey
|
|
77
|
+
})
|
|
78
|
+
});
|
|
79
|
+
const { typeData, accountClassHash: accountClassHashResponse } = await typeDataResponse.json();
|
|
80
|
+
const userSignature = await account.signMessage(typeData);
|
|
81
|
+
const deploymentData = {
|
|
82
|
+
class_hash: accountClassHashResponse,
|
|
83
|
+
salt: starkKeyPubAX,
|
|
84
|
+
unique: `${num.toHex(0)}`,
|
|
85
|
+
calldata: AXConstructorCallData.map((value) => num.toHex(value))
|
|
86
|
+
};
|
|
87
|
+
const encryptedPrivateKey = this.encryptPrivateKey(privateKeyAX, encryptKey);
|
|
88
|
+
const executeTransactionResponse = await fetch(`${backendUrl}/chipi-wallets`, {
|
|
89
|
+
method: "POST",
|
|
90
|
+
headers: {
|
|
91
|
+
"Content-Type": "application/json",
|
|
92
|
+
"Authorization": `Bearer ${bearerToken}`,
|
|
93
|
+
"x-api-key": apiPublicKey
|
|
94
|
+
},
|
|
95
|
+
body: JSON.stringify({
|
|
96
|
+
apiPublicKey,
|
|
97
|
+
publicKey,
|
|
98
|
+
userSignature: {
|
|
99
|
+
r: userSignature.r.toString(),
|
|
100
|
+
s: userSignature.s.toString(),
|
|
101
|
+
recovery: userSignature.recovery
|
|
102
|
+
},
|
|
103
|
+
typeData,
|
|
104
|
+
encryptedPrivateKey,
|
|
105
|
+
deploymentData: {
|
|
106
|
+
...deploymentData,
|
|
107
|
+
salt: `${deploymentData.salt}`,
|
|
108
|
+
calldata: deploymentData.calldata.map((data) => `${data}`)
|
|
109
|
+
}
|
|
110
|
+
})
|
|
111
|
+
});
|
|
112
|
+
const executeTransaction = await executeTransactionResponse.json();
|
|
113
|
+
if (executeTransaction.success) {
|
|
114
|
+
return {
|
|
115
|
+
success: true,
|
|
116
|
+
txHash: executeTransaction.txHash,
|
|
117
|
+
walletPublicKey: executeTransaction.walletPublicKey,
|
|
118
|
+
wallet: executeTransaction.wallet
|
|
119
|
+
};
|
|
120
|
+
} else {
|
|
121
|
+
return {
|
|
122
|
+
success: false,
|
|
123
|
+
txHash: "",
|
|
124
|
+
walletPublicKey: "",
|
|
125
|
+
wallet: {
|
|
126
|
+
publicKey: "",
|
|
127
|
+
encryptedPrivateKey: ""
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
} catch (error) {
|
|
132
|
+
console.error("Error detallado:", error);
|
|
133
|
+
if (error instanceof Error && error.message.includes("SSL")) {
|
|
134
|
+
throw new Error(
|
|
135
|
+
"Error de conexi\xF3n SSL. Intenta usando NODE_TLS_REJECT_UNAUTHORIZED=0 o verifica la URL del RPC"
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
throw new ChipiTransactionError(
|
|
139
|
+
`Failed to create wallet: ${error instanceof Error ? error.message : "Unknown error"}`,
|
|
140
|
+
"WALLET_CREATION_FAILED"
|
|
141
|
+
);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Create a custodial merchant wallet
|
|
146
|
+
*/
|
|
147
|
+
async createCustodialWallet(params, orgId) {
|
|
148
|
+
const response = await this.client.post(
|
|
149
|
+
`${API_ENDPOINTS.CHIPI_WALLETS}/merchant`,
|
|
150
|
+
{
|
|
151
|
+
...params,
|
|
152
|
+
orgId
|
|
153
|
+
}
|
|
154
|
+
);
|
|
155
|
+
return response.data;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get merchant wallet by API key and chain
|
|
159
|
+
*/
|
|
160
|
+
async getMerchantWallet(params) {
|
|
161
|
+
const response = await this.client.get(
|
|
162
|
+
`${API_ENDPOINTS.CHIPI_WALLETS}/merchant`,
|
|
163
|
+
{
|
|
164
|
+
apiKeyId: params.apiKeyId,
|
|
165
|
+
chain: params.chain
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
return response.data;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Get wallets for an organization
|
|
172
|
+
*/
|
|
173
|
+
async getWallets(query) {
|
|
174
|
+
const response = await this.client.get(
|
|
175
|
+
API_ENDPOINTS.CHIPI_WALLETS,
|
|
176
|
+
query
|
|
177
|
+
);
|
|
178
|
+
return response.data;
|
|
179
|
+
}
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
export { ChipiWallets };
|
|
183
|
+
//# sourceMappingURL=wallets.mjs.map
|
|
184
|
+
//# sourceMappingURL=wallets.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/wallets.ts"],"names":[],"mappings":"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","file":"wallets.mjs","sourcesContent":["import type {\n CreateWalletParams,\n CreateWalletResponse,\n PrepareWalletCreationParams,\n PrepareWalletCreationResponse,\n CreateCustodialWalletParams,\n GetMerchantWalletParams,\n PaginationQuery,\n PaginatedResponse,\n WalletData,\n} from '@chipi-stack/types';\nimport { API_ENDPOINTS } from '@chipi-stack/shared';\nimport { ChipiClient } from './client';\n\nimport { ChipiTransactionError } from '@chipi-stack/shared';\nimport { Account, CairoCustomEnum, CairoOption, CairoOptionVariant, CallData, ec, hash, num, RpcProvider, stark } from 'starknet';\nimport CryptoJS from \"crypto-js\";\nimport { DeploymentData } from '@avnu/gasless-sdk';\n\n/**\n * Wallet management utilities\n */\nexport class ChipiWallets {\n constructor(private client: ChipiClient) {}\n\n /**\n * Prepare wallet creation data\n */\n // async prepareWalletCreation(\n // params: Omit<PrepareWalletCreationParams, 'apiPublicKey'>\n // ): Promise<PrepareWalletCreationResponse> {\n // const response = await this.client.post<PrepareWalletCreationResponse>(\n // `${API_ENDPOINTS.CHIPI_WALLETS}/prepare-creation`,\n // params\n // );\n\n // return response.data!;\n // }\n\n /**\n * Create a new wallet\n */\n // async createWallet(\n // params: Omit<CreateWalletParams, 'apiPublicKey' | 'nodeUrl'>,\n // nodeUrl?: string\n // ): Promise<CreateWalletResponse> {\n // const response = await this.client.post<CreateWalletResponse>(\n // API_ENDPOINTS.CHIPI_WALLETS,\n // {\n // ...params,\n // nodeUrl,\n // },\n // params.bearerToken\n // );\n\n // return response.data!;\n // }\n\n async createWallet(params: CreateWalletParams & { backendUrl: string }): Promise<CreateWalletResponse> {\n try {\n const { encryptKey, apiPublicKey, bearerToken, nodeUrl, backendUrl } = params;\n \n const provider = new RpcProvider({ nodeUrl: nodeUrl });\n // Generating the private key with Stark Curve\n const privateKeyAX = stark.randomAddress();\n const starkKeyPubAX = ec.starkCurve.getStarkKey(privateKeyAX);\n \n // Using Argent X Account v0.4.0 class hash\n const accountClassHash = \"0x036078334509b514626504edc9fb252328d1a240e4e948bef8d0c08dff45927f\" //params.argentClassHash;\n \n // Calculate future address of the ArgentX account\n const axSigner = new CairoCustomEnum({\n Starknet: { pubkey: starkKeyPubAX },\n });\n // Set the dApp Guardian address\n const axGuardian = new CairoOption<unknown>(CairoOptionVariant.None);\n \n const AXConstructorCallData = CallData.compile({\n owner: axSigner,\n guardian: axGuardian,\n });\n \n const publicKey = hash.calculateContractAddressFromHash(\n starkKeyPubAX,\n accountClassHash,\n AXConstructorCallData,\n 0\n );\n // console.log(\"Contract address: \", contractAddress);\n \n // Initiating Account\n const account = new Account(provider, publicKey, privateKeyAX);\n // console.log(\"Account \", { ...account });\n \n // Backend Call API to create the wallet\n console.log(\"apiPublicKey\", apiPublicKey);\n const typeDataResponse = await fetch(`${backendUrl}/chipi-wallets/prepare-creation`, {\n method: \"POST\",\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${bearerToken}`,\n 'x-api-key': apiPublicKey,\n },\n body: JSON.stringify({\n publicKey,\n }),\n });\n const { typeData, accountClassHash: accountClassHashResponse } = await typeDataResponse.json() as PrepareWalletCreationResponse;\n \n // console.log(\"Type data: \", typeData);\n // Sign the message\n const userSignature = await account.signMessage(typeData);\n \n // console.log(\"User signature: \", userSignature);\n const deploymentData: DeploymentData = {\n class_hash: accountClassHashResponse,\n salt: starkKeyPubAX,\n unique: `${num.toHex(0)}`,\n calldata: AXConstructorCallData.map((value) => num.toHex(value)),\n };\n \n // console.log(\"Deployment data: ------ \", deploymentData);\n const encryptedPrivateKey = this.encryptPrivateKey(privateKeyAX, encryptKey);\n // console.log(\"Encrypted private key: \", encryptedPrivateKey);\n \n // Llamar a la API para guardar la wallet en dashboard\n const executeTransactionResponse = await fetch(`${backendUrl}/chipi-wallets`, {\n method: \"POST\",\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${bearerToken}`,\n 'x-api-key': apiPublicKey,\n },\n body: JSON.stringify({\n apiPublicKey,\n publicKey,\n userSignature: {\n r: (userSignature as any).r.toString(),\n s: (userSignature as any).s.toString(),\n recovery: (userSignature as any).recovery\n },\n typeData,\n encryptedPrivateKey,\n deploymentData: {\n ...deploymentData,\n salt: `${deploymentData.salt}`,\n calldata: deploymentData.calldata.map(data => `${data}`),\n }\n }),\n });\n const executeTransaction = await executeTransactionResponse.json() as CreateWalletResponse;\n if (executeTransaction.success) {\n return {\n success: true,\n txHash: executeTransaction.txHash,\n walletPublicKey: executeTransaction.walletPublicKey,\n wallet: executeTransaction.wallet,\n };\n } else {\n return {\n success: false,\n txHash: \"\",\n walletPublicKey: \"\",\n wallet: {\n publicKey: \"\",\n encryptedPrivateKey: \"\",\n }\n }\n }\n } catch (error: unknown) {\n console.error(\"Error detallado:\", error);\n \n if (error instanceof Error && error.message.includes(\"SSL\")) {\n throw new Error(\n \"Error de conexión SSL. Intenta usando NODE_TLS_REJECT_UNAUTHORIZED=0 o verifica la URL del RPC\"\n );\n }\n throw new ChipiTransactionError(\n `Failed to create wallet: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n 'WALLET_CREATION_FAILED'\n );\n }\n }\n \n \n encryptPrivateKey = (\n privateKey: string,\n password: string,\n ): string => {\n if (!privateKey || !password) {\n throw new Error(\"Private key and password are required\");\n }\n \n return CryptoJS.AES.encrypt(privateKey, password).toString();\n };\n\n\n /**\n * Create a custodial merchant wallet\n */\n async createCustodialWallet(\n params: Omit<CreateCustodialWalletParams, 'orgId'>,\n orgId: string\n ): Promise<WalletData> {\n const response = await this.client.post<WalletData>(\n `${API_ENDPOINTS.CHIPI_WALLETS}/merchant`,\n {\n ...params,\n orgId,\n }\n );\n\n return response.data!;\n }\n\n /**\n * Get merchant wallet by API key and chain\n */\n async getMerchantWallet(\n params: GetMerchantWalletParams\n ): Promise<WalletData> {\n const response = await this.client.get<WalletData>(\n `${API_ENDPOINTS.CHIPI_WALLETS}/merchant`,\n {\n apiKeyId: params.apiKeyId,\n chain: params.chain,\n }\n );\n\n return response.data!;\n }\n\n /**\n * Get wallets for an organization\n */\n async getWallets(\n query: PaginationQuery & {\n apiKeyId: string;\n orgId: string;\n }\n ): Promise<PaginatedResponse<WalletData>> {\n const response = await this.client.get<PaginatedResponse<WalletData>>(\n API_ENDPOINTS.CHIPI_WALLETS,\n query\n );\n\n return response.data!;\n }\n}\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@chipi-stack/backend",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Chipi Backend SDK - Server utilities for wallet creation, transactions, and SKU management",
|
|
5
|
+
"homepage": "https://github.com/chipi-pay/chipi-sdk",
|
|
6
|
+
"bugs": {
|
|
7
|
+
"url": "https://github.com/chipi-pay/chipi-sdk/issues"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "git+https://github.com/chipi-pay/chipi-sdk.git",
|
|
12
|
+
"directory": "sdks/backend"
|
|
13
|
+
},
|
|
14
|
+
"license": "MIT",
|
|
15
|
+
"author": "Chipi Pay",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"import": {
|
|
19
|
+
"types": "./dist/index.d.ts",
|
|
20
|
+
"default": "./dist/index.mjs"
|
|
21
|
+
},
|
|
22
|
+
"require": {
|
|
23
|
+
"types": "./dist/index.d.ts",
|
|
24
|
+
"default": "./dist/index.js"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
"./wallets": {
|
|
28
|
+
"import": {
|
|
29
|
+
"types": "./dist/wallets.d.ts",
|
|
30
|
+
"default": "./dist/wallets.mjs"
|
|
31
|
+
},
|
|
32
|
+
"require": {
|
|
33
|
+
"types": "./dist/wallets.d.ts",
|
|
34
|
+
"default": "./dist/wallets.js"
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
"./transactions": {
|
|
38
|
+
"import": {
|
|
39
|
+
"types": "./dist/transactions.d.ts",
|
|
40
|
+
"default": "./dist/transactions.mjs"
|
|
41
|
+
},
|
|
42
|
+
"require": {
|
|
43
|
+
"types": "./dist/transactions.d.ts",
|
|
44
|
+
"default": "./dist/transactions.js"
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"./skus": {
|
|
48
|
+
"import": {
|
|
49
|
+
"types": "./dist/skus.d.ts",
|
|
50
|
+
"default": "./dist/skus.mjs"
|
|
51
|
+
},
|
|
52
|
+
"require": {
|
|
53
|
+
"types": "./dist/skus.d.ts",
|
|
54
|
+
"default": "./dist/skus.js"
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
"./package.json": "./package.json"
|
|
58
|
+
},
|
|
59
|
+
"main": "./dist/index.js",
|
|
60
|
+
"files": [
|
|
61
|
+
"dist",
|
|
62
|
+
"wallets",
|
|
63
|
+
"transactions",
|
|
64
|
+
"skus"
|
|
65
|
+
],
|
|
66
|
+
"scripts": {
|
|
67
|
+
"build": "tsup",
|
|
68
|
+
"build:declarations": "tsc -p tsconfig.declarations.json",
|
|
69
|
+
"clean": "rimraf ./dist",
|
|
70
|
+
"dev": "tsup --watch",
|
|
71
|
+
"dev:publish": "pnpm dev -- --env.publish",
|
|
72
|
+
"format": "prettier --write src/**/*.ts",
|
|
73
|
+
"format:check": "prettier --check src/**/*.ts",
|
|
74
|
+
"lint": "eslint src",
|
|
75
|
+
"typecheck": "tsc --noEmit"
|
|
76
|
+
},
|
|
77
|
+
"dependencies": {
|
|
78
|
+
"@avnu/gasless-sdk": "0.1.8",
|
|
79
|
+
"@chipi-stack/shared": "workspace:^",
|
|
80
|
+
"@chipi-stack/types": "workspace:^",
|
|
81
|
+
"crypto-js": "^4.2.0",
|
|
82
|
+
"starknet": "6.11.0"
|
|
83
|
+
},
|
|
84
|
+
"devDependencies": {
|
|
85
|
+
"@types/node": "^22.15.15",
|
|
86
|
+
"@types/crypto-js": "^4.2.2",
|
|
87
|
+
"eslint": "^9.33.0",
|
|
88
|
+
"prettier": "^3.0.0",
|
|
89
|
+
"rimraf": "^5.0.0",
|
|
90
|
+
"tsup": "^8.3.6",
|
|
91
|
+
"typescript": "^5.7.3"
|
|
92
|
+
},
|
|
93
|
+
"engines": {
|
|
94
|
+
"node": ">=18.17.0"
|
|
95
|
+
},
|
|
96
|
+
"publishConfig": {
|
|
97
|
+
"access": "public"
|
|
98
|
+
}
|
|
99
|
+
}
|