starknet 3.18.2 → 3.19.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.
Files changed (158) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/__tests__/account.test.ts +11 -56
  3. package/__tests__/contract.test.ts +11 -49
  4. package/__tests__/defaultProvider.test.ts +321 -0
  5. package/__tests__/fixtures.ts +32 -11
  6. package/__tests__/rpcProvider.test.ts +17 -0
  7. package/__tests__/sequencerProvider.test.ts +45 -0
  8. package/account/default.d.ts +54 -77
  9. package/account/default.js +271 -596
  10. package/account/index.js +18 -31
  11. package/account/interface.d.ts +66 -95
  12. package/account/interface.js +20 -30
  13. package/constants.d.ts +17 -19
  14. package/constants.js +2038 -2059
  15. package/contract/contractFactory.d.ts +25 -29
  16. package/contract/contractFactory.js +94 -210
  17. package/contract/default.d.ts +117 -146
  18. package/contract/default.js +582 -776
  19. package/contract/index.js +19 -32
  20. package/contract/interface.d.ts +72 -92
  21. package/contract/interface.js +6 -5
  22. package/dist/account/default.d.ts +5 -9
  23. package/dist/account/default.js +35 -169
  24. package/dist/account/interface.d.ts +3 -15
  25. package/dist/contract/contractFactory.js +4 -4
  26. package/dist/contract/default.d.ts +3 -3
  27. package/dist/contract/default.js +3 -2
  28. package/dist/contract/interface.d.ts +2 -2
  29. package/dist/provider/default.d.ts +18 -134
  30. package/dist/provider/default.js +47 -411
  31. package/dist/provider/index.d.ts +2 -0
  32. package/dist/provider/index.js +2 -0
  33. package/dist/provider/interface.d.ts +45 -50
  34. package/dist/provider/rpc.d.ts +57 -0
  35. package/dist/provider/rpc.js +364 -0
  36. package/dist/provider/sequencer.d.ts +66 -0
  37. package/dist/provider/sequencer.js +443 -0
  38. package/dist/types/account.d.ts +2 -3
  39. package/dist/types/api/index.d.ts +16 -0
  40. package/dist/types/api/index.js +18 -0
  41. package/dist/types/api/rpc.d.ts +221 -0
  42. package/dist/types/{api.js → api/rpc.js} +0 -0
  43. package/dist/types/api/sequencer.d.ts +289 -0
  44. package/dist/types/api/sequencer.js +2 -0
  45. package/dist/types/index.d.ts +3 -1
  46. package/dist/types/index.js +15 -1
  47. package/dist/types/lib.d.ts +3 -1
  48. package/dist/types/provider.d.ts +86 -0
  49. package/dist/types/provider.js +2 -0
  50. package/dist/utils/provider.d.ts +4 -0
  51. package/dist/utils/provider.js +38 -0
  52. package/dist/utils/responseParser/index.d.ts +11 -0
  53. package/dist/utils/responseParser/index.js +9 -0
  54. package/dist/utils/responseParser/rpc.d.ts +13 -0
  55. package/dist/utils/responseParser/rpc.js +96 -0
  56. package/dist/utils/responseParser/sequencer.d.ts +13 -0
  57. package/dist/utils/responseParser/sequencer.js +124 -0
  58. package/index.js +42 -75
  59. package/package.json +1 -1
  60. package/provider/default.d.ts +21 -175
  61. package/provider/default.js +139 -704
  62. package/provider/errors.d.ts +4 -4
  63. package/provider/errors.js +30 -40
  64. package/provider/index.d.ts +2 -0
  65. package/provider/index.js +22 -33
  66. package/provider/interface.d.ts +104 -131
  67. package/provider/interface.js +6 -5
  68. package/provider/rpc.d.ts +57 -0
  69. package/provider/rpc.js +364 -0
  70. package/provider/sequencer.d.ts +66 -0
  71. package/provider/sequencer.js +443 -0
  72. package/provider/utils.d.ts +7 -9
  73. package/provider/utils.js +39 -44
  74. package/signer/default.d.ts +5 -9
  75. package/signer/default.js +72 -177
  76. package/signer/index.js +18 -31
  77. package/signer/interface.d.ts +29 -33
  78. package/signer/interface.js +6 -5
  79. package/src/account/default.ts +26 -146
  80. package/src/account/interface.ts +5 -20
  81. package/src/contract/contractFactory.ts +3 -6
  82. package/src/contract/default.ts +6 -4
  83. package/src/contract/interface.ts +2 -2
  84. package/src/provider/default.ts +63 -395
  85. package/src/provider/index.ts +2 -0
  86. package/src/provider/interface.ts +68 -63
  87. package/src/provider/rpc.ts +300 -0
  88. package/src/provider/sequencer.ts +384 -0
  89. package/src/types/account.ts +2 -3
  90. package/src/types/api/index.ts +17 -0
  91. package/src/types/api/rpc.ts +247 -0
  92. package/src/types/api/sequencer.ts +331 -0
  93. package/src/types/index.ts +3 -1
  94. package/src/types/lib.ts +3 -1
  95. package/src/types/provider.ts +108 -0
  96. package/src/utils/provider.ts +28 -0
  97. package/src/utils/responseParser/index.ts +28 -0
  98. package/src/utils/responseParser/rpc.ts +93 -0
  99. package/src/utils/responseParser/sequencer.ts +127 -0
  100. package/types/account.d.ts +5 -7
  101. package/types/account.js +2 -2
  102. package/types/api/index.d.ts +16 -0
  103. package/types/api/index.js +18 -0
  104. package/types/api/rpc.d.ts +221 -0
  105. package/types/api/rpc.js +2 -0
  106. package/types/api/sequencer.d.ts +289 -0
  107. package/types/api/sequencer.js +2 -0
  108. package/types/contract.d.ts +1 -1
  109. package/types/contract.js +2 -2
  110. package/types/index.d.ts +3 -1
  111. package/types/index.js +35 -34
  112. package/types/lib.d.ts +36 -41
  113. package/types/lib.js +2 -2
  114. package/types/provider.d.ts +86 -0
  115. package/types/provider.js +2 -0
  116. package/types/signer.d.ts +2 -2
  117. package/types/signer.js +2 -2
  118. package/utils/address.js +26 -37
  119. package/utils/ellipticCurve.d.ts +1 -6
  120. package/utils/ellipticCurve.js +73 -137
  121. package/utils/encode.js +49 -85
  122. package/utils/hash.d.ts +4 -31
  123. package/utils/hash.js +76 -141
  124. package/utils/json.d.ts +13 -45
  125. package/utils/json.js +15 -22
  126. package/utils/number.d.ts +2 -9
  127. package/utils/number.js +47 -81
  128. package/utils/provider.d.ts +4 -0
  129. package/utils/provider.js +38 -0
  130. package/utils/responseParser/index.d.ts +11 -0
  131. package/utils/responseParser/index.js +9 -0
  132. package/utils/responseParser/rpc.d.ts +13 -0
  133. package/utils/responseParser/rpc.js +96 -0
  134. package/utils/responseParser/sequencer.d.ts +13 -0
  135. package/utils/responseParser/sequencer.js +124 -0
  136. package/utils/shortString.js +13 -21
  137. package/utils/stark.d.ts +0 -1
  138. package/utils/stark.js +59 -93
  139. package/utils/transaction.d.ts +3 -6
  140. package/utils/transaction.js +50 -81
  141. package/utils/typedData/index.d.ts +3 -15
  142. package/utils/typedData/index.js +109 -175
  143. package/utils/typedData/types.d.ts +9 -9
  144. package/utils/typedData/types.js +2 -2
  145. package/utils/typedData/utils.js +6 -6
  146. package/utils/uint256.d.ts +5 -5
  147. package/utils/uint256.js +16 -26
  148. package/www/docs/API/account.md +3 -4
  149. package/www/docs/API/contract.md +2 -2
  150. package/www/docs/API/contractFactory.md +2 -2
  151. package/www/docs/API/provider.md +185 -74
  152. package/www/guides/account.md +1 -8
  153. package/www/guides/erc20.md +3 -0
  154. package/__tests__/provider.test.ts +0 -168
  155. package/dist/types/api.d.ts +0 -261
  156. package/src/types/api.ts +0 -303
  157. package/types/api.d.ts +0 -287
  158. package/types/api.js +0 -2
