@debridge-finance/solana-utils 1.0.2

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 (41) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +3 -0
  3. package/dist/browser/index.js +7899 -0
  4. package/dist/browser/index.js.map +1 -0
  5. package/dist/cjs/accounts.js +98 -0
  6. package/dist/cjs/accounts.js.map +1 -0
  7. package/dist/cjs/constants.js +69 -0
  8. package/dist/cjs/constants.js.map +1 -0
  9. package/dist/cjs/crypto.js +108 -0
  10. package/dist/cjs/crypto.js.map +1 -0
  11. package/dist/cjs/helpers.js +184 -0
  12. package/dist/cjs/helpers.js.map +1 -0
  13. package/dist/cjs/index.js +10 -0
  14. package/dist/cjs/index.js.map +1 -0
  15. package/dist/cjs/interfaces.js +9 -0
  16. package/dist/cjs/interfaces.js.map +1 -0
  17. package/dist/esm/accounts.js +91 -0
  18. package/dist/esm/accounts.js.map +1 -0
  19. package/dist/esm/constants.js +66 -0
  20. package/dist/esm/constants.js.map +1 -0
  21. package/dist/esm/crypto.js +99 -0
  22. package/dist/esm/crypto.js.map +1 -0
  23. package/dist/esm/helpers.js +191 -0
  24. package/dist/esm/helpers.js.map +1 -0
  25. package/dist/esm/index.js +6 -0
  26. package/dist/esm/index.js.map +1 -0
  27. package/dist/esm/interfaces.js +5 -0
  28. package/dist/esm/interfaces.js.map +1 -0
  29. package/dist/types/accounts.d.ts +69 -0
  30. package/dist/types/accounts.d.ts.map +1 -0
  31. package/dist/types/constants.d.ts +66 -0
  32. package/dist/types/constants.d.ts.map +1 -0
  33. package/dist/types/crypto.d.ts +35 -0
  34. package/dist/types/crypto.d.ts.map +1 -0
  35. package/dist/types/helpers.d.ts +27 -0
  36. package/dist/types/helpers.d.ts.map +1 -0
  37. package/dist/types/index.d.ts +6 -0
  38. package/dist/types/index.d.ts.map +1 -0
  39. package/dist/types/interfaces.d.ts +42 -0
  40. package/dist/types/interfaces.d.ts.map +1 -0
  41. package/package.json +71 -0
