1- import {
2- RpcProvider as NewRpcProvider ,
3- Account as NewAccount ,
4- } from "starknet-4220" ;
1+ import { Account as LatestAccount } from "starknet" ;
2+ import { Account as Account4220 } from "starknet-4220" ;
53import {
64 Call ,
75 RpcProvider as OldRpcProvider ,
86 Account as OldAccount ,
97 ec ,
10- } from "starknet" ;
8+ } from "starknet-410 " ;
119import { BigNumber } from "ethers" ;
1210import { Account } from "./ui/pickAccounts" ;
1311import { lte } from "semver" ;
14- import { getRpcNodeUrlForNetworkId } from "./getProvider" ;
12+ import {
13+ getProvider4220ForNetworkId ,
14+ getProviderForNetworkId ,
15+ getRpcNodeUrlForNetworkId ,
16+ } from "./getProvider" ;
1517
1618export async function estimateFee ( account : Account , call : Call [ ] | Call ) {
1719 const calls = Array . isArray ( call ) ? call : [ call ] ;
@@ -24,15 +26,43 @@ export async function estimateFee(account: Account, call: Call[] | Call) {
2426 ) ;
2527 }
2628 const nodeUrl = getRpcNodeUrlForNetworkId ( account . networkId ) ;
29+
2730 try {
28- const oldRpcProvider = new OldRpcProvider ( { nodeUrl } ) ;
29- const a = new OldAccount ( oldRpcProvider , lowerCaseAddress , keyPair ) ;
31+ if ( ! account . privateKey ) {
32+ throw new Error ( "Account private key is missing" ) ;
33+ }
34+ const provider = getProviderForNetworkId ( account . networkId ) ;
35+ const a = new LatestAccount ( provider , lowerCaseAddress , account . privateKey ) ;
3036 return await a . estimateFee ( calls ) ;
31- } catch {
32- const newRpcProvider = new NewRpcProvider ( { nodeUrl } ) ;
33- const a = new NewAccount ( newRpcProvider , lowerCaseAddress , keyPair ) ;
37+ } catch ( e ) {
38+ console . warn (
39+ `Fallback to old provider - estimateFee error ${ e } ` ,
40+ ( e as any ) ?. errorCode
41+ ) ;
42+ }
43+
44+ try {
45+ const provider = getProvider4220ForNetworkId ( account . networkId ) ;
46+ const a = new Account4220 ( provider , lowerCaseAddress , keyPair ) ;
3447 return a . estimateFee ( calls ) ;
48+ } catch ( e ) {
49+ console . warn (
50+ `Fallback to old provider - estimateFee error ${ e } ` ,
51+ ( e as any ) ?. errorCode
52+ ) ;
53+ }
54+
55+ try {
56+ const provider = new OldRpcProvider ( { nodeUrl } ) ;
57+ const a = new OldAccount ( provider , lowerCaseAddress , keyPair ) ;
58+ return await a . estimateFee ( calls ) ;
59+ } catch ( e ) {
60+ console . warn (
61+ `Oldest provider failed - estimateFee error ${ e } ` ,
62+ ( e as any ) ?. errorCode
63+ ) ;
3564 }
65+ throw new Error ( "Estimate fee failed" ) ;
3666}
3767
3868export async function execute ( account : Account , call : Call [ ] | Call ) {
@@ -45,28 +75,69 @@ export async function execute(account: Account, call: Call[] | Call) {
4575 "Account cant be controlled with the selected private key or seed"
4676 ) ;
4777 }
78+
4879 const nodeUrl = getRpcNodeUrlForNetworkId ( account . networkId ) ;
4980 if ( account . version && lte ( account . version , "0.2.2" ) ) {
5081 try {
51- const oldRpcProvider = new OldRpcProvider ( { nodeUrl } ) ;
52- const a = new OldAccount ( oldRpcProvider , lowerCaseAddress , keyPair ) ;
82+ const provider = new OldRpcProvider ( { nodeUrl } ) ;
83+ const a = new OldAccount ( provider , lowerCaseAddress , keyPair ) ;
5384 return await a . execute ( calls ) ;
5485 } catch ( e ) {
55- console . warn ( "Fallback to new provider" , ( e as any ) ?. errorCode ) ;
56- const newRpcProvider = new NewRpcProvider ( { nodeUrl } ) ;
57- const a = new NewAccount ( newRpcProvider , lowerCaseAddress , keyPair ) ;
86+ console . warn (
87+ `Fallback to old provider - estimateFee error ${ e } ` ,
88+ ( e as any ) ?. errorCode
89+ ) ;
90+ }
91+ try {
92+ const provider = getProvider4220ForNetworkId ( account . networkId ) ;
93+ const a = new Account4220 ( provider , lowerCaseAddress , keyPair ) ;
5894 return await a . execute ( calls ) ;
95+ } catch ( e ) {
96+ console . warn (
97+ `Oldest provider failed - execute error ${ e } ` ,
98+ ( e as any ) ?. errorCode
99+ ) ;
59100 }
60101 } else {
61102 try {
62- const newRpcProvider = new NewRpcProvider ( { nodeUrl } ) ;
63- const a = new NewAccount ( newRpcProvider , lowerCaseAddress , keyPair ) ;
103+ if ( ! account . privateKey ) {
104+ throw new Error ( "Account private key is missing" ) ;
105+ }
106+ const provider = getProviderForNetworkId ( account . networkId ) ;
107+ const a = new LatestAccount (
108+ provider ,
109+ lowerCaseAddress ,
110+ account . privateKey
111+ ) ;
64112 return await a . execute ( calls ) ;
65113 } catch ( e ) {
66- console . warn ( "Fallback to old provider" , ( e as any ) ?. errorCode ) ;
67- const oldRpcProvider = new OldRpcProvider ( { nodeUrl } ) ;
68- const a = new OldAccount ( oldRpcProvider , lowerCaseAddress , keyPair ) ;
114+ console . warn (
115+ `Fallback to older provider - execute error ${ e } ` ,
116+ ( e as any ) ?. errorCode
117+ ) ;
118+ }
119+
120+ try {
121+ const provider = getProvider4220ForNetworkId ( account . networkId ) ;
122+ const a = new Account4220 ( provider , lowerCaseAddress , keyPair ) ;
69123 return await a . execute ( calls ) ;
124+ } catch ( e ) {
125+ console . warn (
126+ `Fallback to older provider - execute error ${ e } ` ,
127+ ( e as any ) ?. errorCode
128+ ) ;
129+ }
130+
131+ try {
132+ const provider = new OldRpcProvider ( { nodeUrl } ) ;
133+ const a = new OldAccount ( provider , lowerCaseAddress , keyPair ) ;
134+ return await a . execute ( calls ) ;
135+ } catch ( e ) {
136+ console . warn (
137+ `Oldest provider failed - execute error ${ e } ` ,
138+ ( e as any ) ?. errorCode
139+ ) ;
70140 }
71141 }
142+ throw new Error ( "Execute transation failed" ) ;
72143}
0 commit comments