Skip to content

Commit 809304b

Browse files
committed
Add Azle Implementation of DIP721 NFT example
1 parent ed7661c commit 809304b

File tree

5 files changed

+520
-0
lines changed

5 files changed

+520
-0
lines changed

dapps/azle/dfx.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@
77
"build": "npx azle basic_dao",
88
"wasm": ".azle/basic_dao/basic_dao.wasm",
99
"gzip": false
10+
},
11+
"dip721_nft": {
12+
"type": "custom",
13+
"main": "dip721-nft/index.ts",
14+
"candid": "dip721-nft/index.did",
15+
"build": "npx azle dip721_nft",
16+
"wasm": ".azle/dip721_nft/dip721_nft.wasm",
17+
"gzip": false
1018
}
1119
}
1220
}

dapps/azle/dip721-nft/index.did

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
service: (record {logo:record {data:text; logo_type:text}; name:text; custodians:opt vec principal; symbol:text}) -> {
2+
approveDip721: (principal, nat64) -> (variant {Ok:nat; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}});
3+
balanceOfDip721: (principal) -> (nat64) query;
4+
burnDip721: (nat64) -> (variant {Ok:nat; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}});
5+
getMetadataDip721: (nat64) -> (variant {Ok:vec record {data:vec nat8; key_val_data:vec record {text; variant {Nat64Content:nat64; Nat32Content:nat32; Nat8Content:nat8; NatContent:nat; Nat16Content:nat16; BlobContent:vec nat8; TextContent:text}}; purpose:variant {Preview; Rendered}}; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}}) query;
6+
getMetadataForUserDip721: (principal) -> (vec record {token_id:nat64; metadata_desc:vec record {data:vec nat8; key_val_data:vec record {text; variant {Nat64Content:nat64; Nat32Content:nat32; Nat8Content:nat8; NatContent:nat; Nat16Content:nat16; BlobContent:vec nat8; TextContent:text}}; purpose:variant {Preview; Rendered}}}) query;
7+
isApprovedForAllDip721: (principal) -> (bool) query;
8+
is_custodian: (principal) -> (bool) query;
9+
mintDip721: (principal, vec record {data:vec nat8; key_val_data:vec record {text; variant {Nat64Content:nat64; Nat32Content:nat32; Nat8Content:nat8; NatContent:nat; Nat16Content:nat16; BlobContent:vec nat8; TextContent:text}}; purpose:variant {Preview; Rendered}}) -> (variant {Ok:record {id:nat; token_id:nat64}; Err:variant {Unauthorized}});
10+
nameDip721: () -> (text) query;
11+
ownerOfDip721: (nat64) -> (variant {Ok:principal; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}}) query;
12+
safeTransferFromDip721: (principal, principal, nat64) -> (variant {Ok:nat; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}});
13+
safeTransferFromNotifyDip721: (principal, principal, nat64, vec nat8) -> (variant {Ok:nat; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}});
14+
setApprovalForAllDip721: (principal, bool) -> (variant {Ok:nat; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}});
15+
set_custodian: (principal, bool) -> (variant {Ok; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}});
16+
set_logo: (record {data:text; logo_type:text}) -> (variant {Ok; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}});
17+
set_name: (text) -> (variant {Ok; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}});
18+
set_symbol: (text) -> (variant {Ok; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}});
19+
supportedInterfacesDip721: () -> (vec variant {Burn; Mint; Approval; TransactionHistory; TransferNotification}) query;
20+
symbolDip721: () -> (text) query;
21+
totalSupplyDip721: () -> (nat64) query;
22+
transferFromDip721: (principal, principal, nat64) -> (variant {Ok:nat; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}});
23+
transferFromNotifyDip721: (principal, principal, nat64, vec nat8) -> (variant {Ok:nat; Err:variant {ZeroAddress; InvalidTokenId; Unauthorized; Other}});
24+
}

0 commit comments

Comments
 (0)