starknet 4.18.0 → 4.19.1
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/CHANGELOG.md +24 -0
- package/dist/index.d.ts +70 -1
- package/dist/index.global.js +215 -43
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +215 -43
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +215 -43
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,27 @@
|
|
|
1
|
+
## [4.19.1](https://github.com/0xs34n/starknet.js/compare/v4.19.0...v4.19.1) (2023-01-10)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
- describeIfDevnetSequencer ([4a088ad](https://github.com/0xs34n/starknet.js/commit/4a088ada404ef912976141d8fba1c66d791c273c))
|
|
6
|
+
- es6 ([e85ad45](https://github.com/0xs34n/starknet.js/commit/e85ad45c5565d93417b1a18e3663bd6c5e8861c1))
|
|
7
|
+
- estimate fee response bulk type ([78a1444](https://github.com/0xs34n/starknet.js/commit/78a14445c75b7ec259d6cfecd1cc17869b507dd8))
|
|
8
|
+
- tests ([5ab047f](https://github.com/0xs34n/starknet.js/commit/5ab047ff0b272057e70a29e909084d083db36a96))
|
|
9
|
+
|
|
10
|
+
# [4.19.0](https://github.com/0xs34n/starknet.js/compare/v4.18.0...v4.19.0) (2023-01-09)
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
- merge develop into feat/add_estimate_fee_bulk ([88e76af](https://github.com/0xs34n/starknet.js/commit/88e76af68dd711b3f277c0a6d4f1935710aba4d7))
|
|
15
|
+
- update getEstimateFeeBulk function ([4b22c82](https://github.com/0xs34n/starknet.js/commit/4b22c8212f4586b37dc7c8ddfad77955e44b1b12))
|
|
16
|
+
- update types & add separate responseParser for estimateFeeBulk ([52110b2](https://github.com/0xs34n/starknet.js/commit/52110b289e3dfbbe449cf195709b2714f295a70d))
|
|
17
|
+
|
|
18
|
+
### Features
|
|
19
|
+
|
|
20
|
+
- add function estimateInvokeFeeBulk ([e716a18](https://github.com/0xs34n/starknet.js/commit/e716a1882f3ac37d17eae72a51cd3c4fc4649bcb))
|
|
21
|
+
- update estimateFeeBulk ([5ee94f7](https://github.com/0xs34n/starknet.js/commit/5ee94f78af681690905e1ead1de711e3a43c0774))
|
|
22
|
+
- update estimateFeeBulk function & doc ([ce20139](https://github.com/0xs34n/starknet.js/commit/ce201394142a19c4810a1e44cb3f601b815a11fe))
|
|
23
|
+
- update sequencer api ([a12f99e](https://github.com/0xs34n/starknet.js/commit/a12f99ea6e93fb5d44d4d07f7fa8cc2d997db91a))
|
|
24
|
+
|
|
1
25
|
# [4.18.0](https://github.com/0xs34n/starknet.js/compare/v4.17.1...v4.18.0) (2022-12-23)
|
|
2
26
|
|
|
3
27
|
### Bug Fixes
|
package/dist/index.d.ts
CHANGED
|
@@ -741,6 +741,32 @@ declare type InvocationsDetails = {
|
|
|
741
741
|
declare type InvocationsDetailsWithNonce = InvocationsDetails & {
|
|
742
742
|
nonce: BigNumberish;
|
|
743
743
|
};
|
|
744
|
+
declare type TransactionBulk = Array<({
|
|
745
|
+
type: 'DECLARE';
|
|
746
|
+
} & {
|
|
747
|
+
payload: DeclareContractPayload;
|
|
748
|
+
}) | ({
|
|
749
|
+
type: 'DEPLOY';
|
|
750
|
+
} & {
|
|
751
|
+
payload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[];
|
|
752
|
+
}) | ({
|
|
753
|
+
type: 'DEPLOY_ACCOUNT';
|
|
754
|
+
} & {
|
|
755
|
+
payload: DeployAccountContractPayload;
|
|
756
|
+
}) | ({
|
|
757
|
+
type: 'INVOKE_FUNCTION';
|
|
758
|
+
} & {
|
|
759
|
+
payload: AllowArray<Call>;
|
|
760
|
+
})>;
|
|
761
|
+
declare type InvocationBulk = Array<(({
|
|
762
|
+
type: 'DECLARE';
|
|
763
|
+
} & DeclareContractTransaction) | ({
|
|
764
|
+
type: 'DEPLOY_ACCOUNT';
|
|
765
|
+
} & DeployAccountContractTransaction) | ({
|
|
766
|
+
type: 'INVOKE_FUNCTION';
|
|
767
|
+
} & Invocation)) & InvocationsDetailsWithNonce & {
|
|
768
|
+
blockIdentifier: BlockNumber | BigNumberish;
|
|
769
|
+
}>;
|
|
744
770
|
declare type Status = 'NOT_RECEIVED' | 'RECEIVED' | 'PENDING' | 'ACCEPTED_ON_L2' | 'ACCEPTED_ON_L1' | 'REJECTED';
|
|
745
771
|
declare type TransactionStatus = 'TRANSACTION_RECEIVED';
|
|
746
772
|
declare type TransactionType = 'DECLARE' | 'DEPLOY' | 'INVOKE_FUNCTION' | 'DEPLOY_ACCOUNT';
|
|
@@ -1042,10 +1068,12 @@ declare type EstimateFeeAction = {
|
|
|
1042
1068
|
type: 'DEPLOY';
|
|
1043
1069
|
payload: UniversalDeployerContractPayload;
|
|
1044
1070
|
};
|
|
1071
|
+
declare type EstimateFeeResponseBulk = Array<EstimateFeeResponse>;
|
|
1045
1072
|
|
|
1046
1073
|
interface EstimateFee extends EstimateFeeResponse {
|
|
1047
1074
|
suggestedMaxFee: BN__default;
|
|
1048
1075
|
}
|
|
1076
|
+
declare type EstimateFeeBulk = Array<EstimateFee>;
|
|
1049
1077
|
interface EstimateFeeDetails {
|
|
1050
1078
|
nonce?: BigNumberish;
|
|
1051
1079
|
blockIdentifier?: BlockIdentifier;
|
|
@@ -1261,6 +1289,7 @@ declare namespace Sequencer {
|
|
|
1261
1289
|
fee_estimation: Sequencer.EstimateFeeResponse;
|
|
1262
1290
|
};
|
|
1263
1291
|
type SimulateTransaction = Omit<InvokeFunctionTransaction, 'max_fee' | 'entry_point_type'>;
|
|
1292
|
+
type EstimateFeeRequestBulk = AllowArray<InvokeEstimateFee | DeclareEstimateFee | DeployEstimateFee | DeployAccountEstimateFee>;
|
|
1264
1293
|
type EstimateFeeResponse = {
|
|
1265
1294
|
overall_fee: number;
|
|
1266
1295
|
gas_price: number;
|
|
@@ -1270,6 +1299,7 @@ declare namespace Sequencer {
|
|
|
1270
1299
|
amount: BN__default;
|
|
1271
1300
|
unit: string;
|
|
1272
1301
|
};
|
|
1302
|
+
type EstimateFeeResponseBulk = AllowArray<EstimateFeeResponse>;
|
|
1273
1303
|
type Endpoints = {
|
|
1274
1304
|
get_contract_addresses: {
|
|
1275
1305
|
QUERY: never;
|
|
@@ -1397,6 +1427,13 @@ declare namespace Sequencer {
|
|
|
1397
1427
|
REQUEST: SimulateTransaction;
|
|
1398
1428
|
RESPONSE: TransactionSimulationResponse;
|
|
1399
1429
|
};
|
|
1430
|
+
estimate_fee_bulk: {
|
|
1431
|
+
QUERY: {
|
|
1432
|
+
blockIdentifier: BlockIdentifier;
|
|
1433
|
+
};
|
|
1434
|
+
REQUEST: EstimateFeeRequestBulk;
|
|
1435
|
+
RESPONSE: EstimateFeeResponseBulk;
|
|
1436
|
+
};
|
|
1400
1437
|
};
|
|
1401
1438
|
}
|
|
1402
1439
|
|
|
@@ -1581,6 +1618,19 @@ declare abstract class ProviderInterface {
|
|
|
1581
1618
|
* @returns the estimated fee
|
|
1582
1619
|
*/
|
|
1583
1620
|
abstract getDeployAccountEstimateFee(transaction: DeployAccountContractTransaction, details: InvocationsDetailsWithNonce, blockIdentifier?: BlockIdentifier): Promise<EstimateFeeResponse>;
|
|
1621
|
+
/**
|
|
1622
|
+
* Estimates the fee for a list of INVOKE transaction
|
|
1623
|
+
*
|
|
1624
|
+
* @param invocations the array of invocation and invocation details object containing:
|
|
1625
|
+
* - contractAddress - the address of the account
|
|
1626
|
+
* - calldata - (defaults to []) the calldata
|
|
1627
|
+
* - signature - (defaults to []) the signature
|
|
1628
|
+
* - nonce - optional nonce
|
|
1629
|
+
* - version - optional version
|
|
1630
|
+
* @param blockIdentifier - block identifier
|
|
1631
|
+
* @returns the estimated fee
|
|
1632
|
+
*/
|
|
1633
|
+
abstract getEstimateFeeBulk(invocations: InvocationBulk, blockIdentifier?: BlockIdentifier): Promise<EstimateFeeResponseBulk>;
|
|
1584
1634
|
/**
|
|
1585
1635
|
* Wait for the transaction to be accepted
|
|
1586
1636
|
* @param txHash - transaction hash
|
|
@@ -1630,6 +1680,7 @@ declare class RpcProvider implements ProviderInterface {
|
|
|
1630
1680
|
getInvokeEstimateFee(invocation: Invocation, invocationDetails: InvocationsDetailsWithNonce, blockIdentifier?: BlockIdentifier): Promise<EstimateFeeResponse>;
|
|
1631
1681
|
getDeclareEstimateFee({ senderAddress, contractDefinition, signature }: DeclareContractTransaction, details: InvocationsDetailsWithNonce, blockIdentifier?: BlockIdentifier): Promise<EstimateFeeResponse>;
|
|
1632
1682
|
getDeployAccountEstimateFee({ classHash, constructorCalldata, addressSalt, signature }: DeployAccountContractTransaction, details: InvocationsDetailsWithNonce, blockIdentifier?: BlockIdentifier): Promise<EstimateFeeResponse>;
|
|
1683
|
+
getEstimateFeeBulk(_invocations: InvocationBulk, _blockIdentifier?: BlockIdentifier): Promise<EstimateFeeResponseBulk>;
|
|
1633
1684
|
declareContract({ contractDefinition, signature, senderAddress }: DeclareContractTransaction, details: InvocationsDetailsWithNonce): Promise<DeclareContractResponse>;
|
|
1634
1685
|
deployAccountContract({ classHash, constructorCalldata, addressSalt, signature }: DeployAccountContractTransaction, details: InvocationsDetailsWithNonce): Promise<DeployContractResponse>;
|
|
1635
1686
|
invokeFunction(functionInvocation: Invocation, details: InvocationsDetailsWithNonce): Promise<InvokeFunctionResponse>;
|
|
@@ -1714,6 +1765,7 @@ declare class SequencerProvider implements ProviderInterface {
|
|
|
1714
1765
|
getInvokeEstimateFee(invocation: Invocation, invocationDetails: InvocationsDetailsWithNonce, blockIdentifier?: BlockIdentifier): Promise<EstimateFeeResponse>;
|
|
1715
1766
|
getDeclareEstimateFee({ senderAddress, contractDefinition, signature }: DeclareContractTransaction, details: InvocationsDetailsWithNonce, blockIdentifier?: BlockIdentifier): Promise<EstimateFeeResponse>;
|
|
1716
1767
|
getDeployAccountEstimateFee({ classHash, addressSalt, constructorCalldata, signature }: DeployAccountContractTransaction, details: InvocationsDetailsWithNonce, blockIdentifier?: BlockIdentifier): Promise<EstimateFeeResponse>;
|
|
1768
|
+
getEstimateFeeBulk(invocations: InvocationBulk, blockIdentifier?: BlockIdentifier): Promise<EstimateFeeResponseBulk>;
|
|
1717
1769
|
getCode(contractAddress: string, blockIdentifier?: BlockIdentifier): Promise<Sequencer.GetCodeResponse>;
|
|
1718
1770
|
waitForTransaction(txHash: BigNumberish, retryInterval?: number, successStates?: string[]): Promise<GetTransactionReceiptResponse>;
|
|
1719
1771
|
/**
|
|
@@ -1758,6 +1810,7 @@ declare class Provider implements ProviderInterface {
|
|
|
1758
1810
|
getClassByHash(classHash: string): Promise<ContractClass>;
|
|
1759
1811
|
getEstimateFee(invocationWithTxType: Invocation, invocationDetails: InvocationsDetailsWithNonce, blockIdentifier: BlockIdentifier): Promise<EstimateFeeResponse>;
|
|
1760
1812
|
getInvokeEstimateFee(invocationWithTxType: Invocation, invocationDetails: InvocationsDetailsWithNonce, blockIdentifier?: BlockIdentifier): Promise<EstimateFeeResponse>;
|
|
1813
|
+
getEstimateFeeBulk(invocations: InvocationBulk, blockIdentifier?: BlockIdentifier): Promise<EstimateFeeResponseBulk>;
|
|
1761
1814
|
getNonceForAddress(contractAddress: string, blockIdentifier?: BlockIdentifier): Promise<BigNumberish>;
|
|
1762
1815
|
getStorageAt(contractAddress: string, key: BigNumberish, blockIdentifier?: BlockIdentifier): Promise<BigNumberish>;
|
|
1763
1816
|
getTransaction(txHash: BigNumberish): Promise<GetTransactionResponse>;
|
|
@@ -2049,6 +2102,17 @@ declare abstract class AccountInterface extends ProviderInterface {
|
|
|
2049
2102
|
* - optional maxFee
|
|
2050
2103
|
*/
|
|
2051
2104
|
abstract estimateDeployFee(deployContractPayload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[], transactionsDetail?: InvocationsDetails): Promise<EstimateFeeResponse>;
|
|
2105
|
+
/**
|
|
2106
|
+
* Estimate Fee for executing a list of transactions on starknet
|
|
2107
|
+
* Contract must be deployed for fee estimation to be possible
|
|
2108
|
+
*
|
|
2109
|
+
* @param transactions array of transaction object containing :
|
|
2110
|
+
* - type - the type of transaction : 'DECLARE' | 'DEPLOY' | 'INVOKE_FUNCTION' | 'DEPLOY_ACCOUNT'
|
|
2111
|
+
* - payload - the payload of the transaction
|
|
2112
|
+
*
|
|
2113
|
+
* @returns response from estimate_fee
|
|
2114
|
+
*/
|
|
2115
|
+
abstract estimateFeeBulk(transactions: TransactionBulk, estimateFeeDetails?: EstimateFeeDetails): Promise<EstimateFeeResponseBulk>;
|
|
2052
2116
|
/**
|
|
2053
2117
|
* Invoke execute function in account contract
|
|
2054
2118
|
*
|
|
@@ -2228,6 +2292,8 @@ declare class Account extends Provider implements AccountInterface {
|
|
|
2228
2292
|
estimateDeclareFee({ classHash, contract }: DeclareContractPayload, { blockIdentifier, nonce: providedNonce }?: EstimateFeeDetails): Promise<EstimateFee>;
|
|
2229
2293
|
estimateAccountDeployFee({ classHash, addressSalt, constructorCalldata, contractAddress: providedContractAddress, }: DeployAccountContractPayload, { blockIdentifier }?: EstimateFeeDetails): Promise<EstimateFee>;
|
|
2230
2294
|
estimateDeployFee(payload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[], transactionsDetail?: InvocationsDetails | undefined): Promise<EstimateFee>;
|
|
2295
|
+
estimateFeeBulk(transactions: TransactionBulk, { nonce: providedNonce, blockIdentifier }?: EstimateFeeDetails): Promise<EstimateFeeBulk>;
|
|
2296
|
+
buildInvocation(call: Array<Call>, signerDetails: InvocationsSignerDetails): Promise<Invocation>;
|
|
2231
2297
|
execute(calls: AllowArray<Call>, abis?: Abi[] | undefined, transactionsDetail?: InvocationsDetails): Promise<InvokeFunctionResponse>;
|
|
2232
2298
|
declare({ classHash, contract }: DeclareContractPayload, transactionsDetail?: InvocationsDetails): Promise<DeclareContractResponse>;
|
|
2233
2299
|
deploy(payload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[], details?: InvocationsDetails | undefined): Promise<MultiDeployContractResponse>;
|
|
@@ -2239,6 +2305,9 @@ declare class Account extends Provider implements AccountInterface {
|
|
|
2239
2305
|
verifyMessageHash(hash: BigNumberish, signature: Signature): Promise<boolean>;
|
|
2240
2306
|
verifyMessage(typedData: TypedData, signature: Signature): Promise<boolean>;
|
|
2241
2307
|
getSuggestedMaxFee({ type, payload }: EstimateFeeAction, details: EstimateFeeDetails): Promise<string>;
|
|
2308
|
+
buildDeclarePayload({ classHash, contract }: DeclareContractPayload, { nonce, chainId, version, walletAddress, maxFee }: InvocationsSignerDetails): Promise<DeclareContractTransaction>;
|
|
2309
|
+
buildAccountDeployPayload({ classHash, addressSalt, constructorCalldata, contractAddress: providedContractAddress, }: DeployAccountContractPayload, { nonce, chainId, version, maxFee }: InvocationsSignerDetails): Promise<DeployAccountContractTransaction>;
|
|
2310
|
+
buildUDCContractPayload(payload: UniversalDeployerContractPayload | UniversalDeployerContractPayload[]): Call[];
|
|
2242
2311
|
}
|
|
2243
2312
|
|
|
2244
2313
|
declare type CallOptions = {
|
|
@@ -2698,4 +2767,4 @@ declare function validateChecksumAddress(address: string): boolean;
|
|
|
2698
2767
|
declare function isUrl(s?: string): boolean;
|
|
2699
2768
|
declare function buildUrl(baseUrl: string, defaultPath: string, urlOrPath?: string): string;
|
|
2700
2769
|
|
|
2701
|
-
export { Abi, AbiEntry, Account, AccountInterface, AllowArray, Args, AsyncContractFunction, BlockNumber, BlockTag, Call, CallContractResponse, CallDetails, CallL1Handler, CallOptions, Calldata, CommonTransactionReceiptResponse, CommonTransactionResponse, CompiledContract, CompressedCompiledContract, CompressedProgram, Contract, ContractClass, ContractEntryPoint, ContractFactory, ContractFunction, ContractInterface, DeclareContractPayload, DeclareContractResponse, DeclareContractTransaction, DeclareDeployContractPayload, DeclareDeployUDCResponse, DeclareSignerDetails, DeclareTransactionReceiptResponse, DeclareTransactionResponse, DeployAccountContractPayload, DeployAccountContractTransaction, DeployAccountSignerDetails, DeployContractPayload, DeployContractResponse, DeployContractUDCResponse, EntryPointType, EntryPointsByType, EstimateFee, EstimateFeeAction, EstimateFeeDetails, EstimateFeeResponse, Event, ExecutionResources, FunctionAbi, FunctionInvocation, GatewayError, GetBlockResponse, GetCodeResponse, GetContractAddressesResponse, GetTransactionReceiptResponse, GetTransactionResponse, GetTransactionStatusResponse, HttpError, Invocation, InvocationsDetails, InvocationsDetailsWithNonce, InvocationsSignerDetails, InvokeFunctionResponse, InvokeTransactionReceiptResponse, InvokeTransactionResponse, KeyPair, MessageToL1, MessageToL2, MultiDeployContractResponse, Overrides, ParsedStruct, Program, Provider, ProviderInterface, ProviderOptions, RPC, RawArgs, RawCalldata, Result, RpcProvider, RpcProviderOptions, Sequencer, SequencerProvider, SequencerProviderOptions, Signature, Signer, SignerInterface, Status, Struct, StructAbi, TransactionStatus, TransactionTraceResponse, TransactionType, UniversalDeployerContractPayload, addAddressPadding, buildUrl, constants, defaultProvider, ellipticCurve as ec, encode, getChecksumAddress, hash, isUrl, json, merkle, number, shortString, stark, transaction, index as typedData, uint256, validateAndParseAddress, validateChecksumAddress };
|
|
2770
|
+
export { Abi, AbiEntry, Account, AccountInterface, AllowArray, Args, AsyncContractFunction, BlockNumber, BlockTag, Call, CallContractResponse, CallDetails, CallL1Handler, CallOptions, Calldata, CommonTransactionReceiptResponse, CommonTransactionResponse, CompiledContract, CompressedCompiledContract, CompressedProgram, Contract, ContractClass, ContractEntryPoint, ContractFactory, ContractFunction, ContractInterface, DeclareContractPayload, DeclareContractResponse, DeclareContractTransaction, DeclareDeployContractPayload, DeclareDeployUDCResponse, DeclareSignerDetails, DeclareTransactionReceiptResponse, DeclareTransactionResponse, DeployAccountContractPayload, DeployAccountContractTransaction, DeployAccountSignerDetails, DeployContractPayload, DeployContractResponse, DeployContractUDCResponse, EntryPointType, EntryPointsByType, EstimateFee, EstimateFeeAction, EstimateFeeBulk, EstimateFeeDetails, EstimateFeeResponse, EstimateFeeResponseBulk, Event, ExecutionResources, FunctionAbi, FunctionInvocation, GatewayError, GetBlockResponse, GetCodeResponse, GetContractAddressesResponse, GetTransactionReceiptResponse, GetTransactionResponse, GetTransactionStatusResponse, HttpError, Invocation, InvocationBulk, InvocationsDetails, InvocationsDetailsWithNonce, InvocationsSignerDetails, InvokeFunctionResponse, InvokeTransactionReceiptResponse, InvokeTransactionResponse, KeyPair, MessageToL1, MessageToL2, MultiDeployContractResponse, Overrides, ParsedStruct, Program, Provider, ProviderInterface, ProviderOptions, RPC, RawArgs, RawCalldata, Result, RpcProvider, RpcProviderOptions, Sequencer, SequencerProvider, SequencerProviderOptions, Signature, Signer, SignerInterface, Status, Struct, StructAbi, TransactionBulk, TransactionStatus, TransactionTraceResponse, TransactionType, UniversalDeployerContractPayload, addAddressPadding, buildUrl, constants, defaultProvider, ellipticCurve as ec, encode, getChecksumAddress, hash, isUrl, json, merkle, number, shortString, stark, transaction, index as typedData, uint256, validateAndParseAddress, validateChecksumAddress };
|
package/dist/index.global.js
CHANGED
|
@@ -20754,6 +20754,9 @@ var starknet = (() => {
|
|
|
20754
20754
|
block_id
|
|
20755
20755
|
}).then(this.responseParser.parseFeeEstimateResponse);
|
|
20756
20756
|
}
|
|
20757
|
+
async getEstimateFeeBulk(_invocations, _blockIdentifier = this.blockIdentifier) {
|
|
20758
|
+
throw new Error("RPC does not implement getInvokeEstimateFeeBulk function");
|
|
20759
|
+
}
|
|
20757
20760
|
async declareContract({ contractDefinition, signature, senderAddress }, details) {
|
|
20758
20761
|
return this.fetchEndpoint("starknet_addDeclareTransaction", {
|
|
20759
20762
|
declare_transaction: {
|
|
@@ -20935,6 +20938,27 @@ var starknet = (() => {
|
|
|
20935
20938
|
overall_fee: toBN(res.amount)
|
|
20936
20939
|
};
|
|
20937
20940
|
}
|
|
20941
|
+
parseFeeEstimateBulkResponse(res) {
|
|
20942
|
+
return [].concat(res).map((item) => {
|
|
20943
|
+
if ("overall_fee" in item) {
|
|
20944
|
+
let gasInfo = {};
|
|
20945
|
+
try {
|
|
20946
|
+
gasInfo = {
|
|
20947
|
+
gas_consumed: toBN(item.gas_usage),
|
|
20948
|
+
gas_price: toBN(item.gas_price)
|
|
20949
|
+
};
|
|
20950
|
+
} catch {
|
|
20951
|
+
}
|
|
20952
|
+
return {
|
|
20953
|
+
overall_fee: toBN(item.overall_fee),
|
|
20954
|
+
...gasInfo
|
|
20955
|
+
};
|
|
20956
|
+
}
|
|
20957
|
+
return {
|
|
20958
|
+
overall_fee: toBN(item.amount)
|
|
20959
|
+
};
|
|
20960
|
+
});
|
|
20961
|
+
}
|
|
20938
20962
|
parseCallContractResponse(res) {
|
|
20939
20963
|
return {
|
|
20940
20964
|
result: res.result
|
|
@@ -21119,6 +21143,7 @@ var starknet = (() => {
|
|
|
21119
21143
|
"call_contract",
|
|
21120
21144
|
"estimate_fee",
|
|
21121
21145
|
"estimate_message_fee",
|
|
21146
|
+
"estimate_fee_bulk",
|
|
21122
21147
|
"simulate_transaction"
|
|
21123
21148
|
];
|
|
21124
21149
|
return postMethodEndpoints.includes(endpoint) ? "POST" : "GET";
|
|
@@ -21321,6 +21346,42 @@ var starknet = (() => {
|
|
|
21321
21346
|
}
|
|
21322
21347
|
).then(this.responseParser.parseFeeEstimateResponse);
|
|
21323
21348
|
}
|
|
21349
|
+
async getEstimateFeeBulk(invocations, blockIdentifier = this.blockIdentifier) {
|
|
21350
|
+
const params = invocations.map((invocation) => {
|
|
21351
|
+
let res;
|
|
21352
|
+
if (invocation.type === "INVOKE_FUNCTION") {
|
|
21353
|
+
res = {
|
|
21354
|
+
type: invocation.type,
|
|
21355
|
+
contract_address: invocation.contractAddress,
|
|
21356
|
+
calldata: invocation.calldata ?? []
|
|
21357
|
+
};
|
|
21358
|
+
} else if (invocation.type === "DECLARE") {
|
|
21359
|
+
res = {
|
|
21360
|
+
type: invocation.type,
|
|
21361
|
+
sender_address: invocation.senderAddress,
|
|
21362
|
+
contract_class: invocation.contractDefinition
|
|
21363
|
+
};
|
|
21364
|
+
} else {
|
|
21365
|
+
res = {
|
|
21366
|
+
type: invocation.type,
|
|
21367
|
+
class_hash: toHex(toBN(invocation.classHash)),
|
|
21368
|
+
constructor_calldata: bigNumberishArrayToDecimalStringArray(
|
|
21369
|
+
invocation.constructorCalldata || []
|
|
21370
|
+
),
|
|
21371
|
+
contract_address_salt: toHex(toBN(invocation.addressSalt || 0))
|
|
21372
|
+
};
|
|
21373
|
+
}
|
|
21374
|
+
return {
|
|
21375
|
+
...res,
|
|
21376
|
+
signature: bigNumberishArrayToDecimalStringArray(invocation.signature || []),
|
|
21377
|
+
version: toHex(toBN((invocation == null ? void 0 : invocation.version) || 1)),
|
|
21378
|
+
nonce: toHex(toBN(invocation.nonce))
|
|
21379
|
+
};
|
|
21380
|
+
});
|
|
21381
|
+
return this.fetchEndpoint("estimate_fee_bulk", { blockIdentifier }, params).then(
|
|
21382
|
+
this.responseParser.parseFeeEstimateBulkResponse
|
|
21383
|
+
);
|
|
21384
|
+
}
|
|
21324
21385
|
async getCode(contractAddress, blockIdentifier = this.blockIdentifier) {
|
|
21325
21386
|
return this.fetchEndpoint("get_code", { contractAddress, blockIdentifier });
|
|
21326
21387
|
}
|
|
@@ -21423,6 +21484,9 @@ ${res.tx_failure_reason.error_message}` : res.tx_status;
|
|
|
21423
21484
|
blockIdentifier
|
|
21424
21485
|
);
|
|
21425
21486
|
}
|
|
21487
|
+
async getEstimateFeeBulk(invocations, blockIdentifier) {
|
|
21488
|
+
return this.provider.getEstimateFeeBulk(invocations, blockIdentifier);
|
|
21489
|
+
}
|
|
21426
21490
|
async getNonceForAddress(contractAddress, blockIdentifier) {
|
|
21427
21491
|
return this.provider.getNonceForAddress(contractAddress, blockIdentifier);
|
|
21428
21492
|
}
|
|
@@ -22477,10 +22541,9 @@ ${res.tx_failure_reason.error_message}` : res.tx_status;
|
|
|
22477
22541
|
version: version3,
|
|
22478
22542
|
chainId
|
|
22479
22543
|
};
|
|
22480
|
-
const
|
|
22481
|
-
const calldata = fromCallsToExecuteCalldata(transactions);
|
|
22544
|
+
const invocation = await this.buildInvocation(transactions, signerDetails);
|
|
22482
22545
|
const response = await super.getInvokeEstimateFee(
|
|
22483
|
-
{
|
|
22546
|
+
{ ...invocation },
|
|
22484
22547
|
{ version: version3, nonce },
|
|
22485
22548
|
blockIdentifier
|
|
22486
22549
|
);
|
|
@@ -22494,17 +22557,12 @@ ${res.tx_failure_reason.error_message}` : res.tx_status;
|
|
|
22494
22557
|
const nonce = toBN(providedNonce ?? await this.getNonce());
|
|
22495
22558
|
const version3 = toBN(feeTransactionVersion);
|
|
22496
22559
|
const chainId = await this.getChainId();
|
|
22497
|
-
const
|
|
22498
|
-
|
|
22499
|
-
|
|
22500
|
-
|
|
22501
|
-
chainId,
|
|
22502
|
-
maxFee: ZERO,
|
|
22503
|
-
version: version3,
|
|
22504
|
-
nonce
|
|
22505
|
-
});
|
|
22560
|
+
const payload = await this.buildDeclarePayload(
|
|
22561
|
+
{ classHash, contract },
|
|
22562
|
+
{ nonce, chainId, version: version3, walletAddress: this.address, maxFee: ZERO }
|
|
22563
|
+
);
|
|
22506
22564
|
const response = await super.getDeclareEstimateFee(
|
|
22507
|
-
{
|
|
22565
|
+
{ ...payload },
|
|
22508
22566
|
{ version: version3, nonce },
|
|
22509
22567
|
blockIdentifier
|
|
22510
22568
|
);
|
|
@@ -22523,19 +22581,12 @@ ${res.tx_failure_reason.error_message}` : res.tx_status;
|
|
|
22523
22581
|
const nonce = "0x0";
|
|
22524
22582
|
const version3 = toBN(feeTransactionVersion);
|
|
22525
22583
|
const chainId = await this.getChainId();
|
|
22526
|
-
const
|
|
22527
|
-
|
|
22528
|
-
|
|
22529
|
-
|
|
22530
|
-
chainId,
|
|
22531
|
-
maxFee: ZERO,
|
|
22532
|
-
version: version3,
|
|
22533
|
-
nonce,
|
|
22534
|
-
addressSalt,
|
|
22535
|
-
constructorCalldata
|
|
22536
|
-
});
|
|
22584
|
+
const payload = await this.buildAccountDeployPayload(
|
|
22585
|
+
{ classHash, addressSalt, constructorCalldata, contractAddress: providedContractAddress },
|
|
22586
|
+
{ nonce, chainId, version: version3, walletAddress: this.address, maxFee: ZERO }
|
|
22587
|
+
);
|
|
22537
22588
|
const response = await super.getDeployAccountEstimateFee(
|
|
22538
|
-
{
|
|
22589
|
+
{ ...payload },
|
|
22539
22590
|
{ version: version3, nonce },
|
|
22540
22591
|
blockIdentifier
|
|
22541
22592
|
);
|
|
@@ -22546,27 +22597,85 @@ ${res.tx_failure_reason.error_message}` : res.tx_status;
|
|
|
22546
22597
|
};
|
|
22547
22598
|
}
|
|
22548
22599
|
async estimateDeployFee(payload, transactionsDetail) {
|
|
22549
|
-
const calls =
|
|
22550
|
-
|
|
22551
|
-
|
|
22552
|
-
|
|
22553
|
-
|
|
22554
|
-
|
|
22555
|
-
|
|
22556
|
-
|
|
22600
|
+
const calls = this.buildUDCContractPayload(payload);
|
|
22601
|
+
return this.estimateInvokeFee(calls, transactionsDetail);
|
|
22602
|
+
}
|
|
22603
|
+
async estimateFeeBulk(transactions, { nonce: providedNonce, blockIdentifier } = {}) {
|
|
22604
|
+
const nonce = toBN(providedNonce ?? await this.getNonce());
|
|
22605
|
+
const version3 = toBN(feeTransactionVersion);
|
|
22606
|
+
const chainId = await this.getChainId();
|
|
22607
|
+
const params = await Promise.all(
|
|
22608
|
+
[].concat(transactions).map(async (transaction, index) => {
|
|
22609
|
+
const signerDetails = {
|
|
22610
|
+
walletAddress: this.address,
|
|
22611
|
+
nonce: toBN(Number(nonce) + index),
|
|
22612
|
+
maxFee: ZERO,
|
|
22613
|
+
version: version3,
|
|
22614
|
+
chainId
|
|
22615
|
+
};
|
|
22616
|
+
const txPayload = transaction.payload;
|
|
22617
|
+
let res;
|
|
22618
|
+
if (typeof transaction === "object" && transaction.type === "INVOKE_FUNCTION") {
|
|
22619
|
+
const invocation = await this.buildInvocation(
|
|
22620
|
+
Array.isArray(txPayload) ? txPayload : [txPayload],
|
|
22621
|
+
signerDetails
|
|
22622
|
+
);
|
|
22623
|
+
res = {
|
|
22624
|
+
type: "INVOKE_FUNCTION",
|
|
22625
|
+
...invocation,
|
|
22626
|
+
version: version3,
|
|
22627
|
+
nonce: toBN(Number(nonce) + index),
|
|
22628
|
+
blockIdentifier
|
|
22629
|
+
};
|
|
22630
|
+
} else if (typeof transaction === "object" && transaction.type === "DECLARE") {
|
|
22631
|
+
const declareContractPayload = await this.buildDeclarePayload(txPayload, signerDetails);
|
|
22632
|
+
res = {
|
|
22633
|
+
type: "DECLARE",
|
|
22634
|
+
...declareContractPayload,
|
|
22635
|
+
version: version3,
|
|
22636
|
+
nonce: toBN(Number(nonce) + index),
|
|
22637
|
+
blockIdentifier
|
|
22638
|
+
};
|
|
22639
|
+
} else if (typeof transaction === "object" && transaction.type === "DEPLOY_ACCOUNT") {
|
|
22640
|
+
const payload = await this.buildAccountDeployPayload(txPayload, signerDetails);
|
|
22641
|
+
res = {
|
|
22642
|
+
type: "DEPLOY_ACCOUNT",
|
|
22643
|
+
...payload,
|
|
22644
|
+
version: version3,
|
|
22645
|
+
nonce,
|
|
22646
|
+
blockIdentifier
|
|
22647
|
+
};
|
|
22648
|
+
} else if (typeof transaction === "object" && transaction.type === "DEPLOY") {
|
|
22649
|
+
const calls = this.buildUDCContractPayload(txPayload);
|
|
22650
|
+
const invocation = await this.buildInvocation(calls, signerDetails);
|
|
22651
|
+
res = {
|
|
22652
|
+
type: "INVOKE_FUNCTION",
|
|
22653
|
+
...invocation,
|
|
22654
|
+
version: version3,
|
|
22655
|
+
nonce: toBN(Number(nonce) + index),
|
|
22656
|
+
blockIdentifier
|
|
22657
|
+
};
|
|
22658
|
+
}
|
|
22659
|
+
return res;
|
|
22660
|
+
})
|
|
22661
|
+
);
|
|
22662
|
+
const response = await super.getEstimateFeeBulk(params, blockIdentifier);
|
|
22663
|
+
return [].concat(response).map((elem) => {
|
|
22664
|
+
const suggestedMaxFee = estimatedFeeToMaxFee(elem.overall_fee);
|
|
22557
22665
|
return {
|
|
22558
|
-
|
|
22559
|
-
|
|
22560
|
-
calldata: [
|
|
22561
|
-
classHash,
|
|
22562
|
-
salt,
|
|
22563
|
-
toCairoBool(unique),
|
|
22564
|
-
compiledConstructorCallData.length,
|
|
22565
|
-
...compiledConstructorCallData
|
|
22566
|
-
]
|
|
22666
|
+
...elem,
|
|
22667
|
+
suggestedMaxFee
|
|
22567
22668
|
};
|
|
22568
22669
|
});
|
|
22569
|
-
|
|
22670
|
+
}
|
|
22671
|
+
async buildInvocation(call, signerDetails) {
|
|
22672
|
+
const calldata = fromCallsToExecuteCalldata(call);
|
|
22673
|
+
const signature = await this.signer.signTransaction(call, signerDetails);
|
|
22674
|
+
return {
|
|
22675
|
+
contractAddress: this.address,
|
|
22676
|
+
calldata,
|
|
22677
|
+
signature
|
|
22678
|
+
};
|
|
22570
22679
|
}
|
|
22571
22680
|
async execute(calls, abis = void 0, transactionsDetail = {}) {
|
|
22572
22681
|
const transactions = Array.isArray(calls) ? calls : [calls];
|
|
@@ -22755,6 +22864,69 @@ ${res.tx_failure_reason.error_message}` : res.tx_status;
|
|
|
22755
22864
|
}
|
|
22756
22865
|
return feeEstimate.suggestedMaxFee.toString();
|
|
22757
22866
|
}
|
|
22867
|
+
async buildDeclarePayload({ classHash, contract }, { nonce, chainId, version: version3, walletAddress, maxFee }) {
|
|
22868
|
+
const contractDefinition = parseContract(contract);
|
|
22869
|
+
const signature = await this.signer.signDeclareTransaction({
|
|
22870
|
+
classHash,
|
|
22871
|
+
senderAddress: walletAddress,
|
|
22872
|
+
chainId,
|
|
22873
|
+
maxFee,
|
|
22874
|
+
version: version3,
|
|
22875
|
+
nonce
|
|
22876
|
+
});
|
|
22877
|
+
return {
|
|
22878
|
+
senderAddress: walletAddress,
|
|
22879
|
+
signature,
|
|
22880
|
+
contractDefinition
|
|
22881
|
+
};
|
|
22882
|
+
}
|
|
22883
|
+
async buildAccountDeployPayload({
|
|
22884
|
+
classHash,
|
|
22885
|
+
addressSalt = 0,
|
|
22886
|
+
constructorCalldata = [],
|
|
22887
|
+
contractAddress: providedContractAddress
|
|
22888
|
+
}, { nonce, chainId, version: version3, maxFee }) {
|
|
22889
|
+
const contractAddress = providedContractAddress ?? calculateContractAddressFromHash(addressSalt, classHash, constructorCalldata, 0);
|
|
22890
|
+
const signature = await this.signer.signDeployAccountTransaction({
|
|
22891
|
+
classHash,
|
|
22892
|
+
contractAddress,
|
|
22893
|
+
chainId,
|
|
22894
|
+
maxFee,
|
|
22895
|
+
version: version3,
|
|
22896
|
+
nonce,
|
|
22897
|
+
addressSalt,
|
|
22898
|
+
constructorCalldata
|
|
22899
|
+
});
|
|
22900
|
+
return {
|
|
22901
|
+
classHash,
|
|
22902
|
+
addressSalt,
|
|
22903
|
+
constructorCalldata,
|
|
22904
|
+
signature
|
|
22905
|
+
};
|
|
22906
|
+
}
|
|
22907
|
+
buildUDCContractPayload(payload) {
|
|
22908
|
+
const calls = [].concat(payload).map((it) => {
|
|
22909
|
+
const {
|
|
22910
|
+
classHash,
|
|
22911
|
+
salt = "0",
|
|
22912
|
+
unique = true,
|
|
22913
|
+
constructorCalldata = []
|
|
22914
|
+
} = it;
|
|
22915
|
+
const compiledConstructorCallData = compileCalldata(constructorCalldata);
|
|
22916
|
+
return {
|
|
22917
|
+
contractAddress: UDC.ADDRESS,
|
|
22918
|
+
entrypoint: UDC.ENTRYPOINT,
|
|
22919
|
+
calldata: [
|
|
22920
|
+
classHash,
|
|
22921
|
+
salt,
|
|
22922
|
+
toCairoBool(unique),
|
|
22923
|
+
compiledConstructorCallData.length,
|
|
22924
|
+
...compiledConstructorCallData
|
|
22925
|
+
]
|
|
22926
|
+
};
|
|
22927
|
+
});
|
|
22928
|
+
return calls;
|
|
22929
|
+
}
|
|
22758
22930
|
};
|
|
22759
22931
|
|
|
22760
22932
|
// src/account/interface.ts
|