@bitgo-beta/sdk-coin-flrp 0.0.0-semantic-release-managed
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/.eslintignore +5 -0
- package/.eslintrc.json +7 -0
- package/.mocharc.yml +8 -0
- package/CHANGELOG.md +0 -0
- package/LICENSE +191 -0
- package/dist/src/flrp.d.ts +91 -0
- package/dist/src/flrp.d.ts.map +1 -0
- package/dist/src/flrp.js +343 -0
- package/dist/src/iface.d.ts +25 -0
- package/dist/src/iface.d.ts.map +1 -0
- package/dist/src/iface.js +3 -0
- package/dist/src/index.d.ts +6 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +45 -0
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts +26 -0
- package/dist/src/lib/atomicInCTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/atomicInCTransactionBuilder.js +64 -0
- package/dist/src/lib/atomicTransactionBuilder.d.ts +93 -0
- package/dist/src/lib/atomicTransactionBuilder.d.ts.map +1 -0
- package/dist/src/lib/atomicTransactionBuilder.js +252 -0
- package/dist/src/lib/constants.d.ts +11 -0
- package/dist/src/lib/constants.d.ts.map +1 -0
- package/dist/src/lib/constants.js +17 -0
- package/dist/src/lib/errors.d.ts +8 -0
- package/dist/src/lib/errors.d.ts.map +1 -0
- package/dist/src/lib/errors.js +19 -0
- package/dist/src/lib/exportInCTxBuilder.d.ts +77 -0
- package/dist/src/lib/exportInCTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/exportInCTxBuilder.js +170 -0
- package/dist/src/lib/exportInPTxBuilder.d.ts +30 -0
- package/dist/src/lib/exportInPTxBuilder.d.ts.map +1 -0
- package/dist/src/lib/exportInPTxBuilder.js +56 -0
- package/dist/src/lib/iface.d.ts +119 -0
- package/dist/src/lib/iface.d.ts.map +1 -0
- package/dist/src/lib/iface.js +22 -0
- package/dist/src/lib/index.d.ts +7 -0
- package/dist/src/lib/index.d.ts.map +1 -0
- package/dist/src/lib/index.js +30 -0
- package/dist/src/lib/keyPair.d.ts +58 -0
- package/dist/src/lib/keyPair.d.ts.map +1 -0
- package/dist/src/lib/keyPair.js +142 -0
- package/dist/src/lib/transaction.d.ts +111 -0
- package/dist/src/lib/transaction.d.ts.map +1 -0
- package/dist/src/lib/transaction.js +321 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts +37 -0
- package/dist/src/lib/transactionBuilderFactory.d.ts.map +1 -0
- package/dist/src/lib/transactionBuilderFactory.js +91 -0
- package/dist/src/lib/utils.d.ts +215 -0
- package/dist/src/lib/utils.d.ts.map +1 -0
- package/dist/src/lib/utils.js +487 -0
- package/dist/src/register.d.ts +3 -0
- package/dist/src/register.d.ts.map +1 -0
- package/dist/src/register.js +11 -0
- package/dist/src/tflrp.d.ts +8 -0
- package/dist/src/tflrp.d.ts.map +1 -0
- package/dist/src/tflrp.js +14 -0
- package/dist/test/unit/flrp.d.ts +2 -0
- package/dist/test/unit/flrp.d.ts.map +1 -0
- package/dist/test/unit/flrp.js +118 -0
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts +2 -0
- package/dist/test/unit/lib/atomicTransactionBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/atomicTransactionBuilder.js +222 -0
- package/dist/test/unit/lib/exportTxBuilder.d.ts +2 -0
- package/dist/test/unit/lib/exportTxBuilder.d.ts.map +1 -0
- package/dist/test/unit/lib/exportTxBuilder.js +45 -0
- package/dist/test/unit/lib/transaction.d.ts +2 -0
- package/dist/test/unit/lib/transaction.d.ts.map +1 -0
- package/dist/test/unit/lib/transaction.js +460 -0
- package/dist/test/unit/lib/utils.d.ts +2 -0
- package/dist/test/unit/lib/utils.d.ts.map +1 -0
- package/dist/test/unit/lib/utils.js +286 -0
- package/dist/test/unit/smoke.d.ts +2 -0
- package/dist/test/unit/smoke.d.ts.map +1 -0
- package/dist/test/unit/smoke.js +23 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
2
|
+
import { TransactionType, BaseTransaction } from '@bitgo-beta/sdk-core';
|
|
3
|
+
import { Credential, TransferableInput, TransferableOutput } from '@flarenetwork/flarejs';
|
|
4
|
+
import { TransactionExplanation, DecodedUtxoObj } from './iface';
|
|
5
|
+
/**
|
|
6
|
+
* Flare P-chain atomic transaction builder with FlareJS credential support.
|
|
7
|
+
* This provides the foundation for building Flare P-chain transactions with proper
|
|
8
|
+
* credential handling using FlareJS Credential and Signature classes.
|
|
9
|
+
*/
|
|
10
|
+
export declare abstract class AtomicTransactionBuilder {
|
|
11
|
+
protected readonly _coinConfig: Readonly<CoinConfig>;
|
|
12
|
+
protected _externalChainId: Buffer | undefined;
|
|
13
|
+
protected _utxos: DecodedUtxoObj[];
|
|
14
|
+
protected transaction: {
|
|
15
|
+
_network: Record<string, unknown>;
|
|
16
|
+
_networkID: number;
|
|
17
|
+
_blockchainID: Buffer;
|
|
18
|
+
_assetId: Buffer;
|
|
19
|
+
_fromAddresses: string[];
|
|
20
|
+
_to: string[];
|
|
21
|
+
_locktime: bigint;
|
|
22
|
+
_threshold: number;
|
|
23
|
+
_fee: {
|
|
24
|
+
fee: string;
|
|
25
|
+
feeRate?: string;
|
|
26
|
+
size?: number;
|
|
27
|
+
};
|
|
28
|
+
hasCredentials: boolean;
|
|
29
|
+
_tx?: unknown;
|
|
30
|
+
setTransaction: (tx: unknown) => void;
|
|
31
|
+
};
|
|
32
|
+
constructor(coinConfig: Readonly<CoinConfig>);
|
|
33
|
+
protected abstract get transactionType(): TransactionType;
|
|
34
|
+
validateAmount(amount: bigint): void;
|
|
35
|
+
/**
|
|
36
|
+
* Validates that credentials array is properly formed
|
|
37
|
+
* @param credentials - Array of credentials to validate
|
|
38
|
+
*/
|
|
39
|
+
protected validateCredentials(credentials: Credential[]): void;
|
|
40
|
+
/**
|
|
41
|
+
* Creates inputs, outputs, and credentials for Flare P-chain atomic transactions.
|
|
42
|
+
* Based on AVAX P-chain implementation adapted for FlareJS.
|
|
43
|
+
*
|
|
44
|
+
* Note: This is a simplified implementation that creates the core structure.
|
|
45
|
+
* The FlareJS type system integration will be refined in future iterations.
|
|
46
|
+
*
|
|
47
|
+
* @param total - Total amount needed including fees
|
|
48
|
+
* @returns Object containing TransferableInput[], TransferableOutput[], and Credential[]
|
|
49
|
+
*/
|
|
50
|
+
protected createInputOutput(total: bigint): {
|
|
51
|
+
inputs: TransferableInput[];
|
|
52
|
+
outputs: TransferableOutput[];
|
|
53
|
+
credentials: Credential[];
|
|
54
|
+
};
|
|
55
|
+
/**
|
|
56
|
+
* Set UTXOs for the transaction. This is required for creating inputs and outputs.
|
|
57
|
+
*
|
|
58
|
+
* @param utxos - Array of decoded UTXO objects
|
|
59
|
+
* @returns this builder instance for chaining
|
|
60
|
+
*/
|
|
61
|
+
utxos(utxos: DecodedUtxoObj[]): this;
|
|
62
|
+
/**
|
|
63
|
+
* Flare equivalent of Avalanche's SelectCredentialClass
|
|
64
|
+
* Creates a credential with the provided signatures
|
|
65
|
+
*
|
|
66
|
+
* @param credentialId - The credential ID (not used in FlareJS but kept for compatibility)
|
|
67
|
+
* @param signatures - Array of signature hex strings or empty strings for placeholders
|
|
68
|
+
* @returns Credential instance
|
|
69
|
+
*/
|
|
70
|
+
protected createFlareCredential(_credentialId: number, signatures: string[]): Credential;
|
|
71
|
+
/**
|
|
72
|
+
* Base initBuilder used by concrete builders. For now just returns this so fluent API works.
|
|
73
|
+
*/
|
|
74
|
+
initBuilder(_tx: unknown): this;
|
|
75
|
+
/**
|
|
76
|
+
* Sign transaction with private key (placeholder implementation)
|
|
77
|
+
* TODO: Implement proper FlareJS signing
|
|
78
|
+
*/
|
|
79
|
+
sign(_params: {
|
|
80
|
+
key: string;
|
|
81
|
+
}): this;
|
|
82
|
+
/**
|
|
83
|
+
* Build the transaction (placeholder implementation)
|
|
84
|
+
* TODO: Implement proper FlareJS transaction building
|
|
85
|
+
*/
|
|
86
|
+
build(): Promise<BaseTransaction>;
|
|
87
|
+
/**
|
|
88
|
+
* Parse and explain a transaction from hex (placeholder implementation)
|
|
89
|
+
* TODO: Implement proper FlareJS transaction parsing
|
|
90
|
+
*/
|
|
91
|
+
explainTransaction(): TransactionExplanation;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=atomicTransactionBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"atomicTransactionBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/atomicTransactionBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAyB,eAAe,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC/F,OAAO,EAAE,UAAU,EAAa,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AACrG,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAKjE;;;;GAIG;AACH,8BAAsB,wBAAwB;IAC5C,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;IAErD,SAAS,CAAC,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC;IAE/C,SAAS,CAAC,MAAM,EAAE,cAAc,EAAE,CAAM;IAExC,SAAS,CAAC,WAAW,EAAE;QACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;QACjB,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,GAAG,EAAE,MAAM,EAAE,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,IAAI,EAAE;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;QACvD,cAAc,EAAE,OAAO,CAAC;QACxB,GAAG,CAAC,EAAE,OAAO,CAAC;QACd,cAAc,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,IAAI,CAAC;KACvC,CAcC;gBAEU,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI5C,SAAS,CAAC,QAAQ,KAAK,eAAe,IAAI,eAAe,CAAC;IAE1D,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAMpC;;;OAGG;IACH,SAAS,CAAC,mBAAmB,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,IAAI;IAY9D;;;;;;;;;OASG;IACH,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG;QAC1C,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAC5B,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAC9B,WAAW,EAAE,UAAU,EAAE,CAAC;KAC3B;IAmED;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE,GAAG,IAAI;IAKpC;;;;;;;OAOG;IACH,SAAS,CAAC,qBAAqB,CAAC,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,UAAU;IAmDxF;;OAEG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;IAI/B;;;OAGG;IACH,IAAI,CAAC,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAOpC;;;OAGG;IACG,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;IAuCvC;;;OAGG;IACH,kBAAkB,IAAI,sBAAsB;CAe7C"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AtomicTransactionBuilder = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
const flarejs_1 = require("@flarenetwork/flarejs");
|
|
6
|
+
// Constants for signature handling
|
|
7
|
+
const SECP256K1_SIGNATURE_LENGTH = 65;
|
|
8
|
+
/**
|
|
9
|
+
* Flare P-chain atomic transaction builder with FlareJS credential support.
|
|
10
|
+
* This provides the foundation for building Flare P-chain transactions with proper
|
|
11
|
+
* credential handling using FlareJS Credential and Signature classes.
|
|
12
|
+
*/
|
|
13
|
+
class AtomicTransactionBuilder {
|
|
14
|
+
constructor(coinConfig) {
|
|
15
|
+
this._utxos = [];
|
|
16
|
+
this.transaction = {
|
|
17
|
+
_network: {},
|
|
18
|
+
_networkID: 0,
|
|
19
|
+
_blockchainID: Buffer.alloc(0),
|
|
20
|
+
_assetId: Buffer.alloc(0),
|
|
21
|
+
_fromAddresses: [],
|
|
22
|
+
_to: [],
|
|
23
|
+
_locktime: 0n,
|
|
24
|
+
_threshold: 1,
|
|
25
|
+
_fee: { fee: '0' },
|
|
26
|
+
hasCredentials: false,
|
|
27
|
+
setTransaction: function (_tx) {
|
|
28
|
+
this._tx = _tx;
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
this._coinConfig = coinConfig;
|
|
32
|
+
}
|
|
33
|
+
validateAmount(amount) {
|
|
34
|
+
if (amount <= 0n) {
|
|
35
|
+
throw new sdk_core_1.BuildTransactionError('Amount must be positive');
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Validates that credentials array is properly formed
|
|
40
|
+
* @param credentials - Array of credentials to validate
|
|
41
|
+
*/
|
|
42
|
+
validateCredentials(credentials) {
|
|
43
|
+
if (!Array.isArray(credentials)) {
|
|
44
|
+
throw new sdk_core_1.BuildTransactionError('Credentials must be an array');
|
|
45
|
+
}
|
|
46
|
+
credentials.forEach((credential, index) => {
|
|
47
|
+
if (!(credential instanceof flarejs_1.Credential)) {
|
|
48
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid credential at index ${index}`);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Creates inputs, outputs, and credentials for Flare P-chain atomic transactions.
|
|
54
|
+
* Based on AVAX P-chain implementation adapted for FlareJS.
|
|
55
|
+
*
|
|
56
|
+
* Note: This is a simplified implementation that creates the core structure.
|
|
57
|
+
* The FlareJS type system integration will be refined in future iterations.
|
|
58
|
+
*
|
|
59
|
+
* @param total - Total amount needed including fees
|
|
60
|
+
* @returns Object containing TransferableInput[], TransferableOutput[], and Credential[]
|
|
61
|
+
*/
|
|
62
|
+
createInputOutput(total) {
|
|
63
|
+
if (!this._utxos || this._utxos.length === 0) {
|
|
64
|
+
throw new sdk_core_1.BuildTransactionError('UTXOs are required for creating inputs and outputs');
|
|
65
|
+
}
|
|
66
|
+
const inputs = [];
|
|
67
|
+
const outputs = [];
|
|
68
|
+
const credentials = [];
|
|
69
|
+
let inputSum = 0n;
|
|
70
|
+
const addressIndices = {};
|
|
71
|
+
let nextAddressIndex = 0;
|
|
72
|
+
// Sort UTXOs by amount in descending order for optimal coin selection
|
|
73
|
+
const sortedUtxos = [...this._utxos].sort((a, b) => {
|
|
74
|
+
const amountA = BigInt(a.amount);
|
|
75
|
+
const amountB = BigInt(b.amount);
|
|
76
|
+
if (amountA > amountB)
|
|
77
|
+
return -1;
|
|
78
|
+
if (amountA < amountB)
|
|
79
|
+
return 1;
|
|
80
|
+
return 0;
|
|
81
|
+
});
|
|
82
|
+
// Process UTXOs to create inputs and credentials
|
|
83
|
+
for (const utxo of sortedUtxos) {
|
|
84
|
+
const utxoAmount = BigInt(utxo.amount);
|
|
85
|
+
if (inputSum >= total) {
|
|
86
|
+
break; // We have enough inputs
|
|
87
|
+
}
|
|
88
|
+
// TODO: Create proper FlareJS TransferableInput once type issues are resolved
|
|
89
|
+
// For now, we create a placeholder that demonstrates the structure
|
|
90
|
+
// The actual FlareJS integration will need proper UTXOID handling
|
|
91
|
+
// Track input sum
|
|
92
|
+
inputSum += utxoAmount;
|
|
93
|
+
// Track address indices for signature ordering (mimics AVAX pattern)
|
|
94
|
+
const addressIndexArray = [];
|
|
95
|
+
for (const address of utxo.addresses) {
|
|
96
|
+
if (!(address in addressIndices)) {
|
|
97
|
+
addressIndices[address] = nextAddressIndex++;
|
|
98
|
+
}
|
|
99
|
+
addressIndexArray.push(addressIndices[address]);
|
|
100
|
+
}
|
|
101
|
+
// Store address indices on the UTXO for credential creation
|
|
102
|
+
utxo.addressesIndex = addressIndexArray;
|
|
103
|
+
// Create credential with placeholder signatures
|
|
104
|
+
// In a real implementation, these would be actual signatures
|
|
105
|
+
const signatures = Array.from({ length: utxo.threshold }, () => '');
|
|
106
|
+
const credential = this.createFlareCredential(0, signatures);
|
|
107
|
+
credentials.push(credential);
|
|
108
|
+
}
|
|
109
|
+
// Verify we have enough inputs
|
|
110
|
+
if (inputSum < total) {
|
|
111
|
+
throw new sdk_core_1.BuildTransactionError(`Insufficient funds: need ${total}, have ${inputSum}`);
|
|
112
|
+
}
|
|
113
|
+
// TODO: Create change output if we have excess input
|
|
114
|
+
// The TransferableOutput creation will be implemented once FlareJS types are resolved
|
|
115
|
+
return { inputs, outputs, credentials };
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Set UTXOs for the transaction. This is required for creating inputs and outputs.
|
|
119
|
+
*
|
|
120
|
+
* @param utxos - Array of decoded UTXO objects
|
|
121
|
+
* @returns this builder instance for chaining
|
|
122
|
+
*/
|
|
123
|
+
utxos(utxos) {
|
|
124
|
+
this._utxos = utxos;
|
|
125
|
+
return this;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Flare equivalent of Avalanche's SelectCredentialClass
|
|
129
|
+
* Creates a credential with the provided signatures
|
|
130
|
+
*
|
|
131
|
+
* @param credentialId - The credential ID (not used in FlareJS but kept for compatibility)
|
|
132
|
+
* @param signatures - Array of signature hex strings or empty strings for placeholders
|
|
133
|
+
* @returns Credential instance
|
|
134
|
+
*/
|
|
135
|
+
createFlareCredential(_credentialId, signatures) {
|
|
136
|
+
if (!Array.isArray(signatures)) {
|
|
137
|
+
throw new sdk_core_1.BuildTransactionError('Signatures must be an array');
|
|
138
|
+
}
|
|
139
|
+
if (signatures.length === 0) {
|
|
140
|
+
throw new sdk_core_1.BuildTransactionError('Signatures array cannot be empty');
|
|
141
|
+
}
|
|
142
|
+
const sigs = signatures.map((sig, index) => {
|
|
143
|
+
// Handle empty/placeholder signatures
|
|
144
|
+
if (!sig || sig.length === 0) {
|
|
145
|
+
return new flarejs_1.Signature(new Uint8Array(SECP256K1_SIGNATURE_LENGTH));
|
|
146
|
+
}
|
|
147
|
+
// Validate hex string format
|
|
148
|
+
const cleanSig = sig.startsWith('0x') ? sig.slice(2) : sig;
|
|
149
|
+
if (!/^[0-9a-fA-F]*$/.test(cleanSig)) {
|
|
150
|
+
throw new sdk_core_1.BuildTransactionError(`Invalid hex signature at index ${index}: contains non-hex characters`);
|
|
151
|
+
}
|
|
152
|
+
// Convert to buffer and validate length
|
|
153
|
+
const sigBuffer = Buffer.from(cleanSig, 'hex');
|
|
154
|
+
if (sigBuffer.length > SECP256K1_SIGNATURE_LENGTH) {
|
|
155
|
+
throw new sdk_core_1.BuildTransactionError(`Signature too long at index ${index}: ${sigBuffer.length} bytes (max ${SECP256K1_SIGNATURE_LENGTH})`);
|
|
156
|
+
}
|
|
157
|
+
// Create fixed-length buffer and copy signature data
|
|
158
|
+
const fixedLengthBuffer = Buffer.alloc(SECP256K1_SIGNATURE_LENGTH);
|
|
159
|
+
sigBuffer.copy(fixedLengthBuffer);
|
|
160
|
+
try {
|
|
161
|
+
return new flarejs_1.Signature(new Uint8Array(fixedLengthBuffer));
|
|
162
|
+
}
|
|
163
|
+
catch (error) {
|
|
164
|
+
throw new sdk_core_1.BuildTransactionError(`Failed to create signature at index ${index}: ${error instanceof Error ? error.message : 'unknown error'}`);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
try {
|
|
168
|
+
return new flarejs_1.Credential(sigs);
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
throw new sdk_core_1.BuildTransactionError(`Failed to create credential: ${error instanceof Error ? error.message : 'unknown error'}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Base initBuilder used by concrete builders. For now just returns this so fluent API works.
|
|
176
|
+
*/
|
|
177
|
+
initBuilder(_tx) {
|
|
178
|
+
return this;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Sign transaction with private key (placeholder implementation)
|
|
182
|
+
* TODO: Implement proper FlareJS signing
|
|
183
|
+
*/
|
|
184
|
+
sign(_params) {
|
|
185
|
+
// TODO: Implement FlareJS signing
|
|
186
|
+
// For now, just mark as having credentials
|
|
187
|
+
this.transaction.hasCredentials = true;
|
|
188
|
+
return this;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Build the transaction (placeholder implementation)
|
|
192
|
+
* TODO: Implement proper FlareJS transaction building
|
|
193
|
+
*/
|
|
194
|
+
async build() {
|
|
195
|
+
// TODO: Create actual FlareJS UnsignedTx
|
|
196
|
+
// For now, return a mock transaction that satisfies the interface
|
|
197
|
+
const mockTransaction = {
|
|
198
|
+
_id: 'mock-transaction-id',
|
|
199
|
+
_inputs: [],
|
|
200
|
+
_outputs: [],
|
|
201
|
+
_type: this.transactionType,
|
|
202
|
+
signature: [],
|
|
203
|
+
toBroadcastFormat: () => 'mock-tx-hex',
|
|
204
|
+
toJson: () => ({}),
|
|
205
|
+
explainTransaction: () => ({
|
|
206
|
+
type: this.transactionType,
|
|
207
|
+
inputs: [],
|
|
208
|
+
outputs: [],
|
|
209
|
+
outputAmount: '0',
|
|
210
|
+
rewardAddresses: [],
|
|
211
|
+
id: 'mock-transaction-id',
|
|
212
|
+
changeOutputs: [],
|
|
213
|
+
changeAmount: '0',
|
|
214
|
+
fee: { fee: '0' },
|
|
215
|
+
}),
|
|
216
|
+
isTransactionForCChain: false,
|
|
217
|
+
fromAddresses: [],
|
|
218
|
+
validationErrors: [],
|
|
219
|
+
loadInputsAndOutputs: () => {
|
|
220
|
+
/* placeholder */
|
|
221
|
+
},
|
|
222
|
+
inputs: () => [],
|
|
223
|
+
outputs: () => [],
|
|
224
|
+
fee: () => ({ fee: '0' }),
|
|
225
|
+
feeRate: () => 0,
|
|
226
|
+
id: () => 'mock-transaction-id',
|
|
227
|
+
type: this.transactionType,
|
|
228
|
+
};
|
|
229
|
+
return mockTransaction;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Parse and explain a transaction from hex (placeholder implementation)
|
|
233
|
+
* TODO: Implement proper FlareJS transaction parsing
|
|
234
|
+
*/
|
|
235
|
+
explainTransaction() {
|
|
236
|
+
// TODO: Parse actual FlareJS transaction
|
|
237
|
+
// For now, return basic explanation
|
|
238
|
+
return {
|
|
239
|
+
type: this.transactionType,
|
|
240
|
+
inputs: [],
|
|
241
|
+
outputs: [],
|
|
242
|
+
outputAmount: '0',
|
|
243
|
+
rewardAddresses: [],
|
|
244
|
+
id: 'mock-transaction-id',
|
|
245
|
+
changeOutputs: [],
|
|
246
|
+
changeAmount: '0',
|
|
247
|
+
fee: { fee: '0' },
|
|
248
|
+
};
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
exports.AtomicTransactionBuilder = AtomicTransactionBuilder;
|
|
252
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9hdG9taWNUcmFuc2FjdGlvbkJ1aWxkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsbURBQStGO0FBQy9GLG1EQUFxRztBQUdyRyxtQ0FBbUM7QUFDbkMsTUFBTSwwQkFBMEIsR0FBRyxFQUFFLENBQUM7QUFFdEM7Ozs7R0FJRztBQUNILE1BQXNCLHdCQUF3QjtJQW9DNUMsWUFBWSxVQUFnQztRQS9CbEMsV0FBTSxHQUFxQixFQUFFLENBQUM7UUFFOUIsZ0JBQVcsR0FhakI7WUFDRixRQUFRLEVBQUUsRUFBRTtZQUNaLFVBQVUsRUFBRSxDQUFDO1lBQ2IsYUFBYSxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1lBQzlCLFFBQVEsRUFBRSxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztZQUN6QixjQUFjLEVBQUUsRUFBRTtZQUNsQixHQUFHLEVBQUUsRUFBRTtZQUNQLFNBQVMsRUFBRSxFQUFFO1lBQ2IsVUFBVSxFQUFFLENBQUM7WUFDYixJQUFJLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO1lBQ2xCLGNBQWMsRUFBRSxLQUFLO1lBQ3JCLGNBQWMsRUFBRSxVQUFVLEdBQVk7Z0JBQ3BDLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDO1lBQ2pCLENBQUM7U0FDRixDQUFDO1FBR0EsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDaEMsQ0FBQztJQUlELGNBQWMsQ0FBQyxNQUFjO1FBQzNCLElBQUksTUFBTSxJQUFJLEVBQUUsRUFBRSxDQUFDO1lBQ2pCLE1BQU0sSUFBSSxnQ0FBcUIsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQzdELENBQUM7SUFDSCxDQUFDO0lBRUQ7OztPQUdHO0lBQ08sbUJBQW1CLENBQUMsV0FBeUI7UUFDckQsSUFBSSxDQUFDLEtBQUss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RyxFQUFFO2FBQ2xCLENBQUM7WUFDRixzQkFBc0IsRUFBRSxLQUFLO1lBQzdCLGFBQWEsRUFBRSxFQUFFO1lBQ2pCLGdCQUFnQixFQUFFLEVBQUU7WUFDcEIsb0JBQW9CLEVBQUUsR0FBRyxFQUFFO2dCQUN6QixpQkFBaUI7WUFDbkIsQ0FBQztZQUNELE1BQU0sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO1lBQ2hCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFO1lBQ2pCLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxDQUFDO1lBQ3pCLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1lBQ2hCLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUI7WUFDL0IsSUFBSSxFQUFFLElBQUksQ0FBQyxlQUFlO1NBQ0csQ0FBQztRQUVoQyxPQUFPLGVBQWUsQ0FBQztJQUN6QixDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsa0JBQWtCO1FBQ2hCLHlDQUF5QztRQUN6QyxvQ0FBb0M7UUFDcEMsT0FBTztZQUNMLElBQUksRUFBRSxJQUFJLENBQUMsZUFBZTtZQUMxQixNQUFNLEVBQUUsRUFBRTtZQUNWLE9BQU8sRUFBRSxFQUFFO1lBQ1gsWUFBWSxFQUFFLEdBQUc7WUFDakIsZUFBZSxFQUFFLEVBQUU7WUFDbkIsRUFBRSxFQUFFLHFCQUFxQjtZQUN6QixhQUFhLEVBQUUsRUFBRTtZQUNqQixZQUFZLEVBQUUsR0FBRztZQUNqQixHQUFHLEVBQUUsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFO1NBQ2xCLENBQUM7SUFDSixDQUFDO0NBQ0Y7QUF2U0QsNERBdVNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQmFzZUNvaW4gYXMgQ29pbkNvbmZpZyB9IGZyb20gJ0BiaXRnby1iZXRhL3N0YXRpY3MnO1xuaW1wb3J0IHsgQnVpbGRUcmFuc2FjdGlvbkVycm9yLCBUcmFuc2FjdGlvblR5cGUsIEJhc2VUcmFuc2FjdGlvbiB9IGZyb20gJ0BiaXRnby1iZXRhL3Nkay1jb3JlJztcbmltcG9ydCB7IENyZWRlbnRpYWwsIFNpZ25hdHVyZSwgVHJhbnNmZXJhYmxlSW5wdXQsIFRyYW5zZmVyYWJsZU91dHB1dCB9IGZyb20gJ0BmbGFyZW5ldHdvcmsvZmxhcmVqcyc7XG5pbXBvcnQgeyBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uLCBEZWNvZGVkVXR4b09iaiB9IGZyb20gJy4vaWZhY2UnO1xuXG4vLyBDb25zdGFudHMgZm9yIHNpZ25hdHVyZSBoYW5kbGluZ1xuY29uc3QgU0VDUDI1NksxX1NJR05BVFVSRV9MRU5HVEggPSA2NTtcblxuLyoqXG4gKiBGbGFyZSBQLWNoYWluIGF0b21pYyB0cmFuc2FjdGlvbiBidWlsZGVyIHdpdGggRmxhcmVKUyBjcmVkZW50aWFsIHN1cHBvcnQuXG4gKiBUaGlzIHByb3ZpZGVzIHRoZSBmb3VuZGF0aW9uIGZvciBidWlsZGluZyBGbGFyZSBQLWNoYWluIHRyYW5zYWN0aW9ucyB3aXRoIHByb3BlclxuICogY3JlZGVudGlhbCBoYW5kbGluZyB1c2luZyBGbGFyZUpTIENyZWRlbnRpYWwgYW5kIFNpZ25hdHVyZSBjbGFzc2VzLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQXRvbWljVHJhbnNhY3Rpb25CdWlsZGVyIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9jb2luQ29uZmlnOiBSZWFkb25seTxDb2luQ29uZmlnPjtcbiAgLy8gRXh0ZXJuYWwgY2hhaW4gaWQgKGRlc3RpbmF0aW9uKSBmb3IgZXhwb3J0IHRyYW5zYWN0aW9uc1xuICBwcm90ZWN0ZWQgX2V4dGVybmFsQ2hhaW5JZDogQnVmZmVyIHwgdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBfdXR4b3M6IERlY29kZWRVdHhvT2JqW10gPSBbXTtcblxuICBwcm90ZWN0ZWQgdHJhbnNhY3Rpb246IHtcbiAgICBfbmV0d29yazogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgX25ldHdvcmtJRDogbnVtYmVyO1xuICAgIF9ibG9ja2NoYWluSUQ6IEJ1ZmZlcjtcbiAgICBfYXNzZXRJZDogQnVmZmVyO1xuICAgIF9mcm9tQWRkcmVzc2VzOiBzdHJpbmdbXTtcbiAgICBfdG86IHN0cmluZ1tdO1xuICAgIF9sb2NrdGltZTogYmlnaW50O1xuICAgIF90aHJlc2hvbGQ6IG51bWJlcjtcbiAgICBfZmVlOiB7IGZlZTogc3RyaW5nOyBmZWVSYXRlPzogc3RyaW5nOyBzaXplPzogbnVtYmVyIH07XG4gICAgaGFzQ3JlZGVudGlhbHM6IGJvb2xlYW47XG4gICAgX3R4PzogdW5rbm93bjtcbiAgICBzZXRUcmFuc2FjdGlvbjogKHR4OiB1bmtub3duKSA9PiB2b2lkO1xuICB9ID0ge1xuICAgIF9uZXR3b3JrOiB7fSxcbiAgICBfbmV0d29ya0lEOiAwLFxuICAgIF9ibG9ja2NoYWluSUQ6IEJ1ZmZlci5hbGxvYygwKSxcbiAgICBfYXNzZXRJZDogQnVmZmVyLmFsbG9jKDApLFxuICAgIF9mcm9tQWRkcmVzc2VzOiBbXSxcbiAgICBfdG86IFtdLFxuICAgIF9sb2NrdGltZTogMG4sXG4gICAgX3RocmVzaG9sZDogMSxcbiAgICBfZmVlOiB7IGZlZTogJzAnIH0sXG4gICAgaGFzQ3JlZGVudGlhbHM6IGZhbHNlLFxuICAgIHNldFRyYW5zYWN0aW9uOiBmdW5jdGlvbiAoX3R4OiB1bmtub3duKSB7XG4gICAgICB0aGlzLl90eCA9IF90eDtcbiAgICB9LFxuICB9O1xuXG4gIGNvbnN0cnVjdG9yKGNvaW5Db25maWc6IFJlYWRvbmx5PENvaW5Db25maWc+KSB7XG4gICAgdGhpcy5fY29pbkNvbmZpZyA9IGNvaW5Db25maWc7XG4gIH1cblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgZ2V0IHRyYW5zYWN0aW9uVHlwZSgpOiBUcmFuc2FjdGlvblR5cGU7XG5cbiAgdmFsaWRhdGVBbW91bnQoYW1vdW50OiBiaWdpbnQpOiB2b2lkIHtcbiAgICBpZiAoYW1vdW50IDw9IDBuKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdBbW91bnQgbXVzdCBiZSBwb3NpdGl2ZScpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgdGhhdCBjcmVkZW50aWFscyBhcnJheSBpcyBwcm9wZXJseSBmb3JtZWRcbiAgICogQHBhcmFtIGNyZWRlbnRpYWxzIC0gQXJyYXkgb2YgY3JlZGVudGlhbHMgdG8gdmFsaWRhdGVcbiAgICovXG4gIHByb3RlY3RlZCB2YWxpZGF0ZUNyZWRlbnRpYWxzKGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW10pOiB2b2lkIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoY3JlZGVudGlhbHMpKSB7XG4gICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKCdDcmVkZW50aWFscyBtdXN0IGJlIGFuIGFycmF5Jyk7XG4gICAgfVxuXG4gICAgY3JlZGVudGlhbHMuZm9yRWFjaCgoY3JlZGVudGlhbCwgaW5kZXgpID0+IHtcbiAgICAgIGlmICghKGNyZWRlbnRpYWwgaW5zdGFuY2VvZiBDcmVkZW50aWFsKSkge1xuICAgICAgICB0aHJvdyBuZXcgQnVpbGRUcmFuc2FjdGlvbkVycm9yKGBJbnZhbGlkIGNyZWRlbnRpYWwgYXQgaW5kZXggJHtpbmRleH1gKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGlucHV0cywgb3V0cHV0cywgYW5kIGNyZWRlbnRpYWxzIGZvciBGbGFyZSBQLWNoYWluIGF0b21pYyB0cmFuc2FjdGlvbnMuXG4gICAqIEJhc2VkIG9uIEFWQVggUC1jaGFpbiBpbXBsZW1lbnRhdGlvbiBhZGFwdGVkIGZvciBGbGFyZUpTLlxuICAgKlxuICAgKiBOb3RlOiBUaGlzIGlzIGEgc2ltcGxpZmllZCBpbXBsZW1lbnRhdGlvbiB0aGF0IGNyZWF0ZXMgdGhlIGNvcmUgc3RydWN0dXJlLlxuICAgKiBUaGUgRmxhcmVKUyB0eXBlIHN5c3RlbSBpbnRlZ3JhdGlvbiB3aWxsIGJlIHJlZmluZWQgaW4gZnV0dXJlIGl0ZXJhdGlvbnMuXG4gICAqXG4gICAqIEBwYXJhbSB0b3RhbCAtIFRvdGFsIGFtb3VudCBuZWVkZWQgaW5jbHVkaW5nIGZlZXNcbiAgICogQHJldHVybnMgT2JqZWN0IGNvbnRhaW5pbmcgVHJhbnNmZXJhYmxlSW5wdXRbXSwgVHJhbnNmZXJhYmxlT3V0cHV0W10sIGFuZCBDcmVkZW50aWFsW11cbiAgICovXG4gIHByb3RlY3RlZCBjcmVhdGVJbnB1dE91dHB1dCh0b3RhbDogYmlnaW50KToge1xuICAgIGlucHV0czogVHJhbnNmZXJhYmxlSW5wdXRbXTtcbiAgICBvdXRwdXRzOiBUcmFuc2ZlcmFibGVPdXRwdXRbXTtcbiAgICBjcmVkZW50aWFsczogQ3JlZGVudGlhbFtdO1xuICB9IHtcbiAgICBpZiAoIXRoaXMuX3V0eG9zIHx8IHRoaXMuX3V0eG9zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignVVRYT3MgYXJlIHJlcXVpcmVkIGZvciBjcmVhdGluZyBpbnB1dHMgYW5kIG91dHB1dHMnKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnB1dHM6IFRyYW5zZmVyYWJsZUlucHV0W10gPSBbXTtcbiAgICBjb25zdCBvdXRwdXRzOiBUcmFuc2ZlcmFibGVPdXRwdXRbXSA9IFtdO1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzOiBDcmVkZW50aWFsW10gPSBbXTtcblxuICAgIGxldCBpbnB1dFN1bSA9IDBuO1xuICAgIGNvbnN0IGFkZHJlc3NJbmRpY2VzOiB7IFthZGRyZXNzOiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAgIGxldCBuZXh0QWRkcmVzc0luZGV4ID0gMDtcblxuICAgIC8vIFNvcnQgVVRYT3MgYnkgYW1vdW50IGluIGRlc2NlbmRpbmcgb3JkZXIgZm9yIG9wdGltYWwgY29pbiBzZWxlY3Rpb25cbiAgICBjb25zdCBzb3J0ZWRVdHhvcyA9IFsuLi50aGlzLl91dHhvc10uc29ydCgoYSwgYikgPT4ge1xuICAgICAgY29uc3QgYW1vdW50QSA9IEJpZ0ludChhLmFtb3VudCk7XG4gICAgICBjb25zdCBhbW91bnRCID0gQmlnSW50KGIuYW1vdW50KTtcbiAgICAgIGlmIChhbW91bnRBID4gYW1vdW50QikgcmV0dXJuIC0xO1xuICAgICAgaWYgKGFtb3VudEEgPCBhbW91bnRCKSByZXR1cm4gMTtcbiAgICAgIHJldHVybiAwO1xuICAgIH0pO1xuXG4gICAgLy8gUHJvY2VzcyBVVFhPcyB0byBjcmVhdGUgaW5wdXRzIGFuZCBjcmVkZW50aWFsc1xuICAgIGZvciAoY29uc3QgdXR4byBvZiBzb3J0ZWRVdHhvcykge1xuICAgICAgY29uc3QgdXR4b0Ftb3VudCA9IEJpZ0ludCh1dHhvLmFtb3VudCk7XG5cbiAgICAgIGlmIChpbnB1dFN1bSA+PSB0b3RhbCkge1xuICAgICAgICBicmVhazsgLy8gV2UgaGF2ZSBlbm91Z2ggaW5wdXRzXG4gICAgICB9XG5cbiAgICAgIC8vIFRPRE86IENyZWF0ZSBwcm9wZXIgRmxhcmVKUyBUcmFuc2ZlcmFibGVJbnB1dCBvbmNlIHR5cGUgaXNzdWVzIGFyZSByZXNvbHZlZFxuICAgICAgLy8gRm9yIG5vdywgd2UgY3JlYXRlIGEgcGxhY2Vob2xkZXIgdGhhdCBkZW1vbnN0cmF0ZXMgdGhlIHN0cnVjdHVyZVxuICAgICAgLy8gVGhlIGFjdHVhbCBGbGFyZUpTIGludGVncmF0aW9uIHdpbGwgbmVlZCBwcm9wZXIgVVRYT0lEIGhhbmRsaW5nXG5cbiAgICAgIC8vIFRyYWNrIGlucHV0IHN1bVxuICAgICAgaW5wdXRTdW0gKz0gdXR4b0Ftb3VudDtcblxuICAgICAgLy8gVHJhY2sgYWRkcmVzcyBpbmRpY2VzIGZvciBzaWduYXR1cmUgb3JkZXJpbmcgKG1pbWljcyBBVkFYIHBhdHRlcm4pXG4gICAgICBjb25zdCBhZGRyZXNzSW5kZXhBcnJheTogbnVtYmVyW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgYWRkcmVzcyBvZiB1dHhvLmFkZHJlc3Nlcykge1xuICAgICAgICBpZiAoIShhZGRyZXNzIGluIGFkZHJlc3NJbmRpY2VzKSkge1xuICAgICAgICAgIGFkZHJlc3NJbmRpY2VzW2FkZHJlc3NdID0gbmV4dEFkZHJlc3NJbmRleCsrO1xuICAgICAgICB9XG4gICAgICAgIGFkZHJlc3NJbmRleEFycmF5LnB1c2goYWRkcmVzc0luZGljZXNbYWRkcmVzc10pO1xuICAgICAgfVxuXG4gICAgICAvLyBTdG9yZSBhZGRyZXNzIGluZGljZXMgb24gdGhlIFVUWE8gZm9yIGNyZWRlbnRpYWwgY3JlYXRpb25cbiAgICAgIHV0eG8uYWRkcmVzc2VzSW5kZXggPSBhZGRyZXNzSW5kZXhBcnJheTtcblxuICAgICAgLy8gQ3JlYXRlIGNyZWRlbnRpYWwgd2l0aCBwbGFjZWhvbGRlciBzaWduYXR1cmVzXG4gICAgICAvLyBJbiBhIHJlYWwgaW1wbGVtZW50YXRpb24sIHRoZXNlIHdvdWxkIGJlIGFjdHVhbCBzaWduYXR1cmVzXG4gICAgICBjb25zdCBzaWduYXR1cmVzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogdXR4by50aHJlc2hvbGQgfSwgKCkgPT4gJycpO1xuICAgICAgY29uc3QgY3JlZGVudGlhbCA9IHRoaXMuY3JlYXRlRmxhcmVDcmVkZW50aWFsKDAsIHNpZ25hdHVyZXMpO1xuICAgICAgY3JlZGVudGlhbHMucHVzaChjcmVkZW50aWFsKTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZnkgd2UgaGF2ZSBlbm91Z2ggaW5wdXRzXG4gICAgaWYgKGlucHV0U3VtIDwgdG90YWwpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEluc3VmZmljaWVudCBmdW5kczogbmVlZCAke3RvdGFsfSwgaGF2ZSAke2lucHV0U3VtfWApO1xuICAgIH1cblxuICAgIC8vIFRPRE86IENyZWF0ZSBjaGFuZ2Ugb3V0cHV0IGlmIHdlIGhhdmUgZXhjZXNzIGlucHV0XG4gICAgLy8gVGhlIFRyYW5zZmVyYWJsZU91dHB1dCBjcmVhdGlvbiB3aWxsIGJlIGltcGxlbWVudGVkIG9uY2UgRmxhcmVKUyB0eXBlcyBhcmUgcmVzb2x2ZWRcblxuICAgIHJldHVybiB7IGlucHV0cywgb3V0cHV0cywgY3JlZGVudGlhbHMgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgVVRYT3MgZm9yIHRoZSB0cmFuc2FjdGlvbi4gVGhpcyBpcyByZXF1aXJlZCBmb3IgY3JlYXRpbmcgaW5wdXRzIGFuZCBvdXRwdXRzLlxuICAgKlxuICAgKiBAcGFyYW0gdXR4b3MgLSBBcnJheSBvZiBkZWNvZGVkIFVUWE8gb2JqZWN0c1xuICAgKiBAcmV0dXJucyB0aGlzIGJ1aWxkZXIgaW5zdGFuY2UgZm9yIGNoYWluaW5nXG4gICAqL1xuICB1dHhvcyh1dHhvczogRGVjb2RlZFV0eG9PYmpbXSk6IHRoaXMge1xuICAgIHRoaXMuX3V0eG9zID0gdXR4b3M7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogRmxhcmUgZXF1aXZhbGVudCBvZiBBdmFsYW5jaGUncyBTZWxlY3RDcmVkZW50aWFsQ2xhc3NcbiAgICogQ3JlYXRlcyBhIGNyZWRlbnRpYWwgd2l0aCB0aGUgcHJvdmlkZWQgc2lnbmF0dXJlc1xuICAgKlxuICAgKiBAcGFyYW0gY3JlZGVudGlhbElkIC0gVGhlIGNyZWRlbnRpYWwgSUQgKG5vdCB1c2VkIGluIEZsYXJlSlMgYnV0IGtlcHQgZm9yIGNvbXBhdGliaWxpdHkpXG4gICAqIEBwYXJhbSBzaWduYXR1cmVzIC0gQXJyYXkgb2Ygc2lnbmF0dXJlIGhleCBzdHJpbmdzIG9yIGVtcHR5IHN0cmluZ3MgZm9yIHBsYWNlaG9sZGVyc1xuICAgKiBAcmV0dXJucyBDcmVkZW50aWFsIGluc3RhbmNlXG4gICAqL1xuICBwcm90ZWN0ZWQgY3JlYXRlRmxhcmVDcmVkZW50aWFsKF9jcmVkZW50aWFsSWQ6IG51bWJlciwgc2lnbmF0dXJlczogc3RyaW5nW10pOiBDcmVkZW50aWFsIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkoc2lnbmF0dXJlcykpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoJ1NpZ25hdHVyZXMgbXVzdCBiZSBhbiBhcnJheScpO1xuICAgIH1cblxuICAgIGlmIChzaWduYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEJ1aWxkVHJhbnNhY3Rpb25FcnJvcignU2lnbmF0dXJlcyBhcnJheSBjYW5ub3QgYmUgZW1wdHknKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaWdzID0gc2lnbmF0dXJlcy5tYXAoKHNpZywgaW5kZXgpID0+IHtcbiAgICAgIC8vIEhhbmRsZSBlbXB0eS9wbGFjZWhvbGRlciBzaWduYXR1cmVzXG4gICAgICBpZiAoIXNpZyB8fCBzaWcubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHJldHVybiBuZXcgU2lnbmF0dXJlKG5ldyBVaW50OEFycmF5KFNFQ1AyNTZLMV9TSUdOQVRVUkVfTEVOR1RIKSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFZhbGlkYXRlIGhleCBzdHJpbmcgZm9ybWF0XG4gICAgICBjb25zdCBjbGVhblNpZyA9IHNpZy5zdGFydHNXaXRoKCcweCcpID8gc2lnLnNsaWNlKDIpIDogc2lnO1xuICAgICAgaWYgKCEvXlswLTlhLWZBLUZdKiQvLnRlc3QoY2xlYW5TaWcpKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoYEludmFsaWQgaGV4IHNpZ25hdHVyZSBhdCBpbmRleCAke2luZGV4fTogY29udGFpbnMgbm9uLWhleCBjaGFyYWN0ZXJzYCk7XG4gICAgICB9XG5cbiAgICAgIC8vIENvbnZlcnQgdG8gYnVmZmVyIGFuZCB2YWxpZGF0ZSBsZW5ndGhcbiAgICAgIGNvbnN0IHNpZ0J1ZmZlciA9IEJ1ZmZlci5mcm9tKGNsZWFuU2lnLCAnaGV4Jyk7XG4gICAgICBpZiAoc2lnQnVmZmVyLmxlbmd0aCA+IFNFQ1AyNTZLMV9TSUdOQVRVUkVfTEVOR1RIKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgYFNpZ25hdHVyZSB0b28gbG9uZyBhdCBpbmRleCAke2luZGV4fTogJHtzaWdCdWZmZXIubGVuZ3RofSBieXRlcyAobWF4ICR7U0VDUDI1NksxX1NJR05BVFVSRV9MRU5HVEh9KWBcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ3JlYXRlIGZpeGVkLWxlbmd0aCBidWZmZXIgYW5kIGNvcHkgc2lnbmF0dXJlIGRhdGFcbiAgICAgIGNvbnN0IGZpeGVkTGVuZ3RoQnVmZmVyID0gQnVmZmVyLmFsbG9jKFNFQ1AyNTZLMV9TSUdOQVRVUkVfTEVOR1RIKTtcbiAgICAgIHNpZ0J1ZmZlci5jb3B5KGZpeGVkTGVuZ3RoQnVmZmVyKTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTaWduYXR1cmUobmV3IFVpbnQ4QXJyYXkoZml4ZWRMZW5ndGhCdWZmZXIpKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgICAgYEZhaWxlZCB0byBjcmVhdGUgc2lnbmF0dXJlIGF0IGluZGV4ICR7aW5kZXh9OiAke2Vycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogJ3Vua25vd24gZXJyb3InfWBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gbmV3IENyZWRlbnRpYWwoc2lncyk7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gY3JlYXRlIGNyZWRlbnRpYWw6ICR7ZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiAndW5rbm93biBlcnJvcid9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQmFzZSBpbml0QnVpbGRlciB1c2VkIGJ5IGNvbmNyZXRlIGJ1aWxkZXJzLiBGb3Igbm93IGp1c3QgcmV0dXJucyB0aGlzIHNvIGZsdWVudCBBUEkgd29ya3MuXG4gICAqL1xuICBpbml0QnVpbGRlcihfdHg6IHVua25vd24pOiB0aGlzIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8qKlxuICAgKiBTaWduIHRyYW5zYWN0aW9uIHdpdGggcHJpdmF0ZSBrZXkgKHBsYWNlaG9sZGVyIGltcGxlbWVudGF0aW9uKVxuICAgKiBUT0RPOiBJbXBsZW1lbnQgcHJvcGVyIEZsYXJlSlMgc2lnbmluZ1xuICAgKi9cbiAgc2lnbihfcGFyYW1zOiB7IGtleTogc3RyaW5nIH0pOiB0aGlzIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgRmxhcmVKUyBzaWduaW5nXG4gICAgLy8gRm9yIG5vdywganVzdCBtYXJrIGFzIGhhdmluZyBjcmVkZW50aWFsc1xuICAgIHRoaXMudHJhbnNhY3Rpb24uaGFzQ3JlZGVudGlhbHMgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIEJ1aWxkIHRoZSB0cmFuc2FjdGlvbiAocGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24pXG4gICAqIFRPRE86IEltcGxlbWVudCBwcm9wZXIgRmxhcmVKUyB0cmFuc2FjdGlvbiBidWlsZGluZ1xuICAgKi9cbiAgYXN5bmMgYnVpbGQoKTogUHJvbWlzZTxCYXNlVHJhbnNhY3Rpb24+IHtcbiAgICAvLyBUT0RPOiBDcmVhdGUgYWN0dWFsIEZsYXJlSlMgVW5zaWduZWRUeFxuICAgIC8vIEZvciBub3csIHJldHVybiBhIG1vY2sgdHJhbnNhY3Rpb24gdGhhdCBzYXRpc2ZpZXMgdGhlIGludGVyZmFjZVxuICAgIGNvbnN0IG1vY2tUcmFuc2FjdGlvbiA9IHtcbiAgICAgIF9pZDogJ21vY2stdHJhbnNhY3Rpb24taWQnLFxuICAgICAgX2lucHV0czogW10sXG4gICAgICBfb3V0cHV0czogW10sXG4gICAgICBfdHlwZTogdGhpcy50cmFuc2FjdGlvblR5cGUsXG4gICAgICBzaWduYXR1cmU6IFtdIGFzIHN0cmluZ1tdLFxuICAgICAgdG9Ccm9hZGNhc3RGb3JtYXQ6ICgpID0+ICdtb2NrLXR4LWhleCcsXG4gICAgICB0b0pzb246ICgpID0+ICh7fSksXG4gICAgICBleHBsYWluVHJhbnNhY3Rpb246ICgpOiBUcmFuc2FjdGlvbkV4cGxhbmF0aW9uID0+ICh7XG4gICAgICAgIHR5cGU6IHRoaXMudHJhbnNhY3Rpb25UeXBlLFxuICAgICAgICBpbnB1dHM6IFtdLFxuICAgICAgICBvdXRwdXRzOiBbXSxcbiAgICAgICAgb3V0cHV0QW1vdW50OiAnMCcsXG4gICAgICAgIHJld2FyZEFkZHJlc3NlczogW10sXG4gICAgICAgIGlkOiAnbW9jay10cmFuc2FjdGlvbi1pZCcsXG4gICAgICAgIGNoYW5nZU91dHB1dHM6IFtdLFxuICAgICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgICAgZmVlOiB7IGZlZTogJzAnIH0sXG4gICAgICB9KSxcbiAgICAgIGlzVHJhbnNhY3Rpb25Gb3JDQ2hhaW46IGZhbHNlLFxuICAgICAgZnJvbUFkZHJlc3NlczogW10sXG4gICAgICB2YWxpZGF0aW9uRXJyb3JzOiBbXSxcbiAgICAgIGxvYWRJbnB1dHNBbmRPdXRwdXRzOiAoKSA9PiB7XG4gICAgICAgIC8qIHBsYWNlaG9sZGVyICovXG4gICAgICB9LFxuICAgICAgaW5wdXRzOiAoKSA9PiBbXSxcbiAgICAgIG91dHB1dHM6ICgpID0+IFtdLFxuICAgICAgZmVlOiAoKSA9PiAoeyBmZWU6ICcwJyB9KSxcbiAgICAgIGZlZVJhdGU6ICgpID0+IDAsXG4gICAgICBpZDogKCkgPT4gJ21vY2stdHJhbnNhY3Rpb24taWQnLFxuICAgICAgdHlwZTogdGhpcy50cmFuc2FjdGlvblR5cGUsXG4gICAgfSBhcyB1bmtub3duIGFzIEJhc2VUcmFuc2FjdGlvbjtcblxuICAgIHJldHVybiBtb2NrVHJhbnNhY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogUGFyc2UgYW5kIGV4cGxhaW4gYSB0cmFuc2FjdGlvbiBmcm9tIGhleCAocGxhY2Vob2xkZXIgaW1wbGVtZW50YXRpb24pXG4gICAqIFRPRE86IEltcGxlbWVudCBwcm9wZXIgRmxhcmVKUyB0cmFuc2FjdGlvbiBwYXJzaW5nXG4gICAqL1xuICBleHBsYWluVHJhbnNhY3Rpb24oKTogVHJhbnNhY3Rpb25FeHBsYW5hdGlvbiB7XG4gICAgLy8gVE9ETzogUGFyc2UgYWN0dWFsIEZsYXJlSlMgdHJhbnNhY3Rpb25cbiAgICAvLyBGb3Igbm93LCByZXR1cm4gYmFzaWMgZXhwbGFuYXRpb25cbiAgICByZXR1cm4ge1xuICAgICAgdHlwZTogdGhpcy50cmFuc2FjdGlvblR5cGUsXG4gICAgICBpbnB1dHM6IFtdLFxuICAgICAgb3V0cHV0czogW10sXG4gICAgICBvdXRwdXRBbW91bnQ6ICcwJyxcbiAgICAgIHJld2FyZEFkZHJlc3NlczogW10sXG4gICAgICBpZDogJ21vY2stdHJhbnNhY3Rpb24taWQnLFxuICAgICAgY2hhbmdlT3V0cHV0czogW10sXG4gICAgICBjaGFuZ2VBbW91bnQ6ICcwJyxcbiAgICAgIGZlZTogeyBmZWU6ICcwJyB9LFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const DECODED_BLOCK_ID_LENGTH = 36;
|
|
2
|
+
export declare const SHORT_PUB_KEY_LENGTH = 50;
|
|
3
|
+
export declare const COMPRESSED_PUBLIC_KEY_LENGTH = 66;
|
|
4
|
+
export declare const UNCOMPRESSED_PUBLIC_KEY_LENGTH = 130;
|
|
5
|
+
export declare const RAW_PRIVATE_KEY_LENGTH = 64;
|
|
6
|
+
export declare const SUFFIXED_PRIVATE_KEY_LENGTH = 66;
|
|
7
|
+
export declare const PRIVATE_KEY_COMPRESSED_SUFFIX = "01";
|
|
8
|
+
export declare const OUTPUT_INDEX_HEX_LENGTH = 8;
|
|
9
|
+
export declare const ADDRESS_REGEX: RegExp;
|
|
10
|
+
export declare const HEX_REGEX: RegExp;
|
|
11
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/lib/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,4BAA4B,KAAK,CAAC;AAC/C,eAAO,MAAM,8BAA8B,MAAM,CAAC;AAClD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAClD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAGzC,eAAO,MAAM,aAAa,QAAgC,CAAC;AAC3D,eAAO,MAAM,SAAS,QAA4B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Shared constants for Flare P-Chain (flrp) utilities and key handling.
|
|
3
|
+
// Centralizing avoids magic numbers scattered across utils and keyPair implementations.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.HEX_REGEX = exports.ADDRESS_REGEX = exports.OUTPUT_INDEX_HEX_LENGTH = exports.PRIVATE_KEY_COMPRESSED_SUFFIX = exports.SUFFIXED_PRIVATE_KEY_LENGTH = exports.RAW_PRIVATE_KEY_LENGTH = exports.UNCOMPRESSED_PUBLIC_KEY_LENGTH = exports.COMPRESSED_PUBLIC_KEY_LENGTH = exports.SHORT_PUB_KEY_LENGTH = exports.DECODED_BLOCK_ID_LENGTH = void 0;
|
|
6
|
+
exports.DECODED_BLOCK_ID_LENGTH = 36; // Expected decoded block identifier length
|
|
7
|
+
exports.SHORT_PUB_KEY_LENGTH = 50; // Placeholder (potential CB58 encoded form length)
|
|
8
|
+
exports.COMPRESSED_PUBLIC_KEY_LENGTH = 66; // 33 bytes (compressed) hex encoded
|
|
9
|
+
exports.UNCOMPRESSED_PUBLIC_KEY_LENGTH = 130; // 65 bytes (uncompressed) hex encoded
|
|
10
|
+
exports.RAW_PRIVATE_KEY_LENGTH = 64; // 32 bytes hex encoded
|
|
11
|
+
exports.SUFFIXED_PRIVATE_KEY_LENGTH = 66; // 32 bytes + compression flag suffix
|
|
12
|
+
exports.PRIVATE_KEY_COMPRESSED_SUFFIX = '01';
|
|
13
|
+
exports.OUTPUT_INDEX_HEX_LENGTH = 8; // 4 bytes serialized to hex length
|
|
14
|
+
// Regex patterns
|
|
15
|
+
exports.ADDRESS_REGEX = /^(^P||NodeID)-[a-zA-Z0-9]+$/;
|
|
16
|
+
exports.HEX_REGEX = /^(0x){0,1}([0-9a-f])+$/i;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9jb25zdGFudHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLHdFQUF3RTtBQUN4RSx3RkFBd0Y7OztBQUUzRSxRQUFBLHVCQUF1QixHQUFHLEVBQUUsQ0FBQyxDQUFDLDJDQUEyQztBQUN6RSxRQUFBLG9CQUFvQixHQUFHLEVBQUUsQ0FBQyxDQUFDLG1EQUFtRDtBQUM5RSxRQUFBLDRCQUE0QixHQUFHLEVBQUUsQ0FBQyxDQUFDLG9DQUFvQztBQUN2RSxRQUFBLDhCQUE4QixHQUFHLEdBQUcsQ0FBQyxDQUFDLHNDQUFzQztBQUM1RSxRQUFBLHNCQUFzQixHQUFHLEVBQUUsQ0FBQyxDQUFDLHVCQUF1QjtBQUNwRCxRQUFBLDJCQUEyQixHQUFHLEVBQUUsQ0FBQyxDQUFDLHFDQUFxQztBQUN2RSxRQUFBLDZCQUE2QixHQUFHLElBQUksQ0FBQztBQUNyQyxRQUFBLHVCQUF1QixHQUFHLENBQUMsQ0FBQyxDQUFDLG1DQUFtQztBQUU3RSxpQkFBaUI7QUFDSixRQUFBLGFBQWEsR0FBRyw2QkFBNkIsQ0FBQztBQUM5QyxRQUFBLFNBQVMsR0FBRyx5QkFBeUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIFNoYXJlZCBjb25zdGFudHMgZm9yIEZsYXJlIFAtQ2hhaW4gKGZscnApIHV0aWxpdGllcyBhbmQga2V5IGhhbmRsaW5nLlxuLy8gQ2VudHJhbGl6aW5nIGF2b2lkcyBtYWdpYyBudW1iZXJzIHNjYXR0ZXJlZCBhY3Jvc3MgdXRpbHMgYW5kIGtleVBhaXIgaW1wbGVtZW50YXRpb25zLlxuXG5leHBvcnQgY29uc3QgREVDT0RFRF9CTE9DS19JRF9MRU5HVEggPSAzNjsgLy8gRXhwZWN0ZWQgZGVjb2RlZCBibG9jayBpZGVudGlmaWVyIGxlbmd0aFxuZXhwb3J0IGNvbnN0IFNIT1JUX1BVQl9LRVlfTEVOR1RIID0gNTA7IC8vIFBsYWNlaG9sZGVyIChwb3RlbnRpYWwgQ0I1OCBlbmNvZGVkIGZvcm0gbGVuZ3RoKVxuZXhwb3J0IGNvbnN0IENPTVBSRVNTRURfUFVCTElDX0tFWV9MRU5HVEggPSA2NjsgLy8gMzMgYnl0ZXMgKGNvbXByZXNzZWQpIGhleCBlbmNvZGVkXG5leHBvcnQgY29uc3QgVU5DT01QUkVTU0VEX1BVQkxJQ19LRVlfTEVOR1RIID0gMTMwOyAvLyA2NSBieXRlcyAodW5jb21wcmVzc2VkKSBoZXggZW5jb2RlZFxuZXhwb3J0IGNvbnN0IFJBV19QUklWQVRFX0tFWV9MRU5HVEggPSA2NDsgLy8gMzIgYnl0ZXMgaGV4IGVuY29kZWRcbmV4cG9ydCBjb25zdCBTVUZGSVhFRF9QUklWQVRFX0tFWV9MRU5HVEggPSA2NjsgLy8gMzIgYnl0ZXMgKyBjb21wcmVzc2lvbiBmbGFnIHN1ZmZpeFxuZXhwb3J0IGNvbnN0IFBSSVZBVEVfS0VZX0NPTVBSRVNTRURfU1VGRklYID0gJzAxJztcbmV4cG9ydCBjb25zdCBPVVRQVVRfSU5ERVhfSEVYX0xFTkdUSCA9IDg7IC8vIDQgYnl0ZXMgc2VyaWFsaXplZCB0byBoZXggbGVuZ3RoXG5cbi8vIFJlZ2V4IHBhdHRlcm5zXG5leHBvcnQgY29uc3QgQUREUkVTU19SRUdFWCA9IC9eKF5QfHxOb2RlSUQpLVthLXpBLVowLTldKyQvO1xuZXhwb3J0IGNvbnN0IEhFWF9SRUdFWCA9IC9eKDB4KXswLDF9KFswLTlhLWZdKSskL2k7XG4iXX0=
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BuildTransactionError } from '@bitgo-beta/sdk-core';
|
|
2
|
+
export declare class AddressValidationError extends BuildTransactionError {
|
|
3
|
+
constructor(malformedAddress: string);
|
|
4
|
+
}
|
|
5
|
+
export declare class InvalidFeeError extends BuildTransactionError {
|
|
6
|
+
constructor(type?: string, expectedType?: string);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/lib/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,qBAAa,sBAAuB,SAAQ,qBAAqB;gBACnD,gBAAgB,EAAE,MAAM;CAIrC;AAED,qBAAa,eAAgB,SAAQ,qBAAqB;gBAC5C,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;CAIjD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.InvalidFeeError = exports.AddressValidationError = void 0;
|
|
4
|
+
const sdk_core_1 = require("@bitgo-beta/sdk-core");
|
|
5
|
+
class AddressValidationError extends sdk_core_1.BuildTransactionError {
|
|
6
|
+
constructor(malformedAddress) {
|
|
7
|
+
super(`The address '${malformedAddress}' is not a well-formed flrp address`);
|
|
8
|
+
this.name = AddressValidationError.name;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
exports.AddressValidationError = AddressValidationError;
|
|
12
|
+
class InvalidFeeError extends sdk_core_1.BuildTransactionError {
|
|
13
|
+
constructor(type, expectedType) {
|
|
14
|
+
super(`The specified type: "${type}" is not valid. Please provide the type: "${expectedType}"`);
|
|
15
|
+
this.name = InvalidFeeError.name;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
exports.InvalidFeeError = InvalidFeeError;
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9lcnJvcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTZEO0FBRTdELE1BQWEsc0JBQXVCLFNBQVEsZ0NBQXFCO0lBQy9ELFlBQVksZ0JBQXdCO1FBQ2xDLEtBQUssQ0FBQyxnQkFBZ0IsZ0JBQWdCLHFDQUFxQyxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLElBQUksR0FBRyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBTEQsd0RBS0M7QUFFRCxNQUFhLGVBQWdCLFNBQVEsZ0NBQXFCO0lBQ3hELFlBQVksSUFBYSxFQUFFLFlBQXFCO1FBQzlDLEtBQUssQ0FBQyx3QkFBd0IsSUFBSSw2Q0FBNkMsWUFBWSxHQUFHLENBQUMsQ0FBQztRQUNoRyxJQUFJLENBQUMsSUFBSSxHQUFHLGVBQWUsQ0FBQyxJQUFJLENBQUM7SUFDbkMsQ0FBQztDQUNGO0FBTEQsMENBS0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdWlsZFRyYW5zYWN0aW9uRXJyb3IgfSBmcm9tICdAYml0Z28tYmV0YS9zZGstY29yZSc7XG5cbmV4cG9ydCBjbGFzcyBBZGRyZXNzVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgQnVpbGRUcmFuc2FjdGlvbkVycm9yIHtcbiAgY29uc3RydWN0b3IobWFsZm9ybWVkQWRkcmVzczogc3RyaW5nKSB7XG4gICAgc3VwZXIoYFRoZSBhZGRyZXNzICcke21hbGZvcm1lZEFkZHJlc3N9JyBpcyBub3QgYSB3ZWxsLWZvcm1lZCBmbHJwIGFkZHJlc3NgKTtcbiAgICB0aGlzLm5hbWUgPSBBZGRyZXNzVmFsaWRhdGlvbkVycm9yLm5hbWU7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEludmFsaWRGZWVFcnJvciBleHRlbmRzIEJ1aWxkVHJhbnNhY3Rpb25FcnJvciB7XG4gIGNvbnN0cnVjdG9yKHR5cGU/OiBzdHJpbmcsIGV4cGVjdGVkVHlwZT86IHN0cmluZykge1xuICAgIHN1cGVyKGBUaGUgc3BlY2lmaWVkIHR5cGU6IFwiJHt0eXBlfVwiIGlzIG5vdCB2YWxpZC4gUGxlYXNlIHByb3ZpZGUgdGhlIHR5cGU6IFwiJHtleHBlY3RlZFR5cGV9XCJgKTtcbiAgICB0aGlzLm5hbWUgPSBJbnZhbGlkRmVlRXJyb3IubmFtZTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { TransactionType } from '@bitgo-beta/sdk-core';
|
|
2
|
+
import { BaseCoin as CoinConfig } from '@bitgo-beta/statics';
|
|
3
|
+
import { AtomicInCTransactionBuilder } from './atomicInCTransactionBuilder';
|
|
4
|
+
interface FlareExportInputShape {
|
|
5
|
+
address: string;
|
|
6
|
+
amount: bigint;
|
|
7
|
+
assetId: Buffer;
|
|
8
|
+
nonce: bigint;
|
|
9
|
+
}
|
|
10
|
+
interface FlareExportOutputShape {
|
|
11
|
+
addresses: string[];
|
|
12
|
+
amount: bigint;
|
|
13
|
+
assetId: Buffer;
|
|
14
|
+
}
|
|
15
|
+
interface FlareUnsignedExportTx {
|
|
16
|
+
networkId: number;
|
|
17
|
+
sourceBlockchainId: Buffer;
|
|
18
|
+
destinationBlockchainId: Buffer;
|
|
19
|
+
inputs: FlareExportInputShape[];
|
|
20
|
+
outputs: FlareExportOutputShape[];
|
|
21
|
+
}
|
|
22
|
+
interface FlareSignedExportTx {
|
|
23
|
+
unsignedTx: FlareUnsignedExportTx;
|
|
24
|
+
credentials: unknown[];
|
|
25
|
+
}
|
|
26
|
+
type RawFlareExportTx = FlareSignedExportTx;
|
|
27
|
+
export declare class ExportInCTxBuilder extends AtomicInCTransactionBuilder {
|
|
28
|
+
private _amount?;
|
|
29
|
+
private _nonce?;
|
|
30
|
+
constructor(_coinConfig: Readonly<CoinConfig>);
|
|
31
|
+
/**
|
|
32
|
+
* Utxos are not required in Export Tx in C-Chain.
|
|
33
|
+
* Override utxos to prevent used by throwing a error.
|
|
34
|
+
*
|
|
35
|
+
* @param {DecodedUtxoObj[]} value ignored
|
|
36
|
+
*/
|
|
37
|
+
utxos(_value: unknown[]): this;
|
|
38
|
+
/**
|
|
39
|
+
* Amount is a long that specifies the quantity of the asset that this output owns. Must be positive.
|
|
40
|
+
* The transaction output amount add a fixed fee that will be paid upon import.
|
|
41
|
+
*
|
|
42
|
+
* @param {BN | string} amount The withdrawal amount
|
|
43
|
+
*/
|
|
44
|
+
amount(amount: bigint | number | string): this;
|
|
45
|
+
/**
|
|
46
|
+
* Set the nonce of C-Chain sender address
|
|
47
|
+
*
|
|
48
|
+
* @param {number | string} nonce - number that can be only used once
|
|
49
|
+
*/
|
|
50
|
+
nonce(nonce: bigint | number | string): this;
|
|
51
|
+
/**
|
|
52
|
+
* Export tx target P wallet.
|
|
53
|
+
*
|
|
54
|
+
* @param pAddresses
|
|
55
|
+
*/
|
|
56
|
+
to(pAddresses: string | string[]): this;
|
|
57
|
+
protected get transactionType(): TransactionType;
|
|
58
|
+
initBuilder(raw: RawFlareExportTx): this;
|
|
59
|
+
static verifyTxType(_tx: unknown): _tx is FlareUnsignedExportTx;
|
|
60
|
+
verifyTxType(_tx: unknown): _tx is FlareUnsignedExportTx;
|
|
61
|
+
/**
|
|
62
|
+
* Build the export in C-chain transaction
|
|
63
|
+
* @protected
|
|
64
|
+
*/
|
|
65
|
+
protected buildFlareTransaction(): void;
|
|
66
|
+
/** @inheritdoc */
|
|
67
|
+
protected fromImplementation(raw: string | RawFlareExportTx): {
|
|
68
|
+
_tx?: unknown;
|
|
69
|
+
};
|
|
70
|
+
/**
|
|
71
|
+
* Check the amount is positive.
|
|
72
|
+
* @param amount
|
|
73
|
+
*/
|
|
74
|
+
validateNonce(nonce: bigint): void;
|
|
75
|
+
}
|
|
76
|
+
export {};
|
|
77
|
+
//# sourceMappingURL=exportInCTxBuilder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exportInCTxBuilder.d.ts","sourceRoot":"","sources":["../../../src/lib/exportInCTxBuilder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,UAAU,qBAAqB;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,sBAAsB;IAC9B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,qBAAqB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uBAAuB,EAAE,MAAM,CAAC;IAChC,MAAM,EAAE,qBAAqB,EAAE,CAAC;IAChC,OAAO,EAAE,sBAAsB,EAAE,CAAC;CACnC;AAED,UAAU,mBAAmB;IAC3B,UAAU,EAAE,qBAAqB,CAAC;IAElC,WAAW,EAAE,OAAO,EAAE,CAAC;CACxB;AAED,KAAK,gBAAgB,GAAG,mBAAmB,CAAC;AAE5C,qBAAa,kBAAmB,SAAQ,2BAA2B;IACjE,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,MAAM,CAAC,CAAS;gBAEZ,WAAW,EAAE,QAAQ,CAAC,UAAU,CAAC;IAI7C;;;;;OAKG;IACH,KAAK,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI;IAI9B;;;;;OAKG;IACH,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAO9C;;;;OAIG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI;IAO5C;;;;OAIG;IACH,EAAE,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI;IAOvC,SAAS,KAAK,eAAe,IAAI,eAAe,CAE/C;IAED,WAAW,CAAC,GAAG,EAAE,gBAAgB,GAAG,IAAI;IAuCxC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB;IAI/D,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,qBAAqB;IAIxD;;;OAGG;IACH,SAAS,CAAC,qBAAqB,IAAI,IAAI;IAgDvC,kBAAkB;IAClB,SAAS,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG;QAAE,GAAG,CAAC,EAAE,OAAO,CAAA;KAAE;IAS/E;;;OAGG;IACH,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;CAKnC"}
|