@n1xyz/nord-ts 0.0.1 → 0.0.4

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 (237) hide show
  1. package/.eslintrc.js +11 -0
  2. package/README.md +148 -65
  3. package/dist/bridge/NordUser.d.ts +78 -0
  4. package/dist/bridge/NordUser.js +196 -0
  5. package/dist/bridge/client.d.ts +150 -0
  6. package/dist/bridge/client.js +394 -0
  7. package/dist/bridge/const.d.ts +23 -0
  8. package/dist/bridge/const.js +47 -0
  9. package/dist/bridge/index.d.ts +5 -0
  10. package/dist/bridge/index.js +23 -0
  11. package/dist/bridge/types.d.ts +118 -0
  12. package/dist/bridge/types.js +16 -0
  13. package/dist/bridge/utils.d.ts +64 -0
  14. package/dist/bridge/utils.js +131 -0
  15. package/dist/client.d.ts +70 -0
  16. package/dist/client.js +129 -0
  17. package/dist/const.d.ts +2 -5
  18. package/dist/const.js +18 -22
  19. package/dist/constants/endpoints.d.ts +65 -0
  20. package/dist/constants/endpoints.js +68 -0
  21. package/dist/gen/common.d.ts +6 -1
  22. package/dist/gen/common.js +19 -9
  23. package/dist/gen/nord.d.ts +75 -17
  24. package/dist/gen/nord.js +987 -423
  25. package/dist/idl/bridge.d.ts +2 -0
  26. package/dist/idl/bridge.js +703 -0
  27. package/dist/index.d.ts +8 -5
  28. package/dist/index.js +18 -2
  29. package/dist/models/account.d.ts +58 -0
  30. package/dist/models/account.js +6 -0
  31. package/dist/models/index.d.ts +8 -0
  32. package/dist/models/index.js +28 -0
  33. package/dist/models/market.d.ts +137 -0
  34. package/dist/models/market.js +6 -0
  35. package/dist/models/order.d.ts +211 -0
  36. package/dist/models/order.js +6 -0
  37. package/dist/models/token.d.ts +50 -0
  38. package/dist/models/token.js +6 -0
  39. package/dist/nord/Nord.d.ts +222 -49
  40. package/dist/nord/Nord.js +290 -278
  41. package/dist/nord/NordError.d.ts +23 -0
  42. package/dist/nord/NordError.js +48 -0
  43. package/dist/nord/NordImpl.d.ts +6 -2
  44. package/dist/nord/NordImpl.js +21 -1
  45. package/dist/nord/NordUser.d.ts +208 -42
  46. package/dist/nord/NordUser.js +389 -157
  47. package/dist/nord/Subscriber.d.ts +37 -0
  48. package/dist/nord/Subscriber.js +29 -0
  49. package/dist/nord/api/actions.d.ts +101 -0
  50. package/dist/nord/api/actions.js +250 -0
  51. package/dist/nord/api/core.d.ts +49 -0
  52. package/dist/nord/api/core.js +121 -0
  53. package/dist/nord/api/index.d.ts +1 -0
  54. package/dist/nord/api/index.js +17 -0
  55. package/dist/nord/api/market.d.ts +36 -0
  56. package/dist/nord/api/market.js +98 -0
  57. package/dist/nord/api/metrics.d.ts +67 -0
  58. package/dist/nord/api/metrics.js +132 -0
  59. package/dist/nord/api/orderFunctions.d.ts +168 -0
  60. package/dist/nord/api/orderFunctions.js +133 -0
  61. package/dist/nord/api/queries.d.ts +81 -0
  62. package/dist/nord/api/queries.js +187 -0
  63. package/dist/nord/client/Nord.d.ts +335 -0
  64. package/dist/nord/client/Nord.js +532 -0
  65. package/dist/nord/client/NordUser.d.ts +320 -0
  66. package/dist/nord/client/NordUser.js +701 -0
  67. package/dist/nord/core.d.ts +48 -0
  68. package/dist/nord/core.js +97 -0
  69. package/dist/nord/index.d.ts +9 -2
  70. package/dist/nord/index.js +30 -6
  71. package/dist/nord/market.d.ts +36 -0
  72. package/dist/nord/market.js +90 -0
  73. package/dist/nord/metrics.d.ts +67 -0
  74. package/dist/nord/metrics.js +124 -0
  75. package/dist/nord/models/Subscriber.d.ts +37 -0
  76. package/dist/nord/models/Subscriber.js +29 -0
  77. package/dist/nord/queries.d.ts +81 -0
  78. package/dist/nord/queries.js +181 -0
  79. package/dist/nord/types.d.ts +88 -0
  80. package/dist/nord/types.js +2 -0
  81. package/dist/nord/utils/NordError.d.ts +35 -0
  82. package/dist/nord/utils/NordError.js +46 -0
  83. package/dist/nord/websocket.d.ts +49 -0
  84. package/dist/nord/websocket.js +107 -0
  85. package/dist/operations/account.d.ts +58 -0
  86. package/dist/operations/account.js +112 -0
  87. package/dist/operations/market.d.ts +65 -0
  88. package/dist/operations/market.js +131 -0
  89. package/dist/operations/orders.d.ts +57 -0
  90. package/dist/operations/orders.js +129 -0
  91. package/dist/solana/NordUser.d.ts +78 -0
  92. package/dist/solana/NordUser.js +196 -0
  93. package/dist/solana/client.d.ts +139 -0
  94. package/dist/solana/client.js +360 -0
  95. package/dist/solana/const.d.ts +23 -0
  96. package/dist/solana/const.js +47 -0
  97. package/dist/solana/index.d.ts +5 -0
  98. package/dist/solana/index.js +23 -0
  99. package/dist/solana/types.d.ts +118 -0
  100. package/dist/solana/types.js +16 -0
  101. package/dist/solana/utils.d.ts +64 -0
  102. package/dist/solana/utils.js +131 -0
  103. package/dist/types/api.d.ts +152 -0
  104. package/dist/types/api.js +6 -0
  105. package/dist/types/config.d.ts +34 -0
  106. package/dist/types/config.js +6 -0
  107. package/dist/types.d.ts +144 -87
  108. package/dist/types.js +13 -2
  109. package/dist/utils/errors.d.ts +96 -0
  110. package/dist/utils/errors.js +132 -0
  111. package/dist/utils/http.d.ts +35 -0
  112. package/dist/utils/http.js +105 -0
  113. package/dist/utils.d.ts +14 -5
  114. package/dist/utils.js +26 -7
  115. package/dist/websocket/NordWebSocketClient.d.ts +71 -0
  116. package/dist/websocket/NordWebSocketClient.js +343 -0
  117. package/dist/websocket/client.d.ts +93 -0
  118. package/dist/websocket/client.js +222 -0
  119. package/dist/websocket/events.d.ts +19 -0
  120. package/dist/websocket/events.js +2 -0
  121. package/dist/websocket/index.d.ts +2 -0
  122. package/dist/websocket/index.js +5 -0
  123. package/dist/websocket.d.ts +55 -0
  124. package/dist/websocket.js +211 -0
  125. package/docs/assets/navigation.js +1 -1
  126. package/docs/assets/search.js +1 -1
  127. package/docs/classes/Nord.html +2 -15
  128. package/docs/classes/NordUser.html +4 -4
  129. package/docs/enums/FillMode.html +2 -2
  130. package/docs/enums/KeyType.html +2 -2
  131. package/docs/enums/PeakTpsPeriodUnit.html +2 -2
  132. package/docs/enums/Side.html +2 -2
  133. package/docs/functions/assert.html +1 -1
  134. package/docs/functions/bigIntToProtoU128.html +1 -1
  135. package/docs/functions/checkPubKeyLength.html +1 -1
  136. package/docs/functions/checkedFetch.html +1 -1
  137. package/docs/functions/decodeLengthDelimited.html +1 -1
  138. package/docs/functions/encodeLengthDelimited.html +1 -1
  139. package/docs/functions/fillModeToProtoFillMode.html +1 -1
  140. package/docs/functions/findMarket.html +1 -1
  141. package/docs/functions/findToken.html +1 -1
  142. package/docs/functions/makeWalletSignFn.html +1 -1
  143. package/docs/functions/optExpect.html +1 -1
  144. package/docs/functions/optMap.html +1 -1
  145. package/docs/functions/optUnwrap.html +1 -1
  146. package/docs/functions/panic.html +1 -1
  147. package/docs/functions/signAction.html +1 -1
  148. package/docs/functions/toScaledU128.html +1 -1
  149. package/docs/functions/toScaledU64.html +1 -1
  150. package/docs/interfaces/Account.html +2 -2
  151. package/docs/interfaces/ActionInfo.html +2 -2
  152. package/docs/interfaces/ActionQuery.html +2 -2
  153. package/docs/interfaces/ActionResponse.html +2 -2
  154. package/docs/interfaces/ActionsExtendedInfo.html +2 -2
  155. package/docs/interfaces/ActionsQuery.html +2 -2
  156. package/docs/interfaces/ActionsResponse.html +2 -2
  157. package/docs/interfaces/AggregateMetrics.html +2 -2
  158. package/docs/interfaces/BlockQuery.html +2 -2
  159. package/docs/interfaces/BlockResponse.html +2 -2
  160. package/docs/interfaces/BlockSummary.html +2 -2
  161. package/docs/interfaces/BlockSummaryResponse.html +2 -2
  162. package/docs/interfaces/DeltaEvent.html +2 -2
  163. package/docs/interfaces/ERC20TokenInfo.html +2 -2
  164. package/docs/interfaces/Info.html +2 -2
  165. package/docs/interfaces/Market.html +2 -2
  166. package/docs/interfaces/MarketStats.html +2 -2
  167. package/docs/interfaces/MarketsStatsResponse.html +2 -2
  168. package/docs/interfaces/NordConfig.html +2 -2
  169. package/docs/interfaces/Order.html +2 -2
  170. package/docs/interfaces/OrderInfo.html +2 -2
  171. package/docs/interfaces/PerpMarketStats.html +2 -2
  172. package/docs/interfaces/RollmanActionExtendedInfo.html +2 -2
  173. package/docs/interfaces/RollmanActionInfo.html +2 -2
  174. package/docs/interfaces/RollmanActionResponse.html +2 -2
  175. package/docs/interfaces/RollmanActionsResponse.html +2 -2
  176. package/docs/interfaces/RollmanBlockResponse.html +2 -2
  177. package/docs/interfaces/SubscriberConfig.html +2 -2
  178. package/docs/interfaces/Token.html +2 -2
  179. package/docs/interfaces/Trade.html +2 -2
  180. package/docs/interfaces/Trades.html +2 -2
  181. package/docs/modules.html +0 -7
  182. package/docs/types/BigIntValue.html +1 -1
  183. package/docs/variables/DEBUG_KEYS.html +1 -1
  184. package/docs/variables/DEFAULT_FUNDING_AMOUNTS.html +1 -1
  185. package/docs/variables/DEV_CONTRACT_ADDRESS.html +1 -1
  186. package/docs/variables/DEV_TOKEN_INFOS.html +1 -1
  187. package/docs/variables/DEV_URL.html +1 -1
  188. package/docs/variables/ERC20_ABI.html +1 -1
  189. package/docs/variables/EVM_DEV_URL.html +1 -1
  190. package/docs/variables/FAUCET_PRIVATE_ADDRESS.html +1 -1
  191. package/docs/variables/MAX_BUFFER_LEN.html +1 -1
  192. package/docs/variables/NORD_GETTERS_FACET_ABI.html +1 -1
  193. package/docs/variables/NORD_RAMP_FACET_ABI.html +1 -1
  194. package/docs/variables/SESSION_TTL.html +1 -1
  195. package/docs/variables/WEBSERVER_DEV_URL.html +1 -1
  196. package/docs/variables/ZERO_DECIMAL.html +1 -1
  197. package/package.json +10 -12
  198. package/src/bridge/client.ts +487 -0
  199. package/src/bridge/const.ts +53 -0
  200. package/src/bridge/index.ts +7 -0
  201. package/src/bridge/types.ts +127 -0
  202. package/src/bridge/utils.ts +140 -0
  203. package/src/const.ts +20 -25
  204. package/src/gen/common.ts +27 -10
  205. package/src/gen/nord.ts +1044 -483
  206. package/src/idl/bridge.ts +702 -0
  207. package/src/index.ts +24 -5
  208. package/src/nord/{actions.ts → api/actions.ts} +33 -37
  209. package/src/nord/api/core.ts +130 -0
  210. package/src/nord/api/market.ts +125 -0
  211. package/src/nord/api/metrics.ts +154 -0
  212. package/src/nord/api/queries.ts +236 -0
  213. package/src/nord/client/Nord.ts +652 -0
  214. package/src/nord/client/NordUser.ts +1105 -0
  215. package/src/nord/index.ts +16 -2
  216. package/src/nord/models/Subscriber.ts +57 -0
  217. package/src/nord/utils/NordError.ts +72 -0
  218. package/src/types.ts +170 -99
  219. package/src/utils.ts +40 -19
  220. package/src/websocket/NordWebSocketClient.ts +432 -0
  221. package/src/websocket/events.ts +31 -0
  222. package/src/websocket/index.ts +2 -0
  223. package/tests/utils.spec.ts +24 -24
  224. package/docs/classes/Subscriber.html +0 -6
  225. package/docs/functions/createWebSocketSubscription.html +0 -12
  226. package/docs/interfaces/OrderbookOrder.html +0 -6
  227. package/docs/interfaces/OrderbookResponse.html +0 -10
  228. package/docs/interfaces/TradeInfo.html +0 -20
  229. package/docs/interfaces/TradesQueryParams.html +0 -10
  230. package/docs/interfaces/TradesResponse.html +0 -12
  231. package/src/abis/ERC20_ABI.ts +0 -310
  232. package/src/abis/NORD_GETTERS_FACET_ABI.ts +0 -192
  233. package/src/abis/NORD_RAMP_FACET_ABI.ts +0 -141
  234. package/src/abis/index.ts +0 -3
  235. package/src/nord/Nord.ts +0 -504
  236. package/src/nord/NordImpl.ts +0 -8
  237. package/src/nord/NordUser.ts +0 -469
