@pioneer-platform/pioneer-sdk 8.19.0 → 8.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +57 -2
- package/dist/index.es.js +57 -2
- package/dist/index.js +57 -2
- package/package.json +5 -5
- package/src/fees/index.ts +69 -2
package/dist/index.cjs
CHANGED
|
@@ -61571,6 +61571,8 @@ function getNetworkType(networkId) {
|
|
|
61571
61571
|
return "COSMOS";
|
|
61572
61572
|
if (networkId.startsWith("ripple:"))
|
|
61573
61573
|
return "RIPPLE";
|
|
61574
|
+
if (networkId.startsWith("solana:"))
|
|
61575
|
+
return "SOLANA";
|
|
61574
61576
|
return "OTHER";
|
|
61575
61577
|
}
|
|
61576
61578
|
function getNetworkName(networkId) {
|
|
@@ -61592,7 +61594,8 @@ function getNetworkName(networkId) {
|
|
|
61592
61594
|
"cosmos:osmosis-1": "Osmosis",
|
|
61593
61595
|
"cosmos:thorchain-mainnet-v1": "THORChain",
|
|
61594
61596
|
"cosmos:mayachain-mainnet-v1": "Maya",
|
|
61595
|
-
"ripple:4109c6f2045fc7eff4cde8f9905d19c2": "Ripple"
|
|
61597
|
+
"ripple:4109c6f2045fc7eff4cde8f9905d19c2": "Ripple",
|
|
61598
|
+
"solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp": "Solana"
|
|
61596
61599
|
};
|
|
61597
61600
|
return networkNames[networkId] || networkId;
|
|
61598
61601
|
}
|
|
@@ -61615,6 +61618,10 @@ async function getFees(pioneer, networkId) {
|
|
|
61615
61618
|
console.log(tag, "Using hardcoded fees for Ripple: 0.00001 XRP");
|
|
61616
61619
|
return getRippleFees(networkId);
|
|
61617
61620
|
}
|
|
61621
|
+
if (networkId === "solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp") {
|
|
61622
|
+
console.log(tag, "Using hardcoded fees for Solana: 0.000005 SOL (5000 lamports)");
|
|
61623
|
+
return getSolanaFees(networkId);
|
|
61624
|
+
}
|
|
61618
61625
|
if (networkId === "bip122:00000000001a91e3dace36e2be3bf030") {
|
|
61619
61626
|
console.log(tag, "Using hardcoded fees for Dogecoin: 10 sat/byte");
|
|
61620
61627
|
return {
|
|
@@ -61889,6 +61896,8 @@ function getDefaultUnit(networkType) {
|
|
|
61889
61896
|
return "uatom";
|
|
61890
61897
|
case "RIPPLE":
|
|
61891
61898
|
return "XRP";
|
|
61899
|
+
case "SOLANA":
|
|
61900
|
+
return "SOL";
|
|
61892
61901
|
default:
|
|
61893
61902
|
return "units";
|
|
61894
61903
|
}
|
|
@@ -61903,6 +61912,8 @@ function getDefaultDescription(networkType, networkName) {
|
|
|
61903
61912
|
return `Transaction fee for ${networkName}`;
|
|
61904
61913
|
case "RIPPLE":
|
|
61905
61914
|
return `Fixed transaction fee for ${networkName}`;
|
|
61915
|
+
case "SOLANA":
|
|
61916
|
+
return `Fixed transaction fee for ${networkName}`;
|
|
61906
61917
|
default:
|
|
61907
61918
|
return `Transaction fee for ${networkName}`;
|
|
61908
61919
|
}
|
|
@@ -61928,6 +61939,11 @@ function getEstimatedTime(networkType, priority) {
|
|
|
61928
61939
|
low: "~4 seconds",
|
|
61929
61940
|
medium: "~4 seconds",
|
|
61930
61941
|
high: "~4 seconds"
|
|
61942
|
+
},
|
|
61943
|
+
SOLANA: {
|
|
61944
|
+
low: "~1 second",
|
|
61945
|
+
medium: "~1 second",
|
|
61946
|
+
high: "~1 second"
|
|
61931
61947
|
}
|
|
61932
61948
|
};
|
|
61933
61949
|
return times[networkType]?.[priority] || "~varies";
|
|
@@ -62007,6 +62023,39 @@ function getRippleFees(networkId) {
|
|
|
62007
62023
|
raw: { hardcoded: true, fee: standardFee, unit: "XRP" }
|
|
62008
62024
|
};
|
|
62009
62025
|
}
|
|
62026
|
+
function getSolanaFees(networkId) {
|
|
62027
|
+
const networkName = getNetworkName(networkId);
|
|
62028
|
+
const standardFee = "0.000005";
|
|
62029
|
+
return {
|
|
62030
|
+
slow: {
|
|
62031
|
+
label: "Standard",
|
|
62032
|
+
value: standardFee,
|
|
62033
|
+
unit: "SOL",
|
|
62034
|
+
description: `Fixed fee for ${networkName}. Solana uses a deterministic fee model.`,
|
|
62035
|
+
estimatedTime: "~1 second",
|
|
62036
|
+
priority: "low"
|
|
62037
|
+
},
|
|
62038
|
+
average: {
|
|
62039
|
+
label: "Standard",
|
|
62040
|
+
value: standardFee,
|
|
62041
|
+
unit: "SOL",
|
|
62042
|
+
description: `Fixed fee for ${networkName}. Solana uses a deterministic fee model.`,
|
|
62043
|
+
estimatedTime: "~1 second",
|
|
62044
|
+
priority: "medium"
|
|
62045
|
+
},
|
|
62046
|
+
fastest: {
|
|
62047
|
+
label: "Standard",
|
|
62048
|
+
value: standardFee,
|
|
62049
|
+
unit: "SOL",
|
|
62050
|
+
description: `Fixed fee for ${networkName}. Solana uses a deterministic fee model.`,
|
|
62051
|
+
estimatedTime: "~1 second",
|
|
62052
|
+
priority: "high"
|
|
62053
|
+
},
|
|
62054
|
+
networkId,
|
|
62055
|
+
networkType: "SOLANA",
|
|
62056
|
+
raw: { hardcoded: true, fee: standardFee, unit: "SOL", lamports: 5000 }
|
|
62057
|
+
};
|
|
62058
|
+
}
|
|
62010
62059
|
function getFallbackFees(networkId) {
|
|
62011
62060
|
const networkType = getNetworkType(networkId);
|
|
62012
62061
|
const networkName = getNetworkName(networkId);
|
|
@@ -62016,7 +62065,8 @@ function getFallbackFees(networkId) {
|
|
|
62016
62065
|
const fallbacks = {
|
|
62017
62066
|
UTXO: { slow: "1", average: "2", fastest: "3", unit: "sat/vB" },
|
|
62018
62067
|
EVM: { slow: "1", average: "1.5", fastest: "2", unit: "gwei" },
|
|
62019
|
-
RIPPLE: { slow: "0.00001", average: "0.00001", fastest: "0.00001", unit: "XRP" }
|
|
62068
|
+
RIPPLE: { slow: "0.00001", average: "0.00001", fastest: "0.00001", unit: "XRP" },
|
|
62069
|
+
SOLANA: { slow: "0.000005", average: "0.000005", fastest: "0.000005", unit: "SOL" }
|
|
62020
62070
|
};
|
|
62021
62071
|
const fallback = fallbacks[networkType] || fallbacks.UTXO;
|
|
62022
62072
|
return {
|
|
@@ -62072,6 +62122,11 @@ function estimateTransactionFee(feeRate, unit, networkType, txSize) {
|
|
|
62072
62122
|
amount: feeRate,
|
|
62073
62123
|
unit: "XRP"
|
|
62074
62124
|
};
|
|
62125
|
+
case "SOLANA":
|
|
62126
|
+
return {
|
|
62127
|
+
amount: feeRate,
|
|
62128
|
+
unit: "SOL"
|
|
62129
|
+
};
|
|
62075
62130
|
default:
|
|
62076
62131
|
return {
|
|
62077
62132
|
amount: feeRate,
|
package/dist/index.es.js
CHANGED
|
@@ -47927,6 +47927,8 @@ function getNetworkType(networkId) {
|
|
|
47927
47927
|
return "COSMOS";
|
|
47928
47928
|
if (networkId.startsWith("ripple:"))
|
|
47929
47929
|
return "RIPPLE";
|
|
47930
|
+
if (networkId.startsWith("solana:"))
|
|
47931
|
+
return "SOLANA";
|
|
47930
47932
|
return "OTHER";
|
|
47931
47933
|
}
|
|
47932
47934
|
function getNetworkName(networkId) {
|
|
@@ -47948,7 +47950,8 @@ function getNetworkName(networkId) {
|
|
|
47948
47950
|
"cosmos:osmosis-1": "Osmosis",
|
|
47949
47951
|
"cosmos:thorchain-mainnet-v1": "THORChain",
|
|
47950
47952
|
"cosmos:mayachain-mainnet-v1": "Maya",
|
|
47951
|
-
"ripple:4109c6f2045fc7eff4cde8f9905d19c2": "Ripple"
|
|
47953
|
+
"ripple:4109c6f2045fc7eff4cde8f9905d19c2": "Ripple",
|
|
47954
|
+
"solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp": "Solana"
|
|
47952
47955
|
};
|
|
47953
47956
|
return networkNames[networkId] || networkId;
|
|
47954
47957
|
}
|
|
@@ -47971,6 +47974,10 @@ async function getFees(pioneer, networkId) {
|
|
|
47971
47974
|
console.log(tag, "Using hardcoded fees for Ripple: 0.00001 XRP");
|
|
47972
47975
|
return getRippleFees(networkId);
|
|
47973
47976
|
}
|
|
47977
|
+
if (networkId === "solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp") {
|
|
47978
|
+
console.log(tag, "Using hardcoded fees for Solana: 0.000005 SOL (5000 lamports)");
|
|
47979
|
+
return getSolanaFees(networkId);
|
|
47980
|
+
}
|
|
47974
47981
|
if (networkId === "bip122:00000000001a91e3dace36e2be3bf030") {
|
|
47975
47982
|
console.log(tag, "Using hardcoded fees for Dogecoin: 10 sat/byte");
|
|
47976
47983
|
return {
|
|
@@ -48245,6 +48252,8 @@ function getDefaultUnit(networkType) {
|
|
|
48245
48252
|
return "uatom";
|
|
48246
48253
|
case "RIPPLE":
|
|
48247
48254
|
return "XRP";
|
|
48255
|
+
case "SOLANA":
|
|
48256
|
+
return "SOL";
|
|
48248
48257
|
default:
|
|
48249
48258
|
return "units";
|
|
48250
48259
|
}
|
|
@@ -48259,6 +48268,8 @@ function getDefaultDescription(networkType, networkName) {
|
|
|
48259
48268
|
return `Transaction fee for ${networkName}`;
|
|
48260
48269
|
case "RIPPLE":
|
|
48261
48270
|
return `Fixed transaction fee for ${networkName}`;
|
|
48271
|
+
case "SOLANA":
|
|
48272
|
+
return `Fixed transaction fee for ${networkName}`;
|
|
48262
48273
|
default:
|
|
48263
48274
|
return `Transaction fee for ${networkName}`;
|
|
48264
48275
|
}
|
|
@@ -48284,6 +48295,11 @@ function getEstimatedTime(networkType, priority) {
|
|
|
48284
48295
|
low: "~4 seconds",
|
|
48285
48296
|
medium: "~4 seconds",
|
|
48286
48297
|
high: "~4 seconds"
|
|
48298
|
+
},
|
|
48299
|
+
SOLANA: {
|
|
48300
|
+
low: "~1 second",
|
|
48301
|
+
medium: "~1 second",
|
|
48302
|
+
high: "~1 second"
|
|
48287
48303
|
}
|
|
48288
48304
|
};
|
|
48289
48305
|
return times[networkType]?.[priority] || "~varies";
|
|
@@ -48363,6 +48379,39 @@ function getRippleFees(networkId) {
|
|
|
48363
48379
|
raw: { hardcoded: true, fee: standardFee, unit: "XRP" }
|
|
48364
48380
|
};
|
|
48365
48381
|
}
|
|
48382
|
+
function getSolanaFees(networkId) {
|
|
48383
|
+
const networkName = getNetworkName(networkId);
|
|
48384
|
+
const standardFee = "0.000005";
|
|
48385
|
+
return {
|
|
48386
|
+
slow: {
|
|
48387
|
+
label: "Standard",
|
|
48388
|
+
value: standardFee,
|
|
48389
|
+
unit: "SOL",
|
|
48390
|
+
description: `Fixed fee for ${networkName}. Solana uses a deterministic fee model.`,
|
|
48391
|
+
estimatedTime: "~1 second",
|
|
48392
|
+
priority: "low"
|
|
48393
|
+
},
|
|
48394
|
+
average: {
|
|
48395
|
+
label: "Standard",
|
|
48396
|
+
value: standardFee,
|
|
48397
|
+
unit: "SOL",
|
|
48398
|
+
description: `Fixed fee for ${networkName}. Solana uses a deterministic fee model.`,
|
|
48399
|
+
estimatedTime: "~1 second",
|
|
48400
|
+
priority: "medium"
|
|
48401
|
+
},
|
|
48402
|
+
fastest: {
|
|
48403
|
+
label: "Standard",
|
|
48404
|
+
value: standardFee,
|
|
48405
|
+
unit: "SOL",
|
|
48406
|
+
description: `Fixed fee for ${networkName}. Solana uses a deterministic fee model.`,
|
|
48407
|
+
estimatedTime: "~1 second",
|
|
48408
|
+
priority: "high"
|
|
48409
|
+
},
|
|
48410
|
+
networkId,
|
|
48411
|
+
networkType: "SOLANA",
|
|
48412
|
+
raw: { hardcoded: true, fee: standardFee, unit: "SOL", lamports: 5000 }
|
|
48413
|
+
};
|
|
48414
|
+
}
|
|
48366
48415
|
function getFallbackFees(networkId) {
|
|
48367
48416
|
const networkType = getNetworkType(networkId);
|
|
48368
48417
|
const networkName = getNetworkName(networkId);
|
|
@@ -48372,7 +48421,8 @@ function getFallbackFees(networkId) {
|
|
|
48372
48421
|
const fallbacks = {
|
|
48373
48422
|
UTXO: { slow: "1", average: "2", fastest: "3", unit: "sat/vB" },
|
|
48374
48423
|
EVM: { slow: "1", average: "1.5", fastest: "2", unit: "gwei" },
|
|
48375
|
-
RIPPLE: { slow: "0.00001", average: "0.00001", fastest: "0.00001", unit: "XRP" }
|
|
48424
|
+
RIPPLE: { slow: "0.00001", average: "0.00001", fastest: "0.00001", unit: "XRP" },
|
|
48425
|
+
SOLANA: { slow: "0.000005", average: "0.000005", fastest: "0.000005", unit: "SOL" }
|
|
48376
48426
|
};
|
|
48377
48427
|
const fallback = fallbacks[networkType] || fallbacks.UTXO;
|
|
48378
48428
|
return {
|
|
@@ -48428,6 +48478,11 @@ function estimateTransactionFee(feeRate, unit, networkType, txSize) {
|
|
|
48428
48478
|
amount: feeRate,
|
|
48429
48479
|
unit: "XRP"
|
|
48430
48480
|
};
|
|
48481
|
+
case "SOLANA":
|
|
48482
|
+
return {
|
|
48483
|
+
amount: feeRate,
|
|
48484
|
+
unit: "SOL"
|
|
48485
|
+
};
|
|
48431
48486
|
default:
|
|
48432
48487
|
return {
|
|
48433
48488
|
amount: feeRate,
|
package/dist/index.js
CHANGED
|
@@ -47927,6 +47927,8 @@ function getNetworkType(networkId) {
|
|
|
47927
47927
|
return "COSMOS";
|
|
47928
47928
|
if (networkId.startsWith("ripple:"))
|
|
47929
47929
|
return "RIPPLE";
|
|
47930
|
+
if (networkId.startsWith("solana:"))
|
|
47931
|
+
return "SOLANA";
|
|
47930
47932
|
return "OTHER";
|
|
47931
47933
|
}
|
|
47932
47934
|
function getNetworkName(networkId) {
|
|
@@ -47948,7 +47950,8 @@ function getNetworkName(networkId) {
|
|
|
47948
47950
|
"cosmos:osmosis-1": "Osmosis",
|
|
47949
47951
|
"cosmos:thorchain-mainnet-v1": "THORChain",
|
|
47950
47952
|
"cosmos:mayachain-mainnet-v1": "Maya",
|
|
47951
|
-
"ripple:4109c6f2045fc7eff4cde8f9905d19c2": "Ripple"
|
|
47953
|
+
"ripple:4109c6f2045fc7eff4cde8f9905d19c2": "Ripple",
|
|
47954
|
+
"solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp": "Solana"
|
|
47952
47955
|
};
|
|
47953
47956
|
return networkNames[networkId] || networkId;
|
|
47954
47957
|
}
|
|
@@ -47971,6 +47974,10 @@ async function getFees(pioneer, networkId) {
|
|
|
47971
47974
|
console.log(tag, "Using hardcoded fees for Ripple: 0.00001 XRP");
|
|
47972
47975
|
return getRippleFees(networkId);
|
|
47973
47976
|
}
|
|
47977
|
+
if (networkId === "solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp") {
|
|
47978
|
+
console.log(tag, "Using hardcoded fees for Solana: 0.000005 SOL (5000 lamports)");
|
|
47979
|
+
return getSolanaFees(networkId);
|
|
47980
|
+
}
|
|
47974
47981
|
if (networkId === "bip122:00000000001a91e3dace36e2be3bf030") {
|
|
47975
47982
|
console.log(tag, "Using hardcoded fees for Dogecoin: 10 sat/byte");
|
|
47976
47983
|
return {
|
|
@@ -48245,6 +48252,8 @@ function getDefaultUnit(networkType) {
|
|
|
48245
48252
|
return "uatom";
|
|
48246
48253
|
case "RIPPLE":
|
|
48247
48254
|
return "XRP";
|
|
48255
|
+
case "SOLANA":
|
|
48256
|
+
return "SOL";
|
|
48248
48257
|
default:
|
|
48249
48258
|
return "units";
|
|
48250
48259
|
}
|
|
@@ -48259,6 +48268,8 @@ function getDefaultDescription(networkType, networkName) {
|
|
|
48259
48268
|
return `Transaction fee for ${networkName}`;
|
|
48260
48269
|
case "RIPPLE":
|
|
48261
48270
|
return `Fixed transaction fee for ${networkName}`;
|
|
48271
|
+
case "SOLANA":
|
|
48272
|
+
return `Fixed transaction fee for ${networkName}`;
|
|
48262
48273
|
default:
|
|
48263
48274
|
return `Transaction fee for ${networkName}`;
|
|
48264
48275
|
}
|
|
@@ -48284,6 +48295,11 @@ function getEstimatedTime(networkType, priority) {
|
|
|
48284
48295
|
low: "~4 seconds",
|
|
48285
48296
|
medium: "~4 seconds",
|
|
48286
48297
|
high: "~4 seconds"
|
|
48298
|
+
},
|
|
48299
|
+
SOLANA: {
|
|
48300
|
+
low: "~1 second",
|
|
48301
|
+
medium: "~1 second",
|
|
48302
|
+
high: "~1 second"
|
|
48287
48303
|
}
|
|
48288
48304
|
};
|
|
48289
48305
|
return times[networkType]?.[priority] || "~varies";
|
|
@@ -48363,6 +48379,39 @@ function getRippleFees(networkId) {
|
|
|
48363
48379
|
raw: { hardcoded: true, fee: standardFee, unit: "XRP" }
|
|
48364
48380
|
};
|
|
48365
48381
|
}
|
|
48382
|
+
function getSolanaFees(networkId) {
|
|
48383
|
+
const networkName = getNetworkName(networkId);
|
|
48384
|
+
const standardFee = "0.000005";
|
|
48385
|
+
return {
|
|
48386
|
+
slow: {
|
|
48387
|
+
label: "Standard",
|
|
48388
|
+
value: standardFee,
|
|
48389
|
+
unit: "SOL",
|
|
48390
|
+
description: `Fixed fee for ${networkName}. Solana uses a deterministic fee model.`,
|
|
48391
|
+
estimatedTime: "~1 second",
|
|
48392
|
+
priority: "low"
|
|
48393
|
+
},
|
|
48394
|
+
average: {
|
|
48395
|
+
label: "Standard",
|
|
48396
|
+
value: standardFee,
|
|
48397
|
+
unit: "SOL",
|
|
48398
|
+
description: `Fixed fee for ${networkName}. Solana uses a deterministic fee model.`,
|
|
48399
|
+
estimatedTime: "~1 second",
|
|
48400
|
+
priority: "medium"
|
|
48401
|
+
},
|
|
48402
|
+
fastest: {
|
|
48403
|
+
label: "Standard",
|
|
48404
|
+
value: standardFee,
|
|
48405
|
+
unit: "SOL",
|
|
48406
|
+
description: `Fixed fee for ${networkName}. Solana uses a deterministic fee model.`,
|
|
48407
|
+
estimatedTime: "~1 second",
|
|
48408
|
+
priority: "high"
|
|
48409
|
+
},
|
|
48410
|
+
networkId,
|
|
48411
|
+
networkType: "SOLANA",
|
|
48412
|
+
raw: { hardcoded: true, fee: standardFee, unit: "SOL", lamports: 5000 }
|
|
48413
|
+
};
|
|
48414
|
+
}
|
|
48366
48415
|
function getFallbackFees(networkId) {
|
|
48367
48416
|
const networkType = getNetworkType(networkId);
|
|
48368
48417
|
const networkName = getNetworkName(networkId);
|
|
@@ -48372,7 +48421,8 @@ function getFallbackFees(networkId) {
|
|
|
48372
48421
|
const fallbacks = {
|
|
48373
48422
|
UTXO: { slow: "1", average: "2", fastest: "3", unit: "sat/vB" },
|
|
48374
48423
|
EVM: { slow: "1", average: "1.5", fastest: "2", unit: "gwei" },
|
|
48375
|
-
RIPPLE: { slow: "0.00001", average: "0.00001", fastest: "0.00001", unit: "XRP" }
|
|
48424
|
+
RIPPLE: { slow: "0.00001", average: "0.00001", fastest: "0.00001", unit: "XRP" },
|
|
48425
|
+
SOLANA: { slow: "0.000005", average: "0.000005", fastest: "0.000005", unit: "SOL" }
|
|
48376
48426
|
};
|
|
48377
48427
|
const fallback = fallbacks[networkType] || fallbacks.UTXO;
|
|
48378
48428
|
return {
|
|
@@ -48428,6 +48478,11 @@ function estimateTransactionFee(feeRate, unit, networkType, txSize) {
|
|
|
48428
48478
|
amount: feeRate,
|
|
48429
48479
|
unit: "XRP"
|
|
48430
48480
|
};
|
|
48481
|
+
case "SOLANA":
|
|
48482
|
+
return {
|
|
48483
|
+
amount: feeRate,
|
|
48484
|
+
unit: "SOL"
|
|
48485
|
+
};
|
|
48431
48486
|
default:
|
|
48432
48487
|
return {
|
|
48433
48488
|
amount: feeRate,
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"author": "highlander",
|
|
3
3
|
"name": "@pioneer-platform/pioneer-sdk",
|
|
4
|
-
"version": "8.
|
|
4
|
+
"version": "8.20.0",
|
|
5
5
|
"dependencies": {
|
|
6
6
|
"keepkey-vault-sdk": "^1.0.2",
|
|
7
|
-
"@pioneer-platform/pioneer-caip": "^9.
|
|
7
|
+
"@pioneer-platform/pioneer-caip": "^9.15.0",
|
|
8
8
|
"@pioneer-platform/pioneer-client": "^9.10.24",
|
|
9
|
-
"@pioneer-platform/pioneer-coins": "^9.
|
|
10
|
-
"@pioneer-platform/pioneer-discovery": "^8.
|
|
11
|
-
"@pioneer-platform/pioneer-events": "^8.
|
|
9
|
+
"@pioneer-platform/pioneer-coins": "^9.16.0",
|
|
10
|
+
"@pioneer-platform/pioneer-discovery": "^8.20.0",
|
|
11
|
+
"@pioneer-platform/pioneer-events": "^8.16.0",
|
|
12
12
|
"coinselect": "^3.1.13",
|
|
13
13
|
"eventemitter3": "^5.0.1",
|
|
14
14
|
"neotraverse": "^0.6.8",
|
package/src/fees/index.ts
CHANGED
|
@@ -21,7 +21,7 @@ export interface NormalizedFeeRates {
|
|
|
21
21
|
average: FeeLevel;
|
|
22
22
|
fastest: FeeLevel;
|
|
23
23
|
networkId: string;
|
|
24
|
-
networkType: 'UTXO' | 'EVM' | 'COSMOS' | 'RIPPLE' | 'OTHER';
|
|
24
|
+
networkType: 'UTXO' | 'EVM' | 'COSMOS' | 'RIPPLE' | 'SOLANA' | 'OTHER';
|
|
25
25
|
raw: any; // Original API response for debugging
|
|
26
26
|
}
|
|
27
27
|
|
|
@@ -32,11 +32,12 @@ export interface FeeEstimate {
|
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
// Network type detection
|
|
35
|
-
function getNetworkType(networkId: string): 'UTXO' | 'EVM' | 'COSMOS' | 'RIPPLE' | 'OTHER' {
|
|
35
|
+
function getNetworkType(networkId: string): 'UTXO' | 'EVM' | 'COSMOS' | 'RIPPLE' | 'SOLANA' | 'OTHER' {
|
|
36
36
|
if (networkId.startsWith('bip122:')) return 'UTXO';
|
|
37
37
|
if (networkId.startsWith('eip155:')) return 'EVM';
|
|
38
38
|
if (networkId.startsWith('cosmos:')) return 'COSMOS';
|
|
39
39
|
if (networkId.startsWith('ripple:')) return 'RIPPLE';
|
|
40
|
+
if (networkId.startsWith('solana:')) return 'SOLANA';
|
|
40
41
|
return 'OTHER';
|
|
41
42
|
}
|
|
42
43
|
|
|
@@ -61,6 +62,7 @@ function getNetworkName(networkId: string): string {
|
|
|
61
62
|
'cosmos:thorchain-mainnet-v1': 'THORChain',
|
|
62
63
|
'cosmos:mayachain-mainnet-v1': 'Maya',
|
|
63
64
|
'ripple:4109c6f2045fc7eff4cde8f9905d19c2': 'Ripple',
|
|
65
|
+
'solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp': 'Solana',
|
|
64
66
|
};
|
|
65
67
|
return networkNames[networkId] || networkId;
|
|
66
68
|
}
|
|
@@ -104,6 +106,12 @@ export async function getFees(
|
|
|
104
106
|
return getRippleFees(networkId);
|
|
105
107
|
}
|
|
106
108
|
|
|
109
|
+
// Hardcode Solana fees (fixed fee model)
|
|
110
|
+
if (networkId === 'solana:5eykt4usfv8p8njdtrepy1vzqkqzkvdp') {
|
|
111
|
+
console.log(tag, 'Using hardcoded fees for Solana: 0.000005 SOL (5000 lamports)');
|
|
112
|
+
return getSolanaFees(networkId);
|
|
113
|
+
}
|
|
114
|
+
|
|
107
115
|
// Hardcode DOGE fees at 10 sat/byte (API and Blockbook often unreliable for DOGE)
|
|
108
116
|
if (networkId === 'bip122:00000000001a91e3dace36e2be3bf030') {
|
|
109
117
|
console.log(tag, 'Using hardcoded fees for Dogecoin: 10 sat/byte');
|
|
@@ -473,6 +481,8 @@ function getDefaultUnit(networkType: string): string {
|
|
|
473
481
|
return 'uatom';
|
|
474
482
|
case 'RIPPLE':
|
|
475
483
|
return 'XRP';
|
|
484
|
+
case 'SOLANA':
|
|
485
|
+
return 'SOL';
|
|
476
486
|
default:
|
|
477
487
|
return 'units';
|
|
478
488
|
}
|
|
@@ -491,6 +501,8 @@ function getDefaultDescription(networkType: string, networkName: string): string
|
|
|
491
501
|
return `Transaction fee for ${networkName}`;
|
|
492
502
|
case 'RIPPLE':
|
|
493
503
|
return `Fixed transaction fee for ${networkName}`;
|
|
504
|
+
case 'SOLANA':
|
|
505
|
+
return `Fixed transaction fee for ${networkName}`;
|
|
494
506
|
default:
|
|
495
507
|
return `Transaction fee for ${networkName}`;
|
|
496
508
|
}
|
|
@@ -521,6 +533,11 @@ function getEstimatedTime(networkType: string, priority: string): string {
|
|
|
521
533
|
medium: '~4 seconds',
|
|
522
534
|
high: '~4 seconds',
|
|
523
535
|
},
|
|
536
|
+
SOLANA: {
|
|
537
|
+
low: '~1 second',
|
|
538
|
+
medium: '~1 second',
|
|
539
|
+
high: '~1 second',
|
|
540
|
+
},
|
|
524
541
|
};
|
|
525
542
|
|
|
526
543
|
return times[networkType]?.[priority] || '~varies';
|
|
@@ -620,6 +637,48 @@ function getRippleFees(networkId: string): NormalizedFeeRates {
|
|
|
620
637
|
};
|
|
621
638
|
}
|
|
622
639
|
|
|
640
|
+
/**
|
|
641
|
+
* Get hardcoded Solana fees
|
|
642
|
+
* Solana uses a fixed fee model with very low transaction costs (5000 lamports)
|
|
643
|
+
*/
|
|
644
|
+
function getSolanaFees(networkId: string): NormalizedFeeRates {
|
|
645
|
+
const networkName = getNetworkName(networkId);
|
|
646
|
+
|
|
647
|
+
// Solana standard fee is 5000 lamports = 0.000005 SOL
|
|
648
|
+
// This is the typical fee for a simple transfer (1 signature)
|
|
649
|
+
const standardFee = '0.000005';
|
|
650
|
+
|
|
651
|
+
return {
|
|
652
|
+
slow: {
|
|
653
|
+
label: 'Standard',
|
|
654
|
+
value: standardFee,
|
|
655
|
+
unit: 'SOL',
|
|
656
|
+
description: `Fixed fee for ${networkName}. Solana uses a deterministic fee model.`,
|
|
657
|
+
estimatedTime: '~1 second',
|
|
658
|
+
priority: 'low',
|
|
659
|
+
},
|
|
660
|
+
average: {
|
|
661
|
+
label: 'Standard',
|
|
662
|
+
value: standardFee,
|
|
663
|
+
unit: 'SOL',
|
|
664
|
+
description: `Fixed fee for ${networkName}. Solana uses a deterministic fee model.`,
|
|
665
|
+
estimatedTime: '~1 second',
|
|
666
|
+
priority: 'medium',
|
|
667
|
+
},
|
|
668
|
+
fastest: {
|
|
669
|
+
label: 'Standard',
|
|
670
|
+
value: standardFee,
|
|
671
|
+
unit: 'SOL',
|
|
672
|
+
description: `Fixed fee for ${networkName}. Solana uses a deterministic fee model.`,
|
|
673
|
+
estimatedTime: '~1 second',
|
|
674
|
+
priority: 'high',
|
|
675
|
+
},
|
|
676
|
+
networkId,
|
|
677
|
+
networkType: 'SOLANA',
|
|
678
|
+
raw: { hardcoded: true, fee: standardFee, unit: 'SOL', lamports: 5000 },
|
|
679
|
+
};
|
|
680
|
+
}
|
|
681
|
+
|
|
623
682
|
/**
|
|
624
683
|
* Get fallback fees when API fails
|
|
625
684
|
*/
|
|
@@ -637,6 +696,7 @@ function getFallbackFees(networkId: string): NormalizedFeeRates {
|
|
|
637
696
|
UTXO: { slow: '1', average: '2', fastest: '3', unit: 'sat/vB' },
|
|
638
697
|
EVM: { slow: '1', average: '1.5', fastest: '2', unit: 'gwei' },
|
|
639
698
|
RIPPLE: { slow: '0.00001', average: '0.00001', fastest: '0.00001', unit: 'XRP' },
|
|
699
|
+
SOLANA: { slow: '0.000005', average: '0.000005', fastest: '0.000005', unit: 'SOL' },
|
|
640
700
|
};
|
|
641
701
|
|
|
642
702
|
const fallback = fallbacks[networkType] || fallbacks.UTXO;
|
|
@@ -709,6 +769,13 @@ export function estimateTransactionFee(
|
|
|
709
769
|
unit: 'XRP',
|
|
710
770
|
};
|
|
711
771
|
|
|
772
|
+
case 'SOLANA':
|
|
773
|
+
// Solana has fixed fees (5000 lamports)
|
|
774
|
+
return {
|
|
775
|
+
amount: feeRate,
|
|
776
|
+
unit: 'SOL',
|
|
777
|
+
};
|
|
778
|
+
|
|
712
779
|
default:
|
|
713
780
|
return {
|
|
714
781
|
amount: feeRate,
|