@@ -592,6 +592,8 @@ var Contract = /** @class */ (function () {
592
592
  nonce: options.nonce,
593
593
  });
594
594
  }
595
+ // eslint-disable-next-line no-console
596
+ console.warn("Invoking ".concat(method, " without an account. This will not work on a public node."));
595
597
  return this.providerOrAccount.invokeFunction(__assign(__assign({}, invocation), { signature: options.signature || [] }));
596
598
  };
597
599
  Contract.prototype.call = function (method, args, _a) {
@@ -612,7 +614,7 @@ var Contract = /** @class */ (function () {
612
614
  contractAddress: this.address,
613
615
  calldata: calldata,
614
616
  entrypoint: method,
615
- }, { blockIdentifier: blockIdentifier })
617
+ }, blockIdentifier)
616
618
  .then(function (x) { return _this.parseResponse(method, x.result); })];
617
619
  });
618
620
  });
@@ -623,7 +625,6 @@ var Contract = /** @class */ (function () {
623
625
  var invocation;
624
626
  var _a;
625
627
  return __generator(this, function (_b) {
626
- // TODO; remove error as soon as estimate fees are supported
627
628
  // ensure contract is connected
628
629
  (0, minimalistic_assert_1.default)(this.address !== null, 'contract isnt connected to an address');
629
630
  // validate method and args
@@ -1,7 +1,7 @@
1
1
  import { AccountInterface } from '../account';
2
2
  import { ProviderInterface } from '../provider';
3
3
  import { BlockIdentifier } from '../provider/utils';
4
- import { Abi, AddTransactionResponse, AsyncContractFunction, ContractFunction, Invocation, Overrides, Result } from '../types';
4
+ import { Abi, AsyncContractFunction, ContractFunction, Invocation, InvokeFunctionResponse, Overrides, Result } from '../types';
5
5
  export declare abstract class ContractInterface {
6
6
  abstract abi: Abi;
7
7
  abstract address: string;
@@ -56,7 +56,7 @@ export declare abstract class ContractInterface {
56
56
  * @param args Array of the arguments for the invoke
57
57
  * @returns Add Transaction Response
58
58
  */
59
- abstract invoke(method: string, args?: Array<any>, options?: Overrides): Promise<AddTransactionResponse>;
59
+ abstract invoke(method: string, args?: Array<any>, options?: Overrides): Promise<InvokeFunctionResponse>;
60
60
  /**
61
61
  * Calls a method on a contract
62
62
  *
@@ -1,143 +1,27 @@
1
1
  import { StarknetChainId } from '../constants';
2
- import { Abi, AddTransactionResponse, Call, CallContractResponse, DeclareContractPayload, DeployContractPayload, Endpoints, GetBlockResponse, GetCodeResponse, GetContractAddressesResponse, GetTransactionResponse, GetTransactionStatusResponse, GetTransactionTraceResponse, Invocation, TransactionReceiptResponse } from '../types';
2
+ import { BlockTag, Call, CallContractResponse, ContractClass, DeclareContractPayload, DeclareContractResponse, DeployContractPayload, DeployContractResponse, EstimateFeeResponse, GetBlockResponse, GetTransactionReceiptResponse, GetTransactionResponse, Invocation, InvocationsDetails, InvokeFunctionResponse } from '../types';
3
3
  import { BigNumberish } from '../utils/number';
4
4
  import { ProviderInterface } from './interface';
5
+ import { RpcProviderOptions } from './rpc';
6
+ import { SequencerProviderOptions } from './sequencer';
5
7
  import { BlockIdentifier } from './utils';
6
- declare type NetworkName = 'mainnet-alpha' | 'goerli-alpha';
7
- declare type ProviderOptions = {
8
- network: NetworkName;
9
- } | {
10
- baseUrl: string;
11
- };
8
+ export interface ProviderOptions {
9
+ sequencer?: SequencerProviderOptions;
10
+ rpc?: RpcProviderOptions;
11
+ }
12
12
  export declare class Provider implements ProviderInterface {
13
- baseUrl: string;
14
- feederGatewayUrl: string;
15
- gatewayUrl: string;
16
- chainId: StarknetChainId;
17
- constructor(optionsOrProvider?: ProviderOptions | ProviderInterface);
18
- protected static getNetworkFromName(name: NetworkName): "https://alpha-mainnet.starknet.io" | "https://alpha4.starknet.io";
19
- protected static getChainIdFromBaseUrl(baseUrl: string): StarknetChainId;
20
- private getFetchUrl;
21
- private getFetchMethod;
22
- private getQueryString;
23
- private getHeaders;
24
- protected fetchEndpoint<T extends keyof Endpoints>(endpoint: T, ...[query, request]: Endpoints[T]['QUERY'] extends never ? Endpoints[T]['REQUEST'] extends never ? [] : [undefined, Endpoints[T]['REQUEST']] : Endpoints[T]['REQUEST'] extends never ? [Endpoints[T]['QUERY']] : [Endpoints[T]['QUERY'], Endpoints[T]['REQUEST']]): Promise<Endpoints[T]['RESPONSE']>;
25
- /**
26
- * Gets the smart contract address on the goerli testnet.
27
- *
28
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L13-L15)
29
- * @returns starknet smart contract addresses
30
- */
31
- getContractAddresses(): Promise<GetContractAddressesResponse>;
32
- /**
33
- * Calls a function on the StarkNet contract.
34
- *
35
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L25-L39)
36
- *
37
- * @param invokeTransaction - transaction to be invoked
38
- * @param blockHash
39
- * @param blockNumber
40
- * @returns the result of the function on the smart contract.
41
- */
42
- callContract({ contractAddress, entrypoint, calldata }: Call, { blockIdentifier }?: {
43
- blockIdentifier?: BlockIdentifier;
44
- }): Promise<CallContractResponse>;
45
- /**
46
- * Gets the block information
47
- *
48
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L41-L53)
49
- *
50
- * @param blockHash
51
- * @param blockNumber
52
- * @returns the block object { block_number, previous_block_number, state_root, status, timestamp, transaction_receipts, transactions }
53
- */
13
+ private provider;
14
+ constructor(providerOrOptions?: ProviderOptions | ProviderInterface);
15
+ get chainId(): StarknetChainId;
54
16
  getBlock(blockIdentifier?: BlockIdentifier): Promise<GetBlockResponse>;
55
- /**
56
- * Gets the code of the deployed contract.
57
- *
58
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L55-L68)
59
- *
60
- * @param contractAddress
61
- * @param blockHash
62
- * @param blockNumber
63
- * @returns Bytecode and ABI of compiled contract
64
- */
65
- getCode(contractAddress: string, blockIdentifier?: BlockIdentifier): Promise<GetCodeResponse>;
66
- /**
67
- * Gets the contract's storage variable at a specific key.
68
- *
69
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/fc97bdd8322a7df043c87c371634b26c15ed6cee/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L70-L85)
70
- *
71
- * @param contractAddress
72
- * @param key - from getStorageVarAddress('<STORAGE_VARIABLE_NAME>') (WIP)
73
- * @param blockHash
74
- * @param blockNumber
75
- * @returns the value of the storage variable
76
- */
77
- getStorageAt(contractAddress: string, key: BigNumberish, blockIdentifier?: BlockIdentifier): Promise<object>;
78
- /**
79
- * Gets the status of a transaction.
80
- *
81
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L48-L52)
82
- *
83
- * @param txHash
84
- * @returns the transaction status object { block_number, tx_status: NOT_RECEIVED | RECEIVED | PENDING | REJECTED | ACCEPTED_ONCHAIN }
85
- */
86
- getTransactionStatus(txHash: BigNumberish): Promise<GetTransactionStatusResponse>;
87
- /**
88
- * Gets the transaction receipt from a tx hash.
89
- *
90
- * [Reference] (https://github.com/starkware-libs/cairo-lang/blob/167b28bcd940fd25ea3816204fa882a0b0a49603/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L183)
91
- *
92
- * @param txHash
93
- * @returns the transaction receipt object
94
- */
95
- getTransactionReceipt(txHash: BigNumberish): Promise<TransactionReceiptResponse>;
96
- /**
97
- * Gets the transaction information from a tx id.
98
- *
99
- * [Reference](https://github.com/starkware-libs/cairo-lang/blob/f464ec4797361b6be8989e36e02ec690e74ef285/src/starkware/starknet/services/api/feeder_gateway/feeder_gateway_client.py#L54-L58)
100
- *
101
- * @param txHash
102
- * @returns the transacton object { transaction_id, status, transaction, block_number?, block_number?, transaction_index?, transaction_failure_reason? }
103
- */
17
+ getClassAt(contractAddress: string, blockIdentifier?: BlockIdentifier): Promise<ContractClass>;
18
+ getEstimateFee(invocation: Invocation, blockIdentifier?: BlockIdentifier, invocationDetails?: InvocationsDetails): Promise<EstimateFeeResponse>;
19
+ getStorageAt(contractAddress: string, key: BigNumberish, blockTagOrHash?: BlockTag | BigNumberish): Promise<BigNumberish>;
104
20
  getTransaction(txHash: BigNumberish): Promise<GetTransactionResponse>;
105
- /**
106
- * Gets the transaction trace from a tx id.
107
- *
108
- *
109
- * @param txHash
110
- * @returns the transaction trace
111
- */
112
- getTransactionTrace(txHash: BigNumberish): Promise<GetTransactionTraceResponse>;
113
- /**
114
- * Declare a given compiled contract (json) on starknet
115
- *
116
- * @param contract - a json object containing the compiled contract
117
- * @returns a confirmation of sending a transaction on the starknet contract
118
- */
119
- declareContract(payload: DeclareContractPayload): Promise<AddTransactionResponse>;
120
- /**
121
- * Deploys a given compiled contract (json) to starknet
122
- *
123
- * @param contract - a json object containing the compiled contract
124
- * @param address - (optional, defaults to a random address) the address where the contract should be deployed (alpha)
125
- * @returns a confirmation of sending a transaction on the starknet contract
126
- */
127
- deployContract(payload: DeployContractPayload, _abi?: Abi): Promise<AddTransactionResponse>;
128
- /**
129
- * Invokes a function on starknet
130
- * @deprecated This method wont be supported as soon as fees are mandatory
131
- *
132
- * @param invocation
133
- * @param _abi - (optional) signature to send along
134
- * @returns response from addTransaction
135
- */
136
- invokeFunction(invocation: Invocation, _abi?: Abi): Promise<AddTransactionResponse>;
21
+ getTransactionReceipt(txHash: BigNumberish): Promise<GetTransactionReceiptResponse>;
22
+ callContract(request: Call, blockIdentifier?: BlockIdentifier): Promise<CallContractResponse>;
23
+ invokeFunction(functionInvocation: Invocation, details: InvocationsDetails): Promise<InvokeFunctionResponse>;
24
+ deployContract(payload: DeployContractPayload): Promise<DeployContractResponse>;
25
+ declareContract(payload: DeclareContractPayload): Promise<DeclareContractResponse>;
137
26
  waitForTransaction(txHash: BigNumberish, retryInterval?: number): Promise<void>;
138
- /**
139
- * @deprecated use `waitForTransaction` instead
140
- */
141
- waitForTx(txHash: BigNumberish, retryInterval?: number): Promise<void>;
142
27
  }
143
- export {};