@@ -0,0 +1,98 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PmmDstResolver = exports.PmmSrcResolver = exports.DeBridgeResolver = exports.getTokenMetadataAddress = exports.findAssociatedTokenAddressSync = exports.findAssociatedTokenAddress = exports.WRAPPED_SOL_MINT = exports.ASSOCIATED_TOKEN_PROGRAM_ID = exports.TOKEN_PROGRAM_ID = exports.TOKEN_METADATA_PROGRAM_ID = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const buffer_1 = require("buffer");
6
+ const web3_js_1 = require("@solana/web3.js");
7
+ const constants = tslib_1.__importStar(require("./constants"));
8
+ const crypto_1 = require("./crypto");
9
+ const interfaces_1 = require("./interfaces");
10
+ exports.TOKEN_METADATA_PROGRAM_ID = new web3_js_1.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");
11
+ exports.TOKEN_PROGRAM_ID = new web3_js_1.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");
12
+ exports.ASSOCIATED_TOKEN_PROGRAM_ID = new web3_js_1.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");
13
+ exports.WRAPPED_SOL_MINT = new web3_js_1.PublicKey("So11111111111111111111111111111111111111112");
14
+ async function findAssociatedTokenAddress(wallet, tokenMint, tokenProgramId = exports.TOKEN_PROGRAM_ID, associatedTokenProramId = exports.ASSOCIATED_TOKEN_PROGRAM_ID) {
15
+ return web3_js_1.PublicKey.findProgramAddress([wallet.toBytes(), tokenProgramId.toBytes(), tokenMint.toBytes()], associatedTokenProramId);
16
+ }
17
+ exports.findAssociatedTokenAddress = findAssociatedTokenAddress;
18
+ function findAssociatedTokenAddressSync(wallet, tokenMint, tokenProgramId = exports.TOKEN_PROGRAM_ID, associatedTokenProramId = exports.ASSOCIATED_TOKEN_PROGRAM_ID) {
19
+ return web3_js_1.PublicKey.findProgramAddressSync([wallet.toBytes(), tokenProgramId.toBytes(), tokenMint.toBytes()], associatedTokenProramId);
20
+ }
21
+ exports.findAssociatedTokenAddressSync = findAssociatedTokenAddressSync;
22
+ function getTokenMetadataAddress(tokenMint, tokenMetedataProgramId) {
23
+ return web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from("metadata"), tokenMetedataProgramId.toBytes(), tokenMint.toBytes()], tokenMetedataProgramId);
24
+ }
25
+ exports.getTokenMetadataAddress = getTokenMetadataAddress;
26
+ const deBridge = {
27
+ getClaimMarkerAddress: (DEBRIDGE_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridge.Seeds.CLAIM_MARKER)], DEBRIDGE_PROGRAM_ID),
28
+ getExternalCallStorageAddress: (submissionId, executorPubkey, sourceChainId, DEBRIDGE_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([
29
+ buffer_1.Buffer.from(constants.deBridge.Seeds.EXTERNAL_CALL_STORAGE),
30
+ submissionId,
31
+ new web3_js_1.PublicKey(executorPubkey).toBytes(),
32
+ (0, crypto_1.normalizeChainId)(sourceChainId),
33
+ ], DEBRIDGE_PROGRAM_ID),
34
+ getExternalCallMetaAddress: (externalCallStorage, DEBRIDGE_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridge.Seeds.EXTERNAL_CALL_META), new web3_js_1.PublicKey(externalCallStorage).toBytes()], DEBRIDGE_PROGRAM_ID),
35
+ getNonceAddress: (DEBRIDGE_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridge.Seeds.NONCE)], DEBRIDGE_PROGRAM_ID),
36
+ getSubmissionAddress: (submissionId, DEBRIDGE_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridge.Seeds.SUBMISSION), submissionId], DEBRIDGE_PROGRAM_ID),
37
+ getSubmissionAuthAddress: (submissionAddress, DEBRIDGE_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridge.Seeds.SUBMISSION_AUTH), new web3_js_1.PublicKey(submissionAddress).toBytes()], DEBRIDGE_PROGRAM_ID),
38
+ getMintAuthorityAddress: (bridge, DEBRIDGE_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridge.Seeds.BRIDGE_MINTER), new web3_js_1.PublicKey(bridge).toBytes()], DEBRIDGE_PROGRAM_ID),
39
+ };
40
+ const deBridgeSettings = {
41
+ getTokenMetadataMasterAddress: (SETTINGS_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridgeSettings.Seeds.TOKEN_METADATA)], SETTINGS_PROGRAM_ID),
42
+ getTokenMintAddress: (debridgeId, SETTINGS_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridgeSettings.Seeds.WRAPPER_TOKEN), debridgeId], SETTINGS_PROGRAM_ID),
43
+ getStateAddress: (SETTINGS_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridgeSettings.Seeds.STATE)], SETTINGS_PROGRAM_ID),
44
+ getConfirmationsStorageAddress: (message, SETTINGS_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridgeSettings.Seeds.CONFIRMATION_STORAGE), message], SETTINGS_PROGRAM_ID),
45
+ getBridgeFeeAddress: (bridge, chainId, SETTINGS_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridgeSettings.Seeds.BRIDGE_FEE_INFO), bridge.toBytes(), (0, crypto_1.normalizeChainId)(chainId)], SETTINGS_PROGRAM_ID),
46
+ getChainSupportInfoAddress: (chainId, SETTINGS_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridgeSettings.Seeds.CHAIN_SUPPORT_INFO), (0, crypto_1.normalizeChainId)(chainId)], SETTINGS_PROGRAM_ID),
47
+ getDiscountInfoAddress: (user, SETTINGS_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridgeSettings.Seeds.DISCOUNT_INFO), user.toBytes()], SETTINGS_PROGRAM_ID),
48
+ getBridgeAddress: (tokenMint, SETTINGS_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridgeSettings.Seeds.BRIDGE), tokenMint.toBytes()], SETTINGS_PROGRAM_ID),
49
+ getBridgeMapAddress: (bridgeId, SETTINGS_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridgeSettings.Seeds.SEND_BRIDGE_MAP), bridgeId], SETTINGS_PROGRAM_ID),
50
+ getNoDiscountAddress: (SETTINGS_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridgeSettings.Seeds.NO_DISCOUNT)], SETTINGS_PROGRAM_ID),
51
+ getNoBridgeFeeAddress: (SETTINGS_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.deBridgeSettings.Seeds.NO_BRIDGE_FEE_INFO)], SETTINGS_PROGRAM_ID),
52
+ };
53
+ const PmmSrc = {
54
+ getStateAccount: (PMM_SRC_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.pmmSrc.Seeds.STATE)], PMM_SRC_PROGRAM_ID),
55
+ getNonceAccount: (maker, PMM_SRC_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.pmmSrc.Seeds.NONCE), (0, interfaces_1.isBuffer)(maker) ? maker : maker.toBuffer()], PMM_SRC_PROGRAM_ID),
56
+ getGiveOrderStateAccount: (orderId, PMM_SRC_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.pmmSrc.Seeds.ORDER_STATE), orderId], PMM_SRC_PROGRAM_ID),
57
+ getAuthorizedNativeSenderAddress: (chainId, PMM_SRC_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.pmmSrc.Seeds.AUTHORIZED_NATIVE_SENDER), chainId], PMM_SRC_PROGRAM_ID),
58
+ getGiveOrderWalletAddress: (orderId, PMM_SRC_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.pmmSrc.Seeds.GIVE_ORDER_WALLET), orderId], PMM_SRC_PROGRAM_ID),
59
+ getFeeLedgerWalletAddress: (tokenMint, PMM_SRC_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.pmmSrc.Seeds.FEE_LEDGER_WALLET), tokenMint.toBuffer()], PMM_SRC_PROGRAM_ID),
60
+ getFeeLedgerAddress: (PMM_SRC_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.pmmSrc.Seeds.FEE_LEDGER)], PMM_SRC_PROGRAM_ID),
61
+ };
62
+ const PmmDst = {
63
+ getAuthorizedSrcContractAddress: (chainId, PMM_DST_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.pmmDst.Seeds.AUTHORIZED_SRC_CONTRACT), chainId], PMM_DST_PROGRAM_ID),
64
+ getAuthorizedDstNativeSenderAddress: (PMM_DST_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.pmmDst.Seeds.AUTHORIZED_DST_NATIVE_SENDER)], PMM_DST_PROGRAM_ID),
65
+ getTakeOrderStateAddress: (orderId, PMM_DST_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.pmmDst.Seeds.ORDER_STATE), orderId], PMM_DST_PROGRAM_ID),
66
+ getTakePatchAddress: (orderId, PMM_DST_PROGRAM_ID) => web3_js_1.PublicKey.findProgramAddress([buffer_1.Buffer.from(constants.pmmDst.Seeds.TAKE_PATCH), orderId], PMM_DST_PROGRAM_ID),
67
+ };
68
+ function wrapFn(fn, arg) {
69
+ return (...args) => fn(...args, arg);
70
+ }
71
+ class Resolver {
72
+ constructor(programId, obj) {
73
+ this.programId = new web3_js_1.PublicKey(programId);
74
+ let methods = {};
75
+ for (let [fnName, fn] of Object.entries(obj)) {
76
+ methods[fnName] = wrapFn(fn, this.programId);
77
+ }
78
+ this.methods = methods;
79
+ }
80
+ }
81
+ class ResolverContainer2 {
82
+ constructor(resolver1, resolver2) {
83
+ let methods = {};
84
+ for (let resolver of [resolver1, resolver2]) {
85
+ for (let [fnName, fn] of Object.entries(resolver.methods)) {
86
+ methods[fnName] = fn;
87
+ }
88
+ }
89
+ this.methods = methods;
90
+ }
91
+ }
92
+ const DeBridgeResolver = (programId, settingsProgramId) => new ResolverContainer2(new Resolver(programId, deBridge), new Resolver(settingsProgramId, deBridgeSettings));
93
+ exports.DeBridgeResolver = DeBridgeResolver;
94
+ const PmmSrcResolver = (programId) => new Resolver(programId, PmmSrc);
95
+ exports.PmmSrcResolver = PmmSrcResolver;
96
+ const PmmDstResolver = (programId) => new Resolver(programId, PmmDst);
97
+ exports.PmmDstResolver = PmmDstResolver;
98
+ //# sourceMappingURL=accounts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/accounts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pmmDst = exports.pmmSrc = exports.deBridgeSettings = exports.deBridge = exports.MAX_TX_SIZE = exports.SOLANA_CHAIN_ID = exports.BPS_DENOMINATOR = void 0;
4
+ exports.BPS_DENOMINATOR = 10000;
5
+ exports.SOLANA_CHAIN_ID = 7565164;
6
+ exports.MAX_TX_SIZE = 1232;
7
+ exports.deBridge = {
8
+ Seeds: {
9
+ STATE: "DEBRIDGE_STATE",
10
+ BRIDGE: "BRIDGE",
11
+ WRAPPER_TOKEN: "WRAPPER_TOKEN",
12
+ SEND_BRIDGE_MAP: "WRAPPER_TOKEN",
13
+ BRIDGE_MINTER: "BRIDGE_MINTER",
14
+ CHAIN_SUPPORT_INFO: "CHAIN_SUPPORT_INFO",
15
+ BRIDGE_FEE_INFO: "BRIDGE_FEE_INFO",
16
+ DISCOUNT_INFO: "DISCOUNT_INFO",
17
+ ORACLE_KEYS: "SIGNATURES",
18
+ EXTERNAL_CALL_STORAGE: "EXTERNAL_CALL_STORAGE",
19
+ EXTERNAL_CALL_META: "EXTERNAL_CALL_META",
20
+ NONCE: "NONCE",
21
+ SUBMISSION: "SUBMISSION",
22
+ SUBMISSION_AUTH: "SUBMISSION_AUTH",
23
+ NO_DISCOUNT: "NO_DISCOUNT",
24
+ CLAIM_MARKER: "CLAIM_MARKER",
25
+ },
26
+ Flags: {
27
+ UNWRAP_ETH: 1,
28
+ REVERT_IF_EXTERNAL_FAIL: 2,
29
+ PROXY_WITH_SENDER: 4,
30
+ SEND_HASHED_DATA: 8,
31
+ SEND_TO_ATA: 2 ** 31,
32
+ },
33
+ SUBMISSION_PREFIX: 1,
34
+ };
35
+ exports.deBridgeSettings = {
36
+ Seeds: {
37
+ TOKEN_METADATA: "TOKEN_METADATA",
38
+ WRAPPER_TOKEN: "WRAPPER_TOKEN",
39
+ STATE: "DEBRIDGE_STATE",
40
+ CONFIRMATION_STORAGE: "SIGNATURES",
41
+ BRIDGE_FEE_INFO: "BRIDGE_FEE_INFO",
42
+ CHAIN_SUPPORT_INFO: "CHAIN_SUPPORT_INFO",
43
+ DISCOUNT_INFO: "DISCOUNT_INFO",
44
+ BRIDGE: "BRIDGE",
45
+ NO_BRIDGE_FEE_INFO: "DEFAULT_BRIDGE_FEE_INFO",
46
+ NO_DISCOUNT: "NO_DISCOUNT",
47
+ SEND_BRIDGE_MAP: "WRAPPER_TOKEN",
48
+ },
49
+ };
50
+ exports.pmmSrc = {
51
+ Seeds: {
52
+ STATE: "STATE",
53
+ NONCE: "NONCE",
54
+ ORDER_STATE: "GIVE_ORDER_STATE",
55
+ AUTHORIZED_NATIVE_SENDER: "AUTHORIZED_NATIVE_SENDER",
56
+ GIVE_ORDER_WALLET: "GIVE_ORDER_WALLET",
57
+ FEE_LEDGER_WALLET: "FEE_LEDGER_WALLET",
58
+ FEE_LEDGER: "FEE LEDGER",
59
+ },
60
+ };
61
+ exports.pmmDst = {
62
+ Seeds: {
63
+ AUTHORIZED_SRC_CONTRACT: "AUTHORIZED_SRC_CONTRACT",
64
+ AUTHORIZED_DST_NATIVE_SENDER: "AUTHORIZED_DST_NATIVE_SENDER",
65
+ ORDER_STATE: "TAKE_ORDER_STATE",
66
+ TAKE_PATCH: "TAKE_ORDER_PATCH",
67
+ },
68
+ };
69
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,eAAe,GAAG,KAAK,CAAC;AACxB,QAAA,eAAe,GAAG,OAAO,CAAC;AAC1B,QAAA,WAAW,GAAG,IAAI,CAAC;AAEnB,QAAA,QAAQ,GAAG;IACvB,KAAK,EAAE;QACN,KAAK,EAAE,gBAAgB;QACvB,MAAM,EAAE,QAAQ;QAChB,aAAa,EAAE,eAAe;QAC9B,eAAe,EAAE,eAAe;QAChC,aAAa,EAAE,eAAe;QAC9B,kBAAkB,EAAE,oBAAoB;QACxC,eAAe,EAAE,iBAAiB;QAClC,aAAa,EAAE,eAAe;QAC9B,WAAW,EAAE,YAAY;QACzB,qBAAqB,EAAE,uBAAuB;QAC9C,kBAAkB,EAAE,oBAAoB;QACxC,KAAK,EAAE,OAAO;QACd,UAAU,EAAE,YAAY;QACxB,eAAe,EAAE,iBAAiB;QAClC,WAAW,EAAE,aAAa;QAC1B,YAAY,EAAE,cAAc;KAC5B;IACD,KAAK,EAAE;QACN,UAAU,EAAE,CAAC;QACb,uBAAuB,EAAE,CAAC;QAC1B,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,CAAC;QACnB,WAAW,EAAE,CAAC,IAAI,EAAE;KACpB;IACD,iBAAiB,EAAE,CAAC;CACpB,CAAC;AAEW,QAAA,gBAAgB,GAAG;IAC/B,KAAK,EAAE;QACN,cAAc,EAAE,gBAAgB;QAChC,aAAa,EAAE,eAAe;QAC9B,KAAK,EAAE,gBAAgB;QACvB,oBAAoB,EAAE,YAAY;QAClC,eAAe,EAAE,iBAAiB;QAClC,kBAAkB,EAAE,oBAAoB;QACxC,aAAa,EAAE,eAAe;QAC9B,MAAM,EAAE,QAAQ;QAChB,kBAAkB,EAAE,yBAAyB;QAC7C,WAAW,EAAE,aAAa;QAC1B,eAAe,EAAE,eAAe;KAChC;CACD,CAAC;AAEW,QAAA,MAAM,GAAG;IACrB,KAAK,EAAE;QACN,KAAK,EAAE,OAAO;QACd,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,kBAAkB;QAC/B,wBAAwB,EAAE,0BAA0B;QACpD,iBAAiB,EAAE,mBAAmB;QACtC,iBAAiB,EAAE,mBAAmB;QACtC,UAAU,EAAE,YAAY;KACxB;CACD,CAAC;AAEW,QAAA,MAAM,GAAG;IACrB,KAAK,EAAE;QACN,uBAAuB,EAAE,yBAAyB;QAClD,4BAA4B,EAAE,8BAA8B;QAC5D,WAAW,EAAE,kBAAkB;QAC/B,UAAU,EAAE,kBAAkB;KAC9B;CACD,CAAC"}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.hashSubmissionIdRaw = exports.hashExternalCallBytes = exports.hashDebridgeId = exports.hashDeployInfo = exports.normalizeChainId = exports.denormalizeAmount = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const buffer_1 = require("buffer");
6
+ const web3_js_1 = require("@solana/web3.js");
7
+ const ethers_1 = require("ethers");
8
+ const bn_js_1 = tslib_1.__importDefault(require("bn.js"));
9
+ const constants_1 = require("./constants");
10
+ const helpers_1 = require("./helpers");
11
+ const interfaces_1 = require("./interfaces");
12
+ function denormalizeAmount(amount, denominator) {
13
+ const denominatorBN = new bn_js_1.default(10 ** denominator);
14
+ return amount.mul(denominatorBN).toArrayLike(buffer_1.Buffer, "be", 32);
15
+ }
16
+ exports.denormalizeAmount = denormalizeAmount;
17
+ function normalizeChainId(chainId) {
18
+ return (0, helpers_1.hexToBuffer)(`0x${(0, interfaces_1.isBuffer)(chainId) ? chainId.toString("hex") : new bn_js_1.default(chainId).toString(16)}`, 32);
19
+ }
20
+ exports.normalizeChainId = normalizeChainId;
21
+ /**
22
+ * Hashes deploy info
23
+ * @param params {@link HashDeployInfoParams}
24
+ * @returns keccak256 of deployInfo structure
25
+ */
26
+ function hashDeployInfo(params) {
27
+ const nameHash = ethers_1.utils.solidityKeccak256(["string"], [params.tokenName]);
28
+ const symbolHash = ethers_1.utils.solidityKeccak256(["string"], [params.tokenSymbol]);
29
+ const deployInfoHash = ethers_1.utils.solidityKeccak256(["uint256", "uint256", "uint256", "uint256", "uint8"], [2, params.debridgeId, nameHash, symbolHash, params.decimals]);
30
+ return deployInfoHash;
31
+ }
32
+ exports.hashDeployInfo = hashDeployInfo;
33
+ /**
34
+ * Returns bridgeid hash
35
+ * @param nativeChainId chain id where token originates
36
+ * @param nativeTokenAddress address of token in native chain in format "0x<HEX STRING>"
37
+ * @returns bridge id in deBridge network
38
+ */
39
+ function hashDebridgeId(nativeChainId, nativeTokenAddress) {
40
+ const chainIdBuffer = normalizeChainId(nativeChainId);
41
+ const bridgeId = ethers_1.utils.solidityKeccak256(["uint256", "bytes"], [chainIdBuffer, nativeTokenAddress]);
42
+ return bridgeId;
43
+ }
44
+ exports.hashDebridgeId = hashDebridgeId;
45
+ function hashExternalCallBytes(data) {
46
+ return (0, helpers_1.hexToBuffer)(ethers_1.utils.solidityKeccak256(["bytes"], [data ? data : buffer_1.Buffer.from([])]), 32);
47
+ }
48
+ exports.hashExternalCallBytes = hashExternalCallBytes;
49
+ /**
50
+ * Hashes submission for provided data
51
+ * @param params data to hash
52
+ * @returns submissionId from provided params
53
+ */
54
+ function hashSubmissionIdRaw(params) {
55
+ let packParams = [
56
+ "uint256",
57
+ "uint256",
58
+ "uint256",
59
+ "uint256",
60
+ "uint256",
61
+ "bytes",
62
+ "uint256", // nonce
63
+ ];
64
+ const receiver = (0, interfaces_1.isBuffer)(params.receiver)
65
+ ? params.receiver
66
+ : typeof params.receiver === "string"
67
+ ? params.receiver.startsWith("0x")
68
+ ? (0, helpers_1.hexToBuffer)(params.receiver)
69
+ : new web3_js_1.PublicKey(params.receiver)
70
+ : new web3_js_1.PublicKey(params.receiver).toBuffer();
71
+ let packData = [
72
+ constants_1.deBridge.SUBMISSION_PREFIX,
73
+ params.debridgeId,
74
+ normalizeChainId(params.sourceChainId),
75
+ normalizeChainId(params.targetChainId),
76
+ new bn_js_1.default(params.amount).toArray("be", 32),
77
+ receiver,
78
+ params.nonce, // nonce
79
+ ];
80
+ if (params?.autoParams) {
81
+ packParams = packParams.concat([
82
+ "uint256",
83
+ "uint256",
84
+ "uint256",
85
+ "uint256",
86
+ "uint256", // native sender hash
87
+ ]);
88
+ const shortcut = params.autoParams?.shortcut
89
+ ? (0, interfaces_1.isBuffer)(params.autoParams.shortcut)
90
+ ? params.autoParams.shortcut
91
+ : (0, helpers_1.hexToBuffer)(params.autoParams.shortcut)
92
+ : hashExternalCallBytes(params?.autoParams?.data);
93
+ const fallback = params.autoParams.fallbackAddress.startsWith("0x")
94
+ ? (0, helpers_1.hexToBuffer)(params.autoParams.fallbackAddress)
95
+ : new web3_js_1.PublicKey(params.autoParams.fallbackAddress).toBuffer();
96
+ packData = packData.concat([
97
+ new bn_js_1.default(params?.autoParams?.executionFee || 0).toArray("be", 32),
98
+ new bn_js_1.default(params.autoParams?.flags || 0).toArray("be", 32),
99
+ hashExternalCallBytes(fallback),
100
+ shortcut,
101
+ hashExternalCallBytes(params.autoParams.nativeSender),
102
+ ]);
103
+ }
104
+ const submissionIdHash = ethers_1.utils.solidityKeccak256(packParams, packData);
105
+ return submissionIdHash;
106
+ }
107
+ exports.hashSubmissionIdRaw = hashSubmissionIdRaw;
108
+ //# sourceMappingURL=crypto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sendAll = exports.Wallet = exports.getTransactionSize = exports.sleep = exports.bufferToHex = exports.hexToBuffer = void 0;
4
+ const buffer_1 = require("buffer");
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ function hexToBuffer(data, align) {
7
+ if (!data.startsWith("0x"))
8
+ throw new Error("[hexToBuffer]: string must start with 0x");
9
+ data = data.slice(2); // remove 0x
10
+ if (!data)
11
+ return buffer_1.Buffer.from([]);
12
+ const bufferLen = data.length / 2;
13
+ data = data.length % 2 ? "0" + data : data; // append leading zero if data is not aligned, eg "fff" => "0f ff"
14
+ align = align || 0;
15
+ if (align && bufferLen < align) {
16
+ return buffer_1.Buffer.concat([buffer_1.Buffer.from(Uint8Array.from({ length: align - bufferLen }).fill(0)), buffer_1.Buffer.from(data, "hex")]);
17
+ }
18
+ return buffer_1.Buffer.from(data, "hex");
19
+ }
20
+ exports.hexToBuffer = hexToBuffer;
21
+ function bufferToHex(data) {
22
+ return `0x${buffer_1.Buffer.from(data).toString("hex")}`;
23
+ }
24
+ exports.bufferToHex = bufferToHex;
25
+ async function sleep(milliSeconds) {
26
+ return new Promise((resolve, reject) => {
27
+ setTimeout(resolve, milliSeconds);
28
+ });
29
+ }
30
+ exports.sleep = sleep;
31
+ /**
32
+ * Serializes transaction and returns serialized size
33
+ * @param transaction tx to get length
34
+ * @param feePayer optional fee payer
35
+ * @returns transaction size
36
+ */
37
+ function getTransactionSize(transaction, feePayer) {
38
+ const clonedTransaction = new web3_js_1.Transaction({
39
+ lastValidBlockHeight: 1234,
40
+ feePayer: transaction?.feePayer || feePayer || transaction.instructions[0].programId,
41
+ blockhash: "CSymwgTNX1j3E4qhKfJAUE41nBWEwXufoYryPbkde5RR", // fake blockhash
42
+ }).add(transaction);
43
+ const serializedMessage = clonedTransaction.serializeMessage();
44
+ const uniqueSigners = new Set(clonedTransaction.instructions.flatMap((ix) => ix.keys.filter((meta) => meta.isSigner).map((meta) => meta.pubkey.toBase58())));
45
+ // message length + signatures length (1 byte) + signatures count * signature size (64)
46
+ return serializedMessage.length + uniqueSigners.size * 64 + 1;
47
+ }
48
+ exports.getTransactionSize = getTransactionSize;
49
+ function isVersionedTx(arg) {
50
+ return 'version' in arg;
51
+ }
52
+ class Wallet {
53
+ constructor(keypair) {
54
+ this.keypair = keypair;
55
+ this.publicKey = keypair.publicKey;
56
+ }
57
+ async signTransaction(tx, additionalSigners) {
58
+ tx.sign(this.keypair, ...(additionalSigners || []));
59
+ return Promise.resolve(tx);
60
+ }
61
+ async signAllTransactions(txs, additionalSigners) {
62
+ const promises = [];
63
+ for (const [id, tx] of txs.entries()) {
64
+ promises.push(this.signTransaction(tx, additionalSigners && additionalSigners.length > id ? additionalSigners[id] : []));
65
+ }
66
+ return Promise.all(promises);
67
+ }
68
+ async signVersionedTransaction(tx, additionalSigners) {
69
+ tx.sign([this.keypair, ...(additionalSigners || [])]);
70
+ return Promise.resolve(tx);
71
+ }
72
+ ;
73
+ async signAllVersionedTransactions(txs, additionalSigners) {
74
+ const promises = [];
75
+ for (const [id, tx] of txs.entries()) {
76
+ promises.push(this.signVersionedTransaction(tx, additionalSigners && additionalSigners.length > id ? additionalSigners[id] : []));
77
+ }
78
+ return Promise.all(promises);
79
+ }
80
+ }
81
+ exports.Wallet = Wallet;
82
+ async function sendWithRetries(connection, serialized, lastValidBlockHeight) {
83
+ const txId = await connection.sendRawTransaction(serialized, {
84
+ skipPreflight: true,
85
+ });
86
+ let blockheight = await connection.getBlockHeight();
87
+ const timesToSend = 5;
88
+ let sent = 0;
89
+ while (blockheight < lastValidBlockHeight && sent < timesToSend) {
90
+ await connection.sendRawTransaction(serialized, {
91
+ skipPreflight: true,
92
+ });
93
+ await sleep(300);
94
+ blockheight = await connection.getBlockHeight();
95
+ sent += 1;
96
+ }
97
+ return txId;
98
+ }
99
+ async function sendAll(connection, wallet, transactions, signers, waitBetweenSend, skipPreflight = false, debug = false) {
100
+ let txIds = [];
101
+ const signAllTransactions = (txs, additionalSigners) => {
102
+ const result = [];
103
+ const txTypes = txs.map(isVersionedTx);
104
+ if (txTypes.every((isVersioned) => isVersioned === true)) {
105
+ // all txs are Versioned
106
+ if (wallet.signAllVersionedTransactions === undefined)
107
+ throw new Error("Trying to sign versioned transactions without implementation for sigining such transactions (signAllVersionedTransactions)");
108
+ return wallet.signAllVersionedTransactions(txs, additionalSigners);
109
+ }
110
+ else if (txTypes.every((isVersioned) => isVersioned === false)) {
111
+ // all txs are Legacy
112
+ return wallet.signAllTransactions(txs, additionalSigners);
113
+ }
114
+ // transactions are mixed
115
+ if (wallet.signVersionedTransaction === undefined)
116
+ throw new Error("Trying to sign versioned transaction without implementation for sigining such transaction (signVersionedTransaction)");
117
+ for (const [i, tx] of txs.entries()) {
118
+ const signers = additionalSigners && additionalSigners.length > i ? additionalSigners[i] : undefined;
119
+ if (isVersionedTx(tx)) {
120
+ result.push(wallet.signVersionedTransaction(tx, signers));
121
+ }
122
+ else {
123
+ result.push(wallet.signTransaction(tx, signers));
124
+ }
125
+ }
126
+ return Promise.all(result);
127
+ };
128
+ if (waitBetweenSend === undefined || waitBetweenSend === 0) {
129
+ const { blockhash, lastValidBlockHeight } = await connection.getLatestBlockhash({ commitment: "confirmed" });
130
+ await Promise.all(transactions.map(async (tx) => {
131
+ let txV0;
132
+ if (isVersionedTx(tx)) {
133
+ tx.message.recentBlockhash = blockhash;
134
+ txV0 = tx;
135
+ }
136
+ else {
137
+ tx.recentBlockhash = blockhash;
138
+ tx.feePayer = wallet.publicKey;
139
+ const message = web3_js_1.Message.from(tx.serializeMessage());
140
+ txV0 = new web3_js_1.VersionedTransaction(new web3_js_1.MessageV0({ addressTableLookups: [], compiledInstructions: [], header: message.header, recentBlockhash: blockhash, staticAccountKeys: message.accountKeys }));
141
+ }
142
+ if (!skipPreflight) {
143
+ const simulationResult = await connection.simulateTransaction(txV0, { sigVerify: false, replaceRecentBlockhash: true, commitment: "confirmed" });
144
+ if (simulationResult.value.err !== null) {
145
+ throw new Error(`Tx simulation Error! Transaction message dump: ${buffer_1.Buffer.from(tx.serialize()).toString("base64")}\n Error: ${JSON.stringify(simulationResult.value.err)}, logs:\n ${simulationResult.value.logs?.join("\n")}`);
146
+ }
147
+ }
148
+ }));
149
+ // sign after setting correct blockhashes
150
+ const signed = await signAllTransactions(transactions, signers);
151
+ txIds = await Promise.all(signed.map((signedTx) => {
152
+ const serialized = buffer_1.Buffer.from(signedTx.serialize());
153
+ if (debug)
154
+ console.debug(serialized.toString("base64"));
155
+ return sendWithRetries(connection, serialized, lastValidBlockHeight);
156
+ }));
157
+ }
158
+ else {
159
+ for (let i = 0; i < transactions.length; i++) {
160
+ const tx = transactions[i];
161
+ const { blockhash } = await connection.getLatestBlockhash();
162
+ let signed;
163
+ if (isVersionedTx(tx)) {
164
+ tx.message.recentBlockhash = blockhash;
165
+ if (wallet.signVersionedTransaction === undefined)
166
+ throw new Error("Trying to sign versioned transaction without implementation for sigining such transaction (signVersionedTransaction)");
167
+ signed = await wallet.signVersionedTransaction(tx, signers && signers.length > i ? signers[i] : undefined);
168
+ }
169
+ else {
170
+ tx.recentBlockhash = blockhash;
171
+ tx.feePayer = wallet.publicKey;
172
+ signed = await wallet.signTransaction(tx, signers && signers.length > i ? signers[i] : undefined);
173
+ }
174
+ const serialized = buffer_1.Buffer.from(signed.serialize());
175
+ if (debug)
176
+ console.debug(serialized.toString("base64"));
177
+ txIds.push(await (0, web3_js_1.sendAndConfirmRawTransaction)(connection, serialized, { maxRetries: 20, commitment: "confirmed", skipPreflight }));
178
+ await sleep(waitBetweenSend);
179
+ }
180
+ }
181
+ return txIds;
182
+ }
183
+ exports.sendAll = sendAll;
184
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.helpers = exports.interfaces = exports.constants = exports.crypto = void 0;
4
+ const tslib_1 = require("tslib");
5
+ exports.crypto = tslib_1.__importStar(require("./crypto"));
6
+ exports.constants = tslib_1.__importStar(require("./constants"));
7
+ exports.interfaces = tslib_1.__importStar(require("./interfaces"));
8
+ tslib_1.__exportStar(require("./accounts"), exports);
9
+ exports.helpers = tslib_1.__importStar(require("./helpers"));
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;AAAA,2DAAmC;AACnC,iEAAyC;AACzC,mEAA2C;AAC3C,qDAA2B;AAC3B,6DAAqC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isBuffer = void 0;
4
+ const buffer_1 = require("buffer");
5
+ function isBuffer(arg) {
6
+ return buffer_1.Buffer.isBuffer(arg); //(arg as Record<string, never>).constructor === Buffer;
7
+ }
8
+ exports.isBuffer = isBuffer;
9
+ //# sourceMappingURL=interfaces.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/interfaces.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAahC,SAAgB,QAAQ,CAAC,GAAY;IACpC,OAAO,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,wDAAwD;AACtF,CAAC;AAFD,4BAEC"}
@@ -0,0 +1,91 @@
1
+ import { __awaiter } from "tslib";
2
+ import { Buffer } from "buffer";
3
+ import { PublicKey } from "@solana/web3.js";
4
+ import * as constants from "./constants";
5
+ import { normalizeChainId } from "./crypto";
6
+ import { isBuffer } from "./interfaces";
7
+ export const TOKEN_METADATA_PROGRAM_ID = new PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");
8
+ export const TOKEN_PROGRAM_ID = new PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");
9
+ export const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");
10
+ export const WRAPPED_SOL_MINT = new PublicKey("So11111111111111111111111111111111111111112");
11
+ export function findAssociatedTokenAddress(wallet, tokenMint, tokenProgramId = TOKEN_PROGRAM_ID, associatedTokenProramId = ASSOCIATED_TOKEN_PROGRAM_ID) {
12
+ return __awaiter(this, void 0, void 0, function* () {
13
+ return PublicKey.findProgramAddress([wallet.toBytes(), tokenProgramId.toBytes(), tokenMint.toBytes()], associatedTokenProramId);
14
+ });
15
+ }
16
+ export function findAssociatedTokenAddressSync(wallet, tokenMint, tokenProgramId = TOKEN_PROGRAM_ID, associatedTokenProramId = ASSOCIATED_TOKEN_PROGRAM_ID) {
17
+ return PublicKey.findProgramAddressSync([wallet.toBytes(), tokenProgramId.toBytes(), tokenMint.toBytes()], associatedTokenProramId);
18
+ }
19
+ export function getTokenMetadataAddress(tokenMint, tokenMetedataProgramId) {
20
+ return PublicKey.findProgramAddress([Buffer.from("metadata"), tokenMetedataProgramId.toBytes(), tokenMint.toBytes()], tokenMetedataProgramId);
21
+ }
22
+ const deBridge = {
23
+ getClaimMarkerAddress: (DEBRIDGE_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridge.Seeds.CLAIM_MARKER)], DEBRIDGE_PROGRAM_ID),
24
+ getExternalCallStorageAddress: (submissionId, executorPubkey, sourceChainId, DEBRIDGE_PROGRAM_ID) => PublicKey.findProgramAddress([
25
+ Buffer.from(constants.deBridge.Seeds.EXTERNAL_CALL_STORAGE),
26
+ submissionId,
27
+ new PublicKey(executorPubkey).toBytes(),
28
+ normalizeChainId(sourceChainId),
29
+ ], DEBRIDGE_PROGRAM_ID),
30
+ getExternalCallMetaAddress: (externalCallStorage, DEBRIDGE_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridge.Seeds.EXTERNAL_CALL_META), new PublicKey(externalCallStorage).toBytes()], DEBRIDGE_PROGRAM_ID),
31
+ getNonceAddress: (DEBRIDGE_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridge.Seeds.NONCE)], DEBRIDGE_PROGRAM_ID),
32
+ getSubmissionAddress: (submissionId, DEBRIDGE_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridge.Seeds.SUBMISSION), submissionId], DEBRIDGE_PROGRAM_ID),
33
+ getSubmissionAuthAddress: (submissionAddress, DEBRIDGE_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridge.Seeds.SUBMISSION_AUTH), new PublicKey(submissionAddress).toBytes()], DEBRIDGE_PROGRAM_ID),
34
+ getMintAuthorityAddress: (bridge, DEBRIDGE_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridge.Seeds.BRIDGE_MINTER), new PublicKey(bridge).toBytes()], DEBRIDGE_PROGRAM_ID),
35
+ };
36
+ const deBridgeSettings = {
37
+ getTokenMetadataMasterAddress: (SETTINGS_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridgeSettings.Seeds.TOKEN_METADATA)], SETTINGS_PROGRAM_ID),
38
+ getTokenMintAddress: (debridgeId, SETTINGS_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridgeSettings.Seeds.WRAPPER_TOKEN), debridgeId], SETTINGS_PROGRAM_ID),
39
+ getStateAddress: (SETTINGS_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridgeSettings.Seeds.STATE)], SETTINGS_PROGRAM_ID),
40
+ getConfirmationsStorageAddress: (message, SETTINGS_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridgeSettings.Seeds.CONFIRMATION_STORAGE), message], SETTINGS_PROGRAM_ID),
41
+ getBridgeFeeAddress: (bridge, chainId, SETTINGS_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridgeSettings.Seeds.BRIDGE_FEE_INFO), bridge.toBytes(), normalizeChainId(chainId)], SETTINGS_PROGRAM_ID),
42
+ getChainSupportInfoAddress: (chainId, SETTINGS_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridgeSettings.Seeds.CHAIN_SUPPORT_INFO), normalizeChainId(chainId)], SETTINGS_PROGRAM_ID),
43
+ getDiscountInfoAddress: (user, SETTINGS_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridgeSettings.Seeds.DISCOUNT_INFO), user.toBytes()], SETTINGS_PROGRAM_ID),
44
+ getBridgeAddress: (tokenMint, SETTINGS_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridgeSettings.Seeds.BRIDGE), tokenMint.toBytes()], SETTINGS_PROGRAM_ID),
45
+ getBridgeMapAddress: (bridgeId, SETTINGS_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridgeSettings.Seeds.SEND_BRIDGE_MAP), bridgeId], SETTINGS_PROGRAM_ID),
46
+ getNoDiscountAddress: (SETTINGS_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridgeSettings.Seeds.NO_DISCOUNT)], SETTINGS_PROGRAM_ID),
47
+ getNoBridgeFeeAddress: (SETTINGS_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.deBridgeSettings.Seeds.NO_BRIDGE_FEE_INFO)], SETTINGS_PROGRAM_ID),
48
+ };
49
+ const PmmSrc = {
50
+ getStateAccount: (PMM_SRC_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.pmmSrc.Seeds.STATE)], PMM_SRC_PROGRAM_ID),
51
+ getNonceAccount: (maker, PMM_SRC_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.pmmSrc.Seeds.NONCE), isBuffer(maker) ? maker : maker.toBuffer()], PMM_SRC_PROGRAM_ID),
52
+ getGiveOrderStateAccount: (orderId, PMM_SRC_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.pmmSrc.Seeds.ORDER_STATE), orderId], PMM_SRC_PROGRAM_ID),
53
+ getAuthorizedNativeSenderAddress: (chainId, PMM_SRC_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.pmmSrc.Seeds.AUTHORIZED_NATIVE_SENDER), chainId], PMM_SRC_PROGRAM_ID),
54
+ getGiveOrderWalletAddress: (orderId, PMM_SRC_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.pmmSrc.Seeds.GIVE_ORDER_WALLET), orderId], PMM_SRC_PROGRAM_ID),
55
+ getFeeLedgerWalletAddress: (tokenMint, PMM_SRC_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.pmmSrc.Seeds.FEE_LEDGER_WALLET), tokenMint.toBuffer()], PMM_SRC_PROGRAM_ID),
56
+ getFeeLedgerAddress: (PMM_SRC_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.pmmSrc.Seeds.FEE_LEDGER)], PMM_SRC_PROGRAM_ID),
57
+ };
58
+ const PmmDst = {
59
+ getAuthorizedSrcContractAddress: (chainId, PMM_DST_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.pmmDst.Seeds.AUTHORIZED_SRC_CONTRACT), chainId], PMM_DST_PROGRAM_ID),
60
+ getAuthorizedDstNativeSenderAddress: (PMM_DST_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.pmmDst.Seeds.AUTHORIZED_DST_NATIVE_SENDER)], PMM_DST_PROGRAM_ID),
61
+ getTakeOrderStateAddress: (orderId, PMM_DST_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.pmmDst.Seeds.ORDER_STATE), orderId], PMM_DST_PROGRAM_ID),
62
+ getTakePatchAddress: (orderId, PMM_DST_PROGRAM_ID) => PublicKey.findProgramAddress([Buffer.from(constants.pmmDst.Seeds.TAKE_PATCH), orderId], PMM_DST_PROGRAM_ID),
63
+ };
64
+ function wrapFn(fn, arg) {
65
+ return (...args) => fn(...args, arg);
66
+ }
67
+ class Resolver {
68
+ constructor(programId, obj) {
69
+ this.programId = new PublicKey(programId);
70
+ let methods = {};
71
+ for (let [fnName, fn] of Object.entries(obj)) {
72
+ methods[fnName] = wrapFn(fn, this.programId);
73
+ }
74
+ this.methods = methods;
75
+ }
76
+ }
77
+ class ResolverContainer2 {
78
+ constructor(resolver1, resolver2) {
79
+ let methods = {};
80
+ for (let resolver of [resolver1, resolver2]) {
81
+ for (let [fnName, fn] of Object.entries(resolver.methods)) {
82
+ methods[fnName] = fn;
83
+ }
84
+ }
85
+ this.methods = methods;
86
+ }
87
+ }
88
+ export const DeBridgeResolver = (programId, settingsProgramId) => new ResolverContainer2(new Resolver(programId, deBridge), new Resolver(settingsProgramId, deBridgeSettings));
89
+ export const PmmSrcResolver = (programId) => new Resolver(programId, PmmSrc);
90
+ export const PmmDstResolver = (programId) => new Resolver(programId, PmmDst);
91
+ //# sourceMappingURL=accounts.js.map