@pioneer-platform/pioneer-sdk 8.17.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 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.17.0",
4
+ "version": "8.20.0",
5
5
  "dependencies": {
6
6
  "keepkey-vault-sdk": "^1.0.2",
7
- "@pioneer-platform/pioneer-caip": "^9.12.0",
7
+ "@pioneer-platform/pioneer-caip": "^9.15.0",
8
8
  "@pioneer-platform/pioneer-client": "^9.10.24",
9
- "@pioneer-platform/pioneer-coins": "^9.13.0",
10
- "@pioneer-platform/pioneer-discovery": "^8.17.0",
11
- "@pioneer-platform/pioneer-events": "^8.13.0",
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,