Skip to content

Commit

Permalink
Refactor params
Browse files Browse the repository at this point in the history
- Rename StarknetDeployAccountParams -> StarknetDeployAccountParamsV3
- Rename StarknetInvokeParams -> StarknetInvokeParamsV3
- Split StarknetDeprecatedExecutionParams into StarknetInvokeParamsV1 and StarknetDeployAccountParamsV1
  • Loading branch information
DelevoXDG committed Jan 24, 2024
1 parent e257da3 commit 02dc74d
Show file tree
Hide file tree
Showing 6 changed files with 66 additions and 52 deletions.
32 changes: 16 additions & 16 deletions Sources/Starknet/Accounts/StarknetAccount.swift
Original file line number Diff line number Diff line change
Expand Up @@ -24,23 +24,23 @@ public class StarknetAccount: StarknetAccountProtocol {
self.cairoVersion = cairoVersion
}

private func makeInvokeTransactionV1(calldata: StarknetCalldata, signature: StarknetSignature, params: StarknetDeprecatedExecutionParams, forFeeEstimation: Bool = false) -> StarknetInvokeTransactionV1 {
private func makeInvokeTransactionV1(calldata: StarknetCalldata, signature: StarknetSignature, params: StarknetInvokeParamsV1, forFeeEstimation: Bool = false) -> StarknetInvokeTransactionV1 {
StarknetInvokeTransactionV1(senderAddress: address, calldata: calldata, signature: signature, maxFee: params.maxFee, nonce: params.nonce, forFeeEstimation: forFeeEstimation)
}

private func makeInvokeTransactionV3(calldata: StarknetCalldata, signature: StarknetSignature, params: StarknetInvokeParams, forFeeEstimation: Bool = false) -> StarknetInvokeTransactionV3 {
private func makeInvokeTransactionV3(calldata: StarknetCalldata, signature: StarknetSignature, params: StarknetInvokeParamsV3, forFeeEstimation: Bool = false) -> StarknetInvokeTransactionV3 {
StarknetInvokeTransactionV3(senderAddress: address, calldata: calldata, signature: signature, l1ResourceBounds: params.resourceBounds.l1Gas, nonce: params.nonce, forFeeEstimation: forFeeEstimation)
}

private func makeDeployAccountTransactionV1(classHash: Felt, salt: Felt, calldata: StarknetCalldata, signature: StarknetSignature, params: StarknetDeprecatedExecutionParams, forFeeEstimation: Bool) -> StarknetDeployAccountTransactionV1 {
private func makeDeployAccountTransactionV1(classHash: Felt, salt: Felt, calldata: StarknetCalldata, signature: StarknetSignature, params: StarknetDeployAccountParamsV1, forFeeEstimation: Bool) -> StarknetDeployAccountTransactionV1 {
StarknetDeployAccountTransactionV1(signature: signature, maxFee: params.maxFee, nonce: params.nonce, contractAddressSalt: salt, constructorCalldata: calldata, classHash: classHash, forFeeEstimation: forFeeEstimation)
}

private func makeDeployAccountTransactionV3(classHash: Felt, salt: Felt, calldata: StarknetCalldata, signature: StarknetSignature, params: StarknetDeployAccountParams, forFeeEstimation: Bool) -> StarknetDeployAccountTransactionV3 {
private func makeDeployAccountTransactionV3(classHash: Felt, salt: Felt, calldata: StarknetCalldata, signature: StarknetSignature, params: StarknetDeployAccountParamsV3, forFeeEstimation: Bool) -> StarknetDeployAccountTransactionV3 {
StarknetDeployAccountTransactionV3(signature: signature, l1ResourceBounds: params.resourceBounds.l1Gas, nonce: params.nonce, contractAddressSalt: salt, constructorCalldata: calldata, classHash: classHash, forFeeEstimation: forFeeEstimation)
}

public func signV1(calls: [StarknetCall], params: StarknetDeprecatedExecutionParams, forFeeEstimation: Bool) throws -> StarknetInvokeTransactionV1 {
public func signV1(calls: [StarknetCall], params: StarknetInvokeParamsV1, forFeeEstimation: Bool) throws -> StarknetInvokeTransactionV1 {
let calldata = starknetCallsToExecuteCalldata(calls: calls, cairoVersion: cairoVersion)

let transaction = makeInvokeTransactionV1(calldata: calldata, signature: [], params: params, forFeeEstimation: forFeeEstimation)
Expand All @@ -52,7 +52,7 @@ public class StarknetAccount: StarknetAccountProtocol {
return makeInvokeTransactionV1(calldata: calldata, signature: signature, params: params, forFeeEstimation: forFeeEstimation)
}

public func signV3(calls: [StarknetCall], params: StarknetInvokeParams, forFeeEstimation: Bool) throws -> StarknetInvokeTransactionV3 {
public func signV3(calls: [StarknetCall], params: StarknetInvokeParamsV3, forFeeEstimation: Bool) throws -> StarknetInvokeTransactionV3 {
let calldata = starknetCallsToExecuteCalldata(calls: calls, cairoVersion: cairoVersion)

let transaction = makeInvokeTransactionV3(calldata: calldata, signature: [], params: params, forFeeEstimation: forFeeEstimation)
Expand All @@ -64,7 +64,7 @@ public class StarknetAccount: StarknetAccountProtocol {
return makeInvokeTransactionV3(calldata: calldata, signature: signature, params: params, forFeeEstimation: forFeeEstimation)
}

public func signDeployAccountV1(classHash: Felt, calldata: StarknetCalldata, salt: Felt, params: StarknetDeprecatedExecutionParams, forFeeEstimation: Bool) throws -> StarknetDeployAccountTransactionV1 {
public func signDeployAccountV1(classHash: Felt, calldata: StarknetCalldata, salt: Felt, params: StarknetDeployAccountParamsV1, forFeeEstimation: Bool) throws -> StarknetDeployAccountTransactionV1 {
let transaction = makeDeployAccountTransactionV1(classHash: classHash, salt: salt, calldata: calldata, signature: [], params: params, forFeeEstimation: forFeeEstimation)

let hash = StarknetTransactionHashCalculator.computeHash(of: transaction, chainId: provider.starknetChainId)
Expand All @@ -74,7 +74,7 @@ public class StarknetAccount: StarknetAccountProtocol {
return makeDeployAccountTransactionV1(classHash: classHash, salt: salt, calldata: calldata, signature: signature, params: params, forFeeEstimation: forFeeEstimation)
}

public func signDeployAccountV3(classHash: Felt, calldata: StarknetCalldata, salt: Felt, params: StarknetDeployAccountParams, forFeeEstimation: Bool) throws -> StarknetDeployAccountTransactionV3 {
public func signDeployAccountV3(classHash: Felt, calldata: StarknetCalldata, salt: Felt, params: StarknetDeployAccountParamsV3, forFeeEstimation: Bool) throws -> StarknetDeployAccountTransactionV3 {
let transaction = makeDeployAccountTransactionV3(classHash: classHash, salt: salt, calldata: calldata, signature: [], params: params, forFeeEstimation: forFeeEstimation)

let hash = StarknetTransactionHashCalculator.computeHash(of: transaction, chainId: provider.starknetChainId)
Expand All @@ -84,7 +84,7 @@ public class StarknetAccount: StarknetAccountProtocol {
return makeDeployAccountTransactionV3(classHash: classHash, salt: salt, calldata: calldata, signature: signature, params: params, forFeeEstimation: forFeeEstimation)
}

public func executeV1(calls: [StarknetCall], params: StarknetOptionalDeprecatedExecutionParams) async throws -> StarknetInvokeTransactionResponse {
public func executeV1(calls: [StarknetCall], params: StarknetOptionalInvokeParamsV1) async throws -> StarknetInvokeTransactionResponse {
var nonce: Felt
var maxFee: Felt

Expand All @@ -101,13 +101,13 @@ public class StarknetAccount: StarknetAccountProtocol {
maxFee = feeEstimate.toMaxFee()
}

let params = StarknetDeprecatedExecutionParams(nonce: nonce, maxFee: maxFee)
let params = StarknetInvokeParamsV1(nonce: nonce, maxFee: maxFee)
let signedTransaction = try signV1(calls: calls, params: params, forFeeEstimation: false)

return try await provider.addInvokeTransaction(signedTransaction)
}

public func executeV3(calls: [StarknetCall], params: StarknetOptionalInvokeParams) async throws -> StarknetInvokeTransactionResponse {
public func executeV3(calls: [StarknetCall], params: StarknetOptionalInvokeParamsV3) async throws -> StarknetInvokeTransactionResponse {
var nonce: Felt
var resourceBounds: StarknetResourceBoundsMapping

Expand All @@ -124,35 +124,35 @@ public class StarknetAccount: StarknetAccountProtocol {
resourceBounds = feeEstimate.toResourceBounds()
}

let params = StarknetInvokeParams(nonce: nonce, l1ResourceBounds: resourceBounds.l1Gas)
let params = StarknetInvokeParamsV3(nonce: nonce, l1ResourceBounds: resourceBounds.l1Gas)
let signedTransaction = try signV3(calls: calls, params: params, forFeeEstimation: false)

return try await provider.addInvokeTransaction(signedTransaction)
}

public func estimateFeeV1(calls: [StarknetCall], nonce: Felt, skipValidate: Bool) async throws -> StarknetFeeEstimate {
let params = StarknetDeprecatedExecutionParams(nonce: nonce, maxFee: .zero)
let params = StarknetInvokeParamsV1(nonce: nonce, maxFee: .zero)
let signedTransaction = try signV1(calls: calls, params: params, forFeeEstimation: true)

return try await provider.estimateFee(for: signedTransaction, simulationFlags: skipValidate ? [.skipValidate] : [])
}

public func estimateFeeV3(calls: [StarknetCall], nonce: Felt, skipValidate: Bool) async throws -> StarknetFeeEstimate {
let params = StarknetInvokeParams(nonce: nonce, l1ResourceBounds: .zero)
let params = StarknetInvokeParamsV3(nonce: nonce, l1ResourceBounds: .zero)
let signedTransaction = try signV3(calls: calls, params: params, forFeeEstimation: true)

return try await provider.estimateFee(for: signedTransaction, simulationFlags: skipValidate ? [.skipValidate] : [])
}

public func estimateDeployAccountFeeV1(classHash: Felt, calldata: StarknetCalldata, salt: Felt, nonce: Felt, skipValidate: Bool) async throws -> StarknetFeeEstimate {
let params = StarknetDeprecatedExecutionParams(nonce: nonce, maxFee: 0)
let params = StarknetDeployAccountParamsV1(nonce: nonce, maxFee: 0)
let signedTransaction = try signDeployAccountV1(classHash: classHash, calldata: calldata, salt: salt, params: params, forFeeEstimation: true)

return try await provider.estimateFee(for: signedTransaction, simulationFlags: skipValidate ? [.skipValidate] : [])
}

public func estimateDeployAccountFeeV3(classHash: Felt, calldata: StarknetCalldata, salt: Felt, nonce: Felt, skipValidate: Bool) async throws -> StarknetFeeEstimate {
let params = StarknetDeployAccountParams(nonce: nonce, l1ResourceBounds: .zero)
let params = StarknetDeployAccountParamsV3(nonce: nonce, l1ResourceBounds: .zero)
let signedTransaction = try signDeployAccountV3(classHash: classHash, calldata: calldata, salt: salt, params: params, forFeeEstimation: true)

return try await provider.estimateFee(for: signedTransaction, simulationFlags: skipValidate ? [.skipValidate] : [])
Expand Down
32 changes: 16 additions & 16 deletions Sources/Starknet/Accounts/StarknetAccountProtocol.swift
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public protocol StarknetAccountProtocol {
/// - forFeeEstimation: Flag indicating whether the different version of transaction should be used; such transaction can only be used for fee estimation
///
/// - Returns: Signed invoke v1 transaction
func signV1(calls: [StarknetCall], params: StarknetDeprecatedExecutionParams, forFeeEstimation: Bool) throws -> StarknetInvokeTransactionV1
func signV1(calls: [StarknetCall], params: StarknetInvokeParamsV1, forFeeEstimation: Bool) throws -> StarknetInvokeTransactionV1

/// Sign list of calls as invoke transaction v3
///
Expand All @@ -22,7 +22,7 @@ public protocol StarknetAccountProtocol {
/// - forFeeEstimation: Flag indicating whether the different version of transaction should be used; such transaction can only be used for fee estimation
///
/// - Returns: Signed invoke v3 transaction
func signV3(calls: [StarknetCall], params: StarknetInvokeParams, forFeeEstimation: Bool) throws -> StarknetInvokeTransactionV3
func signV3(calls: [StarknetCall], params: StarknetInvokeParamsV3, forFeeEstimation: Bool) throws -> StarknetInvokeTransactionV3

/// Create and sign deploy account transaction v1
///
Expand All @@ -34,7 +34,7 @@ public protocol StarknetAccountProtocol {
/// - forFeeEstimation: Flag indicating whether the different version of transaction should be used; such transaction can only be used for fee estimation
///
/// - Returns: Signed deploy account transaction v1
func signDeployAccountV1(classHash: Felt, calldata: StarknetCalldata, salt: Felt, params: StarknetDeprecatedExecutionParams, forFeeEstimation: Bool) throws -> StarknetDeployAccountTransactionV1
func signDeployAccountV1(classHash: Felt, calldata: StarknetCalldata, salt: Felt, params: StarknetDeployAccountParamsV1, forFeeEstimation: Bool) throws -> StarknetDeployAccountTransactionV1

/// Create and sign deploy account transaction v3
///
Expand All @@ -46,7 +46,7 @@ public protocol StarknetAccountProtocol {
/// - forFeeEstimation: Flag indicating whether the different version of transaction should be used; such transaction can only be used for fee estimation
///
/// - Returns: Signed deploy account transaction v3
func signDeployAccountV3(classHash: Felt, calldata: StarknetCalldata, salt: Felt, params: StarknetDeployAccountParams, forFeeEstimation: Bool) throws -> StarknetDeployAccountTransactionV3
func signDeployAccountV3(classHash: Felt, calldata: StarknetCalldata, salt: Felt, params: StarknetDeployAccountParamsV3, forFeeEstimation: Bool) throws -> StarknetDeployAccountTransactionV3

/// Sign TypedData for off-chain usage with this account's privateKey.
///
Expand All @@ -72,7 +72,7 @@ public protocol StarknetAccountProtocol {
/// - params: additional params for a given transaction.
///
/// - Returns: InvokeTransactionResponse, containing transaction hash of submitted transaction.
func executeV1(calls: [StarknetCall], params: StarknetOptionalDeprecatedExecutionParams) async throws -> StarknetInvokeTransactionResponse
func executeV1(calls: [StarknetCall], params: StarknetOptionalInvokeParamsV1) async throws -> StarknetInvokeTransactionResponse

/// Execute list of calls as invoke transaction v3
///
Expand All @@ -81,7 +81,7 @@ public protocol StarknetAccountProtocol {
/// - params: additional params for a given transaction.
///
/// - Returns: InvokeTransactionResponse, containing transaction hash of submitted transaction.
func executeV3(calls: [StarknetCall], params: StarknetOptionalInvokeParams) async throws -> StarknetInvokeTransactionResponse
func executeV3(calls: [StarknetCall], params: StarknetOptionalInvokeParamsV3) async throws -> StarknetInvokeTransactionResponse

/// Execute list of calls as invoke transaction v1
///
Expand Down Expand Up @@ -158,7 +158,7 @@ public extension StarknetAccountProtocol {
/// - params: additional params for a given transaction
///
/// - Returns: Signed invoke transaction v1
func signV1(calls: [StarknetCall], params: StarknetDeprecatedExecutionParams) throws -> StarknetInvokeTransactionV1 {
func signV1(calls: [StarknetCall], params: StarknetInvokeParamsV1) throws -> StarknetInvokeTransactionV1 {
try signV1(calls: calls, params: params, forFeeEstimation: false)
}

Expand All @@ -170,7 +170,7 @@ public extension StarknetAccountProtocol {
/// - params: additional params for a given transaction
///
/// - Returns: Signed invoke transaction v3
func signV3(calls: [StarknetCall], params: StarknetInvokeParams) throws -> StarknetInvokeTransactionV3 {
func signV3(calls: [StarknetCall], params: StarknetInvokeParamsV3) throws -> StarknetInvokeTransactionV3 {
try signV3(calls: calls, params: params, forFeeEstimation: false)
}

Expand All @@ -185,7 +185,7 @@ public extension StarknetAccountProtocol {
///
/// - Returns: Signed deploy account transaction v1
func signDeployAccountV1(classHash: Felt, calldata: StarknetCalldata, salt: Felt, maxFee: Felt) throws -> StarknetDeployAccountTransactionV1 {
try signDeployAccountV1(classHash: classHash, calldata: calldata, salt: salt, params: StarknetDeprecatedExecutionParams(nonce: .zero, maxFee: maxFee), forFeeEstimation: false)
try signDeployAccountV1(classHash: classHash, calldata: calldata, salt: salt, params: StarknetDeployAccountParamsV1(nonce: .zero, maxFee: maxFee), forFeeEstimation: false)
}

/// Create and sign deploy account transaction v3
Expand All @@ -199,7 +199,7 @@ public extension StarknetAccountProtocol {
///
/// - Returns: Signed deploy account transaction v3
func signDeployAccountV3(classHash: Felt, calldata: StarknetCalldata, salt: Felt, l1ResourceBounds: StarknetResourceBounds) throws -> StarknetDeployAccountTransactionV3 {
try signDeployAccountV3(classHash: classHash, calldata: calldata, salt: salt, params: StarknetDeployAccountParams(nonce: .zero, l1ResourceBounds: l1ResourceBounds), forFeeEstimation: false)
try signDeployAccountV3(classHash: classHash, calldata: calldata, salt: salt, params: StarknetDeployAccountParamsV3(nonce: .zero, l1ResourceBounds: l1ResourceBounds), forFeeEstimation: false)
}

/// Sign a call as invoke transaction v1
Expand All @@ -210,7 +210,7 @@ public extension StarknetAccountProtocol {
/// - forFeeEstimation: Flag indicating whether the different version of transaction should be used; such transaction can only be used for fee estimation
///
/// - Returns: Signed invoke transaction v1
func signV1(call: StarknetCall, params: StarknetDeprecatedExecutionParams, forFeeEstimation: Bool = false) throws -> StarknetInvokeTransactionV1 {
func signV1(call: StarknetCall, params: StarknetInvokeParamsV1, forFeeEstimation: Bool = false) throws -> StarknetInvokeTransactionV1 {
try signV1(calls: [call], params: params, forFeeEstimation: forFeeEstimation)
}

Expand All @@ -221,7 +221,7 @@ public extension StarknetAccountProtocol {
/// - forFeeEstimation: Flag indicating whether the different version of transaction should be used; such transaction can only be used for fee estimation
///
/// - Returns: Signed invoke transaction v3
func signV3(call: StarknetCall, params: StarknetInvokeParams, forFeeEstimation: Bool = false) throws -> StarknetInvokeTransactionV3 {
func signV3(call: StarknetCall, params: StarknetInvokeParamsV3, forFeeEstimation: Bool = false) throws -> StarknetInvokeTransactionV3 {
try signV3(calls: [call], params: params, forFeeEstimation: forFeeEstimation)
}

Expand All @@ -232,7 +232,7 @@ public extension StarknetAccountProtocol {
///
/// - Returns: InvokeTransactionResponse, containing transaction hash of submitted transaction.
func executeV1(calls: [StarknetCall]) async throws -> StarknetInvokeTransactionResponse {
try await executeV1(calls: calls, params: StarknetOptionalDeprecatedExecutionParams())
try await executeV1(calls: calls, params: StarknetOptionalInvokeParamsV1())
}

/// Execute list of calls using invoke transaction v3
Expand All @@ -242,7 +242,7 @@ public extension StarknetAccountProtocol {
///
/// - Returns: InvokeTransactionResponse, containing transaction hash of submitted transaction.
func executeV3(calls: [StarknetCall]) async throws -> StarknetInvokeTransactionResponse {
try await executeV3(calls: calls, params: StarknetOptionalInvokeParams())
try await executeV3(calls: calls, params: StarknetOptionalInvokeParamsV3())
}

/// Execute a call as invoke transaction v1
Expand All @@ -252,7 +252,7 @@ public extension StarknetAccountProtocol {
/// - params: additional params for a given transaction
///
/// - Returns: InvokeTransactionResponse, containing transaction hash of submitted transaction.
func executeV1(call: StarknetCall, params: StarknetOptionalDeprecatedExecutionParams) async throws -> StarknetInvokeTransactionResponse {
func executeV1(call: StarknetCall, params: StarknetOptionalInvokeParamsV1) async throws -> StarknetInvokeTransactionResponse {
try await executeV1(calls: [call], params: params)
}

Expand All @@ -263,7 +263,7 @@ public extension StarknetAccountProtocol {
/// - params: additional params for a given transaction
///
/// - Returns: InvokeTransactionResponse, containing transaction hash of submitted transaction.
func executeV3(call: StarknetCall, params: StarknetOptionalInvokeParams) async throws -> StarknetInvokeTransactionResponse {
func executeV3(call: StarknetCall, params: StarknetOptionalInvokeParamsV3) async throws -> StarknetInvokeTransactionResponse {
try await executeV3(calls: [call], params: params)
}

Expand Down
Loading

0 comments on commit 02dc74d

Please sign in to comment.