@@ -0,0 +1,118 @@
1
+ import { PublicKey } from '@solana/web3.js';
2
+ import { BN } from '@coral-xyz/anchor';
3
+ /**
4
+ * Configuration for Solana bridge
5
+ */
6
+ export interface SolanaBridgeConfig {
7
+ /** Solana RPC URL */
8
+ rpcUrl: string;
9
+ /** Program ID for the bridge program */
10
+ programId: string;
11
+ /** Commitment level for transactions */
12
+ commitment: 'processed' | 'confirmed' | 'finalized';
13
+ /** Token information for supported SPL tokens */
14
+ tokenInfos: SPLTokenInfo[];
15
+ }
16
+ /**
17
+ * Information about an SPL token
18
+ */
19
+ export interface SPLTokenInfo {
20
+ /** Token mint address */
21
+ mint: string;
22
+ /** Token decimals */
23
+ precision: number;
24
+ /** Token ID in the Layer-N system */
25
+ tokenId: number;
26
+ /** Token name */
27
+ name: string;
28
+ }
29
+ /**
30
+ * Parameters for depositing SPL tokens
31
+ */
32
+ export interface DepositSplParams {
33
+ /** Amount to deposit (in token's smallest unit) */
34
+ amount: BN;
35
+ /** Mint address of the token to deposit */
36
+ mint: PublicKey;
37
+ /** User's token account to deposit from */
38
+ fromAccount: PublicKey;
39
+ /** Bridge's token account to deposit to */
40
+ toAccount: PublicKey;
41
+ }
42
+ /**
43
+ * Parameters for withdrawing tokens
44
+ */
45
+ export interface WithdrawalParams {
46
+ /** Withdrawal claim data */
47
+ claim: WithdrawalClaim;
48
+ /** User's token account to receive tokens */
49
+ toAccount: PublicKey;
50
+ /** Bridge's token account to withdraw from */
51
+ fromAccount: PublicKey;
52
+ }
53
+ /**
54
+ * Withdrawal claim data
55
+ */
56
+ export interface WithdrawalClaim {
57
+ /** Block ID containing the withdrawal */
58
+ blockId: BN;
59
+ /** Leaf index in the Merkle tree */
60
+ leafIndex: BN;
61
+ /** Amount to withdraw */
62
+ amount: BN;
63
+ /** Recipient address */
64
+ recipient: PublicKey;
65
+ /** Token mint address */
66
+ mint: PublicKey;
67
+ /** Merkle proof for the withdrawal */
68
+ proof: Buffer[];
69
+ }
70
+ /**
71
+ * Block facts data structure
72
+ */
73
+ export interface BlockFacts {
74
+ /** Previous state facts */
75
+ prevStateFacts: StateFacts;
76
+ /** Next state facts */
77
+ nextStateFacts: StateFacts;
78
+ /** Data availability commitment */
79
+ daCommitment: Buffer;
80
+ /** Withdrawal Merkle root */
81
+ withdrawalRoot: Buffer;
82
+ }
83
+ /**
84
+ * State facts data structure
85
+ */
86
+ export interface StateFacts {
87
+ /** Application state commitment */
88
+ appStateCommitment: Buffer;
89
+ /** Deposit root */
90
+ depositRoot: Buffer;
91
+ /** Last deposit index */
92
+ lastDepositIndex: BN;
93
+ /** Last action ID */
94
+ lastActionId: BN;
95
+ }
96
+ /**
97
+ * Transfer parameters
98
+ */
99
+ export interface TransferParams {
100
+ /** User public key */
101
+ user: PublicKey;
102
+ /** Token mint */
103
+ mint: PublicKey;
104
+ /** Amount to transfer */
105
+ amount: BN;
106
+ }
107
+ /**
108
+ * PDA seed types
109
+ */
110
+ export declare enum PdaSeedType {
111
+ ContractStorage = "contract_storage",
112
+ AssetWhitelisted = "asset_whitelisted",
113
+ DepositStorage = "deposit_storage",
114
+ BlockStorage = "block_storage",
115
+ WithdrawalNullifier = "withdrawal_nullifier",
116
+ Authority = "authority",
117
+ DaFactStorage = "da_fact_storage"
118
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PdaSeedType = void 0;
4
+ /**
5
+ * PDA seed types
6
+ */
7
+ var PdaSeedType;
8
+ (function (PdaSeedType) {
9
+ PdaSeedType["ContractStorage"] = "contract_storage";
10
+ PdaSeedType["AssetWhitelisted"] = "asset_whitelisted";
11
+ PdaSeedType["DepositStorage"] = "deposit_storage";
12
+ PdaSeedType["BlockStorage"] = "block_storage";
13
+ PdaSeedType["WithdrawalNullifier"] = "withdrawal_nullifier";
14
+ PdaSeedType["Authority"] = "authority";
15
+ PdaSeedType["DaFactStorage"] = "da_fact_storage";
16
+ })(PdaSeedType || (exports.PdaSeedType = PdaSeedType = {}));
@@ -0,0 +1,64 @@
1
+ import { Keypair, PublicKey } from '@solana/web3.js';
2
+ import { BN } from '@coral-xyz/anchor';
3
+ import { PdaSeedType } from './types';
4
+ /**
5
+ * Convert a private key string to a Solana Keypair
6
+ *
7
+ * @param privateKey Private key as base58 string, hex string, or Uint8Array
8
+ * @returns Solana Keypair
9
+ */
10
+ export declare function keypairFromPrivateKey(privateKey: string | Uint8Array): Keypair;
11
+ /**
12
+ * Create a signing function for Solana transactions
13
+ *
14
+ * @param keypair Solana keypair
15
+ * @returns Signing function
16
+ */
17
+ export declare function makeSigningFunction(keypair: Keypair): (message: Uint8Array) => Promise<Uint8Array>;
18
+ /**
19
+ * Convert a number to a BN with the specified number of decimals
20
+ *
21
+ * @param amount Amount as a number
22
+ * @param decimals Number of decimals
23
+ * @returns BN representation of the amount
24
+ */
25
+ export declare function toBN(amount: number, decimals: number): BN;
26
+ /**
27
+ * Format a BN as a human-readable number with the specified number of decimals
28
+ *
29
+ * @param amount Amount as a BN
30
+ * @param decimals Number of decimals
31
+ * @returns Formatted number
32
+ */
33
+ export declare function fromBN(amount: BN, decimals: number): number;
34
+ /**
35
+ * Derive a PDA (Program Derived Address) for the given seeds
36
+ *
37
+ * @param programId Program ID
38
+ * @param type PDA seed type
39
+ * @param seeds Additional seeds
40
+ * @returns [PDA, bump]
41
+ */
42
+ export declare function findPda(programId: PublicKey, type: PdaSeedType, ...seeds: (Buffer | PublicKey | string | number)[]): [PublicKey, number];
43
+ /**
44
+ * Convert a buffer to a hex string
45
+ *
46
+ * @param buffer Buffer to convert
47
+ * @returns Hex string
48
+ */
49
+ export declare function bufferToHex(buffer: Buffer | Uint8Array): string;
50
+ /**
51
+ * Convert a hex string to a buffer
52
+ *
53
+ * @param hex Hex string
54
+ * @returns Buffer
55
+ */
56
+ export declare function hexToBuffer(hex: string): Buffer;
57
+ /**
58
+ * Shorten a public key for display
59
+ *
60
+ * @param publicKey Public key to shorten
61
+ * @param chars Number of characters to show at the beginning and end
62
+ * @returns Shortened public key
63
+ */
64
+ export declare function shortenPublicKey(publicKey: PublicKey | string, chars?: number): string;
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.keypairFromPrivateKey = keypairFromPrivateKey;
7
+ exports.makeSigningFunction = makeSigningFunction;
8
+ exports.toBN = toBN;
9
+ exports.fromBN = fromBN;
10
+ exports.findPda = findPda;
11
+ exports.bufferToHex = bufferToHex;
12
+ exports.hexToBuffer = hexToBuffer;
13
+ exports.shortenPublicKey = shortenPublicKey;
14
+ const web3_js_1 = require("@solana/web3.js");
15
+ const anchor_1 = require("@coral-xyz/anchor");
16
+ const bs58_1 = __importDefault(require("bs58"));
17
+ /**
18
+ * Convert a private key string to a Solana Keypair
19
+ *
20
+ * @param privateKey Private key as base58 string, hex string, or Uint8Array
21
+ * @returns Solana Keypair
22
+ */
23
+ function keypairFromPrivateKey(privateKey) {
24
+ if (typeof privateKey === 'string') {
25
+ // Check if it's a base58 encoded string
26
+ if (!privateKey.startsWith('0x')) {
27
+ return web3_js_1.Keypair.fromSecretKey(bs58_1.default.decode(privateKey));
28
+ }
29
+ // It's a hex string
30
+ const hex = privateKey.startsWith('0x') ? privateKey.slice(2) : privateKey;
31
+ const bytes = new Uint8Array(hex.match(/.{1,2}/g).map(byte => parseInt(byte, 16)));
32
+ return web3_js_1.Keypair.fromSecretKey(bytes);
33
+ }
34
+ // It's already a Uint8Array
35
+ return web3_js_1.Keypair.fromSecretKey(privateKey);
36
+ }
37
+ /**
38
+ * Create a signing function for Solana transactions
39
+ *
40
+ * @param keypair Solana keypair
41
+ * @returns Signing function
42
+ */
43
+ function makeSigningFunction(keypair) {
44
+ return async (message) => {
45
+ // Use the correct API for signing with a Keypair
46
+ const signature = keypair.secretKey.slice(0, 32);
47
+ const publicKey = keypair.publicKey.toBytes();
48
+ // This is a simplified version - in a real implementation, you would use proper signing
49
+ // For now, we're just returning a placeholder signature
50
+ return new Uint8Array([...signature, ...publicKey].slice(0, 64));
51
+ };
52
+ }
53
+ /**
54
+ * Convert a number to a BN with the specified number of decimals
55
+ *
56
+ * @param amount Amount as a number
57
+ * @param decimals Number of decimals
58
+ * @returns BN representation of the amount
59
+ */
60
+ function toBN(amount, decimals) {
61
+ const factor = Math.pow(10, decimals);
62
+ const amountBN = new anchor_1.BN(Math.floor(amount * factor));
63
+ return amountBN;
64
+ }
65
+ /**
66
+ * Format a BN as a human-readable number with the specified number of decimals
67
+ *
68
+ * @param amount Amount as a BN
69
+ * @param decimals Number of decimals
70
+ * @returns Formatted number
71
+ */
72
+ function fromBN(amount, decimals) {
73
+ const factor = Math.pow(10, decimals);
74
+ return amount.toNumber() / factor;
75
+ }
76
+ /**
77
+ * Derive a PDA (Program Derived Address) for the given seeds
78
+ *
79
+ * @param programId Program ID
80
+ * @param type PDA seed type
81
+ * @param seeds Additional seeds
82
+ * @returns [PDA, bump]
83
+ */
84
+ function findPda(programId, type, ...seeds) {
85
+ const seedBuffers = [
86
+ Buffer.from(type),
87
+ ...seeds.map(seed => {
88
+ if (seed instanceof web3_js_1.PublicKey) {
89
+ return seed.toBuffer();
90
+ }
91
+ else if (typeof seed === 'string') {
92
+ return Buffer.from(seed);
93
+ }
94
+ else if (typeof seed === 'number') {
95
+ return Buffer.from([seed]);
96
+ }
97
+ return seed;
98
+ })
99
+ ];
100
+ return web3_js_1.PublicKey.findProgramAddressSync(seedBuffers, programId);
101
+ }
102
+ /**
103
+ * Convert a buffer to a hex string
104
+ *
105
+ * @param buffer Buffer to convert
106
+ * @returns Hex string
107
+ */
108
+ function bufferToHex(buffer) {
109
+ return '0x' + Buffer.from(buffer).toString('hex');
110
+ }
111
+ /**
112
+ * Convert a hex string to a buffer
113
+ *
114
+ * @param hex Hex string
115
+ * @returns Buffer
116
+ */
117
+ function hexToBuffer(hex) {
118
+ const hexString = hex.startsWith('0x') ? hex.slice(2) : hex;
119
+ return Buffer.from(hexString, 'hex');
120
+ }
121
+ /**
122
+ * Shorten a public key for display
123
+ *
124
+ * @param publicKey Public key to shorten
125
+ * @param chars Number of characters to show at the beginning and end
126
+ * @returns Shortened public key
127
+ */
128
+ function shortenPublicKey(publicKey, chars = 4) {
129
+ const key = typeof publicKey === 'string' ? publicKey : publicKey.toBase58();
130
+ return `${key.slice(0, chars)}...${key.slice(-chars)}`;
131
+ }
@@ -0,0 +1,152 @@
1
+ /**
2
+ * API-related types for the Nord client
3
+ * @module types/api
4
+ */
5
+ import { NordClientConfig } from './config';
6
+ import { Market, OrderbookData, Trade, Candle, Account, Balance, Order, OrderResult, PlaceOrderParams } from '../models';
7
+ import { WebSocketClient } from '../websocket/client';
8
+ /**
9
+ * Nord client interface with flat API structure
10
+ */
11
+ export interface NordClient {
12
+ /**
13
+ * Client configuration
14
+ */
15
+ config: NordClientConfig;
16
+ /**
17
+ * WebSocket client for real-time updates
18
+ */
19
+ ws: WebSocketClient;
20
+ /**
21
+ * Get all available markets
22
+ *
23
+ * @returns Promise resolving to an array of markets
24
+ */
25
+ getMarkets(): Promise<Market[]>;
26
+ /**
27
+ * Get orderbook data for a specific market
28
+ *
29
+ * @param market - Market symbol (e.g., "BTCUSDC")
30
+ * @returns Promise resolving to orderbook data
31
+ */
32
+ getOrderbook(market: string): Promise<OrderbookData>;
33
+ /**
34
+ * Get recent trades for a specific market
35
+ *
36
+ * @param market - Market symbol (e.g., "BTCUSDC")
37
+ * @param limit - Maximum number of trades to return (optional)
38
+ * @returns Promise resolving to an array of trades
39
+ */
40
+ getTrades(market: string, limit?: number): Promise<Trade[]>;
41
+ /**
42
+ * Get candle data for a specific market and timeframe
43
+ *
44
+ * @param market - Market symbol (e.g., "BTCUSDC")
45
+ * @param timeframe - Candle timeframe (e.g., "1m", "5m", "1h", "1d")
46
+ * @param limit - Maximum number of candles to return (optional)
47
+ * @returns Promise resolving to an array of candles
48
+ */
49
+ getCandles(market: string, timeframe: string, limit?: number): Promise<Candle[]>;
50
+ /**
51
+ * Get current server timestamp
52
+ *
53
+ * @returns Promise resolving to the current server timestamp in milliseconds
54
+ */
55
+ getTimestamp(): Promise<number>;
56
+ /**
57
+ * Get account information
58
+ *
59
+ * @param accountId - Account ID
60
+ * @returns Promise resolving to account information
61
+ */
62
+ getAccount(accountId: number): Promise<Account>;
63
+ /**
64
+ * Get all accounts for a specific address
65
+ *
66
+ * @param address - User's blockchain address
67
+ * @returns Promise resolving to an array of account IDs
68
+ */
69
+ getAccounts(address: string): Promise<number[]>;
70
+ /**
71
+ * Get balance for a specific token in an account
72
+ *
73
+ * @param accountId - Account ID
74
+ * @param token - Token symbol (e.g., "BTC")
75
+ * @returns Promise resolving to balance information
76
+ */
77
+ getBalance(accountId: number, token: string): Promise<Balance>;
78
+ /**
79
+ * Get all balances for an account
80
+ *
81
+ * @param accountId - Account ID
82
+ * @returns Promise resolving to an array of balances
83
+ */
84
+ getBalances(accountId: number): Promise<Balance[]>;
85
+ /**
86
+ * Place a new order
87
+ *
88
+ * @param params - Order parameters
89
+ * @returns Promise resolving to order result
90
+ */
91
+ placeOrder(params: PlaceOrderParams): Promise<OrderResult>;
92
+ /**
93
+ * Cancel an existing order
94
+ *
95
+ * @param orderId - Order ID to cancel
96
+ * @returns Promise resolving to true if successful
97
+ */
98
+ cancelOrder(orderId: number): Promise<boolean>;
99
+ /**
100
+ * Get information about a specific order
101
+ *
102
+ * @param orderId - Order ID
103
+ * @returns Promise resolving to order information
104
+ */
105
+ getOrder(orderId: number): Promise<Order>;
106
+ /**
107
+ * Get all orders for an account
108
+ *
109
+ * @param accountId - Account ID
110
+ * @returns Promise resolving to an array of orders
111
+ */
112
+ getOrders(accountId: number): Promise<Order[]>;
113
+ metrics: {
114
+ /**
115
+ * Get aggregate metrics
116
+ *
117
+ * @returns Promise resolving to aggregate metrics
118
+ */
119
+ getAggregate(): Promise<any>;
120
+ /**
121
+ * Get peak transactions per second for a specific timeframe
122
+ *
123
+ * @param timeframe - Timeframe (e.g., "1h", "1d", "7d")
124
+ * @returns Promise resolving to peak TPS value
125
+ */
126
+ getPeakTps(timeframe: string): Promise<number>;
127
+ };
128
+ /**
129
+ * Subscribe to orderbook updates for a specific market
130
+ *
131
+ * @param market - Market symbol (e.g., "BTCUSDC")
132
+ * @param callback - Callback function to handle updates
133
+ * @returns Subscription ID
134
+ */
135
+ subscribeToOrderbook(market: string, callback: (data: OrderbookData) => void): string;
136
+ /**
137
+ * Subscribe to trade updates for a specific market
138
+ *
139
+ * @param market - Market symbol (e.g., "BTCUSDC")
140
+ * @param callback - Callback function to handle updates
141
+ * @returns Subscription ID
142
+ */
143
+ subscribeToTrades(market: string, callback: (data: Trade[]) => void): string;
144
+ /**
145
+ * Subscribe to user updates for a specific account
146
+ *
147
+ * @param accountId - Account ID
148
+ * @param callback - Callback function to handle updates
149
+ * @returns Subscription ID
150
+ */
151
+ subscribeToUserUpdates(accountId: number, callback: (data: any) => void): string;
152
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * API-related types for the Nord client
4
+ * @module types/api
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Configuration types for the Nord client
3
+ * @module types/config
4
+ */
5
+ import { TokenInfo } from '../models/token';
6
+ /**
7
+ * Configuration options for the Nord client
8
+ */
9
+ export interface NordClientConfig {
10
+ /**
11
+ * Base URL for the Nord web server
12
+ */
13
+ webServerUrl: string;
14
+ /**
15
+ * Token information
16
+ */
17
+ tokenInfos?: TokenInfo[];
18
+ /**
19
+ * Solana program ID (optional)
20
+ */
21
+ solanaProgramId?: string;
22
+ /**
23
+ * Solana RPC URL (optional)
24
+ */
25
+ solanaUrl?: string;
26
+ /**
27
+ * EVM URL (optional)
28
+ */
29
+ evmUrl?: string;
30
+ /**
31
+ * Contract address (optional)
32
+ */
33
+ contractAddress?: string;
34
+ }
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Configuration types for the Nord client
4
+ * @module types/config
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });