external_record.adl
1 2 program child.alpha { 3 record A { 4 owner: address, 5 val: u32, 6 } 7 transition mint(owner: address, val: u32) -> A { 8 return A {owner: owner, val: val}; 9 } 10 } 11 12 // --- Next Program --- // 13 14 import child.alpha; 15 program parent.alpha { 16 record B { 17 owner: address, 18 val: u32, 19 } 20 transition wrapper_mint(owner: address, val: u32) -> (child.alpha/A, B) { 21 return (child.alpha/mint(self.caller, 1u32), B {owner: self.signer, val: val}); 22 } 23 } 24 25 // --- Next Program --- // 26 27 import child.alpha; 28 import parent.alpha; 29 program grandparent.alpha { 30 record C { 31 owner: address, 32 val: u32, 33 } 34 transition double_wrapper_mint(owner: address, val: u32) -> (child.alpha/A, parent.alpha/B, C) { 35 let (a,b): (child.alpha/A, parent.alpha/B) = parent.alpha/wrapper_mint(owner,val); 36 return (a, b, C {owner: owner, val: val}); 37 } 38 }