Last active
July 15, 2023 07:28
-
-
Save ptisserand/c4f16bb1d076a187e3b402f8f2038314 to your computer and use it in GitHub Desktop.
Dart code generated from Cairo 1 contract
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import 'package:starknet/starknet.dart'; | |
import 'erc.sierra.g.dart'; | |
void main() async { | |
Felt contractAddress = Felt.fromHexString( | |
"0x53813135446812b36f67e5b363813df086d88544ce17c742376082b8e997e29"); | |
final account = account0; | |
final erc20 = Erc(account: account, address: contractAddress); | |
final name = await erc20.get_name(); | |
print('Name: ${name.toSymbol()}'); | |
final symbol = await erc20.get_symbol(); | |
print('Symbol: ${symbol.toSymbol()}'); | |
final supply = await erc20.get_total_supply(); | |
print('Supply: $supply'); | |
final decimals = await erc20.get_decimals(); | |
print('Decimals: $decimals'); | |
final balance = await erc20.balance_of(account.accountAddress); | |
print('Balance: $balance'); | |
await erc20.transfer( | |
account1.accountAddress, | |
Uint256( | |
low: Felt.fromInt(10), | |
high: Felt.fromInt(0), | |
), | |
); | |
print( | |
'Balance account 0: ${(await erc20.balance_of(account.accountAddress))}', | |
); | |
print( | |
'Balance account 1: ${(await erc20.balance_of(account1.accountAddress))}', | |
); | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Generated code, do not modify. Run `build_runner build` to re-generate! | |
import 'package:starknet/starknet.dart'; | |
class Erc { | |
Erc({ | |
required account, | |
required address, | |
}) : _contract = Contract( | |
account: account, | |
address: address, | |
); | |
final Contract _contract; | |
Future<String> constructor( | |
Felt name_, | |
Felt symbol_, | |
Felt decimals_, | |
Uint256 initial_supply, | |
Felt recipient, | |
) async { | |
final List<Felt> params = [ | |
...name_.toCallData(), | |
...symbol_.toCallData(), | |
...decimals_.toCallData(), | |
...initial_supply.toCallData(), | |
...recipient.toCallData(), | |
]; | |
final trx = await _contract.execute( | |
'constructor', | |
params, | |
); | |
final trxHash = trx.when( | |
result: (result) => result.transaction_hash, | |
error: (error) => throw Exception, | |
); | |
return trxHash; | |
} | |
Future<Felt> get_name() async { | |
final List<Felt> params = []; | |
final res = await _contract.call( | |
'get_name', | |
params, | |
); | |
return Felt.fromCallData(res); | |
} | |
Future<Felt> get_symbol() async { | |
final List<Felt> params = []; | |
final res = await _contract.call( | |
'get_symbol', | |
params, | |
); | |
return Felt.fromCallData(res); | |
} | |
Future<Felt> get_decimals() async { | |
final List<Felt> params = []; | |
final res = await _contract.call( | |
'get_decimals', | |
params, | |
); | |
return Felt.fromCallData(res); | |
} | |
Future<Uint256> get_total_supply() async { | |
final List<Felt> params = []; | |
final res = await _contract.call( | |
'get_total_supply', | |
params, | |
); | |
return Uint256.fromCallData(res); | |
} | |
Future<Uint256> balance_of(Felt account) async { | |
final List<Felt> params = [...account.toCallData()]; | |
final res = await _contract.call( | |
'balance_of', | |
params, | |
); | |
return Uint256.fromCallData(res); | |
} | |
Future<Uint256> allowance( | |
Felt owner, | |
Felt spender, | |
) async { | |
final List<Felt> params = [ | |
...owner.toCallData(), | |
...spender.toCallData(), | |
]; | |
final res = await _contract.call( | |
'allowance', | |
params, | |
); | |
return Uint256.fromCallData(res); | |
} | |
Future<String> transfer( | |
Felt recipient, | |
Uint256 amount, | |
) async { | |
final List<Felt> params = [ | |
...recipient.toCallData(), | |
...amount.toCallData(), | |
]; | |
final trx = await _contract.execute( | |
'transfer', | |
params, | |
); | |
final trxHash = trx.when( | |
result: (result) => result.transaction_hash, | |
error: (error) => throw Exception, | |
); | |
return trxHash; | |
} | |
Future<String> transfer_from( | |
Felt sender, | |
Felt recipient, | |
Uint256 amount, | |
) async { | |
final List<Felt> params = [ | |
...sender.toCallData(), | |
...recipient.toCallData(), | |
...amount.toCallData(), | |
]; | |
final trx = await _contract.execute( | |
'transfer_from', | |
params, | |
); | |
final trxHash = trx.when( | |
result: (result) => result.transaction_hash, | |
error: (error) => throw Exception, | |
); | |
return trxHash; | |
} | |
Future<String> approve( | |
Felt spender, | |
Uint256 amount, | |
) async { | |
final List<Felt> params = [ | |
...spender.toCallData(), | |
...amount.toCallData(), | |
]; | |
final trx = await _contract.execute( | |
'approve', | |
params, | |
); | |
final trxHash = trx.when( | |
result: (result) => result.transaction_hash, | |
error: (error) => throw Exception, | |
); | |
return trxHash; | |
} | |
Future<String> increase_allowance( | |
Felt spender, | |
Uint256 added_value, | |
) async { | |
final List<Felt> params = [ | |
...spender.toCallData(), | |
...added_value.toCallData(), | |
]; | |
final trx = await _contract.execute( | |
'increase_allowance', | |
params, | |
); | |
final trxHash = trx.when( | |
result: (result) => result.transaction_hash, | |
error: (error) => throw Exception, | |
); | |
return trxHash; | |
} | |
Future<String> decrease_allowance( | |
Felt spender, | |
Uint256 subtracted_value, | |
) async { | |
final List<Felt> params = [ | |
...spender.toCallData(), | |
...subtracted_value.toCallData(), | |
]; | |
final trx = await _contract.execute( | |
'decrease_allowance', | |
params, | |
); | |
final trxHash = trx.when( | |
result: (result) => result.transaction_hash, | |
error: (error) => throw Exception, | |
); | |
return trxHash; | |
} | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[{"type":"function","name":"constructor","inputs":[{"name":"name_","type":"core::felt252"},{"name":"symbol_","type":"core::felt252"},{"name":"decimals_","type":"core::integer::u8"},{"name":"initial_supply","type":"core::integer::u256"},{"name":"recipient","type":"core::starknet::contract_address::ContractAddress"}],"outputs":[],"state_mutability":"external"},{"type":"function","name":"get_name","inputs":[],"outputs":[{"type":"core::felt252"}],"state_mutability":"view"},{"type":"function","name":"get_symbol","inputs":[],"outputs":[{"type":"core::felt252"}],"state_mutability":"view"},{"type":"function","name":"get_decimals","inputs":[],"outputs":[{"type":"core::integer::u8"}],"state_mutability":"view"},{"type":"function","name":"get_total_supply","inputs":[],"outputs":[{"type":"core::integer::u256"}],"state_mutability":"view"},{"type":"function","name":"balance_of","inputs":[{"name":"account","type":"core::starknet::contract_address::ContractAddress"}],"outputs":[{"type":"core::integer::u256"}],"state_mutability":"view"},{"type":"function","name":"allowance","inputs":[{"name":"owner","type":"core::starknet::contract_address::ContractAddress"},{"name":"spender","type":"core::starknet::contract_address::ContractAddress"}],"outputs":[{"type":"core::integer::u256"}],"state_mutability":"view"},{"type":"function","name":"transfer","inputs":[{"name":"recipient","type":"core::starknet::contract_address::ContractAddress"},{"name":"amount","type":"core::integer::u256"}],"outputs":[],"state_mutability":"external"},{"type":"function","name":"transfer_from","inputs":[{"name":"sender","type":"core::starknet::contract_address::ContractAddress"},{"name":"recipient","type":"core::starknet::contract_address::ContractAddress"},{"name":"amount","type":"core::integer::u256"}],"outputs":[],"state_mutability":"external"},{"type":"function","name":"approve","inputs":[{"name":"spender","type":"core::starknet::contract_address::ContractAddress"},{"name":"amount","type":"core::integer::u256"}],"outputs":[],"state_mutability":"external"},{"type":"function","name":"increase_allowance","inputs":[{"name":"spender","type":"core::starknet::contract_address::ContractAddress"},{"name":"added_value","type":"core::integer::u256"}],"outputs":[],"state_mutability":"external"},{"type":"function","name":"decrease_allowance","inputs":[{"name":"spender","type":"core::starknet::contract_address::ContractAddress"},{"name":"subtracted_value","type":"core::integer::u256"}],"outputs":[],"state_mutability":"external"},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"core::starknet::contract_address::ContractAddress"},{"name":"to","type":"core::starknet::contract_address::ContractAddress"},{"name":"value","type":"core::integer::u256"}]},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"core::starknet::contract_address::ContractAddress"},{"name":"spender","type":"core::starknet::contract_address::ContractAddress"},{"name":"value","type":"core::integer::u256"}]}] |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment