@rosen-bridge/rosen-extractor 6.2.2 → 6.3.1
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/lib/getRosenData/abstract/AbstractRosenDataExtractor.d.ts +14 -20
- package/dist/lib/getRosenData/abstract/types.d.ts +13 -13
- package/dist/lib/getRosenData/bitcoin/BitcoinEsploraRosenExtractor.d.ts +15 -24
- package/dist/lib/getRosenData/bitcoin/BitcoinRosenExtractor.d.ts +15 -22
- package/dist/lib/getRosenData/bitcoin/BitcoinRpcRosenExtractor.d.ts +15 -22
- package/dist/lib/getRosenData/bitcoin/types.d.ts +66 -66
- package/dist/lib/getRosenData/bitcoin/utils.d.ts +1 -1
- package/dist/lib/getRosenData/cardano/CardanoBlockFrostRosenExtractor.d.ts +13 -16
- package/dist/lib/getRosenData/cardano/CardanoGraphQLRosenExtractor.d.ts +13 -16
- package/dist/lib/getRosenData/cardano/CardanoKoiosRosenExtractor.d.ts +13 -16
- package/dist/lib/getRosenData/cardano/CardanoOgmiosRosenExtractor.d.ts +13 -16
- package/dist/lib/getRosenData/cardano/CardanoRosenExtractor.d.ts +13 -16
- package/dist/lib/getRosenData/cardano/types.d.ts +90 -110
- package/dist/lib/getRosenData/cardano/utils.d.ts +8 -10
- package/dist/lib/getRosenData/const.d.ts +9 -9
- package/dist/lib/getRosenData/const.d.ts.map +1 -1
- package/dist/lib/getRosenData/const.js +3 -2
- package/dist/lib/getRosenData/doge/DogeEsploraRosenExtractor.d.ts +22 -0
- package/dist/lib/getRosenData/doge/DogeEsploraRosenExtractor.d.ts.map +1 -0
- package/dist/lib/getRosenData/doge/DogeEsploraRosenExtractor.js +104 -0
- package/dist/lib/getRosenData/doge/DogeRosenExtractor.d.ts +22 -0
- package/dist/lib/getRosenData/doge/DogeRosenExtractor.d.ts.map +1 -0
- package/dist/lib/getRosenData/doge/DogeRosenExtractor.js +112 -0
- package/dist/lib/getRosenData/doge/types.d.ts +59 -0
- package/dist/lib/getRosenData/doge/types.d.ts.map +1 -0
- package/dist/lib/getRosenData/doge/types.js +2 -0
- package/dist/lib/getRosenData/doge/utils.d.ts +13 -0
- package/dist/lib/getRosenData/doge/utils.d.ts.map +1 -0
- package/dist/lib/getRosenData/doge/utils.js +58 -0
- package/dist/lib/getRosenData/ergo/ErgoNodeRosenExtractor.d.ts +15 -22
- package/dist/lib/getRosenData/ergo/ErgoRosenExtractor.d.ts +9 -13
- package/dist/lib/getRosenData/ergo/types.d.ts +24 -24
- package/dist/lib/getRosenData/evm/EvmEthersRosenExtractor.d.ts +9 -15
- package/dist/lib/getRosenData/evm/EvmRosenExtractor.d.ts +9 -15
- package/dist/lib/getRosenData/evm/EvmRpcRosenExtractor.d.ts +19 -25
- package/dist/lib/getRosenData/evm/utils.d.ts +5 -5
- package/dist/lib/index.d.ts +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/dist/lib/getRosenData/Utils.d.ts +0 -59
- package/dist/lib/getRosenData/Utils.d.ts.map +0 -1
- package/dist/lib/getRosenData/Utils.js +0 -96
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
export interface OpReturnData {
|
|
2
|
+
toChain: string;
|
|
3
|
+
toAddress: string;
|
|
4
|
+
bridgeFee: string;
|
|
5
|
+
networkFee: string;
|
|
6
|
+
}
|
|
7
|
+
export interface EsploraTxInput {
|
|
8
|
+
txid: string;
|
|
9
|
+
vout: number;
|
|
10
|
+
prevout: {
|
|
11
|
+
scriptpubkey: string;
|
|
12
|
+
scriptpubkey_asm: string;
|
|
13
|
+
scriptpubkey_type: string;
|
|
14
|
+
scriptpubkey_address: string;
|
|
15
|
+
value: number;
|
|
16
|
+
};
|
|
17
|
+
scriptsig: string;
|
|
18
|
+
scriptsig_asm: string;
|
|
19
|
+
is_coinbase: false;
|
|
20
|
+
sequence: number;
|
|
21
|
+
}
|
|
22
|
+
export interface EsploraTxOutput {
|
|
23
|
+
scriptpubkey: string;
|
|
24
|
+
scriptpubkey_asm: string;
|
|
25
|
+
scriptpubkey_type: string;
|
|
26
|
+
scriptpubkey_address: string;
|
|
27
|
+
value: number;
|
|
28
|
+
}
|
|
29
|
+
export interface DogeEsploraTransaction {
|
|
30
|
+
txid: string;
|
|
31
|
+
version: number;
|
|
32
|
+
locktime: number;
|
|
33
|
+
vin: Array<EsploraTxInput>;
|
|
34
|
+
vout: Array<EsploraTxOutput>;
|
|
35
|
+
size: number;
|
|
36
|
+
weight: number;
|
|
37
|
+
fee: number;
|
|
38
|
+
status: {
|
|
39
|
+
confirmed: true;
|
|
40
|
+
block_height: number;
|
|
41
|
+
block_hash: string;
|
|
42
|
+
block_time: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export interface DogeTxInput {
|
|
46
|
+
txId: string;
|
|
47
|
+
index: number;
|
|
48
|
+
scriptPubKey: string;
|
|
49
|
+
}
|
|
50
|
+
export interface DogeTxOutput {
|
|
51
|
+
scriptPubKey: string;
|
|
52
|
+
value: bigint;
|
|
53
|
+
}
|
|
54
|
+
export interface DogeTx {
|
|
55
|
+
id: string;
|
|
56
|
+
inputs: DogeTxInput[];
|
|
57
|
+
outputs: DogeTxOutput[];
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/doge/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE;QACP,YAAY,EAAE,MAAM,CAAC;QACrB,gBAAgB,EAAE,MAAM,CAAC;QACzB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,oBAAoB,EAAE,MAAM,CAAC;QAC7B,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,KAAK,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,KAAK,CAAC,cAAc,CAAC,CAAC;IAC3B,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE;QACN,SAAS,EAAE,IAAI,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,MAAM;IACrB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,YAAY,EAAE,CAAC;CACzB"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export {};
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2RvZ2UvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgT3BSZXR1cm5EYXRhIHtcbiAgdG9DaGFpbjogc3RyaW5nO1xuICB0b0FkZHJlc3M6IHN0cmluZztcbiAgYnJpZGdlRmVlOiBzdHJpbmc7XG4gIG5ldHdvcmtGZWU6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBFc3Bsb3JhVHhJbnB1dCB7XG4gIHR4aWQ6IHN0cmluZztcbiAgdm91dDogbnVtYmVyO1xuICBwcmV2b3V0OiB7XG4gICAgc2NyaXB0cHVia2V5OiBzdHJpbmc7XG4gICAgc2NyaXB0cHVia2V5X2FzbTogc3RyaW5nO1xuICAgIHNjcmlwdHB1YmtleV90eXBlOiBzdHJpbmc7XG4gICAgc2NyaXB0cHVia2V5X2FkZHJlc3M6IHN0cmluZztcbiAgICB2YWx1ZTogbnVtYmVyO1xuICB9O1xuICBzY3JpcHRzaWc6IHN0cmluZztcbiAgc2NyaXB0c2lnX2FzbTogc3RyaW5nO1xuICBpc19jb2luYmFzZTogZmFsc2U7XG4gIHNlcXVlbmNlOiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXNwbG9yYVR4T3V0cHV0IHtcbiAgc2NyaXB0cHVia2V5OiBzdHJpbmc7XG4gIHNjcmlwdHB1YmtleV9hc206IHN0cmluZztcbiAgc2NyaXB0cHVia2V5X3R5cGU6IHN0cmluZztcbiAgc2NyaXB0cHVia2V5X2FkZHJlc3M6IHN0cmluZztcbiAgdmFsdWU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb2dlRXNwbG9yYVRyYW5zYWN0aW9uIHtcbiAgdHhpZDogc3RyaW5nO1xuICB2ZXJzaW9uOiBudW1iZXI7XG4gIGxvY2t0aW1lOiBudW1iZXI7XG4gIHZpbjogQXJyYXk8RXNwbG9yYVR4SW5wdXQ+O1xuICB2b3V0OiBBcnJheTxFc3Bsb3JhVHhPdXRwdXQ+O1xuICBzaXplOiBudW1iZXI7XG4gIHdlaWdodDogbnVtYmVyO1xuICBmZWU6IG51bWJlcjtcbiAgc3RhdHVzOiB7XG4gICAgY29uZmlybWVkOiB0cnVlO1xuICAgIGJsb2NrX2hlaWdodDogbnVtYmVyO1xuICAgIGJsb2NrX2hhc2g6IHN0cmluZztcbiAgICBibG9ja190aW1lOiBudW1iZXI7XG4gIH07XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRG9nZVR4SW5wdXQge1xuICB0eElkOiBzdHJpbmc7XG4gIGluZGV4OiBudW1iZXI7XG4gIHNjcmlwdFB1YktleTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvZ2VUeE91dHB1dCB7XG4gIHNjcmlwdFB1YktleTogc3RyaW5nO1xuICB2YWx1ZTogYmlnaW50O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvZ2VUeCB7XG4gIGlkOiBzdHJpbmc7XG4gIGlucHV0czogRG9nZVR4SW5wdXRbXTtcbiAgb3V0cHV0czogRG9nZVR4T3V0cHV0W107XG59XG4iXX0=
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { OpReturnData } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Converts a Dogecoin address to its corresponding output script
|
|
4
|
+
* @param addr The Dogecoin address to convert
|
|
5
|
+
* @returns The output script as a hex string
|
|
6
|
+
*/
|
|
7
|
+
export declare const addressToOutputScript: (addr: string) => string;
|
|
8
|
+
/**
|
|
9
|
+
* extracts rosen data from OP_RETURN box script pub key
|
|
10
|
+
* @param scriptPubKeyHex
|
|
11
|
+
*/
|
|
12
|
+
export declare const parseRosenData: (scriptPubKeyHex: string) => OpReturnData;
|
|
13
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../lib/getRosenData/doge/utils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAevC;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,SAAU,MAAM,KAAG,MAEpD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,cAAc,oBAAqB,MAAM,KAAG,YA4CxD,CAAC"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { decodeAddress } from '@rosen-bridge/address-codec';
|
|
2
|
+
import { SUPPORTED_CHAINS } from '../const';
|
|
3
|
+
import { address } from 'bitcoinjs-lib';
|
|
4
|
+
const dogecoinNetwork = {
|
|
5
|
+
messagePrefix: '\x19Dogecoin Signed Message:\n',
|
|
6
|
+
bech32: 'dc',
|
|
7
|
+
bip32: {
|
|
8
|
+
public: 0x02facafd,
|
|
9
|
+
private: 0x02fac398,
|
|
10
|
+
},
|
|
11
|
+
pubKeyHash: 0x1e,
|
|
12
|
+
scriptHash: 0x16,
|
|
13
|
+
wif: 0x9e,
|
|
14
|
+
};
|
|
15
|
+
/**
|
|
16
|
+
* Converts a Dogecoin address to its corresponding output script
|
|
17
|
+
* @param addr The Dogecoin address to convert
|
|
18
|
+
* @returns The output script as a hex string
|
|
19
|
+
*/
|
|
20
|
+
export const addressToOutputScript = (addr) => {
|
|
21
|
+
return address.toOutputScript(addr, dogecoinNetwork).toString('hex');
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* extracts rosen data from OP_RETURN box script pub key
|
|
25
|
+
* @param scriptPubKeyHex
|
|
26
|
+
*/
|
|
27
|
+
export const parseRosenData = (scriptPubKeyHex) => {
|
|
28
|
+
// check OP_RETURN opcode
|
|
29
|
+
if (scriptPubKeyHex.slice(0, 2) !== '6a')
|
|
30
|
+
throw Error(`script does not start with OP_RETURN opcode (6a)`);
|
|
31
|
+
// check script length (should not use more than one OP_RETURN)
|
|
32
|
+
const dataLength = scriptPubKeyHex.slice(2, 4);
|
|
33
|
+
if (parseInt(dataLength, 16) + 2 !== scriptPubKeyHex.length / 2)
|
|
34
|
+
throw Error(`script length is unexpected [${parseInt(dataLength, 16) + 3} !== ${scriptPubKeyHex.length / 2}]`);
|
|
35
|
+
// parse toChain
|
|
36
|
+
const toChainHex = scriptPubKeyHex.slice(4, 6);
|
|
37
|
+
const toChainCode = parseInt(toChainHex, 16);
|
|
38
|
+
if (toChainCode >= SUPPORTED_CHAINS.length)
|
|
39
|
+
throw Error(`invalid toChain code, found [${toChainCode}] but only [${SUPPORTED_CHAINS.length}] chains are supported`);
|
|
40
|
+
const toChain = SUPPORTED_CHAINS[toChainCode];
|
|
41
|
+
// parse bridgeFee
|
|
42
|
+
const bridgeFeeHex = scriptPubKeyHex.slice(6, 22);
|
|
43
|
+
const bridgeFee = BigInt('0x' + bridgeFeeHex).toString();
|
|
44
|
+
// parse networkFee
|
|
45
|
+
const networkFeeHex = scriptPubKeyHex.slice(22, 38);
|
|
46
|
+
const networkFee = BigInt('0x' + networkFeeHex).toString();
|
|
47
|
+
// parse toAddress
|
|
48
|
+
const addressLengthCode = scriptPubKeyHex.slice(38, 40);
|
|
49
|
+
const addressHex = scriptPubKeyHex.slice(40, 40 + parseInt(addressLengthCode, 16) * 2);
|
|
50
|
+
const toAddress = decodeAddress(toChain, addressHex);
|
|
51
|
+
return {
|
|
52
|
+
toChain,
|
|
53
|
+
toAddress,
|
|
54
|
+
bridgeFee,
|
|
55
|
+
networkFee,
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvZ2V0Um9zZW5EYXRhL2RvZ2UvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBQzVELE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUU1QyxPQUFPLEVBQUUsT0FBTyxFQUFZLE1BQU0sZUFBZSxDQUFDO0FBRWxELE1BQU0sZUFBZSxHQUFHO0lBQ3RCLGFBQWEsRUFBRSxnQ0FBZ0M7SUFDL0MsTUFBTSxFQUFFLElBQUk7SUFDWixLQUFLLEVBQUU7UUFDTCxNQUFNLEVBQUUsVUFBVTtRQUNsQixPQUFPLEVBQUUsVUFBVTtLQUNwQjtJQUNELFVBQVUsRUFBRSxJQUFJO0lBQ2hCLFVBQVUsRUFBRSxJQUFJO0lBQ2hCLEdBQUcsRUFBRSxJQUFJO0NBQ1YsQ0FBQztBQUVGOzs7O0dBSUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLElBQVksRUFBVSxFQUFFO0lBQzVELE9BQU8sT0FBTyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZFLENBQUMsQ0FBQztBQUVGOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLGVBQXVCLEVBQWdCLEVBQUU7SUFDdEUseUJBQXlCO0lBQ3pCLElBQUksZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssSUFBSTtRQUN0QyxNQUFNLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQ2xFLCtEQUErRDtJQUMvRCxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMvQyxJQUFJLFFBQVEsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FBQztRQUM3RCxNQUFNLEtBQUssQ0FDVCxnQ0FBZ0MsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLFFBQzFELGVBQWUsQ0FBQyxNQUFNLEdBQUcsQ0FDM0IsR0FBRyxDQUNKLENBQUM7SUFFSixnQkFBZ0I7SUFDaEIsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUM3QyxJQUFJLFdBQVcsSUFBSSxnQkFBZ0IsQ0FBQyxNQUFNO1FBQ3hDLE1BQU0sS0FBSyxDQUNULGdDQUFnQyxXQUFXLGVBQWUsZ0JBQWdCLENBQUMsTUFBTSx3QkFBd0IsQ0FDMUcsQ0FBQztJQUNKLE1BQU0sT0FBTyxHQUFHLGdCQUFnQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBRTlDLGtCQUFrQjtJQUNsQixNQUFNLFlBQVksR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNsRCxNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLFlBQVksQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRXpELG1CQUFtQjtJQUNuQixNQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNwRCxNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBRTNELGtCQUFrQjtJQUNsQixNQUFNLGlCQUFpQixHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxLQUFLLENBQ3RDLEVBQUUsRUFDRixFQUFFLEdBQUcsUUFBUSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FDekMsQ0FBQztJQUNGLE1BQU0sU0FBUyxHQUFHLGFBQWEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFckQsT0FBTztRQUNMLE9BQU87UUFDUCxTQUFTO1FBQ1QsU0FBUztRQUNULFVBQVU7S0FDWCxDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZGVjb2RlQWRkcmVzcyB9IGZyb20gJ0Byb3Nlbi1icmlkZ2UvYWRkcmVzcy1jb2RlYyc7XG5pbXBvcnQgeyBTVVBQT1JURURfQ0hBSU5TIH0gZnJvbSAnLi4vY29uc3QnO1xuaW1wb3J0IHsgT3BSZXR1cm5EYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBhZGRyZXNzLCBuZXR3b3JrcyB9IGZyb20gJ2JpdGNvaW5qcy1saWInO1xuXG5jb25zdCBkb2dlY29pbk5ldHdvcmsgPSB7XG4gIG1lc3NhZ2VQcmVmaXg6ICdcXHgxOURvZ2Vjb2luIFNpZ25lZCBNZXNzYWdlOlxcbicsXG4gIGJlY2gzMjogJ2RjJyxcbiAgYmlwMzI6IHtcbiAgICBwdWJsaWM6IDB4MDJmYWNhZmQsXG4gICAgcHJpdmF0ZTogMHgwMmZhYzM5OCxcbiAgfSxcbiAgcHViS2V5SGFzaDogMHgxZSxcbiAgc2NyaXB0SGFzaDogMHgxNixcbiAgd2lmOiAweDllLFxufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBhIERvZ2Vjb2luIGFkZHJlc3MgdG8gaXRzIGNvcnJlc3BvbmRpbmcgb3V0cHV0IHNjcmlwdFxuICogQHBhcmFtIGFkZHIgVGhlIERvZ2Vjb2luIGFkZHJlc3MgdG8gY29udmVydFxuICogQHJldHVybnMgVGhlIG91dHB1dCBzY3JpcHQgYXMgYSBoZXggc3RyaW5nXG4gKi9cbmV4cG9ydCBjb25zdCBhZGRyZXNzVG9PdXRwdXRTY3JpcHQgPSAoYWRkcjogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgcmV0dXJuIGFkZHJlc3MudG9PdXRwdXRTY3JpcHQoYWRkciwgZG9nZWNvaW5OZXR3b3JrKS50b1N0cmluZygnaGV4Jyk7XG59O1xuXG4vKipcbiAqIGV4dHJhY3RzIHJvc2VuIGRhdGEgZnJvbSBPUF9SRVRVUk4gYm94IHNjcmlwdCBwdWIga2V5XG4gKiBAcGFyYW0gc2NyaXB0UHViS2V5SGV4XG4gKi9cbmV4cG9ydCBjb25zdCBwYXJzZVJvc2VuRGF0YSA9IChzY3JpcHRQdWJLZXlIZXg6IHN0cmluZyk6IE9wUmV0dXJuRGF0YSA9PiB7XG4gIC8vIGNoZWNrIE9QX1JFVFVSTiBvcGNvZGVcbiAgaWYgKHNjcmlwdFB1YktleUhleC5zbGljZSgwLCAyKSAhPT0gJzZhJylcbiAgICB0aHJvdyBFcnJvcihgc2NyaXB0IGRvZXMgbm90IHN0YXJ0IHdpdGggT1BfUkVUVVJOIG9wY29kZSAoNmEpYCk7XG4gIC8vIGNoZWNrIHNjcmlwdCBsZW5ndGggKHNob3VsZCBub3QgdXNlIG1vcmUgdGhhbiBvbmUgT1BfUkVUVVJOKVxuICBjb25zdCBkYXRhTGVuZ3RoID0gc2NyaXB0UHViS2V5SGV4LnNsaWNlKDIsIDQpO1xuICBpZiAocGFyc2VJbnQoZGF0YUxlbmd0aCwgMTYpICsgMiAhPT0gc2NyaXB0UHViS2V5SGV4Lmxlbmd0aCAvIDIpXG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBgc2NyaXB0IGxlbmd0aCBpcyB1bmV4cGVjdGVkIFske3BhcnNlSW50KGRhdGFMZW5ndGgsIDE2KSArIDN9ICE9PSAke1xuICAgICAgICBzY3JpcHRQdWJLZXlIZXgubGVuZ3RoIC8gMlxuICAgICAgfV1gXG4gICAgKTtcblxuICAvLyBwYXJzZSB0b0NoYWluXG4gIGNvbnN0IHRvQ2hhaW5IZXggPSBzY3JpcHRQdWJLZXlIZXguc2xpY2UoNCwgNik7XG4gIGNvbnN0IHRvQ2hhaW5Db2RlID0gcGFyc2VJbnQodG9DaGFpbkhleCwgMTYpO1xuICBpZiAodG9DaGFpbkNvZGUgPj0gU1VQUE9SVEVEX0NIQUlOUy5sZW5ndGgpXG4gICAgdGhyb3cgRXJyb3IoXG4gICAgICBgaW52YWxpZCB0b0NoYWluIGNvZGUsIGZvdW5kIFske3RvQ2hhaW5Db2RlfV0gYnV0IG9ubHkgWyR7U1VQUE9SVEVEX0NIQUlOUy5sZW5ndGh9XSBjaGFpbnMgYXJlIHN1cHBvcnRlZGBcbiAgICApO1xuICBjb25zdCB0b0NoYWluID0gU1VQUE9SVEVEX0NIQUlOU1t0b0NoYWluQ29kZV07XG5cbiAgLy8gcGFyc2UgYnJpZGdlRmVlXG4gIGNvbnN0IGJyaWRnZUZlZUhleCA9IHNjcmlwdFB1YktleUhleC5zbGljZSg2LCAyMik7XG4gIGNvbnN0IGJyaWRnZUZlZSA9IEJpZ0ludCgnMHgnICsgYnJpZGdlRmVlSGV4KS50b1N0cmluZygpO1xuXG4gIC8vIHBhcnNlIG5ldHdvcmtGZWVcbiAgY29uc3QgbmV0d29ya0ZlZUhleCA9IHNjcmlwdFB1YktleUhleC5zbGljZSgyMiwgMzgpO1xuICBjb25zdCBuZXR3b3JrRmVlID0gQmlnSW50KCcweCcgKyBuZXR3b3JrRmVlSGV4KS50b1N0cmluZygpO1xuXG4gIC8vIHBhcnNlIHRvQWRkcmVzc1xuICBjb25zdCBhZGRyZXNzTGVuZ3RoQ29kZSA9IHNjcmlwdFB1YktleUhleC5zbGljZSgzOCwgNDApO1xuICBjb25zdCBhZGRyZXNzSGV4ID0gc2NyaXB0UHViS2V5SGV4LnNsaWNlKFxuICAgIDQwLFxuICAgIDQwICsgcGFyc2VJbnQoYWRkcmVzc0xlbmd0aENvZGUsIDE2KSAqIDJcbiAgKTtcbiAgY29uc3QgdG9BZGRyZXNzID0gZGVjb2RlQWRkcmVzcyh0b0NoYWluLCBhZGRyZXNzSGV4KTtcblxuICByZXR1cm4ge1xuICAgIHRvQ2hhaW4sXG4gICAgdG9BZGRyZXNzLFxuICAgIGJyaWRnZUZlZSxcbiAgICBuZXR3b3JrRmVlLFxuICB9O1xufTtcbiJdfQ==
|
|
@@ -4,26 +4,19 @@ import { NodeOutputBox, NodeTransaction } from './types';
|
|
|
4
4
|
import { RosenTokens } from '@rosen-bridge/tokens';
|
|
5
5
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
6
6
|
export declare class ErgoNodeRosenExtractor extends AbstractRosenDataExtractor<NodeTransaction> {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
* @param box transaction output
|
|
22
|
-
* @param toChain event target chain
|
|
23
|
-
*/
|
|
24
|
-
getAssetTransformation: (
|
|
25
|
-
box: NodeOutputBox,
|
|
26
|
-
toChain: string
|
|
27
|
-
) => TokenTransformation | undefined;
|
|
7
|
+
readonly chain = "ergo";
|
|
8
|
+
lockErgoTree: string;
|
|
9
|
+
constructor(lockAddress: string, tokens: RosenTokens, logger?: AbstractLogger);
|
|
10
|
+
/**
|
|
11
|
+
* extracts RosenData from given lock transaction in Node format
|
|
12
|
+
* @param transaction the lock transaction in Node format
|
|
13
|
+
*/
|
|
14
|
+
extractRawData: (transaction: NodeTransaction) => RosenData | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* extracts and builds token transformation from NodeOutputBox and tokenMap
|
|
17
|
+
* @param box transaction output
|
|
18
|
+
* @param toChain event target chain
|
|
19
|
+
*/
|
|
20
|
+
getAssetTransformation: (box: NodeOutputBox, toChain: string) => TokenTransformation | undefined;
|
|
28
21
|
}
|
|
29
|
-
//# sourceMappingURL=ErgoNodeRosenExtractor.d.ts.map
|
|
22
|
+
//# sourceMappingURL=ErgoNodeRosenExtractor.d.ts.map
|
|
@@ -3,17 +3,13 @@ import AbstractRosenDataExtractor from '../abstract/AbstractRosenDataExtractor';
|
|
|
3
3
|
import { RosenTokens } from '@rosen-bridge/tokens';
|
|
4
4
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
5
5
|
export declare class ErgoRosenExtractor extends AbstractRosenDataExtractor<string> {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
* extracts RosenData from given lock transaction in wasm sigma serialized bytes
|
|
15
|
-
* @param serializedTransaction the sigma serialized bytes of transaction
|
|
16
|
-
*/
|
|
17
|
-
extractRawData: (serializedTransaction: string) => RosenData | undefined;
|
|
6
|
+
readonly chain = "ergo";
|
|
7
|
+
private nodeExtractor;
|
|
8
|
+
constructor(lockAddress: string, tokens: RosenTokens, logger?: AbstractLogger);
|
|
9
|
+
/**
|
|
10
|
+
* extracts RosenData from given lock transaction in wasm sigma serialized bytes
|
|
11
|
+
* @param serializedTransaction the sigma serialized bytes of transaction
|
|
12
|
+
*/
|
|
13
|
+
extractRawData: (serializedTransaction: string) => RosenData | undefined;
|
|
18
14
|
}
|
|
19
|
-
//# sourceMappingURL=ErgoRosenExtractor.d.ts.map
|
|
15
|
+
//# sourceMappingURL=ErgoRosenExtractor.d.ts.map
|
|
@@ -1,37 +1,37 @@
|
|
|
1
1
|
interface NodeAsset {
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
tokenId: string;
|
|
3
|
+
amount: bigint;
|
|
4
4
|
}
|
|
5
5
|
interface NodeAdditionalRegisters {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
6
|
+
R4?: string;
|
|
7
|
+
R5?: string;
|
|
8
|
+
R6?: string;
|
|
9
|
+
R7?: string;
|
|
10
|
+
R8?: string;
|
|
11
|
+
R9?: string;
|
|
12
12
|
}
|
|
13
13
|
interface NodeOutputBox {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
14
|
+
boxId: string;
|
|
15
|
+
value: bigint;
|
|
16
|
+
ergoTree: string;
|
|
17
|
+
creationHeight: bigint | number;
|
|
18
|
+
assets?: Array<NodeAsset>;
|
|
19
|
+
additionalRegisters?: NodeAdditionalRegisters;
|
|
20
|
+
transactionId: string;
|
|
21
|
+
index: bigint | number;
|
|
22
22
|
}
|
|
23
23
|
interface NodeInputBox {
|
|
24
|
-
|
|
24
|
+
boxId: string;
|
|
25
25
|
}
|
|
26
26
|
interface NodeDataInput {
|
|
27
|
-
|
|
27
|
+
boxId: string;
|
|
28
28
|
}
|
|
29
29
|
interface NodeTransaction {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
30
|
+
id: string;
|
|
31
|
+
inputs: Array<NodeInputBox>;
|
|
32
|
+
dataInputs: Array<NodeDataInput>;
|
|
33
|
+
outputs: Array<NodeOutputBox>;
|
|
34
|
+
size?: bigint;
|
|
35
35
|
}
|
|
36
36
|
export { NodeOutputBox, NodeTransaction };
|
|
37
|
-
//# sourceMappingURL=types.d.ts.map
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -5,19 +5,13 @@ import { RosenTokens } from '@rosen-bridge/tokens';
|
|
|
5
5
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
6
6
|
import { EvmRpcRosenExtractor } from './EvmRpcRosenExtractor';
|
|
7
7
|
export declare class EvmEthersRosenExtractor extends AbstractRosenDataExtractor<TransactionResponse> {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
);
|
|
17
|
-
/**
|
|
18
|
-
* extracts RosenData from given lock transaction in ethers TransactionResponse format
|
|
19
|
-
* @param txRes the lock transaction in ethers TransactionResponse format
|
|
20
|
-
*/
|
|
21
|
-
extractRawData: (txRes: TransactionResponse) => RosenData | undefined;
|
|
8
|
+
readonly chain: string;
|
|
9
|
+
protected rpcExtractor: EvmRpcRosenExtractor;
|
|
10
|
+
constructor(lockAddress: string, tokens: RosenTokens, chain: string, nativeToken: string, logger?: AbstractLogger);
|
|
11
|
+
/**
|
|
12
|
+
* extracts RosenData from given lock transaction in ethers TransactionResponse format
|
|
13
|
+
* @param txRes the lock transaction in ethers TransactionResponse format
|
|
14
|
+
*/
|
|
15
|
+
extractRawData: (txRes: TransactionResponse) => RosenData | undefined;
|
|
22
16
|
}
|
|
23
|
-
//# sourceMappingURL=EvmEthersRosenExtractor.d.ts.map
|
|
17
|
+
//# sourceMappingURL=EvmEthersRosenExtractor.d.ts.map
|
|
@@ -4,19 +4,13 @@ import { RosenTokens } from '@rosen-bridge/tokens';
|
|
|
4
4
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
5
5
|
import { EvmRpcRosenExtractor } from './EvmRpcRosenExtractor';
|
|
6
6
|
export declare class EvmRosenExtractor extends AbstractRosenDataExtractor<string> {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
);
|
|
16
|
-
/**
|
|
17
|
-
* extracts RosenData from given lock transaction in ethers Transaction format
|
|
18
|
-
* @param serializedTransaction signed serialized transaction in ethers Transaction format
|
|
19
|
-
*/
|
|
20
|
-
extractRawData: (serializedTransaction: string) => RosenData | undefined;
|
|
7
|
+
readonly chain: string;
|
|
8
|
+
protected rpcExtractor: EvmRpcRosenExtractor;
|
|
9
|
+
constructor(lockAddress: string, tokens: RosenTokens, chain: string, nativeToken: string, logger?: AbstractLogger);
|
|
10
|
+
/**
|
|
11
|
+
* extracts RosenData from given lock transaction in ethers Transaction format
|
|
12
|
+
* @param serializedTransaction signed serialized transaction in ethers Transaction format
|
|
13
|
+
*/
|
|
14
|
+
extractRawData: (serializedTransaction: string) => RosenData | undefined;
|
|
21
15
|
}
|
|
22
|
-
//# sourceMappingURL=EvmRosenExtractor.d.ts.map
|
|
16
|
+
//# sourceMappingURL=EvmRosenExtractor.d.ts.map
|
|
@@ -4,29 +4,23 @@ import { Transaction } from 'ethers';
|
|
|
4
4
|
import { RosenTokens } from '@rosen-bridge/tokens';
|
|
5
5
|
import { AbstractLogger } from '@rosen-bridge/abstract-logger';
|
|
6
6
|
export declare class EvmRpcRosenExtractor extends AbstractRosenDataExtractor<Transaction> {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
* 3. bytes from 5 to 37 must be the lock address
|
|
26
|
-
* 4. bytes from 37 to 69 show the amount
|
|
27
|
-
* 5. bytes after 69 must represent a valid CallDataRosenData
|
|
28
|
-
* @param transaction the lock transaction in ethers Transaction object
|
|
29
|
-
*/
|
|
30
|
-
extractRawData: (transaction: Transaction) => RosenData | undefined;
|
|
7
|
+
readonly chain: string;
|
|
8
|
+
protected nativeToken: string;
|
|
9
|
+
constructor(lockAddress: string, tokens: RosenTokens, chain: string, nativeToken: string, logger?: AbstractLogger);
|
|
10
|
+
/**
|
|
11
|
+
* extracts RosenData from given lock transaction in ethers Transaction object
|
|
12
|
+
* checks:
|
|
13
|
+
* Native token transfer:
|
|
14
|
+
* 1. `to` must be the lock address
|
|
15
|
+
* 2. the entire calldata must represent a valid CallDataRosenData
|
|
16
|
+
* ERC20 transfer:
|
|
17
|
+
* 1. `to` address is one of the supported assets
|
|
18
|
+
* 2. first four bytes of the call data indicate `transfer` function call: a9059cbb
|
|
19
|
+
* 3. bytes from 5 to 37 must be the lock address
|
|
20
|
+
* 4. bytes from 37 to 69 show the amount
|
|
21
|
+
* 5. bytes after 69 must represent a valid CallDataRosenData
|
|
22
|
+
* @param transaction the lock transaction in ethers Transaction object
|
|
23
|
+
*/
|
|
24
|
+
extractRawData: (transaction: Transaction) => RosenData | undefined;
|
|
31
25
|
}
|
|
32
|
-
//# sourceMappingURL=EvmRpcRosenExtractor.d.ts.map
|
|
26
|
+
//# sourceMappingURL=EvmRpcRosenExtractor.d.ts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
interface CallDataRosenData {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
toChain: string;
|
|
3
|
+
toAddress: string;
|
|
4
|
+
bridgeFee: string;
|
|
5
|
+
networkFee: string;
|
|
6
6
|
}
|
|
7
7
|
/**
|
|
8
8
|
* extracts rosen data from transaction's remaining call data
|
|
@@ -10,4 +10,4 @@ interface CallDataRosenData {
|
|
|
10
10
|
*/
|
|
11
11
|
export declare const parseRosenData: (callData: string) => CallDataRosenData;
|
|
12
12
|
export {};
|
|
13
|
-
//# sourceMappingURL=utils.d.ts.map
|
|
13
|
+
//# sourceMappingURL=utils.d.ts.map
|
package/dist/lib/index.d.ts
CHANGED
|
@@ -13,4 +13,4 @@ export { CardanoGraphQLRosenExtractor } from './getRosenData/cardano/CardanoGrap
|
|
|
13
13
|
export { ErgoRosenExtractor } from './getRosenData/ergo/ErgoRosenExtractor';
|
|
14
14
|
export { ErgoNodeRosenExtractor } from './getRosenData/ergo/ErgoNodeRosenExtractor';
|
|
15
15
|
export { RosenData } from './getRosenData/abstract/types';
|
|
16
|
-
//# sourceMappingURL=index.d.ts.map
|
|
16
|
+
//# sourceMappingURL=index.d.ts.map
|